CQkJCQkJKioqKioqKioqKiogIENvbmZvcm1hbmNlIFRlc3Qtc3VpdGUgICAqKioqKioqKioqKioqKioqCgkJCQkJCU9GLVN3aXRjaC0xLjAuMC1UZXN0Q2FzZXMgZGV0YWlsZWQgdGVzdGluZyBtZXRob2RvbG9neQoKCgoKCioqKiogICAgIE9wZW5mbG93IHByb3RvY29sIG1lc3NhZ2VzICAgICAqKioqCgoKCjEuIEZlYXR1cmVzIFJlcXVlc3QKClRlc3QgRGVzY3JpcHRpb246IENoZWNrIGZlYXR1cmVzIHJlcXVlc3QgaXMgaW1wbGVtZW50ZWQKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6IEZlYXR1cmVzUmVxdWVzdApQb3J0czogSSAoQ29udHJvbCBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOiAKCmEpIFNlbmQgT0ZQVF9GRUFUVVJFU19SRVFVRVNUIGZyb20gY29udHJvbGxlci4KYikgVmVyaWZ5IE9GUFRfRkVBVFVSRVNfUkVQTFkgaXMgcmVjZWl2ZWQgd2l0aG91dCBlcnJvcnMKCgoKMi4gQ29uZmlndXJhdGlvbiByZXF1ZXN0CgpUZXN0IERlc2NyaXB0aW9uOiBDaGVjayBiYXNpYyBnZXQgY29uZmlndXJhdGlvbiByZXF1ZXN0IGlzIGltcGxlbWVudGVkCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiBDb25maWd1cmF0aW9uUmVxdWVzdApQb3J0czogSSAoQ29udHJvbCBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOgoKYSkgU2VuZCBPRlBUX0dFVF9DT05GSUdfUkVRVUVTVApiKSBWZXJpZnkgT0ZQVF9HRVRfQ09ORklHX1JFUExZIGlzIHJlY2VpdmVkIHdpdGhvdXQgZXJyb3JzLgoKCgozLiBNb2RpZnkgU3RhdGUgKEFERCkKClRlc3QgRGVzY3JpcHRpb246IENoZWNrIGJhc2ljIEZsb3cgQUREIHJlcXVlc3QgaXMgaW1wbGVtZW50ZWQKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6IE1vZGlmeVN0YXRlQWRkClBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBkYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gU2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczoKCmEpIFNlbmQgT0ZQVF9GTE9XX01PRCwgY29tbWFuZCA9IE9GUEZDX0FERCAKYikgU2VuZCBvZnBfdGFibGVfc3RhdHMgcmVxdWVzdCAKYykgVmVyaWZ5IHRoYXQgYWN0aXZlX2NvdW50PTEgaW4gdGhlIHJlcGx5CgoKCgo0LiBNb2RpZnkgU3RhdGUgKERFTEVURSkKClRlc3QgRGVzY3JpcHRpb246IENoZWNrIGJhc2ljIEZsb3cgRGVsZXRlIHJlcXVlc3QgaXMgaW1wbGVtZW50ZWQKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6IE1vZGlmeVN0YXRlRGVsZXRlClBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBkYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gU2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczoKCmEpIFNlbmQgT0ZQVF9GTE9XX01PRCwgY29tbWFuZCA9IE9GUEZDX0FERCAKYikgU2VuZCBvZnBfdGFibGVfc3RhdHMgcmVxdWVzdApjKSBWZXJpZnkgdGhhdCBhY3RpdmVfY291bnQ9MSBpbiB0aGUgcmVwbHkKZCkgU2VuZCBPRlBUX0ZMT1dfTU9ELCBjb21tYW5kID0gT0ZQRkNfREVMRVRFCmUpIFNlbmQgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QKZikgIFZlcmlmeSBhY3RpdmUgX2NvdW50PTAgaW4gdGhlIHJlcGx5CgoKCjUuIE1vZGlmeSBTdGF0ZSAoTU9ESUZZKQoKVGVzdCBEZXNjcmlwdGlvbjogQ2hlY2sgYmFzaWMgRmxvdyBNb2RpZnkgcmVxdWVzdCBpcyBpbXBsZW1lbnRlZAoKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogTW9kaWZ5U3RhdGVNb2RpZnkKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSBhbmQgMiBEYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gU2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczoKCmEpIFNlbmQgIE9GUFRfRkxPV19NT0QgLCBjb21tYW5kID0gT0ZQRkNfQURELCBhY3Rpb24gQQpiKSBTZW5kIG9mcF90YWJsZV9zdGF0cyByZXF1ZXN0LCBWZXJpZnkgIGFjdGl2ZV9jb3VudD0xCmMpIFNlbmQgT0ZQVF9GTE9XX01PRCAsIGNvbW1hbmQgPSBPRlBGQ19NT0RJRlksIGFjdGlvbiBBkgpkKSBTZW5kIFRlc3QgUGFja2V0ICBtYXRjaGluZyB0aGUgZmxvdwplKSBWZXJpZnkgcGFja2V0IGltcGxlbWVudHMgYWN0aW9uIEGSCgoKCjYuIFJlYWQgU3RhdGUKClRlc3QgRGVzY3JpcHRpb246IENoZWNrIGJhc2ljIFJlYWQgU3RhdGUgaXMgaW1wbGVtZW50ZWQKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6IFJlYWRTdGF0ZQpQb3J0czogMyAoMSBDb250cm9sIFBsYW5lLCAyIGRhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOgoKYSkgU2VuZCAgT0ZQVF9GTE9XX01PRCwgY29tbWFuZCA9IE9GUEZDX0FERApiKSBDcmVhdGUgYSBPRlBDX0ZMT1dfU1RBVFMgbWVzc2FnZSBhbmQgc2VuZCBpdApjKSBWZXJpZnkgc3dpdGNoIHJlcGxpZXMgd2l0aG91dCBlcnJvcnMKCgoKNy4gU2VuZCBwYWNrZXQKClRlc3QgRGVzY3JpcHRpb246IENoZWNrIGJhc2ljIFNlbmQtUGFja2V0IGlzIGltcGxlbWVudGVkLiAKCQkgIFNlbmQtUGFja2V0OiBUaGVzZSBhcmUgdXNlZCBieSB0aGUgY29udHJvbGxlciB0byBzZW5kIHBhY2tldHMgb3V0IG9mIGEgc3BlY2lmaWVkIHBvcnQgb24gdGhlIHN3aXRjaC4KClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBTZW5kUGFja2V0ClBvcnRzOiA1ICgxIENvbnRyb2wgUGxhbmUsIDQgRGF0YXBsYW5lKSAKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOgoKYSkgU2VuZCBPRlBUX1BBQ0tFVF9PVVQgb3V0IG1lc3NhZ2UgZnJvbSBjb250cm9sbGVyIHRvIHN3aXRjaCBmb3IgZXZlcnkgZGF0YXBsYW5lIHBvcnQuCmIpIFZlcmlmeSB0aGUgcGFja2V0IGFwcGVhcnMgb24gdGhlIGVhY2ggZGF0YXBsYW5lIHBvcnQKYykgVmVyaWZ5IHNlbnQgcGFja2V0IG1hdGNoZXMgdGhlIHJlY2VpdmVkIHBhY2tldAoKCgo4LiBCYXJyaWVyIFJlcXVlc3QgCgpUZXN0IERlc2NyaXB0aW9uOiBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBiYXNpYyBiYXJyaWVyIHJlcXVlc3QgZG9lcyBub3QgZ2VuZXJhdGUgYW4gZXJyb3IuCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiBCYXJyaWVyUmVxdWVzdFJlcGx5ClBvcnRzOiBJIChDb250cm9sIFBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIFNldHVwClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKClRlc3QgTm90ZXM6CgphKSBTZW5kIE9GUFRfQkFSUklFUl9SRVFVRVNUCmMpIFZlcmlmeSBPRlBUX0JBUlJJRVJfUkVQTFkgaXMgcmVjZWl2ZWQgb24gdGhlIGNvbnRyb2wgcGxhbmUuCgoKCjkuIFBhY2tldCBJbgoKVGVzdCBEZXNjcmlwdGlvbjogQ2hlY2sgcGFja2V0X2luIGlzIGltcGxlbWVudGVkLiBUaGlzIHRlc3QganVzdCBjaGVja3MgdGhhdCBub24gbWF0Y2hlZCBkYXRhcGxhbmUgcGFja2V0cyAKCQkgIGdlbmVyYXRlIGEgcGFja2V0X2luCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiBQYWNrZXRJbgpQb3J0czogMiAoMSBDb250cm9sIFBsYW5lIGFuZCAxIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOgoKYSkgU2VuZCBhIHBhY2tldCB0byBkYXRhcGxhbmUgcG9ydCAsIHdpdGhvdXQgaW5zZXJ0aW5nIGEgZmxvdyBlbnRyeQpiKSBWZXJpZnkgYSBPRlBUX1BBQ0tFVF9JTiBpcyBnZW5lcmF0ZWQgb24gdGhlIGNvbnRyb2wgcGxhbmUKCgoKMTAuIEhlbGxvCgpUZXN0IERlc2NyaXB0aW9uOiBUaGlzIHRlc3QgY2hlY2tzIGZvciBiYXNpYyBIZWxsbyBtZXNzYWdlIGdlbmVyYXRpb24gd2l0aCBjb3JyZWN0IHZlcnNpb24gZmllbGQuCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgSGVsbG8KUG9ydHM6IDEgKENvbnRyb2wgUGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gU2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczoKCmEpIFNlbmQgIE9GUFRfSEVMTE8gZnJvbSBjb250cm9sbGVyIHRvIHN3aXRjaApiKSBWZXJpZnkgc3dpdGNoIGFsc28gc2VuZHMgT0ZQVF9IRUxMTyBtZXNzYWdlIGluIHJlc3BvbnNlIApjKSBWZXJpZnkgdmVyc2lvbiBmaWVsZCBpbiB0aGUgaGVsbG8gbWVzc2FnZSBpcyBzZXQgdG8gT3BlbmZsb3cgdmVyc2lvbiAxLjAuMAoKCgoxMS4gRWNobwoKVGVzdCBEZXNjcmlwdGlvbjogVGhpcyB0ZXN0IGNoZWNrcyBmb3IgYmFzaWMgRWNobyBSZXBseSBtZXNzYWdlIGdlbmVyYXRpb24gd2l0aCBjb3JyZWN0IHZlcnNpb24gZmllbGQgd2l0aCAKCQkgIHNhbWUgdHJhbnNhY3Rpb24gaWQuCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgRWNob1dpdGhvdXRCb2R5ClBvcnRzOiAxIChDb250cm9sIFBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKClRlc3QgTm90ZXM6CgphKSBTZW5kIE9GUFRfRUNIT19SRVFVRVNUIGZyb20gdGhlIGNvbnRyb2xsZXIgc2lkZS4KYikgVmVyaWZ5IHN3aXRjaCByZXNwb25kcyBiYWNrIHdpdGggT0ZQVF9FQ0hPX1JFUExZIHdpdGggc2FtZSB4aWQuCmMpIFZlcmlmeSBPcGVuZmxvdyB2ZXJzaW9uIGluIGhlYWRlciBpcyBzZXQgdG8gT3BlbmZsb3cgdmVyc2lvbiAxLjAuMC4KCgoKCgoqKioqICAgICBEZXRhaWxlZCBjb250cm9sbGVyIHRvIHN3aXRjaCBtZXNzYWdlcyAgICAgKioqKgoKCgoxLiBPdmVybGFwIGNoZWNraW5nCgpUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCBpZiBvdmVybGFwIGNoZWNrIGZsYWcgaXMgc2V0IGluIHRoZSBmbG93IGVudHJ5IGFuZCBhbiBvdmVybGFwcGluZyBmbG93IGlzIAoJCSAgaW5zZXJ0ZWQgdGhlbiBhbiBlcnJvciBpcyBnZW5lcmF0ZWQgYW5kIHN3aXRjaCByZWZ1c2VzIGZsb3cgZW50cnkKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBPdmVybGFwQ2hlY2tpbmcKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIGRhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0LU5vdGVzOgoKYSkgR2VuZXJhdGUgRmxvdyBGMS0tPiBXaWxkY2FyZCBBbGwgCmIpIFNlbmQgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QgLCB2ZXJpZnkgYWN0aXZlX2NvdW50PTEKYykgR2VuZXJhdGUgb3ZlcmxhcHBpbmcgZmxvdyBGMiAtLT4gV2lsZGNhcmQgQWxsIEV4Y2VwdCBJbmdyZXNzIFBvcnQgKCB3aXRoIGZsYWcgT0ZQRkZfQ0hFQ0tfT1ZFUkxBUCBzZXQpCmQpIFZlcmlmeSB0aGF0IHN3aXRjaCBnZW5lcmF0ZXMgT0ZQVF9FUlJPUiBtc2cuICAKICAgVHlwZTogT0ZQRVRfRkxPV19NT0RfRkFJTEVEIGNvZGUgOiBPRlBGTUZDX09WRVJMQVAgCgoKCjIuIE5vIG92ZXJsYXAgY2hlY2tpbmcKClRlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IHdpdGhvdXQgb3ZlcmxhcCBjaGVjayBmbGFnIHNldCwgb3ZlcmxhcHBpbmcgZmxvd3MgY2FuIGJlIGNyZWF0ZWQuCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgTm9PdmVybGFwY2hlY2tpbmcKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSwgMiBEYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczoKCmEpIEdlbmVyYXRlIEZsb3cgRjEtLT4gV2lsZGNhcmQgQWxsLgpiKSBTZW5kIG9mcF90YWJsZV9zdGF0cyByZXF1ZXN0ICwgdmVyaWZ5IGFjdGl2ZV9jb3VudD0xCmUpIEdlbmVyYXRlIG92ZXJsYXBwaW5nIGZsb3cgRjIgLS0+IFdpbGRjYXJkIEFsbCBFeGNlcHQgSW5ncmVzcyBQb3J0ICggd2l0aG91dCBmbGFnIE9GUEZGX0NIRUNLX09WRVJMQVAgc2V0KQpjKSBTZW5kIGEgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QsIHZlcmlmeSBhY3RpdmVfY291bnQ9MgoKCgozLiBJZGVudGljYWwgZmxvd3MgCgpUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCBhZGRpbmcgdHdvIGlkZW50aWNhbCBmbG93cyBvdmVyd3JpdGVzIHRoZSBleGlzdGluZyBvbmUgYW5kIGNsZWFycyBjb3VudGVycwoKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogIElkZW50aWNhbEZsb3dzClBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUpLCAoMiBkYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczoKCmEpIEdlbmVyYXRlIEZsb3cgRjEuCmIpIFNlbmQgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QgLCB2ZXJpZnkgYWN0aXZlX2NvdW50PTEKYikgSW5jcmVtZW50IGNvdW50ZXJzIChwYWNrZXRfY291bnQsIGJ5dGVfY291bnQpIGJ5IHNlbmRpbmcgYSBwYWNrZXQgbWF0Y2hpbmcgZmxvdyBGMS4KQykgU2VuZCBvZnBfZmxvd19zdGF0cyByZXF1ZXN0LiBWZXJpZnkgZmxvdyBjb3VudGVyczogYnl0ZV9jb3VudCBhbmQgcGFja2V0X2NvdW50IApjKSBDcmVhdGUgaWRlbnRpY2FsIGZsb3cgRjIKZCkgU2VuZCBhIG9mcF90YWJsZV9zdGF0cyByZXF1ZXN0LCB2ZXJpZnkgYWN0aXZlX2NvdW50PTEKZSkgU2VuZCBvZnBfZmxvd19zdGF0cyByZXF1ZXN0LiBWZXJpZnkgZmxvdyBjb3VudGVyczogYnl0ZV9jb3VudCBhbmQgcGFja2V0X2NvdW50IGFyZSByZXNldAoKCgo0LiBObyB0YWJsZSB0byBhZGQgKFdyaXR0ZW4gaW4gb2Z0ZXN0l05lZWQgdG8gYWRkIHRvIGNvbmZvcm1hbmNlIFRlc3QtU3VpdGVzKQoKCgo1LiBOZXZlciB2YWxpZCBwb3J0IChUQkQpCgoKCgo2LiBDdXJyZW50bHkgbm90IGV4aXN0aW5nIHBvcnQgVmVyc2lvbiBBIGFuZCBCIChUQkQpCgoKCgo3LiBFbWVyZ2VuY3kgZmxvdyB3aXRoIHRpbWVvdXQgdmFsdWVzIAoKVGVzdCBEZXNjcmlwdGlvbjogVGltZW91dCB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkIGZvciBlbWVyZ2VuY3kgZmxvd3MKClRlc3QgVGl0bGU6IEVtZXJGbG93VGltZW91dApUZXN0IG1vZGU6IEF1dG9tYXRlZApQb3J0czogMyAoMSBjb250cm9sIHBsYW5lLCAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cCAKCgpUZXN0IE5vdGVzOgoKYSkgIEdlbmVyYXRlIGEgZmxvdyBGIHdpdGggT0ZQRkZfRU1FUkcgc2V0IGluIGZsYWcgYW5kIHRpbWVvdXQgdmFsdWVzIGFzc2lnbmVkLgpiKSAgVmVyaWZ5IHN3aXRjaCBnZW5lcmF0ZXMgYW4gT0ZQVF9FUlJPUiBtc2csIFR5cGU6IE9GUEVUX0ZMT1dfTU9EX0ZBSUxFRCwgQ29kZSBPRlBGTUZDX0JBRF9FTUVSR19USU1FT1VUCgoKCjguIE1pc3NpbmcgbW9kaWZ5IGFkZHMKClRlc3QgRGVzY3JpcHRpb246IElmIGEgbW9kaWZ5IGRvZXMgbm90IG1hdGNoIGFuIGV4aXN0aW5nIGZsb3csIHRoZSBmbG93IGdldHMgYWRkZWQuCgpUaXRsZTogTWlzc2luZ01vZGlmeUFkZApUZXN0IG1vZGU6IEF1dG9tYXRlZApQb3J0czozICgxIGNvbnRyb2wgcGxhbmUsMiBEYXRhIFBsYW5lKQpJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczoKCmEpIEdlbmVyYXRlIGEgZmxvdy1tb2QgLCBjb21tYW5kIE9GUENfTU9ESUZZIChOb3RlOiBUaGVyZSBzaG91bGQgYmUgbm8gZmxvd3MgbWF0Y2hpbmcgdGhpcyBmbG93X21vZCBtb2RpZnkgY29tbWFuZCkKYikgU2VuZCBhIG9mcF90YWJsZV9zdGF0cyByZXF1ZXN0LCB2ZXJpZnkgYWN0aXZlX2NvdW50PTEKCgoKCjkuIE1vZGlmeSBjaGFuZ2VzIGFjdGlvbiwgcHJlc2VydmVzIGNvdW50ZXJzCgpUZXN0IERlc2NyaXB0aW9uOiBBIG1vZGlmaWVkIGZsb3cgcHJlc2VydmVzIGNvdW50ZXJzCgpUaXRsZTogTW9kaWZ5QWN0aW9uClRlc3QgbW9kZTogQXV0b21hdGVkClBvcnRzOiA0KDEgY29udHJvbCBwbGFuZSwgMyBEYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IENvbm5lY3Rpb24gc2V0dXAsIENsZWFyIFN3aXRjaCBTdGF0ZQpUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOgoKYSkgQ3JlYXRlIGEgZmxvd19tb2QgRi0xIHdpdGggY29tbWFuZCBPRlBDX0FERCwgYWN0aW9uIEEKYikgU2VuZCBhIHRlc3QgUGFja2V0IG1hdGNoaW5nIHRoZSBmbG93CmMpIFNlbmQgYW4gb2ZwX2Zsb3dfc3RhdHMgcmVxdWVzdCwgdmVyaWZ5IGJ5dGVfY291bnQgYW5kIHBhY2tldF9jb3VudAplKSBDcmVhdGUgZmxvd19tb2Qgd2l0aCBjb21tYW5kIE9GUENfTU9ESUZZICxhY3Rpb24gQZIgYW5kIG1vZGlmeSBhY3Rpb24gb2YgZmxvdyBGLTEKZikgU2VuZCBhIG9mcF9mbG93X3N0YXRzIHJlcXVlc3QsIHZlcmlmeSBmbG93IGNvdW50ZXJzIGFyZSBwcmVzZXJ2ZWQKZykgU2VuZCB0ZXN0IHBhY2tldCwgdmVyaWZ5IGl0IGltcGxlbWVudHMgYWN0aW9uIEGSCgoKCjEwLiBTdHJpY3QgTW9kaWZ5IGNoYW5nZXMgYWN0aW9uLCBwcmVzZXJ2ZXMgY291bnRlcnMKClRlc3QgRGVzY3JpcHRpb246IFN0cmljdCBNb2RpZnkgRmxvdyBhbHNvIGNoYW5nZXMgYWN0aW9uIHByZXNlcnZlcyBjb3VudGVycwoKVGl0bGU6IFN0cmljdE1vZGlmeUFjdGlvbgpUZXN0IG1vZGU6IEF1dG9tYXRlZApQb3J0czogNCgxIGNvbnRyb2wgcGxhbmUsIDMgRGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczoKCmEpIENyZWF0ZSB0d28gb3ZlcmxhcHBpbmcgZmxvd3M6IEYgLS0+IE1hdGNoIG9uIGFsbCwgZXhjZXB0IG9uZSB3aWxkY2FyZGVkIChzcmMgYWRkcmVzcykuIEFjdGlvbiBBLiBQcmlvcml0eT0xMDAgCiAgIEaSIC0tPiBNYXRjaCBvbiBpbmdyZXNzX3BvcnQgPSBwb3J0IFswXSwgd2lsZGNhcmRlZCByZXN0LiBBY3Rpb24gQS4gUHJpb3JpdHk9MTAKYikgU2VuZCBhIG9mcF90YWJsZV9zdGF0cyByZXF1ZXN0LCB2ZXJpZnkgYWN0aXZlX2NvdW50PTIKYykgU2VuZCBQYWNrZXQgKGl0IHdvdWxkIGhhdmUgbWF0Y2hlZCBib3RoIHRoZSBmbG93cywgc2luY2UgdGhleSBhcmUgb3ZlcmxhcHBpbmcgZmxvd3MgYnV0IGl0IHdvdWxkIG1hdGNoIEZsb3ctRjEgYXMgaXQgaGFzIGhpZ2hlciBwcmlvcml0eS4pCmQpIFNlbmQgb2ZwX2Zsb3dfc3RhdHMgcmVxdWVzdCBmb3IgRmxvdy0xIGFuZCB2ZXJpZnkgY291bnRlcnMgcGFja2V0X2NvdW50IGFuZCBieXRlX2NvdW50IAplKSBDcmVhdGUgZmxvd19tb2QgLGNvbW1hbmQgT0ZQQ19TVFJJQ1RfTU9ESUZZLG1hdGNoIG9uIGFsbCBleGNlcHQgc3JjIGFkZHJlc3MgLHByaW9yaXR5IDEwMCBhY3Rpb24gQZIKZikgU2VuZCB0ZXN0IHBhY2tldCAsIHZlcmlmeSBhY3Rpb24gaXMgbW9kaWZpZWQKZykgU2VuZCBvZnBfZmxvd19zdGF0cyByZXF1ZXN0LCB2ZXJpZnkgY291bnRlcnMgYXJlIHByZXNlcnZlZC4KCgoKCjExLiBEZWxldGUgbm9uIGV4aXN0aW5nIGZsb3cgCgpUZXN0IERlc2NyaXB0aW9uOiBSZXF1ZXN0IGRlbGV0aW9uIG9mIG5vbi1leGlzdGluZyBmbG93CgpUaXRsZTogRGVsZXRlTm9uZXhpc3RpbmdGbG93ClRlc3QgbW9kZTogQXV0b21hdGVkClBvcnRzOiAxKDEgY29udHJvbCBwbGFuZSkKSW5pdGlhbCBTdGF0ZTogQ29ubmVjdGlvbiBzZXR1cCwgQ2xlYXIgU3dpdGNoIFN0YXRlClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKClRlc3QgTm90ZXM6CgphKSBJc3N1ZSBhIGRlbGV0ZSBjb21tYW5kLCB3aXRoIG5vIGZsb3dzIGluc2VydGVkCmIpIE1ha2Ugc3VyZSBubyBlcnJvciBpcyBnZW5lcmF0ZWQgb24gdGhlIGNvbnRyb2wgcGxhbmUKCgoKMTIuIERlbGV0ZSBmbG93cyB3aXRoIGFuZCB3aXRob3V0IHJlbW92ZWQgbWVzc2FnZQoKVGVzdCBEZXNjcmlwdGlvbjogQ2hlY2sgZGVsZXRpb24gb2YgZmxvd3MgaGFwcGVucyBhbmQgZ2VuZXJhdGVzIG1lc3NhZ2VzIGFzIGNvbmZpZ3VyZWQuIGkuZS4gaWYgkVNlbmQgRmxvdyByZW1vdmVkIG1lc3NhZ2WSRmxhZyAKCSAgICAgICAgICBpcyBzZXQgaW4gdGhlIGZsb3cgZW50cnksIHRoZSBmbG93IGRlbGV0aW9uIG9mIHRoYXQgcmVzcGVjdGl2ZSBmbG93IHNob3VsZCBnZW5lcmF0ZSB0aGUgZmxvdyByZW1vdmVkIG1lc3NhZ2UsIAoJCSAgdmljZSB2ZXJzYSBhbHNvIGV4aXN0cyAKClRlc3QgVGl0bGU6IFNlbmRGbG93UmVtClRlc3QgbW9kZTogQXV0b21hdGVkClBvcnRzOiAzICgxIGNvbnRyb2wgcGxhbmUsIDIgRGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBEZWZhdWx0IChjbGVhciBzd2l0Y2ggc3RhdGUpClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKClRlc3QgTm90ZXM6CgphKSBHZW5lcmF0ZSBhIGZsb3cgRiB3aXRob3V0IE9GUEZGX1NFTkRfRkxPV19SRU0gZmxhZyBzZXQKYikgSXNzdWUgYSBkZWxldGUgY29tbWFuZCBPRlBGQ19ERUxFVEUKYykgVmVyaWZ5IHRoYXQgT0ZQVF9GTE9XX1JFTU9WRUQgbWVzc2FnZSBpcyBub3QgZ2VuZXJhdGVkLgpjKSBHZW5lcmF0ZSBhIGZsb3cgRpIgd2l0aCBPRlBGRl9TRU5EX0ZMT1dfUkVNIGZsYWcgc2V0CmQpIElzc3VlIGEgZGVsZXRlIGNvbW1hbmQgT0ZQRkNfREVMRVRFCmUpIFZlcmlmeSB0aGF0IE9GUFRfRkxPV19SRU1PVkVEIG1lc3NhZ2UgaXMgZ2VuZXJhdGVkCgoKCjEzLiBEZWxldGUgZW1lcmdlbmN5IGZsb3cgCgpUZXN0IERlc2NyaXB0aW9uOiBEZWxldGUgZW1lcmdlbmN5IGZsb3cgYW5kIHZlcmlmeSBubyBtZXNzYWdlIGlzIGdlbmVyYXRlZC5BbiBlbWVyZ2VuY3kgZmxvdyBkZWxldGlvbiB3aWxsIG5vdCBnZW5lcmF0ZSAKCQkgIGZsb3ctcmVtb3ZlZCBtZXNzYWdlcyBldmVuIGlmIJFTZW5kIEZsb3cgcmVtb3ZlZCBtZXNzYWdlkiBmbGFnIHdhcyBzZXQgZHVyaW5nIHRoZSBlbWVyZ2VuY3kgZmxvdyBlbnRyeS4KCQkgIAoKVGl0bGU6IERlbGV0ZUVtZXJGbG93ClRlc3QgbW9kZTogQXV0b21hdGVkClBvcnRzOiAzICgxIGNvbnRyb2wgcGxhbmUsIDIgRGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUgKGRlZmF1bHQpIAoKClRlc3QtTm90ZXM6CgphKSBJbnNlcnQgYSBmbG93IHdpdGggT0ZQRkZfRU1FUkcgZmxhZyBzZXQuCmIpIERlbGV0ZSB0aGUgYWRkZWQgZmxvdyB3aXRoIE9GUEZGX1NFTkRfRkxPV19SRU0gZmxhZyBzZXQKYykgVGVzdCBzdWNjZXNzZnVsIGlmIG5vIGZsb3cgcmVtb3ZlZCBtZXNzYWdlIGlzIGdlbmVyYXRlZC4KCgoKMTQuIERlbGV0ZSBhbmQgdmVyaWZ5IHN0cmljdCBhbmQgbm9uLXN0cmljdCAKClRlc3QgRGVzY3JpcHRpb246IERlbGV0ZSBhbmQgdmVyaWZ5IHN0cmljdCBhbmQgbm9uLXN0cmljdCBiZWhhdmlvcnMKClRoaXMgdGVzdCBjb21wYXJlcyB0aGUgYmVoYXZpb3Igb2YgZGVsZXRlIHN0cmljdCBhbmQgbm9uLXN0cmljdC4KVGl0bGU6IFN0cmljdFZzTm9uc3RyaWN0ClRlc3QgbW9kZTogQXV0b21hdGVkClBvcnRzOiAzICgxIGNvbnRyb2wgcGxhbmUsIDIgZGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUKCgpUZXN0LU5vdGVzOgoKYSkgSW5zZXJ0IEZsb3cgRiB3aXRoIGFuIGV4YWN0IG1hdGNoLiAKYikgSXNzdWUgTm9uLXN0cmljdCBEZWxldGUgY29tbWFuZCwgdmVyaWZ5IEYgZ2V0cyBkZWxldGVkLiAKYykgSW5zZXJ0IEYgd2l0aCBhbiBleGFjdCBNYXRjaCAKZCkgSXNzdWUgU3RyaWN0IERlbGV0ZSBDb21tYW5kLCB2ZXJpZnkgRiBnZXRzIGRlbGV0ZWQuCmUpIEluc2VydCBGbG93IFQgd2l0aCBtYXRjaCBvbiBhbGwsIGV4Y2VwdCBvbmUgd2lsZGNhcmRlZCAoc2F5IHNyYyBhZGRyZXNzKS4gIApmKSBJbnNlcnQgYW5vdGhlciBmbG93IFQnIHdpdGggbWF0Y2ggb24gaW5ncmVzc19wb3J0LCB3aWxkY2FyZGVkIHJlc3QuICAKZykgSXNzdWUgTm9uLXN0cmljdCBEZWxldGUgKCBtYXRjaCBvbiBpbmdyZXNzX3BvcnQpLiBWZXJpZnkgVCtUJyBnZXRzIGRlbGV0ZWQuIApoKSBJbnNlcnQgVCBhbmQgVCcgYWdhaW4uIElzc3VlIFN0cmljdCBEZWxldGUgKG1hdGNoIG9uIGluZ3Jlc3MgcG9ydCksIHZlcmlmeSBvbmx5IFQnIGdldHMgZGVsZXRlZAppKSBJbnNlcnQgVCwgYWRkIFByaW9yaXR5IFAgKHNheSAxMDApIApqKSBJbnNlcnQgVCcgYWRkIHByaW9yaXR5ICgyMDApLiAKaykgSW5zZXJ0IFQnIGFnYWluIGFkZCBwcmlvcml0eSAzMDAgLS0+IFSUCmwpIElzc3VlIE5vbi1TdHJpY3QgRGVsZXRlIChtYXRjaCBvbiBpbmdyZXNzIHBvcnQpLiBWZXJpZnkgVCtUkitUkpIgZ2V0cyBkZWxldGVkLiAKbSkgSW5zZXJ0IFQsIFSSLCBUkpIgYWdhaW4sIElzc3VlIFN0cmljdCBEZWxldGUgKG1hdGNoIG9uIGluZ3Jlc3NfcG9ydCkgd2l0aCBwcmlvcml0eSA9IDIwMC4gVmVyaWZ5IG9ubHkgVJIgZ2V0cyBkZWxldGVkCgoKCjE1LiBEZWxldGUgZmxvd3Mgd2l0aCBjb25zdHJhaW50IG91dF9wb3J0CgpUZXN0IERlc2NyaXB0aW9uOiBEZWxldGUgZmxvd3MgZmlsdGVyZWQgYnkgYWN0aW9uIG91dHB1dC5ERUxFVEUgYW5kIERFTEVURSBTVFJJQ1QgY29tbWFuZHMgY2FuIGJlIG9wdGlvbmFsbHkgZmlsdGVyZWQgYnkgb3V0cHV0IHBvcnQuCgkJICBJZiB0aGUgb3V0X3BvcnQgZmllbGQgY29udGFpbnMgYSB2YWx1ZSBvdGhlciB0aGFuIE9GUFBfTk9ORSwgaXQgaW50cm9kdWNlcyBhIGNvbnN0cmFpbnQgd2hlbiBtYXRjaGluZy4gCgkJICBUaGlzIGNvbnN0cmFpbnQgaXMgdGhhdCB0aGUgcnVsZSBtdXN0IGNvbnRhaW4gYW4gb3V0cHV0IGFjdGlvbiBkaXJlY3RlZCBhdCB0aGF0IHBvcnQuCgpUaXRsZTogT3V0cG9ydDEKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKUG9ydHM6IDMgKDEgY29udHJvbCBwbGFuZSwgMiBEYXRhcGxhbmVzKQpJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdC1Ob3RlczoKCmEpIEluc2VydCBhIGZsb3cgRiAgd2l0aCBvdXRwdXQgYWN0aW9uID0gcG9ydCB4IApiKSBTZW5kIGEgZGVsZXRlIGNvbW1hbmQgbWF0Y2hpbmcgZmxvdyBGICxidXQgIG91dF9wb3J0ID1wb3J0IHkKYykgU2VuZCBhIHRhYmxlX3N0YXRzIHJlcXVlc3QgLCB2ZXJpZnkgbm8gZmxvdyBnZXRzIGRlbGV0ZWQgaS5lLiBhY3RpdmVfY291bnQ9MQpkKSBTZW5kIGEgZGVsZXRlIGNvbW1hbmQgbWF0Y2hpbmcgZmxvdyBGICxvdXRwb3J0ID0gcG9ydCB4CmUpIFNlbmQgYSB0YWJsZV9zdGF0cyByZXF1ZXN0LCB2ZXJpZnkgZmxvdyBGIGdldHMgZGVsZXRlZC4KCgoKMTYuIEFkZCwgbW9kaWZ5IGZsb3dzIHdpdGggY29uc3RyYWludCBvdXRwdXQKClRlc3QgRGVzY3JpcHRpb246IEFkZCwgbW9kaWZ5IGZsb3dzIHdpdGggb3V0cG9ydCBzZXQuIFRoaXMgZmllbGQgaXMgaWdub3JlZCBieSBBREQsIE1PRElGWSwgYW5kIE1PRElGWSBTVFJJQ1QgbWVzc2FnZXMuCgpUaXRsZTogT3V0cG9ydDIKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKUG9ydHM6IDQgKDEgY29udHJvbCBwbGFuZSwgMyBEYXRhIHBsYW5lcykKSW5pdGlhbCBTdGF0ZTogQ29ubmVjdGlvbiBzZXR1cCwgQ2xlYXIgU3dpdGNoIFN0YXRlClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKVGVzdC1Ob3RlczoKCmEpIEluc2VydCBhIGZsb3cgRiB3aXRoIGFjdGlvbiBBIChvdXRwdXQgLS0+IHBvcnQgeCkgLCBidXQgb3V0X3BvcnQgZmllbGQgaW4gdGhlIGZsb3cgbW9kIHNldCBhcyBwb3J0IHkKYikgU2VuZCBUYWJsZV9TdGF0c19SZXF1ZXN0LCBWZXJpZnkgRmxvdyBnZXRzIGluc2VydGVkLiAoIEZsb3cgYWRkIGlnbm9yZXMgb3V0X3BvcnQgZmllbGQpCmMpIE1vZGlmeSB0aGUgYWN0aW9uIGluIGZsb3cgRiAsIGFjdGlvbiBBkiAoIG91dHB1dCAtLT5wb3J0IHogKSwgYnV0IG91dF9wb3J0IGZpZWxkIGluIHRoZSBmbG93IG1vZCBzZXQgYXMgcG9ydCB5CmQpIFNlbmQgdGVzdCBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgRiAKZSkgVmVyaWZ5IHBhY2tldCBpbXBsZW1lbnRzIGFjdGlvbiBBkiAoZmxvdyBtb2RpZnkgaWdub3JlcyBvdXRfcG9ydCBmaWVsZCkKCgoKMTcuIFZlcmlmeSB0aGF0IGlkbGUgdGltZW91dCBpcyBpbXBsZW1lbnRlZAoKVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgaWRsZSB0aW1lb3V0IGlzIGltcGxlbWVudGVkCgpUaXRsZTogSWRsZVRpbWVvdXQKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKUG9ydHM6IDMgKDEgY29udHJvbCBwbGFuZSwgMiBEYXRhcGxhbmVzKQpJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdC1Ob3RlczoKCmEpIEFkZCBhIGZsb3cgd2l0aCBpZGxlIHRpbWVvdXQgc2V0IGFuZCB3aXRoIE9GUFBfU0VORF9GTE9XX1JFTSBiaXQgc2V0CmIpIFZlcmlmeSBmbG93IHJlbW92ZWQgbWVzc2FnZSBpcyByZWNlaXZlZC4KYykgVmVyaWZ5IGZsb3cgcmVtb3ZlZCByZWFzb24gd2FzIGlkbGVfdGltZW91dApkKSBWZXJpZnkgdGhlIGR1cmF0aW9uX3NlYyBmaWVsZCBpcyAxIHNlYyAKCgoKMTguIFZlcmlmeSB0aGF0IGhhcmQgdGltZW91dCBpcyBpbXBsZW1lbnRlZAoKVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgaGFyZCB0aW1lb3V0IGlzIGltcGxlbWVudGVkCgpUaXRsZTogSGFyZFRpbWVvdXQKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKUG9ydHM6IDMgKDEgY29udHJvbCBwbGFuZSwgMiBEYXRhcGxhbmVzKQpJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUgClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKClRlc3QtTm90ZXM6CgphKSBBZGQgYSBmbG93IHdpdGggaGFyZCB0aW1lb3V0ID0xIHNldCBhbmQgd2l0aCBPRlBQX1NFTkRfRkxPV19SRU0gYml0IHNldApiKSBWZXJpZnkgZmxvdyByZW1vdmVkIG1lc3NhZ2UgaXMgcmVjZWl2ZWQuCmMpIFZlcmlmeSBmbG93IHJlbW92ZWQgcmVhc29uIHdhcyBoYXJkX3RpbWVvdXQKZCkgVmVyaWZ5IHRoZSBkdXJhdGlvbl9zZWMgZmllbGQgaXMgMSBzZWMgCgoKCjE5LiBWZXJpZnkgdGhhdCBtZXNzYWdlcyBhcmUgZ2VuZXJhdGVkIGFzIGV4cGVjdGVkCgpUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCBGbG93IHJlbW92ZWQgbWVzc2FnZXMgYXJlIGdlbmVyYXRlZCBhcyBleHBlY3RlZAoJICAgICAgICAgIC8qIFNpbmNlIJNmbG93IHJlbW92ZWQgbWVzc2FnZXMgYmVpbmcgZ2VuZXJhdGVkIHdoZW4gZmxhZyBpcyBzZXSUIGlzIGFscmVhZHkgdGVzdGVkIGluIHRoZSBhYm92ZSB0ZXN0cyAKICAgICAgICAgICAgICAgICAgU28gaGVyZSwgd2UgdGVzdCB0aGUgdmljZS12ZXJzYSBjb25kaXRpb24uKi8KClRpdGxlOiBGbG93VGltZW91dApUZXN0IG1vZGU6IEF1dG9tYXRlZApQb3J0czogMyAoMWNvbnRyb2wgcGxhbmUsIDFkYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IENvbm5lY3Rpb24gc2V0dXAsIENsZWFyIFN3aXRjaCBTdGF0ZSAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdC1Ob3RlczoKCmEpICBHZW5lcmF0ZSBhbmQgaW5zdGFsbCBhIGZsb3cgd2l0aCBpZGxlX3RpbWVvdXQgPSAxIHNldCBubyBPRlBGRl9TRU5EX0ZMT1dfUkVNIGZsYWcgc2V0LgpiKSAgVmVyaWZ5IG5vIGZsb3cgcmVtb3ZlZCBtZXNzYWdlIGlzIHJlY2VpdmVkLgpjKSAgU2VuZCB0YWJsZV9zdGF0c19yZXF1ZXN0IG1lc3NhZ2UgYW5kIHZlcmlmeSBhY3RpdmVfY291bnQ9MCAKCgoKCgoqKiogICBBY3Rpb25zICAgKioqCgoKCjEuIE5vIEFjdGlvbiBkcm9wcyBwYWNrZXQgCgpUZXN0IERlc2NyaXB0aW9uOiBJZiBubyBmb3J3YXJkIGFjdGlvbnMgYXJlIHByZXNlbnQsIHRoZSBwYWNrZXQgaXMgZHJvcHBlZC4gCgkJClJlcXVpcmVkIEFjdGlvbjogRHJvcC4gCkEgZmxvdy1lbnRyeSB3aXRoIG5vIHNwZWNpZmllZCBhY3Rpb24gaW5kaWNhdGVzIHRoYXQgYWxsIG1hdGNoaW5nIHBhY2tldHMgc2hvdWxkIGJlIGRyb3BwZWQuIApUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgTm9BY3Rpb24KUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOgoKYSkgU2VuZCBGbG93IG1vZCBtZXNzYWdlIHdpdGhvdXQgYW55IGFjdGlvbiBzcGVjaWZpZWQKYikgU2VuZCBOIHBhY2tldHMgbWF0Y2hpbmcgdGhlIGZsb3cgCmMpIFZlcmlmeSBwYWNrZXRzIGFyZSBub3QgcmVjZWl2ZWQgb24gYW55IG9mIHRoZSBkYXRhcGxhbmUgcG9ydHMgCmQpIFZlcmlmeSBwYWNrZXRzIGFyZSBub3QgZXZlbiBzZW50IHRvIHRoZSBjb250cm9sbGVyCgoKCjIuICBHZXQgc3VwcG9ydGVkIGFjdGlvbnMgZnJvbSBzd2l0Y2gKClRlc3QgRGVzY3JpcHRpb246IEdldCB0aGUgc3VwcG9ydGVkIGFjdGlvbnMgZnJvbSBzd2l0Y2ggYW5kIG1ha2Ugc2FuaXR5IGNoZWNrcy4KCQkgIC8qV2hlbiBjb25uZWN0aW5nIHRvIHRoZSBjb250cm9sbGVyLCBhIHN3aXRjaCBpbmRpY2F0ZSB3aGljaCBvZiB0aGUgk09wdGlvbmFsIEFjdGlvbnOUIGl0IHN1cHBvcnRzKi8KClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBBbm5vdW5jZW1lbnQKUG9ydHM6IDEgKENvbnRyb2wgUGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CiAgICAgICAKClRlc3QgTm90ZXM6IAoKYSkgU2VuZCBmZWF0dXJlc19yZXF1ZXN0IC4KYikgVmVyaWZ5IHJlc3BvbnNlIGlzIE9GUFRfRkVBVFVSRVNfUkVQTFkKYykgVmVyaWZ5IHJlcGx5IGhhcyBzdXBwb3J0ZWQgYWN0aW9uIGxpc3Qgc3BlY2lmaWVkCgoKCjMuIEZvcndhcmQgQWxsCgpUZXN0IERlc2NyaXB0aW9uOiBQYWNrZXQgaXMgc2VudCB0byBhbGwgZGF0YXBsYW5lIHBvcnRzIGV4Y2VwdCBpbmdyZXNzIHBvcnQgd2hlbiBvdXRwdXQgYWN0aW9uLnBvcnQgPSBPRlBQX0FMTAoKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogIEZvcndhcmRBbGwKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCiAgICAgICAKVGVzdCBOb3RlczogCgphKSBJbnN0YWxsIGEgZmxvdyB3aXRoIG91dHB1dCBhY3Rpb24ucG9ydCA9IE9GUFBfQUxMLgpiKSBWZXJpZnkgcGFja2V0cyBhcmUgZm9yd2FyZGVkIHRvIGFsbCBwb3J0cyBleGNlcHQgaW5ncmVzcyBwb3J0LgoKCgo0LiBGb3J3YXJkIENvbnRyb2xsZXIgCgpUZXN0IERlc2NyaXB0aW9uOiBQYWNrZXQgaXMgc2VudCB0byBjb250cm9sbGVyIG91dHB1dC5wb3J0ID0gT0ZQUF9DT05UUk9MTEVSCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgRm9yd2FyZENvbnRyb2xsZXIKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCiAgICAgICAKVGVzdCBOb3RlczogCgphKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uIG91dHB1dCBwb3J0ID0gT0ZQUF9DT05UUk9MTEVSCmIpIFNlbmQgcGFja2V0cyBtYXRjaGluZyB0aGUgZmxvdwpjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIG9uIHRoZSBjb250cm9sIHBsYW5lIGFzIGEgcGFja2V0X2luIG1lc3NhZ2UKCgoKNS4gRm9yd2FyZCBMb2NhbCAoVEJEIJYgVmVyaWZpY2F0aW9uIG9mIHBhY2tldCBiZWluZyByZWNlaXZlZCBhdCBsb2NhbCBuZXR3b3JraW5nIHN0YWNrKQoKVGVzdCBEZXNjcmlwdGlvbjogUGFja2V0IGlzIHNlbnQgdG8gc3dpdGNoknMgbG9jYWwgbmV0d29ya2luZyBzdGFjayBpZiBvdXRwdXQucG9ydCA9IE9GUFBfTE9DQUwKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBGb3J3YXJkTG9jYWwKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCiAgICAgICAKVGVzdCBOb3RlczogCgphKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uIG91dHB1dCBwb3J0ID0gT0ZQUF9MT0NBTApiKSBTZW5kIHBhY2tldHMgbWF0Y2hpbmcgdGhlIGZsb3cKYykgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBpbiB0aGUgc3dpdGNoknMgbG9jYWwgbmV0d29ya2luZyBzdGFjay4KCgoKNi4gRm9yd2FyZCBUYWJsZQoKVGVzdCBEZXNjcmlwdGlvbjogUGVyZm9ybSBhY3Rpb25zIGluIGZsb3cgdGFibGUuIE9ubHkgZm9yIHBhY2tldC1vdXQgbWVzc2FnZXMuCgkJICAvKklmIHRoZSBvdXRwdXQgYWN0aW9uLnBvcnQgaW4gdGhlIHBhY2tldG91dCBtZXNzYWdlID0gT0ZQLlRBQkxFLCB0aGVuIHRoZSBwYWNrZXQgaW1wbGVtZW50cyB0aGUgYWN0aW9uIAoJCSAgc3BlY2lmaWVkIGluIHRoZSBtYXRjaGluZyBmbG93IG9mIHRoZSBGTE9XLVRBQkxFKi8KClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBGb3J3YXJkVGFibGUKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKClRlc3QgTm90ZXM6IAoKYSkgSW5zZXJ0IGEgZmxvdyBGIHdpdGggYWN0aW9uIG91dHB1dC5wb3J0ID0gZWdyZXNzX3BvcnQKYikgU2VuZCBhIE9GUFRfUEFDS0VUX09VVCBtZXNzYWdlIHdpdGggb3V0IHBvcnQ9T0ZQUF9UQUJMRSBtYXRjaGluZyBmbG93IEYgCmMpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgb24gZWdyZXNzX3BvcnQgKGkuZSBwYWNrZXRvdXQgbWVzc2FnZSBpbXBsZW1lbnRlZCB0aGUgYWN0aW9uIHNwZWNpZmllZCBpbiB0aGUgbWF0Y2hpbmcgZmxvdyBvZiB0aGUgVGFibGUpCgoKCjcuIEZvcndhcmQgSW4gUG9ydAoKVGVzdCBEZXNjcmlwdGlvbjogUGFja2V0IGlzIHNlbnQgdG8gaW5wdXQgcG9ydCBpZiBvdXRwdXQucG9ydCA9IE9GUFBfSU5QT1JUCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgRm9yd2FyZElucG9ydApQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKVGVzdCBOb3RlczogCgphKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uIG91dHB1dCBwb3J0ID0gT0ZQUF9JTlBPUlQKYikgU2VuZCBwYWNrZXRzIG1hdGNoaW5nIHRoZSBmbG93CmMpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgb24gYWxsIGRhdGFwbGFuZSBwb3J0cyBleGNlcHQgZm9yIGlucHV0IHBvcnQKCgoKOC4gRm9yd2FyZCBGbG9vZAoKVGVzdCBEZXNjcmlwdGlvbjpGbG9vZCB0aGUgcGFja2V0IGFsb25nIHRoZSBtaW5pbXVtIHNwYW5uaW5nIHRyZWUsIG5vdCBpbmNsdWRpbmcgdGhlIGluY29taW5nIGludGVyZmFjZS4gCgkJIFBhY2tldCBpcyBzZW50IGFsbCB0aGUgZGF0YXBsYW5lIHBvcnRzIGV4Y2VwdCB0aGUgaW5wdXQgcG9ydCBpZiBvdXRwdXQucG9ydCA9IE9GUFBfRkxPT0QKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBGb3J3YXJkX0Zsb29kClBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogT3B0aW9uYWwKClRlc3QgTm90ZXM6IAoKYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiBvdXRwdXQgcG9ydCA9IE9GUFBfRkxPT0QKYikgU2VuZCBwYWNrZXRzIG1hdGNoaW5nIHRoZSBmbG93CmMpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgb24gYWxsIGRhdGFwbGFuZSBwb3J0cyBleGNlcHQgZm9yIGlucHV0IHBvcnQKCgoKOS4gTXVsdGlwbGUgUG9ydHMgLS0gVEJECgoKCgoxMC4gRm9yd2FyZCBFbnF1ZXVlIC0tLSBUQkQKCgoKCjExLiBTZXQgVkxBTiBJZAoKVGVzdCBEZXNjcmlwdGlvbjogQXR0YWNoIFZMQU4gSUQgdG8gdW50YWdnZWQgcGFja2V0LgogICAgICAgICAgICAgICAgICBJZiBubyBWTEFOIGlzIHByZXNlbnQsIGEgbmV3IGhlYWRlciBpcyBhZGRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgVkxBTiBJRCBhbmQgcHJpb3JpdHkgb2YgemVyby4KClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBBZGRWbGFuSWQKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBPcHRpb25hbAoKICAgICAgIApUZXN0IE5vdGVzOiAKCmEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfVkxBTl9WSUQgLCB2bGFuX3ZpZCA9IHggCmIpIFNlbmQgcGFja2V0IChsZW5ndGggPSAxMDAgYnl0ZXMpIG1hdGNoaW5nIHRoZSBmbG93CmIpICAgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBoYXMgdmxhbiBpZCBhZGRlZCB0byBpdC4gKEkuZSBsZW5ndGggb2YgcGFja2V0IHdpdGggdmlkIGlzIDEwNCBieXRlcywgZGxfdmxhbl9lbmFibGUgPSBUcnVlLCBkbF92bGFuPSB4LCBkbF92bGFuX3BjcD0wKSAgCiAgIAoKCjEyLiBNb2RpZnkgVkxBTiBJZAoKVGVzdCBEZXNjcmlwdGlvbjogTW9kaWZpZXMgVmxhbiBUYWcgZm9yIGEgdGFnZ2VkIHBhY2tldAoJCSAgSWYgYSBWTEFOIGhlYWRlciBhbHJlYWR5IGV4aXN0cywgdGhlIFZMQU4gSUQgaXMgcmVwbGFjZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHZhbHVlCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgTW9kaWZ5VmxhbklkClBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogT3B0aW9uYWwKCgpUZXN0IE5vdGVzOiAKYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiA9IE9GUEFUX1NFVF9WTEFOX1ZJRCAsIHZsYW5fdmlkID0geCAKYikgICBTZW5kIHBhY2tldCAobGVuZ3RoID0gMTAwIGJ5dGVzKSBtYXRjaGluZyB0aGUgZmxvdwpjKSAgIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIHZsYW4gaWQgcmV3cml0dGVuLiAoSS5lIGxlbmd0aCBvZiAxMDQgYnl0ZXMsIGRsX3ZsYW5fZW5hYmxlID0gVHJ1ZSwgZGxfdmxhbj14KSAgCgoKCjEzLiBBZGQgVkxBTiBQcmlvcml0eSB0byBhbiB1bnRhZ2dlZCBwYWNrZXQKClRlc3QgRGVzY3JpcHRpb246IEF0dGFjaCBWTEFOIHByaW9yaXR5IHRvIGFuIHVudGFnZ2VkIHBhY2tldC4KCQkgIFNpbmNlLCBubyBWTEFOIElEIGlzIHByZXNlbnQ7IGEgbmV3IGhlYWRlciBpcyBhZGRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgcHJpb3JpdHkgYW5kIGEgVkxBTiBJRCBvZiB6ZXJvLlwKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBWbGFuUHJpbzEKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBPcHRpb25hbAoKICAgICAgIApUZXN0IE5vdGVzOiAKCmEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfVkxBTl9QQ1AgLCBkbF92bGFuX3BjcCA9eApiKSBTZW5kIHVudGFnZ2VkIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyAgCmMpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIHZsYW4gcHJpb3JpdHkgYWRkZWQgdG8gaXQgYWxvbmcgd2l0aCBhIHZpZCB2YWx1ZSBvZiB6ZXJvIGFkZGVkIGJ5IGRlZmF1bHQgICAoZGxfdmxhbl9lbmFibGUgLCBkbF92bGFuID0gMCAsIGRsX3ZsYW5fcGNwID14ICkKCgoKMTQuIFJld3JpdGUgZXhpc3RpbmcgVkxBTiBwcmlvcml0eQoKVGVzdCBEZXNjcmlwdGlvbjogTW9kaWZ5IFZMQU4gcHJpb3JpdHkgZm9yIGEgdGFnZ2VkIHBhY2tldC4KClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBWbGFuUHJpbzIKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBPcHRpb25hbAoKICAgICAgIApUZXN0IE5vdGVzOiAKCmEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfVkxBTl9QQ1AgLCBkbF92bGFuX3BjcCA9bmV3X3ZsYW5fcGNwCmIpIFNlbmQgdGFnZ2VkIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyAgKGRsX3ZsYW4gPSBvbGRfdmxhbl9pZCAsIGRsX3ZsYW5fcGNwID0gb2xkX3ZsYW5fcGNwKQpjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGhhcyB2bGFuIGlkIGFkZGVkIHRvIGl0LiAoZGxfdmxhbl9lbmFibGUgLCBkbF92bGFuID0gMCAsIGRsX3ZsYW5fcGNwID0gbmV3X3ZsYW5fcGNwKQoKCgoKMTUuIE1vZGlmeSBMMiBTcmMgQWRkcmVzcwoKVGVzdCBEZXNjcmlwdGlvbjogTW9kaWZ5IEV0aGVybmV0IFNyYyBBZGRyZXNzIG9mIGEgcGFja2V0CgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgTW9kaWZ5TDJTcmMKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBPcHRpb25hbAoKICAgICAgIApUZXN0IE5vdGVzOiAKCmEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfRExfU1JDICwgZGxfc3JjID1uZXdfZGxfc3JjCmIpIFNlbmQgcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAoZGxfZHN0ID0gb2xkX2RsX3NyYyApCmMpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIHNyYyBhZGRyZXNzIHJld3JpdHRlbi4gKGRsX3NyYz0gbmV3X2RsX3NyYykKCgoKMTYuIE1vZGlmeSBMMiBEZXN0aW5hdGlvbiBBZGRyZXNzCgpUZXN0IERlc2NyaXB0aW9uOiBNb2RpZnkgRXRoZXJuZXQgRGVzdGluYXRpb24gQWRkcmVzcyBvZiBhIHBhY2tldAoKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogIE1vZGlmeUwyRHN0ClBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogT3B0aW9uYWwKCiAgICAgICAKVGVzdCBOb3RlczogCgphKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uID0gT0ZQQVRfU0VUX0RMX0RTVCAsIGRsX2RzdCA9bmV3X2RsX2RzdApiKSBTZW5kIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyAgKGRsX2RzdCA9IG9sZF9kbF9zcmMgKQpjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGhhcyBkZXN0aW5hdGlvbiBhZGRyZXNzIHJld3JpdHRlbi4gKGRsX3NyYz0gbmV3X2RsX3NyYykKCgoKMTcuIFN0cmlwIFZMQU4gaGVhZGVyIJYgKEluIG9mdGVzdCwgIG5lZWQgdG8gYWRkIGluIGNvbmZvcm1hbmNlIHRlc3Qtc3VpdGUgKQoKCgoxOC4gTW9kaWZ5IEwzIFNyYyBBZGRyZXNzCgpUZXN0IERlc2NyaXB0aW9uOiBNb2RpZnkgTmV0d29yayBTcmMgQWRkcmVzcyBvZiBhIHBhY2tldAoKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaXRsZTogIE1vZGlmeUwzU3JjClBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogT3B0aW9uYWwKCiAgICAgICAKVGVzdCBOb3RlczogCgphKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uID0gT0ZQQVRfU0VUX05XX1NSQyAsIG53X3NyYyA9bmV3X253X3NyYwpiKSBTZW5kIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyAgKG53X3NyYyA9IG9sZF9ud19zcmMgKQpjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGhhcyBudyBhZGRyZXNzIHJld3JpdHRlbi4gKG53X3NyYz0gbmV3X253X3NyYykKCgoKMTkuIE1vZGlmeSBMMyBEc3QgQWRkcmVzcwoKVGVzdCBEZXNjcmlwdGlvbjogTW9kaWZ5IE5ldHdvcmsgRHN0IEFkZHJlc3Mgb2YgYSBwYWNrZXQKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBNb2RpZnlMM0RzdApQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE9wdGlvbmFsCgogICAgICAgClRlc3QgTm90ZXM6IAoKYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiA9IE9GUEFUX1NFVF9OV19EU1QgLCBud19kc3QgPW5ld19ud19kc3QKYikgU2VuZCBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgIChud19kc3QgPSBvbGRfbndfZHN0ICkKYykgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBoYXMgbncgZGVzdGluYXRpb24gYWRkcmVzcyByZXdyaXR0ZW4uIChud19kc3Q9IG5ld19ud19kc3QpCgoKCjIwLiBNb2RpZnkgTDQgU3JjIEFkZHJlc3MKClRlc3QgRGVzY3JpcHRpb246IE1vZGlmeSBUQ1AgU291cmNlIFBvcnQgb2YgYSBwYWNrZXQKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBNb2RpZnlMNFNyYwpQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE9wdGlvbmFsCgogICAgICAgClRlc3QgTm90ZXM6IAoKYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiA9IE9GUEFUX1NFVF9UUF9TUkMgLCB0Y3Bfc3BvcnQgPW5ld190Y3Bfc3BvcnQKYikgU2VuZCBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgICh0Y3Bfc3BvcnQgPSBvbGRfdGNwX3Nwb3J0ICkKYykgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBoYXMgdGNwIHNvdXJjZSBwb3J0IHJld3JpdHRlbi4gKHRjcF9zcG9ydCA9IG5ld190Y3Bfc3BvcnQpCgoKMjEuIE1vZGlmeSBMNCBEc3QgQWRkcmVzcwoKVGVzdCBEZXNjcmlwdGlvbjogTW9kaWZ5IFRDUCBEZXN0aW5hdGlvbiBQb3J0IG9mIGEgcGFja2V0CgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpdGxlOiAgTW9kaWZ5TDREc3QKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBPcHRpb25hbAoKICAgICAgIApUZXN0IE5vdGVzOiAKCmEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfVFBfRFNUICwgdGNwX2Rwb3J0ID1uZXdfdGNwX2Rwb3J0CmIpIFNlbmQgcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAodGNwX2Rwb3J0ID0gb2xkX3RjcF9kcG9ydCApCmMpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIHRjcCBkZXN0aW5hdGlvbiBwb3J0IHJld3JpdHRlbi4gKHRjcF9zcG9ydCA9IG5ld190Y3Bfc3BvcnQpCgoKCjIyLiBNb2RpZnkgVE9TCgpUZXN0IERlc2NyaXB0aW9uOiBNb2RpZnkgTmV0d29yayBUeXBlIG9mIHNlcnZpY2UKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGl0bGU6ICBNb2RpZnlUb3MKUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBPcHRpb25hbAoKICAgICAgIApUZXN0IE5vdGVzOiAKCmEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfTldfVE9TLCBpcF90b3MgPW5ld19pcF90b3MKYikgU2VuZCBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgIChpcF90b3M9IG9sZF9pcF90b3MpCmMpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIHRjcCBkZXN0aW5hdGlvbiBwb3J0IHJld3JpdHRlbi4gKGlwX3Rvcz0gbmV3X2lwX3RvcykKCgoKMjMuIE9yZGVyIE5vdCBwb3NzaWJsZSAgLS0gVEJECgoKCgoyNC4gU2VxdWVudGlhbCBleGVjdXRpb24gIC0tIFRCRCAKCgoKCgoqKioqICAgICBDb3VudGVycyAgICAgKioqKgoKCgoxLiBSZWNlaXZlZCBQYWNrZXRzIHBlciBGbG93CgoKVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgcGFja2V0X2NvdW50IGluIHRoZSBGbG93X1N0YXRzIHJlcGx5IGluY3JlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBwYWNrZXRzIGluIGZsb3cgIAoKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaWxlOiBQa3RQZXJGbG93ClBPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKClRlc3QgTm90ZXM6IAoKYSkgSW5zZXJ0IGEgZmxvdyAsIG1hdGNoID0gaW5ncmVzc19wb3J0CmIpIFNlbmQgTiBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgIGkuZSBwYWNrZXRzIHNob3VsZCBiZSBzZW50IG9uIGluZ3Jlc3NfcG9ydApjKSBTZW5kIGZsb3dfc3RhdHNfcmVxdWVzdCBmb3IgdGhlIGZsb3cgCmQpIFZlcmlmeSBwYWNrZXRfY291bnQgPSBOIGluIHRoZSBmbG93X3N0YXRzX3JlcGx5CgoKCjIuIFJlY2VpdmVkIEJ5dGVzIHBlciBGbG93CgoKVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgYnl0ZV9jb3VudCBpbiB0aGUgRmxvd19TdGF0cyByZXBseSBpbmNyZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgYnl0ZXMgaW4gZmxvdyAgCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpbGU6IEJ5dFBlckZsb3cKUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczogCgphKSBJbnNlcnQgYSBmbG93ICwgbWF0Y2ggPSBpbmdyZXNzX3BvcnQKYikgU2VuZCBOIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyAgaS5lIHBhY2tldHMgc2hvdWxkIGJlIHNlbnQgb24gaW5ncmVzc19wb3J0CmMpIFNlbmQgZmxvd19zdGF0c19yZXF1ZXN0IGZvciB0aGUgZmxvdyAKZCkgVmVyaWZ5IGJ5dGVfY291bnQgPSBOKihuby4gb2YgYnl0ZXMgaW4gb25lIHBhY2tldCkgaW4gdGhlIGZsb3dfc3RhdHNfcmVwbHkKCgoKMy4gRHVyYXRpb24gaW4gc2VjIHBlciBGbG93CgoKVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgZHVyYXRpb25fc2VjIGluIHRoZSBGbG93X1N0YXRzIHJlcGx5IGluY3JlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0aW1lIHRoYXQgZmxvdyB3YXMgYWxpdmUgaW4gc2VjIAoKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaWxlOiBEdXJhdGlvblBlckZsb3cKUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczogCgphKSBJbnNlcnQgYSBhbnkgZmxvdyAKYikgU2VuZCBmbG93X3N0YXRzX3JlcXVlc3QgZm9yIHRoYXQgZmxvdyBwZXJpb2RpY2FsbHkgYWZ0ZXIgbiBzZWMgaW50ZXJ2YWxzIHVwdG8gdGltZW91dCBvZiB5IApjKSBWZXJpZnkgZWFjaCBmbG93X3N0YXRzX3JlcGx5IGhhcyBkdXJhdGlvbl9zZWMgZmllbGQgaW5jcmVtZW50aW5nIGFzIG4gLCAybiAsIDNuIC4uIHkgCgoKCjQuIER1cmF0aW9uIGluIG5zZWMgcGVyIGZsb3cKCgpUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCBkdXJhdGlvbl9uc2VjIGluIHRoZSBmbG93X3N0YXRzIHJlcGwgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRpbWUgZmxvdyBoYXMgYmVlbiBhbGl2ZSBpbiBuYW5vc2Vjb25kcyAKYmV5b25kIGR1cmF0aW9uX3NlYy4KClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGlsZTogRHVyYXRpb25QZXJGbG93ClBPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKClRlc3QgTm90ZXM6IAoKYSkgSW5zZXJ0IGFueSBmbG93IApiKSBTZW5kIGZsb3dfc3RhdHNfcmVxdWVzdCBwZXJpb2RpY2FsbHkgYWZ0ZXIgbiBzZWMgaW50ZXJ2YWxzIHVwdG8gdGltZW91dCBvZiB5IApjKSBWZXJpZnkgZWFjaCBmbG93X3N0YXRzX3JlcGx5IGhhcyBkdXJhdGlvbl9zZWMgZmllbGQgaW5jcmVtZW50aW5nIGFzIG4gLCAybiAsIDNuIC4uIHkgYW5kIHJlYWQgb3V0IGR1cmF0aW9uX25zZWMgZmllbGQgKCBWZXJpZmljYXRpb24gb2YgbnNlYyBmaWVsZCAKaXMgb3V0IG9mIHNjb3BlKQoKCgo1LiBSZWNlaXZlZCBwYWNrZXRzIHBlciBwb3J0CgoKVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgcnhfcGFja2V0cyBpbiB0aGUgUG9ydF9TdGF0cyByZXBseSBpbmNyZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgcGFja2V0cyByZWNpZXZlZCBvbiB0aGF0IHBvcnQKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGlsZTogUnhQa3RQZXJQb3J0ClBPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKClRlc3QgTm90ZXM6IAoKYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIG1hdGNoIG9uIGluZ3Jlc3NfcG9ydApiKSBTZW5kIE4gcGFja2V0cyBvbiB0aGUgaW5ncmVzc19wb3J0IApjKSBTZW5kIHBvcnRfc3RhdHMgcmVxdWVzdCBmb3IgcG9ydD1pbmdyZXNzX3BvcnQKZCkgVmVyaWZ5IHBvcnRfc3RhdHNfcmVwbHkgaGFzIHJ4X3BhY2tldD1OCgoKCgo2LiBUcmFuc21pdHRlZCBwYWNrZXRzIHBlciBwb3J0CgoKVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgdHhfcGFja2V0cyBpbiB0aGUgUG9ydF9TdGF0cyByZXBseSBpbmNyZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgcGFja2V0cyB0cmFuc21pdHRlZCBmcm9tIGEgcG9ydCAgCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpbGU6IFR4UGt0UGVyUG9ydApQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOiAKCmEpIEluc2VydCBhIGZsb3cgd2l0aCBtYXRjaCBvbiBpbmdyZXNzX3BvcnQsIGFjdGlvbiBvdXRwdXQgPSBlZ3Jlc3NfcG9ydApiKSBTZW5kIE4gcGFja2V0cyBvbiB0aGUgaW5ncmVzc19wb3J0CmMpIFNlbmQgcG9ydF9zdGF0cyByZXF1ZXN0IGZvciBwb3J0PWluZ3Jlc3NfcG9ydApkKSBWZXJpZnkgcG9ydF9zdGF0c19yZXBseSBoYWQgdHhfcGFja2V0cz1OICAgCgoKCjcuIFJlY2VpdmVkIEJ5dGVzIHBlciBwb3J0CgoKVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgcnhfYnl0ZXMgaW4gdGhlIFBvcnRfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGJ5dGVzIHJlY2lldmVkIG9uIGEgcG9ydCAgCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpbGU6IFJ4Qnl0UGVyUG9ydApQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOiAKCmEpIEluc2VydCBhIGZsb3cgd2l0aCBtYXRjaCBvbiBpbmdyZXNzX3BvcnQsIGFjdGlvbiBvdXRwdXQgPSBlZ3Jlc3NfcG9ydApiKSBTZW5kIE4gcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAKYykgU2VuZCBwb3J0X3N0YXRzIHJlcXVlc3QgZm9yIHBvcnQ9aW5ncmVzc19wb3J0CmQpIFZlcmlmeSBwb3J0X3N0YXRzX3JlcGx5IGhhZCByeF9ieXRlcz1OKihuby4gb2YgYnl0ZXMgaW4gYSBwYWNrZXQpIAoKCgo4LiBUcmFuc21pdHRlZCBCeXRlcyBwZXIgcG9ydAoKClRlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IHR4X2J5dGVzIGluIHRoZSBQb3J0X1N0YXRzIHJlcGx5IGluY3JlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBieXRlcyB0cmFuc21pdHRlZCBmcm9tIGEgcG9ydCAgCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpbGU6IFR4Qnl0UGVyUG9ydApQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOiAKCmEpIEluc2VydCBhIGZsb3cgd2l0aCBtYXRjaCBvbiBpbmdyZXNzX3BvcnQsIGFjdGlvbiBvdXRwdXQgPSBlZ3Jlc3NfcG9ydApiKSBTZW5kIE4gcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAKYykgU2VuZCBwb3J0X3N0YXRzIHJlcXVlc3QgZm9yIHBvcnQ9aW5ncmVzc19wb3J0CmQpIFZlcmlmeSBwb3J0X3N0YXRzX3JlcGx5IGhhZCB0eF9ieXRlcz1OKihuby4gb2YgYnl0ZXMgaW4gYSBwYWNrZXQpIAoKCgo5LiBSZWNpZXZlIERyb3BzIHBlciBwb3J0IChUQkQgLS0tPiBWZXJpZmljYXRpb24gb2YgY291bnRlciBpbmNyZW1lbnRpbmcgY29ycmVjdGx5KQoKClRlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IHJ4X2Ryb3BwZWQgY291bnRlcnMgaW4gdGhlIFBvcnRfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHBhY2tldHMgZHJvcHBlZCBieSBSWCAgCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpbGU6IFJ4RHJvcHMKUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgpUZXN0IE5vdGVzIDoKCmEpIFNlbmQgcG9ydF9zdGF0cyByZXF1ZXN0IGZvciBwb3J0PWluZ3Jlc3NfcG9ydApiKSBWZXJpZnkgcG9ydF9zdGF0cyByZXBseSBoYXMgcnhfZHJvcHBlZCBjb3VudAoKCgoKCjEwLiBUcmFuc21pdCBEcm9wcyBwZXIgcG9ydCAoVEJEIC0tLT4gVmVyaWZpY2F0aW9uIG9mIGNvdW50ZXIgaW5jcmVtZW50aW5nIGNvcnJlY3RseSkKCgpUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCB0eF9kcm9wcGVkIGNvdW50ZXJzIGluIHRoZSBQb3J0X1N0YXRzIHJlcGx5IGluY3JlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBwYWNrZXRzIGRyb3BwZWQgYnkgVFgKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGlsZTogVHhEcm9wcwpQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5hZGF0b3J5CgoKYSkgU2VuZCBwb3J0X3N0YXRzIHJlcXVlc3QgZm9yIHBvcnQ9aW5ncmVzc19wb3J0CmIpIFZlcmlmeSBwb3J0X3N0YXRzIHJlcGx5IGhhcyB0eF9kcm9wcGVkIGNvdW50CgoKCgoxMS4gUmVjaWV2ZSBFcnJvcnMgKFRCRCAtLS0+IFZlcmlmaWNhdGlvbiBvZiBjb3VudGVyIGluY3JlbWVudGluZyBjb3JyZWN0bHkpCgoKVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgcnhfZXJyb3JzIGNvdW50ZXJzIGluIHRoZSBQb3J0X1N0YXRzIHJlcGx5IGluY3JlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIG51bWJlciBvZiByZWNpZXZlZCBlcnJvciAgCgkJICBUaGlzIGlzIGEgc3VwZXItc2V0IG9mIG1vcmUgc3BlY2lmaWMgcmVjZWl2ZSBlcnJvcnMgYW5kIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHN1bSBvZiBhbGwKICAgICAgICAgICAgICAgICAgcnhfKl9lcnIgdmFsdWVzLgoKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaWxlOiBSeEVycm9ycwpQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOiAKCmEpIFNlbmQgcG9ydF9zdGF0cyByZXF1ZXN0IGZvciBwb3J0PWluZ3Jlc3NfcG9ydApiKSBWZXJpZnkgcG9ydF9zdGF0cyByZXBseSBoYXMgcnhfZXJyb3JzIGNvdW50CgoKCjEyLiBUcmFuc21pdCBFcnJvcnMgKFRCRCAtLS0+IFZlcmlmaWNhdGlvbiBvZiBjb3VudGVyIGluY3JlbWVudGluZyBjb3JyZWN0bHkpCgoKVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgdHhfZXJyb3JzIGNvdW50ZXJzIGluIHRoZSBQb3J0X1N0YXRzIHJlcGx5IGluY3JlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIG51bWJlciBvZiB0cmFzbWl0IGVycm9ycyAgCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpbGU6IFR4RXJyb3JzClBPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKClRlc3QgTm90ZXM6IAoKYSkgU2VuZCBwb3J0X3N0YXRzIHJlcXVlc3QgZm9yIHBvcnQ9aW5ncmVzc19wb3J0CmIpIFZlcmlmeSBwb3J0X3N0YXRzIHJlcGx5IGhhcyB0eF9lcnJvcnMgY291bnQKCgoKMTMuIFJlY2lldmUgRnJhbWUgRXJyb3JzIChUQkQgLS0tPiBWZXJpZmljYXRpb24gb2YgY291bnRlciBpbmNyZW1lbnRpbmcgY29ycmVjdGx5KQoKClRlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IHJ4X2ZybV9lcnIgY291bnRlcnMgaW4gdGhlIFBvcnRfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIG51bWJlciBvZiBmcmFtZSBhbGlnbm1lbnQgZXJyb3JzClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGlsZTogUnhGcmFtZUVycgpQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOiAKCmEpIFNlbmQgcG9ydF9zdGF0cyByZXF1ZXN0IGZvciBwb3J0PWluZ3Jlc3NfcG9ydApiKSBWZXJpZnkgcG9ydF9zdGF0cyByZXBseSBoYXMgcnhfZnJhbWVfZXJyIGNvdW50IAoKCgoxNC4gUmVjaWV2ZSBPdmVycnVuIEVycm9ycyAoVEJEIC0tLT4gVmVyaWZpY2F0aW9uIG9mIGNvdW50ZXIgaW5jcmVtZW50aW5nIGNvcnJlY3RseSkKCgpUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCByeF9vdmVyX2VyciBjb3VudGVycyBpbiB0aGUgUG9ydF9TdGF0cyByZXBseSBpbmNyZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgbnVtYmVyIG9mIHdpdGggUlggb3ZlcnJ1bgoKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaWxlOiBSeE9FcnIKUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczogCgphKSBTZW5kIHBvcnRfc3RhdHMgcmVxdWVzdCBmb3IgcG9ydD1pbmdyZXNzX3BvcnQKYikgVmVyaWZ5IHBvcnRfc3RhdHMgcmVwbHkgaGFzIHJ4X292ZXJfZXJyIGNvdW50IAoKCjE1LiBDUkMgRXJyb3JzIChUQkQgLS0tPiBWZXJpZmljYXRpb24gb2YgY291bnRlciBpbmNyZW1lbnRpbmcgY29ycmVjdGx5KQoKClRlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IHJ4X2NyY19lcnIgY291bnRlcnMgaW4gdGhlIFBvcnRfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIG51bWJlciBvZiBjcmMgZXJyb3JzCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpbGU6IFJ4Q3JjRXJyClBPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE1hbmFkYXRvcnkKCgpUZXN0IE5vdGVzOiAKCmEpIFNlbmQgcG9ydF9zdGF0cyByZXF1ZXN0IGZvciBwb3J0PWluZ3Jlc3NfcG9ydApiKSBWZXJpZnkgcG9ydF9zdGF0cyByZXBseSBoYXMgcnhfY3JjX2VyciBjb3VudCAKCgoKMTYuIENvbGxpc2lvbnMgKFRCRCAtLS0+IFZlcmlmaWNhdGlvbiBvZiBjb3VudGVyIGluY3JlbWVudGluZyBjb3JyZWN0bHkpCgoKVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgY29sbGlzb25zIGNvdW50ZXJzIGluIHRoZSBQb3J0X1N0YXRzIHJlcGx5IGluY3JlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBjb2xsaXNpb25zIGVuY291bnRlcmVkIGJ5IHRoZSBzd2l0Y2gKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGlsZTogQ29sbGlzaW9ucwpQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOiAKCmEpIFNlbmQgcG9ydF9zdGF0cyByZXF1ZXN0IGZvciBwb3J0PWluZ3Jlc3NfcG9ydApiKSBWZXJpZnkgcG9ydF9zdGF0cyByZXBseSBoYXMgY29sbGlzaW9ucyBjb3VudCAKCgoKMTcuIEFjdGl2ZSBFbnRyaWVzIHBlciBUYWJsZQoKClRlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IGFjdGl2ZV9jb3VudCBpbiB0aGUgdGFibGUgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGZsb3dzIGluc2VydGVkIGluIHRoZSB0YWJsZQoKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaWxlOiBBY3RpdmVDb3VudApQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOiAKCmEpIEluc2VydCBhIGZsb3cgCmIpIFNlbmQgdGFibGVfc3RhdHNfcmVxdWVzdApjKSBWZXJpZnkgYWN0aXZlX2NvdW50PTEKCgoKMTguIFBhY2tldCBMb29rdXAgcGVyIFRhYmxlCgoKVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgbG9va3VwX2NvdW50IGluIHRoZSBUYWJsZV9TdGF0cyByZXBseSBpbmNyZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgbnVtYmVyIG9mIHBhY2tldHMgbG9va2VkIHVwIGluIHRhYmxlCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpbGU6IExvb2t1cE1hdGNoZWRDb3VudApQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOiAKCmEpIEluc2VydCBhIGZsb3cgd2l0aCBtYXRjaCBvbiBpbmdyZXNzX3BvcnQKYikgU2VuZCBOIHBhY2tldHMgb24gaW5ncmVzc19wb3J0IChtYXRjaGluZyB0aGUgZmxvdykKYykgU2VuZCBOJyBwYWNrZXRzIG9uIHggcG9ydCAoTm90IG1hdGNoaW5nIHRoZSBmbG93KQpkKSBTZW5kIHRhYmxlX3N0YXRzX3JlcXVlc3QgCmUpIFZlcmlmeSBsb29rdXBfY291bnQgPSBOK04nIAoKCgoxOS4gUGFja2V0cyBtYXRjaGVkIHBlciBUYWJsZQoKVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgbWF0Y2hlZF9jb3VudCBpbiB0aGUgVGFibGVfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIG51bWJlciBvZiBwYWNrZXRzIG1hdGNoZWQgd2l0aCB0aGUgdGFibGUKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGlsZTogTG9va3VwTWF0Y2hlZENvdW50ClBPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKClRlc3QgTm90ZXM6IAoKYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIG1hdGNoIG9uIGluZ3Jlc3NfcG9ydApiKSBTZW5kIE4gcGFja2V0cyBvbiBpbmdyZXNzX3BvcnQgKG1hdGNoaW5nIHRoZSBmbG93KQpjKSBTZW5kIE4nIHBhY2tldHMgb24geCBwb3J0IChOb3QgbWF0Y2hpbmcgdGhlIGZsb3cpCmQpIFNlbmQgdGFibGVfc3RhdHNfcmVxdWVzdCAKZSkgVmVyaWZ5IG1hdGNoZWRfY291bnQgPSBOIAoKCgoKMjAuIFRyYW5zbWl0IFBhY2tldHMgcGVyIFF1ZXVlCgpUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCB0eF9wYWNrZXRzIGluIHRoZSBxdWV1ZV9zdGF0cyByZXBseSBpbmNyZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgbnVtYmVyIG9mIHRyYW5zbWl0dGVkIHBhY2tldHMKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGlsZTogVHhQa3RQZXJRdWV1ZQpQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBPcHRpb25hbAoKClRlc3QgTm90ZXM6IAoKYSkgU2VuZCBxdWV1ZV9zdGF0cyByZXF1ZXN0IGZvciBwb3J0cz1vZnAuT0ZQUF9BTEwgYW5kIHF1ZXVlX2lkcz1vZnAuT0ZQUV9BTEwgKGkuZSBhbGwgcG9ydHMgYW5kIGFsbCBxdWV1ZXMpCmIpIFNlbmQgcXVldWVfc3RhdHMgcmVxdWVzdCBmb3IgZWdyZXNzX3BvcnRbMF0gYW5kIHF1ZXVlX2lkWzBdIGFuZCBub3RlIHRoZSB0eF9wYWNrZXRzIGNvdW50IGluIHRoZSByZXBseQpjKSBJbnNlcnQgYSBmbG93IGVudHJ5IHdpdGggZW5xdWV1ZSBhY3Rpb24gLCBwb3J0ID0gZWdyZXNzX3BvcnRbMF0gcXVldWVfaWQ9IHF1ZXVlX2lkWzBdCmQpIFNlbmQgcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93CmUpIFNlbmQgcXVldWVfc3RhdHMgcmVxdWVzdCBhZ2FpbiwgdmVyaWZ5IHR4X3BhY2tldCBjb3VudCBpbmNyZW1lbnRlZCAKZikgUmVwZWF0IGIgLCBjICwgZCAsIGUgZm9yIGFsbCB0aGUgcXVldWVfaWRzIGNvbmZpZ3VyZWQgZm9yIGVncmVzc19wb3J0WzBdCmgpIFJlcGVhdCBiICwgYyAsIGQgLCBlICwgZiBmb3IgYWxsIHRoZSBlZ3Jlc3NfcG9ydHMgYXZhaWxhYmxlCgoKCgoyMS4gVHJhbnNtaXQgQnl0ZXMgcGVyIFF1ZXVlCgpUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCB0eF9ieXRlcyBpbiB0aGUgcXVldWVfc3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIG51bWJlciBvZiB0cmFuc21pdHRlZCBieXRlcwoKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaWxlOiBUeEJ5dFBlclF1ZXVlClBPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE9wdGlvbmFsCgoKVGVzdCBOb3RlczogCgphKSBTZW5kIHF1ZXVlX3N0YXRzIHJlcXVlc3QgZm9yIHBvcnRzPW9mcC5PRlBQX0FMTCBhbmQgcXVldWVfaWRzPW9mcC5PRlBRX0FMTCAoaS5lIGFsbCBwb3J0cyBhbmQgYWxsIHF1ZXVlcykKYikgU2VuZCBxdWV1ZV9zdGF0cyByZXF1ZXN0IGZvciBlZ3Jlc3NfcG9ydFswXSBhbmQgcXVldWVfaWRbMF0gYW5kIG5vdGUgdGhlIHR4X2J5dGVzIGNvdW50IGluIHRoZSByZXBseQpjKSBJbnNlcnQgYSBmbG93IGVudHJ5IHdpdGggZW5xdWV1ZSBhY3Rpb24gLCBwb3J0ID0gZWdyZXNzX3BvcnRbMF0gcXVldWVfaWQ9IHF1ZXVlX2lkWzBdCmQpIFNlbmQgcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93CmUpIFNlbmQgcXVldWVfc3RhdHMgcmVxdWVzdCBhZ2FpbiwgdmVyaWZ5IHR4X2J5dGUgY291bnQgaW5jcmVtZW50ZWQgCmYpIFJlcGVhdCBiICwgYyAsIGQgLCBlIGZvciBhbGwgdGhlIHF1ZXVlX2lkcyBjb25maWd1cmVkIGZvciBlZ3Jlc3NfcG9ydFswXQpoKSBSZXBlYXQgYiAsIGMgLCBkICwgZSAsIGYgZm9yIGFsbCB0aGUgZWdyZXNzX3BvcnRzIGF2YWlsYWJsZQoKCgoyMi4gVHJhbnNtaXQgT3ZlcnJ1biBFcnJvcnMgcGVyIHF1ZXVlIChUQkQgLS0tLT4gVmVyaWZpY2F0aW9uIG9mIHR4X2Vycm9yIGNvdW50IGJlaW5nIGluY3JlbWVudGVkIGNvcnJlY3RseSkgCgpUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCB0eF9lcnJvcnMgaW4gdGhlIHF1ZXVlX3N0YXRzIHJlcGx5IGluY3JlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBudW1iZXIgb2YgcGFja2V0cyBkcm9wcGVkIGR1ZSB0byBvdmVycnVuLgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpbGU6IFR4RXJyb3JQZXJRdWV1ZQpQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBPcHRpb25hbAoKVGVzdCBOb3RlczogCgoKYSkgU2VuZCBxdWV1ZV9zdGF0cyByZXF1ZXN0IGZvciBwb3J0PWVncmVzc19wb3J0IGFuZCBxdWV1ZV9pZHM9b2ZwLk9GUFFfQUxMCkIpIHNlbmQgcXVldWVfc3RhdHMgcmVxdWVzdCBmb3IgZWdyZXNzX3BvcnQgYW5kIHF1ZXVlX2lkWzBdIChpLmUgZmlyc3QgcXVldWUgY29uZmlndXJlZCBmb3IgZWdyZXNzX3BvcnQpCmMpIFZlcmlmeSByZXBseSBoYXMgdHhfZXJyb3JzIGNvdW50IC4KZCkgUmVwZWFyIGIgLCBjIGZvciB0aGUgYWxsIHF1ZXVlX2lkcyBvZiBlZ3Jlc3NfcG9ydAoKCgoKCioqKiogICAgIEZsb3cgbWF0Y2hlcyAgICAgKioqKgoKCgoxLiBBbGwgV2lsZGNhcmQgTWF0Y2gKClRlc3QgRGVzY3JpcHRpb246IEFkZGluZyBhIEZsb3cgdGhhdCBtYXRjaGVzIGFsbCB0aGUgcG9zc2libGUgZmllbGRzCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpbGU6IEFsbFdpbGRjYXJkTWF0Y2gKUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczoKCmEpIEluc2VydCBhIGZsb3cgd2l0aCB3aWxkY2FyZCA9IE9GUEZXX0FMTCAod2lsZGNhcmQgYWxsIGZpZWxkcyksIGFjdGlvbiBvdXRwdXQgdG8gZWdyZXNzX3BvcnQKYikgU2VuZCBwYWNrZXRzIHdpdGggZGlmZmVyZW50IGhlYWRlciBmaWVsZHMKYykgVmVyaWZ5IGFsbCBwYWNrZXRzIG1hdGNoIHRoZSBmbG93IGFuZCBpbXBsZW1lbnQgdGhlIGFjdGlvbiBzcGVjaWZpZWQuCgoKMi4gU2luZ2xlIEhlYWRlciBGaWVsZDogSW5ncmVzcyBQb3J0CgpUZXN0IERlc2NyaXB0aW9uOiBNYXRjaCBvbiBJbmdyZXNzIFBvcnQgYW5kIFdpbGRjYXJkIHJlc3QgCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpbGU6IEluZ3Jlc3NQb3J0ClBPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKClRlc3QgTm90ZXM6IAoKYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIG1hdGNoID0gaW5fcG9ydCAoc2F5IHBvcnQgeCksIGFjdGlvbiBvdXRwdXQgdG8gZWdyZXNzX3BvcnQKYikgU2VuZCBwYWNrZXQgb24gcG9ydCB4IApjKSBWZXJpZnkgcGFja2V0IHdhcyByZWNpZXZlZCBvbiBlZ3Jlc3NfcG9ydApkKSBTZW5kIHBhY2tldCBvbiBwb3J0IHkKZSkgVmVyaWZ5IFBhY2tldEluIGV2ZW50IHdhcyB0cmlnZ2VyZWQgb24gY29udHJvbCBwbGFuZQoKCgozLiBTaW5nbGUgSGVhZGVyIEZpZWxkOiBFdGhlcm5ldCBTcmMgQWRkcmVzcwoKVGVzdCBEZXNjcmlwdGlvbjogTWF0Y2ggb24gRXRoZXJuZXQgU291cmNlIEFkZHJlc3MgYW5kIFdpbGRjYXJkIHJlc3QgCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpbGU6IEV0aGVybmV0U3JjQWRkcmVzcwpQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOiAKCmEpIEluc2VydCBhIGZsb3cgd2l0aCBtYXRjaCA9IGRsX3NyYyAoc2F5IHgpICwgYWN0aW9uIG91dHB1dCB0byBlZ3Jlc3NfcG9ydApiKSBTZW5kIHBhY2tldCB3dGggZGxfc3JjID0geCAKYykgVmVyaWZ5IHBhY2tldCB3YXMgcmVjaWV2ZWQgb24gZWdyZXNzX3BvcnQKZCkgU2VuZCBwYWNrZXQgd2l0aCBkbF9zcmMgPSB5IAplKSBWZXJpZnkgUGFja2V0SW4gZXZlbnQgd2FzIHRyaWdnZXJlZCBvbiB0aGUgY29udHJvbCBwbGFuZQoKCgo0LiBTaW5nbGUgSGVhZGVyIEZpZWxkOiBFdGhlcm5ldCBEc3QgQWRkcmVzcwoKVGVzdCBEZXNjcmlwdGlvbjogTWF0Y2ggb24gRXRoZXJuZXQgRGVzdGluYXRpb24gQWRkcmVzcyBhbmQgV2lsZGNhcmQgcmVzdCAKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGlsZTogRXRoZXJuZXREc3RBZGRyZXNzClBPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKClRlc3QgTm90ZXM6IAoKYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIG1hdGNoID0gZGxfZHN0IChzYXkgeCkgLCBhY3Rpb24gb3V0cHV0IHRvIGVncmVzc19wb3J0CmIpIFNlbmQgcGFja2V0IHd0aCBkbF9kc3QgPSB4ICAKYykgVmVyaWZ5IHBhY2tldCB3YXMgcmVjaWV2ZWQgb24gZWdyZXNzX3BvcnQKZCkgU2VuZCBwYWNrZXQgd2l0aCBkbF9kc3QgPSB5IAplKSBWZXJpZnkgUGFja2V0SW4gZXZlbnQgd2FzIHRyaWdnZXJlZCBvbiB0aGUgY29udHJvbCBwbGFuZQoKCgo1LiBTaW5nbGUgSGVhZGVyIEZpZWxkOiBFdGhlcm5ldCBUeXBlIAoKVGVzdCBEZXNjcmlwdGlvbjogTWF0Y2ggb24gRWh0ZXJuZXQgVHlwZSBhbmQgV2lsZGNhcmQgcmVzdCAKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGlsZTogRXRoZXJuZXRUeXBlClBPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKClRlc3QgTm90ZXM6IAoKYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIG1hdGNoID0gZGxfdHlwZSAoc2F5IHgpICwgYWN0aW9uIG91dHB1dCB0byBlZ3Jlc3NfcG9ydApiKSBTZW5kIHBhY2tldCB3dGggZGxfdHlwZSA9IHggICAKYykgVmVyaWZ5IHBhY2tldCB3YXMgcmVjaWV2ZWQgb24gZWdyZXNzX3BvcnQKZCkgU2VuZCBwYWNrZXQgd2l0aCBkbF90eXBlID0geSAKZSkgVmVyaWZ5IFBhY2tldEluIGV2ZW50IHdhcyB0cmlnZ2VyZWQgb24gdGhlIGNvbnRyb2wgcGxhbmUKCgoKCjYuIFNpbmdsZSBIZWFkZXIgRmllbGQ6IFZsYW4gSWQKClRlc3QgRGVzY3JpcHRpb246IE1hdGNoIG9uIEluZ3Jlc3MgUG9ydCBhbmQgV2lsZGNhcmQgcmVzdCAKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGlsZTogVmxhbklkClBPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKClRlc3QgTm90ZXM6IAoKYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIG1hdGNoID0gZGxfdmxhbiAoc2F5IHgpICwgYWN0aW9uIG91dHB1dCB0byBlZ3Jlc3NfcG9ydApiKSBTZW5kIGEgdGFnZ2VkIHBhY2tldCB3aXRoIChkbF92bGFuX2VuYWJsZT1UcnVlLGRsX3ZsYW4gPSB4KSAgCmMpIFZlcmlmeSBwYWNrZXQgd2FzIHJlY2lldmVkIG9uIGVncmVzc19wb3J0CmQpIFNlbmQgYW5vdGhlciB0YWdnZWQgcGFja2V0IHdpdGggKGRsX3ZsYW5fZW5hYmxlPVRydWUsZGxfdmxhbiA9IHkgKQplKSBWZXJpZnkgUGFja2V0SW4gZXZlbnQgd2FzIHRyaWdnZXJlZCBvbiB0aGUgY29udHJvbCBwbGFuZQoKCgoKNy4gU2luZ2xlIEhlYWRlciBGaWVsZDogVmxhbiBQQ1AKClRlc3QgRGVzY3JpcHRpb246IE1hdGNoIG9uIFZsYW4gSUQgUHJpb3JpdHkgCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpbGU6IFZsYW5QY3AKUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczogCgphKSBJbnNlcnQgYSBmbG93IHdpdGggbWF0Y2ggPSBkbF92bGFuX3BjcCAoc2F5IHgpICwgYWN0aW9uIG91dHB1dCB0byBlZ3Jlc3NfcG9ydApiKSBTZW5kIGEgdGFnZ2VkIHBhY2tldCB3aXRoIChkbF92bGFuX2VuYWJsZT1UcnVlLCBkbF92bGFuID0gKiAsIGRsX3ZsYW5fcGNwID0geCkgIApjKSBWZXJpZnkgcGFja2V0IHdhcyByZWNpZXZlZCBvbiBlZ3Jlc3NfcG9ydApiKSBTZW5kIGEgdGFnZ2VkIHBhY2tldCB3aXRoIChkbF92bGFuX2VuYWJsZT1UcnVlLCBkbF92bGFuID0gKiAsIGRsX3ZsYW5fcGNwID0geSkgIAplKSBWZXJpZnkgUGFja2V0SW4gZXZlbnQgd2FzIHRyaWdnZXJlZCBvbiB0aGUgY29udHJvbCBwbGFuZQoKCgoKCjguIFNpbmdsZSBIZWFkZXIgRmllbGQ6IElQIFNyYyBBZGRyZXNzIC0tLS0tLS0tID4gKFRCRCkKClRlc3QgRGVzY3JpcHRpb246IE1hdGNoIG9uIElQIFNyYyBBZGRyZXNzIGFuZCBXaWxkY2FyZCByZXN0IAoKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaWxlOiBJUFNyY0FkZHJlc3MKUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKCgo5LiBTaW5nbGUgSGVhZGVyIEZpZWxkOiBJUCBEc3QgQWRkcmVzcyAtLS0tLS0tLS0tLT4gKFRCRCkKClRlc3QgRGVzY3JpcHRpb246IE1hdGNoIG9uIElQIERzdCBBZGRyZXNzIGFuZCBXaWxkY2FyZCByZXN0IAoKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaWxlOiBJUERzdEFkZHJlc3MKUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKCgoKMTAuIFNpbmdsZSBIZWFkZXIgRmllbGQ6IElQIHByb3RvY29sLS0tLS0tLS0tLS0tLS0tPiAoVEJEKQoKVGVzdCBEZXNjcmlwdGlvbjogTWF0Y2ggb24gSVAgUHJvdG9jb2wgYW5kIFdpbGRjYXJkIHJlc3QgCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpbGU6IElQcHJvdG9jb2wKUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKCgoKCjExLiBTaW5nbGUgSGVhZGVyIEZpZWxkOiBJUCBUb3MgYml0cwoKVGVzdCBEZXNjcmlwdGlvbjogTWF0Y2ggb24gSVAgVG9zIGJpdHMgYW5kIFdpbGRjYXJkIHJlc3QgCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpbGU6IElwVG9zClBPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE1hbmRhdG9yeQoKClRlc3QgTm90ZXM6IAoKYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIG1hdGNoID0gbndfdG9zIChzYXkgeCkgLCBhY3Rpb24gb3V0cHV0IHRvIGVncmVzc19wb3J0CmIpIFNlbmQgYSB0Y3AgcGFja2V0IHdpdGggKG53X3Rvcz14KSAgCmMpIFZlcmlmeSBwYWNrZXQgd2FzIHJlY2lldmVkIG9uIGVncmVzc19wb3J0CmIpIFNlbmQgYSB0Y3AgcGFja2V0IHdpdGggKG53X3RvcyA9IHkpCmUpIFZlcmlmeSBQYWNrZXRJbiBldmVudCB3YXMgdHJpZ2dlcmVkIG9uIHRoZSBjb250cm9sIHBsYW5lCgoKCjEyLiBTaW5nbGUgSGVhZGVyIEZpZWxkOiBUcmFuc3BvcnQgU291cmNlIFBvcnQKClRlc3QgRGVzY3JpcHRpb246IE1hdGNoIG9uIFRyYW5zcG9ydCBTcmMgUG9ydCBhbmQgV2lsZGNhcmQgcmVzdCAKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGlsZTogVGNwU3JjUG9ydApQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOiAKCmEpIEluc2VydCBhIGZsb3cgd2l0aCBtYXRjaCA9IHRwX3NyYyAoc2F5IHgpICwgYWN0aW9uIG91dHB1dCB0byBlZ3Jlc3NfcG9ydApiKSBTZW5kIGEgdGNwIHBhY2tldCB3aXRoICh0cF9zcmM9eCkgIApjKSBWZXJpZnkgcGFja2V0IHdhcyByZWNpZXZlZCBvbiBlZ3Jlc3NfcG9ydApiKSBTZW5kIGEgdGNwIHBhY2tldCB3aXRoIHRwX3NyYz0geSkKZSkgVmVyaWZ5IFBhY2tldEluIGV2ZW50IHdhcyB0cmlnZ2VyZWQgb24gdGhlIGNvbnRyb2wgcGxhbmUKCgoKMTMuIFNpbmdsZSBIZWFkZXIgRmllbGQ6IFRyYW5zcG9ydCBEZXN0aW5hdGlvbiBQb3J0CgpUZXN0IERlc2NyaXB0aW9uOiBNYXRjaCBvbiBUcmFuc3BvcnQgRHN0IFBvcnQgYW5kIFdpbGRjYXJkIHJlc3QgCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpbGU6IFRjcERzdFBvcnQKUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczogCgphKSBJbnNlcnQgYSBmbG93IHdpdGggbWF0Y2ggPSB0cF9kc3QgKHNheSB4KSAsIGFjdGlvbiBvdXRwdXQgdG8gZWdyZXNzX3BvcnQKYikgU2VuZCBhIHRjcCBwYWNrZXQgd2l0aCAodHBfZHN0PXgpICAKYykgVmVyaWZ5IHBhY2tldCB3YXMgcmVjaWV2ZWQgb24gZWdyZXNzX3BvcnQKYikgU2VuZCBhIHRjcCBwYWNrZXQgd2l0aCB0cF9kc3QgPSB5KQplKSBWZXJpZnkgUGFja2V0SW4gZXZlbnQgd2FzIHRyaWdnZXJlZCBvbiB0aGUgY29udHJvbCBwbGFuZQoKCgoKMTQuIE11bHRpcGxlIEhlYWRlciBGaWVsZHM6IEwyCgoKVGVzdCBEZXNjcmlwdGlvbjogTWF0Y2ggb24gRXRoZXJuZXQgVHlwZSwgRXRoZXJuZXQgU291cmNlIEFkZHJlc3MsIEV0aGVybmV0IERlc3RpbmF0aW9uIEFkZHJlc3MgYW5kIFdpbGRjYXJkIHJlc3QgCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpbGU6IE11bHRpcGxlSGVhZGVyRmllbGRMMgpQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cApUZXN0LUZpZWxkOiBNYW5kYXRvcnkKCgpUZXN0IE5vdGVzOiAKCmEpIEluc2VydCBhIGZsb3cgd2l0aCBtYXRjaCA9IGRsX3R5cGUgKHNheSB4KSwgZGxfc3JjIChzYXkgeSApLCBkbF9kc3QgKHNheSB6KSwgYWN0aW9uIG91dHB1dCB0byBlZ3Jlc3NfcG9ydApiKSBTZW5kIGEgZXRoIHBhY2tldCB3aXRoIGRsX3R5cGUgKHNheSB4KSwgZGxfc3JjIChzYXkgeSApLCBkbF9kc3QgKHNheSB6KQpjKSBWZXJpZnkgcGFja2V0IHdhcyByZWNpZXZlZCBvbiBlZ3Jlc3NfcG9ydApiKSBTZW5kIGEgZXRoIHBhY2tldCB3aXRoIGRsX3R5cGUgKHNheSB3KSwgZGxfc3JjIChzYXkgdiApLCBkbF9kc3QgKHNheSBmKQplKSBWZXJpZnkgUGFja2V0SW4gZXZlbnQgd2FzIHRyaWdnZXJlZCBvbiB0aGUgY29udHJvbCBwbGFuZQoKCgoxNS4gTXVsdGlwbGUgSGVhZGVyIEZpZWxkczogTDMgLS0tLS0tPiBUQkQKCgoKCjE2LiBNdWx0aXBsZSBIZWFkZXIgRmllbGRzOiBMNAoKVGVzdCBEZXNjcmlwdGlvbjogTWF0Y2ggb24gVGNwIFNvdXJjZSBQb3J0LCBUY3AgRGVzdGluYXRpb24gUG9ydAoKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaWxlOiBNdWx0aXBsZUhlYWRlckZpZWxkTDQKUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczogCgphKSBJbnNlcnQgYSBmbG93IHdpdGggbWF0Y2ggPSB0cF9zcmMgKHNheSB4KSwgdHBfZHN0IChzYXkgeSApCmIpIFNlbmQgYSB0Y3AgcGFja2V0IHdpdGggdHBfc3JjIChzYXkgeCksIHRwX2RzdCAoc2F5IHkgKQkKYykgVmVyaWZ5IHBhY2tldCB3YXMgcmVjaWV2ZWQgb24gZWdyZXNzX3BvcnQKYikgU2VuZCBhIGV0aCBwYWNrZXQgd2l0aCB0Y3Bfc3JjIChzYXkgdyksIHRjcF9kc3QgKHNheSB2ICkKZSkgVmVyaWZ5IFBhY2tldEluIGV2ZW50IHdhcyB0cmlnZ2VyZWQgb24gdGhlIGNvbnRyb2wgcGxhbmUKCgoKMTcuIEFsbCBIZWFkZXIgRmllbGRzOiBFeGFjdCBNYXRjaCBmbG93cwoKVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IGV4YWN0IGZsb3cgbWF0Y2hlcyBhcmUgcG9zc2libGUgCgpUZXN0IG1vZGU6IEF1dG9tYXRlZApUZXN0IFRpbGU6IEV4YWN0TWF0Y2gKUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczogCgphKSBJbnNlcnQgYSBmbG93IHdpdGggZXhhY3QgbWF0Y2gsIGFjdGlvbiBvdXRwdXQgdG8gZWdyZXNzX3BvcnQKYikgU2VuZCBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgIApjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIG9uIGVncmVzc19wb3J0CmQpIFNlbmQgYSBub24tbWF0Y2hpbmcgcGFja2V0CmUpIFZlcmlmeSBQYWNrZXRJbiBldmVudCBnZXRzIHRyaWdnZXJlZAoKCgoxOC4gRXhhY3QgTWF0Y2ggSGlnaGVzdCBQcmlvcml0eQoKVGVzdCBEZXNjcmlwdGlvbjogQW4gZXhhY3QgbWF0Y2ggZmxvdyBlbnRyeSBoYXMgYSBoaWdoZXN0IHByaW9yaXR5IGNvbXBhcmVkIHRvIG90aGVyIGZsb3cgZW50cmllcyAKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGlsZTogRXhhY3RNYXRjaEhpZ2gKUE9ydHM6IDQgKDEgQ29udHJvbCBQbGFuZSAzIERhdGEgUGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczogCgphKSBJbnNlcnQgdHdvIG92ZXJsYXBwaW5nIGZsb3dzOgoJRXhhY3QgTWF0Y2ggKHByaW8gPSBwICkgICBhY3Rpb24gZWdyZXNzX3BvcnQKCVdpbGRhY3JkIEFsbCAocHJpbyA9IHArICkgYWN0aW9uIGVncmVzc19wb3J0MgpiKSBTZW5kIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvd3MKYykgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBvbiBlZ3Jlc3NfcG9ydCAKCgoKCjE5LiBXaWxkY2FyZCBNYXRjaCBIaWdoZXN0IFByaW9yaXR5CgpUZXN0IERlc2NyaXB0aW9uOiBJZiBXaWxkY2FyZCBmbG93IGVudHJpZXMgaGF2ZSBwcmlvcml0eSBhc3NvY2lhdGVkIHdpdGggdGhlbS4KCQkgIEhpZ2hlciBwcmlvcml0eSBXaWxkY2FyZCBmbG93IG92ZXJyaWRlcyB0aGUgbG93ZXIgcHJpcm90eSBXaWxkY2FyZCBmbG93ICAKClRlc3QgbW9kZTogQXV0b21hdGVkClRlc3QgVGlsZTogV2lsZGNhcmRNYXRjaEhpZ2gKUE9ydHM6IDQgKDEgQ29udHJvbCBQbGFuZSAzIERhdGEgUGxhbmUpCkluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKVGVzdC1GaWVsZDogTWFuZGF0b3J5CgoKVGVzdCBOb3RlczogCgphKSBJbnNlcnQgdHdvIHdpbGRjYXJkZWQgZmxvd3MgOgoJV2lsZGNhcmQgQWxsIEV4Y2VwdCBpbmdyZXNzIChwcmlvID0gcCApICwgYWN0aW9uID0gZWdyZXNzX3BvcnQKCVdpbGRjYXJkIEFsbCAocHJpbyA9IHArICkgLGFjdGlvbiA9IGVncmVzc19wb3J0MgpiKSBTZW5kIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvd3MgIApjKSBWZXJpZnkgcGFja2V0IGlzIHJlY2lldmVkIG9uIGVncmVzc19wb3J0MgoKCgoyMC4gRnJhZ21lbnQgVENQIFNlZ21lbnRzIC0tLS0tLT4gVEJEIAoKVGVzdCBEZXNjcmlwdGlvbjogQ3JlYXRlIGZsb3cgbWF0Y2hpbmcgb24gdGNwIHBvcnQgbnVtYmVyLiBWZXJpZnkgdGhhdCBmcmFnbWVudGVkIHBhY2tldHMgYWx3YXlzIG1hdGNoIHRoYXQgZmxvdyBydWxlLgoKVGVzdCBtb2RlOiBBdXRvbWF0ZWQKVGVzdCBUaWxlOiBGcmFnVGNwU2VnClBPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQpJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwClRlc3QtRmllbGQ6IE1hbmRhdG9yeQo=