LyoKICogQ29weXJpZ2h0IDE5OTggSnVlcmdlbiBTY2htaWVkCiAqIENvcHlyaWdodCAyMDA4IERhbmllbCBOeWxhbmRlciA8cG9AZGFuaWVsbnlsYW5kZXIuc2U+CiAqIENvcHlyaWdodCAyMDEwIEFuZGVycyBKb25zc29uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNpbmNsdWRlICJzaHJlc2RlZi5oIgoKTEFOR1VBR0UgTEFOR19TV0VESVNILCBTVUJMQU5HX05FVVRSQUwKCk1FTlVfMDAxIE1FTlUKQkVHSU4KCU1FTlVJVEVNICImU3RvcmEgaWtvbmVyIiwJRkNJRE1fU0hWSUVXX0JJR0lDT04KCU1FTlVJVEVNICJTJm3lIGlrb25lciIsCUZDSURNX1NIVklFV19TTUFMTElDT04KCU1FTlVJVEVNICImTGlzdGEiLAkJRkNJRE1fU0hWSUVXX0xJU1RWSUVXCglNRU5VSVRFTSAiJkRldGFsamVyIiwJCUZDSURNX1NIVklFV19SRVBPUlRWSUVXCkVORAoKLyoKIHNoZWxsdmlldyBiYWNrZ3JvdW5kIG1lbnUKKi8KTUVOVV8wMDIgTUVOVQpCRUdJTgoJUE9QVVAgIiIKCUJFR0lOCgkgIFBPUFVQICImVmlzYSIKCSAgQkVHSU4KCSAgICBNRU5VSVRFTSAiJlN0b3JhIGlrb25lciIsCUZDSURNX1NIVklFV19CSUdJQ09OCgkgICAgTUVOVUlURU0gIlMmbeUgaWtvbmVyIiwJRkNJRE1fU0hWSUVXX1NNQUxMSUNPTgoJICAgIE1FTlVJVEVNICImTGlzdGEiLAkJRkNJRE1fU0hWSUVXX0xJU1RWSUVXCgkgICAgTUVOVUlURU0gIiZEZXRhbGplciIsCUZDSURNX1NIVklFV19SRVBPUlRWSUVXCgkgIEVORAoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgUE9QVVAgIk9yZG5hICZpa29uZXIiCgkgIEJFR0lOCgkgICAgTUVOVUlURU0gIkVmdGVyICZuYW1uIiwJMHgzMAkvKiBjb2x1bW4gMCAqLwoJICAgIE1FTlVJVEVNICJFZnRlciAmdHlwIiwJMHgzMgkvKiBjb2x1bW4gMiAqLwoJICAgIE1FTlVJVEVNICJFZnRlciAmc3RvcmxlayIsCTB4MzEJLyogLi4uICovCgkgICAgTUVOVUlURU0gIkVmdGVyICZkYXR1bSIsCTB4MzMKCSAgICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgICBNRU5VSVRFTSAiT3JkbmEgJmF1dG9tYXRpc2t0IiwJRkNJRE1fU0hWSUVXX0FVVE9BUlJBTkdFCgkgIEVORAoJICBNRU5VSVRFTSAiUmFkYSB1cHAgaWtvbmVyIiwJRkNJRE1fU0hWSUVXX1NOQVBUT0dSSUQKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICJVcHBkYXRlcmEiLAkJRkNJRE1fU0hWSUVXX1JFRlJFU0gKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICJLbGlzdHJhIGluIiwJCUZDSURNX1NIVklFV19JTlNFUlQKCSAgTUVOVUlURU0gIktsaXN0cmEgaW4gc29tIGdlbnbkZyIsCUZDSURNX1NIVklFV19JTlNFUlRMSU5LCgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBQT1BVUCAiTnkiCgkgIEJFR0lOCgkgICAgTUVOVUlURU0gIk55ICZtYXBwIiwJRkNJRE1fU0hWSUVXX05FV0ZPTERFUgoJICAgIE1FTlVJVEVNICJOeSAmZ2VuduRnIiwJRkNJRE1fU0hWSUVXX05FV0xJTksKCSAgICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgRU5ECgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBNRU5VSVRFTSAiRWdlbnNrYXBlciIsCUZDSURNX1NIVklFV19QUk9QRVJUSUVTCglFTkQKRU5ECgovKgogc2hlbGx2aWV3IGl0ZW0gbWVudQoqLwpNRU5VX1NIVl9GSUxFIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KCVBPUFVQICIiCglCRUdJTgoJICBNRU5VSVRFTSAiJlbkbGoiCQlGQ0lETV9TSFZJRVdfT1BFTgoJICBNRU5VSVRFTSAiVXQmZm9yc2thIiwJCUZDSURNX1NIVklFV19FWFBMT1JFCgkgIE1FTlVJVEVNICIm1nBwbmEiLAkJRkNJRE1fU0hWSUVXX09QRU4KCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICJLbGlwcCAmdXQiLAkJRkNJRE1fU0hWSUVXX0NVVAoJICBNRU5VSVRFTSAiJktvcGllcmEiLAkJRkNJRE1fU0hWSUVXX0NPUFkKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICJTa2FwYSAmbORuayIsCUZDSURNX1NIVklFV19DUkVBVEVMSU5LCgkgIE1FTlVJVEVNICImVGEgYm9ydCIsCQlGQ0lETV9TSFZJRVdfREVMRVRFCgkgIE1FTlVJVEVNICImQnl0IG5hbW4iLAkJRkNJRE1fU0hWSUVXX1JFTkFNRQoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgTUVOVUlURU0gIiZFZ2Vuc2thcGVyIiwJRkNJRE1fU0hWSUVXX1BST1BFUlRJRVMKCUVORApFTkQKCk1FTlVfQ1BBTkVMIE1FTlUKQkVHSU4KICAgIFBPUFVQICImQXJraXYiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJBJnZzbHV0YSIsIElETV9DUEFORUxfRVhJVAogICAgRU5ECgogICAgUE9QVVAgIiZWaXNhIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiU3Qmb3JhIGlrb25lciIsIEZDSURNX1NIVklFV19CSUdJQ09OCiAgICAgICAgTUVOVUlURU0gIlMmbeUgaWtvbmVyIiwgRkNJRE1fU0hWSUVXX1NNQUxMSUNPTgogICAgICAgIE1FTlVJVEVNICImTGlzdGEiLCBGQ0lETV9TSFZJRVdfTElTVFZJRVcKICAgICAgICBNRU5VSVRFTSAiJkRldGFsamVyIiwgRkNJRE1fU0hWSUVXX1JFUE9SVFZJRVcKICAgIEVORAoKICAgIFBPUFVQICImSGrkbHAiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImT20gS29udHJvbGxwYW5lbGVuLi4uIiwgSURNX0NQQU5FTF9BQk9VVAogICAgRU5ECkVORAoKU0hCUlNGT1JGT0xERVJfTVNHQk9YIERJQUxPRyAxNSwgNDAsIDE4OCwgMTkyClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVSB8IERTX01PREFMRlJBTUUgfCBEU19TRVRGT05UIHwgRFNfM0RMT09LCkNBUFRJT04gIkJs5GRkcmEgZWZ0ZXIgbWFwcCIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiBERUZQVVNIQlVUVE9OICJPSyIsIDEsIDgwLCAxNzYsIDUwLCAxMiwgQlNfREVGUFVTSEJVVFRPTiB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiQXZicnl0IiwgMiwgMTM0LCAxNzYsIDUwLCAxMiwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBMVEVYVCAiIiwgSUREX1RJVExFLCA0LCA0LCAxODAsIDEyCiBMVEVYVCAiIiwgSUREX1NUQVRVUywgNCwgMjUsIDE4MCwgMTIKIENPTlRST0wgIiIsIElERF9UUkVFVklFVywgIlN5c1RyZWVWaWV3MzIiLAoJVFZTX0hBU0JVVFRPTlMgfCBUVlNfSEFTTElORVMgfCBUVlNfTElORVNBVFJPT1QgfAoJV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwKCTQsIDQwLCAxODAsIDEyMAp9CgpTSE5FV0JSU0ZPUkZPTERFUl9NU0dCT1ggRElBTE9HIDE1LCA0MCwgMjE4LCAxOTYKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VIHwgV1NfU0laRUJPWCB8IERTX01PREFMRlJBTUUgfCBEU19TRVRGT05UIHwgRFNfM0RMT09LCkNBUFRJT04gIkJs5GRkcmEgZWZ0ZXIgbWFwcCIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiBMVEVYVCAiIiwgSUREX1RJVExFLCAxMCwgOCwgMTk4LCAyNAogTFRFWFQgIiIsIElERF9TVEFUVVMsIDEwLCAyNSwgMTk4LCAxMgogTFRFWFQgIk1hcHA6IiwgSUREX0ZPTERFUiwgMTAsIDE1NiwgNDAsIDEyCiBDT05UUk9MICIiLCBJRERfVFJFRVZJRVcsICJTeXNUcmVlVmlldzMyIiwKCVRWU19IQVNCVVRUT05TIHwgVFZTX0hBU0xJTkVTIHwgVFZTX0xJTkVTQVRST09UIHwKCVdTX0JPUkRFUiB8IFdTX1RBQlNUT1AsCgkxMiwgMzgsIDE5NCwgMTA1CiBFRElUVEVYVCBJRERfRk9MREVSVEVYVCwgNDYsIDE1MCwgMTYwLCAxNCwgV1NfQk9SREVSIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICJOeSAmbWFwcCIsIElERF9NQUtFTkVXRk9MREVSLCAxMiwgMTc0LCA3MCwgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogREVGUFVTSEJVVFRPTiAiT0siLCBJRE9LLCAxMDIsIDE3NCwgNTAsIDE0LCBCU19ERUZQVVNIQlVUVE9OIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICJBdmJyeXQiLCBJRENBTkNFTCwgMTU2LCAxNzQsIDUwLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCn0KClNIRUxMX1lFU1RPQUxMX01TR0JPWCBESUFMT0cgMjAwLCAxMDAsIDI4MCwgOTAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfVklTSUJMRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIk1lZGRlbGFuZGUiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogICAgREVGUFVTSEJVVFRPTiAiJkphIiwgSURZRVMsIDM0LCA2OSwgNTMsIDE0LCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKICAgIFBVU0hCVVRUT04gIkphIHRpbGwgJmFsbHQiLCBJRERfWUVTVE9BTEwsIDkyLCA2OSwgNjUsIDE0LCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKICAgIFBVU0hCVVRUT04gIiZOZWoiLCBJRE5PLCAxNjIsIDY5LCA1MywgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAiQXZicnkmdCIsIElEQ0FOQ0VMLCAyMjAsIDY5LCA1MywgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogICAgSUNPTiAiIiwgSUREX0lDT04sIDEwLCAxMCwgMTYsIDE2CiAgICBMVEVYVCAiIiwgSUREX01FU1NBR0UsIDQwLCAxMCwgMjM4LCA1MiwgMAp9CgpTSEVMTF9BQk9VVF9NU0dCT1ggRElBTE9HIDE1LCA0MCwgMjIwLCAxNTIKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfVklTSUJMRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIk9tICVzIgpGT05UIDEwLCAiTVMgU2hlbGwgRGxnIgp7CiBERUZQVVNIQlVUVE9OICJPSyIsIElET0ssIDE1MywgMTMzLCA2MCwgMTIsIFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIldpbmUtJmxpY2Vucy4uLiIsIElEQ19BQk9VVF9MSUNFTlNFLCAxNTMsIDExMywgNjAsIDEyLCBXU19UQUJTVE9QCiBMSVNUQk9YIElEQ19BQk9VVF9MSVNUQk9YLCA4LCA2NSwgMTM3LCA4MiwgTEJTX05PVElGWSB8IFdTX1ZTQ1JPTEwgfCBXU19CT1JERVIKIElDT04gIiIsIHN0YzEsIDEwLCAxMCwgMzAsIDMwCiBMVEVYVCAiIiwgSURDX0FCT1VUX1NUQVRJQ19URVhUMSwgNDAsIDEwLCAxNzAsIDEwCiBMVEVYVCAiIiwgSURDX0FCT1VUX1NUQVRJQ19URVhUMiwgNDAsIDIyLCAxNzAsIDEwCiBMVEVYVCAiS/ZyIHDlICVzIiwgSURDX0FCT1VUX1NUQVRJQ19URVhUMywgNDIsIDM0LCAxNzAsIDEwCiBMVEVYVCAiV2luZSBoYWRlIGludGUgdmFyaXQgbfZqbGlndCB1dGFuIGRlc3NhIHBlcnNvbmVyOiIsIElEQ19BQk9VVF9XSU5FX1RFWFQsIDgsIDU0LCAyMDQsIDEwCn0KClNIRUxMX1JVTl9ETEcgRElBTE9HIExPQURPTkNBTEwgTU9WRUFCTEUgRElTQ0FSREFCTEUgMCwgMCwgMjI3LCA5NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19WSVNJQkxFIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKIElDT04gIiIsIDEyMjk3LCA3LCAxMSwgMTgsIDIwLCBXU19WSVNJQkxFCiBMVEVYVCAiU2tyaXYgbmFtbmV0IHDlIGV0dCBwcm9ncmFtLCBlbiBtYXBwIGVsbGVyIGV0dCBkb2t1bWVudCBvY2ggV2luZSBrb21tZXIgYXR0IPZwcG5hIGRldCDldCBkaWcuIiwgMTIyODksIDM2LCAxMSwgMTgyLCAxOAogTFRFWFQgIibWcHBuYToiLCAxMjMwNSwgNywgMzksIDI0LCAxMAogQ09OVFJPTCAiIiwgMTIyOTgsICJDT01CT0JPWCIsIFdTX1RBQlNUT1AgfCBXU19HUk9VUCB8IFdTX1ZTQ1JPTEwgfCBXU19WSVNJQkxFIHwgQ0JTX0RJU0FCTEVOT1NDUk9MTCB8IENCU19BVVRPSFNDUk9MTCB8IENCU19EUk9QRE9XTiwgMzYsIDM3LCAxODMsIDEwMAogREVGUFVTSEJVVFRPTiAiT0siLCBJRE9LLCA2MiwgNjMsIDUwLCAxNCwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiQXZicnl0IiwgSURDQU5DRUwsIDExNiwgNjMsIDUwLCAxNCwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiJkJs5GRkcmEuLi4iLCAxMjI4OCwgMTcwLCA2MywgNTAsIDE0LCBXU19UQUJTVE9QCn0KClNUUklOR1RBQkxFCnsKICAgICAgICAvKiBjb2x1bW5zIGluIHRoZSBzaGVsbHZpZXcgKi8KCUlEU19TSFZfQ09MVU1OMQkJIkZpbCIKCUlEU19TSFZfQ09MVU1OMgkJIlN0b3JsZWsiCglJRFNfU0hWX0NPTFVNTjMJCSJUeXAiCglJRFNfU0hWX0NPTFVNTjQJCSLEbmRyYWQiCglJRFNfU0hWX0NPTFVNTjUJCSJFZ2Vuc2thcGVyIgoJSURTX1NIVl9DT0xVTU42CQkiU3RvcmxlayIKCUlEU19TSFZfQ09MVU1ONwkJIkxlZGlndCB1dHJ5bW1lIgoJSURTX1NIVl9DT0xVTU44CQkiTmFtbiIKCUlEU19TSFZfQ09MVU1OOQkJIktvbW1lbnRhcmVyIgoJSURTX1NIVl9DT0xVTU4xMAkixGdhcmUiCglJRFNfU0hWX0NPTFVNTjExCSJHcnVwcCIKCUlEU19TSFZfQ09MVU1OX0RFTEZST00JIlVyc3BydW5nbGlnIHBsYXRzIgoJSURTX1NIVl9DT0xVTU5fREVMREFURQkiQm9ydHRhZ25pbmdzZGF0dW0iCglJRFNfU0hWX0NPTF9ET0NTICAgICAgICAiRG9rdW1lbnQiCglJRFNfU0hWX0NPTF9TVEFUVVMgICAgICAiU3RhdHVzIgoJSURTX1NIVl9DT0xfTE9DQVRJT04gICAgIlBsYXRzIgoJSURTX1NIVl9DT0xfTU9ERUwgICAgICAgIk1vZGVsbCIKCiAgICAgICAgLyogc3BlY2lhbCBmb2xkZXJzICovCglJRFNfREVTS1RPUAkJIlNrcml2Ym9yZCIKCUlEU19NWUNPTVBVVEVSCQkiTWluIGRhdG9yIgoJSURTX1JFQ1lDTEVCSU5fRk9MREVSX05BTUUgICAgICAiUGFwcGVyc2tvcmciCglJRFNfQ09OVFJPTFBBTkVMCSJLb250cm9sbHBhbmVsIgoKICAgICAgICAvKiBjb250ZXh0IG1lbnVzICovCglJRFNfVklFV19MQVJHRQkJIiZTdG9yYSBpa29uZXIiCglJRFNfVklFV19TTUFMTAkJIlMmbeUgaWtvbmVyIgoJSURTX1ZJRVdfTElTVAkJIiZMaXN0YSIKCUlEU19WSUVXX0RFVEFJTFMJIiZEZXRhbGplciIKCUlEU19TRUxFQ1QJCSJW5GxqIgoJSURTX09QRU4JCSLWcHBuYSIKCglJRFNfQ1JFQVRFRk9MREVSX0RFTklFRCAiS3VuZGUgaW50ZSBza2FwYSBueSBtYXBwOiB0aWxsZ+VuZyBuZWthZC4iCglJRFNfQ1JFQVRFRk9MREVSX0NBUFRJT04gIkV0dCBmZWwgdXBwc3RvZCB1bmRlciBza2FwYW5kZSBhdiBueSBtYXBwIgoJSURTX0RFTEVURUlURU1fQ0FQVElPTiAiQmVrcuRmdGEgZmlsYm9ydHRhZ25pbmciCglJRFNfREVMRVRFRk9MREVSX0NBUFRJT04gIkJla3LkZnRhIGJvcnR0YWduaW5nIGF2IG1hcHAiCglJRFNfREVMRVRFSVRFTV9URVhUICLEciBkdSBz5GtlciBkdSB2aWxsIHRhIGJvcnQgqyUxuz8iCglJRFNfREVMRVRFTVVMVElQTEVfVEVYVCAixHIgZHUgc+RrZXIgZHUgdmlsbCB0YSBib3J0IGRlc3NhICUxIGVsZW1lbnQ/IgoJSURTX0RFTEVURVNFTEVDVEVEX1RFWFQgIsRyIGR1IHPka2VyIGR1IHZpbGwgdGEgYm9ydCB2YWx0IGVsZW1lbnQ/IgoJSURTX1RSQVNISVRFTV9URVhUICLEciBkdSBz5GtlciBkdSB2aWxsIHPkbmRhIKslMbsgdGlsbCBwYXBwZXJza29yZ2VuPyIKCUlEU19UUkFTSEZPTERFUl9URVhUICLEciBkdSBz5GtlciBkdSB2aWxsIHPkbmRhIKslMbsgb2NoIGFsbHQgaW5uZWjlbGwgdGlsbCBwYXBwZXJza29yZ2VuPyIKCUlEU19UUkFTSE1VTFRJUExFX1RFWFQgIsRyIGR1IHPka2VyIGR1IHZpbGwgc+RuZGEgZGVzc2EgJTEgZWxlbWVudGVuIHRpbGwgcGFwcGVyc2tvcmdlbj8iCglJRFNfQ0FOVFRSQVNIX1RFWFQgIkVsZW1lbnRldCCrJTG7IGthbiBpbnRlIHPkbmRhcyB0aWxsIHBhcHBlcnNrb3JnZW4uIFZpbGwgZHUgdGEgYm9ydCBkZXQgaSBzdORsbGV0PyIKCUlEU19PVkVSV1JJVEVGSUxFX1RFWFQgIkRlbm5hIG1hcHAgaW5uZWjlbGxlciByZWRhbiBlbiBmaWwga2FsbGFkICclMScuXG5cblZpbGwgZHUgc2tyaXZhIPZ2ZXIgZGVuPyIKCUlEU19PVkVSV1JJVEVGSUxFX0NBUFRJT04gIkJla3LkZnRhIPZ2ZXJza3Jpdm5pbmcgYXYgZmlsIgoJSURTX09WRVJXUklURUZPTERFUl9URVhUICJEZW5uYSBtYXBwIGlubmVo5WxsZXIgcmVkYW4gZW4gbWFwcCBrYWxsYWQgJyUxJy5cblxuIlwKCSAgICAiT20gZmlsZXJuYSBpIG3lbG1hcHBlbiBoYXIgc2FtbWEgbmFtbiBzb20gZmlsZXIgaSBkZW4gdmFsZGFcbiJcCgkgICAgIm1hcHBlbiBz5SBrb21tZXIgZGUgYmxpIGVyc2F0dGEuIFZpbGwgZHUg5G5k5SBmbHl0dGEgZWxsZXIga29waWVyYVxuIlwKCSAgICAibWFwcGVuPyIKCiAgICAgICAgLyogbWVzc2FnZSBib3ggc3RyaW5ncyAqLwoJSURTX1JFU1RBUlRfVElUTEUgICAgICAgIlN0YXJ0YSBvbSIKCUlEU19SRVNUQVJUX1BST01QVCAgICAgICJWaWxsIGR1IHNpbXVsZXJhIGVuIG9tc3RhcnQgYXYgV2luZG93cz8iCglJRFNfU0hVVERPV05fVElUTEUgICAgICAiQXZzbHV0YSIKCUlEU19TSFVURE9XTl9QUk9NUFQgICAgICJWaWxsIGR1IGF2c2x1dGEgV2luZT8iCgogICAgICAgIC8qIFJ1biBGaWxlIGRpYWxvZyAqLwoJSURTX1JVTkRMR19FUlJPUiAgICAgICAgICAgIkt1bmRlIGludGUgdmlzYSBL9nItZvZuc3RyZXQgKGludGVybnQgZmVsKSIKCUlEU19SVU5ETEdfQlJPV1NFX0VSUk9SICAgICJLdW5kZSBpbnRlIHZpc2EgQmzkZGRyYS1m9m5zdHJldCAoaW50ZXJudCBmZWwpIgoJSURTX1JVTkRMR19CUk9XU0VfQ0FQVElPTiAgIkJs5GRkcmEiCglJRFNfUlVORExHX0JST1dTRV9GSUxURVIgICAiUHJvZ3JhbWZpbGVyXDAqLmV4ZVwwQWxsYSBmaWxlclwwKi4qXDBcMCIKCiAgICAgICAgLyogc2hlbGwgZm9sZGVyIHBhdGggZGVmYXVsdCB2YWx1ZXMgKi8KCUlEU19QUk9HUkFNUyAgICAgICAgICAgICAgICAiU3RhcnQtbWVueVxcUHJvZ3JhbSIKCUlEU19QRVJTT05BTCAgICAgICAgICAgICAgICAiTWluYSBkb2t1bWVudCIKCUlEU19GQVZPUklURVMgICAgICAgICAgICAgICAiRmF2b3JpdGVyIgoJSURTX1NUQVJUVVAgICAgICAgICAgICAgICAgICJTdGFydC1tZW55XFxQcm9ncmFtXFxVcHBzdGFydCIKCUlEU19SRUNFTlQgICAgICAgICAgICAgICAgICAiU2VuYXN0ZSIKCUlEU19TRU5EVE8gICAgICAgICAgICAgICAgICAiU2VuZFRvIgoJSURTX1NUQVJUTUVOVSAgICAgICAgICAgICAgICJTdGFydC1tZW55IgoJSURTX01ZTVVTSUMgICAgICAgICAgICAgICAgICJNaW4gbXVzaWsiCglJRFNfTVlWSURFTyAgICAgICAgICAgICAgICAgIk1pbmEgdmlkZW9rbGlwcCIKCUlEU19ERVNLVE9QRElSRUNUT1JZICAgICAgICAiU2tyaXZib3JkIgoJSURTX05FVEhPT0QgICAgICAgICAgICAgICAgICJO5HR2ZXJrZXQiCglJRFNfVEVNUExBVEVTICAgICAgICAgICAgICAgIk1hbGxhciIKCUlEU19BUFBEQVRBICAgICAgICAgICAgICAgICAiUHJvZ3JhbWRhdGEiCglJRFNfUFJJTlRIT09EICAgICAgICAgICAgICAgIlNrcml2YXJlIgoJSURTX0xPQ0FMX0FQUERBVEEgICAgICAgICAgICJMb2thbGEgaW5zdORsbG5pbmdhclxcUHJvZ3JhbWRhdGEiCglJRFNfSU5URVJORVRfQ0FDSEUgICAgICAgICAgIkxva2FsYSBpbnN05GxsbmluZ2FyXFxUZW1wb3JhcnkgSW50ZXJuZXQgRmlsZXMiCglJRFNfQ09PS0lFUyAgICAgICAgICAgICAgICAgIkNvb2tpZXMiCglJRFNfSElTVE9SWSAgICAgICAgICAgICAgICAgIkxva2FsYSBpbnN05GxsbmluZ2FyXFxUaWRpZ2FyZSIKCUlEU19QUk9HUkFNX0ZJTEVTICAgICAgICAgICAiUHJvZ3JhbSIKCUlEU19NWVBJQ1RVUkVTICAgICAgICAgICAgICAiTWluYSBiaWxkZXIiCglJRFNfUFJPR1JBTV9GSUxFU19DT01NT04gICAgIlByb2dyYW1cXEdlbWVuc2FtbWEgZmlsZXIiCglJRFNfQ09NTU9OX0RPQ1VNRU5UUyAgICAgICAgIkRva3VtZW50IgoJSURTX0FETUlOVE9PTFMgICAgICAgICAgICAgICJTdGFydC1tZW55XFxQcm9ncmFtXFxBZG1pbmlzdHJhdGlvbnN2ZXJrdHlnIgoJSURTX0NPTU1PTl9NVVNJQyAgICAgICAgICAgICJNdXNpayIKCUlEU19DT01NT05fUElDVFVSRVMgICAgICAgICAiQmlsZGVyIgoJSURTX0NPTU1PTl9WSURFTyAgICAgICAgICAgICJWaWRlb2tsaXBwIgoJSURTX0NEQlVSTl9BUkVBICAgICAgICAgICAgICJMb2thbGEgaW5zdORsbG5pbmdhclxcUHJvZ3JhbWRhdGFcXE1pY3Jvc29mdFxcQ0QtYnLkbm5pbmciCgoJSURTX05FV0ZPTERFUgkJIk55IG1hcHAiCgoJSURTX0NQQU5FTF9USVRMRSAgICAgICAgICAgICJXaW5lcyBrb250cm9sbHBhbmVsIgoJSURTX0NQQU5FTF9OQU1FICAgICAgICAgICAgICJOYW1uIgoJSURTX0NQQU5FTF9ERVNDUklQVElPTiAgICAgICJCZXNrcml2bmluZyIKCglJRFNfU0hMRVhFQ19OT0FTU09DICAgICAgICAgIkluZ2V0IFdpbmRvd3MtcHJvZ3JhbSDkciBpbnN05GxsdCBm9nIgYXR0IPZwcG5hIGRlbm5hIGZpbHR5cC4iCn0KClNUUklOR1RBQkxFCnsKSURTX0xJQ0VOU0VfQ0FQVElPTiwgICAgICAgICAgICAiV2luZS1saWNlbnMiCklEU19MSUNFTlNFLAoiV2luZSDkciBmcmkgcHJvZ3JhbXZhcmE7IGR1IGthbiBkaXN0cmlidWVyYSBkZXQgb2NoL2VsbGVyIFwK5G5kcmEgZGV0IGVubGlndCB2aWxsa29yZW4gaSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIFwKTGljZW5zZSBzb20gZGVuIHB1YmxpY2VyYXRzIGF2IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGFudGluZ2VuIFwKdmVyc2lvbiAyLjEgYXYgbGljZW5zZW4sIGVsbGVyIChvbSBkdSBz5SD2bnNrYXIpIG7lZ29uIHNlbmFyZSB2ZXJzaW9uLlxuXG5cCldpbmUgdXRnZXMgaSBm9nJob3BwbmluZ2VuIGF0dCBkZXQgc2thIGtvbW1hIHRpbGwgbnl0dGEsIFwKbWVuIFVUQU4gTsVHT04gU09NIEhFTFNUIEdBUkFOVEk7IOR2ZW4gdXRhbiB1bmRlcmb2cnN05WRkIGdhcmFudGkgb20gXApTxExKQkFSSEVUIGVsbGVyIEzETVBMSUdIRVQgRtZSIE7FR09UIFNQRUNJRUxMVCDETkRBTcVMLiAgU2UgR05VIFwKTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZvZyIGZsZXIgZGV0YWxqZXIuXG5cblwKRHUgYvZyIGhhIGbldHQgZXR0IGV4ZW1wbGFyIGF2IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgXApMaWNlbnNlIHRpbGxzYW1tYW5zIG1lZCBXaW5lOyBvbSBpbnRlLCBza3JpdiB0aWxsOiB0aGUgRnJlZSBTb2Z0d2FyZSBcCkZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuIgp9Cg==