ZGlmZiAtLWdpdCBhL0RldGFpbGVkX1Rlc3RpbmdfTWV0aG9kb2xvZ3kuZG9jeCBiL0RldGFpbGVkX1Rlc3RpbmdfTWV0aG9kb2xvZ3kuZG9jeApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM0NDg2Ni4uMDAwMDAwMAotLS0gYS9EZXRhaWxlZF9UZXN0aW5nX01ldGhvZG9sb2d5LmRvY3gKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9EZXRhaWxlZF9UZXN0aW5nX01ldGhvZG9sb2d5LnR4dCBiL0RldGFpbGVkX1Rlc3RpbmdfTWV0aG9kb2xvZ3kudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMmM5NGUyLi4wMDAwMDAwCi0tLSBhL0RldGFpbGVkX1Rlc3RpbmdfTWV0aG9kb2xvZ3kudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOTgxICswLDAgQEAKLQkJCQkJCSoqKioqKioqKioqICBDb25mb3JtYW5jZSBUZXN0LXN1aXRlICAgKioqKioqKioqKioqKioqKgotCQkJCQkJT0YtU3dpdGNoLTEuMC4wLVRlc3RDYXNlcyBkZXRhaWxlZCB0ZXN0aW5nIG1ldGhvZG9sb2d5Ci0KLQotCi0KLQotKioqKiAgICAgT3BlbmZsb3cgcHJvdG9jb2wgbWVzc2FnZXMgICAgICoqKioKLQotCi0KLTEuIEZlYXR1cmVzIFJlcXVlc3QKLQotVGVzdCBEZXNjcmlwdGlvbjogQ2hlY2sgZmVhdHVyZXMgcmVxdWVzdCBpcyBpbXBsZW1lbnRlZAotCi1UZXN0IG1vZGU6IEF1dG9tYXRlZAotVGVzdCBUaXRsZTogRmVhdHVyZXNSZXF1ZXN0Ci1Qb3J0czogSSAoQ29udHJvbCBQbGFuZSkKLUluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gU2V0dXAKLVRlc3QtRmllbGQ6IE1hbmRhdG9yeQotCi0KLVRlc3QgTm90ZXM6IAotCi1hKSBTZW5kIE9GUFRfRkVBVFVSRVNfUkVRVUVTVCBmcm9tIGNvbnRyb2xsZXIuCi1iKSBWZXJpZnkgT0ZQVF9GRUFUVVJFU19SRVBMWSBpcyByZWNlaXZlZCB3aXRob3V0IGVycm9ycwotCi0KLQotMi4gQ29uZmlndXJhdGlvbiByZXF1ZXN0Ci0KLVRlc3QgRGVzY3JpcHRpb246IENoZWNrIGJhc2ljIGdldCBjb25maWd1cmF0aW9uIHJlcXVlc3QgaXMgaW1wbGVtZW50ZWQKLQotVGVzdCBtb2RlOiBBdXRvbWF0ZWQKLVRlc3QgVGl0bGU6IENvbmZpZ3VyYXRpb25SZXF1ZXN0Ci1Qb3J0czogSSAoQ29udHJvbCBQbGFuZSkKLUluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gU2V0dXAKLVRlc3QtRmllbGQ6IE1hbmRhdG9yeQotCi0KLVRlc3QgTm90ZXM6Ci0KLWEpIFNlbmQgT0ZQVF9HRVRfQ09ORklHX1JFUVVFU1QKLWIpIFZlcmlmeSBPRlBUX0dFVF9DT05GSUdfUkVQTFkgaXMgcmVjZWl2ZWQgd2l0aG91dCBlcnJvcnMuCi0KLQotCi0zLiBNb2RpZnkgU3RhdGUgKEFERCkKLQotVGVzdCBEZXNjcmlwdGlvbjogQ2hlY2sgYmFzaWMgRmxvdyBBREQgcmVxdWVzdCBpcyBpbXBsZW1lbnRlZAotCi1UZXN0IG1vZGU6IEF1dG9tYXRlZAotVGVzdCBUaXRsZTogTW9kaWZ5U3RhdGVBZGQKLVBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBkYXRhcGxhbmUpCi1Jbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIFNldHVwCi1UZXN0LUZpZWxkOiBNYW5kYXRvcnkKLQotCi1UZXN0IE5vdGVzOgotCi1hKSBTZW5kIE9GUFRfRkxPV19NT0QsIGNvbW1hbmQgPSBPRlBGQ19BREQgCi1iKSBTZW5kIG9mcF90YWJsZV9zdGF0cyByZXF1ZXN0IAotYykgVmVyaWZ5IHRoYXQgYWN0aXZlX2NvdW50PTEgaW4gdGhlIHJlcGx5Ci0KLQotCi0KLTQuIE1vZGlmeSBTdGF0ZSAoREVMRVRFKQotCi1UZXN0IERlc2NyaXB0aW9uOiBDaGVjayBiYXNpYyBGbG93IERlbGV0ZSByZXF1ZXN0IGlzIGltcGxlbWVudGVkCi0KLVRlc3QgbW9kZTogQXV0b21hdGVkCi1UZXN0IFRpdGxlOiBNb2RpZnlTdGF0ZURlbGV0ZQotUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIGRhdGFwbGFuZSkKLUluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gU2V0dXAKLVRlc3QtRmllbGQ6IE1hbmRhdG9yeQotCi0KLVRlc3QgTm90ZXM6Ci0KLWEpIFNlbmQgT0ZQVF9GTE9XX01PRCwgY29tbWFuZCA9IE9GUEZDX0FERCAKLWIpIFNlbmQgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QKLWMpIFZlcmlmeSB0aGF0IGFjdGl2ZV9jb3VudD0xIGluIHRoZSByZXBseQotZCkgU2VuZCBPRlBUX0ZMT1dfTU9ELCBjb21tYW5kID0gT0ZQRkNfREVMRVRFCi1lKSBTZW5kIG9mcF90YWJsZV9zdGF0cyByZXF1ZXN0Ci1mKSAgVmVyaWZ5IGFjdGl2ZSBfY291bnQ9MCBpbiB0aGUgcmVwbHkKLQotCi0KLTUuIE1vZGlmeSBTdGF0ZSAoTU9ESUZZKQotCi1UZXN0IERlc2NyaXB0aW9uOiBDaGVjayBiYXNpYyBGbG93IE1vZGlmeSByZXF1ZXN0IGlzIGltcGxlbWVudGVkCi0KLVRlc3QgbW9kZTogQXV0b21hdGVkCi1UZXN0IFRpdGxlOiBNb2RpZnlTdGF0ZU1vZGlmeQotUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSBhbmQgMiBEYXRhcGxhbmUpCi1Jbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIFNldHVwCi1UZXN0LUZpZWxkOiBNYW5kYXRvcnkKLQotCi1UZXN0IE5vdGVzOgotCi1hKSBTZW5kICBPRlBUX0ZMT1dfTU9EICwgY29tbWFuZCA9IE9GUEZDX0FERCwgYWN0aW9uIEEKLWIpIFNlbmQgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QsIFZlcmlmeSAgYWN0aXZlX2NvdW50PTEKLWMpIFNlbmQgT0ZQVF9GTE9XX01PRCAsIGNvbW1hbmQgPSBPRlBGQ19NT0RJRlksIGFjdGlvbiBBkgotZCkgU2VuZCBUZXN0IFBhY2tldCAgbWF0Y2hpbmcgdGhlIGZsb3cKLWUpIFZlcmlmeSBwYWNrZXQgaW1wbGVtZW50cyBhY3Rpb24gQZIKLQotCi0KLTYuIFJlYWQgU3RhdGUKLQotVGVzdCBEZXNjcmlwdGlvbjogQ2hlY2sgYmFzaWMgUmVhZCBTdGF0ZSBpcyBpbXBsZW1lbnRlZAotCi1UZXN0IG1vZGU6IEF1dG9tYXRlZAotVGVzdCBUaXRsZTogUmVhZFN0YXRlCi1Qb3J0czogMyAoMSBDb250cm9sIFBsYW5lLCAyIGRhdGFwbGFuZSkKLUluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gU2V0dXAKLVRlc3QtRmllbGQ6IE1hbmRhdG9yeQotCi0KLVRlc3QgTm90ZXM6Ci0KLWEpIFNlbmQgIE9GUFRfRkxPV19NT0QsIGNvbW1hbmQgPSBPRlBGQ19BREQKLWIpIENyZWF0ZSBhIE9GUENfRkxPV19TVEFUUyBtZXNzYWdlIGFuZCBzZW5kIGl0Ci1jKSBWZXJpZnkgc3dpdGNoIHJlcGxpZXMgd2l0aG91dCBlcnJvcnMKLQotCi0KLTcuIFNlbmQgcGFja2V0Ci0KLVRlc3QgRGVzY3JpcHRpb246IENoZWNrIGJhc2ljIFNlbmQtUGFja2V0IGlzIGltcGxlbWVudGVkLiAKLQkJICBTZW5kLVBhY2tldDogVGhlc2UgYXJlIHVzZWQgYnkgdGhlIGNvbnRyb2xsZXIgdG8gc2VuZCBwYWNrZXRzIG91dCBvZiBhIHNwZWNpZmllZCBwb3J0IG9uIHRoZSBzd2l0Y2guCi0KLVRlc3QgbW9kZTogQXV0b21hdGVkCi1UZXN0IFRpdGxlOiAgU2VuZFBhY2tldAotUG9ydHM6IDUgKDEgQ29udHJvbCBQbGFuZSwgNCBEYXRhcGxhbmUpIAotSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cAotVGVzdC1GaWVsZDogTWFuZGF0b3J5Ci0KLQotVGVzdCBOb3RlczoKLQotYSkgU2VuZCBPRlBUX1BBQ0tFVF9PVVQgb3V0IG1lc3NhZ2UgZnJvbSBjb250cm9sbGVyIHRvIHN3aXRjaCBmb3IgZXZlcnkgZGF0YXBsYW5lIHBvcnQuCi1iKSBWZXJpZnkgdGhlIHBhY2tldCBhcHBlYXJzIG9uIHRoZSBlYWNoIGRhdGFwbGFuZSBwb3J0Ci1jKSBWZXJpZnkgc2VudCBwYWNrZXQgbWF0Y2hlcyB0aGUgcmVjZWl2ZWQgcGFja2V0Ci0KLQotCi04LiBCYXJyaWVyIFJlcXVlc3QgCi0KLVRlc3QgRGVzY3JpcHRpb246IFRoaXMgdGVzdCBjaGVja3MgdGhhdCBhIGJhc2ljIGJhcnJpZXIgcmVxdWVzdCBkb2VzIG5vdCBnZW5lcmF0ZSBhbiBlcnJvci4KLQotVGVzdCBtb2RlOiBBdXRvbWF0ZWQKLVRlc3QgVGl0bGU6IEJhcnJpZXJSZXF1ZXN0UmVwbHkKLVBvcnRzOiBJIChDb250cm9sIFBsYW5lKQotSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cAotVGVzdC1GaWVsZDogTWFuZGF0b3J5Ci0KLQotVGVzdCBOb3RlczoKLQotYSkgU2VuZCBPRlBUX0JBUlJJRVJfUkVRVUVTVAotYykgVmVyaWZ5IE9GUFRfQkFSUklFUl9SRVBMWSBpcyByZWNlaXZlZCBvbiB0aGUgY29udHJvbCBwbGFuZS4KLQotCi0KLTkuIFBhY2tldCBJbgotCi1UZXN0IERlc2NyaXB0aW9uOiBDaGVjayBwYWNrZXRfaW4gaXMgaW1wbGVtZW50ZWQuIFRoaXMgdGVzdCBqdXN0IGNoZWNrcyB0aGF0IG5vbiBtYXRjaGVkIGRhdGFwbGFuZSBwYWNrZXRzIAotCQkgIGdlbmVyYXRlIGEgcGFja2V0X2luCi0KLVRlc3QgbW9kZTogQXV0b21hdGVkCi1UZXN0IFRpdGxlOiBQYWNrZXRJbgotUG9ydHM6IDIgKDEgQ29udHJvbCBQbGFuZSBhbmQgMSBEYXRhcGxhbmUpCi1Jbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIFNldHVwCi1UZXN0LUZpZWxkOiBNYW5kYXRvcnkKLQotCi1UZXN0IE5vdGVzOgotCi1hKSBTZW5kIGEgcGFja2V0IHRvIGRhdGFwbGFuZSBwb3J0ICwgd2l0aG91dCBpbnNlcnRpbmcgYSBmbG93IGVudHJ5Ci1iKSBWZXJpZnkgYSBPRlBUX1BBQ0tFVF9JTiBpcyBnZW5lcmF0ZWQgb24gdGhlIGNvbnRyb2wgcGxhbmUKLQotCi0KLTEwLiBIZWxsbwotCi1UZXN0IERlc2NyaXB0aW9uOiBUaGlzIHRlc3QgY2hlY2tzIGZvciBiYXNpYyBIZWxsbyBtZXNzYWdlIGdlbmVyYXRpb24gd2l0aCBjb3JyZWN0IHZlcnNpb24gZmllbGQuCi0KLVRlc3QgbW9kZTogQXV0b21hdGVkCi1UZXN0IFRpdGxlOiAgSGVsbG8KLVBvcnRzOiAxIChDb250cm9sIFBsYW5lKQotSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cAotVGVzdC1GaWVsZDogTWFuZGF0b3J5Ci0KLQotVGVzdCBOb3RlczoKLQotYSkgU2VuZCAgT0ZQVF9IRUxMTyBmcm9tIGNvbnRyb2xsZXIgdG8gc3dpdGNoCi1iKSBWZXJpZnkgc3dpdGNoIGFsc28gc2VuZHMgT0ZQVF9IRUxMTyBtZXNzYWdlIGluIHJlc3BvbnNlIAotYykgVmVyaWZ5IHZlcnNpb24gZmllbGQgaW4gdGhlIGhlbGxvIG1lc3NhZ2UgaXMgc2V0IHRvIE9wZW5mbG93IHZlcnNpb24gMS4wLjAKLQotCi0KLTExLiBFY2hvCi0KLVRlc3QgRGVzY3JpcHRpb246IFRoaXMgdGVzdCBjaGVja3MgZm9yIGJhc2ljIEVjaG8gUmVwbHkgbWVzc2FnZSBnZW5lcmF0aW9uIHdpdGggY29ycmVjdCB2ZXJzaW9uIGZpZWxkIHdpdGggCi0JCSAgc2FtZSB0cmFuc2FjdGlvbiBpZC4KLQotVGVzdCBtb2RlOiBBdXRvbWF0ZWQKLVRlc3QgVGl0bGU6ICBFY2hvV2l0aG91dEJvZHkKLVBvcnRzOiAxIChDb250cm9sIFBsYW5lKQotSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAotVGVzdC1GaWVsZDogTWFuZGF0b3J5Ci0KLQotVGVzdCBOb3RlczoKLQotYSkgU2VuZCBPRlBUX0VDSE9fUkVRVUVTVCBmcm9tIHRoZSBjb250cm9sbGVyIHNpZGUuCi1iKSBWZXJpZnkgc3dpdGNoIHJlc3BvbmRzIGJhY2sgd2l0aCBPRlBUX0VDSE9fUkVQTFkgd2l0aCBzYW1lIHhpZC4KLWMpIFZlcmlmeSBPcGVuZmxvdyB2ZXJzaW9uIGluIGhlYWRlciBpcyBzZXQgdG8gT3BlbmZsb3cgdmVyc2lvbiAxLjAuMC4KLQotCi0KLQotCi0qKioqICAgICBEZXRhaWxlZCBjb250cm9sbGVyIHRvIHN3aXRjaCBtZXNzYWdlcyAgICAgKioqKgotCi0KLQotMS4gT3ZlcmxhcCBjaGVja2luZwotCi1UZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCBpZiBvdmVybGFwIGNoZWNrIGZsYWcgaXMgc2V0IGluIHRoZSBmbG93IGVudHJ5IGFuZCBhbiBvdmVybGFwcGluZyBmbG93IGlzIAotCQkgIGluc2VydGVkIHRoZW4gYW4gZXJyb3IgaXMgZ2VuZXJhdGVkIGFuZCBzd2l0Y2ggcmVmdXNlcyBmbG93IGVudHJ5Ci0KLVRlc3QgbW9kZTogQXV0b21hdGVkCi1UZXN0IFRpdGxlOiAgT3ZlcmxhcENoZWNraW5nCi1Qb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgZGF0YXBsYW5lKQotSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAotVGVzdC1GaWVsZDogTWFuZGF0b3J5Ci0KLQotVGVzdC1Ob3RlczoKLQotYSkgR2VuZXJhdGUgRmxvdyBGMS0tPiBXaWxkY2FyZCBBbGwgCi1iKSBTZW5kIG9mcF90YWJsZV9zdGF0cyByZXF1ZXN0ICwgdmVyaWZ5IGFjdGl2ZV9jb3VudD0xCi1jKSBHZW5lcmF0ZSBvdmVybGFwcGluZyBmbG93IEYyIC0tPiBXaWxkY2FyZCBBbGwgRXhjZXB0IEluZ3Jlc3MgUG9ydCAoIHdpdGggZmxhZyBPRlBGRl9DSEVDS19PVkVSTEFQIHNldCkKLWQpIFZlcmlmeSB0aGF0IHN3aXRjaCBnZW5lcmF0ZXMgT0ZQVF9FUlJPUiBtc2cuICAKLSAgIFR5cGU6IE9GUEVUX0ZMT1dfTU9EX0ZBSUxFRCBjb2RlIDogT0ZQRk1GQ19PVkVSTEFQIAotCi0KLQotMi4gTm8gb3ZlcmxhcCBjaGVja2luZwotCi1UZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCB3aXRob3V0IG92ZXJsYXAgY2hlY2sgZmxhZyBzZXQsIG92ZXJsYXBwaW5nIGZsb3dzIGNhbiBiZSBjcmVhdGVkLgotCi1UZXN0IG1vZGU6IEF1dG9tYXRlZAotVGVzdCBUaXRsZTogIE5vT3ZlcmxhcGNoZWNraW5nCi1Qb3J0czogMyAoMSBDb250cm9sIFBsYW5lLCAyIERhdGFwbGFuZSkKLUluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKLVRlc3QtRmllbGQ6IE1hbmRhdG9yeQotCi0KLVRlc3QgTm90ZXM6Ci0KLWEpIEdlbmVyYXRlIEZsb3cgRjEtLT4gV2lsZGNhcmQgQWxsLgotYikgU2VuZCBvZnBfdGFibGVfc3RhdHMgcmVxdWVzdCAsIHZlcmlmeSBhY3RpdmVfY291bnQ9MQotZSkgR2VuZXJhdGUgb3ZlcmxhcHBpbmcgZmxvdyBGMiAtLT4gV2lsZGNhcmQgQWxsIEV4Y2VwdCBJbmdyZXNzIFBvcnQgKCB3aXRob3V0IGZsYWcgT0ZQRkZfQ0hFQ0tfT1ZFUkxBUCBzZXQpCi1jKSBTZW5kIGEgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QsIHZlcmlmeSBhY3RpdmVfY291bnQ9MgotCi0KLQotMy4gSWRlbnRpY2FsIGZsb3dzIAotCi1UZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCBhZGRpbmcgdHdvIGlkZW50aWNhbCBmbG93cyBvdmVyd3JpdGVzIHRoZSBleGlzdGluZyBvbmUgYW5kIGNsZWFycyBjb3VudGVycwotCi1UZXN0IG1vZGU6IEF1dG9tYXRlZAotVGVzdCBUaXRsZTogIElkZW50aWNhbEZsb3dzCi1Qb3J0czogMyAoMSBDb250cm9sIFBsYW5lKSwgKDIgZGF0YXBsYW5lKQotSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAotVGVzdC1GaWVsZDogTWFuZGF0b3J5Ci0KLQotVGVzdCBOb3RlczoKLQotYSkgR2VuZXJhdGUgRmxvdyBGMS4KLWIpIFNlbmQgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QgLCB2ZXJpZnkgYWN0aXZlX2NvdW50PTEKLWIpIEluY3JlbWVudCBjb3VudGVycyAocGFja2V0X2NvdW50LCBieXRlX2NvdW50KSBieSBzZW5kaW5nIGEgcGFja2V0IG1hdGNoaW5nIGZsb3cgRjEuCi1DKSBTZW5kIG9mcF9mbG93X3N0YXRzIHJlcXVlc3QuIFZlcmlmeSBmbG93IGNvdW50ZXJzOiBieXRlX2NvdW50IGFuZCBwYWNrZXRfY291bnQgCi1jKSBDcmVhdGUgaWRlbnRpY2FsIGZsb3cgRjIKLWQpIFNlbmQgYSBvZnBfdGFibGVfc3RhdHMgcmVxdWVzdCwgdmVyaWZ5IGFjdGl2ZV9jb3VudD0xCi1lKSBTZW5kIG9mcF9mbG93X3N0YXRzIHJlcXVlc3QuIFZlcmlmeSBmbG93IGNvdW50ZXJzOiBieXRlX2NvdW50IGFuZCBwYWNrZXRfY291bnQgYXJlIHJlc2V0Ci0KLQotCi00LiBObyB0YWJsZSB0byBhZGQgKFdyaXR0ZW4gaW4gb2Z0ZXN0l05lZWQgdG8gYWRkIHRvIGNvbmZvcm1hbmNlIFRlc3QtU3VpdGVzKQotCi0KLQotNS4gTmV2ZXIgdmFsaWQgcG9ydCAoVEJEKQotCi0KLQotCi02LiBDdXJyZW50bHkgbm90IGV4aXN0aW5nIHBvcnQgVmVyc2lvbiBBIGFuZCBCIChUQkQpCi0KLQotCi0KLTcuIEVtZXJnZW5jeSBmbG93IHdpdGggdGltZW91dCB2YWx1ZXMgCi0KLVRlc3QgRGVzY3JpcHRpb246IFRpbWVvdXQgdmFsdWVzIGFyZSBub3QgYWxsb3dlZCBmb3IgZW1lcmdlbmN5IGZsb3dzCi0KLVRlc3QgVGl0bGU6IEVtZXJGbG93VGltZW91dAotVGVzdCBtb2RlOiBBdXRvbWF0ZWQKLVBvcnRzOiAzICgxIGNvbnRyb2wgcGxhbmUsIDIgRGF0YXBsYW5lKQotSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cCAKLQotCi1UZXN0IE5vdGVzOgotCi1hKSAgR2VuZXJhdGUgYSBmbG93IEYgd2l0aCBPRlBGRl9FTUVSRyBzZXQgaW4gZmxhZyBhbmQgdGltZW91dCB2YWx1ZXMgYXNzaWduZWQuCi1iKSAgVmVyaWZ5IHN3aXRjaCBnZW5lcmF0ZXMgYW4gT0ZQVF9FUlJPUiBtc2csIFR5cGU6IE9GUEVUX0ZMT1dfTU9EX0ZBSUxFRCwgQ29kZSBPRlBGTUZDX0JBRF9FTUVSR19USU1FT1VUCi0KLQotCi04LiBNaXNzaW5nIG1vZGlmeSBhZGRzCi0KLVRlc3QgRGVzY3JpcHRpb246IElmIGEgbW9kaWZ5IGRvZXMgbm90IG1hdGNoIGFuIGV4aXN0aW5nIGZsb3csIHRoZSBmbG93IGdldHMgYWRkZWQuCi0KLVRpdGxlOiBNaXNzaW5nTW9kaWZ5QWRkCi1UZXN0IG1vZGU6IEF1dG9tYXRlZAotUG9ydHM6MyAoMSBjb250cm9sIHBsYW5lLDIgRGF0YSBQbGFuZSkKLUluaXRpYWwgU3RhdGU6IENvbm5lY3Rpb24gc2V0dXAsIENsZWFyIFN3aXRjaCBTdGF0ZQotVGVzdC1GaWVsZDogTWFuZGF0b3J5Ci0KLQotVGVzdCBOb3RlczoKLQotYSkgR2VuZXJhdGUgYSBmbG93LW1vZCAsIGNvbW1hbmQgT0ZQQ19NT0RJRlkgKE5vdGU6IFRoZXJlIHNob3VsZCBiZSBubyBmbG93cyBtYXRjaGluZyB0aGlzIGZsb3dfbW9kIG1vZGlmeSBjb21tYW5kKQotYikgU2VuZCBhIG9mcF90YWJsZV9zdGF0cyByZXF1ZXN0LCB2ZXJpZnkgYWN0aXZlX2NvdW50PTEKLQotCi0KLQotOS4gTW9kaWZ5IGNoYW5nZXMgYWN0aW9uLCBwcmVzZXJ2ZXMgY291bnRlcnMKLQotVGVzdCBEZXNjcmlwdGlvbjogQSBtb2RpZmllZCBmbG93IHByZXNlcnZlcyBjb3VudGVycwotCi1UaXRsZTogTW9kaWZ5QWN0aW9uCi1UZXN0IG1vZGU6IEF1dG9tYXRlZAotUG9ydHM6IDQoMSBjb250cm9sIHBsYW5lLCAzIERhdGFwbGFuZSkKLUluaXRpYWwgU3RhdGU6IENvbm5lY3Rpb24gc2V0dXAsIENsZWFyIFN3aXRjaCBTdGF0ZQotVGVzdC1GaWVsZDogTWFuZGF0b3J5Ci0KLQotVGVzdCBOb3RlczoKLQotYSkgQ3JlYXRlIGEgZmxvd19tb2QgRi0xIHdpdGggY29tbWFuZCBPRlBDX0FERCwgYWN0aW9uIEEKLWIpIFNlbmQgYSB0ZXN0IFBhY2tldCBtYXRjaGluZyB0aGUgZmxvdwotYykgU2VuZCBhbiBvZnBfZmxvd19zdGF0cyByZXF1ZXN0LCB2ZXJpZnkgYnl0ZV9jb3VudCBhbmQgcGFja2V0X2NvdW50Ci1lKSBDcmVhdGUgZmxvd19tb2Qgd2l0aCBjb21tYW5kIE9GUENfTU9ESUZZICxhY3Rpb24gQZIgYW5kIG1vZGlmeSBhY3Rpb24gb2YgZmxvdyBGLTEKLWYpIFNlbmQgYSBvZnBfZmxvd19zdGF0cyByZXF1ZXN0LCB2ZXJpZnkgZmxvdyBjb3VudGVycyBhcmUgcHJlc2VydmVkCi1nKSBTZW5kIHRlc3QgcGFja2V0LCB2ZXJpZnkgaXQgaW1wbGVtZW50cyBhY3Rpb24gQZIKLQotCi0KLTEwLiBTdHJpY3QgTW9kaWZ5IGNoYW5nZXMgYWN0aW9uLCBwcmVzZXJ2ZXMgY291bnRlcnMKLQotVGVzdCBEZXNjcmlwdGlvbjogU3RyaWN0IE1vZGlmeSBGbG93IGFsc28gY2hhbmdlcyBhY3Rpb24gcHJlc2VydmVzIGNvdW50ZXJzCi0KLVRpdGxlOiBTdHJpY3RNb2RpZnlBY3Rpb24KLVRlc3QgbW9kZTogQXV0b21hdGVkCi1Qb3J0czogNCgxIGNvbnRyb2wgcGxhbmUsIDMgRGF0YXBsYW5lKQotSW5pdGlhbCBTdGF0ZTogQ29ubmVjdGlvbiBzZXR1cCwgQ2xlYXIgU3dpdGNoIFN0YXRlCi1UZXN0LUZpZWxkOiBNYW5kYXRvcnkKLQotCi1UZXN0IE5vdGVzOgotCi1hKSBDcmVhdGUgdHdvIG92ZXJsYXBwaW5nIGZsb3dzOiBGIC0tPiBNYXRjaCBvbiBhbGwsIGV4Y2VwdCBvbmUgd2lsZGNhcmRlZCAoc3JjIGFkZHJlc3MpLiBBY3Rpb24gQS4gUHJpb3JpdHk9MTAwIAotICAgRpIgLS0+IE1hdGNoIG9uIGluZ3Jlc3NfcG9ydCA9IHBvcnQgWzBdLCB3aWxkY2FyZGVkIHJlc3QuIEFjdGlvbiBBLiBQcmlvcml0eT0xMAotYikgU2VuZCBhIG9mcF90YWJsZV9zdGF0cyByZXF1ZXN0LCB2ZXJpZnkgYWN0aXZlX2NvdW50PTIKLWMpIFNlbmQgUGFja2V0IChpdCB3b3VsZCBoYXZlIG1hdGNoZWQgYm90aCB0aGUgZmxvd3MsIHNpbmNlIHRoZXkgYXJlIG92ZXJsYXBwaW5nIGZsb3dzIGJ1dCBpdCB3b3VsZCBtYXRjaCBGbG93LUYxIGFzIGl0IGhhcyBoaWdoZXIgcHJpb3JpdHkuKQotZCkgU2VuZCBvZnBfZmxvd19zdGF0cyByZXF1ZXN0IGZvciBGbG93LTEgYW5kIHZlcmlmeSBjb3VudGVycyBwYWNrZXRfY291bnQgYW5kIGJ5dGVfY291bnQgCi1lKSBDcmVhdGUgZmxvd19tb2QgLGNvbW1hbmQgT0ZQQ19TVFJJQ1RfTU9ESUZZLG1hdGNoIG9uIGFsbCBleGNlcHQgc3JjIGFkZHJlc3MgLHByaW9yaXR5IDEwMCBhY3Rpb24gQZIKLWYpIFNlbmQgdGVzdCBwYWNrZXQgLCB2ZXJpZnkgYWN0aW9uIGlzIG1vZGlmaWVkCi1nKSBTZW5kIG9mcF9mbG93X3N0YXRzIHJlcXVlc3QsIHZlcmlmeSBjb3VudGVycyBhcmUgcHJlc2VydmVkLgotCi0KLQotCi0xMS4gRGVsZXRlIG5vbiBleGlzdGluZyBmbG93IAotCi1UZXN0IERlc2NyaXB0aW9uOiBSZXF1ZXN0IGRlbGV0aW9uIG9mIG5vbi1leGlzdGluZyBmbG93Ci0KLVRpdGxlOiBEZWxldGVOb25leGlzdGluZ0Zsb3cKLVRlc3QgbW9kZTogQXV0b21hdGVkCi1Qb3J0czogMSgxIGNvbnRyb2wgcGxhbmUpCi1Jbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUKLVRlc3QtRmllbGQ6IE1hbmRhdG9yeQotCi0KLVRlc3QgTm90ZXM6Ci0KLWEpIElzc3VlIGEgZGVsZXRlIGNvbW1hbmQsIHdpdGggbm8gZmxvd3MgaW5zZXJ0ZWQKLWIpIE1ha2Ugc3VyZSBubyBlcnJvciBpcyBnZW5lcmF0ZWQgb24gdGhlIGNvbnRyb2wgcGxhbmUKLQotCi0KLTEyLiBEZWxldGUgZmxvd3Mgd2l0aCBhbmQgd2l0aG91dCByZW1vdmVkIG1lc3NhZ2UKLQotVGVzdCBEZXNjcmlwdGlvbjogQ2hlY2sgZGVsZXRpb24gb2YgZmxvd3MgaGFwcGVucyBhbmQgZ2VuZXJhdGVzIG1lc3NhZ2VzIGFzIGNvbmZpZ3VyZWQuIGkuZS4gaWYgkVNlbmQgRmxvdyByZW1vdmVkIG1lc3NhZ2WSRmxhZyAKLQkgICAgICAgICAgaXMgc2V0IGluIHRoZSBmbG93IGVudHJ5LCB0aGUgZmxvdyBkZWxldGlvbiBvZiB0aGF0IHJlc3BlY3RpdmUgZmxvdyBzaG91bGQgZ2VuZXJhdGUgdGhlIGZsb3cgcmVtb3ZlZCBtZXNzYWdlLCAKLQkJICB2aWNlIHZlcnNhIGFsc28gZXhpc3RzIAotCi1UZXN0IFRpdGxlOiBTZW5kRmxvd1JlbQotVGVzdCBtb2RlOiBBdXRvbWF0ZWQKLVBvcnRzOiAzICgxIGNvbnRyb2wgcGxhbmUsIDIgRGF0YXBsYW5lKQotSW5pdGlhbCBTdGF0ZTogQ29ubmVjdGlvbiBzZXR1cCwgRGVmYXVsdCAoY2xlYXIgc3dpdGNoIHN0YXRlKQotVGVzdC1GaWVsZDogTWFuZGF0b3J5Ci0KLQotVGVzdCBOb3RlczoKLQotYSkgR2VuZXJhdGUgYSBmbG93IEYgd2l0aG91dCBPRlBGRl9TRU5EX0ZMT1dfUkVNIGZsYWcgc2V0Ci1iKSBJc3N1ZSBhIGRlbGV0ZSBjb21tYW5kIE9GUEZDX0RFTEVURQotYykgVmVyaWZ5IHRoYXQgT0ZQVF9GTE9XX1JFTU9WRUQgbWVzc2FnZSBpcyBub3QgZ2VuZXJhdGVkLgotYykgR2VuZXJhdGUgYSBmbG93IEaSIHdpdGggT0ZQRkZfU0VORF9GTE9XX1JFTSBmbGFnIHNldAotZCkgSXNzdWUgYSBkZWxldGUgY29tbWFuZCBPRlBGQ19ERUxFVEUKLWUpIFZlcmlmeSB0aGF0IE9GUFRfRkxPV19SRU1PVkVEIG1lc3NhZ2UgaXMgZ2VuZXJhdGVkCi0KLQotCi0xMy4gRGVsZXRlIGVtZXJnZW5jeSBmbG93IAotCi1UZXN0IERlc2NyaXB0aW9uOiBEZWxldGUgZW1lcmdlbmN5IGZsb3cgYW5kIHZlcmlmeSBubyBtZXNzYWdlIGlzIGdlbmVyYXRlZC5BbiBlbWVyZ2VuY3kgZmxvdyBkZWxldGlvbiB3aWxsIG5vdCBnZW5lcmF0ZSAKLQkJICBmbG93LXJlbW92ZWQgbWVzc2FnZXMgZXZlbiBpZiCRU2VuZCBGbG93IHJlbW92ZWQgbWVzc2FnZZIgZmxhZyB3YXMgc2V0IGR1cmluZyB0aGUgZW1lcmdlbmN5IGZsb3cgZW50cnkuCi0JCSAgCi0KLVRpdGxlOiBEZWxldGVFbWVyRmxvdwotVGVzdCBtb2RlOiBBdXRvbWF0ZWQKLVBvcnRzOiAzICgxIGNvbnRyb2wgcGxhbmUsIDIgRGF0YXBsYW5lKQotSW5pdGlhbCBTdGF0ZTogQ29ubmVjdGlvbiBzZXR1cCwgQ2xlYXIgU3dpdGNoIFN0YXRlIChkZWZhdWx0KSAKLQotCi1UZXN0LU5vdGVzOgotCi1hKSBJbnNlcnQgYSBmbG93IHdpdGggT0ZQRkZfRU1FUkcgZmxhZyBzZXQuCi1iKSBEZWxldGUgdGhlIGFkZGVkIGZsb3cgd2l0aCBPRlBGRl9TRU5EX0ZMT1dfUkVNIGZsYWcgc2V0Ci1jKSBUZXN0IHN1Y2Nlc3NmdWwgaWYgbm8gZmxvdyByZW1vdmVkIG1lc3NhZ2UgaXMgZ2VuZXJhdGVkLgotCi0KLQotMTQuIERlbGV0ZSBhbmQgdmVyaWZ5IHN0cmljdCBhbmQgbm9uLXN0cmljdCAKLQotVGVzdCBEZXNjcmlwdGlvbjogRGVsZXRlIGFuZCB2ZXJpZnkgc3RyaWN0IGFuZCBub24tc3RyaWN0IGJlaGF2aW9ycwotCi1UaGlzIHRlc3QgY29tcGFyZXMgdGhlIGJlaGF2aW9yIG9mIGRlbGV0ZSBzdHJpY3QgYW5kIG5vbi1zdHJpY3QuCi1UaXRsZTogU3RyaWN0VnNOb25zdHJpY3QKLVRlc3QgbW9kZTogQXV0b21hdGVkCi1Qb3J0czogMyAoMSBjb250cm9sIHBsYW5lLCAyIGRhdGFwbGFuZSkKLUluaXRpYWwgU3RhdGU6IENvbm5lY3Rpb24gc2V0dXAsIENsZWFyIFN3aXRjaCBTdGF0ZQotCi0KLVRlc3QtTm90ZXM6Ci0KLWEpIEluc2VydCBGbG93IEYgd2l0aCBhbiBleGFjdCBtYXRjaC4gCi1iKSBJc3N1ZSBOb24tc3RyaWN0IERlbGV0ZSBjb21tYW5kLCB2ZXJpZnkgRiBnZXRzIGRlbGV0ZWQuIAotYykgSW5zZXJ0IEYgd2l0aCBhbiBleGFjdCBNYXRjaCAKLWQpIElzc3VlIFN0cmljdCBEZWxldGUgQ29tbWFuZCwgdmVyaWZ5IEYgZ2V0cyBkZWxldGVkLgotZSkgSW5zZXJ0IEZsb3cgVCB3aXRoIG1hdGNoIG9uIGFsbCwgZXhjZXB0IG9uZSB3aWxkY2FyZGVkIChzYXkgc3JjIGFkZHJlc3MpLiAgCi1mKSBJbnNlcnQgYW5vdGhlciBmbG93IFQnIHdpdGggbWF0Y2ggb24gaW5ncmVzc19wb3J0LCB3aWxkY2FyZGVkIHJlc3QuICAKLWcpIElzc3VlIE5vbi1zdHJpY3QgRGVsZXRlICggbWF0Y2ggb24gaW5ncmVzc19wb3J0KS4gVmVyaWZ5IFQrVCcgZ2V0cyBkZWxldGVkLiAKLWgpIEluc2VydCBUIGFuZCBUJyBhZ2Fpbi4gSXNzdWUgU3RyaWN0IERlbGV0ZSAobWF0Y2ggb24gaW5ncmVzcyBwb3J0KSwgdmVyaWZ5IG9ubHkgVCcgZ2V0cyBkZWxldGVkCi1pKSBJbnNlcnQgVCwgYWRkIFByaW9yaXR5IFAgKHNheSAxMDApIAotaikgSW5zZXJ0IFQnIGFkZCBwcmlvcml0eSAoMjAwKS4gCi1rKSBJbnNlcnQgVCcgYWdhaW4gYWRkIHByaW9yaXR5IDMwMCAtLT4gVJQKLWwpIElzc3VlIE5vbi1TdHJpY3QgRGVsZXRlIChtYXRjaCBvbiBpbmdyZXNzIHBvcnQpLiBWZXJpZnkgVCtUkitUkpIgZ2V0cyBkZWxldGVkLiAKLW0pIEluc2VydCBULCBUkiwgVJKSIGFnYWluLCBJc3N1ZSBTdHJpY3QgRGVsZXRlIChtYXRjaCBvbiBpbmdyZXNzX3BvcnQpIHdpdGggcHJpb3JpdHkgPSAyMDAuIFZlcmlmeSBvbmx5IFSSIGdldHMgZGVsZXRlZAotCi0KLQotMTUuIERlbGV0ZSBmbG93cyB3aXRoIGNvbnN0cmFpbnQgb3V0X3BvcnQKLQotVGVzdCBEZXNjcmlwdGlvbjogRGVsZXRlIGZsb3dzIGZpbHRlcmVkIGJ5IGFjdGlvbiBvdXRwdXQuREVMRVRFIGFuZCBERUxFVEUgU1RSSUNUIGNvbW1hbmRzIGNhbiBiZSBvcHRpb25hbGx5IGZpbHRlcmVkIGJ5IG91dHB1dCBwb3J0LgotCQkgIElmIHRoZSBvdXRfcG9ydCBmaWVsZCBjb250YWlucyBhIHZhbHVlIG90aGVyIHRoYW4gT0ZQUF9OT05FLCBpdCBpbnRyb2R1Y2VzIGEgY29uc3RyYWludCB3aGVuIG1hdGNoaW5nLiAKLQkJICBUaGlzIGNvbnN0cmFpbnQgaXMgdGhhdCB0aGUgcnVsZSBtdXN0IGNvbnRhaW4gYW4gb3V0cHV0IGFjdGlvbiBkaXJlY3RlZCBhdCB0aGF0IHBvcnQuCi0KLVRpdGxlOiBPdXRwb3J0MQotVGVzdCBtb2RlOiBBdXRvbWF0ZWQKLVBvcnRzOiAzICgxIGNvbnRyb2wgcGxhbmUsIDIgRGF0YXBsYW5lcykKLUluaXRpYWwgU3RhdGU6IENvbm5lY3Rpb24gc2V0dXAsIENsZWFyIFN3aXRjaCBTdGF0ZQotVGVzdC1GaWVsZDogTWFuZGF0b3J5Ci0KLQotVGVzdC1Ob3RlczoKLQotYSkgSW5zZXJ0IGEgZmxvdyBGICB3aXRoIG91dHB1dCBhY3Rpb24gPSBwb3J0IHggCi1iKSBTZW5kIGEgZGVsZXRlIGNvbW1hbmQgbWF0Y2hpbmcgZmxvdyBGICxidXQgIG91dF9wb3J0ID1wb3J0IHkKLWMpIFNlbmQgYSB0YWJsZV9zdGF0cyByZXF1ZXN0ICwgdmVyaWZ5IG5vIGZsb3cgZ2V0cyBkZWxldGVkIGkuZS4gYWN0aXZlX2NvdW50PTEKLWQpIFNlbmQgYSBkZWxldGUgY29tbWFuZCBtYXRjaGluZyBmbG93IEYgLG91dHBvcnQgPSBwb3J0IHgKLWUpIFNlbmQgYSB0YWJsZV9zdGF0cyByZXF1ZXN0LCB2ZXJpZnkgZmxvdyBGIGdldHMgZGVsZXRlZC4KLQotCi0KLTE2LiBBZGQsIG1vZGlmeSBmbG93cyB3aXRoIGNvbnN0cmFpbnQgb3V0cHV0Ci0KLVRlc3QgRGVzY3JpcHRpb246IEFkZCwgbW9kaWZ5IGZsb3dzIHdpdGggb3V0cG9ydCBzZXQuIFRoaXMgZmllbGQgaXMgaWdub3JlZCBieSBBREQsIE1PRElGWSwgYW5kIE1PRElGWSBTVFJJQ1QgbWVzc2FnZXMuCi0KLVRpdGxlOiBPdXRwb3J0MgotVGVzdCBtb2RlOiBBdXRvbWF0ZWQKLVBvcnRzOiA0ICgxIGNvbnRyb2wgcGxhbmUsIDMgRGF0YSBwbGFuZXMpCi1Jbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUKLVRlc3QtRmllbGQ6IE1hbmRhdG9yeQotCi1UZXN0LU5vdGVzOgotCi1hKSBJbnNlcnQgYSBmbG93IEYgd2l0aCBhY3Rpb24gQSAob3V0cHV0IC0tPiBwb3J0IHgpICwgYnV0IG91dF9wb3J0IGZpZWxkIGluIHRoZSBmbG93IG1vZCBzZXQgYXMgcG9ydCB5Ci1iKSBTZW5kIFRhYmxlX1N0YXRzX1JlcXVlc3QsIFZlcmlmeSBGbG93IGdldHMgaW5zZXJ0ZWQuICggRmxvdyBhZGQgaWdub3JlcyBvdXRfcG9ydCBmaWVsZCkKLWMpIE1vZGlmeSB0aGUgYWN0aW9uIGluIGZsb3cgRiAsIGFjdGlvbiBBkiAoIG91dHB1dCAtLT5wb3J0IHogKSwgYnV0IG91dF9wb3J0IGZpZWxkIGluIHRoZSBmbG93IG1vZCBzZXQgYXMgcG9ydCB5Ci1kKSBTZW5kIHRlc3QgcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93IEYgCi1lKSBWZXJpZnkgcGFja2V0IGltcGxlbWVudHMgYWN0aW9uIEGSIChmbG93IG1vZGlmeSBpZ25vcmVzIG91dF9wb3J0IGZpZWxkKQotCi0KLQotMTcuIFZlcmlmeSB0aGF0IGlkbGUgdGltZW91dCBpcyBpbXBsZW1lbnRlZAotCi1UZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCBpZGxlIHRpbWVvdXQgaXMgaW1wbGVtZW50ZWQKLQotVGl0bGU6IElkbGVUaW1lb3V0Ci1UZXN0IG1vZGU6IEF1dG9tYXRlZAotUG9ydHM6IDMgKDEgY29udHJvbCBwbGFuZSwgMiBEYXRhcGxhbmVzKQotSW5pdGlhbCBTdGF0ZTogQ29ubmVjdGlvbiBzZXR1cCwgQ2xlYXIgU3dpdGNoIFN0YXRlCi1UZXN0LUZpZWxkOiBNYW5kYXRvcnkKLQotCi1UZXN0LU5vdGVzOgotCi1hKSBBZGQgYSBmbG93IHdpdGggaWRsZSB0aW1lb3V0IHNldCBhbmQgd2l0aCBPRlBQX1NFTkRfRkxPV19SRU0gYml0IHNldAotYikgVmVyaWZ5IGZsb3cgcmVtb3ZlZCBtZXNzYWdlIGlzIHJlY2VpdmVkLgotYykgVmVyaWZ5IGZsb3cgcmVtb3ZlZCByZWFzb24gd2FzIGlkbGVfdGltZW91dAotZCkgVmVyaWZ5IHRoZSBkdXJhdGlvbl9zZWMgZmllbGQgaXMgMSBzZWMgCi0KLQotCi0xOC4gVmVyaWZ5IHRoYXQgaGFyZCB0aW1lb3V0IGlzIGltcGxlbWVudGVkCi0KLVRlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IGhhcmQgdGltZW91dCBpcyBpbXBsZW1lbnRlZAotCi1UaXRsZTogSGFyZFRpbWVvdXQKLVRlc3QgbW9kZTogQXV0b21hdGVkCi1Qb3J0czogMyAoMSBjb250cm9sIHBsYW5lLCAyIERhdGFwbGFuZXMpCi1Jbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUgCi1UZXN0LUZpZWxkOiBNYW5kYXRvcnkKLQotCi1UZXN0LU5vdGVzOgotCi1hKSBBZGQgYSBmbG93IHdpdGggaGFyZCB0aW1lb3V0ID0xIHNldCBhbmQgd2l0aCBPRlBQX1NFTkRfRkxPV19SRU0gYml0IHNldAotYikgVmVyaWZ5IGZsb3cgcmVtb3ZlZCBtZXNzYWdlIGlzIHJlY2VpdmVkLgotYykgVmVyaWZ5IGZsb3cgcmVtb3ZlZCByZWFzb24gd2FzIGhhcmRfdGltZW91dAotZCkgVmVyaWZ5IHRoZSBkdXJhdGlvbl9zZWMgZmllbGQgaXMgMSBzZWMgCi0KLQotCi0xOS4gVmVyaWZ5IHRoYXQgbWVzc2FnZXMgYXJlIGdlbmVyYXRlZCBhcyBleHBlY3RlZAotCi1UZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCBGbG93IHJlbW92ZWQgbWVzc2FnZXMgYXJlIGdlbmVyYXRlZCBhcyBleHBlY3RlZAotCSAgICAgICAgICAvKiBTaW5jZSCTZmxvdyByZW1vdmVkIG1lc3NhZ2VzIGJlaW5nIGdlbmVyYXRlZCB3aGVuIGZsYWcgaXMgc2V0lCBpcyBhbHJlYWR5IHRlc3RlZCBpbiB0aGUgYWJvdmUgdGVzdHMgCi0gICAgICAgICAgICAgICAgICBTbyBoZXJlLCB3ZSB0ZXN0IHRoZSB2aWNlLXZlcnNhIGNvbmRpdGlvbi4qLwotCi1UaXRsZTogRmxvd1RpbWVvdXQKLVRlc3QgbW9kZTogQXV0b21hdGVkCi1Qb3J0czogMyAoMWNvbnRyb2wgcGxhbmUsIDFkYXRhcGxhbmUpCi1Jbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUgCi1UZXN0LUZpZWxkOiBNYW5kYXRvcnkKLQotCi1UZXN0LU5vdGVzOgotCi1hKSAgR2VuZXJhdGUgYW5kIGluc3RhbGwgYSBmbG93IHdpdGggaWRsZV90aW1lb3V0ID0gMSBzZXQgbm8gT0ZQRkZfU0VORF9GTE9XX1JFTSBmbGFnIHNldC4KLWIpICBWZXJpZnkgbm8gZmxvdyByZW1vdmVkIG1lc3NhZ2UgaXMgcmVjZWl2ZWQuCi1jKSAgU2VuZCB0YWJsZV9zdGF0c19yZXF1ZXN0IG1lc3NhZ2UgYW5kIHZlcmlmeSBhY3RpdmVfY291bnQ9MCAKLQotCi0KLQotCi0qKiogICBBY3Rpb25zICAgKioqCi0KLQotCi0xLiBObyBBY3Rpb24gZHJvcHMgcGFja2V0IAotCi1UZXN0IERlc2NyaXB0aW9uOiBJZiBubyBmb3J3YXJkIGFjdGlvbnMgYXJlIHByZXNlbnQsIHRoZSBwYWNrZXQgaXMgZHJvcHBlZC4gCi0JCQotUmVxdWlyZWQgQWN0aW9uOiBEcm9wLiAKLUEgZmxvdy1lbnRyeSB3aXRoIG5vIHNwZWNpZmllZCBhY3Rpb24gaW5kaWNhdGVzIHRoYXQgYWxsIG1hdGNoaW5nIHBhY2tldHMgc2hvdWxkIGJlIGRyb3BwZWQuIAotVGVzdCBtb2RlOiBBdXRvbWF0ZWQKLVRlc3QgVGl0bGU6ICBOb0FjdGlvbgotUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKLUluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKLVRlc3QtRmllbGQ6IE1hbmRhdG9yeQotCi0KLVRlc3QgTm90ZXM6Ci0KLWEpIFNlbmQgRmxvdyBtb2QgbWVzc2FnZSB3aXRob3V0IGFueSBhY3Rpb24gc3BlY2lmaWVkCi1iKSBTZW5kIE4gcGFja2V0cyBtYXRjaGluZyB0aGUgZmxvdyAKLWMpIFZlcmlmeSBwYWNrZXRzIGFyZSBub3QgcmVjZWl2ZWQgb24gYW55IG9mIHRoZSBkYXRhcGxhbmUgcG9ydHMgCi1kKSBWZXJpZnkgcGFja2V0cyBhcmUgbm90IGV2ZW4gc2VudCB0byB0aGUgY29udHJvbGxlcgotCi0KLQotMi4gIEdldCBzdXBwb3J0ZWQgYWN0aW9ucyBmcm9tIHN3aXRjaAotCi1UZXN0IERlc2NyaXB0aW9uOiBHZXQgdGhlIHN1cHBvcnRlZCBhY3Rpb25zIGZyb20gc3dpdGNoIGFuZCBtYWtlIHNhbml0eSBjaGVja3MuCi0JCSAgLypXaGVuIGNvbm5lY3RpbmcgdG8gdGhlIGNvbnRyb2xsZXIsIGEgc3dpdGNoIGluZGljYXRlIHdoaWNoIG9mIHRoZSCTT3B0aW9uYWwgQWN0aW9uc5QgaXQgc3VwcG9ydHMqLwotCi1UZXN0IG1vZGU6IEF1dG9tYXRlZAotVGVzdCBUaXRsZTogIEFubm91bmNlbWVudAotUG9ydHM6IDEgKENvbnRyb2wgUGxhbmUpCi1Jbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCi1UZXN0LUZpZWxkOiBNYW5kYXRvcnkKLSAgICAgICAKLQotVGVzdCBOb3RlczogCi0KLWEpIFNlbmQgZmVhdHVyZXNfcmVxdWVzdCAuCi1iKSBWZXJpZnkgcmVzcG9uc2UgaXMgT0ZQVF9GRUFUVVJFU19SRVBMWQotYykgVmVyaWZ5IHJlcGx5IGhhcyBzdXBwb3J0ZWQgYWN0aW9uIGxpc3Qgc3BlY2lmaWVkCi0KLQotCi0zLiBGb3J3YXJkIEFsbAotCi1UZXN0IERlc2NyaXB0aW9uOiBQYWNrZXQgaXMgc2VudCB0byBhbGwgZGF0YXBsYW5lIHBvcnRzIGV4Y2VwdCBpbmdyZXNzIHBvcnQgd2hlbiBvdXRwdXQgYWN0aW9uLnBvcnQgPSBPRlBQX0FMTAotCi1UZXN0IG1vZGU6IEF1dG9tYXRlZAotVGVzdCBUaXRsZTogIEZvcndhcmRBbGwKLVBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCi1Jbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCi1UZXN0LUZpZWxkOiBNYW5kYXRvcnkKLQotICAgICAgIAotVGVzdCBOb3RlczogCi0KLWEpIEluc3RhbGwgYSBmbG93IHdpdGggb3V0cHV0IGFjdGlvbi5wb3J0ID0gT0ZQUF9BTEwuCi1iKSBWZXJpZnkgcGFja2V0cyBhcmUgZm9yd2FyZGVkIHRvIGFsbCBwb3J0cyBleGNlcHQgaW5ncmVzcyBwb3J0LgotCi0KLQotNC4gRm9yd2FyZCBDb250cm9sbGVyIAotCi1UZXN0IERlc2NyaXB0aW9uOiBQYWNrZXQgaXMgc2VudCB0byBjb250cm9sbGVyIG91dHB1dC5wb3J0ID0gT0ZQUF9DT05UUk9MTEVSCi0KLVRlc3QgbW9kZTogQXV0b21hdGVkCi1UZXN0IFRpdGxlOiAgRm9yd2FyZENvbnRyb2xsZXIKLVBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCi1Jbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCi1UZXN0LUZpZWxkOiBNYW5kYXRvcnkKLQotICAgICAgIAotVGVzdCBOb3RlczogCi0KLWEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gb3V0cHV0IHBvcnQgPSBPRlBQX0NPTlRST0xMRVIKLWIpIFNlbmQgcGFja2V0cyBtYXRjaGluZyB0aGUgZmxvdwotYykgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBvbiB0aGUgY29udHJvbCBwbGFuZSBhcyBhIHBhY2tldF9pbiBtZXNzYWdlCi0KLQotCi01LiBGb3J3YXJkIExvY2FsIChUQkQgliBWZXJpZmljYXRpb24gb2YgcGFja2V0IGJlaW5nIHJlY2VpdmVkIGF0IGxvY2FsIG5ldHdvcmtpbmcgc3RhY2spCi0KLVRlc3QgRGVzY3JpcHRpb246IFBhY2tldCBpcyBzZW50IHRvIHN3aXRjaJJzIGxvY2FsIG5ldHdvcmtpbmcgc3RhY2sgaWYgb3V0cHV0LnBvcnQgPSBPRlBQX0xPQ0FMCi0KLVRlc3QgbW9kZTogQXV0b21hdGVkCi1UZXN0IFRpdGxlOiAgRm9yd2FyZExvY2FsCi1Qb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQotSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAotVGVzdC1GaWVsZDogTWFuZGF0b3J5Ci0KLSAgICAgICAKLVRlc3QgTm90ZXM6IAotCi1hKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uIG91dHB1dCBwb3J0ID0gT0ZQUF9MT0NBTAotYikgU2VuZCBwYWNrZXRzIG1hdGNoaW5nIHRoZSBmbG93Ci1jKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGluIHRoZSBzd2l0Y2iScyBsb2NhbCBuZXR3b3JraW5nIHN0YWNrLgotCi0KLQotNi4gRm9yd2FyZCBUYWJsZQotCi1UZXN0IERlc2NyaXB0aW9uOiBQZXJmb3JtIGFjdGlvbnMgaW4gZmxvdyB0YWJsZS4gT25seSBmb3IgcGFja2V0LW91dCBtZXNzYWdlcy4KLQkJICAvKklmIHRoZSBvdXRwdXQgYWN0aW9uLnBvcnQgaW4gdGhlIHBhY2tldG91dCBtZXNzYWdlID0gT0ZQLlRBQkxFLCB0aGVuIHRoZSBwYWNrZXQgaW1wbGVtZW50cyB0aGUgYWN0aW9uIAotCQkgIHNwZWNpZmllZCBpbiB0aGUgbWF0Y2hpbmcgZmxvdyBvZiB0aGUgRkxPVy1UQUJMRSovCi0KLVRlc3QgbW9kZTogQXV0b21hdGVkCi1UZXN0IFRpdGxlOiAgRm9yd2FyZFRhYmxlCi1Qb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQotSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAotVGVzdC1GaWVsZDogTWFuZGF0b3J5Ci0KLVRlc3QgTm90ZXM6IAotCi1hKSBJbnNlcnQgYSBmbG93IEYgd2l0aCBhY3Rpb24gb3V0cHV0LnBvcnQgPSBlZ3Jlc3NfcG9ydAotYikgU2VuZCBhIE9GUFRfUEFDS0VUX09VVCBtZXNzYWdlIHdpdGggb3V0IHBvcnQ9T0ZQUF9UQUJMRSBtYXRjaGluZyBmbG93IEYgCi1jKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIG9uIGVncmVzc19wb3J0IChpLmUgcGFja2V0b3V0IG1lc3NhZ2UgaW1wbGVtZW50ZWQgdGhlIGFjdGlvbiBzcGVjaWZpZWQgaW4gdGhlIG1hdGNoaW5nIGZsb3cgb2YgdGhlIFRhYmxlKQotCi0KLQotNy4gRm9yd2FyZCBJbiBQb3J0Ci0KLVRlc3QgRGVzY3JpcHRpb246IFBhY2tldCBpcyBzZW50IHRvIGlucHV0IHBvcnQgaWYgb3V0cHV0LnBvcnQgPSBPRlBQX0lOUE9SVAotCi1UZXN0IG1vZGU6IEF1dG9tYXRlZAotVGVzdCBUaXRsZTogIEZvcndhcmRJbnBvcnQKLVBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCi1Jbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCi1UZXN0LUZpZWxkOiBNYW5kYXRvcnkKLQotVGVzdCBOb3RlczogCi0KLWEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gb3V0cHV0IHBvcnQgPSBPRlBQX0lOUE9SVAotYikgU2VuZCBwYWNrZXRzIG1hdGNoaW5nIHRoZSBmbG93Ci1jKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIG9uIGFsbCBkYXRhcGxhbmUgcG9ydHMgZXhjZXB0IGZvciBpbnB1dCBwb3J0Ci0KLQotCi04LiBGb3J3YXJkIEZsb29kCi0KLVRlc3QgRGVzY3JpcHRpb246Rmxvb2QgdGhlIHBhY2tldCBhbG9uZyB0aGUgbWluaW11bSBzcGFubmluZyB0cmVlLCBub3QgaW5jbHVkaW5nIHRoZSBpbmNvbWluZyBpbnRlcmZhY2UuIAotCQkgUGFja2V0IGlzIHNlbnQgYWxsIHRoZSBkYXRhcGxhbmUgcG9ydHMgZXhjZXB0IHRoZSBpbnB1dCBwb3J0IGlmIG91dHB1dC5wb3J0ID0gT0ZQUF9GTE9PRAotCi1UZXN0IG1vZGU6IEF1dG9tYXRlZAotVGVzdCBUaXRsZTogIEZvcndhcmRfRmxvb2QKLVBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCi1Jbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCi1UZXN0LUZpZWxkOiBPcHRpb25hbAotCi1UZXN0IE5vdGVzOiAKLQotYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiBvdXRwdXQgcG9ydCA9IE9GUFBfRkxPT0QKLWIpIFNlbmQgcGFja2V0cyBtYXRjaGluZyB0aGUgZmxvdwotYykgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBvbiBhbGwgZGF0YXBsYW5lIHBvcnRzIGV4Y2VwdCBmb3IgaW5wdXQgcG9ydAotCi0KLQotOS4gTXVsdGlwbGUgUG9ydHMgLS0gVEJECi0KLQotCi0KLTEwLiBGb3J3YXJkIEVucXVldWUgLS0tIFRCRAotCi0KLQotCi0xMS4gU2V0IFZMQU4gSWQKLQotVGVzdCBEZXNjcmlwdGlvbjogQXR0YWNoIFZMQU4gSUQgdG8gdW50YWdnZWQgcGFja2V0LgotICAgICAgICAgICAgICAgICAgSWYgbm8gVkxBTiBpcyBwcmVzZW50LCBhIG5ldyBoZWFkZXIgaXMgYWRkZWQgd2l0aCB0aGUgc3BlY2lmaWVkIFZMQU4gSUQgYW5kIHByaW9yaXR5IG9mIHplcm8uCi0KLVRlc3QgbW9kZTogQXV0b21hdGVkCi1UZXN0IFRpdGxlOiAgQWRkVmxhbklkCi1Qb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQotSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAotVGVzdC1GaWVsZDogT3B0aW9uYWwKLQotICAgICAgIAotVGVzdCBOb3RlczogCi0KLWEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfVkxBTl9WSUQgLCB2bGFuX3ZpZCA9IHggCi1iKSBTZW5kIHBhY2tldCAobGVuZ3RoID0gMTAwIGJ5dGVzKSBtYXRjaGluZyB0aGUgZmxvdwotYikgICBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGhhcyB2bGFuIGlkIGFkZGVkIHRvIGl0LiAoSS5lIGxlbmd0aCBvZiBwYWNrZXQgd2l0aCB2aWQgaXMgMTA0IGJ5dGVzLCBkbF92bGFuX2VuYWJsZSA9IFRydWUsIGRsX3ZsYW49IHgsIGRsX3ZsYW5fcGNwPTApICAKLSAgIAotCi0KLTEyLiBNb2RpZnkgVkxBTiBJZAotCi1UZXN0IERlc2NyaXB0aW9uOiBNb2RpZmllcyBWbGFuIFRhZyBmb3IgYSB0YWdnZWQgcGFja2V0Ci0JCSAgSWYgYSBWTEFOIGhlYWRlciBhbHJlYWR5IGV4aXN0cywgdGhlIFZMQU4gSUQgaXMgcmVwbGFjZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHZhbHVlCi0KLVRlc3QgbW9kZTogQXV0b21hdGVkCi1UZXN0IFRpdGxlOiAgTW9kaWZ5VmxhbklkCi1Qb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQotSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAotVGVzdC1GaWVsZDogT3B0aW9uYWwKLQotCi1UZXN0IE5vdGVzOiAKLWEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfVkxBTl9WSUQgLCB2bGFuX3ZpZCA9IHggCi1iKSAgIFNlbmQgcGFja2V0IChsZW5ndGggPSAxMDAgYnl0ZXMpIG1hdGNoaW5nIHRoZSBmbG93Ci1jKSAgIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIHZsYW4gaWQgcmV3cml0dGVuLiAoSS5lIGxlbmd0aCBvZiAxMDQgYnl0ZXMsIGRsX3ZsYW5fZW5hYmxlID0gVHJ1ZSwgZGxfdmxhbj14KSAgCi0KLQotCi0xMy4gQWRkIFZMQU4gUHJpb3JpdHkgdG8gYW4gdW50YWdnZWQgcGFja2V0Ci0KLVRlc3QgRGVzY3JpcHRpb246IEF0dGFjaCBWTEFOIHByaW9yaXR5IHRvIGFuIHVudGFnZ2VkIHBhY2tldC4KLQkJICBTaW5jZSwgbm8gVkxBTiBJRCBpcyBwcmVzZW50OyBhIG5ldyBoZWFkZXIgaXMgYWRkZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHByaW9yaXR5IGFuZCBhIFZMQU4gSUQgb2YgemVyby5cCi0KLVRlc3QgbW9kZTogQXV0b21hdGVkCi1UZXN0IFRpdGxlOiAgVmxhblByaW8xCi1Qb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQotSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAotVGVzdC1GaWVsZDogT3B0aW9uYWwKLQotICAgICAgIAotVGVzdCBOb3RlczogCi0KLWEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfVkxBTl9QQ1AgLCBkbF92bGFuX3BjcCA9eAotYikgU2VuZCB1bnRhZ2dlZCBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgIAotYykgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBoYXMgdmxhbiBwcmlvcml0eSBhZGRlZCB0byBpdCBhbG9uZyB3aXRoIGEgdmlkIHZhbHVlIG9mIHplcm8gYWRkZWQgYnkgZGVmYXVsdCAgIChkbF92bGFuX2VuYWJsZSAsIGRsX3ZsYW4gPSAwICwgZGxfdmxhbl9wY3AgPXggKQotCi0KLQotMTQuIFJld3JpdGUgZXhpc3RpbmcgVkxBTiBwcmlvcml0eQotCi1UZXN0IERlc2NyaXB0aW9uOiBNb2RpZnkgVkxBTiBwcmlvcml0eSBmb3IgYSB0YWdnZWQgcGFja2V0LgotCi1UZXN0IG1vZGU6IEF1dG9tYXRlZAotVGVzdCBUaXRsZTogIFZsYW5QcmlvMgotUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKLUluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKLVRlc3QtRmllbGQ6IE9wdGlvbmFsCi0KLSAgICAgICAKLVRlc3QgTm90ZXM6IAotCi1hKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uID0gT0ZQQVRfU0VUX1ZMQU5fUENQICwgZGxfdmxhbl9wY3AgPW5ld192bGFuX3BjcAotYikgU2VuZCB0YWdnZWQgcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAoZGxfdmxhbiA9IG9sZF92bGFuX2lkICwgZGxfdmxhbl9wY3AgPSBvbGRfdmxhbl9wY3ApCi1jKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGhhcyB2bGFuIGlkIGFkZGVkIHRvIGl0LiAoZGxfdmxhbl9lbmFibGUgLCBkbF92bGFuID0gMCAsIGRsX3ZsYW5fcGNwID0gbmV3X3ZsYW5fcGNwKQotCi0KLQotCi0xNS4gTW9kaWZ5IEwyIFNyYyBBZGRyZXNzCi0KLVRlc3QgRGVzY3JpcHRpb246IE1vZGlmeSBFdGhlcm5ldCBTcmMgQWRkcmVzcyBvZiBhIHBhY2tldAotCi1UZXN0IG1vZGU6IEF1dG9tYXRlZAotVGVzdCBUaXRsZTogIE1vZGlmeUwyU3JjCi1Qb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQotSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAotVGVzdC1GaWVsZDogT3B0aW9uYWwKLQotICAgICAgIAotVGVzdCBOb3RlczogCi0KLWEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfRExfU1JDICwgZGxfc3JjID1uZXdfZGxfc3JjCi1iKSBTZW5kIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyAgKGRsX2RzdCA9IG9sZF9kbF9zcmMgKQotYykgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBoYXMgc3JjIGFkZHJlc3MgcmV3cml0dGVuLiAoZGxfc3JjPSBuZXdfZGxfc3JjKQotCi0KLQotMTYuIE1vZGlmeSBMMiBEZXN0aW5hdGlvbiBBZGRyZXNzCi0KLVRlc3QgRGVzY3JpcHRpb246IE1vZGlmeSBFdGhlcm5ldCBEZXN0aW5hdGlvbiBBZGRyZXNzIG9mIGEgcGFja2V0Ci0KLVRlc3QgbW9kZTogQXV0b21hdGVkCi1UZXN0IFRpdGxlOiAgTW9kaWZ5TDJEc3QKLVBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCi1Jbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCi1UZXN0LUZpZWxkOiBPcHRpb25hbAotCi0gICAgICAgCi1UZXN0IE5vdGVzOiAKLQotYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiA9IE9GUEFUX1NFVF9ETF9EU1QgLCBkbF9kc3QgPW5ld19kbF9kc3QKLWIpIFNlbmQgcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAoZGxfZHN0ID0gb2xkX2RsX3NyYyApCi1jKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGhhcyBkZXN0aW5hdGlvbiBhZGRyZXNzIHJld3JpdHRlbi4gKGRsX3NyYz0gbmV3X2RsX3NyYykKLQotCi0KLTE3LiBTdHJpcCBWTEFOIGhlYWRlciCWIChJbiBvZnRlc3QsICBuZWVkIHRvIGFkZCBpbiBjb25mb3JtYW5jZSB0ZXN0LXN1aXRlICkKLQotCi0KLTE4LiBNb2RpZnkgTDMgU3JjIEFkZHJlc3MKLQotVGVzdCBEZXNjcmlwdGlvbjogTW9kaWZ5IE5ldHdvcmsgU3JjIEFkZHJlc3Mgb2YgYSBwYWNrZXQKLQotVGVzdCBtb2RlOiBBdXRvbWF0ZWQKLVRlc3QgVGl0bGU6ICBNb2RpZnlMM1NyYwotUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKLUluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKLVRlc3QtRmllbGQ6IE9wdGlvbmFsCi0KLSAgICAgICAKLVRlc3QgTm90ZXM6IAotCi1hKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uID0gT0ZQQVRfU0VUX05XX1NSQyAsIG53X3NyYyA9bmV3X253X3NyYwotYikgU2VuZCBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgIChud19zcmMgPSBvbGRfbndfc3JjICkKLWMpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIG53IGFkZHJlc3MgcmV3cml0dGVuLiAobndfc3JjPSBuZXdfbndfc3JjKQotCi0KLQotMTkuIE1vZGlmeSBMMyBEc3QgQWRkcmVzcwotCi1UZXN0IERlc2NyaXB0aW9uOiBNb2RpZnkgTmV0d29yayBEc3QgQWRkcmVzcyBvZiBhIHBhY2tldAotCi1UZXN0IG1vZGU6IEF1dG9tYXRlZAotVGVzdCBUaXRsZTogIE1vZGlmeUwzRHN0Ci1Qb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQotSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAotVGVzdC1GaWVsZDogT3B0aW9uYWwKLQotICAgICAgIAotVGVzdCBOb3RlczogCi0KLWEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfTldfRFNUICwgbndfZHN0ID1uZXdfbndfZHN0Ci1iKSBTZW5kIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyAgKG53X2RzdCA9IG9sZF9ud19kc3QgKQotYykgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBoYXMgbncgZGVzdGluYXRpb24gYWRkcmVzcyByZXdyaXR0ZW4uIChud19kc3Q9IG5ld19ud19kc3QpCi0KLQotCi0yMC4gTW9kaWZ5IEw0IFNyYyBBZGRyZXNzCi0KLVRlc3QgRGVzY3JpcHRpb246IE1vZGlmeSBUQ1AgU291cmNlIFBvcnQgb2YgYSBwYWNrZXQKLQotVGVzdCBtb2RlOiBBdXRvbWF0ZWQKLVRlc3QgVGl0bGU6ICBNb2RpZnlMNFNyYwotUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKLUluaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKLVRlc3QtRmllbGQ6IE9wdGlvbmFsCi0KLSAgICAgICAKLVRlc3QgTm90ZXM6IAotCi1hKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uID0gT0ZQQVRfU0VUX1RQX1NSQyAsIHRjcF9zcG9ydCA9bmV3X3RjcF9zcG9ydAotYikgU2VuZCBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgICh0Y3Bfc3BvcnQgPSBvbGRfdGNwX3Nwb3J0ICkKLWMpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIHRjcCBzb3VyY2UgcG9ydCByZXdyaXR0ZW4uICh0Y3Bfc3BvcnQgPSBuZXdfdGNwX3Nwb3J0KQotCi0KLTIxLiBNb2RpZnkgTDQgRHN0IEFkZHJlc3MKLQotVGVzdCBEZXNjcmlwdGlvbjogTW9kaWZ5IFRDUCBEZXN0aW5hdGlvbiBQb3J0IG9mIGEgcGFja2V0Ci0KLVRlc3QgbW9kZTogQXV0b21hdGVkCi1UZXN0IFRpdGxlOiAgTW9kaWZ5TDREc3QKLVBvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCi1Jbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCi1UZXN0LUZpZWxkOiBPcHRpb25hbAotCi0gICAgICAgCi1UZXN0IE5vdGVzOiAKLQotYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiA9IE9GUEFUX1NFVF9UUF9EU1QgLCB0Y3BfZHBvcnQgPW5ld190Y3BfZHBvcnQKLWIpIFNlbmQgcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAodGNwX2Rwb3J0ID0gb2xkX3RjcF9kcG9ydCApCi1jKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGhhcyB0Y3AgZGVzdGluYXRpb24gcG9ydCByZXdyaXR0ZW4uICh0Y3Bfc3BvcnQgPSBuZXdfdGNwX3Nwb3J0KQotCi0KLQotMjIuIE1vZGlmeSBUT1MKLQotVGVzdCBEZXNjcmlwdGlvbjogTW9kaWZ5IE5ldHdvcmsgVHlwZSBvZiBzZXJ2aWNlCi0KLVRlc3QgbW9kZTogQXV0b21hdGVkCi1UZXN0IFRpdGxlOiAgTW9kaWZ5VG9zCi1Qb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQotSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAotVGVzdC1GaWVsZDogT3B0aW9uYWwKLQotICAgICAgIAotVGVzdCBOb3RlczogCi0KLWEpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfTldfVE9TLCBpcF90b3MgPW5ld19pcF90b3MKLWIpIFNlbmQgcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAoaXBfdG9zPSBvbGRfaXBfdG9zKQotYykgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBoYXMgdGNwIGRlc3RpbmF0aW9uIHBvcnQgcmV3cml0dGVuLiAoaXBfdG9zPSBuZXdfaXBfdG9zKQotCi0KLQotMjMuIE9yZGVyIE5vdCBwb3NzaWJsZSAgLS0gVEJECi0KLQotCi0KLTI0LiBTZXF1ZW50aWFsIGV4ZWN1dGlvbiAgLS0gVEJEIAotCmRpZmYgLS1naXQgYS90ZXN0cy9BY3Rpb25zLnB5IGIvdGVzdHMvQWN0aW9ucy5weQppbmRleCAwMTFkOWM3Li40OWY4YjY1IDEwMDY0NAotLS0gYS90ZXN0cy9BY3Rpb25zLnB5CisrKyBiL3Rlc3RzL0FjdGlvbnMucHkKQEAgLTQ3LDEzICs0NywxMyBAQAogCiAgICAKIAotY2xhc3Mgbm9fYWN0aW9uX2Ryb3AoYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKK2NsYXNzIE5vQWN0aW9uKGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CiAKICAgICAiIiJOb0FjdGlvbkRyb3AgOiBubyBhY3Rpb24gYWRkZWQgdG8gZmxvdyAsIGRyb3BzIHRoZSBwYWNrZXQuIiIiCiAKICAgICBkZWYgcnVuVGVzdChzZWxmKToKICAgICAgICAgCi0gICAgICAgIGFjX2xvZ2dlci5pbmZvKCJSdW5uaW5nIG5vX2FjdGlvbl9kcm9wIHRlc3QiKQorICAgICAgICBhY19sb2dnZXIuaW5mbygiUnVubmluZyBOb19BY3Rpb24gdGVzdCIpCiAKICAgICAgICAgb2ZfcG9ydHMgPSBhY19wb3J0X21hcC5rZXlzKCkKICAgICAgICAgb2ZfcG9ydHMuc29ydCgpCkBAIC05OCwxNCArOTgsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICdQYWNrZXRzIG5vdCByZWNlaXZlZCBvbiBjb250cm9sIHBsYW5lJykKIAogCi1jbGFzcyBhbm5vdW5jZW1lbnQoYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKK2NsYXNzIEFubm91bmNlbWVudChiYXNpYy5TaW1wbGVEYXRhUGxhbmUpOgogICAgIAogICAgICIiIkFubm91bmNlbWVudCA6IEdldCBhbGwgc3VwcG9ydGVkIGFjdGlvbnMgYnkgdGhlIHN3aXRjaC4KICAgICBTZW5kIE9GUFRfRkVBVFVSRVNfUkVRVUVTVCB0byBnZXQgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IHN3LiIiIgogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAKLSAgICAgICAgYWNfbG9nZ2VyLmluZm8oIlJ1bm5pbmcgYW5ub3VuY2VtZW50IHRlc3QiKQorICAgICAgICBhY19sb2dnZXIuaW5mbygiUnVubmluZyBBbm5vdW5jZW1lbnQgdGVzdCIpCiAKICAgICAgICAgYWNfbG9nZ2VyLmluZm8oIlNlbmRpbmcgRmVhdHVyZXNfUmVxdWVzdCIpCiAgICAgICAgIGFjX2xvZ2dlci5pbmZvKCJFeHBlY3RpbmcgRmVhdHVyZXMgUmVwbHkgd2l0aCBzdXBwb3J0ZWQgYWN0aW9ucyIpCkBAIC0xNDUsMTQgKzE0NSwxNCBAQAogICAgICAgICBhY19sb2dnZXIuaW5mbyhzdXBwb3J0ZWRfYWN0aW9ucykKICAgICAgICAgCiAKLWNsYXNzIGZvcndhcmRfYWxsKGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CitjbGFzcyBGb3J3YXJkQWxsKGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CiAgICAgCiAgICAgIiIiRm9yd2FyZEFsbCA6IFBhY2tldCBpcyBzZW50IHRvIGFsbCBkYXRhcGxhbmUgcG9ydHMKICAgICBleGNlcHQgaW5ncmVzcyBwb3J0IHdoZW4gb3V0cHV0IGFjdGlvbi5wb3J0ID0gT0ZQUF9BTEwiIiIKIAogICAgIGRlZiBydW5UZXN0KHNlbGYpOgogCi0gICAgICAgIGFjX2xvZ2dlci5pbmZvKCJSdW5uaW5nIGZvcndhcmQgYWxsIHRlc3QiKQorICAgICAgICBhY19sb2dnZXIuaW5mbygiUnVubmluZyBGb3J3YXJkX0FsbCB0ZXN0IikKIAogICAgICAgICBvZl9wb3J0cyA9IGFjX3BvcnRfbWFwLmtleXMoKQogICAgICAgICBvZl9wb3J0cy5zb3J0KCkKQEAgLTE5OSwxNCArMTk5LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgYWNfbG9nZ2VyLCBhY19jb25maWcpCiAKIAotY2xhc3MgZm9yd2FyZF9jb250cm9sbGVyKGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CitjbGFzcyBGb3J3YXJkQ29udHJvbGxlcihiYXNpYy5TaW1wbGVEYXRhUGxhbmUpOgogICAgIAogICAgICIiIkZvcndhcmRDb250cm9sbGVyIDogUGFja2V0IGlzIHNlbnQgdG8gY29udHJvbGxlciAKICAgICBvdXRwdXQucG9ydCA9IE9GUFBfQ09OVFJPTExFUiIiIgogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAgICAgICAgIAotICAgICAgICBhY19sb2dnZXIuaW5mbygiUnVubmluZyBmb3J3YXJkX2NvbnRyb2xsZXIgdGVzdCIpCisgICAgICAgIGFjX2xvZ2dlci5pbmZvKCJSdW5uaW5nIEZvcndhcmRfQ29udHJvbGxlciB0ZXN0IikKIAogICAgICAgICBvZl9wb3J0cyA9IGFjX3BvcnRfbWFwLmtleXMoKQogICAgICAgICBvZl9wb3J0cy5zb3J0KCkKQEAgLTI1NCwxNCArMjU0LDE0IEBACiAgICAgCiAKIAotY2xhc3MgZm9yd2FyZF9sb2NhbChiYXNpYy5TaW1wbGVEYXRhUGxhbmUpOgorY2xhc3MgRm9yd2FyZExvY2FsKGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CiAgICAKICAgICAiIiJGb3J3YXJkTG9jYWwgOiBQYWNrZXQgaXMgc2VudCB0byAgT0ZQUF9MT0NBTCBwb3J0IC4gCiAgICAgICAgIFRCRCA6IFRvIHZlcmlmeSBwYWNrZXQgcmVjaWV2ZWQgaW4gdGhlIGxvY2FsIG5ldHdvcmtpbmcgc3RhY2sgb2Ygc3dpdGNoIiIiCiAKICAgICBkZWYgcnVuVGVzdChzZWxmKToKIAotICAgICAgICBhY19sb2dnZXIuaW5mbygiUnVubmluZyBGb3J3YXJkIExvY2FsIHRlc3QiKQorICAgICAgICBhY19sb2dnZXIuaW5mbygiUnVubmluZyBGb3J3YXJkX0xvY2FsIHRlc3QiKQogCiAgICAgICAgIG9mX3BvcnRzID0gYWNfcG9ydF9tYXAua2V5cygpCiAgICAgICAgIG9mX3BvcnRzLnNvcnQoKQpAQCAtMzA0LDcgKzMwNCw3IEBACiAgICAgICAgICAgICAjVEJEOiBWZXJpZmljYXRpb24gb2YgcGFja2V0cyBiZWluZyByZWNpZXZlZC4KIAogCi1jbGFzcyBmb3J3YXJkX2Zsb29kKGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CitjbGFzcyBGb3J3YXJkRmxvb2QoYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKICAgICAKICAgICAiIiJGb3J3YXJkOkZsb29kIDogUGFja2V0IGlzIHNlbnQgdG8gYWxsIGRhdGFwbGFuZSBwb3J0cwogICAgIGV4Y2VwdCBpbmdyZXNzIHBvcnQgd2hlbiBvdXRwdXQgYWN0aW9uLnBvcnQgPSBPRlBQX0ZMT09EIApAQCAtMzEzLDcgKzMxMyw3IEBACiAgICAgCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAKLSAgICAgICAgYWNfbG9nZ2VyLmluZm8oIlJ1bm5pbmcgZm9yd2FyZCBmbG9vZCB0ZXN0cyIpCisgICAgICAgIGFjX2xvZ2dlci5pbmZvKCJSdW5uaW5nIEZvcndhcmRfRmxvb2QgdGVzdCIpCiAgICAgICAgIG9mX3BvcnRzID0gYWNfcG9ydF9tYXAua2V5cygpCiAgICAgICAgIG9mX3BvcnRzLnNvcnQoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKG9mX3BvcnRzKSA+IDEsICJOb3QgZW5vdWdoIHBvcnRzIGZvciB0ZXN0IikKQEAgLTM1OCwxNCArMzU4LDE0IEBACiAgICAgICAgIHJlY2VpdmVfcGt0X2NoZWNrKHNlbGYuZGF0YXBsYW5lLCBwa3QsIHllc19wb3J0cywgW2luZ3Jlc3NfcG9ydF0sCiAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgYWNfbG9nZ2VyLCBhY19jb25maWcpCiAKLWNsYXNzIGZvcndhcmRfaW5wb3J0KGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CitjbGFzcyBGb3J3YXJkSW5wb3J0KGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CiAgICAgCiAgICAgIiIiIEZvcndhcmRJblBvcnQgOiBQYWNrZXQgc2VudCB0byB2aXJ0dWFsIHBvcnQgSU5fUE9SVAogICAgIElmIHRoZSBvdXRwdXQucG9ydCA9IE9GUFAuSU5QT1JUIHRoZW4gdGhlIHBhY2tldCBpcyBzZW50IHRvIHRoZSBpbnB1dCBwb3J0IGl0c2VsZiIiIgogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAKLSAgICAgICAgYWNfbG9nZ2VyLmluZm8oIlJ1bm5pbmcgZm9yd2FyZF9pbnBvcnQgdGVzdCIpCisgICAgICAgIGFjX2xvZ2dlci5pbmZvKCJSdW5uaW5nIEZvcndhcmRfSW5wb3J0IHRlc3QiKQogCiAgICAgICAgIG9mX3BvcnRzID0gYWNfcG9ydF9tYXAua2V5cygpCiAgICAgICAgIG9mX3BvcnRzLnNvcnQoKQpAQCAtNDEwLDcgKzQxMCw3IEBACiAgICAgICAgIHJlY2VpdmVfcGt0X2NoZWNrKHNlbGYuZGF0YXBsYW5lLCBwa3QsIHllc19wb3J0cyxzZXQob2ZfcG9ydHMpLmRpZmZlcmVuY2UoW2luZ3Jlc3NfcG9ydF0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIGFjX2xvZ2dlciwgYWNfY29uZmlnKSAgICAgIAogCi1jbGFzcyBmb3J3YXJkX3RhYmxlKGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CitjbGFzcyBGb3J3YXJkVGFibGUoYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKICAgIAogICAgICIiIkZvcndhcmRUYWJsZSA6IFBlcmZvcm0gYWN0aW9ucyBpbiBmbG93IHRhYmxlLiBPbmx5IGZvciBwYWNrZXQtb3V0IG1lc3NhZ2VzLgogICAgICAgICBJZiB0aGUgb3V0cHV0IGFjdGlvbi5wb3J0IGluIHRoZSBwYWNrZXRvdXQgbWVzc2FnZSA9IE9GUC5UQUJMRSAsIHRoZW4gCkBAIC00MTgsNyArNDE4LDcgQEAKIAogICAgIGRlZiBydW5UZXN0KHNlbGYpOgogCi0gICAgICAgIGFjX2xvZ2dlci5pbmZvKCJSdW5uaW5nIEZvcndhcmQgVGFibGUgdGVzdCIpCisgICAgICAgIGFjX2xvZ2dlci5pbmZvKCJSdW5uaW5nIEZvcndhcmRfVGFibGUgdGVzdCIpCiAKICAgICAgICAgb2ZfcG9ydHMgPSBhY19wb3J0X21hcC5rZXlzKCkKICAgICAgICAgb2ZfcG9ydHMuc29ydCgpCkBAIC00NTEsMTMgKzQ1MSwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUocGt0IGlzIG5vdCBOb25lLCAnUGFja2V0IG5vdCByZWNlaXZlZCcpCiAKIAotY2xhc3MgYWRkX3ZsYW5fdGFnKGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CitjbGFzcyBBZGR2bGFuVGFnKGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CiAgICAgCiAgICAgIiIiQWRkVmxhblRhZyA6IEFkZHMgVkxBTiBUYWcgdG8gdW50YWdnZWQgcGFja2V0LiIiIgogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAKLSAgICAgICAgYWNfbG9nZ2VyLmluZm8oIlJ1bm5pbmcgYWRkX3ZsYW5fdGFnIHRlc3QiKQorICAgICAgICBhY19sb2dnZXIuaW5mbygiUnVubmluZyBBZGRfdmxhbl90YWcgdGVzdCIpCiAKICAgICAgICAgb2ZfcG9ydHMgPSBhY19wb3J0X21hcC5rZXlzKCkKICAgICAgICAgb2ZfcG9ydHMuc29ydCgpCkBAIC00OTEsMTMgKzQ5MSwxMyBAQAogICAgICAgICBmbG93X21hdGNoX3Rlc3Qoc2VsZiwgYWNfcG9ydF9tYXAsIHBrdD1wa3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgZXhwX3BrdD1leHBfcGt0LCBhY3Rpb25fbGlzdD1bdmlkX2FjdF0pCiAKLWNsYXNzIG1vZGlmeV92bGFuX3RhZyhiYXNpYy5TaW1wbGVEYXRhUGxhbmUpOgorY2xhc3MgTW9kaWZ5VmxhblRhZyhiYXNpYy5TaW1wbGVEYXRhUGxhbmUpOgogCiAgICAgIiIiTW9kaWZ5VmxhblRhZyA6IE1vZGlmaWVzIFZMQU4gVGFnIHRvIHRhZ2dlZCBwYWNrZXQuIiIiCiAgICAgCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAKLSAgICAgICAgYWNfbG9nZ2VyLmluZm8oIlJ1bm5pbmcgbW9kaWZ5X3ZsYW5fdGFnIHRlc3QiKQorICAgICAgICBhY19sb2dnZXIuaW5mbygiUnVubmluZyBNb2RpZnlfVmxhbl9UYWcgdGVzdCIpCiAKICAgICAgICAgb2ZfcG9ydHMgPSBhY19wb3J0X21hcC5rZXlzKCkKICAgICAgICAgb2ZfcG9ydHMuc29ydCgpCkBAIC01MjksMTMgKzUyOSwxMyBAQAogICAgICAgICBmbG93X21hdGNoX3Rlc3Qoc2VsZiwgYWNfcG9ydF9tYXAsIHBrdD1wa3QsIGV4cF9wa3Q9ZXhwX3BrdCwKICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl9saXN0PVt2aWRfYWN0XSkKICAgICAgICAgCi1jbGFzcyB2bGFuX3ByaW9fdW50YWdnZWQoYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKK2NsYXNzIFZsYW5QcmlvMShiYXNpYy5TaW1wbGVEYXRhUGxhbmUpOgogICAgCiAgICAgIiIiQWRkVmxhblByaW9VbnRhZ2dlZFBrdCA6IEFkZCBWTEFOIHByaW9yaXR5IHRvIHVudGFnZ2VkIHBhY2tldC4iIiIKICAgICAKICAgICBkZWYgcnVuVGVzdChzZWxmKToKIAotICAgICAgICBhY19sb2dnZXIuaW5mbygiUnVubmluZyB2bGFuX3ByaW9fdW50YWdnZWQgdGVzdCIpCisgICAgICAgIGFjX2xvZ2dlci5pbmZvKCJSdW5uaW5nIHZsYW5fUHJpb18xIHRlc3QiKQogCiAgICAgICAgIG9mX3BvcnRzID0gYWNfcG9ydF9tYXAua2V5cygpCiAgICAgICAgIG9mX3BvcnRzLnNvcnQoKQpAQCAtNTY2LDEzICs1NjYsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uX2xpc3Q9W2FjdF0pCiAKIAotY2xhc3MgbW9kaWZ5X3ZsYW5fcHJpbyhiYXNpYy5TaW1wbGVEYXRhUGxhbmUpOgorY2xhc3MgVmxhblByaW8yKGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CiAgICAgCiAgICAgIiIiTW9kaWZ5VmxhblByaW8gOiBNb2RpZnkgVkxBTiBwcmlvcml0eSB0byB0YWdnZWQgcGFja2V0LiIiIgogICAgIAogICAgIGRlZiBydW5UZXN0KHNlbGYpOgogICAgICAgICAKLSAgICAgICAgYWNfbG9nZ2VyLmluZm8oIlJ1bm5pbmcgbW9kaWZ5X3ZsYW5fcHJpbyB0ZXN0IikKKyAgICAgICAgYWNfbG9nZ2VyLmluZm8oIlJ1bm5pbmcgVmxhbl9QcmlvXzIgdGVzdCIpCiAKICAgICAgICAgb2ZfcG9ydHMgPSBhY19wb3J0X21hcC5rZXlzKCkKICAgICAgICAgb2ZfcG9ydHMuc29ydCgpCkBAIC02MDYsMTMgKzYwNiwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uX2xpc3Q9W3ZpZF9hY3RdKQogCiAKLWNsYXNzIG1vZGlmeV9sMl9zcmMoYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKK2NsYXNzIE1vZGlmeUwyU3JjKGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CiAgICAgCiAgICAgIiIiTW9kaWZ5TDJTcmMgOk1vZGlmeSB0aGUgc291cmNlIE1BQyBhZGRyZXNzIiIiCiAKICAgICBkZWYgcnVuVGVzdChzZWxmKToKIAotICAgICAgICBhY19sb2dnZXIuaW5mbygiUnVubmluZyBtb2RpZnlfbDJfc3JjIHRlc3QiKQorICAgICAgICBhY19sb2dnZXIuaW5mbygiUnVubmluZyBNb2RpZnlfTDJfU3JjIHRlc3QiKQogCiAgICAgICAgIG9mX3BvcnRzID0gYWNfcG9ydF9tYXAua2V5cygpCiAgICAgICAgIG9mX3BvcnRzLnNvcnQoKQpAQCAtNjQxLDEzICs2NDEsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl9saXN0PWFjdHMsIG1heF90ZXN0PTIpCiAKIAotY2xhc3MgbW9kaWZ5X2wyX2RzdChiYXNpYy5TaW1wbGVEYXRhUGxhbmUpOgorY2xhc3MgTW9kaWZ5TDJEc3QoYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKICAgICAKICAgICAiIiJNb2RpZnlMMlNEU3QgOk1vZGlmeSB0aGUgZGVzdCBNQUMgYWRkcmVzcyIiIgogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAKLSAgICAgICAgYWNfbG9nZ2VyLmluZm8oIlJ1bm5pbmcgbW9kaWZ5X2wyX2RzdCB0ZXN0IikKKyAgICAgICAgYWNfbG9nZ2VyLmluZm8oIlJ1bm5pbmcgTW9kaWZ5X0wyX0RzdCB0ZXN0IikKIAogICAgICAgICBvZl9wb3J0cyA9IGFjX3BvcnRfbWFwLmtleXMoKQogICAgICAgICBvZl9wb3J0cy5zb3J0KCkKQEAgLTY3NSwxMyArNjc1LDEzIEBACiAgICAgICAgIGZsb3dfbWF0Y2hfdGVzdChzZWxmLCBhY19wb3J0X21hcCwgcGt0PXBrdCwgZXhwX3BrdD1leHBfcGt0LCAKICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl9saXN0PWFjdHMsIG1heF90ZXN0PTIpCiAKLWNsYXNzIG1vZGlmeV9sM19zcmMoYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKK2NsYXNzIE1vZGlmeUwzU3JjKGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CiAgICAgCiAgICAgIiIiTW9kaWZ5TDNTcmMgOiBNb2RpZnkgdGhlIHNvdXJjZSBJUCBhZGRyZXNzIG9mIGFuIElQIHBhY2tldCAiIiIKIAogICAgIGRlZiBydW5UZXN0KHNlbGYpOgogCi0gICAgICAgIGFjX2xvZ2dlci5pbmZvKCJSdW5uaW5nIG1vZGlmeV9sM19zcmMgdGVzdCIpCisgICAgICAgIGFjX2xvZ2dlci5pbmZvKCJSdW5uaW5nIE1vZGlmeV9MM19TcmMgdGVzdCIpCiAKICAgICAgICAgb2ZfcG9ydHMgPSBhY19wb3J0X21hcC5rZXlzKCkKICAgICAgICAgb2ZfcG9ydHMuc29ydCgpCkBAIC03MDksMTMgKzcwOSwxMyBAQAogICAgICAgICBmbG93X21hdGNoX3Rlc3Qoc2VsZiwgYWNfcG9ydF9tYXAsIHBrdD1wa3QsIGV4cF9wa3Q9ZXhwX3BrdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fbGlzdD1hY3RzLCBtYXhfdGVzdD0yKQogCi1jbGFzcyBtb2RpZnlfbDNfZHN0KGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CitjbGFzcyBNb2RpZnlMM0RzdChiYXNpYy5TaW1wbGVEYXRhUGxhbmUpOgogICAgIAogICAgICIiIk1vZGlmeUwzRHN0IDpNb2RpZnkgdGhlIGRlc3QgSVAgYWRkcmVzcyBvZiBhbiBJUCBwYWNrZXQiIiIKICAgICAKICAgICBkZWYgcnVuVGVzdChzZWxmKToKIAotICAgICAgICBhY19sb2dnZXIuaW5mbygiUnVubmluZyBtb2RpZnlfbDNfZHN0IHRlc3QiKQorICAgICAgICBhY19sb2dnZXIuaW5mbygiUnVubmluZyBNb2RpZnlfTDNfRHN0IHRlc3QiKQogCiAgICAgICAgIG9mX3BvcnRzID0gYWNfcG9ydF9tYXAua2V5cygpCiAgICAgICAgIG9mX3BvcnRzLnNvcnQoKQpAQCAtNzQ0LDEzICs3NDQsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl9saXN0PWFjdHMsIG1heF90ZXN0PTIpCiAKIAotY2xhc3MgbW9kaWZ5X2w0X3NyYyhiYXNpYy5TaW1wbGVEYXRhUGxhbmUpOgorY2xhc3MgTW9kaWZ5TDRTcmMoYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKICAgICAKICAgICAiIiJNb2RpZnlMNFNyYyA6IE1vZGlmeSB0aGUgc291cmNlIFRDUCBwb3J0IG9mIGEgVENQIHBhY2tldCIiIgogICAgIAogICAgIGRlZiBydW5UZXN0KHNlbGYpOgogCi0gICAgICAgIGFjX2xvZ2dlci5pbmZvKCJSdW5uaW5nIG1vZGlmeV9sNF9zcmMgdGVzdCIpCisgICAgICAgIGFjX2xvZ2dlci5pbmZvKCJSdW5uaW5nIE1vZGlmeV9MNF9TcmMgdGVzdCIpCiAKICAgICAgICAgb2ZfcG9ydHMgPSBhY19wb3J0X21hcC5rZXlzKCkKICAgICAgICAgb2ZfcG9ydHMuc29ydCgpCkBAIC03NzgsMTMgKzc3OCwxMyBAQAogICAgICAgICBmbG93X21hdGNoX3Rlc3Qoc2VsZiwgYWNfcG9ydF9tYXAsIHBrdD1wa3QsIGV4cF9wa3Q9ZXhwX3BrdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fbGlzdD1hY3RzLCBtYXhfdGVzdD0yKQogCi1jbGFzcyBtb2RpZnlfbDRfZHN0KGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CitjbGFzcyBNb2RpZnlMNERzdChiYXNpYy5TaW1wbGVEYXRhUGxhbmUpOgogICAgIAotICAgICIiIiBNb2RpZnlMNERzdDogTW9kaWZ5IHRoZSBkZXN0IFRDUCBwb3J0IG9mIGEgVENQIHBhY2tldCAoVFAxKSIiIgorICAgICIiIiBNb2RpZnlMNERzdDogTW9kaWZ5IHRoZSBkZXN0IFRDUCBwb3J0IG9mIGEgVENQIHBhY2tldCAiIiIKIAogICAgIGRlZiBydW5UZXN0KHNlbGYpOgogCi0gICAgICAgIGFjX2xvZ2dlci5pbmZvKCJSdW5uaW5nIG1vZGlmeV9sNF9kc3QgdGVzdCIpCisgICAgICAgIGFjX2xvZ2dlci5pbmZvKCJSdW5uaW5nIE1vZGlmeV9MNF9Ec3QgdGVzdCIpCiAKICAgICAgICAgb2ZfcG9ydHMgPSBhY19wb3J0X21hcC5rZXlzKCkKICAgICAgICAgb2ZfcG9ydHMuc29ydCgpCkBAIC04MTIsMTMgKzgxMiwxMyBAQAogICAgICAgICBmbG93X21hdGNoX3Rlc3Qoc2VsZiwgYWNfcG9ydF9tYXAsIHBrdD1wa3QsIGV4cF9wa3Q9ZXhwX3BrdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fbGlzdD1hY3RzLCBtYXhfdGVzdD0yKQogCi1jbGFzcyBtb2RpZnlfdG9zKGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CitjbGFzcyBNb2RpZnlUb3MoYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKICAgICAKICAgICAiIiJNb2RpZnlUT1MgOk1vZGlmeSB0aGUgSVAgdHlwZSBvZiBzZXJ2aWNlIG9mIGFuIElQIHBhY2tldCIiIgogICAgCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAKLSAgICAgICAgYWNfbG9nZ2VyLmluZm8oIlJ1bm5pbmcgbW9kaWZ5X3RvcyB0ZXN0IikKKyAgICAgICAgYWNfbG9nZ2VyLmluZm8oIlJ1bm5pbmcgTW9kaWZ5X1RvcyB0ZXN0IikKIAogICAgICAgICBvZl9wb3J0cyA9IGFjX3BvcnRfbWFwLmtleXMoKQogICAgICAgICBvZl9wb3J0cy5zb3J0KCkKZGlmZiAtLWdpdCBhL3Rlc3RzL0RldGFpbGVkX0NvbnRyX1N3X01lc3NhZ2VzLnB5IGIvdGVzdHMvRGV0YWlsZWRfQ29udHJfU3dfTWVzc2FnZXMucHkKaW5kZXggMzBjNzJkOS4uMTU4Zjc4NyAxMDA2NDQKLS0tIGEvdGVzdHMvRGV0YWlsZWRfQ29udHJfU3dfTWVzc2FnZXMucHkKKysrIGIvdGVzdHMvRGV0YWlsZWRfQ29udHJfU3dfTWVzc2FnZXMucHkKQEAgLTQwLDcgKzQwLDcgQEAKICAgICBjc19jb25maWcgPSBjb25maWcKIAogCi1jbGFzcyBvdmVybGFwX2NoZWNraW5nKGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CitjbGFzcyBPdmVybGFwQ2hlY2tpbmcoYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKICAgICAKICAgICAiIiJWZXJpZnkgdGhhdCBpZiBvdmVybGFwIGNoZWNrIGZsYWcgaXMgc2V0IGluIHRoZSBmbG93IGVudHJ5IGFuZCBhbiBvdmVybGFwcGluZyBmbG93IGlzIGluc2VydGVkIHRoZW4gYW4gZXJyb3IgCiAgICAgICAgIGlzIGdlbmVyYXRlZCBhbmQgc3dpdGNoIHJlZnVzZXMgZmxvdyBlbnRyeSIiIgpAQCAtMTAxLDcgKzEwMSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Vycm9yIE1lc3NhZ2UgY29kZSBpcyBub3Qgb3ZlcmxhcCcpCiAKIAotY2xhc3Mgbm9fb3ZlcmxhcF9jaGVja2luZyhiYXNpYy5TaW1wbGVEYXRhUGxhbmUpOgorY2xhc3MgTm9PdmVybGFwQ2hlY2tpbmcoYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKIAogICAgICIiIlZlcmlmeSB0aGF0IHdpdGhvdXQgb3ZlcmxhcCBjaGVjayBmbGFnIHNldCwgb3ZlcmxhcHBpbmcgZmxvd3MgY2FuIGJlIGNyZWF0ZWQuIiIiICAKICAgICAKQEAgLTEzMyw3ICsxMzMsNyBAQAogICAgICAgICBWZXJpZnlfVGFibGVTdGF0cyhzZWxmLGFjdGl2ZV9lbnRyaWVzPTIpCiAKIAotY2xhc3MgaWRlbnRpY2FsX2Zsb3dzKGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CitjbGFzcyBJZGVudGljYWxGbG93cyhiYXNpYy5TaW1wbGVEYXRhUGxhbmUpOgogICAgIAogICAgICIiIlZlcmlmeSB0aGF0IGFkZGluZyB0d28gaWRlbnRpY2FsIGZsb3dzIG92ZXJ3cml0ZXMgdGhlIGV4aXN0aW5nIG9uZSBhbmQgY2xlYXJzIGNvdW50ZXJzIiIiCiAKQEAgLTE3NCwxMyArMTc0LDEzIEBACiAgICAgICAgIFZlcmlmeV9GbG93U3RhdHMoc2VsZixtYXRjaCxieXRlX2NvdW50PTAscGFja2V0X2NvdW50PTApCiAKICAgIAotY2xhc3MgZW1lcl9mbG93X3dpdGhfdGltZW91dChiYXNpYy5TaW1wbGVQcm90b2NvbCk6IAorY2xhc3MgRW1lckZsb3dUaW1lb3V0KGJhc2ljLlNpbXBsZVByb3RvY29sKTogCiAKICAgICAiIiJUaW1lb3V0IHZhbHVlcyBhcmUgbm90IGFsbG93ZWQgZm9yIGVtZXJnZW5jeSBmbG93cyIiIgogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAKLSAgICAgICAgY3NfbG9nZ2VyLmluZm8oIlJ1bm5pbmcgRW1lcmdlbmN5IGZsb3cgd2l0aCB0aW1lb3V0IHZhbHVlcyB0ZXN0IikKKyAgICAgICAgY3NfbG9nZ2VyLmluZm8oIlJ1bm5pbmcgRW1lcmdlbmN5X0Zsb3dfVGltZW91dCB0ZXN0IikKICAgICAgICAgCiAgICAgICAgIG9mX3BvcnRzID0gY3NfcG9ydF9tYXAua2V5cygpCiAgICAgICAgIG9mX3BvcnRzLnNvcnQoKQpAQCAtMjI2LDcgKzIyNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Vycm9yIE1lc3NhZ2UgY29kZSBpcyBub3QgYmFkIGVtZXJnZW5jeSB0aW1lb3V0JykKIAogCi1jbGFzcyBtaXNzaW5nX21vZGlmeV9hZGQoYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKK2NsYXNzIE1pc3NpbmdNb2RpZnlBZGQoYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKIAogICAgICIiIklmIGEgbW9kaWZ5IGRvZXMgbm90IG1hdGNoIGFuIGV4aXN0aW5nIGZsb3csIHRoZSBmbG93IGdldHMgYWRkZWQgIiIiCiAgICAgCkBAIC0yNjYsNyArMjY2LDcgQEAKICAgICAgICAgVmVyaWZ5X1RhYmxlU3RhdHMoc2VsZixhY3RpdmVfZW50cmllcz0xKQogCiAKLWNsYXNzIG1vZGlmeV9hY3Rpb24oYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKK2NsYXNzIE1vZGlmeUFjdGlvbihiYXNpYy5TaW1wbGVEYXRhUGxhbmUpOgogCiAgICAgIiIiQSBtb2RpZmllZCBmbG93IHByZXNlcnZlcyBjb3VudGVycyIiIgogICAgIApAQCAtMzA0LDcgKzMwNCw3IEBACiAgICAgICAgIFZlcmlmeV9GbG93U3RhdHMoc2VsZixtYXRjaCxieXRlX2NvdW50PSgyKmxlbihzdHIocGt0KSkpLHBhY2tldF9jb3VudD0yKQogCiAKLWNsYXNzIHN0cmljdF9tZGlmeV9hY3Rpb24oYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKK2NsYXNzIFN0cmljdE1vZGlmeUFjdGlvbihiYXNpYy5TaW1wbGVEYXRhUGxhbmUpOgogCiAgICAgIiIiU3RyaWN0IE1vZGlmeSBGbG93IGFsc28gY2hhbmdlcyBhY3Rpb24gcHJlc2VydmVzIGNvdW50ZXJzIiIiCiAKQEAgLTM0OCw3ICszNDgsNyBAQAogICAgICAgICBWZXJpZnlfRmxvd1N0YXRzKHNlbGYsbWF0Y2gsYnl0ZV9jb3VudD0oMipsZW4oc3RyKHBrdCkpKSxwYWNrZXRfY291bnQ9MikKIAogCi1jbGFzcyBkZWxldGVfbm9uZXhpc3RpbmdfZmxvdyhiYXNpYy5TaW1wbGVEYXRhUGxhbmUpOgorY2xhc3MgRGVsZXRlTm9uZXhpc3RpbmdGbG93KGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CiAgICAgCiAgICAgIiIiUmVxdWVzdCBkZWxldGlvbiBvZiBub24tZXhpc3RpbmcgZmxvdyIiIgogICAgIApAQCAtMzgyLDcgKzM4Miw3IEBACiAKIAogICAgICAgICAKLWNsYXNzIHNlbmRfZmxvd19yZW0oYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKK2NsYXNzIFNlbmRGbG93UmVtKGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CiAgICAgCiAgICAgIiIiQ2hlY2sgZGVsZXRpb24gb2YgZmxvd3MgaGFwcGVucyBhbmQgZ2VuZXJhdGVzIG1lc3NhZ2VzIGFzIGNvbmZpZ3VyZWQuCiAgICAgSWYgU2VuZCBGbG93IHJlbW92ZWQgbWVzc2FnZSBGbGFnIGlzIHNldCBpbiB0aGUgZmxvdyBlbnRyeSwgdGhlIGZsb3cgZGVsZXRpb24gb2YgdGhhdCByZXNwZWN0aXZlIGZsb3cgc2hvdWxkIGdlbmVyYXRlIHRoZSBmbG93IHJlbW92ZWQgbWVzc2FnZSwgCkBAIC0zOTAsNyArMzkwLDcgQEAKIAogICAgIGRlZiBydW5UZXN0KHNlbGYpOgogCi0gICAgICAgIGNzX2xvZ2dlci5pbmZvKCJSdW5uaW5nIFNlbmQgRmxvdyByZW1vdmVkIG1lc3NhZ2UgdGVzdCBiZWdpbnMiKQorICAgICAgICBjc19sb2dnZXIuaW5mbygiUnVubmluZyBTZW5kX0Zsb3dfUmVtIHRlc3QgIikKIAogICAgICAgICBvZl9wb3J0cyA9IGNzX3BvcnRfbWFwLmtleXMoKQogICAgICAgICBvZl9wb3J0cy5zb3J0KCkKQEAgLTQ0MywxNCArNDQzLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAnRGlkIG5vdCByZWNlaXZlIGZsb3cgcmVtb3ZlZCBtZXNzYWdlIGZvciB0aGlzIGZsb3cnKQogCiAKLWNsYXNzIGRlbGV0ZV9lbWVyX2Zsb3coYmFzaWMuU2ltcGxlUHJvdG9jb2wpOgorY2xhc3MgRGVsZXRlRW1lckZsb3coYmFzaWMuU2ltcGxlUHJvdG9jb2wpOgogCiAgICAgIiIiRGVsZXRlIGVtZXJnZW5jeSBmbG93IGFuZCB2ZXJpZnkgbm8gbWVzc2FnZSBpcyBnZW5lcmF0ZWQuQW4gZW1lcmdlbmN5IGZsb3cgZGVsZXRpb24gd2lsbCBub3QgZ2VuZXJhdGUgZmxvdy1yZW1vdmVkIG1lc3NhZ2VzIGV2ZW4gaWYgCiAgICAgU2VuZCBGbG93IHJlbW92ZWQgbWVzc2FnZSBmbGFnIHdhcyBzZXQgZHVyaW5nIHRoZSBlbWVyZ2VuY3kgZmxvdyBlbnRyeSIiIgogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAKLSAgICAgICAgY3NfbG9nZ2VyLmluZm8oIlJ1bm5pbmcgRGVsZXRlIEVtZXJnZW5jeSBmbG93IikKKyAgICAgICAgY3NfbG9nZ2VyLmluZm8oIlJ1bm5pbmcgRGVsZXRlX0VtZXJfRmxvdyIpCiAKICAgICAgICAgb2ZfcG9ydHMgPSBjc19wb3J0X21hcC5rZXlzKCkKICAgICAgICAgb2ZfcG9ydHMuc29ydCgpCkBAIC00ODYsMTQgKzQ4NiwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgRmFpbGVkICcpCiAKIAotY2xhc3MgZGVsZXRlX3N0cmljdF9ub25zdHJpY3QoYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKK2NsYXNzIFN0cmljdFZzTm9uc3RyaWN0KGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CiAKICAgICAiIiJEZWxldGUgYW5kIHZlcmlmeSBzdHJpY3QgYW5kIG5vbi1zdHJpY3QgYmVoYXZpb3JzCiAgICAgVGhpcyB0ZXN0IGNvbXBhcmVzIHRoZSBiZWhhdmlvciBvZiBkZWxldGUgc3RyaWN0IGFuZCBub24tc3RyaWN0IiIiCiAKICAgICBkZWYgcnVuVGVzdChzZWxmKToKICAgICAgICAgCi0gICAgICAgIGNzX2xvZ2dlci5pbmZvKCJEZWxldGVfU3RyaWN0X05vblN0cmljdCB0ZXN0IGJlZ2lucyIpCisgICAgICAgIGNzX2xvZ2dlci5pbmZvKCJTdHJpY3RfVnNfTm9uc3RyaWN0IHRlc3QgYmVnaW5zIikKICAgICAgICAgCiAgICAgICAgIG9mX3BvcnRzID0gY3NfcG9ydF9tYXAua2V5cygpCiAgICAgICAgIG9mX3BvcnRzLnNvcnQoKQpAQCAtNTczLDE0ICs1NzMsMTQgQEAKIAogICAgICAgICAKICAgIAotY2xhc3MgZGVsZXRlX3dpdGhfb3V0cG9ydChiYXNpYy5TaW1wbGVEYXRhUGxhbmUpOgorY2xhc3MgT3V0cG9ydDEoYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKIAogICAgICIiIkRlbGV0ZSBmbG93cyBmaWx0ZXJlZCBieSBhY3Rpb24gb3V0cG9ydC5JZiB0aGUgb3V0X3BvcnQgZmllbGQgaW4gdGhlIGRlbGV0ZSBjb21tYW5kIGNvbnRhaW5zIGEgdmFsdWUgb3RoZXIgdGhhbiBPRlBQX05PTkUsCiAgICAgaXQgaW50cm9kdWNlcyBhIGNvbnN0cmFpbnQgd2hlbiBtYXRjaGluZy4gVGhpcyBjb25zdHJhaW50IGlzIHRoYXQgdGhlIHJ1bGUgbXVzdCBjb250YWluIGFuIG91dHB1dCBhY3Rpb24gZGlyZWN0ZWQgYXQgdGhhdCBwb3J0LiIiIgogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAgICAgICAgIAotICAgICAgICBjc19sb2dnZXIuaW5mbygiRGVsZXRlX0ZpbHRlcl9PdXRwb3J0IHRlc3QgYmVnaW5zIikKKyAgICAgICAgY3NfbG9nZ2VyLmluZm8oIk91dHBvcnQxIHRlc3QgYmVnaW5zIikKIAogICAgICAgICBvZl9wb3J0cyA9IGNzX3BvcnRfbWFwLmtleXMoKQogICAgICAgICBvZl9wb3J0cy5zb3J0KCkKQEAgLTYzMiw3ICs2MzIsNyBAQAogICAgICAgICBWZXJpZnlfVGFibGVTdGF0cyhzZWxmLGFjdGl2ZV9lbnRyaWVzPTApCiAKIAotY2xhc3MgaWRsZV90aW1lb3V0KGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CitjbGFzcyBJZGxlVGltZW91dChiYXNpYy5TaW1wbGVEYXRhUGxhbmUpOgogCiAgICAgIiIiIFZlcmlmeSB0aGF0IGlkbGUgdGltZW91dCBpcyBpbXBsZW1lbnRlZCIiIgogCkBAIC02NzYsMTMgKzY3NiwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICdGbG93IHdhcyBub3QgYWxpdmUgZm9yIDEgc2VjJykKIAogCi1jbGFzcyBhZGRfbW9kaWZ5X3dpdGhfb3V0cG9ydChiYXNpYy5TaW1wbGVEYXRhUGxhbmUpOgorY2xhc3MgT3V0cG9ydDIoYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKIAogICAgICIiIkFkZCwgbW9kaWZ5IGZsb3dzIHdpdGggb3V0cG9ydCBzZXQuIFRoaXMgZmllbGQgaXMgaWdub3JlZCBieSBBREQsIE1PRElGWSwgYW5kIE1PRElGWSBTVFJJQ1QgbWVzc2FnZXMuIiIiCiAKICAgICBkZWYgcnVuVGVzdChzZWxmKToKICAgICAgICAgCi0gICAgICAgIGNzX2xvZ2dlci5pbmZvKCJSdW5uaW5nIEFkZF9Nb2RpZnlfV2l0aF9PdXRwb3J0ICIpCisgICAgICAgIGNzX2xvZ2dlci5pbmZvKCJSdW5uaW5nIE91dHBvcnQyIHRlc3QgIikKIAogICAgICAgICBvZl9wb3J0cyA9IGNzX3BvcnRfbWFwLmtleXMoKQogICAgICAgICBvZl9wb3J0cy5zb3J0KCkKQEAgLTcxNiwxMyArNzE2LDEzIEBACiAKIAogCi1jbGFzcyBoYXJkX3RpbWVvdXQoYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKK2NsYXNzIEhhcmRUaW1lb3V0KGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CiAKICAgICAiIiIgVmVyaWZ5IHRoYXQgaGFyZCB0aW1lb3V0IGlzIGltcGxlbWVudGVkICIiIgogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAKLSAgICAgICAgY3NfbG9nZ2VyLmluZm8oIlJ1bm5pbmcgSWRsZV9UaW1lb3V0IHRlc3QgIikKKyAgICAgICAgY3NfbG9nZ2VyLmluZm8oIlJ1bm5pbmcgSGFyZF9UaW1lb3V0IHRlc3QgIikKICAgICAgICAgCiAgICAgICAgIG9mX3BvcnRzID0gY3NfcG9ydF9tYXAua2V5cygpCiAgICAgICAgIG9mX3BvcnRzLnNvcnQoKQpAQCAtNzYwLDcgKzc2MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Zsb3cgd2FzIG5vdCBhbGl2ZSBmb3IgMSBzZWMnKQogCiAKLWNsYXNzIGZsb3dfdGltZW91dChiYXNpYy5TaW1wbGVEYXRhUGxhbmUpOgorY2xhc3MgRmxvd1RpbWVvdXQoYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKICAgCiAgICAgIiIiVmVyaWZ5IHRoYXQgRmxvdyByZW1vdmVkIG1lc3NhZ2VzIGFyZSBnZW5lcmF0ZWQgYXMgZXhwZWN0ZWQKICAgICBGbG93IHJlbW92ZWQgbWVzc2FnZXMgYmVpbmcgZ2VuZXJhdGVkIHdoZW4gZmxhZyBpcyBzZXQsIGlzIGFscmVhZHkgdGVzdGVkIGluIHRoZSBhYm92ZSB0ZXN0cyAKZGlmZiAtLWdpdCBhL3Rlc3RzL09wZW5mbG93X1Byb3RvY29sX01lc3NhZ2VzLnB5IGIvdGVzdHMvT3BlbmZsb3dfUHJvdG9jb2xfTWVzc2FnZXMucHkKaW5kZXggMmUzNzA1OC4uMmJjOTM0ZSAxMDA2NDQKLS0tIGEvdGVzdHMvT3BlbmZsb3dfUHJvdG9jb2xfTWVzc2FnZXMucHkKKysrIGIvdGVzdHMvT3BlbmZsb3dfUHJvdG9jb2xfTWVzc2FnZXMucHkKQEAgLTQyLDcgKzQyLDcgQEAKICAgICBvZl9jb25maWcgPSBjb25maWcKIAogCi1jbGFzcyBmZWF0dXJlc19yZXF1ZXN0KGJhc2ljLlNpbXBsZVByb3RvY29sKTogCitjbGFzcyBGZWF0dXJlc1JlcXVlc3QoYmFzaWMuU2ltcGxlUHJvdG9jb2wpOiAKIAogICAgICIiIlZlcmlmeSBGZWF0dXJlc19SZXF1ZXN0LVJlcGx5IGlzIGltcGxlbWVudGVkIAogICAgIGEpIFNlbmQgT0ZQVF9GRUFUVVJFU19SRVFVRVNUCkBAIC03MSw3ICs3MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAnRGlkIG5vdCByZWNlaXZlIEZlYXR1cmVzIFJlcGx5JykKIAogCi1jbGFzcyBjb25maWd1cmF0aW9uX3JlcXVlc3QoYmFzaWMuU2ltcGxlUHJvdG9jb2wpOgorY2xhc3MgQ29uZmlndXJhdGlvblJlcXVlc3QoYmFzaWMuU2ltcGxlUHJvdG9jb2wpOgogICAgIAogICAgICIiIkNoZWNrIGJhc2ljIEdldCBDb25maWcgcmVxdWVzdCBpcyBpbXBsZW1lbnRlZAogICAgIGEpIFNlbmQgT0ZQVF9HRVRfQ09ORklHX1JFUVVFU1QKQEAgLTEwMCw3ICsxMDAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcG9uc2UgaXMgbm90IE5vbmUsIAogICAgICAgICAgICAgICAgICAgICAgICAgJ0RpZCBub3QgcmVjZWl2ZSBPRlBUX0dFVF9DT05GSUdfUkVQTFknKQogCi1jbGFzcyBtb2RpZnlfc3RhdGVfYWRkKGJhc2ljLlNpbXBsZVByb3RvY29sKToKK2NsYXNzIE1vZGlmeVN0YXRlQWRkKGJhc2ljLlNpbXBsZVByb3RvY29sKToKICAgICAKICAgICAiIiJDaGVjayBiYXNpYyBGbG93IEFkZCByZXF1ZXN0IGlzIGltcGxlbWVudGVkCiAgICAgYSkgU2VuZCAgT0ZQVF9GTE9XX01PRCAsIGNvbW1hbmQgPSBPRlBGQ19BREQgCkBAIC0xMjcsNyArMTI3LDcgQEAKICAgICAgICAgVmVyaWZ5X1RhYmxlU3RhdHMoc2VsZixhY3RpdmVfZW50cmllcz0xKQogCiAKLWNsYXNzIG1vZGlmeV9zdGF0ZV9kZWxldGUoYmFzaWMuU2ltcGxlUHJvdG9jb2wpOgorY2xhc3MgTW9kaWZ5U3RhdGVEZWxldGUoYmFzaWMuU2ltcGxlUHJvdG9jb2wpOgogICAgIAogICAgICIiIkNoZWNrIEJhc2ljIEZsb3cgRGVsZXRlIHJlcXVlc3QgaXMgaW1wbGVtZW50ZWQKICAgICBhKSBTZW5kIE9GUFRfRkxPV19NT0QsIGNvbW1hbmQgPSBPRlBGQ19BREQKQEAgLTE2Myw3ICsxNjMsNyBAQAogCiAgICAgICAKIAotY2xhc3MgbW9kaWZ5X3N0YXRlX21vZGlmeShiYXNpYy5TaW1wbGVEYXRhUGxhbmUpOgorY2xhc3MgTW9kaWZ5U3RhdGVNb2RpZnkoYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKICAgICAKICAgICAiIiJWZXJpZnkgYmFzaWMgRmxvdyBNb2RpZnkgcmVxdWVzdCBpcyBpbXBsZW1lbnRlZAogICAgIGEpIFNlbmQgT0ZQVF9GTE9XX01PRCwgY29tbWFuZCA9IE9GUEZDX0FERCwgQWN0aW9uIEEgCkBAIC0xNzIsNyArMTcyLDcgQEAKIAogICAgIGRlZiBydW5UZXN0KHNlbGYpOgogCi0gICAgICAgIG9mX2xvZ2dlci5pbmZvKCJSdW5uaW5nIE1vZGlmeV9TdGF0ZV9tb2RpZnkgdGVzdCIpCisgICAgICAgIG9mX2xvZ2dlci5pbmZvKCJSdW5uaW5nIE1vZGlmeV9TdGF0ZV9Nb2RpZnkgdGVzdCIpCiAKICAgICAgICAgb2ZfcG9ydHMgPSBvZl9wb3J0X21hcC5rZXlzKCkKICAgICAgICAgb2ZfcG9ydHMuc29ydCgpCkBAIC0xOTQsNyArMTk0LDcgQEAKICAgICAgICAgU2VuZFBhY2tldChzZWxmLCBwa3QsIG9mX3BvcnRzWzBdLG9mX3BvcnRzWzJdKQogICAgICAgICAgICAgICAgICAgICAgICAKIAotY2xhc3MgcmVhZF9zdGF0ZShiYXNpYy5TaW1wbGVQcm90b2NvbCk6CitjbGFzcyBSZWFkU3RhdGUoYmFzaWMuU2ltcGxlUHJvdG9jb2wpOgogICAgIAogICAgICIiIlRlc3QgdGhhdCBhIGJhc2ljIFJlYWQgc3RhdGUgcmVxdWVzdCAobGlrZSBmbG93X3N0YXRzX2dldCByZXF1ZXN0KSBkb2VzIG5vdCBnZW5lcmF0ZSBhbiBlcnJvcgogICAgIGEpIFNlbmQgT0ZQVF9GTE9XX01PRCwgY29tbWFuZCA9IE9GUEZDX0FERApAQCAtMjIxLDcgKzIyMSw3IEBACiAgICAgICAgICNWZXJpZnkgRmxvd19TdGF0cyByZXF1ZXN0IGRvZXMgbm90IGdlbmVyYXRlIGVycm9ycwogICAgICAgICBWZXJpZnlfRmxvd1N0YXRzKHNlbGYsbWF0Y2gpCiAgICAgICAgIAotY2xhc3Mgc2VuZF9wYWNrZXQoYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKK2NsYXNzIFNlbmRQYWNrZXQoYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKICAgICAKICAgICAiIiJUZXN0IHBhY2tldCBvdXQgZnVuY3Rpb24KICAgICBhKSBTZW5kIHBhY2tldCBvdXQgbWVzc2FnZSBmb3IgZWFjaCBkYXRhcGxhbmUgcG9ydC4KQEAgLTI3OCw3ICsyNzgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Jlc3BvbnNlIHBhY2tldCBkb2VzIG5vdCBtYXRjaCBzZW5kIHBhY2tldCcpCiAKICAgICAgICAgCi1jbGFzcyBwYWNrZXRfaW4oYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKK2NsYXNzIFBhY2tldEluKGJhc2ljLlNpbXBsZURhdGFQbGFuZSk6CiAgICAgCiAgICAgIiIiVGVzdCBiYXNpYyBwYWNrZXRfaW4gZnVuY3Rpb24KICAgICBhKSBTZW5kIGEgc2ltcGxlIHRjcCBwYWNrZXQgdG8gYSBkYXRhcGxhbmUgcG9ydCwgd2l0aG91dCBhbnkgZmxvdy1lbnRyeSAKQEAgLTMxMiw3ICszMTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQYWNrZXQgaW4gZXZlbnQgaXMgbm90IHNlbnQgdG8gdGhlIGNvbnRyb2xsZXInKSAKIAogCi1jbGFzcyBoZWxsbyhiYXNpYy5TaW1wbGVEYXRhUGxhbmUpOgorY2xhc3MgSGVsbG8oYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKICAgICAKICAgICAiIiJUZXN0IEhlbGxvIG1lc3NhZ2VzIGFyZSBpbXBsZW1lbnRlZAogICAgIGEpIENyZWF0ZSBIZWxsbyBtZXNzYWdlcyBmcm9tIGNvbnRyb2xsZXIKQEAgLTMzNiw3ICszMzYsNyBAQAogCiAKIAotY2xhc3MgZWNob193aXRob3V0X2JvZHkoYmFzaWMuU2ltcGxlUHJvdG9jb2wpOgorY2xhc3MgRWNob1dpdGhvdXRCb2R5KGJhc2ljLlNpbXBsZVByb3RvY29sKToKICAgICAKICAgICAiIiJUZXN0IGJhc2ljIGVjaG8tcmVwbHkgaXMgaW1wbGVtZW50ZWQKICAgICBhKSAgU2VuZCBlY2hvLXJlcXVlc3QgZnJvbSB0aGUgY29udHJvbGxlciBzaWRlLCBub3RlIGVjaG8gYm9keSBpcyBlbXB0eSBoZXJlLgpAQCAtMzQ0LDcgKzM0NCw3IEBACiAgICAgCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAKLSAgICAgICAgb2ZfbG9nZ2VyLmluZm8oIlJ1bm5pbmcgRWNob1dpdGhvdXRCb2R5IHRlc3QiKQorICAgICAgICBvZl9sb2dnZXIuaW5mbygiUnVubmluZyBFY2hvX1dpdGhvdXRfQm9keSB0ZXN0IikKIAogICAgICAgICBvZl9sb2dnZXIuaW5mbygiU2VuZGluZyBFY2hvIFJlcXVlc3QiKQogICAgICAgICBvZl9sb2dnZXIuaW5mbygiRXhwZWN0aW5nIGEgRWNobyBSZXBseSB3aXRoIHZlcnNpb24tLTEuMC4wIGFuZCBzYW1lIHhpZCIpCkBAIC0zNTksNyArMzU5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuZGF0YSksIDAsICdyZXNwb25zZSBkYXRhIG5vbi1lbXB0eScpCiAKIAotY2xhc3MgYmFycmllcl9yZXF1ZXN0X3JlcGx5KGJhc2ljLlNpbXBsZVByb3RvY29sKToKK2NsYXNzIEJhcnJpZXJSZXF1ZXN0UmVwbHkoYmFzaWMuU2ltcGxlUHJvdG9jb2wpOgogCiAgICAgIiIiIENoZWNrIGJhc2ljIEJhcnJpZXIgcmVxdWVzdCBpcyBpbXBsZW1lbnRlZAogICAgIGEpIFNlbmQgT0ZQVF9CQVJSSUVSX1JFUVVFU1QKQEAgLTM2Nyw3ICszNjcsNyBAQAogICAgIAogICAgIGRlZiBydW5UZXN0KHNlbGYpOgogCi0gICAgICAgIG9mX2xvZ2dlci5pbmZvKCJSdW5uaW5nIEJhcnJpZXJSZXF1ZXN0UmVwbHkgdGVzdCIpCisgICAgICAgIG9mX2xvZ2dlci5pbmZvKCJSdW5uaW5nIEJhcnJpZXJfUmVxdWVzdF9SZXBseSB0ZXN0IikKIAogICAgICAgICBvZl9sb2dnZXIuaW5mbygiU2VuZGluZyBCYXJyaWVyIFJlcXVlc3QiKQogICAgICAgICBvZl9sb2dnZXIuaW5mbygiRXhwZWN0aW5nIGEgQmFycmllciBSZXBseSB3aXRoIHNhbWUgeGlkIikK