LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDMsMjAwNCBKb3PpIE1hbnVlbCBGZXJyZXIgT3J0aXoKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19TUEFOSVNILCBTVUJMQU5HX05FVVRSQUwKCi8qCiAqIE1lbnUKICovCgpJRENfUkVHRURJVCBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiJkFyY2hpdm8iCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImU2FsaXIiLCAgICAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICJBJnl1ZGEiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImQWNlcmNhIGRlLi4uIiwgICAgICAgICAgICAgICBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgpJRFJfUkVHRURJVF9NRU5VIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICImUmVnaXN0cm8iCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImSW1wb3J0YXIgYXJjaGl2byBkZSByZWdpc3Ryby4uLiIsIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNICImRXhwb3J0YXIgYXJjaGl2byBkZSByZWdpc3Ryby4uLiIsIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQ29uZWN0YXIgcmVnaXN0cm8gZGUgcmVkLi4uIiwgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIiZEZXNjb25lY3RhciByZWdpc3RybyBkZSByZWQuLi4iLCBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiSW0mcHJpbWlyXHRDdHJsK1AiLCAgICAgICAgICAgSURfUkVHSVNUUllfUFJJTlQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJTJmFsaXIiLCAgICAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICImRWRpdGFyIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJk1vZGlmaWNhciIsICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBQT1BVUCAiJk51ZXZvIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImQ2xhdmUiLCAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxvciBkZSBjJmFkZW5hIiwgICAgICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiVmFsb3IgJmJpbmFyaW8iLCAgICAgICAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIlZhbG9yICZEV09SRCIsICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkVsaW1pbmFyXHREZWwiLCAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJlJlbm9tYnJhclx0RjIiLCAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkNvcGlhciB2YWxvciBkZSBsYSBjbGF2ZSIsICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQnVzY2FyXHRDdHJsK0YiLCAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICJCdXNjYXIgJnNpZ3VpZW50ZVx0RjMiLCAgICAgICBJRF9FRElUX0ZJTkRORVhULCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIiZWZXIiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImQmFycmEgZGUgZXN0YWRvIiwgICAgICAgICAgICBJRF9WSUVXX1NUQVRVU0JBUgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU2VwYXJhciIsICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZBY3R1YWxpemFyXHRGNSIsICAgICAgICAgICAgIElEX1ZJRVdfUkVGUkVTSAogICAgRU5ECiAgICBQT1BVUCAiJkZhdm9yaXRvcyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZB8WFkaXIgYSBGYXZvcml0b3MiLCAgICAgICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUwogICAgICAgICwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIiZFbGltaW5hciBGYXZvcml0byIsICAgICAgICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURQogICAgICAgICwgR1JBWUVECiAgICBFTkQKICAgIFBPUFVQICJBJnl1ZGEiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImVGVtYXMgZGUgYXl1ZGFcdEYxIiwgICAgICAgICBJRF9IRUxQX0hFTFBUT1BJQ1MKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkFjZXJjYSBkZWwgRWRpdG9yIGRlIHJlZ2lzdHJvIiwgSURfSEVMUF9BQk9VVAogICAgRU5ECkVORAoKSURSX1BPUFVQX01FTlVTIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICBQT1BVUCAiIgogIEJFR0lOCglNRU5VSVRFTSAiJk1vZGlmaWNhciIgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKCU1FTlVJVEVNICJNb2RpZmljYXIgZGF0b3MgYmluYXJpb3MiLCAgICBJRF9FRElUX01PRElGWV9CSU4KCU1FTlVJVEVNIFNFUEFSQVRPUgoJTUVOVUlURU0gIiZFbGltaW5hclx0RGVsIiwgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCglNRU5VSVRFTSAiJlJlbm9tYnJhciIsICAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICBFTkQKICBQT1BVUCAiIgogIEJFR0lOCglQT1BVUCAiJk51ZXZvIgoJQkVHSU4KCQlNRU5VSVRFTSAiJkNsYXZlIiwgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJWYWxvciBkZSAmY2FkZW5hIiwgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKCQlNRU5VSVRFTSAiVmFsb3IgJmJpbmFyaW8iLCAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCgkJTUVOVUlURU0gIlZhbG9yICZEV09SRCIsICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCglFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkVsaW1pbmFyXHREZWwiLCAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJlJlbm9tYnJhclx0RjIiLCAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkNvcGlhciB2YWxvciBkZSBsYSBjbGF2ZSIsICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQnVzY2FyXHRDdHJsK0YiLCAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogIEVORApFTkQKCi8qCiAqIERpYWxvZwogKi8KCklERF9BQk9VVEJPWCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjMwLCA3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiQWNlcmNhIGRlIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBJQ09OICAgICAgICAgICAgSURJX1JFR0VESVQsSURJX1JFR0VESVQsMTQsOSwxNiwxNgogICAgTFRFWFQgICAgICAgICAgICJSZWFjdE9TIHJlZ2VkaXQgVmVyc2nzbiAxLjAiLElEQ19TVEFUSUMsNDksMTAsMTE5LDgsCiAgICAgICAgICAgICAgICAgICAgU1NfTk9QUkVGSVgKICAgIExURVhUICAgICAgICAgICAiQ29weXJpZ2h0IChDKSAyMDAyIEVxdWlwbyBSZWFjdE9TIixJRENfU1RBVElDLDQ5LDIwLDExOSw4CiAgICBERUZQVVNIQlVUVE9OICAgIkFjZXB0YXIiLElET0ssMTk1LDYsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9TVFJJTkcgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNzUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkVkaXRhciBjYWRlbmEiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTm9tYnJlIGRlbCB2YWxvcjoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJEYXRvcyBkZWwgdmFsb3I6IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgREVGUFVTSEJVVFRPTiAgICJBY2VwdGFyIixJRE9LLDE0MCw2MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICJDYW5jZWxhciIsSURDQU5DRUwsMTc1LDYwLDMwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfRFdPUkQgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJFZGl0YXIgY2FkZW5hIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIk5vbWJyZSBkZWwgdmFsb3I6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiRGF0b3MgZGVsIHZhbG9yOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDkwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIkJhc2UiLCBJRENfRFdPUkRfQkFTRSwgMTIwLCAzMCwgODUsIDM3LCBCU19HUk9VUEJPWAogICAgQVVUT1JBRElPQlVUVE9OICJIZXhhZGVjaW1hbCIsIElEQ19EV09SRF9IRVgsIDEzMCwgNDAsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgQVVUT1JBRElPQlVUVE9OICJEZWNpbWFsIiwgSURDX0RXT1JEX0RFQywgMTMwLCA1MiwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBERUZQVVNIQlVUVE9OICAgIkFjZXB0YXIiLElET0ssMTQwLDgwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIkNhbmNlbGFyIixJRENBTkNFTCwxNzUsODAsMzAsMTEsV1NfR1JPVVAKRU5ECgovKgogKiBTdHJpbmcgVGFibGUKICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0xJU1RfQ09MVU1OX05BTUUgICAgIk5vbWJyZSIKICAgIElEU19MSVNUX0NPTFVNTl9UWVBFICAgICJUaXBvIgogICAgSURTX0xJU1RfQ09MVU1OX0RBVEEgICAgIkRhdG9zIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQVBQX1RJVExFICAgICAgICAgICAiRWRpdG9yIGRlbCByZWdpc3RybyIKICAgIElEQ19SRUdFRElUICAgICAgICAgICAgICJSRUdFRElUIgogICAgSURDX1JFR0VESVRfRlJBTUUgICAgICAgIlJFR0VESVRfRlJBTUUiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX01FTlUgICAgICAgICJDb250aWVuZSBjb21hbmRvcyBwYXJhIHRyYWJhamFyIGNvbiBlbCByZWdpc3RybyBjb21wbGV0byIKICAgIElEX0VESVRfTUVOVSAgICAgICAgICAgICJDb250aWVuZSBjb21hbmRvcyBwYXJhIGVkaXRhciB2YWxvcmVzIG8gY2xhdmVzIgogICAgSURfVklFV19NRU5VICAgICAgICAgICAgIkNvbnRpZW5lIGNvbWFuZG9zIHBhcmEgcGVyc29uYWxpemFyIGxhIHZlbnRhbmEgZGUgcmVnaXN0cm8iCiAgICBJRF9GQVZPUklURVNfTUVOVSAgICAgICAiQ29udGllbmUgY29tYW5kb3MgcGFyYSBhY2NlZGVyIGEgY2xhdmVzIHVzYWRhcyBmcmVjdWVudGVtZW50ZSIKICAgIElEX0hFTFBfTUVOVSAgICAgICAgICAgICJDb250aWVuZSBjb21hbmRvcyBwYXJhIG1vc3RyYXIgYXl1ZGEgZSBpbmZvcm1hY2nzbiBzb2JyZSBlbCBlZGl0b3IgZGUgcmVnaXN0cm8iCiAgICBJRF9FRElUX05FV19NRU5VICAgICAgICAiQ29udGllbmUgY29tYW5kb3MgcGFyYSBjcmVhciBudWV2YXMgY2xhdmVzIG8gdmFsb3JlcyIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfRURJVF9NT0RJRlkgICAgICAgICAgIk1vZGlmaWNhIGxvcyBkYXRvcyBkZWwgdmFsb3IiCiAgICBJRF9FRElUX05FV19LRVkgICAgICAgICAiQfFhZGUgdW5hIG51ZXZhIGNsYXZlIgogICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUgIkHxYWRlIHVuIG51ZXZvIHZhbG9yIGRlIGNhZGVuYSIKICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFICJB8WFkZSB1biBudWV2byB2YWxvciBiaW5hcmlvIgogICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRSAgIkHxYWRlIHVuIG51ZXZvIHZhbG9yIGRlIGRvYmxlIHBhbGFicmEiCiAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUgIkltcG9ydGEgdW4gYXJjaGl2byBkZSB0ZXh0byBhbCByZWdpc3RybyIKICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cG9ydGEgdG9kbyBvIHBhcnRlIGRlbCByZWdpc3RybyBhIHVuIGFyY2hpdm8gZGUgdGV4dG8iCiAgICBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2UgY29uZWN0YSBhbCByZWdpc3RybyBkZSB1biBvcmRlbmFkb3IgcmVtb3RvIgogICAgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNlIGRlc2NvbmVjdGEgZGVsIHJlZ2lzdHJvIGRlIHVuIG9yZGVuYWRvciByZW1vdG8iCiAgICBJRF9SRUdJU1RSWV9QUklOVCAgICAgICAiSW1wcmltZSB0b2RvIG8gcGFydGUgZGVsIHJlZ2lzdHJvIgovKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAiT3BlbnMgcmVnaXN0cnkgZWRpdG9yIGhlbHAiICovCiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAiTXVlc3RyYSBpbmZvcm1hY2nzbiBkZWwgcHJvZ3JhbWEsIG76bWVybyBkZSB2ZXJzafNuIHkgZGVyZWNob3MgZGUgYXV0b3IiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX0VYSVQgICAgICAgICJTYWxlIGRlbCBlZGl0b3IgZGUgcmVnaXN0cm8iCiAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMgIkHxYWRlIGNsYXZlcyBhIGxhIGxpc3RhIGRlIGZhdm9yaXRvcyIKICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURSAiRWxpbWluYSBjbGF2ZXMgZGUgbGEgbGlzdGEgZGUgZmF2b3JpdG9zIgogICAgSURfVklFV19TVEFUVVNCQVIgICAgICAgIk11ZXN0cmEgdSBvY3VsdGEgbGEgYmFycmEgZGUgZXN0YWRvIgogICAgSURfVklFV19TUExJVCAgICAgICAgICAgIkNhbWJpYSBsYSBwb3NpY2nzbiBkZWwgc2VwYXJhZG9yIGVudHJlIGRvcyBwYW5lbGVzIgogICAgSURfVklFV19SRUZSRVNIICAgICAgICAgIkFjdHVhbGl6YSBsYSB2ZW50YW5hIgogICAgSURfRURJVF9ERUxFVEUgICAgICAgICAgIkVsaW1pbmEgbGEgc2VsZWNjafNuIgogICAgSURfRURJVF9SRU5BTUUgICAgICAgICAgIlJlbm9tYnJhIGxhIHNlbGVjY2nzbiIKICAgIElEX0VESVRfQ09QWUtFWU5BTUUgICAgICJDb3BpYSBlbCBub21icmUgZGUgbGEgY2xhdmUgc2VsZWNjaW9uYWRhIGFsIHBvcnRhcGFwZWxlcyIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICJCdXNjYSB1bmEgY2FkZW5hIGRlIHRleHRvIGVuIHVuYSBjbGF2ZSwgdmFsb3IgbyBkYXRvcyIKICAgIElEX0VESVRfRklORE5FWFQgICAgICAgICJCdXNjYSBsYSBzaWd1aWVudGUgb2N1cnJlbmNpYSBkZWwgdGV4dG8gZXNwZWNpZmljYWRvIGVuIGxhIGL6c3F1ZWRhIGFudGVyaW9yIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRVJST1IgICAgICAgICAgICAgICAiRXJyb3IiCiAgICBJRFNfQkFEX0tFWSAgICAgICAgICAgICAiTm8gc2UgcHVlZGUgY29uc3VsdGFyIGxhIGNsYXZlICclcyciCiAgICBJRFNfQkFEX1ZBTFVFICAgICAgICAgICAiTm8gc2UgcHVlZGUgY29uc3VsdGFyIGVsIHZhbG9yICclcyciCiAgICBJRFNfVU5TVVBQT1JURURfVFlQRSAgICAiTm8gc2UgcHVlZGVuIGVkaXRhciBjbGF2ZXMgZGUgZXN0ZSB0aXBvICglbGQpIgogICAgSURTX1RPT19CSUdfVkFMVUUgICAgICAgIkVsIHZhbG9yIGVzIGRlbWFzaWFkbyBncmFuZGUgKCVsZCkiCiAgICBJRFNfREVMRVRFX0JPWF9USVRMRSAgICAiQ29uZmlybWFyIGVsaW1pbmFjafNuIGRlIHZhbG9yIgogICAgSURTX0RFTEVURV9CT1hfVEVYVCAgICAgIr9TZWd1cm8gcXVlIGRlc2VhIGVsaW1pbmFyIGVsIHZhbG9yICclcyc/IgogICAgSURTX05FV0tFWSAgICAgICAgICAgICAgIk51ZXZhIGNsYXZlICMlZCIKICAgIElEU19ORVdWQUxVRSAgICAgICAgICAgICJOdWV2byB2YWxvciAjJWQiCkVORAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCi8qCiAqIERpYWxvZwogKi8KCklERF9ESUFMT0cxIERJQUxPRyBESVNDQVJEQUJMRSAgNTAsIDUwLCAyNjgsIDk4ClNUWUxFIERTXzNETE9PSyB8IERTX0NPTlRST0wgfCBXU19DSElMRCB8IFdTX1ZJU0lCTEUgfCBXU19DTElQU0lCTElOR1MgfAogICAgV1NfQk9SREVSCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KRU5ECgpJRERfRElBTE9HMiBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDE4NywgOTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRGnhbG9nbyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgREVGUFVTSEJVVFRPTiAgICJBY2VwdGFyIixJRE9LLDEzMCw3LDUwLDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkNhbmNlbGFyIixJRENBTkNFTCwxMzAsMjQsNTAsMTQKRU5ECgoKLyoKICogVEVYVElOQ0xVREUKICovCgoxIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFCkJFR0lOCiAgICAicmVzb3VyY2UuaFwwIgpFTkQKCgoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKLyoKICpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQogKkJFR0lOCiAqICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICJPcGVucyBSZWdpc3RyeSBFZGl0b3IgSGVscC4iCiAqICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICJEaXNwbGF5cyBwcm9ncmFtIGluZm9ybWF0aW9uLCB2ZXJzaW9uIG51bWJlciwgYW5kIGNvcHlyaWdodC4iCiAqRU5ECiAqLwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwo=