LyoKICogV2luZSBjb21tYW5kIHByb21wdAogKiBGcmVuY2ggTGFuZ3VhZ2UgU3VwcG9ydAogKgogKiBDb3B5cmlnaHQgMjAwMyBTeWx2YWluIFBldHJlb2xsZQogKiBDb3B5cmlnaHQgMjAwNyBKb25hdGhhbiBFcm5zdAogKiAKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI2luY2x1ZGUgIndjbWQuaCIKCkxBTkdVQUdFIExBTkdfRlJFTkNILCBTVUJMQU5HX05FVVRSQUwKClNUUklOR1RBQkxFCnsKICBXQ01EX0FUVFJJQiwgIkFpZGUgZCdBVFRSSUJcbiIKICBXQ01EX0NBTEwsCiJDQUxMIDxmaWNoaWVyYmF0Y2g+IHNlcnQg4CBhcHBlbGVyIHVuIGZpY2hpZXIgYmF0Y2hcblwKZGVwdWlzIHVuIGF1dHJlIGZpY2hpZXIgYmF0Y2guIFF1YW5kIGxlIGZpY2hpZXIgYmF0Y2ggc29ydCwgbGUgY29udHL0bGUgcmV2aWVudFxuXAphdSBmaWNoaWVyIHF1aSBsJ2EgYXBwZWzpLiBMYSBjb21tYW5kZSBDQUxMIGRvaXQg6nRyZSBzdWl2aWUgZGVzIHBhcmFt6HRyZXNcblwKZGUgbGEgcHJvY+lkdXJlIGFwcGVs6WUuXG5cClxuXApMZXMgY2hhbmdlbWVudHMgZGUgculwZXJ0b2lyZSBjb3VyYW50LCBkZSB2YXJpYWJsZXMgZCdlbnZpcm9ubWVudCBldGMuIGZhaXRzXG5cCmRhbnMgdW5lIHByb2PpZHVyZSBhcHBlbOllIHNvbnQgdHJhbnNtaXMg4CBsJ2FwcGVsYW50LlxuIgoKICBXQ01EX0NELCAgICAgIkNoYW5nZSBsZSBy6XBlcnRvaXJlIGNvdXJhbnQgcGFyIGTpZmF1dFxuIgogIFdDTURfQ0hESVIsICAiQ2hhbmdlIGxlIHLpcGVydG9pcmUgY291cmFudCBwYXIgZOlmYXV0XG4iCgogIFdDTURfQ0xTLAoiQ0xTIGVmZmFjZSBsJ+ljcmFuXG4iCgogIFdDTURfQ09QWSwgICAiQWlkZSBkZSBDT1BZXG4iCiAgV0NNRF9DVFRZLCAgICJBaWRlIGRlIENUVFlcbiIKICBXQ01EX0RBVEUsICAgIkFpZGUgZGUgREFURVxuIgogIFdDTURfREVMLCAgICAiQWlkZSBkZSBERUxcbiIKICBXQ01EX0RJUiwgICAgIkFpZGUgZGUgRElSXG4iCgogIFdDTURfRUNITywKIkVDSE8gPGNoYe5uZT4gYWZmaWNoZSA8Y2hh7m5lPiBzdXIgbGEgY29uc29sZSBjb3VyYW50ZS5cblwKXG5cCkVDSE8gT04gcHJvdm9xdWUgbCdhZmZpY2hhZ2UgZGUgdG91dGVzIGxlcyBjb21tYW5kZXMgc3VyIGxhIGNvbnNvbGVcblwKYXZhbnQgbGV1ciBleOljdXRpb24uXG5cClxuXApFQ0hPIE9GRiBhbm51bGUgbCdlZmZldCBkZSB0b3V0IHBy6WPpZGVudCBFQ0hPIE9OIChFQ0hPIGVzdCBPRkYgcGFyXG5cCmTpZmF1dCkuIE9uIHBldXQgZW1w6mNoZXIgbCdhZmZpY2hhZ2UgZGUgRUNITyBPRkYgZW4gbGUgZmFpc2FudFxuXApwculj6WRlciBkJ3VuIHNpZ25lIEAuXG4iCgogIFdDTURfRVJBU0UsICAiQWlkZSBkZSBFUkFTRVxuIgoKICBXQ01EX0ZPUiwKIkxhIGNvbW1hbmRlIEZPUiBzZXJ0IOAgZXjpY3V0ZXIgdW5lIGNvbW1hbmRlIHBvdXIgdW4gZ3JvdXBlIGRlIGZpY2hpZXJzLlxuXApcblwKU3ludGF4ZaA6IEZPUiAldmFyaWFibGUgSU4gKGdyb3VwZSkgRE8gY29tbWFuZGVcblwKXG5cCkxhIG7pY2Vzc2l06SBkZSBkb3VibGVyIGxlIHNpZ25lICclJyBlbiB1dGlsaXNhbnQgRk9SIGRhbnMgdW4gZmljaGllciBiYXRjaFxuXApuJ2V4aXN0ZSBwYXMgZGFucyBjbWQuXG4iCgogIFdDTURfR09UTywKIkxhIGNvbW1hbmRlIEdPVE8gdHJhbnNm6HJlIGwnZXjpY3V0aW9uIOAgdW4gYXV0cmUgbGFiZWwgZGFucyB1blxuXApmaWNoaWVyIGJhdGNoLlxuXApcblwKTGUgbGFiZWwgY2libGUgZGUgR09UTyBwZXV0IOp0cmUgbG9uZyBkZSAyNTUgY2FyYWN06HJlc1xuXAptYWlzIG5lIHBldXQgaW5jbHVyZSBkJ2VzcGFjZXMgKGNlY2kgZXN0IGRpZmbpcmVudCBkJ2F1dHJlcyBzeXN06G1lc1xuXApkJ2V4cGxvaXRhdGlvbikuIFNpIGRldXggb3UgcGx1c2lldXJzIGxhYmVscyBpZGVudGlxdWVzIHNvbnQgZGFucyBsZSBt6m1lIGZpY2hpZXJcblwKc2V1bCBsZSBwcmVtaWVyIHNlcmEgZXjpY3V06S4gRXNzYXllciBkZSBzYXV0ZXIg4CB1biBsYWJlbCBub24tZXhpc3RhbnRcblwKdGVybWluZSBsJ2V46WN1dGlvbiBkdSBmaWNoaWVyIGJhdGNoIC5cblwKXG5cCkdPVE8gbidhIHBhcyBkJ2VmZmV0IHNpIHV0aWxpc+kgaW50ZXJhY3RpdmVtZW50LlxuIgoKICBXQ01EX0hFTFAsICAgIkFmZmljaGUgdW5lIGJy6HZlIGFpZGUgc3VyIGxlcyBjb21tYW5kZXMgaW50ZXJuZXMgZGUgQ01EXG4iCgogIFdDTURfSUYsCiJJRiBlc3QgdXRpbGlz6SBwb3VyIGV46WN1dGVyIHVuZSBjb21tYW5kZSBkZSBmYedvbiBjb25kaXRpb25uZWxsZS5cblwKXG5cClN5bnRheGWgOglJRiBbTk9UXSBFWElTVCBub21maWNoaWVyIGNvbW1hbmRlXG5cCgkJSUYgW05PVF0gY2hh7m5lMT09Y2hh7m5lMiBjb21tYW5kZVxuXAoJCUlGIFtOT1RdIEVSUk9STEVWRUwgbm9tYnJlIGNvbW1hbmRlXG5cClxuXApEYW5zIGxhIGRldXhp6G1lIGZvcm1lIGRlIGxhIGNvbW1hbmRlLCBjaGHubmUxIGV0IGNoYe5uZTIgZG9pdmVudCDqdHJlXG5cCmVudHJlIGd1aWxsZW1ldHMgZG91Ymxlcy4gTGEgY29tcGFyYWlzb24gZXN0IGluc2Vuc2libGUg4CBsYSBjYXNzZS5cbiIKCiAgV0NNRF9MQUJFTCwgICJMQUJFTCBzZXJ0IOAgbW9kaWZpZXIgbGUgbm9tIGRlIHZvbHVtZSBkJ3VuIGRpc3F1ZS5cblwKXG5cClN5bnRheGWgOiBMQUJFTCBbbGVjdGV1cjpdXG5cCkxhIGNvbW1uYW5kZSBkZW1hbmRlcmEgbGUgbm91dmVhdSBub20gZGUgdm9sdW1lIHBvdXIgbGUgbGVjdGV1ciBkb25u6S5cblwKVm91cyBwb3V2ZXogYWZmaWNoZXIgbGUgbm9tIGRlIHZvbHVtZSBhdmVjIGxhIGNvbW1hbmRlIFZPTC5cbiIKCiAgV0NNRF9NRCwgICAgICJDcullICBsZSBy6XBlcnRvaXJlIGRvbm7pIGVuIHBhcmFt6HRyZS5cbiIKICBXQ01EX01LRElSLCAgIkNy6WUgIGxlIHLpcGVydG9pcmUgZG9ubukgZW4gcGFyYW3odHJlLlxuIgogIFdDTURfTU9WRSwKIk1PVkUgZOlwbGFjZSB1biBmaWNoaWVyLCB1biBncm91cGUgZGUgZmljaGllcnMgb3UgdW4gculwZXJ0b2lyZVxuXArgIHVuIGF1dHJlIGVuZHJvaXQuIFNpIGwnb2JqZXQgZOlwbGFj6SBlc3QgdW4gculwZXJ0b2lyZSBhbG9yc1xuXAp0b3VzIGxlcyBmaWNoaWVycyBldCBzb3VzLXLpcGVydG9pcmVzIGRlIGwnb2JqZXQgc29udCDpZ2FsZW1lbnQgZOlwbGFj6XMuXG5cCk1PVkUg6WNob3VlIHNpIGwnYW5jaWVuIGV0IGxlIG5vdXZlbCBlbXBsYWNlbWVudCBzb250IHN1ciBkZXMgbGVjdGV1cnMgRE9TIGRpZmbpcmVudHMuXG4iCgogIFdDTURfUEFUSCwKIlBBVEggYWZmaWNoZSBvdSBjaGFuZ2UgbGUgY2hlbWluIGRlIHJlY2hlcmNoZSBkZSBjbWQuXG5cCkVudHJlciBQQVRIIGFmZmljaGVyYSBsZSBy6WdsYWdlIGNvdXJhbnQgZGUgUEFUSCAoYXUgZOlwYXJ0XG5cCmMnZXN0IGxhIHZhbGV1ciBkb25u6WUgZGFucyBsZSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gd2luZSkuIFBvdXIgY2hhbmdlclxuXApsZSBy6WdsYWdlLCBmYWl0ZXMgc3VpdnJlIGxhIGNvbW1hbmRlIFBBVEggZGUgbGEgbm91dmVsbGUgdmFsZXVyLlxuXApJbCBlc3QgcG9zc2libGUgZGUgbW9kaWZpZXIgbGUgUEFUSCBlbiB1dGlsaXNhbnQgbGEgdmFyaWFibGUgZCdlbnZpcm9ubWVudCBQQVRILFxuXApwYXIgZXhlbXBsZSA6XG5cCgkJUEFUSCAlUEFUSCU7YzpcXHRlbXBcbiIKCiAgV0NNRF9QQVVTRSwKIlBBVVNFIGFmZmljaGUgdW4gbWVzc2FnZSBzdXIgbCfpY3JhbiA6ICdQcmVzc2V6IEVudHLpZSBwb3VyIGNvbnRpbnVlcidcblwKZXQgYXR0ZW5kIHF1ZSBsJ3V0aWxpc2F0ZXVyIHByZXNzZSBsYSB0b3VjaGUgRW50cullLiBQQVVTRSBlc3Qgc3VydG91dCB1dGlsaXPpIGRhbnNcblwKbGVzIGZpY2hpZXJzIGJhdGNocyBwb3VyIHBlcm1ldHRyZSDgIGwndXRpbGlzYXRldXIgZGUgbGlyZSBsYSBzb3J0aWUgZGVcblwKbGEgZGVybmnocmUgY29tbWFuZGUgYXZhbnQgcXUnZWxsZSBuZSBkaXNwYXJhaXNzZSBkZSBsJ+ljcmFuLlxuIgoKICBXQ01EX1BST01QVCwKIlBST01QVCBy6GdsZSBsJ2ludml0ZSBkZSBjb21tYW5kZS5cblwKXG5cCkxhIGNoYe5uZSBzdWl2YW50IGxhIGNvbW1hbmRlIFBST01QVCAoYW5kIHRoZSBzcGFjZSBpbW1lZGlhdGVseSBhZnRlcilcblwKYXBwYXJh7nQgYXUgZOlidXQgZGUgbGEgbGlnbmUgcXVhbmQgY21kIGF0dGVuZCB1bmUgZW50cullIHRleHRlLlxuXApcblwKTGVzIGNoYe5uZXMgZGUgY2FyYWN06HJlcyBzdWl2YW50ZXMgb250IHVuZSBzaWduaWZpY2F0aW9uIHNw6WNpYWxlIDpcblwKXG5cCiQkICAgIFNpZ25lIERvbGxhciAgICAgICAgJF8gICAgU2F1dCBkZSBsaWduZSAgICAgICAkYiAgICBTaWduZSBQaXBlICh8KVxuXAokZCAgICBEYXRlIGNvdXJhbnRlICAgICAgICRlICAgIEVzY2FwZSAgICAgICAgICAgICAgJGcgICAgU2lnbmUgPlxuXAokbCAgICBTaWduZSA8ICAgICAgICAgICAgICRuICAgIExlY3RldXIgY291cmFudCAgICAgJHAgICAgUulwZXJ0b2lyZSBjb3VyYW50XG5cCiRxICAgIFNpZ25lID0gICAgICAgICAgICAgJHQgICAgSGV1cmUgY291cmFudGUgICAgICAkdiAgICBWZXJzaW9uIGRlIGNtZFxuXApcblwKTm90ZXogcXUnZW50cmVyIGxhIGNvbW1hbmRlIFBST01QVCBzYW5zIHRleHRlIGQnaW52aXRlIHJlbWV0IGwnaW52aXRlXG5cCuAgbGEgdmFsZXVyIHBhciBk6WZhdXQsIHF1aSBlc3QgbGEgbGV0dHJlIGR1IGxlY3RldXIgY291cmFudCBzdWl2aWUgZGVcblwKc29uIHLpcGVydG9pcmUgY291cmFudCBldCBkJ3VuIHNpZ25lIHBsdXMtZ3JhbmQtcXVlICg+KS5cblwKKFRlbCBxdWUgbGEgY29tbWFuZGUgUFJPTVBUICRwJGcpLlxuXApcblwKTCdpbnZpdGUgcGV1dCBhdXNzaSDqdHJlIG1vZGlmaellIGVuIGNoYW5nZWFudCBsYSB2YXJpYWJsZSBkJ2Vudmlyb25tZW50IFBST01QVCxcblwKZG9uYyBsYSBjb21tYW5kZSAnU0VUIFBST01QVD10ZXh0ZScgYSBsZSBt6m1lIGVmZmV0IHF1ZSAnUFJPTVBUIHRleHRlJ1xuIgoKICBXQ01EX1JFTSwKIlVuZSBsaWduZSBkZSBjb21tYW5kZSBjb21tZW7nYW50IHBhciBSRU0gKHN1aXZpIGQndW5lIGVzcGFjZSkgbidlbmdlbmRyZVxuXAphdWN1bmUgYWN0aW9uLCBldCBwZXV0IGRvbmMgc2VydmlyIGRlIGNvbW1lbnRhaXJlIGRhbnMgdW4gZmljaGllciBiYXRjaC5cbiIKCiAgV0NNRF9SRU4sICAgICJBaWRlIGRlIFJFTlxuIgogIFdDTURfUkVOQU1FLCAiQWlkZSBkZSBSRU5BTUVcbiIKICBXQ01EX1JELCAgICAgIkVmZmFjZSBsZSBy6XBlcnRvaXJlIGRvbm7pIGVuIHBhcmFt6HRyZS5cbiIKICBXQ01EX1JNRElSLCAgIkVmZmFjZSBsZSBy6XBlcnRvaXJlIGRvbm7pIGVuIHBhcmFt6HRyZS5cbiIKCiAgV0NNRF9TRVQsCiJTRVQgYWZmaWNoZSBvdSBjaGFuZ2UgbGVzIHZhcmlhYmxlcyBkJ2Vudmlyb25uZW1lbnQgZGUgY21kLlxuXApcblwKU0VUIHNhbnMgcGFyYW3odHJlIGFmZmljaGUgbCdlbnZpcm9ubmVtZW50IGNvdXJhbnQuXG5cClxuXApQb3VyIGNy6WVyIGV0IG1vZGlmaWVyIHVuZSB2YXJpYWJsZSBkJ2Vudmlyb25uZW1lbnQgbGEgc3ludGF4ZSBlc3Q6XG5cClxuXAogICAgICBTRVQgPHZhcmlhYmxlPj08dmFsZXVyPlxuXApcblwKb/kgPHZhcmlhYmxlPiBldCA8dmFsZXVyPiBzb250IGRlcyBjaGHubmVzIGRlIGNhcmFjdOhyZXMuIElsIGVzdCDgIG5vdGVyIHF1ZSA8dmFyaWFibGU+XG5cCm5lIHBldXQgY29udGVuaXIgZCdlc3BhY2UsIGV0IHF1J2lsIG5lIGRvaXQgcGFzIHkgZW4gYXZvaXIgbm9uIHBsdXMgYXV0b3VyIGR1IHNpZ25lIGQn6WdhbGl06S5cblwKXG5cClNvdXMgV2luZSwgbCdlbnZpcm9ubWVudCBkdSBzeXN06G1lIGj0dGUgZXN0XG5cCmluY2x1cyBkYW5zIGwnZW52aXJvbm5tZW50IFdpbjMyLCBpbCB5IGF1cmEgcGFyIGNvbnPpcXVlbnQgZ+lu6XJhbGVtZW50XG5cCmJpZW4gcGx1cyBkZSB2YWxldXJzIHF1ZSBkYW5zIHVuIHN5c3TobWUgV2luMzIgbmF0aWYuIE5vdGV6IHF1J2lsXG5cCm4nZXN0IHBhcyBwb3NzaWJsZSBkZSBtb2RpZmllciBsJ2Vudmlyb25uZW1lbnQgZHUgc3lzdOhtZSBkJ2V4cGxvaXRhdGlvbiBkYW5zIGNtZC5cbiIKCiAgV0NNRF9TSElGVCwKIlNISUZUIGVzdCB1dGlsaXPpIGRhbnMgdW4gZmljaGllciBiYXRjaCBwb3VyIGVubGV2ZXIgdW4gcGFyYW3odHJlIGRlIGxhXG5cCmxpc3RlLCBhaW5zaSBsZSBwYXJhbeh0cmUgMiBkZXZpZW50IHBhcmFt6HRyZSAxIGV0IGFpbnNpIGRlIHN1aXRlLiBJbCBlc3Qgc2FucyBlZmZldFxuXApzJ2lsIGVzdCBhcHBlbOkgZGVwdWlzIGxhIGxpZ25lIGRlIGNvbW1hbmRlLlxuIgoKICBXQ01EX1RJTUUsICAgIkFpZGUgZGUgVElNRVxuIgoKICBXQ01EX1RJVExFLAoiUuhnbGUgbGUgdGl0cmUgZGUgbGEgZmVu6nRyZSBwb3VyIGxhIHNlc3Npb24gY21kLCBTeW50YXhloDogVElUTEUgW2NoYe5uZV1cbiIKCiAgV0NNRF9UWVBFLAoiVFlQRSA8bm9tZmljaGllcj4gYWZmaWNoZSA8bm9tZmljaGllcj4gc3VyIGxhIGNvbnNvbGUgKG91IGFpbGxldXJzXG5cCnNpIHJlZGlyaWfpKS4gQXVjdW4gdGVzdCBuJ2VzdCBmYWl0IHF1YW5kIGF1IGZvcm1hdCB0ZXh0ZSBkdSBmaWNoaWVyLlxuIgoKICBXQ01EX1ZFUklGWSwKIlZFUklGWSBlc3QgdXRpbGlz6SBwb3VyIHBvc2l0aW9ubmVyLCBlZmZhY2VyIG91IHRlc3RlciBsZSBmbGFnIGRlIHbpcmlmaWNhdGlvbi5cblwKTGVzIGZvcm1lcyBzdWl2YW50ZXMgc29udCBjb3JyZWN0ZXMgOlxuXApWRVJJRlkgT04JUG9zaXRpb25uZSBsZSBmbGFnXG5cClZFUklGWSBPRkYJRWZmYWNlIGxlIGZsYWdcblwKVkVSSUZZXHRcdEFmZmljaGUgbCfpdGF0IE9OIG91IE9GRiBkdSBmbGFnLlxuXApcblwKTGUgZmxhZyBkZSB2ZXJpZmljYXRpb24gbidhIHBhcyBkZSBmb25jdGlvbiBkYW5zIFdpbmUuXG4iCgogIFdDTURfVkVSLAoiVkVSIGFmZmljaGUgbGEgdmVyc2lvbiBkZSBjbWQgYWN0dWVsbGVtZW50IGVuIG3pbW9pcmUuXG4iCgogIFdDTURfVk9MLCAgICAiQWlkZSBkZSBWT0xcbiIKCiAgV0NNRF9QVVNIRCwgICJQVVNIRCA8culwZXJ0b2lyZT4gZW5yZWdpc3RyZSBsZSBy6XBlcnRvaXJlIGNvdXJhbnQgc3VyXG5cCnVuZSBwaWxlIGV0IGNoYW5nZSBsZSBy6XBlcnRvaXJlIGNvdXJyYW50IHBhciBsZSBy6XBlcnRvaXJlIHNw6WNpZmnpLlxuIgoKICBXQ01EX1BPUEQsICAgIlBPUEQgY2hhbmdlIGxlIHLpcGVydG9pcmUgY291cmFudCBwYXIgbGUgZGVybmllciBlbnJlZ2lzdHLpIOAgbCdhaWRlIGRlXG5cClBVU0hELlxuIgoKICBXQ01EX01PUkUsICAgIk1PUkUgZGlzcGxheXMgb3V0cHV0IG9mIGZpbGVzIG9yIHBpcGVkIGlucHV0IGluIHBhZ2VzLlxuIgoKICBXQ01EX0VYSVQsCiJFWElUIHRlcm1pbmUgbGEgc2Vzc2lvbiBkZSBsaWduZSBkZSBjb21tYW5kZSBldCByZXRvdXJuZVxuXAphdSBzeXN06G1lIGQnZXhwbG9pdGF0aW9uIG91IGF1IHNoZWxsIG/5IHZvdXMgYXZleiBpbnZvcXXpIGNtZC5cbiIKCiAgV0NNRF9BTExIRUxQLCAiTGVzIGNvbW1hbmRlcyBpbnRlcm5lcyBDTUQgc29udKA6XG5cCkFUVFJJQlx0XHRBZmZpY2hlIG91IGNoYW5nZSBsZXMgYXR0cmlidXRzIGRlIGZpY2hpZXJzIERPU1xuXApDQUxMXHRcdEludm9xdWUgdW4gZmljaGllciBiYXRjaCDgIGwnaW506XJpZXVyIGQndW4gYXV0cmVcblwKQ0QgKENIRElSKVx0Q2hhbmdlIGxlIHLpcGVydG9pcmUgY291cmFudCBwYXIgZOlmYXV0XG5cCkNMU1x0XHRFZmZhY2UgbCfpY3JhblxuXApDT1BZXHRcdENvcGllIHVuIG91IHBsdXNpZXVycyBmaWNoaWVyc1xuXApDVFRZXHRcdENoYW5nZSBsZSBw6XJpcGjpcmlxdWUgZCdlbnRy6WUvc29ydGllXG5cCkRBVEVcdFx0QWZmaWNoZSBvdSBjaGFuZ2UgbGEgZGF0ZSBzeXN06G1lXG5cCkRFTCAoRVJBU0UpXHRFZmZhY2UgdW4gZmljaGllciBvdSB1biBncm91cGUgZGUgZmljaGllcnNcblwKRElSXHRcdExpc3RlIGxlIGNvbnRlbnUgZCd1biBy6XBlcnRvaXJlXG5cCkVDSE9cdFx0QWZmaWNoZSBkdSB0ZXh0ZSBzdXIgbGEgY29uc29sZVxuXApIRUxQXHRcdEFmZmljaGUgZGUgYnJlZnMgZOl0YWlscyBzdXIgbCd1dGlsaXNhdGlvbiBkJ3VuZSBjb21tYW5kZVxuXApNRCAoTUtESVIpXHRDcullIHVuIHLpcGVydG9pcmVcblwKTU9SRVx0XHREaXNwbGF5IG91dHB1dCBpbiBwYWdlc1xuXApNT1ZFXHRcdETpcGxhY2UgdW4gZmljaGllciwgdW4gZ3JvdXBlIGRlIGZpY2hpZXJzIG91IHVuIHLpcGVydG9pcmVcblwKUEFUSFx0XHRS6GdsZSBvdSBhZmZpY2hlIGxlIGNoZW1pbiBkZSByZWNoZXJjaGVcblwKUE9QRFx0XHRDaGFuZ2UgbGUgculwZXJ0b2lyZSBjb3VyYW50IHBhciBsZSBkZXJuaWVyIGVucmVnaXN0cukgYXZlYyBQVVNIRFxuXApQUk9NUFRcdFx0Q2hhbmdlIGwnaW52aXRlIGRlIGNvbW1hbmRlXG5cClBVU0hEXHRcdENoYW5nZSBkZSBy6XBlcnRvaXJlIGVuIGVucmVnaXN0cmFudCBsZSBy6XBlcnRvaXJlIGNvdXJhbnRcblwKUkVOIChSRU5BTUUpXHRSZW5vbW1lIHVuIGZpY2hpZXIsIHVuIGdyb3VwZSBkZSBmaWNoaWVycyBvdSB1biBy6XBlcnRvaXJlXG5cClJEIChSTURJUilcdEVmZmFjZSB1biBy6XBlcnRvaXJlXG5cClNFVFx0XHRS6GdsZSBvdSBhZmZpY2hlIGxlcyB2YXJpYWJsZXMgZCdlbnZpcm9ubWVudFxuXApUSU1FXHRcdFLoZ2xlIG91IGFmZmljaGUgbCdoZXVyZSBzeXN06G1lIGNvdXJhbnRlXG5cClRJVExFXHRcdFLoZ2xlIGxlIHRpdHJlIGRlIGxhIGZlbup0cmUgcG91ciBsYSBzZXNzaW9uIENNRFxuXApUWVBFXHRcdEFmZmljaGUgbGUgY29udGVudSBkJ3VuIGZpY2hpZXIgdGV4dGVcblwKVkVSXHRcdEFmZmljaGUgbGEgdmVyc2lvbiBkZSBjbWQgYWN0dWVsbGVtZW50IGVuIG3pbW9pcmUuXG5cClZPTFx0XHRBZmZpY2hlIGxlIG5vbSBkZSB2b2x1bWUgZCd1biBsZWN0ZXVyIGRlIGRpc3F1ZVxuXApFWElUXHRcdFF1aXR0ZSBDTURcblxuXApFbnRyZXogSEVMUCA8Y29tbWFuZGU+IHBvdXIgcGx1cyBkJ2luZm9ybWF0aW9ucyBzdXIgbGVzIGNvbW1hbmRlcyBjaS1kZXNzdXNcbiIKCiAgV0NNRF9DT05GSVJNLCAiynRlcy12b3VzIHP7ciIKICBXQ01EX1lFUywgIk8iCiAgV0NNRF9OTywgIk4iCiAgV0NNRF9OT0FTU09DLCAiQXNzb2NpYXRpb24gZGUgZmljaGllciBtYW5xdWFudGUgcG91ciBsJ2V4dGVuc2lvbiAlc1xuIgogIFdDTURfTk9GVFlQRSwgIkF1Y3VuIGNvbW1hbmRlIGQnb3V2ZXJ0dXJlIGFzc29jaellIGF2ZWMgbGUgdHlwZSBkZSBmaWNoaWVyIKugJXOgu1xuIgogIFdDTURfT1ZFUldSSVRFLCAiyWNyYXNlciAlcyIKICBXQ01EX01PUkVTVFIsICJQbHVzLi4uIgogIFdDTURfVFJVTkNBVEVETElORSwgIkxpZ25lIGR1IHByb2Nlc3N1cyBiYXRjaCBwcm9iYWJsZW1lbnQgdHJvbnF16WUuIFV0aWxpc2F0aW9uIGRloDpcbiIKICBXQ01EX05ZSSwgIlBhcyBlbmNvcmUgaW1wbOltZW506VxuXG4iCiAgV0NNRF9OT0FSRywgIkFyZ3VtZW50IG1hbnF1YW50XG4iCiAgV0NNRF9TWU5UQVhFUlIsICJFcnJldXIgZGUgc3ludGF4ZVxuIgogIFdDTURfRklMRU5PVEZPVU5ELCAiJXMgOiBGaWNoaWVyIG5vbiB0cm91dulcbiIKICBXQ01EX05PQ01ESEVMUCwgIlBhcyBkJ2FpZGUgZGlzcG9uaWJsZSBwb3VyICVzXG4iCiAgV0NNRF9OT1RBUkdFVCwgIkxhIGRlc3RpbmF0aW9uIGRlIGwnaW5zdHJ1Y3Rpb24gR09UTyBuJ2EgcGFzIOl06SB0cm91dullXG4iCiAgV0NNRF9DVVJSRU5UREFURSwgIkxhIGRhdGUgY291cmFudGUgZXN0ICVzXG4iCiAgV0NNRF9DVVJSRU5UVElNRSwgIkwnaGV1cmUgY291cmFudGUgZXN0ICVzXG4iCiAgV0NNRF9ORVdEQVRFLCAiU2Fpc2lzc2V6IGxhIG5vdXZlbGxlIGRhdGWgOiAiCiAgV0NNRF9ORVdUSU1FLCAiU2Fpc2lzc2V6IGxhIG5vdXZlbGxlIGhldXJloDogIgogIFdDTURfTUlTU0lOR0VOViwgIkxhIHZhcmlhYmxlIGQnZW52aXJvbm5lbWVudCAlcyBuJ2VzdCBwYXMgZOlmaW5pZVxuIgogIFdDTURfUkVBREZBSUwsICJJbXBvc3NpYmxlIGQnb3V2cmlyIKugJXOgu1xuIgogIFdDTURfQ0FMTElOU0NSSVBULCAiSW1wb3NzaWJsZSBkJ2FwcGVsZXIgdW5lIOl0aXF1ZXR0ZSBkZSBiYXRjaCBob3JzIGQndW4gc2NyaXB0IGJhdGNoXG4iCiAgV0NNRF9BTEwsICJUIgogIFdDTURfREVMUFJPTVBULCAiJXMsIFN1cHByaW1lciIKICBXQ01EX0VDSE9QUk9NUFQsICJFY2hvIGVzdCAlc1xuIgogIFdDTURfVkVSSUZZUFJPTVBULCAiVmVyaWZ5IGVzdCAlc1xuIgogIFdDTURfVkVSSUZZRVJSLCAiVmVyaWZ5IGRvaXQg6nRyZSBPTiBvdSBPRkZcbiI7CiAgV0NNRF9BUkdFUlIsICJFcnJldXIgZGUgcGFyYW3odHJlXG4iCiAgV0NNRF9WT0xVTUVERVRBSUwsICJMZSB2b2x1bWUgZGFucyBsZSBsZWN0ZXVyICVjIGVzdCAlc1xuTGUgbnVt6XJvIGRlIHPpcmllIGR1IHZvbHVtZSBlc3QgJTA0eC0lMDR4XG5cbiIKICBXQ01EX1ZPTFVNRVBST01QVCwgIsl0aXF1ZXR0ZSBkdSB2b2x1bWUgKDExIGNhcmFjdOhyZXMsIEVOVFLJRSBwb3VyIGF1Y3VuKaA/IgogIFdDTURfTk9QQVRILCAiUEFUSCBub3QgZm91bmRcbiIKICBXQ01EX0FOWUtFWSwiQXBwdXlleiBzdXIgRU5UUslFIHBvdXIgY29udGludWVyoDogIgogIFdDTURfQ09OU1RJVExFLCJJbnZpdGUgZGUgY29tbWFuZGUgV2luZSIKICBXQ01EX1ZFUlNJT04sIkNNRCB2ZXJzaW9uICVzXG5cbiIKICBXQ01EX01PUkVQUk9NUFQsICJQbHVzoD8gIgogIFdDTURfTElORVRPT0xPTkcsICJUaGUgaW5wdXQgbGluZSBpcyB0b28gbG9uZy5cbiIKfQo=