LyoKICogIE5vdGVwYWQgKEVzcGVyYW50byBMYW5ndWFnZSBSZXNvdXJjZXMpCiAqCiAqICBDb3B5cmlnaHQgMjAwNiBBbnRvbmlvIENvZGF6emkKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19FU1BFUkFOVE8sIFNVQkxBTkdfREVGQVVMVAoKTUFJTl9NRU5VIE1FTlUKewogUE9QVVAgIkRvc2llcm8iIHsKICBNRU5VSVRFTSAiJk5vdmFcdEN0cmwrTiIsICAgICAgICAgICBDTURfTkVXCiAgTUVOVUlURU0gIk1hbGZlcm11XHRDdHJsK08iLCAgICAgQ01EX09QRU4KICBNRU5VSVRFTSAiS29uJnNlcnZ1XHRDdHJsK1MiLCAgICAgQ01EX1NBVkUKICBNRU5VSVRFTSAiS29uc2VydnUgJmtpZWwiLCAgICAgICBDTURfU0FWRV9BUwogIE1FTlVJVEVNIFNFUEFSQVRPUgogIE1FTlVJVEVNICJQcmVzdVx0Q3RybCtQIiwgICAgICAgICAgICBDTURfUFJJTlQKICBNRU5VSVRFTSAiSW1wb3p1IHBh+G9uIiwgICAgQ01EX1BBR0VfU0VUVVAKICBNRU5VSVRFTSAiSW1wb3p1IFByaW50aWxvbiIsIENNRF9QUklOVEVSX1NFVFVQCiAgTUVOVUlURU0gU0VQQVJBVE9SCiAgTUVOVUlURU0gIkZpbnUiLCAgICAgICAgICAgICBDTURfRVhJVAogfQpQT1BVUCAiJlJlZGFrdG8iIHsKICBNRU5VSVRFTSAiTnVsaWd1XHRDdHJsK1oiLCAgICAgQ01EX1VORE8KICBNRU5VSVRFTSBTRVBBUkFUT1IKICBNRU5VSVRFTSAiVG9uZHVcdEN0cmwrWCIsICAgICAgQ01EX0NVVAogIE1FTlVJVEVNICJLb3BpdVx0Q3RybCtDIiwgICAgIENNRF9DT1BZCiAgTUVOVUlURU0gIkVubWV0dVx0Q3RybCtWIiwgICAgQ01EX1BBU1RFCiAgTUVOVUlURU0gIkZvcmlndVx0RGVsIiwgICAgICBDTURfREVMRVRFCiAgTUVOVUlURU0gU0VQQVJBVE9SCiAgTUVOVUlURU0gIkVsZWsmdHUg5mlvblx0Q3RybCtBIiwgICAgICAgQ01EX1NFTEVDVF9BTEwKICBNRU5VSVRFTSAiSG9yby9EYXRvXHRGNSIsICAgIENNRF9USU1FX0RBVEUKICBNRU5VSVRFTSBTRVBBUkFUT1IKICBNRU5VSVRFTSAiJkFsaW5ldSBh/XRvbWF0ZSIsICBDTURfV1JBUAogIE1FTlVJVEVNICImSW1wb3p1IHRpcGFyb24uLi4iLCAgICAgICAgICBDTURfRk9OVAogfQpQT1BVUCAiJlNlcuZ1IiB7CiAgTUVOVUlURU0gIlNlcuZ1XHRDdHJsK0YiLCAgIENNRF9TRUFSQ0gKICBNRU5VSVRFTSAiU2Vy5nUgc2VrdmFudGFcdEYzIiwgIENNRF9TRUFSQ0hfTkVYVAogfQpQT1BVUCAiJkhlbHBvIiB7CiAgTUVOVUlURU0gIkVuaGF2byIsICAgICAgICAgQ01EX0hFTFBfQ09OVEVOVFMKICBNRU5VSVRFTSAiU2Vy5nUuLi4iLCAgICAgICAgQ01EX0hFTFBfU0VBUkNICiAgTUVOVUlURU0gIlByaSBIZWxwYW50byIsICAgICBDTURfSEVMUF9PTl9IRUxQCiAgTUVOVUlURU0gU0VQQVJBVE9SCiAgUE9QVVAgIlByaS4uLiIgewogICBNRU5VSVRFTSAiJkxpY2VuY28iLCAgICAgICAgIENNRF9MSUNFTlNFCiAgIE1FTlVJVEVNICImR2FyYW50aW8iLCAgICAgQ01EX05PX1dBUlJBTlRZCiAgIE1FTlVJVEVNICJQcmkgTm90ZXBhZCIsICAgICAgQ01EX0FCT1VUX1dJTkUKICB9CiB9Cn0KCi8qIERpYWxvZyBgUGFnZSBzZXR1cCcgKi8KCkRJQUxPR19QQUdFU0VUVVAgRElBTE9HIDAsIDAsIDIyNSwgOTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQ0FQVElPTiAiSW1wb3p1IGxhIHBh+G9uIgp7CkxURVhUICAgICJLYXBub3RvajoiLCAgMHgxNDAsICAgMTAsIDA3LCA0MCwgMTUKRURJVFRFWFQgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNDEsICAgICAgIDYwLCAwNSwxMTAsIDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QCkxURVhUICAgICJQaWVkbm90b2o6IiwgIDB4MTQyLCAgIDEwLCAyNCwgNDAsIDE1CkVESVRURVhUICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQzLCAgICAgICA2MCwgMjIsMTEwLCAxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAoKR1JPVVBCT1ggIiZNYXL4ZW5vajoiLCAgICAgIDB4MTQ0LCAgICAgMTAsIDQzLDE2MCwgNDUKTFRFWFQgICAgIiZNYWxkZWtzdHJhOiIsICAgICAgICAweDE0NSwgICAxMywgNTUsIDM3LCAxMCwgV1NfQ0hJTEQKRURJVFRFWFQgLypTVFJJTkdfUEFHRVNFVFVQX0xFRlRWQUxVRSwqLyAgIDB4MTQ3LCAgICAgICA1MCwgNTUsIDM1LCAxMSwgV1NfQ0hJTEQgfCBXU19CT1JERVIgfCBXU19UQUJTVE9QCkxURVhUICAgICImU3VwcmE6IiwgICAgICAgICAweDE0OCwgICAgMTMsIDczLCAzNywgMTAsIFdTX0NISUxECkVESVRURVhUIC8qU1RSSU5HX1BBR0VTRVRVUF9UT1BWQUxVRSwqLyAgICAweDE0QSwgICAgICAgIDUwLCA3MywgMzUsIDExLCBXU19DSElMRCB8IFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKTFRFWFQgICAgIiZEZWtzdHJhOiIsICAgICAgIDB4MTRCLCAxMDAsIDU1LCAzMCwgMTAsIFdTX0NISUxECkVESVRURVhUIC8qU1RSSU5HX1BBR0VTRVRVUF9SSUdIVFZBTFVFLCovICAweDE0RCwgICAgIDEzMCwgNTUsIDM1LCAxMSwgV1NfQ0hJTEQgfCBXU19CT1JERVIgfCBXU19UQUJTVE9QCkxURVhUICAgICJTdSZiYToiLCAgICAgIDB4MTRFLDEwMCwgNzMsIDMwLCAxMCwgV1NfQ0hJTEQKRURJVFRFWFQgLypTVFJJTkdfUEFHRVNFVFVQX0JPVFRPTVZBTFVFLCovIDB4MTUwLCAgICAxMzAsIDczLCAzNSwgMTEsIFdTX0NISUxEIHwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAoKREVGUFVTSEJVVFRPTiAiQm9uZSIsICAgICAgICAgSURPSywgICAgICAgICAgICAgICAgICAgMTgwLCAgMywgNDAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIlJlemlnbmkiLCAgICAgSURDQU5DRUwsICAgICAgICAgICAgICAgMTgwLCAyMSwgNDAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIkhlbHBvIiwgICAgICAgSURIRUxQLCAgICAgICAgICAgICAgICAxODAsIDM5LCA0MCwgMTUsIFdTX1RBQlNUT1AKfQoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKewpTVFJJTkdfUEFHRVNFVFVQX0hFQURFUlZBTFVFLCAgICImbiIgICAgICAgIC8qIEZJWE1FICovClNUUklOR19QQUdFU0VUVVBfRk9PVEVSVkFMVUUsICAgIlBh+G8gJnMiICAgLyogRklYTUUgKi8KU1RSSU5HX1BBR0VTRVRVUF9MRUZUVkFMVUUsICAgICAgICAgICAgICIyMCBtbSIgICAgIC8qIEZJWE1FICovClNUUklOR19QQUdFU0VUVVBfUklHSFRWQUxVRSwgICAgIjIwIG1tIiAgICAgLyogRklYTUUgKi8KU1RSSU5HX1BBR0VTRVRVUF9UT1BWQUxVRSwgICAgICAgICAgICAgICIyNSBtbSIgICAgIC8qIEZJWE1FICovClNUUklOR19QQUdFU0VUVVBfQk9UVE9NVkFMVUUsICAgIjI1IG1tIiAgICAgLyogRklYTUUgKi8KClNUUklOR19OT1RFUEFELCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb3RibG9rbyIKU1RSSU5HX0VSUk9SLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVST1JPIgpTVFJJTkdfV0FSTklORywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQVRFTlRVIgpTVFJJTkdfSU5GTywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5mb3JtbyBwcmkiCgpTVFJJTkdfVU5USVRMRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKHNlbi1ub21vKSIKClNUUklOR19BTExfRklMRVMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUdXRhaiBkb3NpZXJvaiAoKi4qKSIKU1RSSU5HX1RFWFRfRklMRVNfVFhULCAgICAgICAgICAgICAgICAgICJUZWtzdGRvc2llcm9qICgqLnR4dCkiCgpTVFJJTkdfVE9PTEFSR0UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGEgZG9zaWVybyAnJXMnIGVzdGFzIHRybyBncmFuZGEgcG9yIE5vdGVwYWQuXG4gXApPbmkga29uc2lsYXMgdXppIGFsaWFuIHJlZGFrdGlsb24uIgpTVFJJTkdfTk9URVhULCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmUgZXN0YXMgZW5tZXRpdGEgdGVrc3RvLiBcClxuT25pIGtvbnNpbGFzIHNrcmliaSBkZXZvdmUga2FqIHJlcHJvdmkiClNUUklOR19ET0VTTk9URVhJU1QsICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMYSBkb3NpZXJvICclcydcbm5lIGVrc2lzdGFzXG5cbiBcCsZ1IG1pIGRldmFzIGtyZWkgbm92YW4gZG9zaWVyb24/IgpTVFJJTkdfTk9UU0FWRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGEgZG9zaWVybyclcydcbiBlc3RpcyD+YW74aXRhXG5cbiBcCsZ1IHZpIHZvbGFzIGtvbnNlcnZpIGxhIP5hbvhvam4/IgpTVFJJTkdfTk9URk9VTkQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNaSBuZSB0cm92aXMgJyVzJy4iClNUUklOR19PVVRfT0ZfTUVNT1JZLCAgICAgICAgICAgICAgICAgICAiTGEgbWVtb3JvIGVzdGFzIG5lc3VmaeZhIHBvciBrb21wbGV0aWdvIGplIGxhIHRhc2tvIFwKXG5Pbmkga29uc2lsYXMgZmVybWkgdW51IG8gcGx1cmFqIHByb2dyYW1vaiBwb3JcbmxpYmVyaWdpIG1lbW9yb24uIgoKfQo=