KioqKioqQ29uZm9ybWFuY2UgVGVzdC1zdWl0ZSoqKioqKioqKioqKioqKioqKioqKioqKioqCk9GLVN3aXRjaC0xLjAuMC1UZXN0Q2FzZXMgZGV0YWlsZWQgdGVzdGluZyBtZXRob2RvbG9neQoKCiMjIyMjIE9wZW5mbG93IHByb3RvY29sIG1lc3NhZ2VzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCjEuIEZlYXR1cmVzIFJlcXVlc3QKClRlc3QgRGVzY3JpcHRpb246IENoZWNrIGZlYXR1cmVzIHJlcXVlc3QgaXMgaW1wbGVtZW50ZWQKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogZmVhdHVyZXNfcmVxdWVzdApQb3J0czogSSAoQ29udHJvbCBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKClRlc3QgTm90ZXM6IAphKSBTZW5kIE9GUFRfRkVBVFVSRVNfUkVRVUVTVCBmcm9tIGNvbnRyb2xsZXIuCmMpIFZlcmlmeSBPRlBUX0ZFQVRVUkVTX1JFUExZIGlzIHJlY2VpdmVkIHdpdGhvdXQgZXJyb3JzCgoKMi4gQ29uZmlndXJhdGlvbiByZXF1ZXN0CgpUZXN0IERlc2NyaXB0aW9uOiBDaGVjayBiYXNpYyBnZXQgY29uZmlndXJhdGlvbiByZXF1ZXN0IGlzIGltcGxlbWVudGVkClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6IGNvbmZpZ3VyYXRpb25fcmVxdWVzdApQb3J0czogSSAoQ29udHJvbCBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKClRlc3QgTm90ZXM6CmEpIFNlbmQgT0ZQVF9HRVRfQ09ORklHX1JFUVVFU1QKYykgVmVyaWZ5IE9GUFRfR0VUX0NPTkZJR19SRVBMWSBpcyByZWNlaXZlZCB3aXRob3V0IGVycm9ycy4KCgozLiBNb2RpZnkgU3RhdGUgKEFERCkKClRlc3QgRGVzY3JpcHRpb246IENoZWNrIGJhc2ljIEZsb3cgQUREIHJlcXVlc3QgaXMgaW1wbGVtZW50ZWQKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogbW9kaWZ5X3N0YXRlX2FkZApQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgZGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIFNldHVwClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKVGVzdCBOb3RlczoKYSkgU2VuZCBPRlBUX0ZMT1dfTU9ELCBjb21tYW5kID0gT0ZQRkNfQUREIApiKSBTZW5kIG9mcF90YWJsZV9zdGF0cyByZXF1ZXN0IApjKSBWZXJpZnkgdGhhdCBhY3RpdmVfY291bnQ9MSBpbiB0aGUgcmVwbHkKCjQuIE1vZGlmeSBTdGF0ZSAoREVMRVRFKQoKVGVzdCBEZXNjcmlwdGlvbjogQ2hlY2sgYmFzaWMgRmxvdyBEZWxldGUgcmVxdWVzdCBpcyBpbXBsZW1lbnRlZApUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiBtb2RpZnlfc3RhdGVfZGVsZXRlClBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBkYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gU2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgpUZXN0IE5vdGVzOgphKSBTZW5kIE9GUFRfRkxPV19NT0QsIGNvbW1hbmQgPSBPRlBGQ19BREQgCmIpIFNlbmQgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QKYykgVmVyaWZ5IHRoYXQgYWN0aXZlX2NvdW50PTEgaW4gdGhlIHJlcGx5CmQpIFNlbmQgT0ZQVF9GTE9XX01PRCwgY29tbWFuZCA9IE9GUEZDX0RFTEVURQplKSBTZW5kIG9mcF90YWJsZV9zdGF0cyByZXF1ZXN0CmYpICBWZXJpZnkgYWN0aXZlIF9jb3VudD0wIGluIHRoZSByZXBseQoKNS4gTW9kaWZ5IFN0YXRlIChNT0RJRlkpCgpUZXN0IERlc2NyaXB0aW9uOiBDaGVjayBiYXNpYyBGbG93IE1vZGlmeSByZXF1ZXN0IGlzIGltcGxlbWVudGVkClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6IG1vZGlmeV9zdGF0ZV9tb2RpZnkKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSBhbmQgMiBEYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gU2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgpUZXN0IE5vdGVzOgphKSBTZW5kICBPRlBUX0ZMT1dfTU9EICwgY29tbWFuZCA9IE9GUEZDX0FERCwgYWN0aW9uIEEKYikgU2VuZCBvZnBfdGFibGVfc3RhdHMgcmVxdWVzdCwgVmVyaWZ5ICBhY3RpdmVfY291bnQ9MQpjKSBTZW5kIE9GUFRfRkxPV19NT0QgLCBjb21tYW5kID0gT0ZQRkNfTU9ESUZZLCBhY3Rpb24gQZIKZCkgU2VuZCBUZXN0IFBhY2tldCAgbWF0Y2hpbmcgdGhlIGZsb3cKZSkgVmVyaWZ5IHBhY2tldCBpbXBsZW1lbnRzIGFjdGlvbiBBkgoKCgo2LiBSZWFkIFN0YXRlCgpUZXN0IERlc2NyaXB0aW9uOiBDaGVjayBiYXNpYyBSZWFkIFN0YXRlIGlzIGltcGxlbWVudGVkClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6IHJlYWRfc3RhdGUKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSwgMiBkYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gU2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgpUZXN0IE5vdGVzOgphKSBTZW5kICBPRlBUX0ZMT1dfTU9ELCBjb21tYW5kID0gT0ZQRkNfQURECmIpIENyZWF0ZSBhIE9GUENfRkxPV19TVEFUUyBtZXNzYWdlIGFuZCBzZW5kIGl0CmMpIFZlcmlmeSBzd2l0Y2ggcmVwbGllcyB3aXRob3V0IGVycm9ycwoKNy4gU2VuZCBwYWNrZXQKClRlc3QgRGVzY3JpcHRpb246IENoZWNrIGJhc2ljIFNlbmQtUGFja2V0IGlzIGltcGxlbWVudGVkLiAKU2VuZC1QYWNrZXQ6IFRoZXNlIGFyZSB1c2VkIGJ5IHRoZSBjb250cm9sbGVyIHRvIHNlbmQgcGFja2V0cyBvdXQgb2YgYSBzcGVjaWZpZWQgcG9ydCBvbiB0aGUgc3dpdGNoLgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgc2VuZF9wYWNrZXQKUG9ydHM6IDUgKDEgQ29udHJvbCBQbGFuZSwgNCBEYXRhcGxhbmUpIApJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIFNldHVwClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKClRlc3QgTm90ZXM6CmEpIFNlbmQgT0ZQVF9QQUNLRVRfT1VUIG91dCBtZXNzYWdlIGZyb20gY29udHJvbGxlciB0byBzd2l0Y2ggZm9yIGV2ZXJ5IGRhdGFwbGFuZSBwb3J0LgpiKSBWZXJpZnkgdGhlIHBhY2tldCBhcHBlYXJzIG9uIHRoZSBlYWNoIGRhdGFwbGFuZSBwb3J0CmMpIFZlcmlmeSBzZW50IHBhY2tldCBtYXRjaGVzIHRoZSByZWNlaXZlZCBwYWNrZXQKICAgIAo4LiBCYXJyaWVyIFJlcXVlc3QgCgpUZXN0IERlc2NyaXB0aW9uOiBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBiYXNpYyBiYXJyaWVyIHJlcXVlc3QgZG9lcyBub3QgZ2VuZXJhdGUgYW4gZXJyb3IuClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6IGJhcnJpZXJfcmVxdWVzdF9yZXBseQpQb3J0czogSSAoQ29udHJvbCBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKClRlc3QgTm90ZXM6CgphKSBTZW5kIE9GUFRfQkFSUklFUl9SRVFVRVNUCmMpIFZlcmlmeSBPRlBUX0JBUlJJRVJfUkVQTFkgaXMgcmVjZWl2ZWQgb24gdGhlIGNvbnRyb2wgcGxhbmUuCgoKOS4gUGFja2V0IEluCgpUZXN0IERlc2NyaXB0aW9uOiBDaGVjayBwYWNrZXRfaW4gaXMgaW1wbGVtZW50ZWQuIFRoaXMgdGVzdCBqdXN0IGNoZWNrcyB0aGF0IG5vbiBtYXRjaGVkIGRhdGFwbGFuZSBwYWNrZXRzIGdlbmVyYXRlIGEgcGFja2V0X2luClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6IHBhY2tldF9JbgpQb3J0czogMiAoMSBDb250cm9sIFBsYW5lIGFuZCAxIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKClRlc3QgTm90ZXM6CmEpIFNlbmQgYSBwYWNrZXQgdG8gZGF0YXBsYW5lIHBvcnQgLCB3aXRob3V0IGluc2VydGluZyBhIGZsb3cgZW50cnkKYikgVmVyaWZ5IGEgT0ZQVF9QQUNLRVRfSU4gaXMgZ2VuZXJhdGVkIG9uIHRoZSBjb250cm9sIHBsYW5lCgoKMTAuIEhlbGxvCgpUZXN0IERlc2NyaXB0aW9uOiBUaGlzIHRlc3QgY2hlY2tzIGZvciBiYXNpYyBIZWxsbyBtZXNzYWdlIGdlbmVyYXRpb24gd2l0aCBjb3JyZWN0IHZlcnNpb24gZmllbGQuClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBoZWxsbwpQb3J0czogMSAoQ29udHJvbCBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKClRlc3QgTm90ZXM6CmEpIFNlbmQgIE9GUFRfSEVMTE8gZnJvbSBjb250cm9sbGVyIHRvIHN3aXRjaApiKSBWZXJpZnkgc3dpdGNoIGFsc28gc2VuZHMgT0ZQVF9IRUxMTyBtZXNzYWdlIGluIHJlc3BvbnNlIApjKSBWZXJpZnkgdmVyc2lvbiBmaWVsZCBpbiB0aGUgaGVsbG8gbWVzc2FnZSBpcyBzZXQgdG8gT3BlbmZsb3cgdmVyc2lvbiAxLjAuMAoKMTEuIEVjaG8KClRlc3QgRGVzY3JpcHRpb246IFRoaXMgdGVzdCBjaGVja3MgZm9yIGJhc2ljIEVjaG8gUmVwbHkgbWVzc2FnZSBnZW5lcmF0aW9uIHdpdGggY29ycmVjdCB2ZXJzaW9uIGZpZWxkIHdpdGggc2FtZSB0cmFuc2FjdGlvbiBpZC4KVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogIGVjaG9fd2l0aG91dF9ib2R5ClBvcnRzOiAxIChDb250cm9sIFBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKVGVzdCBOb3RlczoKYSkgU2VuZCBPRlBUX0VDSE9fUkVRVUVTVCBmcm9tIHRoZSBjb250cm9sbGVyIHNpZGUuCmIpIFZlcmlmeSBzd2l0Y2ggcmVzcG9uZHMgYmFjayB3aXRoIE9GUFRfRUNIT19SRVBMWSB3aXRoIHNhbWUgeGlkLgpjKSBWZXJpZnkgT3BlbmZsb3cgdmVyc2lvbiBpbiBoZWFkZXIgaXMgc2V0IHRvIE9wZW5mbG93IHZlcnNpb24gMS4wLjAuCgoKCiMjIyMjIyMjIyMjIyMgIERldGFpbGVkIGNvbnRyb2xsZXIgdG8gc3dpdGNoIG1lc3NhZ2VzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCjEuIE92ZXJsYXAgY2hlY2tpbmcKClRlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IGlmIG92ZXJsYXAgY2hlY2sgZmxhZyBpcyBzZXQgaW4gdGhlIGZsb3cgZW50cnkgYW5kIGFuIG92ZXJsYXBwaW5nIGZsb3cgaXMgaW5zZXJ0ZWQgdGhlbiBhbiBlcnJvciBpcyBnZW5lcmF0ZWQgYW5kIHN3aXRjaCByZWZ1c2VzIGZsb3cgZW50cnkKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogIG92ZXJsYXBfY2hlY2tpbmcKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIGRhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKClRlc3QtTm90ZXM6CgphKSBHZW5lcmF0ZSBGbG93IEYxLS0+IFdpbGRjYXJkIEFsbCAKYikgU2VuZCBvZnBfdGFibGVfc3RhdHMgcmVxdWVzdCAsIHZlcmlmeSBhY3RpdmVfY291bnQ9MQpjKSBHZW5lcmF0ZSBvdmVybGFwcGluZyBmbG93IEYyIC0tPiBXaWxkY2FyZCBBbGwgRXhjZXB0IEluZ3Jlc3MgUG9ydCAoIHdpdGggZmxhZyBPRlBGRl9DSEVDS19PVkVSTEFQIHNldCkKZCkgVmVyaWZ5IHRoYXQgc3dpdGNoIGdlbmVyYXRlcyBPRlBUX0VSUk9SIG1zZy4gIApUeXBlOiBPRlBFVF9GTE9XX01PRF9GQUlMRUQgY29kZSA6IE9GUEZNRkNfT1ZFUkxBUCAKCjIuIE5vIG92ZXJsYXAgY2hlY2tpbmcKClRlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IHdpdGhvdXQgb3ZlcmxhcCBjaGVjayBmbGFnIHNldCwgb3ZlcmxhcHBpbmcgZmxvd3MgY2FuIGJlIGNyZWF0ZWQuClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBub19vdmVybGFwX2NoZWNraW5nClBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUsIDIgRGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKVGVzdCBOb3RlczoKCmEpIEdlbmVyYXRlIEZsb3cgRjEtLT4gV2lsZGNhcmQgQWxsLgpiKSBTZW5kIG9mcF90YWJsZV9zdGF0cyByZXF1ZXN0ICwgdmVyaWZ5IGFjdGl2ZV9jb3VudD0xCmUpIEdlbmVyYXRlIG92ZXJsYXBwaW5nIGZsb3cgRjIgLS0+IFdpbGRjYXJkIEFsbCBFeGNlcHQgSW5ncmVzcyBQb3J0ICggd2l0aG91dCBmbGFnIE9GUEZGX0NIRUNLX09WRVJMQVAgc2V0KQpjKSBTZW5kIGEgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QsIHZlcmlmeSBhY3RpdmVfY291bnQ9MgoKMy4gSWRlbnRpY2FsIGZsb3dzIAoKVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgYWRkaW5nIHR3byBpZGVudGljYWwgZmxvd3Mgb3ZlcndyaXRlcyB0aGUgZXhpc3Rpbmcgb25lIGFuZCBjbGVhcnMgY291bnRlcnMKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogIGlkZW50aWNhbF9mbG93cwpQb3J0czogMyAoMSBDb250cm9sIFBsYW5lKSwgKDIgZGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKVGVzdCBOb3RlczoKCmEpIEdlbmVyYXRlIEZsb3cgRjEuCmIpIFNlbmQgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QgLCB2ZXJpZnkgYWN0aXZlX2NvdW50PTEKYikgICBJbmNyZW1lbnQgY291bnRlcnMgKHBhY2tldF9jb3VudCwgYnl0ZV9jb3VudCkgYnkgc2VuZGluZyBhIHBhY2tldCBtYXRjaGluZyBmbG93IEYxLgpDKSAgIFNlbmQgb2ZwX2Zsb3dfc3RhdHMgcmVxdWVzdC4gVmVyaWZ5IGZsb3cgY291bnRlcnM6IGJ5dGVfY291bnQgYW5kIHBhY2tldF9jb3VudCAKYykgICBDcmVhdGUgaWRlbnRpY2FsIGZsb3cgRjIKZCkgICBTZW5kIGEgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QsIHZlcmlmeSBhY3RpdmVfY291bnQ9MQplKSAgIFNlbmQgb2ZwX2Zsb3dfc3RhdHMgcmVxdWVzdC4gVmVyaWZ5IGZsb3cgY291bnRlcnM6IGJ5dGVfY291bnQgYW5kIHBhY2tldF9jb3VudCBhcmUgcmVzZXQKCgoKNC4gTm8gdGFibGUgdG8gYWRkIChXcml0dGVuIGluIG9mdGVzdJdOZWVkIHRvIGFkZCB0byBjb25mb3JtYW5jZSBUZXN0LVN1aXRlcykKCjUuIE5ldmVyIHZhbGlkIHBvcnQgKFRCRCkKCjYuIEN1cnJlbnRseSBub3QgZXhpc3RpbmcgcG9ydCBWZXJzaW9uIEEgYW5kIEIgKFRCRCkKCjcuIEVtZXJnZW5jeSBmbG93IHdpdGggdGltZW91dCB2YWx1ZXMgCgpUZXN0IERlc2NyaXB0aW9uOiBUaW1lb3V0IHZhbHVlcyBhcmUgbm90IGFsbG93ZWQgZm9yIGVtZXJnZW5jeSBmbG93cwpUZXN0IFRpdGxlOiBlbWVyX2Zsb3dfd2l0aF90aW1lb3V0ClRlc3QgbW9kZTogQXV0b21hdGVkClBvcnRzOiAzICgxIGNvbnRyb2wgcGxhbmUsIDIgRGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwIAoKVGVzdCBOb3RlczoKCmEpICBHZW5lcmF0ZSBhIGZsb3cgRiB3aXRoIE9GUEZGX0VNRVJHIHNldCBpbiBmbGFnIGFuZCB0aW1lb3V0IHZhbHVlcyBhc3NpZ25lZC4KYikgIFZlcmlmeSBzd2l0Y2ggZ2VuZXJhdGVzIGFuIE9GUFRfRVJST1IgbXNnLCBUeXBlOiBPRlBFVF9GTE9XX01PRF9GQUlMRUQsIENvZGUgT0ZQRk1GQ19CQURfRU1FUkdfVElNRU9VVAoKCjguIE1pc3NpbmcgbW9kaWZ5IGFkZHMKClRlc3QgRGVzY3JpcHRpb246IElmIGEgbW9kaWZ5IGRvZXMgbm90IG1hdGNoIGFuIGV4aXN0aW5nIGZsb3csIHRoZSBmbG93IGdldHMgYWRkZWQuClRpdGxlOiBtaXNzaW5nX21vZGlmeV9hZGQKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKUG9ydHM6MyAoMSBjb250cm9sIHBsYW5lLDIgRGF0YSBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogQ29ubmVjdGlvbiBzZXR1cCwgQ2xlYXIgU3dpdGNoIFN0YXRlClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKVGVzdCBOb3RlczoKCmEpIEdlbmVyYXRlIGEgZmxvdy1tb2QgLCBjb21tYW5kIE9GUENfTU9ESUZZIChOb3RlOiBUaGVyZSBzaG91bGQgYmUgbm8gZmxvd3MgbWF0Y2hpbmcgdGhpcyBmbG93X21vZCBtb2RpZnkgY29tbWFuZCkKYikgU2VuZCBhIG9mcF90YWJsZV9zdGF0cyByZXF1ZXN0LCB2ZXJpZnkgYWN0aXZlX2NvdW50PTEKCjkuIE1vZGlmeSBjaGFuZ2VzIGFjdGlvbiwgcHJlc2VydmVzIGNvdW50ZXJzCgpUZXN0IERlc2NyaXB0aW9uOiBBIG1vZGlmaWVkIGZsb3cgcHJlc2VydmVzIGNvdW50ZXJzClRpdGxlOiBtb2RpZnlfYWN0aW9uClRlc3QgbW9kZTogQXV0b21hdGVkClBvcnRzOiA0KDEgY29udHJvbCBwbGFuZSwgMyBEYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IENvbm5lY3Rpb24gc2V0dXAsIENsZWFyIFN3aXRjaCBTdGF0ZQpUZXN0LUZpZWxkOiBNYW5kYXRvcnkKClRlc3QgTm90ZXM6CgphKSBDcmVhdGUgYSBmbG93X21vZCBGLTEgd2l0aCBjb21tYW5kIE9GUENfQURELCBhY3Rpb24gQQpiKSBTZW5kIGEgdGVzdCBQYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cKYykgU2VuZCBhbiBvZnBfZmxvd19zdGF0cyByZXF1ZXN0LCB2ZXJpZnkgYnl0ZV9jb3VudCBhbmQgcGFja2V0X2NvdW50CmUpIENyZWF0ZSBmbG93X21vZCB3aXRoIGNvbW1hbmQgT0ZQQ19NT0RJRlkgLGFjdGlvbiBBkiBhbmQgbW9kaWZ5IGFjdGlvbiBvZiBmbG93IEYtMQpmKSAgU2VuZCBhIG9mcF9mbG93X3N0YXRzIHJlcXVlc3QsIHZlcmlmeSBmbG93IGNvdW50ZXJzIGFyZSBwcmVzZXJ2ZWQKZykgU2VuZCB0ZXN0IHBhY2tldCwgdmVyaWZ5IGl0IGltcGxlbWVudHMgYWN0aW9uIEGSCgogCjEwLiBTdHJpY3QgTW9kaWZ5IGNoYW5nZXMgYWN0aW9uLCBwcmVzZXJ2ZXMgY291bnRlcnMKClRlc3QgRGVzY3JpcHRpb246IFN0cmljdCBNb2RpZnkgRmxvdyBhbHNvIGNoYW5nZXMgYWN0aW9uIHByZXNlcnZlcyBjb3VudGVycwpUaXRsZTogc3RyaWN0X21vZGlmeV9hY3Rpb24KVGVzdCBtb2RlOiBBdXRvbWF0ZWQKUG9ydHM6IDQoMSBjb250cm9sIHBsYW5lLCAzIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogQ29ubmVjdGlvbiBzZXR1cCwgQ2xlYXIgU3dpdGNoIFN0YXRlClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKVGVzdCBOb3RlczoKCmEpIENyZWF0ZSB0d28gb3ZlcmxhcHBpbmcgZmxvd3M6IEYgLS0+IE1hdGNoIG9uIGFsbCwgZXhjZXB0IG9uZSB3aWxkY2FyZGVkIChzcmMgYWRkcmVzcykuICBBY3Rpb24gQS4gUHJpb3JpdHk9MTAwIApGkiAtLT4gTWF0Y2ggb24gaW5ncmVzc19wb3J0ID0gcG9ydCBbMF0sIHdpbGRjYXJkZWQgcmVzdC4gQWN0aW9uIEEuIFByaW9yaXR5PTEwCmIpIFNlbmQgYSBvZnBfdGFibGVfc3RhdHMgcmVxdWVzdCwgdmVyaWZ5IGFjdGl2ZV9jb3VudD0yCmMpIFNlbmQgUGFja2V0IChpdCB3b3VsZCBoYXZlIG1hdGNoZWQgYm90aCB0aGUgZmxvd3MsIHNpbmNlIHRoZXkgYXJlIG92ZXJsYXBwaW5nIGZsb3dzIGJ1dCBpdCB3b3VsZCBtYXRjaCBGbG93LUYxIGFzIGl0IGhhcyBoaWdoZXIgcHJpb3JpdHkuKQpkKSBTZW5kIG9mcF9mbG93X3N0YXRzIHJlcXVlc3QgZm9yIEZsb3ctMSBhbmQgdmVyaWZ5IGNvdW50ZXJzIHBhY2tldF9jb3VudCBhbmQgYnl0ZV9jb3VudCAKZSkgQ3JlYXRlIGZsb3dfbW9kICxjb21tYW5kIE9GUENfU1RSSUNUX01PRElGWSxtYXRjaCBvbiBhbGwgZXhjZXB0IHNyYyBhZGRyZXNzICxwcmlvcml0eSAxMDAgYWN0aW9uIEGSCmYpIFNlbmQgdGVzdCBwYWNrZXQgLCB2ZXJpZnkgYWN0aW9uIGlzIG1vZGlmaWVkCmcpIFNlbmQgb2ZwX2Zsb3dfc3RhdHMgcmVxdWVzdCwgdmVyaWZ5IGNvdW50ZXJzIGFyZSBwcmVzZXJ2ZWQuCgoxMS4gRGVsZXRlIG5vbiBleGlzdGluZyBmbG93IAoKVGVzdCBEZXNjcmlwdGlvbjogUmVxdWVzdCBkZWxldGlvbiBvZiBub24tZXhpc3RpbmcgZmxvdwpUaXRsZTogZGVsZXRlX25vbmV4aXN0aW5nX2Zsb3cKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKUG9ydHM6IDEoMSBjb250cm9sIHBsYW5lKQpJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgpUZXN0IE5vdGVzOgoKYSkgSXNzdWUgYSBkZWxldGUgY29tbWFuZCwgd2l0aCBubyBmbG93cyBpbnNlcnRlZApiKSBNYWtlIHN1cmUgbm8gZXJyb3IgaXMgZ2VuZXJhdGVkIG9uIHRoZSBjb250cm9sIHBsYW5lCgoxMi4gRGVsZXRlIGZsb3dzIHdpdGggYW5kIHdpdGhvdXQgcmVtb3ZlZCBtZXNzYWdlCgpUZXN0IERlc2NyaXB0aW9uOiBDaGVjayBkZWxldGlvbiBvZiBmbG93cyBoYXBwZW5zIGFuZCBnZW5lcmF0ZXMgbWVzc2FnZXMgYXMgY29uZmlndXJlZC4KSS5lLiBpZiCRU2VuZCBGbG93IHJlbW92ZWQgbWVzc2FnZZIgRmxhZyBpcyBzZXQgaW4gdGhlIGZsb3cgZW50cnksIHRoZSBmbG93IGRlbGV0aW9uIG9mIHRoYXQgcmVzcGVjdGl2ZSBmbG93IHNob3VsZCBnZW5lcmF0ZSB0aGUgZmxvdyByZW1vdmVkIG1lc3NhZ2UsIHZpY2UgdmVyc2EgYWxzbyBleGlzdHMgClRlc3QgVGl0bGU6IFNlbmRfRmxvd19SZW0KVGVzdCBtb2RlOiBBdXRvbWF0ZWQKUG9ydHM6IDMgKDEgY29udHJvbCBwbGFuZSwgMiBEYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IENvbm5lY3Rpb24gc2V0dXAsIERlZmF1bHQgKGNsZWFyIHN3aXRjaCBzdGF0ZSkKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgpUZXN0IE5vdGVzOgoKYSkgR2VuZXJhdGUgYSBmbG93IEYgd2l0aG91dCBPRlBGRl9TRU5EX0ZMT1dfUkVNIGZsYWcgc2V0CmIpIElzc3VlIGEgZGVsZXRlIGNvbW1hbmQgT0ZQRkNfREVMRVRFCmMpIFZlcmlmeSB0aGF0IE9GUFRfRkxPV19SRU1PVkVEIG1lc3NhZ2UgaXMgbm90IGdlbmVyYXRlZC4KYykgR2VuZXJhdGUgYSBmbG93IEaSIHdpdGggT0ZQRkZfU0VORF9GTE9XX1JFTSBmbGFnIHNldApkKSBJc3N1ZSBhIGRlbGV0ZSBjb21tYW5kIE9GUEZDX0RFTEVURQplKSBWZXJpZnkgdGhhdCBPRlBUX0ZMT1dfUkVNT1ZFRCBtZXNzYWdlIGlzIGdlbmVyYXRlZAoKCgoxMy4gRGVsZXRlIGVtZXJnZW5jeSBmbG93IAoKVGVzdCBEZXNjcmlwdGlvbjogRGVsZXRlIGVtZXJnZW5jeSBmbG93IGFuZCB2ZXJpZnkgbm8gbWVzc2FnZSBpcyBnZW5lcmF0ZWQuCkFuIGVtZXJnZW5jeSBmbG93IGRlbGV0aW9uIHdpbGwgbm90IGdlbmVyYXRlIGZsb3ctcmVtb3ZlZCBtZXNzYWdlcyBldmVuIGlmIJFTZW5kIEZsb3cgcmVtb3ZlZCBtZXNzYWdlkiBmbGFnIHdhcyBzZXQgZHVyaW5nIHRoZSBlbWVyZ2VuY3kgZmxvdyBlbnRyeS4KVGl0bGU6IGRlbGV0ZV9lbWVyX2Zsb3cKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKUG9ydHM6IDMgKDEgY29udHJvbCBwbGFuZSwgMiBEYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IENvbm5lY3Rpb24gc2V0dXAsIENsZWFyIFN3aXRjaCBTdGF0ZSAoZGVmYXVsdCkgCgpUZXN0LU5vdGVzOgoKYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIE9GUEZGX0VNRVJHIGZsYWcgc2V0LgpiKSBEZWxldGUgdGhlIGFkZGVkIGZsb3cgd2l0aCBPRlBGRl9TRU5EX0ZMT1dfUkVNIGZsYWcgc2V0CmMpIFRlc3Qgc3VjY2Vzc2Z1bCBpZiBubyBmbG93IHJlbW92ZWQgbWVzc2FnZSBpcyBnZW5lcmF0ZWQuCiAgICAKCjE0LiBEZWxldGUgYW5kIHZlcmlmeSBzdHJpY3QgYW5kIG5vbi1zdHJpY3QgCgpUZXN0IERlc2NyaXB0aW9uOiBEZWxldGUgYW5kIHZlcmlmeSBzdHJpY3QgYW5kIG5vbi1zdHJpY3QgYmVoYXZpb3JzClRoaXMgdGVzdCBjb21wYXJlcyB0aGUgYmVoYXZpb3Igb2YgZGVsZXRlIHN0cmljdCBhbmQgbm9uLXN0cmljdC4KVGl0bGU6IGRlbGV0ZV9zdHJpY3Rfbm9uc3RyaWN0ClRlc3QgbW9kZTogQXV0b21hdGVkClBvcnRzOiAzICgxIGNvbnRyb2wgcGxhbmUsIDIgZGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUKClRlc3QtTm90ZXM6CgphKSBJbnNlcnQgRmxvdyBGIHdpdGggYW4gZXhhY3QgbWF0Y2guIApiKSAgSXNzdWUgTm9uLXN0cmljdCBEZWxldGUgY29tbWFuZCwgdmVyaWZ5IEYgZ2V0cyBkZWxldGVkLiAKYykgIEluc2VydCBGIHdpdGggYW4gZXhhY3QgTWF0Y2ggCmQpICBJc3N1ZSBTdHJpY3QgRGVsZXRlIENvbW1hbmQsIHZlcmlmeSBGIGdldHMgZGVsZXRlZC4KZSkgIEluc2VydCBGbG93IFQgd2l0aCBtYXRjaCBvbiBhbGwsIGV4Y2VwdCBvbmUgd2lsZGNhcmRlZCAoc2F5IHNyYyBhZGRyZXNzKS4gIApmKSAgSW5zZXJ0IGFub3RoZXIgZmxvdyBUJyB3aXRoIG1hdGNoIG9uIGluZ3Jlc3NfcG9ydCwgd2lsZGNhcmRlZCByZXN0LiAgCmcpICBJc3N1ZSBOb24tc3RyaWN0IERlbGV0ZSAoIG1hdGNoIG9uIGluZ3Jlc3NfcG9ydCkuIFZlcmlmeSBUK1QnIGdldHMgZGVsZXRlZC4gCmgpICBJbnNlcnQgVCBhbmQgVCcgYWdhaW4uIElzc3VlIFN0cmljdCBEZWxldGUgKG1hdGNoIG9uIGluZ3Jlc3MgcG9ydCksIHZlcmlmeSBvbmx5IFQnIGdldHMgZGVsZXRlZAppKSAgIEluc2VydCBULCBhZGQgUHJpb3JpdHkgUCAoc2F5IDEwMCkgCmopICBJbnNlcnQgVCcgYWRkIHByaW9yaXR5ICgyMDApLiAKaykgSW5zZXJ0IFQnIGFnYWluIGFkZCBwcmlvcml0eSAzMDAgLS0+IFSUCmwpICBJc3N1ZSBOb24tU3RyaWN0IERlbGV0ZSAobWF0Y2ggb24gaW5ncmVzcyBwb3J0KS4gVmVyaWZ5IFQrVJIrVJKSIGdldHMgZGVsZXRlZC4gCm0pIEluc2VydCBULCBUkiwgVJKSIGFnYWluLCBJc3N1ZSBTdHJpY3QgRGVsZXRlIChtYXRjaCBvbiBpbmdyZXNzX3BvcnQpIHdpdGggcHJpb3JpdHkgPSAyMDAuIFZlcmlmeSBvbmx5IFSSIGdldHMgZGVsZXRlZAoKCjE1LiBEZWxldGUgZmxvd3Mgd2l0aCBjb25zdHJhaW50IG91dF9wb3J0CgpUZXN0IERlc2NyaXB0aW9uOiBEZWxldGUgZmxvd3MgZmlsdGVyZWQgYnkgYWN0aW9uIG91dHB1dApERUxFVEUgYW5kIERFTEVURSBTVFJJQ1QgY29tbWFuZHMgY2FuIGJlIG9wdGlvbmFsbHkgZmlsdGVyZWQgYnkgb3V0cHV0IHBvcnQuIElmIHRoZSBvdXRfcG9ydCBmaWVsZCBjb250YWlucyBhIHZhbHVlIG90aGVyIHRoYW4gT0ZQUF9OT05FLCBpdCBpbnRyb2R1Y2VzIGEgY29uc3RyYWludCB3aGVuIG1hdGNoaW5nLiBUaGlzIGNvbnN0cmFpbnQgaXMgdGhhdCB0aGUgcnVsZSBtdXN0IGNvbnRhaW4gYW4gb3V0cHV0IGFjdGlvbiBkaXJlY3RlZCBhdCB0aGF0IHBvcnQuCgpUaXRsZTogZGVsZXRlX3dpdGhfb3V0cG9ydApUZXN0IG1vZGU6IEF1dG9tYXRlZApQb3J0czogMyAoMSBjb250cm9sIHBsYW5lLCAyIERhdGFwbGFuZXMpCkluaXRpYWwgU3RhdGU6IENvbm5lY3Rpb24gc2V0dXAsIENsZWFyIFN3aXRjaCBTdGF0ZQpUZXN0LUZpZWxkOiBNYW5kYXRvcnkKClRlc3QtTm90ZXM6CgphKSBJbnNlcnQgYSBmbG93IEYgIHdpdGggb3V0cHV0IGFjdGlvbiA9IHBvcnQgeCAKYikgU2VuZCBhIGRlbGV0ZSBjb21tYW5kIG1hdGNoaW5nIGZsb3cgRiAsYnV0ICBvdXRfcG9ydCA9cG9ydCB5CmMpIFNlbmQgYSB0YWJsZV9zdGF0cyByZXF1ZXN0ICwgdmVyaWZ5IG5vIGZsb3cgZ2V0cyBkZWxldGVkIGkuZS4gYWN0aXZlX2NvdW50PTEKZCkgU2VuZCBhIGRlbGV0ZSBjb21tYW5kIG1hdGNoaW5nIGZsb3cgRiAsb3V0cG9ydCA9IHBvcnQgeAplKSBTZW5kIGEgdGFibGVfc3RhdHMgcmVxdWVzdCwgdmVyaWZ5IGZsb3cgRiBnZXRzIGRlbGV0ZWQuCgoKMTYuIEFkZCwgbW9kaWZ5IGZsb3dzIHdpdGggY29uc3RyYWludCBvdXRwdXQKClRlc3QgRGVzY3JpcHRpb246IEFkZCwgbW9kaWZ5IGZsb3dzIHdpdGggb3V0cG9ydCBzZXQuIFRoaXMgZmllbGQgaXMgaWdub3JlZCBieSBBREQsIE1PRElGWSwgYW5kIE1PRElGWSBTVFJJQ1QgbWVzc2FnZXMuClRpdGxlOiBhZGRfbW9kaWZ5X3dpdGhfb3V0cG9ydApUZXN0IG1vZGU6IEF1dG9tYXRlZApQb3J0czogNCAoMSBjb250cm9sIHBsYW5lLCAzIERhdGEgcGxhbmVzKQpJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgpUZXN0LU5vdGVzOgoKYSkgSW5zZXJ0IGEgZmxvdyBGIHdpdGggYWN0aW9uIEEgKG91dHB1dCAtLT4gcG9ydCB4KSAsIGJ1dCBvdXRfcG9ydCBmaWVsZCBpbiB0aGUgZmxvdyBtb2Qgc2V0IGFzIHBvcnQgeQpiKSBTZW5kIFRhYmxlX1N0YXRzX1JlcXVlc3QsIFZlcmlmeSBGbG93IGdldHMgaW5zZXJ0ZWQuICggRmxvdyBhZGQgaWdub3JlcyBvdXRfcG9ydCBmaWVsZCkKYykgTW9kaWZ5IHRoZSBhY3Rpb24gaW4gZmxvdyBGICwgYWN0aW9uIEGSICggb3V0cHV0IC0tPnBvcnQgeiApLCBidXQgb3V0X3BvcnQgZmllbGQgaW4gdGhlIGZsb3cgbW9kIHNldCBhcyBwb3J0IHkKZCkgU2VuZCB0ZXN0IHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyBGIAplKSBWZXJpZnkgcGFja2V0IGltcGxlbWVudHMgYWN0aW9uIEGSIChmbG93IG1vZGlmeSBpZ25vcmVzIG91dF9wb3J0IGZpZWxkKQoKMTcuIFZlcmlmeSB0aGF0IGlkbGUgdGltZW91dCBpcyBpbXBsZW1lbnRlZAoKClRlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IGlkbGUgdGltZW91dCBpcyBpbXBsZW1lbnRlZApUaXRsZTogaWRsZV90aW1lb3V0ClRlc3QgbW9kZTogQXV0b21hdGVkClBvcnRzOiAzICgxIGNvbnRyb2wgcGxhbmUsIDIgRGF0YXBsYW5lcykKSW5pdGlhbCBTdGF0ZTogQ29ubmVjdGlvbiBzZXR1cCwgQ2xlYXIgU3dpdGNoIFN0YXRlClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKVGVzdC1Ob3RlczoKCmEpIEFkZCBhIGZsb3cgd2l0aCBpZGxlIHRpbWVvdXQgc2V0IGFuZCB3aXRoIE9GUFBfU0VORF9GTE9XX1JFTSBiaXQgc2V0CmIpIFZlcmlmeSBmbG93IHJlbW92ZWQgbWVzc2FnZSBpcyByZWNlaXZlZC4KYykgVmVyaWZ5IGZsb3cgcmVtb3ZlZCByZWFzb24gd2FzIGlkbGVfdGltZW91dApkKSBWZXJpZnkgdGhlIGR1cmF0aW9uX3NlYyBmaWVsZCBpcyAxIHNlYyAKCgoxOC4gVmVyaWZ5IHRoYXQgaGFyZCB0aW1lb3V0IGlzIGltcGxlbWVudGVkCgpUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCBoYXJkIHRpbWVvdXQgaXMgaW1wbGVtZW50ZWQKVGl0bGU6IGhhcmRfdGltZW91dApUZXN0IG1vZGU6IEF1dG9tYXRlZApQb3J0czogMyAoMSBjb250cm9sIHBsYW5lLCAyIERhdGFwbGFuZXMpCkluaXRpYWwgU3RhdGU6IENvbm5lY3Rpb24gc2V0dXAsIENsZWFyIFN3aXRjaCBTdGF0ZSAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgpUZXN0LU5vdGVzOgoKYSkgQWRkIGEgZmxvdyB3aXRoIGhhcmQgdGltZW91dCA9MSBzZXQgYW5kIHdpdGggT0ZQUF9TRU5EX0ZMT1dfUkVNIGJpdCBzZXQKYikgVmVyaWZ5IGZsb3cgcmVtb3ZlZCBtZXNzYWdlIGlzIHJlY2VpdmVkLgpjKSBWZXJpZnkgZmxvdyByZW1vdmVkIHJlYXNvbiB3YXMgaGFyZF90aW1lb3V0CmQpIFZlcmlmeSB0aGUgZHVyYXRpb25fc2VjIGZpZWxkIGlzIDEgc2VjIAoKMTkuIFZlcmlmeSB0aGF0IG1lc3NhZ2VzIGFyZSBnZW5lcmF0ZWQgYXMgZXhwZWN0ZWQKClRlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IEZsb3cgcmVtb3ZlZCBtZXNzYWdlcyBhcmUgZ2VuZXJhdGVkIGFzIGV4cGVjdGVkClNpbmNlIJNmbG93IHJlbW92ZWQgbWVzc2FnZXMgYmVpbmcgZ2VuZXJhdGVkIHdoZW4gZmxhZyBpcyBzZXSUIGlzIGFscmVhZHkgdGVzdGVkIGluIHRoZSBhYm92ZSB0ZXN0cyAKU28gaGVyZSwgd2UgdGVzdCB0aGUgdmljZS12ZXJzYSBjb25kaXRpb24uClRpdGxlOiBmbG93X3RpbWVvdXQKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKUG9ydHM6IDMgKDFjb250cm9sIHBsYW5lLCAxZGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUgClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKVGVzdC1Ob3RlczoKCmEpICBHZW5lcmF0ZSBhbmQgaW5zdGFsbCBhIGZsb3cgd2l0aCBpZGxlX3RpbWVvdXQgPSAxIHNldCBubyBPRlBGRl9TRU5EX0ZMT1dfUkVNIGZsYWcgc2V0LgpiKSAgVmVyaWZ5IG5vIGZsb3cgcmVtb3ZlZCBtZXNzYWdlIGlzIHJlY2VpdmVkLgpjKSAgU2VuZCB0YWJsZV9zdGF0c19yZXF1ZXN0IG1lc3NhZ2UgYW5kIHZlcmlmeSBhY3RpdmVfY291bnQ9MCAKCgoKCiMjIyMjIyMjIyMjIyMjIyMjICBBY3Rpb25zICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCjEuIE5vIEFjdGlvbiBkcm9wcyBwYWNrZXQgCgpUZXN0IERlc2NyaXB0aW9uOiBJZiBubyBmb3J3YXJkIGFjdGlvbnMgYXJlIHByZXNlbnQsIHRoZSBwYWNrZXQgaXMgZHJvcHBlZC4gClJlcXVpcmVkIEFjdGlvbjogRHJvcC4gCkEgZmxvdy1lbnRyeSB3aXRoIG5vIHNwZWNpZmllZCBhY3Rpb24gaW5kaWNhdGVzIHRoYXQgYWxsIG1hdGNoaW5nIHBhY2tldHMgc2hvdWxkIGJlIGRyb3BwZWQuIApUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgbm9fYWN0aW9uX2Ryb3AKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKClRlc3QgTm90ZXM6CmEpIFNlbmQgRmxvdyBtb2QgbWVzc2FnZSB3aXRob3V0IGFueSBhY3Rpb24gc3BlY2lmaWVkCmIpIFNlbmQgTiBwYWNrZXRzIG1hdGNoaW5nIHRoZSBmbG93IApjKSBWZXJpZnkgcGFja2V0cyBhcmUgbm90IHJlY2VpdmVkIG9uIGFueSBvZiB0aGUgZGF0YXBsYW5lIHBvcnRzIApkKSBWZXJpZnkgcGFja2V0cyBhcmUgbm90IGV2ZW4gc2VudCB0byB0aGUgY29udHJvbGxlcgoKMi4gIEdldCBzdXBwb3J0ZWQgYWN0aW9ucyBmcm9tIHN3aXRjaAoKVGVzdCBEZXNjcmlwdGlvbjogR2V0IHRoZSBzdXBwb3J0ZWQgYWN0aW9ucyBmcm9tIHN3aXRjaCBhbmQgbWFrZSBzYW5pdHkgY2hlY2tzLgpXaGVuIGNvbm5lY3RpbmcgdG8gdGhlIGNvbnRyb2xsZXIsIGEgc3dpdGNoIGluZGljYXRlIHdoaWNoIG9mIHRoZSCTT3B0aW9uYWwgQWN0aW9uc5QgaXQgc3VwcG9ydHMKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogIGFubm91bmNlbWVudApQb3J0czogMSAoQ29udHJvbCBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKICAgICAgIApUZXN0IE5vdGVzOiAKYSkgU2VuZCBmZWF0dXJlc19yZXF1ZXN0IC4KYikgVmVyaWZ5IHJlc3BvbnNlIGlzIE9GUFRfRkVBVFVSRVNfUkVQTFkKYykgVmVyaWZ5IHJlcGx5IGhhcyBzdXBwb3J0ZWQgYWN0aW9uIGxpc3Qgc3BlY2lmaWVkCgoKCjMuIEZvcndhcmQgQWxsCgpUZXN0IERlc2NyaXB0aW9uOiBQYWNrZXQgaXMgc2VudCB0byBhbGwgZGF0YXBsYW5lIHBvcnRzIGV4Y2VwdCBpbmdyZXNzIHBvcnQgd2hlbiBvdXRwdXQgYWN0aW9uLnBvcnQgPSBPRlBQX0FMTApUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgZm9yd2FyZF9hbGwKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCiAgICAgICAKVGVzdCBOb3RlczogCgogICBhKSBJbnN0YWxsIGEgZmxvdyB3aXRoIG91dHB1dCBhY3Rpb24ucG9ydCA9IE9GUFBfQUxMLgogICBiKSBWZXJpZnkgcGFja2V0cyBhcmUgZm9yd2FyZGVkIHRvIGFsbCBwb3J0cyBleGNlcHQgaW5ncmVzcyBwb3J0LgoKCjQuIEZvcndhcmQgQ29udHJvbGxlciAKVGVzdCBEZXNjcmlwdGlvbjogUGFja2V0IGlzIHNlbnQgdG8gY29udHJvbGxlciBvdXRwdXQucG9ydCA9IE9GUFBfQ09OVFJPTExFUgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgZm9yd2FyZF9jb250cm9sbGVyClBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgogICAgICAgClRlc3QgTm90ZXM6IAoKYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiBvdXRwdXQgcG9ydCA9IE9GUFBfQ09OVFJPTExFUgpiKSBTZW5kIHBhY2tldHMgbWF0Y2hpbmcgdGhlIGZsb3cKYykgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBvbiB0aGUgY29udHJvbCBwbGFuZSBhcyBhIHBhY2tldF9pbiBtZXNzYWdlCgoKNS4gRm9yd2FyZCBMb2NhbCAoVEJEIJYgVmVyaWZpY2F0aW9uIG9mIHBhY2tldCBiZWluZyByZWNlaXZlZCBhdCBsb2NhbCBuZXR3b3JraW5nIHN0YWNrKQoKVGVzdCBEZXNjcmlwdGlvbjogUGFja2V0IGlzIHNlbnQgdG8gc3dpdGNoknMgbG9jYWwgbmV0d29ya2luZyBzdGFjayBpZiBvdXRwdXQucG9ydCA9IE9GUFBfTE9DQUwKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogIGZvcndhcmRfbG9jYWwKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCiAgICAgICAKVGVzdCBOb3RlczogCgphKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uIG91dHB1dCBwb3J0ID0gT0ZQUF9MT0NBTApiKSBTZW5kIHBhY2tldHMgbWF0Y2hpbmcgdGhlIGZsb3cKYykgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBpbiB0aGUgc3dpdGNoknMgbG9jYWwgbmV0d29ya2luZyBzdGFjay4KCjYuIEZvcndhcmQgVGFibGUKClRlc3QgRGVzY3JpcHRpb246IFBlcmZvcm0gYWN0aW9ucyBpbiBmbG93IHRhYmxlLiBPbmx5IGZvciBwYWNrZXQtb3V0IG1lc3NhZ2VzLgpJZiB0aGUgb3V0cHV0IGFjdGlvbi5wb3J0IGluIHRoZSBwYWNrZXRvdXQgbWVzc2FnZSA9IE9GUC5UQUJMRSwgdGhlbiB0aGUgcGFja2V0IGltcGxlbWVudHMgdGhlIGFjdGlvbiBzcGVjaWZpZWQgaW4gdGhlIG1hdGNoaW5nIGZsb3cgb2YgdGhlIEZMT1ctVEFCTEUKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogIGZvcndhcmRfdGFibGUKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKClRlc3QgTm90ZXM6IAoKYSkgSW5zZXJ0IGEgZmxvdyBGIHdpdGggYWN0aW9uIG91dHB1dC5wb3J0ID0gZWdyZXNzX3BvcnQKYikgU2VuZCBhIE9GUFRfUEFDS0VUX09VVCBtZXNzYWdlIHdpdGggb3V0IHBvcnQ9T0ZQUF9UQUJMRSBtYXRjaGluZyBmbG93IEYgCmMpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgb24gZWdyZXNzX3BvcnQgKGkuZSBwYWNrZXRvdXQgbWVzc2FnZSBpbXBsZW1lbnRlZCB0aGUgYWN0aW9uIHNwZWNpZmllZCBpbiB0aGUgbWF0Y2hpbmcgZmxvdyBvZiB0aGUgVGFibGUpCgoKNy4gRm9yd2FyZCBJbiBQb3J0CgpUZXN0IERlc2NyaXB0aW9uOiBQYWNrZXQgaXMgc2VudCB0byBpbnB1dCBwb3J0IGlmIG91dHB1dC5wb3J0ID0gT0ZQUF9JTlBPUlQKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogIGZvcndhcmRfaW5wb3J0ClBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgpUZXN0IE5vdGVzOiAKCmEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gb3V0cHV0IHBvcnQgPSBPRlBQX0lOUE9SVApiKSBTZW5kIHBhY2tldHMgbWF0Y2hpbmcgdGhlIGZsb3cKYykgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBvbiBhbGwgZGF0YXBsYW5lIHBvcnRzIGV4Y2VwdCBmb3IgaW5wdXQgcG9ydAoKCjguIEZvcndhcmQgRmxvb2QKClRlc3QgRGVzY3JpcHRpb246IEZMT09EOiBGbG9vZCB0aGUgcGFja2V0IGFsb25nIHRoZSBtaW5pbXVtIHNwYW5uaW5nIHRyZWUsIG5vdCBpbmNsdWRpbmcgdGhlIGluY29taW5nIGludGVyZmFjZS4gClBhY2tldCBpcyBzZW50IGFsbCB0aGUgZGF0YXBsYW5lIHBvcnRzIGV4Y2VwdCB0aGUgaW5wdXQgcG9ydCBpZiBvdXRwdXQucG9ydCA9IE9GUFBfRkxPT0QKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogIGZvcndhcmRfZmxvb2QKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBPcHRpb25hbAoKVGVzdCBOb3RlczogCgphKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uIG91dHB1dCBwb3J0ID0gT0ZQUF9GTE9PRApiKSBTZW5kIHBhY2tldHMgbWF0Y2hpbmcgdGhlIGZsb3cKYykgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBvbiBhbGwgZGF0YXBsYW5lIHBvcnRzIGV4Y2VwdCBmb3IgaW5wdXQgcG9ydAoKOS4gTXVsdGlwbGUgUG9ydHMgLS0gVEJECgoxMC4gRm9yd2FyZCBFbnF1ZXVlIC0tLSBUQkQKCgoxMS4gU2V0IFZMQU4gSWQKClRlc3QgRGVzY3JpcHRpb246IEF0dGFjaCBWTEFOIElEIHRvIHVudGFnZ2VkIHBhY2tldApJZiBubyBWTEFOIGlzIHByZXNlbnQsIGEgbmV3IGhlYWRlciBpcyBhZGRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgVkxBTiBJRCBhbmQgcHJpb3JpdHkgb2YgemVyby4KVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogIGFkZF92bGFuX2lkClBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogT3B0aW9uYWwKCiAgICAgICAKVGVzdCBOb3RlczogCgphKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uID0gT0ZQQVRfU0VUX1ZMQU5fVklEICwgdmxhbl92aWQgPSB4IApiKSBTZW5kIHBhY2tldCAobGVuZ3RoID0gMTAwIGJ5dGVzKSBtYXRjaGluZyB0aGUgZmxvdwpiKSAgIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIHZsYW4gaWQgYWRkZWQgdG8gaXQuIChJLmUgbGVuZ3RoIG9mIHBhY2tldCB3aXRoIHZpZCBpcyAxMDQgYnl0ZXMsIGRsX3ZsYW5fZW5hYmxlID0gVHJ1ZSwgZGxfdmxhbj0geCwgZGxfdmxhbl9wY3A9MCkgIAogICAKMTIuIE1vZGlmeSBWTEFOIElkCgpUZXN0IERlc2NyaXB0aW9uOiBNb2RpZmllcyBWbGFuIFRhZyBmb3IgYSB0YWdnZWQgcGFja2V0CklmIGEgVkxBTiBoZWFkZXIgYWxyZWFkeSBleGlzdHMsIHRoZSBWTEFOIElEIGlzIHJlcGxhY2VkIHdpdGggdGhlIHNwZWNpZmllZCB2YWx1ZQpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgbW9kaWZ5X3ZsYW5faWQKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBPcHRpb25hbAoKICAgICAgIApUZXN0IE5vdGVzOiAKYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiA9IE9GUEFUX1NFVF9WTEFOX1ZJRCAsIHZsYW5fdmlkID0geCAKYikgICBTZW5kIHBhY2tldCAobGVuZ3RoID0gMTAwIGJ5dGVzKSBtYXRjaGluZyB0aGUgZmxvdwpjKSAgIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIHZsYW4gaWQgcmV3cml0dGVuLiAoSS5lIGxlbmd0aCBvZiAxMDQgYnl0ZXMsIGRsX3ZsYW5fZW5hYmxlID0gVHJ1ZSwgZGxfdmxhbj14KSAgCgoKMTMuIEFkZCBWTEFOIFByaW9yaXR5IHRvIGFuIHVudGFnZ2VkIHBhY2tldAoKVGVzdCBEZXNjcmlwdGlvbjogQXR0YWNoIFZMQU4gcHJpb3JpdHkgdG8gYW4gdW50YWdnZWQgcGFja2V0LgpTaW5jZSwgbm8gVkxBTiBJRCBpcyBwcmVzZW50OyBhIG5ldyBoZWFkZXIgaXMgYWRkZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHByaW9yaXR5IGFuZCBhIFZMQU4gSUQgb2YgemVyby4KVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogIHZsYW5fcHJpb191bnRhZ2dlZApQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE9wdGlvbmFsCgogICAgICAgClRlc3QgTm90ZXM6IAoKYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiA9IE9GUEFUX1NFVF9WTEFOX1BDUCAsIGRsX3ZsYW5fcGNwID14CmIpIFNlbmQgdW50YWdnZWQgcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAKYykgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBoYXMgdmxhbiBwcmlvcml0eSBhZGRlZCB0byBpdCBhbG9uZyB3aXRoIGEgdmlkIHZhbHVlIG9mIHplcm8gYWRkZWQgYnkgZGVmYXVsdCAgIChkbF92bGFuX2VuYWJsZSAsIGRsX3ZsYW4gPSAwICwgZGxfdmxhbl9wY3AgPXggKQoKMTQuIFJld3JpdGUgZXhpc3RpbmcgVkxBTiBwcmlvcml0eQoKVGVzdCBEZXNjcmlwdGlvbjogTW9kaWZ5IFZMQU4gcHJpb3JpdHkgZm9yIGEgdGFnZ2VkIHBhY2tldC4KVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogIG1vZGlmeV92bGFuX3ByaW8KUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBPcHRpb25hbAoKICAgICAgIApUZXN0IE5vdGVzOiAKCmEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfVkxBTl9QQ1AgLCBkbF92bGFuX3BjcCA9bmV3X3ZsYW5fcGNwCmIpIFNlbmQgdGFnZ2VkIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyAgKGRsX3ZsYW4gPSBvbGRfdmxhbl9pZCAsIGRsX3ZsYW5fcGNwID0gb2xkX3ZsYW5fcGNwKQpjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGhhcyB2bGFuIGlkIGFkZGVkIHRvIGl0LiAoZGxfdmxhbl9lbmFibGUgLCBkbF92bGFuID0gMCAsIGRsX3ZsYW5fcGNwID0gbmV3X3ZsYW5fcGNwKQoKCgoKMTUuIE1vZGlmeSBMMiBTcmMgQWRkcmVzcwoKVGVzdCBEZXNjcmlwdGlvbjogTW9kaWZ5IEV0aGVybmV0IFNyYyBBZGRyZXNzIG9mIGEgcGFja2V0ClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBtb2RpZnlfbDJfc3JjClBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogT3B0aW9uYWwKCiAgICAgICAKVGVzdCBOb3RlczogCmEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfRExfU1JDICwgZGxfc3JjID1uZXdfZGxfc3JjCmIpIFNlbmQgcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAoZGxfZHN0ID0gb2xkX2RsX3NyYyApCmMpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIHNyYyBhZGRyZXNzIHJld3JpdHRlbi4gKGRsX3NyYz0gbmV3X2RsX3NyYykKCgoKMTYuIE1vZGlmeSBMMiBEZXN0aW5hdGlvbiBBZGRyZXNzCgpUZXN0IERlc2NyaXB0aW9uOiBNb2RpZnkgRXRoZXJuZXQgRGVzdGluYXRpb24gQWRkcmVzcyBvZiBhIHBhY2tldApUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgbW9kaWZ5X2wyX2RzdApQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE9wdGlvbmFsCgogICAgICAgClRlc3QgTm90ZXM6IAphKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uID0gT0ZQQVRfU0VUX0RMX0RTVCAsIGRsX2RzdCA9bmV3X2RsX2RzdApiKSBTZW5kIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyAgKGRsX2RzdCA9IG9sZF9kbF9zcmMgKQpjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGhhcyBkZXN0aW5hdGlvbiBhZGRyZXNzIHJld3JpdHRlbi4gKGRsX3NyYz0gbmV3X2RsX3NyYykKCjE3LiBTdHJpcCBWTEFOIGhlYWRlciCWIChJbiBvZnRlc3QsICBuZWVkIHRvIGFkZCBpbiBjb25mb3JtYW5jZSB0ZXN0LXN1aXRlICkKCgoxOC4gTW9kaWZ5IEwzIFNyYyBBZGRyZXNzCgpUZXN0IERlc2NyaXB0aW9uOiBNb2RpZnkgTmV0d29yayBTcmMgQWRkcmVzcyBvZiBhIHBhY2tldApUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgbW9kaWZ5X2wzX3NyYwpQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE9wdGlvbmFsCgogICAgICAgClRlc3QgTm90ZXM6IAphKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uID0gT0ZQQVRfU0VUX05XX1NSQyAsIG53X3NyYyA9bmV3X253X3NyYwpiKSBTZW5kIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyAgKG53X3NyYyA9IG9sZF9ud19zcmMgKQpjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGhhcyBudyBhZGRyZXNzIHJld3JpdHRlbi4gKG53X3NyYz0gbmV3X253X3NyYykKCgoKCgoKCjE5LiBNb2RpZnkgTDMgRHN0IEFkZHJlc3MKClRlc3QgRGVzY3JpcHRpb246IE1vZGlmeSBOZXR3b3JrIERzdCBBZGRyZXNzIG9mIGEgcGFja2V0ClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBtb2RpZnlfbDNfZHN0ClBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogT3B0aW9uYWwKCiAgICAgICAKVGVzdCBOb3RlczogCmEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfTldfRFNUICwgbndfZHN0ID1uZXdfbndfZHN0CmIpIFNlbmQgcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAobndfZHN0ID0gb2xkX253X2RzdCApCmMpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIG53IGRlc3RpbmF0aW9uIGFkZHJlc3MgcmV3cml0dGVuLiAobndfZHN0PSBuZXdfbndfZHN0KQoKCgoKMjAuIE1vZGlmeSBMNCBTcmMgQWRkcmVzcwoKVGVzdCBEZXNjcmlwdGlvbjogTW9kaWZ5IFRDUCBTb3VyY2UgUG9ydCBvZiBhIHBhY2tldApUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgbW9kaWZ5X2w0X3NyYwpQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE9wdGlvbmFsCgogICAgICAgClRlc3QgTm90ZXM6IAphKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uID0gT0ZQQVRfU0VUX1RQX1NSQyAsIHRjcF9zcG9ydCA9bmV3X3RjcF9zcG9ydApiKSBTZW5kIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyAgKHRjcF9zcG9ydCA9IG9sZF90Y3Bfc3BvcnQgKQpjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGhhcyB0Y3Agc291cmNlIHBvcnQgcmV3cml0dGVuLiAodGNwX3Nwb3J0ID0gbmV3X3RjcF9zcG9ydCkKCgoyMS4gTW9kaWZ5IEw0IERzdCBBZGRyZXNzCgpUZXN0IERlc2NyaXB0aW9uOiBNb2RpZnkgVENQIERlc3RpbmF0aW9uIFBvcnQgb2YgYSBwYWNrZXQKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogIG1vZGlmeV9sNF9kc3QKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBPcHRpb25hbAoKICAgICAgIApUZXN0IE5vdGVzOiAKYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiA9IE9GUEFUX1NFVF9UUF9EU1QgLCB0Y3BfZHBvcnQgPW5ld190Y3BfZHBvcnQKYikgU2VuZCBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgICh0Y3BfZHBvcnQgPSBvbGRfdGNwX2Rwb3J0ICkKYykgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBoYXMgdGNwIGRlc3RpbmF0aW9uIHBvcnQgcmV3cml0dGVuLiAodGNwX3Nwb3J0ID0gbmV3X3RjcF9zcG9ydCkKCgoKMjIuIE1vZGlmeSBUT1MKClRlc3QgRGVzY3JpcHRpb246IE1vZGlmeSBOZXR3b3JrIFR5cGUgb2Ygc2VydmljZQpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgbW9kaWZ5X3RvcwpQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE9wdGlvbmFsCgogICAgICAgClRlc3QgTm90ZXM6IAphKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uID0gT0ZQQVRfU0VUX05XX1RPUywgaXBfdG9zID1uZXdfaXBfdG9zCmIpIFNlbmQgcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAoaXBfdG9zPSBvbGRfaXBfdG9zKQpjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGhhcyB0Y3AgZGVzdGluYXRpb24gcG9ydCByZXdyaXR0ZW4uIChpcF90b3M9IG5ld19pcF90b3MpCgoKMjMuIE9yZGVyIE5vdCBwb3NzaWJsZSAgLS0gVEJECgoyNC4gU2VxdWVudGlhbCBleGVjdXRpb24gIC0tIFRCRCAKCg==