f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAABMDQAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHRlcm1pbmFsOwpwa2dwYXRoIGV4cC90ZXJtaW5hbDsKcHJpb3JpdHkgNDsKaW1wb3J0IGlvIGlvICJpbyI7CmltcG9ydCBzeW5jIHN5bmMgInN5bmMiOwppbXBvcnQgc3lzY2FsbCBzeXNjYWxsICJzeXNjYWxsIjsKaW1wb3J0IHVuc2FmZSB1bnNhZmUgInVuc2FmZSI7CmluaXQgdGVybWluYWwgZXhwX3Rlcm1pbmFsLi5pbXBvcnQgNCBydW50aW1lIHJ1bnRpbWUuLmltcG9ydCAxIHN5bmMgc3luYy4uaW1wb3J0IDIgaW8gaW8uLmltcG9ydCAzIHN5c2NhbGwgc3lzY2FsbC4uaW1wb3J0IDM7CnR5cGUgPHR5cGUgMSAiRXNjYXBlQ29kZXMiIDx0eXBlIDIgc3RydWN0IHsgQmxhY2sgPHR5cGUgMyBbXSA8dHlwZSAtMjA+PjsgUmVkIDx0eXBlIDM+OyBHcmVlbiA8dHlwZSAzPjsgWWVsbG93IDx0eXBlIDM+OyBCbHVlIDx0eXBlIDM+OyBNYWdlbnRhIDx0eXBlIDM+OyBDeWFuIDx0eXBlIDM+OyBXaGl0ZSA8dHlwZSAzPjsgUmVzZXQgPHR5cGUgNCBbXSA8dHlwZSAtMjA+PjsgfT4+OwpmdW5jIEdldFNpemUgKGZkIDx0eXBlIC0xMT4pICh3aWR0aCA8dHlwZSAtMTE+LCBoZWlnaHQgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwpmdW5jIElzVGVybWluYWwgKGZkIDx0eXBlIC0xMT4pIDx0eXBlIC0xNT47CmZ1bmMgTWFrZVJhdyAoZmQgPHR5cGUgLTExPikgKD8gPHR5cGUgNSAqPHR5cGUgNiAiU3RhdGUiIDx0eXBlIDcgc3RydWN0IHsgLmV4cC90ZXJtaW5hbC50ZXJtaW9zIDx0eXBlIDggInN5c2NhbGwuVGVybWlvcyIgPHR5cGUgOSBzdHJ1Y3QgeyBJZmxhZyA8dHlwZSAtNz47IE9mbGFnIDx0eXBlIC03PjsgQ2ZsYWcgPHR5cGUgLTc+OyBMZmxhZyA8dHlwZSAtNz47IExpbmUgPHR5cGUgLTU+OyBDYyA8dHlwZSAxMCBbMzIgXSA8dHlwZSAtNT4+OyB9Pj47IH0+Pj4sID8gPHR5cGUgLTE5Pik7CmZ1bmMgTmV3VGVybWluYWwgKGMgPHR5cGUgMTEgImlvLlJlYWRXcml0ZXIiIDx0eXBlIDEyIGludGVyZmFjZSB7ID8gPHR5cGUgMTMgImlvLlJlYWRlciIgPHR5cGUgMTQgaW50ZXJmYWNlIHsgUmVhZCAocCA8dHlwZSAxNSBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj47ID8gPHR5cGUgMTYgImlvLldyaXRlciIgPHR5cGUgMTcgaW50ZXJmYWNlIHsgV3JpdGUgKHAgPHR5cGUgMTggW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+OyB9Pj4sIHByb21wdCA8dHlwZSAtMTY+KSA8dHlwZSAxOSAqPHR5cGUgMjAgIlRlcm1pbmFsIiA8dHlwZSAyMSBzdHJ1Y3QgeyBBdXRvQ29tcGxldGVDYWxsYmFjayA8dHlwZSAyMiAobGluZSA8dHlwZSAyMyBbXSA8dHlwZSAtMjA+PiwgcG9zIDx0eXBlIC0xMT4sIGtleSA8dHlwZSAtMTE+KSAobmV3TGluZSA8dHlwZSAyNCBbXSA8dHlwZSAtMjA+PiwgbmV3UG9zIDx0eXBlIC0xMT4pPjsgRXNjYXBlIDx0eXBlIDI1ICo8dHlwZSAxPj47IC5leHAvdGVybWluYWwubG9jayA8dHlwZSAyNiAic3luYy5NdXRleCIgPHR5cGUgMjcgc3RydWN0IHsgLnN5bmMuc3RhdGUgPHR5cGUgLTM+OyAuc3luYy5zZW1hIDx0eXBlIC03PjsgfT4KIGZ1bmMgKG0gPHR5cGUgMjggKjx0eXBlIDI2Pj4pIFVubG9jayAoKTsKIGZ1bmMgKG0gPHR5cGUgMjg+KSBMb2NrICgpOwo+OyAuZXhwL3Rlcm1pbmFsLmMgPHR5cGUgMTE+OyAuZXhwL3Rlcm1pbmFsLnByb21wdCA8dHlwZSAtMTY+OyAuZXhwL3Rlcm1pbmFsLmxpbmUgPHR5cGUgMjkgW10gPHR5cGUgLTIwPj47IC5leHAvdGVybWluYWwucG9zIDx0eXBlIC0xMT47IC5leHAvdGVybWluYWwuZWNobyA8dHlwZSAtMTU+OyAuZXhwL3Rlcm1pbmFsLmN1cnNvclggPHR5cGUgLTExPjsgLmV4cC90ZXJtaW5hbC5jdXJzb3JZIDx0eXBlIC0xMT47IC5leHAvdGVybWluYWwubWF4TGluZSA8dHlwZSAtMTE+OyAuZXhwL3Rlcm1pbmFsLnRlcm1XaWR0aCA8dHlwZSAtMTE+OyAuZXhwL3Rlcm1pbmFsLnRlcm1IZWlnaHQgPHR5cGUgLTExPjsgLmV4cC90ZXJtaW5hbC5vdXRCdWYgPHR5cGUgMzAgW10gPHR5cGUgLTIwPj47IC5leHAvdGVybWluYWwucmVtYWluZGVyIDx0eXBlIDMxIFtdIDx0eXBlIC0yMD4+OyAuZXhwL3Rlcm1pbmFsLmluQnVmIDx0eXBlIDMyIFsyNTYgXSA8dHlwZSAtMjA+PjsgfT4KIGZ1bmMgKHQgPHR5cGUgMzMgKjx0eXBlIDIwPj4pIC5leHAvdGVybWluYWwucXVldWUgKGRhdGEgPHR5cGUgMzQgW10gPHR5cGUgLTIwPj4pOwogZnVuYyAodCA8dHlwZSAzMz4pIC5leHAvdGVybWluYWwubW92ZUN1cnNvclRvUG9zIChwb3MgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDMzPikgLmV4cC90ZXJtaW5hbC5tb3ZlICh1cCA8dHlwZSAtMTE+LCBkb3duIDx0eXBlIC0xMT4sIGxlZnQgPHR5cGUgLTExPiwgcmlnaHQgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDMzPikgLmV4cC90ZXJtaW5hbC5jbGVhckxpbmVUb1JpZ2h0ICgpOwogZnVuYyAodCA8dHlwZSAzMz4pIC5leHAvdGVybWluYWwuaGFuZGxlS2V5IChrZXkgPHR5cGUgLTExPikgKGxpbmUgPHR5cGUgLTE2Piwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jICh0IDx0eXBlIDMzPikgLmV4cC90ZXJtaW5hbC53cml0ZUxpbmUgKGxpbmUgPHR5cGUgMzUgW10gPHR5cGUgLTIwPj4pOwogZnVuYyAodCA8dHlwZSAzMz4pIFdyaXRlIChidWYgPHR5cGUgMzYgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgMzM+KSBSZWFkUGFzc3dvcmQgKHByb21wdCA8dHlwZSAtMTY+KSAobGluZSA8dHlwZSAtMTY+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDMzPikgUmVhZExpbmUgKCkgKGxpbmUgPHR5cGUgLTE2PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAzMz4pIC5leHAvdGVybWluYWwucmVhZExpbmUgKCkgKGxpbmUgPHR5cGUgLTE2PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAzMz4pIFNldFByb21wdCAocHJvbXB0IDx0eXBlIC0xNj4pOwogZnVuYyAodCA8dHlwZSAzMz4pIFNldFNpemUgKHdpZHRoIDx0eXBlIC0xMT4sIGhlaWdodCA8dHlwZSAtMTE+KTsKPj47CmZ1bmMgUmVhZFBhc3N3b3JkIChmZCA8dHlwZSAtMTE+KSAoPyA8dHlwZSAzNyBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKZnVuYyBSZXN0b3JlIChmZCA8dHlwZSAtMTE+LCBzdGF0ZSA8dHlwZSA1PikgPHR5cGUgLTE5PjsKdHlwZSA8dHlwZSA2PjsKdHlwZSA8dHlwZSAyMD47CmNoZWNrc3VtIEMzNDVDMkRGODkzMTY4M0RGRjM5Q0IxRTI1RUVEQUREMTVFMTIyMEQ7CgAuc3ltdGFiAC5zdHJ0YWIALnNoc3RydGFiAC5nb19leHBvcnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAAAAAAAAAAAADQAAADMDAAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAAAADQAAJgAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAKA0AACAAAAAEAAAAAgAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAAEgNAAABAAAAAAAAAAAAAAABAAAAAAAAAA==