CQkJCQkJKioqKioqKioqKiogIENvbmZvcm1hbmNlIFRlc3Qtc3VpdGUgICAqKioqKioqKioqKioqKioqCgkJCQkJCU9GLVN3aXRjaC0xLjAuMC1UZXN0Q2FzZXMgZGV0YWlsZWQgdGVzdGluZyBtZXRob2RvbG9neQoKCgoKCioqKiogICAgIE9wZW5mbG93IHByb3RvY29sIG1lc3NhZ2VzICAgICAqKioqCgoKCjEuIEZlYXR1cmVzIFJlcXVlc3QKClRlc3QgRGVzY3JpcHRpb246IENoZWNrIGZlYXR1cmVzIHJlcXVlc3QgaXMgaW1wbGVtZW50ZWQKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6IEZlYXR1cmVzUmVxdWVzdApQb3J0czogSSAoQ29udHJvbCBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOiAKCmEpIFNlbmQgT0ZQVF9GRUFUVVJFU19SRVFVRVNUIGZyb20gY29udHJvbGxlci4KYikgVmVyaWZ5IE9GUFRfRkVBVFVSRVNfUkVQTFkgaXMgcmVjZWl2ZWQgd2l0aG91dCBlcnJvcnMKCgoKMi4gQ29uZmlndXJhdGlvbiByZXF1ZXN0CgpUZXN0IERlc2NyaXB0aW9uOiBDaGVjayBiYXNpYyBnZXQgY29uZmlndXJhdGlvbiByZXF1ZXN0IGlzIGltcGxlbWVudGVkCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiBDb25maWd1cmF0aW9uUmVxdWVzdApQb3J0czogSSAoQ29udHJvbCBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOgoKYSkgU2VuZCBPRlBUX0dFVF9DT05GSUdfUkVRVUVTVApiKSBWZXJpZnkgT0ZQVF9HRVRfQ09ORklHX1JFUExZIGlzIHJlY2VpdmVkIHdpdGhvdXQgZXJyb3JzLgoKCgozLiBNb2RpZnkgU3RhdGUgKEFERCkKClRlc3QgRGVzY3JpcHRpb246IENoZWNrIGJhc2ljIEZsb3cgQUREIHJlcXVlc3QgaXMgaW1wbGVtZW50ZWQKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6IE1vZGlmeVN0YXRlQWRkClBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBkYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gU2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczoKCmEpIFNlbmQgT0ZQVF9GTE9XX01PRCwgY29tbWFuZCA9IE9GUEZDX0FERCAKYikgU2VuZCBvZnBfdGFibGVfc3RhdHMgcmVxdWVzdCAKYykgVmVyaWZ5IHRoYXQgYWN0aXZlX2NvdW50PTEgaW4gdGhlIHJlcGx5CgoKCgo0LiBNb2RpZnkgU3RhdGUgKERFTEVURSkKClRlc3QgRGVzY3JpcHRpb246IENoZWNrIGJhc2ljIEZsb3cgRGVsZXRlIHJlcXVlc3QgaXMgaW1wbGVtZW50ZWQKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6IE1vZGlmeVN0YXRlRGVsZXRlClBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBkYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gU2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczoKCmEpIFNlbmQgT0ZQVF9GTE9XX01PRCwgY29tbWFuZCA9IE9GUEZDX0FERCAKYikgU2VuZCBvZnBfdGFibGVfc3RhdHMgcmVxdWVzdApjKSBWZXJpZnkgdGhhdCBhY3RpdmVfY291bnQ9MSBpbiB0aGUgcmVwbHkKZCkgU2VuZCBPRlBUX0ZMT1dfTU9ELCBjb21tYW5kID0gT0ZQRkNfREVMRVRFCmUpIFNlbmQgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QKZikgIFZlcmlmeSBhY3RpdmUgX2NvdW50PTAgaW4gdGhlIHJlcGx5CgoKCjUuIE1vZGlmeSBTdGF0ZSAoTU9ESUZZKQoKVGVzdCBEZXNjcmlwdGlvbjogQ2hlY2sgYmFzaWMgRmxvdyBNb2RpZnkgcmVxdWVzdCBpcyBpbXBsZW1lbnRlZAoKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogTW9kaWZ5U3RhdGVNb2RpZnkKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSBhbmQgMiBEYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gU2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczoKCmEpIFNlbmQgIE9GUFRfRkxPV19NT0QgLCBjb21tYW5kID0gT0ZQRkNfQURELCBhY3Rpb24gQQpiKSBTZW5kIG9mcF90YWJsZV9zdGF0cyByZXF1ZXN0LCBWZXJpZnkgIGFjdGl2ZV9jb3VudD0xCmMpIFNlbmQgT0ZQVF9GTE9XX01PRCAsIGNvbW1hbmQgPSBPRlBGQ19NT0RJRlksIGFjdGlvbiBBkgpkKSBTZW5kIFRlc3QgUGFja2V0ICBtYXRjaGluZyB0aGUgZmxvdwplKSBWZXJpZnkgcGFja2V0IGltcGxlbWVudHMgYWN0aW9uIEGSCgoKCjYuIFJlYWQgU3RhdGUKClRlc3QgRGVzY3JpcHRpb246IENoZWNrIGJhc2ljIFJlYWQgU3RhdGUgaXMgaW1wbGVtZW50ZWQKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6IFJlYWRTdGF0ZQpQb3J0czogMyAoMSBDb250cm9sIFBsYW5lLCAyIGRhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOgoKYSkgU2VuZCAgT0ZQVF9GTE9XX01PRCwgY29tbWFuZCA9IE9GUEZDX0FERApiKSBDcmVhdGUgYSBPRlBDX0ZMT1dfU1RBVFMgbWVzc2FnZSBhbmQgc2VuZCBpdApjKSBWZXJpZnkgc3dpdGNoIHJlcGxpZXMgd2l0aG91dCBlcnJvcnMKCgoKNy4gU2VuZCBwYWNrZXQKClRlc3QgRGVzY3JpcHRpb246IENoZWNrIGJhc2ljIFNlbmQtUGFja2V0IGlzIGltcGxlbWVudGVkLiAKCQkgIFNlbmQtUGFja2V0OiBUaGVzZSBhcmUgdXNlZCBieSB0aGUgY29udHJvbGxlciB0byBzZW5kIHBhY2tldHMgb3V0IG9mIGEgc3BlY2lmaWVkIHBvcnQgb24gdGhlIHN3aXRjaC4KClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBTZW5kUGFja2V0ClBvcnRzOiA1ICgxIENvbnRyb2wgUGxhbmUsIDQgRGF0YXBsYW5lKSAKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOgoKYSkgU2VuZCBPRlBUX1BBQ0tFVF9PVVQgb3V0IG1lc3NhZ2UgZnJvbSBjb250cm9sbGVyIHRvIHN3aXRjaCBmb3IgZXZlcnkgZGF0YXBsYW5lIHBvcnQuCmIpIFZlcmlmeSB0aGUgcGFja2V0IGFwcGVhcnMgb24gdGhlIGVhY2ggZGF0YXBsYW5lIHBvcnQKYykgVmVyaWZ5IHNlbnQgcGFja2V0IG1hdGNoZXMgdGhlIHJlY2VpdmVkIHBhY2tldAoKCgo4LiBCYXJyaWVyIFJlcXVlc3QgCgpUZXN0IERlc2NyaXB0aW9uOiBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBiYXNpYyBiYXJyaWVyIHJlcXVlc3QgZG9lcyBub3QgZ2VuZXJhdGUgYW4gZXJyb3IuCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiBCYXJyaWVyUmVxdWVzdFJlcGx5ClBvcnRzOiBJIChDb250cm9sIFBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIFNldHVwClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKClRlc3QgTm90ZXM6CgphKSBTZW5kIE9GUFRfQkFSUklFUl9SRVFVRVNUCmMpIFZlcmlmeSBPRlBUX0JBUlJJRVJfUkVQTFkgaXMgcmVjZWl2ZWQgb24gdGhlIGNvbnRyb2wgcGxhbmUuCgoKCjkuIFBhY2tldCBJbgoKVGVzdCBEZXNjcmlwdGlvbjogQ2hlY2sgcGFja2V0X2luIGlzIGltcGxlbWVudGVkLiBUaGlzIHRlc3QganVzdCBjaGVja3MgdGhhdCBub24gbWF0Y2hlZCBkYXRhcGxhbmUgcGFja2V0cyAKCQkgIGdlbmVyYXRlIGEgcGFja2V0X2luCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiBQYWNrZXRJbgpQb3J0czogMiAoMSBDb250cm9sIFBsYW5lIGFuZCAxIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOgoKYSkgU2VuZCBhIHBhY2tldCB0byBkYXRhcGxhbmUgcG9ydCAsIHdpdGhvdXQgaW5zZXJ0aW5nIGEgZmxvdyBlbnRyeQpiKSBWZXJpZnkgYSBPRlBUX1BBQ0tFVF9JTiBpcyBnZW5lcmF0ZWQgb24gdGhlIGNvbnRyb2wgcGxhbmUKCgoKMTAuIEhlbGxvCgpUZXN0IERlc2NyaXB0aW9uOiBUaGlzIHRlc3QgY2hlY2tzIGZvciBiYXNpYyBIZWxsbyBtZXNzYWdlIGdlbmVyYXRpb24gd2l0aCBjb3JyZWN0IHZlcnNpb24gZmllbGQuCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgSGVsbG8KUG9ydHM6IDEgKENvbnRyb2wgUGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gU2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczoKCmEpIFNlbmQgIE9GUFRfSEVMTE8gZnJvbSBjb250cm9sbGVyIHRvIHN3aXRjaApiKSBWZXJpZnkgc3dpdGNoIGFsc28gc2VuZHMgT0ZQVF9IRUxMTyBtZXNzYWdlIGluIHJlc3BvbnNlIApjKSBWZXJpZnkgdmVyc2lvbiBmaWVsZCBpbiB0aGUgaGVsbG8gbWVzc2FnZSBpcyBzZXQgdG8gT3BlbmZsb3cgdmVyc2lvbiAxLjAuMAoKCgoxMS4gRWNobwoKVGVzdCBEZXNjcmlwdGlvbjogVGhpcyB0ZXN0IGNoZWNrcyBmb3IgYmFzaWMgRWNobyBSZXBseSBtZXNzYWdlIGdlbmVyYXRpb24gd2l0aCBjb3JyZWN0IHZlcnNpb24gZmllbGQgd2l0aCAKCQkgIHNhbWUgdHJhbnNhY3Rpb24gaWQuCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgRWNob1dpdGhvdXRCb2R5ClBvcnRzOiAxIChDb250cm9sIFBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKClRlc3QgTm90ZXM6CgphKSBTZW5kIE9GUFRfRUNIT19SRVFVRVNUIGZyb20gdGhlIGNvbnRyb2xsZXIgc2lkZS4KYikgVmVyaWZ5IHN3aXRjaCByZXNwb25kcyBiYWNrIHdpdGggT0ZQVF9FQ0hPX1JFUExZIHdpdGggc2FtZSB4aWQuCmMpIFZlcmlmeSBPcGVuZmxvdyB2ZXJzaW9uIGluIGhlYWRlciBpcyBzZXQgdG8gT3BlbmZsb3cgdmVyc2lvbiAxLjAuMC4KCgoKCgoqKioqICAgICBEZXRhaWxlZCBjb250cm9sbGVyIHRvIHN3aXRjaCBtZXNzYWdlcyAgICAgKioqKgoKCgoxLiBPdmVybGFwIGNoZWNraW5nCgpUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCBpZiBvdmVybGFwIGNoZWNrIGZsYWcgaXMgc2V0IGluIHRoZSBmbG93IGVudHJ5IGFuZCBhbiBvdmVybGFwcGluZyBmbG93IGlzIAoJCSAgaW5zZXJ0ZWQgdGhlbiBhbiBlcnJvciBpcyBnZW5lcmF0ZWQgYW5kIHN3aXRjaCByZWZ1c2VzIGZsb3cgZW50cnkKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBPdmVybGFwQ2hlY2tpbmcKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIGRhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0LU5vdGVzOgoKYSkgR2VuZXJhdGUgRmxvdyBGMS0tPiBXaWxkY2FyZCBBbGwgCmIpIFNlbmQgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QgLCB2ZXJpZnkgYWN0aXZlX2NvdW50PTEKYykgR2VuZXJhdGUgb3ZlcmxhcHBpbmcgZmxvdyBGMiAtLT4gV2lsZGNhcmQgQWxsIEV4Y2VwdCBJbmdyZXNzIFBvcnQgKCB3aXRoIGZsYWcgT0ZQRkZfQ0hFQ0tfT1ZFUkxBUCBzZXQpCmQpIFZlcmlmeSB0aGF0IHN3aXRjaCBnZW5lcmF0ZXMgT0ZQVF9FUlJPUiBtc2cuICAKICAgVHlwZTogT0ZQRVRfRkxPV19NT0RfRkFJTEVEIGNvZGUgOiBPRlBGTUZDX09WRVJMQVAgCgoKCjIuIE5vIG92ZXJsYXAgY2hlY2tpbmcKClRlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IHdpdGhvdXQgb3ZlcmxhcCBjaGVjayBmbGFnIHNldCwgb3ZlcmxhcHBpbmcgZmxvd3MgY2FuIGJlIGNyZWF0ZWQuCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgTm9PdmVybGFwY2hlY2tpbmcKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSwgMiBEYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczoKCmEpIEdlbmVyYXRlIEZsb3cgRjEtLT4gV2lsZGNhcmQgQWxsLgpiKSBTZW5kIG9mcF90YWJsZV9zdGF0cyByZXF1ZXN0ICwgdmVyaWZ5IGFjdGl2ZV9jb3VudD0xCmUpIEdlbmVyYXRlIG92ZXJsYXBwaW5nIGZsb3cgRjIgLS0+IFdpbGRjYXJkIEFsbCBFeGNlcHQgSW5ncmVzcyBQb3J0ICggd2l0aG91dCBmbGFnIE9GUEZGX0NIRUNLX09WRVJMQVAgc2V0KQpjKSBTZW5kIGEgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QsIHZlcmlmeSBhY3RpdmVfY291bnQ9MgoKCgozLiBJZGVudGljYWwgZmxvd3MgCgpUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCBhZGRpbmcgdHdvIGlkZW50aWNhbCBmbG93cyBvdmVyd3JpdGVzIHRoZSBleGlzdGluZyBvbmUgYW5kIGNsZWFycyBjb3VudGVycwoKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogIElkZW50aWNhbEZsb3dzClBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUpLCAoMiBkYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczoKCmEpIEdlbmVyYXRlIEZsb3cgRjEuCmIpIFNlbmQgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QgLCB2ZXJpZnkgYWN0aXZlX2NvdW50PTEKYikgSW5jcmVtZW50IGNvdW50ZXJzIChwYWNrZXRfY291bnQsIGJ5dGVfY291bnQpIGJ5IHNlbmRpbmcgYSBwYWNrZXQgbWF0Y2hpbmcgZmxvdyBGMS4KQykgU2VuZCBvZnBfZmxvd19zdGF0cyByZXF1ZXN0LiBWZXJpZnkgZmxvdyBjb3VudGVyczogYnl0ZV9jb3VudCBhbmQgcGFja2V0X2NvdW50IApjKSBDcmVhdGUgaWRlbnRpY2FsIGZsb3cgRjIKZCkgU2VuZCBhIG9mcF90YWJsZV9zdGF0cyByZXF1ZXN0LCB2ZXJpZnkgYWN0aXZlX2NvdW50PTEKZSkgU2VuZCBvZnBfZmxvd19zdGF0cyByZXF1ZXN0LiBWZXJpZnkgZmxvdyBjb3VudGVyczogYnl0ZV9jb3VudCBhbmQgcGFja2V0X2NvdW50IGFyZSByZXNldAoKCgo0LiBObyB0YWJsZSB0byBhZGQgKFdyaXR0ZW4gaW4gb2Z0ZXN0l05lZWQgdG8gYWRkIHRvIGNvbmZvcm1hbmNlIFRlc3QtU3VpdGVzKQoKCgo1LiBOZXZlciB2YWxpZCBwb3J0IChUQkQpCgoKCgo2LiBDdXJyZW50bHkgbm90IGV4aXN0aW5nIHBvcnQgVmVyc2lvbiBBIGFuZCBCIChUQkQpCgoKCgo3LiBFbWVyZ2VuY3kgZmxvdyB3aXRoIHRpbWVvdXQgdmFsdWVzIAoKVGVzdCBEZXNjcmlwdGlvbjogVGltZW91dCB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkIGZvciBlbWVyZ2VuY3kgZmxvd3MKClRlc3QgVGl0bGU6IEVtZXJGbG93VGltZW91dApUZXN0IG1vZGU6IEF1dG9tYXRlZApQb3J0czogMyAoMSBjb250cm9sIHBsYW5lLCAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cCAKCgpUZXN0IE5vdGVzOgoKYSkgIEdlbmVyYXRlIGEgZmxvdyBGIHdpdGggT0ZQRkZfRU1FUkcgc2V0IGluIGZsYWcgYW5kIHRpbWVvdXQgdmFsdWVzIGFzc2lnbmVkLgpiKSAgVmVyaWZ5IHN3aXRjaCBnZW5lcmF0ZXMgYW4gT0ZQVF9FUlJPUiBtc2csIFR5cGU6IE9GUEVUX0ZMT1dfTU9EX0ZBSUxFRCwgQ29kZSBPRlBGTUZDX0JBRF9FTUVSR19USU1FT1VUCgoKCjguIE1pc3NpbmcgbW9kaWZ5IGFkZHMKClRlc3QgRGVzY3JpcHRpb246IElmIGEgbW9kaWZ5IGRvZXMgbm90IG1hdGNoIGFuIGV4aXN0aW5nIGZsb3csIHRoZSBmbG93IGdldHMgYWRkZWQuCgpUaXRsZTogTWlzc2luZ01vZGlmeUFkZApUZXN0IG1vZGU6IEF1dG9tYXRlZApQb3J0czozICgxIGNvbnRyb2wgcGxhbmUsMiBEYXRhIFBsYW5lKQpJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczoKCmEpIEdlbmVyYXRlIGEgZmxvdy1tb2QgLCBjb21tYW5kIE9GUENfTU9ESUZZIChOb3RlOiBUaGVyZSBzaG91bGQgYmUgbm8gZmxvd3MgbWF0Y2hpbmcgdGhpcyBmbG93X21vZCBtb2RpZnkgY29tbWFuZCkKYikgU2VuZCBhIG9mcF90YWJsZV9zdGF0cyByZXF1ZXN0LCB2ZXJpZnkgYWN0aXZlX2NvdW50PTEKCgoKCjkuIE1vZGlmeSBjaGFuZ2VzIGFjdGlvbiwgcHJlc2VydmVzIGNvdW50ZXJzCgpUZXN0IERlc2NyaXB0aW9uOiBBIG1vZGlmaWVkIGZsb3cgcHJlc2VydmVzIGNvdW50ZXJzCgpUaXRsZTogTW9kaWZ5QWN0aW9uClRlc3QgbW9kZTogQXV0b21hdGVkClBvcnRzOiA0KDEgY29udHJvbCBwbGFuZSwgMyBEYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IENvbm5lY3Rpb24gc2V0dXAsIENsZWFyIFN3aXRjaCBTdGF0ZQpUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOgoKYSkgQ3JlYXRlIGEgZmxvd19tb2QgRi0xIHdpdGggY29tbWFuZCBPRlBDX0FERCwgYWN0aW9uIEEKYikgU2VuZCBhIHRlc3QgUGFja2V0IG1hdGNoaW5nIHRoZSBmbG93CmMpIFNlbmQgYW4gb2ZwX2Zsb3dfc3RhdHMgcmVxdWVzdCwgdmVyaWZ5IGJ5dGVfY291bnQgYW5kIHBhY2tldF9jb3VudAplKSBDcmVhdGUgZmxvd19tb2Qgd2l0aCBjb21tYW5kIE9GUENfTU9ESUZZICxhY3Rpb24gQZIgYW5kIG1vZGlmeSBhY3Rpb24gb2YgZmxvdyBGLTEKZikgU2VuZCBhIG9mcF9mbG93X3N0YXRzIHJlcXVlc3QsIHZlcmlmeSBmbG93IGNvdW50ZXJzIGFyZSBwcmVzZXJ2ZWQKZykgU2VuZCB0ZXN0IHBhY2tldCwgdmVyaWZ5IGl0IGltcGxlbWVudHMgYWN0aW9uIEGSCgoKCjEwLiBTdHJpY3QgTW9kaWZ5IGNoYW5nZXMgYWN0aW9uLCBwcmVzZXJ2ZXMgY291bnRlcnMKClRlc3QgRGVzY3JpcHRpb246IFN0cmljdCBNb2RpZnkgRmxvdyBhbHNvIGNoYW5nZXMgYWN0aW9uIHByZXNlcnZlcyBjb3VudGVycwoKVGl0bGU6IFN0cmljdE1vZGlmeUFjdGlvbgpUZXN0IG1vZGU6IEF1dG9tYXRlZApQb3J0czogNCgxIGNvbnRyb2wgcGxhbmUsIDMgRGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczoKCmEpIENyZWF0ZSB0d28gb3ZlcmxhcHBpbmcgZmxvd3M6IEYgLS0+IE1hdGNoIG9uIGFsbCwgZXhjZXB0IG9uZSB3aWxkY2FyZGVkIChzcmMgYWRkcmVzcykuIEFjdGlvbiBBLiBQcmlvcml0eT0xMDAgCiAgIEaSIC0tPiBNYXRjaCBvbiBpbmdyZXNzX3BvcnQgPSBwb3J0IFswXSwgd2lsZGNhcmRlZCByZXN0LiBBY3Rpb24gQS4gUHJpb3JpdHk9MTAKYikgU2VuZCBhIG9mcF90YWJsZV9zdGF0cyByZXF1ZXN0LCB2ZXJpZnkgYWN0aXZlX2NvdW50PTIKYykgU2VuZCBQYWNrZXQgKGl0IHdvdWxkIGhhdmUgbWF0Y2hlZCBib3RoIHRoZSBmbG93cywgc2luY2UgdGhleSBhcmUgb3ZlcmxhcHBpbmcgZmxvd3MgYnV0IGl0IHdvdWxkIG1hdGNoIEZsb3ctRjEgYXMgaXQgaGFzIGhpZ2hlciBwcmlvcml0eS4pCmQpIFNlbmQgb2ZwX2Zsb3dfc3RhdHMgcmVxdWVzdCBmb3IgRmxvdy0xIGFuZCB2ZXJpZnkgY291bnRlcnMgcGFja2V0X2NvdW50IGFuZCBieXRlX2NvdW50IAplKSBDcmVhdGUgZmxvd19tb2QgLGNvbW1hbmQgT0ZQQ19TVFJJQ1RfTU9ESUZZLG1hdGNoIG9uIGFsbCBleGNlcHQgc3JjIGFkZHJlc3MgLHByaW9yaXR5IDEwMCBhY3Rpb24gQZIKZikgU2VuZCB0ZXN0IHBhY2tldCAsIHZlcmlmeSBhY3Rpb24gaXMgbW9kaWZpZWQKZykgU2VuZCBvZnBfZmxvd19zdGF0cyByZXF1ZXN0LCB2ZXJpZnkgY291bnRlcnMgYXJlIHByZXNlcnZlZC4KCgoKCjExLiBEZWxldGUgbm9uIGV4aXN0aW5nIGZsb3cgCgpUZXN0IERlc2NyaXB0aW9uOiBSZXF1ZXN0IGRlbGV0aW9uIG9mIG5vbi1leGlzdGluZyBmbG93CgpUaXRsZTogRGVsZXRlTm9uZXhpc3RpbmdGbG93ClRlc3QgbW9kZTogQXV0b21hdGVkClBvcnRzOiAxKDEgY29udHJvbCBwbGFuZSkKSW5pdGlhbCBTdGF0ZTogQ29ubmVjdGlvbiBzZXR1cCwgQ2xlYXIgU3dpdGNoIFN0YXRlClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKClRlc3QgTm90ZXM6CgphKSBJc3N1ZSBhIGRlbGV0ZSBjb21tYW5kLCB3aXRoIG5vIGZsb3dzIGluc2VydGVkCmIpIE1ha2Ugc3VyZSBubyBlcnJvciBpcyBnZW5lcmF0ZWQgb24gdGhlIGNvbnRyb2wgcGxhbmUKCgoKMTIuIERlbGV0ZSBmbG93cyB3aXRoIGFuZCB3aXRob3V0IHJlbW92ZWQgbWVzc2FnZQoKVGVzdCBEZXNjcmlwdGlvbjogQ2hlY2sgZGVsZXRpb24gb2YgZmxvd3MgaGFwcGVucyBhbmQgZ2VuZXJhdGVzIG1lc3NhZ2VzIGFzIGNvbmZpZ3VyZWQuIGkuZS4gaWYgkVNlbmQgRmxvdyByZW1vdmVkIG1lc3NhZ2WSRmxhZyAKCSAgICAgICAgICBpcyBzZXQgaW4gdGhlIGZsb3cgZW50cnksIHRoZSBmbG93IGRlbGV0aW9uIG9mIHRoYXQgcmVzcGVjdGl2ZSBmbG93IHNob3VsZCBnZW5lcmF0ZSB0aGUgZmxvdyByZW1vdmVkIG1lc3NhZ2UsIAoJCSAgdmljZSB2ZXJzYSBhbHNvIGV4aXN0cyAKClRlc3QgVGl0bGU6IFNlbmRGbG93UmVtClRlc3QgbW9kZTogQXV0b21hdGVkClBvcnRzOiAzICgxIGNvbnRyb2wgcGxhbmUsIDIgRGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBEZWZhdWx0IChjbGVhciBzd2l0Y2ggc3RhdGUpClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKClRlc3QgTm90ZXM6CgphKSBHZW5lcmF0ZSBhIGZsb3cgRiB3aXRob3V0IE9GUEZGX1NFTkRfRkxPV19SRU0gZmxhZyBzZXQKYikgSXNzdWUgYSBkZWxldGUgY29tbWFuZCBPRlBGQ19ERUxFVEUKYykgVmVyaWZ5IHRoYXQgT0ZQVF9GTE9XX1JFTU9WRUQgbWVzc2FnZSBpcyBub3QgZ2VuZXJhdGVkLgpjKSBHZW5lcmF0ZSBhIGZsb3cgRpIgd2l0aCBPRlBGRl9TRU5EX0ZMT1dfUkVNIGZsYWcgc2V0CmQpIElzc3VlIGEgZGVsZXRlIGNvbW1hbmQgT0ZQRkNfREVMRVRFCmUpIFZlcmlmeSB0aGF0IE9GUFRfRkxPV19SRU1PVkVEIG1lc3NhZ2UgaXMgZ2VuZXJhdGVkCgoKCjEzLiBEZWxldGUgZW1lcmdlbmN5IGZsb3cgCgpUZXN0IERlc2NyaXB0aW9uOiBEZWxldGUgZW1lcmdlbmN5IGZsb3cgYW5kIHZlcmlmeSBubyBtZXNzYWdlIGlzIGdlbmVyYXRlZC5BbiBlbWVyZ2VuY3kgZmxvdyBkZWxldGlvbiB3aWxsIG5vdCBnZW5lcmF0ZSAKCQkgIGZsb3ctcmVtb3ZlZCBtZXNzYWdlcyBldmVuIGlmIJFTZW5kIEZsb3cgcmVtb3ZlZCBtZXNzYWdlkiBmbGFnIHdhcyBzZXQgZHVyaW5nIHRoZSBlbWVyZ2VuY3kgZmxvdyBlbnRyeS4KCQkgIAoKVGl0bGU6IERlbGV0ZUVtZXJGbG93ClRlc3QgbW9kZTogQXV0b21hdGVkClBvcnRzOiAzICgxIGNvbnRyb2wgcGxhbmUsIDIgRGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUgKGRlZmF1bHQpIAoKClRlc3QtTm90ZXM6CgphKSBJbnNlcnQgYSBmbG93IHdpdGggT0ZQRkZfRU1FUkcgZmxhZyBzZXQuCmIpIERlbGV0ZSB0aGUgYWRkZWQgZmxvdyB3aXRoIE9GUEZGX1NFTkRfRkxPV19SRU0gZmxhZyBzZXQKYykgVGVzdCBzdWNjZXNzZnVsIGlmIG5vIGZsb3cgcmVtb3ZlZCBtZXNzYWdlIGlzIGdlbmVyYXRlZC4KCgoKMTQuIERlbGV0ZSBhbmQgdmVyaWZ5IHN0cmljdCBhbmQgbm9uLXN0cmljdCAKClRlc3QgRGVzY3JpcHRpb246IERlbGV0ZSBhbmQgdmVyaWZ5IHN0cmljdCBhbmQgbm9uLXN0cmljdCBiZWhhdmlvcnMKClRoaXMgdGVzdCBjb21wYXJlcyB0aGUgYmVoYXZpb3Igb2YgZGVsZXRlIHN0cmljdCBhbmQgbm9uLXN0cmljdC4KVGl0bGU6IFN0cmljdFZzTm9uc3RyaWN0ClRlc3QgbW9kZTogQXV0b21hdGVkClBvcnRzOiAzICgxIGNvbnRyb2wgcGxhbmUsIDIgZGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUKCgpUZXN0LU5vdGVzOgoKYSkgSW5zZXJ0IEZsb3cgRiB3aXRoIGFuIGV4YWN0IG1hdGNoLiAKYikgSXNzdWUgTm9uLXN0cmljdCBEZWxldGUgY29tbWFuZCwgdmVyaWZ5IEYgZ2V0cyBkZWxldGVkLiAKYykgSW5zZXJ0IEYgd2l0aCBhbiBleGFjdCBNYXRjaCAKZCkgSXNzdWUgU3RyaWN0IERlbGV0ZSBDb21tYW5kLCB2ZXJpZnkgRiBnZXRzIGRlbGV0ZWQuCmUpIEluc2VydCBGbG93IFQgd2l0aCBtYXRjaCBvbiBhbGwsIGV4Y2VwdCBvbmUgd2lsZGNhcmRlZCAoc2F5IHNyYyBhZGRyZXNzKS4gIApmKSBJbnNlcnQgYW5vdGhlciBmbG93IFQnIHdpdGggbWF0Y2ggb24gaW5ncmVzc19wb3J0LCB3aWxkY2FyZGVkIHJlc3QuICAKZykgSXNzdWUgTm9uLXN0cmljdCBEZWxldGUgKCBtYXRjaCBvbiBpbmdyZXNzX3BvcnQpLiBWZXJpZnkgVCtUJyBnZXRzIGRlbGV0ZWQuIApoKSBJbnNlcnQgVCBhbmQgVCcgYWdhaW4uIElzc3VlIFN0cmljdCBEZWxldGUgKG1hdGNoIG9uIGluZ3Jlc3MgcG9ydCksIHZlcmlmeSBvbmx5IFQnIGdldHMgZGVsZXRlZAppKSBJbnNlcnQgVCwgYWRkIFByaW9yaXR5IFAgKHNheSAxMDApIApqKSBJbnNlcnQgVCcgYWRkIHByaW9yaXR5ICgyMDApLiAKaykgSW5zZXJ0IFQnIGFnYWluIGFkZCBwcmlvcml0eSAzMDAgLS0+IFSUCmwpIElzc3VlIE5vbi1TdHJpY3QgRGVsZXRlIChtYXRjaCBvbiBpbmdyZXNzIHBvcnQpLiBWZXJpZnkgVCtUkitUkpIgZ2V0cyBkZWxldGVkLiAKbSkgSW5zZXJ0IFQsIFSSLCBUkpIgYWdhaW4sIElzc3VlIFN0cmljdCBEZWxldGUgKG1hdGNoIG9uIGluZ3Jlc3NfcG9ydCkgd2l0aCBwcmlvcml0eSA9IDIwMC4gVmVyaWZ5IG9ubHkgVJIgZ2V0cyBkZWxldGVkCgoKCjE1LiBEZWxldGUgZmxvd3Mgd2l0aCBjb25zdHJhaW50IG91dF9wb3J0CgpUZXN0IERlc2NyaXB0aW9uOiBEZWxldGUgZmxvd3MgZmlsdGVyZWQgYnkgYWN0aW9uIG91dHB1dC5ERUxFVEUgYW5kIERFTEVURSBTVFJJQ1QgY29tbWFuZHMgY2FuIGJlIG9wdGlvbmFsbHkgZmlsdGVyZWQgYnkgb3V0cHV0IHBvcnQuCgkJICBJZiB0aGUgb3V0X3BvcnQgZmllbGQgY29udGFpbnMgYSB2YWx1ZSBvdGhlciB0aGFuIE9GUFBfTk9ORSwgaXQgaW50cm9kdWNlcyBhIGNvbnN0cmFpbnQgd2hlbiBtYXRjaGluZy4gCgkJICBUaGlzIGNvbnN0cmFpbnQgaXMgdGhhdCB0aGUgcnVsZSBtdXN0IGNvbnRhaW4gYW4gb3V0cHV0IGFjdGlvbiBkaXJlY3RlZCBhdCB0aGF0IHBvcnQuCgpUaXRsZTogT3V0cG9ydDEKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKUG9ydHM6IDMgKDEgY29udHJvbCBwbGFuZSwgMiBEYXRhcGxhbmVzKQpJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdC1Ob3RlczoKCmEpIEluc2VydCBhIGZsb3cgRiAgd2l0aCBvdXRwdXQgYWN0aW9uID0gcG9ydCB4IApiKSBTZW5kIGEgZGVsZXRlIGNvbW1hbmQgbWF0Y2hpbmcgZmxvdyBGICxidXQgIG91dF9wb3J0ID1wb3J0IHkKYykgU2VuZCBhIHRhYmxlX3N0YXRzIHJlcXVlc3QgLCB2ZXJpZnkgbm8gZmxvdyBnZXRzIGRlbGV0ZWQgaS5lLiBhY3RpdmVfY291bnQ9MQpkKSBTZW5kIGEgZGVsZXRlIGNvbW1hbmQgbWF0Y2hpbmcgZmxvdyBGICxvdXRwb3J0ID0gcG9ydCB4CmUpIFNlbmQgYSB0YWJsZV9zdGF0cyByZXF1ZXN0LCB2ZXJpZnkgZmxvdyBGIGdldHMgZGVsZXRlZC4KCgoKMTYuIEFkZCwgbW9kaWZ5IGZsb3dzIHdpdGggY29uc3RyYWludCBvdXRwdXQKClRlc3QgRGVzY3JpcHRpb246IEFkZCwgbW9kaWZ5IGZsb3dzIHdpdGggb3V0cG9ydCBzZXQuIFRoaXMgZmllbGQgaXMgaWdub3JlZCBieSBBREQsIE1PRElGWSwgYW5kIE1PRElGWSBTVFJJQ1QgbWVzc2FnZXMuCgpUaXRsZTogT3V0cG9ydDIKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKUG9ydHM6IDQgKDEgY29udHJvbCBwbGFuZSwgMyBEYXRhIHBsYW5lcykKSW5pdGlhbCBTdGF0ZTogQ29ubmVjdGlvbiBzZXR1cCwgQ2xlYXIgU3dpdGNoIFN0YXRlClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKVGVzdC1Ob3RlczoKCmEpIEluc2VydCBhIGZsb3cgRiB3aXRoIGFjdGlvbiBBIChvdXRwdXQgLS0+IHBvcnQgeCkgLCBidXQgb3V0X3BvcnQgZmllbGQgaW4gdGhlIGZsb3cgbW9kIHNldCBhcyBwb3J0IHkKYikgU2VuZCBUYWJsZV9TdGF0c19SZXF1ZXN0LCBWZXJpZnkgRmxvdyBnZXRzIGluc2VydGVkLiAoIEZsb3cgYWRkIGlnbm9yZXMgb3V0X3BvcnQgZmllbGQpCmMpIE1vZGlmeSB0aGUgYWN0aW9uIGluIGZsb3cgRiAsIGFjdGlvbiBBkiAoIG91dHB1dCAtLT5wb3J0IHogKSwgYnV0IG91dF9wb3J0IGZpZWxkIGluIHRoZSBmbG93IG1vZCBzZXQgYXMgcG9ydCB5CmQpIFNlbmQgdGVzdCBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgRiAKZSkgVmVyaWZ5IHBhY2tldCBpbXBsZW1lbnRzIGFjdGlvbiBBkiAoZmxvdyBtb2RpZnkgaWdub3JlcyBvdXRfcG9ydCBmaWVsZCkKCgoKMTcuIFZlcmlmeSB0aGF0IGlkbGUgdGltZW91dCBpcyBpbXBsZW1lbnRlZAoKVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgaWRsZSB0aW1lb3V0IGlzIGltcGxlbWVudGVkCgpUaXRsZTogSWRsZVRpbWVvdXQKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKUG9ydHM6IDMgKDEgY29udHJvbCBwbGFuZSwgMiBEYXRhcGxhbmVzKQpJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdC1Ob3RlczoKCmEpIEFkZCBhIGZsb3cgd2l0aCBpZGxlIHRpbWVvdXQgc2V0IGFuZCB3aXRoIE9GUFBfU0VORF9GTE9XX1JFTSBiaXQgc2V0CmIpIFZlcmlmeSBmbG93IHJlbW92ZWQgbWVzc2FnZSBpcyByZWNlaXZlZC4KYykgVmVyaWZ5IGZsb3cgcmVtb3ZlZCByZWFzb24gd2FzIGlkbGVfdGltZW91dApkKSBWZXJpZnkgdGhlIGR1cmF0aW9uX3NlYyBmaWVsZCBpcyAxIHNlYyAKCgoKMTguIFZlcmlmeSB0aGF0IGhhcmQgdGltZW91dCBpcyBpbXBsZW1lbnRlZAoKVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgaGFyZCB0aW1lb3V0IGlzIGltcGxlbWVudGVkCgpUaXRsZTogSGFyZFRpbWVvdXQKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKUG9ydHM6IDMgKDEgY29udHJvbCBwbGFuZSwgMiBEYXRhcGxhbmVzKQpJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUgClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKClRlc3QtTm90ZXM6CgphKSBBZGQgYSBmbG93IHdpdGggaGFyZCB0aW1lb3V0ID0xIHNldCBhbmQgd2l0aCBPRlBQX1NFTkRfRkxPV19SRU0gYml0IHNldApiKSBWZXJpZnkgZmxvdyByZW1vdmVkIG1lc3NhZ2UgaXMgcmVjZWl2ZWQuCmMpIFZlcmlmeSBmbG93IHJlbW92ZWQgcmVhc29uIHdhcyBoYXJkX3RpbWVvdXQKZCkgVmVyaWZ5IHRoZSBkdXJhdGlvbl9zZWMgZmllbGQgaXMgMSBzZWMgCgoKCjE5LiBWZXJpZnkgdGhhdCBtZXNzYWdlcyBhcmUgZ2VuZXJhdGVkIGFzIGV4cGVjdGVkCgpUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCBGbG93IHJlbW92ZWQgbWVzc2FnZXMgYXJlIGdlbmVyYXRlZCBhcyBleHBlY3RlZAoJICAgICAgICAgIC8qIFNpbmNlIJNmbG93IHJlbW92ZWQgbWVzc2FnZXMgYmVpbmcgZ2VuZXJhdGVkIHdoZW4gZmxhZyBpcyBzZXSUIGlzIGFscmVhZHkgdGVzdGVkIGluIHRoZSBhYm92ZSB0ZXN0cyAKICAgICAgICAgICAgICAgICAgU28gaGVyZSwgd2UgdGVzdCB0aGUgdmljZS12ZXJzYSBjb25kaXRpb24uKi8KClRpdGxlOiBGbG93VGltZW91dApUZXN0IG1vZGU6IEF1dG9tYXRlZApQb3J0czogMyAoMWNvbnRyb2wgcGxhbmUsIDFkYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IENvbm5lY3Rpb24gc2V0dXAsIENsZWFyIFN3aXRjaCBTdGF0ZSAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdC1Ob3RlczoKCmEpICBHZW5lcmF0ZSBhbmQgaW5zdGFsbCBhIGZsb3cgd2l0aCBpZGxlX3RpbWVvdXQgPSAxIHNldCBubyBPRlBGRl9TRU5EX0ZMT1dfUkVNIGZsYWcgc2V0LgpiKSAgVmVyaWZ5IG5vIGZsb3cgcmVtb3ZlZCBtZXNzYWdlIGlzIHJlY2VpdmVkLgpjKSAgU2VuZCB0YWJsZV9zdGF0c19yZXF1ZXN0IG1lc3NhZ2UgYW5kIHZlcmlmeSBhY3RpdmVfY291bnQ9MCAKCgoKCgoqKiogICBBY3Rpb25zICAgKioqCgoKCjEuIE5vIEFjdGlvbiBkcm9wcyBwYWNrZXQgCgpUZXN0IERlc2NyaXB0aW9uOiBJZiBubyBmb3J3YXJkIGFjdGlvbnMgYXJlIHByZXNlbnQsIHRoZSBwYWNrZXQgaXMgZHJvcHBlZC4gCgkJClJlcXVpcmVkIEFjdGlvbjogRHJvcC4gCkEgZmxvdy1lbnRyeSB3aXRoIG5vIHNwZWNpZmllZCBhY3Rpb24gaW5kaWNhdGVzIHRoYXQgYWxsIG1hdGNoaW5nIHBhY2tldHMgc2hvdWxkIGJlIGRyb3BwZWQuIApUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgTm9BY3Rpb24KUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOgoKYSkgU2VuZCBGbG93IG1vZCBtZXNzYWdlIHdpdGhvdXQgYW55IGFjdGlvbiBzcGVjaWZpZWQKYikgU2VuZCBOIHBhY2tldHMgbWF0Y2hpbmcgdGhlIGZsb3cgCmMpIFZlcmlmeSBwYWNrZXRzIGFyZSBub3QgcmVjZWl2ZWQgb24gYW55IG9mIHRoZSBkYXRhcGxhbmUgcG9ydHMgCmQpIFZlcmlmeSBwYWNrZXRzIGFyZSBub3QgZXZlbiBzZW50IHRvIHRoZSBjb250cm9sbGVyCgoKCjIuICBHZXQgc3VwcG9ydGVkIGFjdGlvbnMgZnJvbSBzd2l0Y2gKClRlc3QgRGVzY3JpcHRpb246IEdldCB0aGUgc3VwcG9ydGVkIGFjdGlvbnMgZnJvbSBzd2l0Y2ggYW5kIG1ha2Ugc2FuaXR5IGNoZWNrcy4KCQkgIC8qV2hlbiBjb25uZWN0aW5nIHRvIHRoZSBjb250cm9sbGVyLCBhIHN3aXRjaCBpbmRpY2F0ZSB3aGljaCBvZiB0aGUgk09wdGlvbmFsIEFjdGlvbnOUIGl0IHN1cHBvcnRzKi8KClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBBbm5vdW5jZW1lbnQKUG9ydHM6IDEgKENvbnRyb2wgUGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CiAgICAgICAKClRlc3QgTm90ZXM6IAoKYSkgU2VuZCBmZWF0dXJlc19yZXF1ZXN0IC4KYikgVmVyaWZ5IHJlc3BvbnNlIGlzIE9GUFRfRkVBVFVSRVNfUkVQTFkKYykgVmVyaWZ5IHJlcGx5IGhhcyBzdXBwb3J0ZWQgYWN0aW9uIGxpc3Qgc3BlY2lmaWVkCgoKCjMuIEZvcndhcmQgQWxsCgpUZXN0IERlc2NyaXB0aW9uOiBQYWNrZXQgaXMgc2VudCB0byBhbGwgZGF0YXBsYW5lIHBvcnRzIGV4Y2VwdCBpbmdyZXNzIHBvcnQgd2hlbiBvdXRwdXQgYWN0aW9uLnBvcnQgPSBPRlBQX0FMTAoKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogIEZvcndhcmRBbGwKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCiAgICAgICAKVGVzdCBOb3RlczogCgphKSBJbnN0YWxsIGEgZmxvdyB3aXRoIG91dHB1dCBhY3Rpb24ucG9ydCA9IE9GUFBfQUxMLgpiKSBWZXJpZnkgcGFja2V0cyBhcmUgZm9yd2FyZGVkIHRvIGFsbCBwb3J0cyBleGNlcHQgaW5ncmVzcyBwb3J0LgoKCgo0LiBGb3J3YXJkIENvbnRyb2xsZXIgCgpUZXN0IERlc2NyaXB0aW9uOiBQYWNrZXQgaXMgc2VudCB0byBjb250cm9sbGVyIG91dHB1dC5wb3J0ID0gT0ZQUF9DT05UUk9MTEVSCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgRm9yd2FyZENvbnRyb2xsZXIKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCiAgICAgICAKVGVzdCBOb3RlczogCgphKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uIG91dHB1dCBwb3J0ID0gT0ZQUF9DT05UUk9MTEVSCmIpIFNlbmQgcGFja2V0cyBtYXRjaGluZyB0aGUgZmxvdwpjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIG9uIHRoZSBjb250cm9sIHBsYW5lIGFzIGEgcGFja2V0X2luIG1lc3NhZ2UKCgoKNS4gRm9yd2FyZCBMb2NhbCAoVEJEIJYgVmVyaWZpY2F0aW9uIG9mIHBhY2tldCBiZWluZyByZWNlaXZlZCBhdCBsb2NhbCBuZXR3b3JraW5nIHN0YWNrKQoKVGVzdCBEZXNjcmlwdGlvbjogUGFja2V0IGlzIHNlbnQgdG8gc3dpdGNoknMgbG9jYWwgbmV0d29ya2luZyBzdGFjayBpZiBvdXRwdXQucG9ydCA9IE9GUFBfTE9DQUwKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBGb3J3YXJkTG9jYWwKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCiAgICAgICAKVGVzdCBOb3RlczogCgphKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uIG91dHB1dCBwb3J0ID0gT0ZQUF9MT0NBTApiKSBTZW5kIHBhY2tldHMgbWF0Y2hpbmcgdGhlIGZsb3cKYykgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBpbiB0aGUgc3dpdGNoknMgbG9jYWwgbmV0d29ya2luZyBzdGFjay4KCgoKNi4gRm9yd2FyZCBUYWJsZQoKVGVzdCBEZXNjcmlwdGlvbjogUGVyZm9ybSBhY3Rpb25zIGluIGZsb3cgdGFibGUuIE9ubHkgZm9yIHBhY2tldC1vdXQgbWVzc2FnZXMuCgkJICAvKklmIHRoZSBvdXRwdXQgYWN0aW9uLnBvcnQgaW4gdGhlIHBhY2tldG91dCBtZXNzYWdlID0gT0ZQLlRBQkxFLCB0aGVuIHRoZSBwYWNrZXQgaW1wbGVtZW50cyB0aGUgYWN0aW9uIAoJCSAgc3BlY2lmaWVkIGluIHRoZSBtYXRjaGluZyBmbG93IG9mIHRoZSBGTE9XLVRBQkxFKi8KClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBGb3J3YXJkVGFibGUKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKClRlc3QgTm90ZXM6IAoKYSkgSW5zZXJ0IGEgZmxvdyBGIHdpdGggYWN0aW9uIG91dHB1dC5wb3J0ID0gZWdyZXNzX3BvcnQKYikgU2VuZCBhIE9GUFRfUEFDS0VUX09VVCBtZXNzYWdlIHdpdGggb3V0IHBvcnQ9T0ZQUF9UQUJMRSBtYXRjaGluZyBmbG93IEYgCmMpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgb24gZWdyZXNzX3BvcnQgKGkuZSBwYWNrZXRvdXQgbWVzc2FnZSBpbXBsZW1lbnRlZCB0aGUgYWN0aW9uIHNwZWNpZmllZCBpbiB0aGUgbWF0Y2hpbmcgZmxvdyBvZiB0aGUgVGFibGUpCgoKCjcuIEZvcndhcmQgSW4gUG9ydAoKVGVzdCBEZXNjcmlwdGlvbjogUGFja2V0IGlzIHNlbnQgdG8gaW5wdXQgcG9ydCBpZiBvdXRwdXQucG9ydCA9IE9GUFBfSU5QT1JUCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgRm9yd2FyZElucG9ydApQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKVGVzdCBOb3RlczogCgphKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uIG91dHB1dCBwb3J0ID0gT0ZQUF9JTlBPUlQKYikgU2VuZCBwYWNrZXRzIG1hdGNoaW5nIHRoZSBmbG93CmMpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgb24gYWxsIGRhdGFwbGFuZSBwb3J0cyBleGNlcHQgZm9yIGlucHV0IHBvcnQKCgoKOC4gRm9yd2FyZCBGbG9vZAoKVGVzdCBEZXNjcmlwdGlvbjpGbG9vZCB0aGUgcGFja2V0IGFsb25nIHRoZSBtaW5pbXVtIHNwYW5uaW5nIHRyZWUsIG5vdCBpbmNsdWRpbmcgdGhlIGluY29taW5nIGludGVyZmFjZS4gCgkJIFBhY2tldCBpcyBzZW50IGFsbCB0aGUgZGF0YXBsYW5lIHBvcnRzIGV4Y2VwdCB0aGUgaW5wdXQgcG9ydCBpZiBvdXRwdXQucG9ydCA9IE9GUFBfRkxPT0QKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBGb3J3YXJkX0Zsb29kClBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogT3B0aW9uYWwKClRlc3QgTm90ZXM6IAoKYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiBvdXRwdXQgcG9ydCA9IE9GUFBfRkxPT0QKYikgU2VuZCBwYWNrZXRzIG1hdGNoaW5nIHRoZSBmbG93CmMpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgb24gYWxsIGRhdGFwbGFuZSBwb3J0cyBleGNlcHQgZm9yIGlucHV0IHBvcnQKCgoKOS4gTXVsdGlwbGUgUG9ydHMgLS0gVEJECgoKCgoxMC4gRm9yd2FyZCBFbnF1ZXVlIC0tLSBUQkQKCgoKCjExLiBTZXQgVkxBTiBJZAoKVGVzdCBEZXNjcmlwdGlvbjogQXR0YWNoIFZMQU4gSUQgdG8gdW50YWdnZWQgcGFja2V0LgogICAgICAgICAgICAgICAgICBJZiBubyBWTEFOIGlzIHByZXNlbnQsIGEgbmV3IGhlYWRlciBpcyBhZGRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgVkxBTiBJRCBhbmQgcHJpb3JpdHkgb2YgemVyby4KClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBBZGRWbGFuSWQKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBPcHRpb25hbAoKICAgICAgIApUZXN0IE5vdGVzOiAKCmEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfVkxBTl9WSUQgLCB2bGFuX3ZpZCA9IHggCmIpIFNlbmQgcGFja2V0IChsZW5ndGggPSAxMDAgYnl0ZXMpIG1hdGNoaW5nIHRoZSBmbG93CmIpICAgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBoYXMgdmxhbiBpZCBhZGRlZCB0byBpdC4gKEkuZSBsZW5ndGggb2YgcGFja2V0IHdpdGggdmlkIGlzIDEwNCBieXRlcywgZGxfdmxhbl9lbmFibGUgPSBUcnVlLCBkbF92bGFuPSB4LCBkbF92bGFuX3BjcD0wKSAgCiAgIAoKCjEyLiBNb2RpZnkgVkxBTiBJZAoKVGVzdCBEZXNjcmlwdGlvbjogTW9kaWZpZXMgVmxhbiBUYWcgZm9yIGEgdGFnZ2VkIHBhY2tldAoJCSAgSWYgYSBWTEFOIGhlYWRlciBhbHJlYWR5IGV4aXN0cywgdGhlIFZMQU4gSUQgaXMgcmVwbGFjZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHZhbHVlCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgTW9kaWZ5VmxhbklkClBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogT3B0aW9uYWwKCgpUZXN0IE5vdGVzOiAKYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiA9IE9GUEFUX1NFVF9WTEFOX1ZJRCAsIHZsYW5fdmlkID0geCAKYikgICBTZW5kIHBhY2tldCAobGVuZ3RoID0gMTAwIGJ5dGVzKSBtYXRjaGluZyB0aGUgZmxvdwpjKSAgIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIHZsYW4gaWQgcmV3cml0dGVuLiAoSS5lIGxlbmd0aCBvZiAxMDQgYnl0ZXMsIGRsX3ZsYW5fZW5hYmxlID0gVHJ1ZSwgZGxfdmxhbj14KSAgCgoKCjEzLiBBZGQgVkxBTiBQcmlvcml0eSB0byBhbiB1bnRhZ2dlZCBwYWNrZXQKClRlc3QgRGVzY3JpcHRpb246IEF0dGFjaCBWTEFOIHByaW9yaXR5IHRvIGFuIHVudGFnZ2VkIHBhY2tldC4KCQkgIFNpbmNlLCBubyBWTEFOIElEIGlzIHByZXNlbnQ7IGEgbmV3IGhlYWRlciBpcyBhZGRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgcHJpb3JpdHkgYW5kIGEgVkxBTiBJRCBvZiB6ZXJvLlwKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBWbGFuUHJpbzEKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBPcHRpb25hbAoKICAgICAgIApUZXN0IE5vdGVzOiAKCmEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfVkxBTl9QQ1AgLCBkbF92bGFuX3BjcCA9eApiKSBTZW5kIHVudGFnZ2VkIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyAgCmMpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIHZsYW4gcHJpb3JpdHkgYWRkZWQgdG8gaXQgYWxvbmcgd2l0aCBhIHZpZCB2YWx1ZSBvZiB6ZXJvIGFkZGVkIGJ5IGRlZmF1bHQgICAoZGxfdmxhbl9lbmFibGUgLCBkbF92bGFuID0gMCAsIGRsX3ZsYW5fcGNwID14ICkKCgoKMTQuIFJld3JpdGUgZXhpc3RpbmcgVkxBTiBwcmlvcml0eQoKVGVzdCBEZXNjcmlwdGlvbjogTW9kaWZ5IFZMQU4gcHJpb3JpdHkgZm9yIGEgdGFnZ2VkIHBhY2tldC4KClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBWbGFuUHJpbzIKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBPcHRpb25hbAoKICAgICAgIApUZXN0IE5vdGVzOiAKCmEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfVkxBTl9QQ1AgLCBkbF92bGFuX3BjcCA9bmV3X3ZsYW5fcGNwCmIpIFNlbmQgdGFnZ2VkIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyAgKGRsX3ZsYW4gPSBvbGRfdmxhbl9pZCAsIGRsX3ZsYW5fcGNwID0gb2xkX3ZsYW5fcGNwKQpjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGhhcyB2bGFuIGlkIGFkZGVkIHRvIGl0LiAoZGxfdmxhbl9lbmFibGUgLCBkbF92bGFuID0gMCAsIGRsX3ZsYW5fcGNwID0gbmV3X3ZsYW5fcGNwKQoKCgoKMTUuIE1vZGlmeSBMMiBTcmMgQWRkcmVzcwoKVGVzdCBEZXNjcmlwdGlvbjogTW9kaWZ5IEV0aGVybmV0IFNyYyBBZGRyZXNzIG9mIGEgcGFja2V0CgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgTW9kaWZ5TDJTcmMKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBPcHRpb25hbAoKICAgICAgIApUZXN0IE5vdGVzOiAKCmEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfRExfU1JDICwgZGxfc3JjID1uZXdfZGxfc3JjCmIpIFNlbmQgcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAoZGxfZHN0ID0gb2xkX2RsX3NyYyApCmMpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIHNyYyBhZGRyZXNzIHJld3JpdHRlbi4gKGRsX3NyYz0gbmV3X2RsX3NyYykKCgoKMTYuIE1vZGlmeSBMMiBEZXN0aW5hdGlvbiBBZGRyZXNzCgpUZXN0IERlc2NyaXB0aW9uOiBNb2RpZnkgRXRoZXJuZXQgRGVzdGluYXRpb24gQWRkcmVzcyBvZiBhIHBhY2tldAoKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogIE1vZGlmeUwyRHN0ClBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogT3B0aW9uYWwKCiAgICAgICAKVGVzdCBOb3RlczogCgphKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uID0gT0ZQQVRfU0VUX0RMX0RTVCAsIGRsX2RzdCA9bmV3X2RsX2RzdApiKSBTZW5kIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyAgKGRsX2RzdCA9IG9sZF9kbF9zcmMgKQpjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGhhcyBkZXN0aW5hdGlvbiBhZGRyZXNzIHJld3JpdHRlbi4gKGRsX3NyYz0gbmV3X2RsX3NyYykKCgoKMTcuIFN0cmlwIFZMQU4gaGVhZGVyIJYgKEluIG9mdGVzdCwgIG5lZWQgdG8gYWRkIGluIGNvbmZvcm1hbmNlIHRlc3Qtc3VpdGUgKQoKCgoxOC4gTW9kaWZ5IEwzIFNyYyBBZGRyZXNzCgpUZXN0IERlc2NyaXB0aW9uOiBNb2RpZnkgTmV0d29yayBTcmMgQWRkcmVzcyBvZiBhIHBhY2tldAoKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogIE1vZGlmeUwzU3JjClBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogT3B0aW9uYWwKCiAgICAgICAKVGVzdCBOb3RlczogCgphKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uID0gT0ZQQVRfU0VUX05XX1NSQyAsIG53X3NyYyA9bmV3X253X3NyYwpiKSBTZW5kIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyAgKG53X3NyYyA9IG9sZF9ud19zcmMgKQpjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGhhcyBudyBhZGRyZXNzIHJld3JpdHRlbi4gKG53X3NyYz0gbmV3X253X3NyYykKCgoKMTkuIE1vZGlmeSBMMyBEc3QgQWRkcmVzcwoKVGVzdCBEZXNjcmlwdGlvbjogTW9kaWZ5IE5ldHdvcmsgRHN0IEFkZHJlc3Mgb2YgYSBwYWNrZXQKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBNb2RpZnlMM0RzdApQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE9wdGlvbmFsCgogICAgICAgClRlc3QgTm90ZXM6IAoKYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiA9IE9GUEFUX1NFVF9OV19EU1QgLCBud19kc3QgPW5ld19ud19kc3QKYikgU2VuZCBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgIChud19kc3QgPSBvbGRfbndfZHN0ICkKYykgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBoYXMgbncgZGVzdGluYXRpb24gYWRkcmVzcyByZXdyaXR0ZW4uIChud19kc3Q9IG5ld19ud19kc3QpCgoKCjIwLiBNb2RpZnkgTDQgU3JjIEFkZHJlc3MKClRlc3QgRGVzY3JpcHRpb246IE1vZGlmeSBUQ1AgU291cmNlIFBvcnQgb2YgYSBwYWNrZXQKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBNb2RpZnlMNFNyYwpQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE9wdGlvbmFsCgogICAgICAgClRlc3QgTm90ZXM6IAoKYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiA9IE9GUEFUX1NFVF9UUF9TUkMgLCB0Y3Bfc3BvcnQgPW5ld190Y3Bfc3BvcnQKYikgU2VuZCBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgICh0Y3Bfc3BvcnQgPSBvbGRfdGNwX3Nwb3J0ICkKYykgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBoYXMgdGNwIHNvdXJjZSBwb3J0IHJld3JpdHRlbi4gKHRjcF9zcG9ydCA9IG5ld190Y3Bfc3BvcnQpCgoKMjEuIE1vZGlmeSBMNCBEc3QgQWRkcmVzcwoKVGVzdCBEZXNjcmlwdGlvbjogTW9kaWZ5IFRDUCBEZXN0aW5hdGlvbiBQb3J0IG9mIGEgcGFja2V0CgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgTW9kaWZ5TDREc3QKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBPcHRpb25hbAoKICAgICAgIApUZXN0IE5vdGVzOiAKCmEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfVFBfRFNUICwgdGNwX2Rwb3J0ID1uZXdfdGNwX2Rwb3J0CmIpIFNlbmQgcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAodGNwX2Rwb3J0ID0gb2xkX3RjcF9kcG9ydCApCmMpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIHRjcCBkZXN0aW5hdGlvbiBwb3J0IHJld3JpdHRlbi4gKHRjcF9zcG9ydCA9IG5ld190Y3Bfc3BvcnQpCgoKCjIyLiBNb2RpZnkgVE9TCgpUZXN0IERlc2NyaXB0aW9uOiBNb2RpZnkgTmV0d29yayBUeXBlIG9mIHNlcnZpY2UKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBNb2RpZnlUb3MKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBPcHRpb25hbAoKICAgICAgIApUZXN0IE5vdGVzOiAKCmEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfTldfVE9TLCBpcF90b3MgPW5ld19pcF90b3MKYikgU2VuZCBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgIChpcF90b3M9IG9sZF9pcF90b3MpCmMpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIHRjcCBkZXN0aW5hdGlvbiBwb3J0IHJld3JpdHRlbi4gKGlwX3Rvcz0gbmV3X2lwX3RvcykKCgoKMjMuIE9yZGVyIE5vdCBwb3NzaWJsZSAgLS0gVEJECgoKCgoyNC4gU2VxdWVudGlhbCBleGVjdXRpb24gIC0tIFRCRCAKCg==