ZGlmZiAtLWdpdCBhL0ZhYnJpYy9Eb2MvZG9jcy9EZXRhaWxlZF9UZXN0aW5nX01ldGhvZG9sb2d5LnR4dCBiL0ZhYnJpYy9Eb2MvZG9jcy9EZXRhaWxlZF9UZXN0aW5nX01ldGhvZG9sb2d5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDkyMmNjCi0tLSAvZGV2L251bGwKKysrIGIvRmFicmljL0RvYy9kb2NzL0RldGFpbGVkX1Rlc3RpbmdfTWV0aG9kb2xvZ3kudHh0CkBAIC0wLDAgKzEsMTgyMiBAQAorCQkJCQkJKioqKioqKioqKiogIENvbmZvcm1hbmNlIFRlc3Qtc3VpdGUgICAqKioqKioqKioqKioqKioqCisJCQkJCQlPRi1Td2l0Y2gtMS4wLjAtVGVzdENhc2VzIGRldGFpbGVkIHRlc3RpbmcgbWV0aG9kb2xvZ3kKKworCisKKworCisqKioqICAgICBPcGVuZmxvdyBwcm90b2NvbCBtZXNzYWdlcyAgICAgKioqKgorCisKKworMS4gRmVhdHVyZXMgUmVxdWVzdAorCitUZXN0IERlc2NyaXB0aW9uOiBDaGVjayBmZWF0dXJlcyByZXF1ZXN0IGlzIGltcGxlbWVudGVkCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiBGZWF0dXJlc1JlcXVlc3QKK1BvcnRzOiBJIChDb250cm9sIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIFNlbmQgT0ZQVF9GRUFUVVJFU19SRVFVRVNUIGZyb20gY29udHJvbGxlci4KK2IpIFZlcmlmeSBPRlBUX0ZFQVRVUkVTX1JFUExZIGlzIHJlY2VpdmVkIHdpdGhvdXQgZXJyb3JzCisKKworCisyLiBDb25maWd1cmF0aW9uIHJlcXVlc3QKKworVGVzdCBEZXNjcmlwdGlvbjogQ2hlY2sgYmFzaWMgZ2V0IGNvbmZpZ3VyYXRpb24gcmVxdWVzdCBpcyBpbXBsZW1lbnRlZAorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaXRsZTogQ29uZmlndXJhdGlvblJlcXVlc3QKK1BvcnRzOiBJIChDb250cm9sIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczoKKworYSkgU2VuZCBPRlBUX0dFVF9DT05GSUdfUkVRVUVTVAorYikgVmVyaWZ5IE9GUFRfR0VUX0NPTkZJR19SRVBMWSBpcyByZWNlaXZlZCB3aXRob3V0IGVycm9ycy4KKworCisKKzMuIE1vZGlmeSBTdGF0ZSAoQUREKQorCitUZXN0IERlc2NyaXB0aW9uOiBDaGVjayBiYXNpYyBGbG93IEFERCByZXF1ZXN0IGlzIGltcGxlbWVudGVkCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiBNb2RpZnlTdGF0ZUFkZAorUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIGRhdGFwbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gU2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6CisKK2EpIFNlbmQgT0ZQVF9GTE9XX01PRCwgY29tbWFuZCA9IE9GUEZDX0FERCAKK2IpIFNlbmQgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QgCitjKSBWZXJpZnkgdGhhdCBhY3RpdmVfY291bnQ9MSBpbiB0aGUgcmVwbHkKKworCisKKworNC4gTW9kaWZ5IFN0YXRlIChERUxFVEUpCisKK1Rlc3QgRGVzY3JpcHRpb246IENoZWNrIGJhc2ljIEZsb3cgRGVsZXRlIHJlcXVlc3QgaXMgaW1wbGVtZW50ZWQKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6IE1vZGlmeVN0YXRlRGVsZXRlCitQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgZGF0YXBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczoKKworYSkgU2VuZCBPRlBUX0ZMT1dfTU9ELCBjb21tYW5kID0gT0ZQRkNfQUREIAorYikgU2VuZCBvZnBfdGFibGVfc3RhdHMgcmVxdWVzdAorYykgVmVyaWZ5IHRoYXQgYWN0aXZlX2NvdW50PTEgaW4gdGhlIHJlcGx5CitkKSBTZW5kIE9GUFRfRkxPV19NT0QsIGNvbW1hbmQgPSBPRlBGQ19ERUxFVEUKK2UpIFNlbmQgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QKK2YpICBWZXJpZnkgYWN0aXZlIF9jb3VudD0wIGluIHRoZSByZXBseQorCisKKworNS4gTW9kaWZ5IFN0YXRlIChNT0RJRlkpCisKK1Rlc3QgRGVzY3JpcHRpb246IENoZWNrIGJhc2ljIEZsb3cgTW9kaWZ5IHJlcXVlc3QgaXMgaW1wbGVtZW50ZWQKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6IE1vZGlmeVN0YXRlTW9kaWZ5CitQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIGFuZCAyIERhdGFwbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gU2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6CisKK2EpIFNlbmQgIE9GUFRfRkxPV19NT0QgLCBjb21tYW5kID0gT0ZQRkNfQURELCBhY3Rpb24gQQorYikgU2VuZCBvZnBfdGFibGVfc3RhdHMgcmVxdWVzdCwgVmVyaWZ5ICBhY3RpdmVfY291bnQ9MQorYykgU2VuZCBPRlBUX0ZMT1dfTU9EICwgY29tbWFuZCA9IE9GUEZDX01PRElGWSwgYWN0aW9uIEGSCitkKSBTZW5kIFRlc3QgUGFja2V0ICBtYXRjaGluZyB0aGUgZmxvdworZSkgVmVyaWZ5IHBhY2tldCBpbXBsZW1lbnRzIGFjdGlvbiBBkgorCisKKworNi4gUmVhZCBTdGF0ZQorCitUZXN0IERlc2NyaXB0aW9uOiBDaGVjayBiYXNpYyBSZWFkIFN0YXRlIGlzIGltcGxlbWVudGVkCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiBSZWFkU3RhdGUKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUsIDIgZGF0YXBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczoKKworYSkgU2VuZCAgT0ZQVF9GTE9XX01PRCwgY29tbWFuZCA9IE9GUEZDX0FERAorYikgQ3JlYXRlIGEgT0ZQQ19GTE9XX1NUQVRTIG1lc3NhZ2UgYW5kIHNlbmQgaXQKK2MpIFZlcmlmeSBzd2l0Y2ggcmVwbGllcyB3aXRob3V0IGVycm9ycworCisKKworNy4gU2VuZCBwYWNrZXQKKworVGVzdCBEZXNjcmlwdGlvbjogQ2hlY2sgYmFzaWMgU2VuZC1QYWNrZXQgaXMgaW1wbGVtZW50ZWQuIAorCQkgIFNlbmQtUGFja2V0OiBUaGVzZSBhcmUgdXNlZCBieSB0aGUgY29udHJvbGxlciB0byBzZW5kIHBhY2tldHMgb3V0IG9mIGEgc3BlY2lmaWVkIHBvcnQgb24gdGhlIHN3aXRjaC4KKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBTZW5kUGFja2V0CitQb3J0czogNSAoMSBDb250cm9sIFBsYW5lLCA0IERhdGFwbGFuZSkgCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIFNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOgorCithKSBTZW5kIE9GUFRfUEFDS0VUX09VVCBvdXQgbWVzc2FnZSBmcm9tIGNvbnRyb2xsZXIgdG8gc3dpdGNoIGZvciBldmVyeSBkYXRhcGxhbmUgcG9ydC4KK2IpIFZlcmlmeSB0aGUgcGFja2V0IGFwcGVhcnMgb24gdGhlIGVhY2ggZGF0YXBsYW5lIHBvcnQKK2MpIFZlcmlmeSBzZW50IHBhY2tldCBtYXRjaGVzIHRoZSByZWNlaXZlZCBwYWNrZXQKKworCisKKzguIEJhcnJpZXIgUmVxdWVzdCAKKworVGVzdCBEZXNjcmlwdGlvbjogVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGEgYmFzaWMgYmFycmllciByZXF1ZXN0IGRvZXMgbm90IGdlbmVyYXRlIGFuIGVycm9yLgorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaXRsZTogQmFycmllclJlcXVlc3RSZXBseQorUG9ydHM6IEkgKENvbnRyb2wgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIFNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOgorCithKSBTZW5kIE9GUFRfQkFSUklFUl9SRVFVRVNUCitjKSBWZXJpZnkgT0ZQVF9CQVJSSUVSX1JFUExZIGlzIHJlY2VpdmVkIG9uIHRoZSBjb250cm9sIHBsYW5lLgorCisKKworOS4gUGFja2V0IEluCisKK1Rlc3QgRGVzY3JpcHRpb246IENoZWNrIHBhY2tldF9pbiBpcyBpbXBsZW1lbnRlZC4gVGhpcyB0ZXN0IGp1c3QgY2hlY2tzIHRoYXQgbm9uIG1hdGNoZWQgZGF0YXBsYW5lIHBhY2tldHMgCisJCSAgZ2VuZXJhdGUgYSBwYWNrZXRfaW4KKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6IFBhY2tldEluCitQb3J0czogMiAoMSBDb250cm9sIFBsYW5lIGFuZCAxIERhdGFwbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gU2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6CisKK2EpIFNlbmQgYSBwYWNrZXQgdG8gZGF0YXBsYW5lIHBvcnQgLCB3aXRob3V0IGluc2VydGluZyBhIGZsb3cgZW50cnkKK2IpIFZlcmlmeSBhIE9GUFRfUEFDS0VUX0lOIGlzIGdlbmVyYXRlZCBvbiB0aGUgY29udHJvbCBwbGFuZQorCisKKworMTAuIEhlbGxvCisKK1Rlc3QgRGVzY3JpcHRpb246IFRoaXMgdGVzdCBjaGVja3MgZm9yIGJhc2ljIEhlbGxvIG1lc3NhZ2UgZ2VuZXJhdGlvbiB3aXRoIGNvcnJlY3QgdmVyc2lvbiBmaWVsZC4KKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBIZWxsbworUG9ydHM6IDEgKENvbnRyb2wgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIFNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOgorCithKSBTZW5kICBPRlBUX0hFTExPIGZyb20gY29udHJvbGxlciB0byBzd2l0Y2gKK2IpIFZlcmlmeSBzd2l0Y2ggYWxzbyBzZW5kcyBPRlBUX0hFTExPIG1lc3NhZ2UgaW4gcmVzcG9uc2UgCitjKSBWZXJpZnkgdmVyc2lvbiBmaWVsZCBpbiB0aGUgaGVsbG8gbWVzc2FnZSBpcyBzZXQgdG8gT3BlbmZsb3cgdmVyc2lvbiAxLjAuMAorCisKKworMTEuIEVjaG8KKworVGVzdCBEZXNjcmlwdGlvbjogVGhpcyB0ZXN0IGNoZWNrcyBmb3IgYmFzaWMgRWNobyBSZXBseSBtZXNzYWdlIGdlbmVyYXRpb24gd2l0aCBjb3JyZWN0IHZlcnNpb24gZmllbGQgd2l0aCAKKwkJICBzYW1lIHRyYW5zYWN0aW9uIGlkLgorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaXRsZTogIEVjaG9XaXRob3V0Qm9keQorUG9ydHM6IDEgKENvbnRyb2wgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOgorCithKSBTZW5kIE9GUFRfRUNIT19SRVFVRVNUIGZyb20gdGhlIGNvbnRyb2xsZXIgc2lkZS4KK2IpIFZlcmlmeSBzd2l0Y2ggcmVzcG9uZHMgYmFjayB3aXRoIE9GUFRfRUNIT19SRVBMWSB3aXRoIHNhbWUgeGlkLgorYykgVmVyaWZ5IE9wZW5mbG93IHZlcnNpb24gaW4gaGVhZGVyIGlzIHNldCB0byBPcGVuZmxvdyB2ZXJzaW9uIDEuMC4wLgorCisKKworCisKKyoqKiogICAgIERldGFpbGVkIGNvbnRyb2xsZXIgdG8gc3dpdGNoIG1lc3NhZ2VzICAgICAqKioqCisKKworCisxLiBPdmVybGFwIGNoZWNraW5nCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IGlmIG92ZXJsYXAgY2hlY2sgZmxhZyBpcyBzZXQgaW4gdGhlIGZsb3cgZW50cnkgYW5kIGFuIG92ZXJsYXBwaW5nIGZsb3cgaXMgCisJCSAgaW5zZXJ0ZWQgdGhlbiBhbiBlcnJvciBpcyBnZW5lcmF0ZWQgYW5kIHN3aXRjaCByZWZ1c2VzIGZsb3cgZW50cnkKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBPdmVybGFwQ2hlY2tpbmcKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBkYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0LU5vdGVzOgorCithKSBHZW5lcmF0ZSBGbG93IEYxLS0+IFdpbGRjYXJkIEFsbCAKK2IpIFNlbmQgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QgLCB2ZXJpZnkgYWN0aXZlX2NvdW50PTEKK2MpIEdlbmVyYXRlIG92ZXJsYXBwaW5nIGZsb3cgRjIgLS0+IFdpbGRjYXJkIEFsbCBFeGNlcHQgSW5ncmVzcyBQb3J0ICggd2l0aCBmbGFnIE9GUEZGX0NIRUNLX09WRVJMQVAgc2V0KQorZCkgVmVyaWZ5IHRoYXQgc3dpdGNoIGdlbmVyYXRlcyBPRlBUX0VSUk9SIG1zZy4gIAorICAgVHlwZTogT0ZQRVRfRkxPV19NT0RfRkFJTEVEIGNvZGUgOiBPRlBGTUZDX09WRVJMQVAgCisKKworCisyLiBObyBvdmVybGFwIGNoZWNraW5nCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IHdpdGhvdXQgb3ZlcmxhcCBjaGVjayBmbGFnIHNldCwgb3ZlcmxhcHBpbmcgZmxvd3MgY2FuIGJlIGNyZWF0ZWQuCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiAgTm9PdmVybGFwY2hlY2tpbmcKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUsIDIgRGF0YXBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczoKKworYSkgR2VuZXJhdGUgRmxvdyBGMS0tPiBXaWxkY2FyZCBBbGwuCitiKSBTZW5kIG9mcF90YWJsZV9zdGF0cyByZXF1ZXN0ICwgdmVyaWZ5IGFjdGl2ZV9jb3VudD0xCitlKSBHZW5lcmF0ZSBvdmVybGFwcGluZyBmbG93IEYyIC0tPiBXaWxkY2FyZCBBbGwgRXhjZXB0IEluZ3Jlc3MgUG9ydCAoIHdpdGhvdXQgZmxhZyBPRlBGRl9DSEVDS19PVkVSTEFQIHNldCkKK2MpIFNlbmQgYSBvZnBfdGFibGVfc3RhdHMgcmVxdWVzdCwgdmVyaWZ5IGFjdGl2ZV9jb3VudD0yCisKKworCiszLiBJZGVudGljYWwgZmxvd3MgCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IGFkZGluZyB0d28gaWRlbnRpY2FsIGZsb3dzIG92ZXJ3cml0ZXMgdGhlIGV4aXN0aW5nIG9uZSBhbmQgY2xlYXJzIGNvdW50ZXJzCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiAgSWRlbnRpY2FsRmxvd3MKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUpLCAoMiBkYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOgorCithKSBHZW5lcmF0ZSBGbG93IEYxLgorYikgU2VuZCBvZnBfdGFibGVfc3RhdHMgcmVxdWVzdCAsIHZlcmlmeSBhY3RpdmVfY291bnQ9MQorYikgSW5jcmVtZW50IGNvdW50ZXJzIChwYWNrZXRfY291bnQsIGJ5dGVfY291bnQpIGJ5IHNlbmRpbmcgYSBwYWNrZXQgbWF0Y2hpbmcgZmxvdyBGMS4KK0MpIFNlbmQgb2ZwX2Zsb3dfc3RhdHMgcmVxdWVzdC4gVmVyaWZ5IGZsb3cgY291bnRlcnM6IGJ5dGVfY291bnQgYW5kIHBhY2tldF9jb3VudCAKK2MpIENyZWF0ZSBpZGVudGljYWwgZmxvdyBGMgorZCkgU2VuZCBhIG9mcF90YWJsZV9zdGF0cyByZXF1ZXN0LCB2ZXJpZnkgYWN0aXZlX2NvdW50PTEKK2UpIFNlbmQgb2ZwX2Zsb3dfc3RhdHMgcmVxdWVzdC4gVmVyaWZ5IGZsb3cgY291bnRlcnM6IGJ5dGVfY291bnQgYW5kIHBhY2tldF9jb3VudCBhcmUgcmVzZXQKKworCisKKzQuIE5vIHRhYmxlIHRvIGFkZCAoV3JpdHRlbiBpbiBvZnRlc3SXTmVlZCB0byBhZGQgdG8gY29uZm9ybWFuY2UgVGVzdC1TdWl0ZXMpCisKKworCis1LiBOZXZlciB2YWxpZCBwb3J0IChUQkQpCisKKworCisKKzYuIEN1cnJlbnRseSBub3QgZXhpc3RpbmcgcG9ydCBWZXJzaW9uIEEgYW5kIEIgKFRCRCkKKworCisKKworNy4gRW1lcmdlbmN5IGZsb3cgd2l0aCB0aW1lb3V0IHZhbHVlcyAKKworVGVzdCBEZXNjcmlwdGlvbjogVGltZW91dCB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkIGZvciBlbWVyZ2VuY3kgZmxvd3MKKworVGVzdCBUaXRsZTogRW1lckZsb3dUaW1lb3V0CitUZXN0IG1vZGU6IEF1dG9tYXRlZAorUG9ydHM6IDMgKDEgY29udHJvbCBwbGFuZSwgMiBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwIAorCisKK1Rlc3QgTm90ZXM6CisKK2EpICBHZW5lcmF0ZSBhIGZsb3cgRiB3aXRoIE9GUEZGX0VNRVJHIHNldCBpbiBmbGFnIGFuZCB0aW1lb3V0IHZhbHVlcyBhc3NpZ25lZC4KK2IpICBWZXJpZnkgc3dpdGNoIGdlbmVyYXRlcyBhbiBPRlBUX0VSUk9SIG1zZywgVHlwZTogT0ZQRVRfRkxPV19NT0RfRkFJTEVELCBDb2RlIE9GUEZNRkNfQkFEX0VNRVJHX1RJTUVPVVQKKworCisKKzguIE1pc3NpbmcgbW9kaWZ5IGFkZHMKKworVGVzdCBEZXNjcmlwdGlvbjogSWYgYSBtb2RpZnkgZG9lcyBub3QgbWF0Y2ggYW4gZXhpc3RpbmcgZmxvdywgdGhlIGZsb3cgZ2V0cyBhZGRlZC4KKworVGl0bGU6IE1pc3NpbmdNb2RpZnlBZGQKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitQb3J0czozICgxIGNvbnRyb2wgcGxhbmUsMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogQ29ubmVjdGlvbiBzZXR1cCwgQ2xlYXIgU3dpdGNoIFN0YXRlCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOgorCithKSBHZW5lcmF0ZSBhIGZsb3ctbW9kICwgY29tbWFuZCBPRlBDX01PRElGWSAoTm90ZTogVGhlcmUgc2hvdWxkIGJlIG5vIGZsb3dzIG1hdGNoaW5nIHRoaXMgZmxvd19tb2QgbW9kaWZ5IGNvbW1hbmQpCitiKSBTZW5kIGEgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QsIHZlcmlmeSBhY3RpdmVfY291bnQ9MQorCisKKworCis5LiBNb2RpZnkgY2hhbmdlcyBhY3Rpb24sIHByZXNlcnZlcyBjb3VudGVycworCitUZXN0IERlc2NyaXB0aW9uOiBBIG1vZGlmaWVkIGZsb3cgcHJlc2VydmVzIGNvdW50ZXJzCisKK1RpdGxlOiBNb2RpZnlBY3Rpb24KK1Rlc3QgbW9kZTogQXV0b21hdGVkCitQb3J0czogNCgxIGNvbnRyb2wgcGxhbmUsIDMgRGF0YXBsYW5lKQorSW5pdGlhbCBTdGF0ZTogQ29ubmVjdGlvbiBzZXR1cCwgQ2xlYXIgU3dpdGNoIFN0YXRlCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOgorCithKSBDcmVhdGUgYSBmbG93X21vZCBGLTEgd2l0aCBjb21tYW5kIE9GUENfQURELCBhY3Rpb24gQQorYikgU2VuZCBhIHRlc3QgUGFja2V0IG1hdGNoaW5nIHRoZSBmbG93CitjKSBTZW5kIGFuIG9mcF9mbG93X3N0YXRzIHJlcXVlc3QsIHZlcmlmeSBieXRlX2NvdW50IGFuZCBwYWNrZXRfY291bnQKK2UpIENyZWF0ZSBmbG93X21vZCB3aXRoIGNvbW1hbmQgT0ZQQ19NT0RJRlkgLGFjdGlvbiBBkiBhbmQgbW9kaWZ5IGFjdGlvbiBvZiBmbG93IEYtMQorZikgU2VuZCBhIG9mcF9mbG93X3N0YXRzIHJlcXVlc3QsIHZlcmlmeSBmbG93IGNvdW50ZXJzIGFyZSBwcmVzZXJ2ZWQKK2cpIFNlbmQgdGVzdCBwYWNrZXQsIHZlcmlmeSBpdCBpbXBsZW1lbnRzIGFjdGlvbiBBkgorCisKKworMTAuIFN0cmljdCBNb2RpZnkgY2hhbmdlcyBhY3Rpb24sIHByZXNlcnZlcyBjb3VudGVycworCitUZXN0IERlc2NyaXB0aW9uOiBTdHJpY3QgTW9kaWZ5IEZsb3cgYWxzbyBjaGFuZ2VzIGFjdGlvbiBwcmVzZXJ2ZXMgY291bnRlcnMKKworVGl0bGU6IFN0cmljdE1vZGlmeUFjdGlvbgorVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1BvcnRzOiA0KDEgY29udHJvbCBwbGFuZSwgMyBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6CisKK2EpIENyZWF0ZSB0d28gb3ZlcmxhcHBpbmcgZmxvd3M6IEYgLS0+IE1hdGNoIG9uIGFsbCwgZXhjZXB0IG9uZSB3aWxkY2FyZGVkIChzcmMgYWRkcmVzcykuIEFjdGlvbiBBLiBQcmlvcml0eT0xMDAgCisgICBGkiAtLT4gTWF0Y2ggb24gaW5ncmVzc19wb3J0ID0gcG9ydCBbMF0sIHdpbGRjYXJkZWQgcmVzdC4gQWN0aW9uIEEuIFByaW9yaXR5PTEwCitiKSBTZW5kIGEgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QsIHZlcmlmeSBhY3RpdmVfY291bnQ9MgorYykgU2VuZCBQYWNrZXQgKGl0IHdvdWxkIGhhdmUgbWF0Y2hlZCBib3RoIHRoZSBmbG93cywgc2luY2UgdGhleSBhcmUgb3ZlcmxhcHBpbmcgZmxvd3MgYnV0IGl0IHdvdWxkIG1hdGNoIEZsb3ctRjEgYXMgaXQgaGFzIGhpZ2hlciBwcmlvcml0eS4pCitkKSBTZW5kIG9mcF9mbG93X3N0YXRzIHJlcXVlc3QgZm9yIEZsb3ctMSBhbmQgdmVyaWZ5IGNvdW50ZXJzIHBhY2tldF9jb3VudCBhbmQgYnl0ZV9jb3VudCAKK2UpIENyZWF0ZSBmbG93X21vZCAsY29tbWFuZCBPRlBDX1NUUklDVF9NT0RJRlksbWF0Y2ggb24gYWxsIGV4Y2VwdCBzcmMgYWRkcmVzcyAscHJpb3JpdHkgMTAwIGFjdGlvbiBBkgorZikgU2VuZCB0ZXN0IHBhY2tldCAsIHZlcmlmeSBhY3Rpb24gaXMgbW9kaWZpZWQKK2cpIFNlbmQgb2ZwX2Zsb3dfc3RhdHMgcmVxdWVzdCwgdmVyaWZ5IGNvdW50ZXJzIGFyZSBwcmVzZXJ2ZWQuCisKKworCisKKzExLiBEZWxldGUgbm9uIGV4aXN0aW5nIGZsb3cgCisKK1Rlc3QgRGVzY3JpcHRpb246IFJlcXVlc3QgZGVsZXRpb24gb2Ygbm9uLWV4aXN0aW5nIGZsb3cKKworVGl0bGU6IERlbGV0ZU5vbmV4aXN0aW5nRmxvdworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1BvcnRzOiAxKDEgY29udHJvbCBwbGFuZSkKK0luaXRpYWwgU3RhdGU6IENvbm5lY3Rpb24gc2V0dXAsIENsZWFyIFN3aXRjaCBTdGF0ZQorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczoKKworYSkgSXNzdWUgYSBkZWxldGUgY29tbWFuZCwgd2l0aCBubyBmbG93cyBpbnNlcnRlZAorYikgTWFrZSBzdXJlIG5vIGVycm9yIGlzIGdlbmVyYXRlZCBvbiB0aGUgY29udHJvbCBwbGFuZQorCisKKworMTIuIERlbGV0ZSBmbG93cyB3aXRoIGFuZCB3aXRob3V0IHJlbW92ZWQgbWVzc2FnZQorCitUZXN0IERlc2NyaXB0aW9uOiBDaGVjayBkZWxldGlvbiBvZiBmbG93cyBoYXBwZW5zIGFuZCBnZW5lcmF0ZXMgbWVzc2FnZXMgYXMgY29uZmlndXJlZC4gaS5lLiBpZiCRU2VuZCBGbG93IHJlbW92ZWQgbWVzc2FnZZJGbGFnIAorCSAgICAgICAgICBpcyBzZXQgaW4gdGhlIGZsb3cgZW50cnksIHRoZSBmbG93IGRlbGV0aW9uIG9mIHRoYXQgcmVzcGVjdGl2ZSBmbG93IHNob3VsZCBnZW5lcmF0ZSB0aGUgZmxvdyByZW1vdmVkIG1lc3NhZ2UsIAorCQkgIHZpY2UgdmVyc2EgYWxzbyBleGlzdHMgCisKK1Rlc3QgVGl0bGU6IFNlbmRGbG93UmVtCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorUG9ydHM6IDMgKDEgY29udHJvbCBwbGFuZSwgMiBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBEZWZhdWx0IChjbGVhciBzd2l0Y2ggc3RhdGUpCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOgorCithKSBHZW5lcmF0ZSBhIGZsb3cgRiB3aXRob3V0IE9GUEZGX1NFTkRfRkxPV19SRU0gZmxhZyBzZXQKK2IpIElzc3VlIGEgZGVsZXRlIGNvbW1hbmQgT0ZQRkNfREVMRVRFCitjKSBWZXJpZnkgdGhhdCBPRlBUX0ZMT1dfUkVNT1ZFRCBtZXNzYWdlIGlzIG5vdCBnZW5lcmF0ZWQuCitjKSBHZW5lcmF0ZSBhIGZsb3cgRpIgd2l0aCBPRlBGRl9TRU5EX0ZMT1dfUkVNIGZsYWcgc2V0CitkKSBJc3N1ZSBhIGRlbGV0ZSBjb21tYW5kIE9GUEZDX0RFTEVURQorZSkgVmVyaWZ5IHRoYXQgT0ZQVF9GTE9XX1JFTU9WRUQgbWVzc2FnZSBpcyBnZW5lcmF0ZWQKKworCisKKzEzLiBEZWxldGUgZW1lcmdlbmN5IGZsb3cgCisKK1Rlc3QgRGVzY3JpcHRpb246IERlbGV0ZSBlbWVyZ2VuY3kgZmxvdyBhbmQgdmVyaWZ5IG5vIG1lc3NhZ2UgaXMgZ2VuZXJhdGVkLkFuIGVtZXJnZW5jeSBmbG93IGRlbGV0aW9uIHdpbGwgbm90IGdlbmVyYXRlIAorCQkgIGZsb3ctcmVtb3ZlZCBtZXNzYWdlcyBldmVuIGlmIJFTZW5kIEZsb3cgcmVtb3ZlZCBtZXNzYWdlkiBmbGFnIHdhcyBzZXQgZHVyaW5nIHRoZSBlbWVyZ2VuY3kgZmxvdyBlbnRyeS4KKwkJICAKKworVGl0bGU6IERlbGV0ZUVtZXJGbG93CitUZXN0IG1vZGU6IEF1dG9tYXRlZAorUG9ydHM6IDMgKDEgY29udHJvbCBwbGFuZSwgMiBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUgKGRlZmF1bHQpIAorCisKK1Rlc3QtTm90ZXM6CisKK2EpIEluc2VydCBhIGZsb3cgd2l0aCBPRlBGRl9FTUVSRyBmbGFnIHNldC4KK2IpIERlbGV0ZSB0aGUgYWRkZWQgZmxvdyB3aXRoIE9GUEZGX1NFTkRfRkxPV19SRU0gZmxhZyBzZXQKK2MpIFRlc3Qgc3VjY2Vzc2Z1bCBpZiBubyBmbG93IHJlbW92ZWQgbWVzc2FnZSBpcyBnZW5lcmF0ZWQuCisKKworCisxNC4gRGVsZXRlIGFuZCB2ZXJpZnkgc3RyaWN0IGFuZCBub24tc3RyaWN0IAorCitUZXN0IERlc2NyaXB0aW9uOiBEZWxldGUgYW5kIHZlcmlmeSBzdHJpY3QgYW5kIG5vbi1zdHJpY3QgYmVoYXZpb3JzCisKK1RoaXMgdGVzdCBjb21wYXJlcyB0aGUgYmVoYXZpb3Igb2YgZGVsZXRlIHN0cmljdCBhbmQgbm9uLXN0cmljdC4KK1RpdGxlOiBTdHJpY3RWc05vbnN0cmljdAorVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1BvcnRzOiAzICgxIGNvbnRyb2wgcGxhbmUsIDIgZGF0YXBsYW5lKQorSW5pdGlhbCBTdGF0ZTogQ29ubmVjdGlvbiBzZXR1cCwgQ2xlYXIgU3dpdGNoIFN0YXRlCisKKworVGVzdC1Ob3RlczoKKworYSkgSW5zZXJ0IEZsb3cgRiB3aXRoIGFuIGV4YWN0IG1hdGNoLiAKK2IpIElzc3VlIE5vbi1zdHJpY3QgRGVsZXRlIGNvbW1hbmQsIHZlcmlmeSBGIGdldHMgZGVsZXRlZC4gCitjKSBJbnNlcnQgRiB3aXRoIGFuIGV4YWN0IE1hdGNoIAorZCkgSXNzdWUgU3RyaWN0IERlbGV0ZSBDb21tYW5kLCB2ZXJpZnkgRiBnZXRzIGRlbGV0ZWQuCitlKSBJbnNlcnQgRmxvdyBUIHdpdGggbWF0Y2ggb24gYWxsLCBleGNlcHQgb25lIHdpbGRjYXJkZWQgKHNheSBzcmMgYWRkcmVzcykuICAKK2YpIEluc2VydCBhbm90aGVyIGZsb3cgVCcgd2l0aCBtYXRjaCBvbiBpbmdyZXNzX3BvcnQsIHdpbGRjYXJkZWQgcmVzdC4gIAorZykgSXNzdWUgTm9uLXN0cmljdCBEZWxldGUgKCBtYXRjaCBvbiBpbmdyZXNzX3BvcnQpLiBWZXJpZnkgVCtUJyBnZXRzIGRlbGV0ZWQuIAoraCkgSW5zZXJ0IFQgYW5kIFQnIGFnYWluLiBJc3N1ZSBTdHJpY3QgRGVsZXRlIChtYXRjaCBvbiBpbmdyZXNzIHBvcnQpLCB2ZXJpZnkgb25seSBUJyBnZXRzIGRlbGV0ZWQKK2kpIEluc2VydCBULCBhZGQgUHJpb3JpdHkgUCAoc2F5IDEwMCkgCitqKSBJbnNlcnQgVCcgYWRkIHByaW9yaXR5ICgyMDApLiAKK2spIEluc2VydCBUJyBhZ2FpbiBhZGQgcHJpb3JpdHkgMzAwIC0tPiBUlAorbCkgSXNzdWUgTm9uLVN0cmljdCBEZWxldGUgKG1hdGNoIG9uIGluZ3Jlc3MgcG9ydCkuIFZlcmlmeSBUK1SSK1SSkiBnZXRzIGRlbGV0ZWQuIAorbSkgSW5zZXJ0IFQsIFSSLCBUkpIgYWdhaW4sIElzc3VlIFN0cmljdCBEZWxldGUgKG1hdGNoIG9uIGluZ3Jlc3NfcG9ydCkgd2l0aCBwcmlvcml0eSA9IDIwMC4gVmVyaWZ5IG9ubHkgVJIgZ2V0cyBkZWxldGVkCisKKworCisxNS4gRGVsZXRlIGZsb3dzIHdpdGggY29uc3RyYWludCBvdXRfcG9ydAorCitUZXN0IERlc2NyaXB0aW9uOiBEZWxldGUgZmxvd3MgZmlsdGVyZWQgYnkgYWN0aW9uIG91dHB1dC5ERUxFVEUgYW5kIERFTEVURSBTVFJJQ1QgY29tbWFuZHMgY2FuIGJlIG9wdGlvbmFsbHkgZmlsdGVyZWQgYnkgb3V0cHV0IHBvcnQuCisJCSAgSWYgdGhlIG91dF9wb3J0IGZpZWxkIGNvbnRhaW5zIGEgdmFsdWUgb3RoZXIgdGhhbiBPRlBQX05PTkUsIGl0IGludHJvZHVjZXMgYSBjb25zdHJhaW50IHdoZW4gbWF0Y2hpbmcuIAorCQkgIFRoaXMgY29uc3RyYWludCBpcyB0aGF0IHRoZSBydWxlIG11c3QgY29udGFpbiBhbiBvdXRwdXQgYWN0aW9uIGRpcmVjdGVkIGF0IHRoYXQgcG9ydC4KKworVGl0bGU6IE91dHBvcnQxCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorUG9ydHM6IDMgKDEgY29udHJvbCBwbGFuZSwgMiBEYXRhcGxhbmVzKQorSW5pdGlhbCBTdGF0ZTogQ29ubmVjdGlvbiBzZXR1cCwgQ2xlYXIgU3dpdGNoIFN0YXRlCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0LU5vdGVzOgorCithKSBJbnNlcnQgYSBmbG93IEYgIHdpdGggb3V0cHV0IGFjdGlvbiA9IHBvcnQgeCAKK2IpIFNlbmQgYSBkZWxldGUgY29tbWFuZCBtYXRjaGluZyBmbG93IEYgLGJ1dCAgb3V0X3BvcnQgPXBvcnQgeQorYykgU2VuZCBhIHRhYmxlX3N0YXRzIHJlcXVlc3QgLCB2ZXJpZnkgbm8gZmxvdyBnZXRzIGRlbGV0ZWQgaS5lLiBhY3RpdmVfY291bnQ9MQorZCkgU2VuZCBhIGRlbGV0ZSBjb21tYW5kIG1hdGNoaW5nIGZsb3cgRiAsb3V0cG9ydCA9IHBvcnQgeAorZSkgU2VuZCBhIHRhYmxlX3N0YXRzIHJlcXVlc3QsIHZlcmlmeSBmbG93IEYgZ2V0cyBkZWxldGVkLgorCisKKworMTYuIEFkZCwgbW9kaWZ5IGZsb3dzIHdpdGggY29uc3RyYWludCBvdXRwdXQKKworVGVzdCBEZXNjcmlwdGlvbjogQWRkLCBtb2RpZnkgZmxvd3Mgd2l0aCBvdXRwb3J0IHNldC4gVGhpcyBmaWVsZCBpcyBpZ25vcmVkIGJ5IEFERCwgTU9ESUZZLCBhbmQgTU9ESUZZIFNUUklDVCBtZXNzYWdlcy4KKworVGl0bGU6IE91dHBvcnQyCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorUG9ydHM6IDQgKDEgY29udHJvbCBwbGFuZSwgMyBEYXRhIHBsYW5lcykKK0luaXRpYWwgU3RhdGU6IENvbm5lY3Rpb24gc2V0dXAsIENsZWFyIFN3aXRjaCBTdGF0ZQorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKK1Rlc3QtTm90ZXM6CisKK2EpIEluc2VydCBhIGZsb3cgRiB3aXRoIGFjdGlvbiBBIChvdXRwdXQgLS0+IHBvcnQgeCkgLCBidXQgb3V0X3BvcnQgZmllbGQgaW4gdGhlIGZsb3cgbW9kIHNldCBhcyBwb3J0IHkKK2IpIFNlbmQgVGFibGVfU3RhdHNfUmVxdWVzdCwgVmVyaWZ5IEZsb3cgZ2V0cyBpbnNlcnRlZC4gKCBGbG93IGFkZCBpZ25vcmVzIG91dF9wb3J0IGZpZWxkKQorYykgTW9kaWZ5IHRoZSBhY3Rpb24gaW4gZmxvdyBGICwgYWN0aW9uIEGSICggb3V0cHV0IC0tPnBvcnQgeiApLCBidXQgb3V0X3BvcnQgZmllbGQgaW4gdGhlIGZsb3cgbW9kIHNldCBhcyBwb3J0IHkKK2QpIFNlbmQgdGVzdCBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgRiAKK2UpIFZlcmlmeSBwYWNrZXQgaW1wbGVtZW50cyBhY3Rpb24gQZIgKGZsb3cgbW9kaWZ5IGlnbm9yZXMgb3V0X3BvcnQgZmllbGQpCisKKworCisxNy4gVmVyaWZ5IHRoYXQgaWRsZSB0aW1lb3V0IGlzIGltcGxlbWVudGVkCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IGlkbGUgdGltZW91dCBpcyBpbXBsZW1lbnRlZAorCitUaXRsZTogSWRsZVRpbWVvdXQKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitQb3J0czogMyAoMSBjb250cm9sIHBsYW5lLCAyIERhdGFwbGFuZXMpCitJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QtTm90ZXM6CisKK2EpIEFkZCBhIGZsb3cgd2l0aCBpZGxlIHRpbWVvdXQgc2V0IGFuZCB3aXRoIE9GUFBfU0VORF9GTE9XX1JFTSBiaXQgc2V0CitiKSBWZXJpZnkgZmxvdyByZW1vdmVkIG1lc3NhZ2UgaXMgcmVjZWl2ZWQuCitjKSBWZXJpZnkgZmxvdyByZW1vdmVkIHJlYXNvbiB3YXMgaWRsZV90aW1lb3V0CitkKSBWZXJpZnkgdGhlIGR1cmF0aW9uX3NlYyBmaWVsZCBpcyAxIHNlYyAKKworCisKKzE4LiBWZXJpZnkgdGhhdCBoYXJkIHRpbWVvdXQgaXMgaW1wbGVtZW50ZWQKKworVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgaGFyZCB0aW1lb3V0IGlzIGltcGxlbWVudGVkCisKK1RpdGxlOiBIYXJkVGltZW91dAorVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1BvcnRzOiAzICgxIGNvbnRyb2wgcGxhbmUsIDIgRGF0YXBsYW5lcykKK0luaXRpYWwgU3RhdGU6IENvbm5lY3Rpb24gc2V0dXAsIENsZWFyIFN3aXRjaCBTdGF0ZSAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QtTm90ZXM6CisKK2EpIEFkZCBhIGZsb3cgd2l0aCBoYXJkIHRpbWVvdXQgPTEgc2V0IGFuZCB3aXRoIE9GUFBfU0VORF9GTE9XX1JFTSBiaXQgc2V0CitiKSBWZXJpZnkgZmxvdyByZW1vdmVkIG1lc3NhZ2UgaXMgcmVjZWl2ZWQuCitjKSBWZXJpZnkgZmxvdyByZW1vdmVkIHJlYXNvbiB3YXMgaGFyZF90aW1lb3V0CitkKSBWZXJpZnkgdGhlIGR1cmF0aW9uX3NlYyBmaWVsZCBpcyAxIHNlYyAKKworCisKKzE5LiBWZXJpZnkgdGhhdCBtZXNzYWdlcyBhcmUgZ2VuZXJhdGVkIGFzIGV4cGVjdGVkCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IEZsb3cgcmVtb3ZlZCBtZXNzYWdlcyBhcmUgZ2VuZXJhdGVkIGFzIGV4cGVjdGVkCisJICAgICAgICAgIC8qIFNpbmNlIJNmbG93IHJlbW92ZWQgbWVzc2FnZXMgYmVpbmcgZ2VuZXJhdGVkIHdoZW4gZmxhZyBpcyBzZXSUIGlzIGFscmVhZHkgdGVzdGVkIGluIHRoZSBhYm92ZSB0ZXN0cyAKKyAgICAgICAgICAgICAgICAgIFNvIGhlcmUsIHdlIHRlc3QgdGhlIHZpY2UtdmVyc2EgY29uZGl0aW9uLiovCisKK1RpdGxlOiBGbG93VGltZW91dAorVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1BvcnRzOiAzICgxY29udHJvbCBwbGFuZSwgMWRhdGFwbGFuZSkKK0luaXRpYWwgU3RhdGU6IENvbm5lY3Rpb24gc2V0dXAsIENsZWFyIFN3aXRjaCBTdGF0ZSAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QtTm90ZXM6CisKK2EpICBHZW5lcmF0ZSBhbmQgaW5zdGFsbCBhIGZsb3cgd2l0aCBpZGxlX3RpbWVvdXQgPSAxIHNldCBubyBPRlBGRl9TRU5EX0ZMT1dfUkVNIGZsYWcgc2V0LgorYikgIFZlcmlmeSBubyBmbG93IHJlbW92ZWQgbWVzc2FnZSBpcyByZWNlaXZlZC4KK2MpICBTZW5kIHRhYmxlX3N0YXRzX3JlcXVlc3QgbWVzc2FnZSBhbmQgdmVyaWZ5IGFjdGl2ZV9jb3VudD0wIAorCisKKworCisKKyoqKiAgIEFjdGlvbnMgICAqKioKKworCisKKzEuIE5vIEFjdGlvbiBkcm9wcyBwYWNrZXQgCisKK1Rlc3QgRGVzY3JpcHRpb246IElmIG5vIGZvcndhcmQgYWN0aW9ucyBhcmUgcHJlc2VudCwgdGhlIHBhY2tldCBpcyBkcm9wcGVkLiAKKwkJCitSZXF1aXJlZCBBY3Rpb246IERyb3AuIAorQSBmbG93LWVudHJ5IHdpdGggbm8gc3BlY2lmaWVkIGFjdGlvbiBpbmRpY2F0ZXMgdGhhdCBhbGwgbWF0Y2hpbmcgcGFja2V0cyBzaG91bGQgYmUgZHJvcHBlZC4gCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaXRsZTogIE5vQWN0aW9uCitQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczoKKworYSkgU2VuZCBGbG93IG1vZCBtZXNzYWdlIHdpdGhvdXQgYW55IGFjdGlvbiBzcGVjaWZpZWQKK2IpIFNlbmQgTiBwYWNrZXRzIG1hdGNoaW5nIHRoZSBmbG93IAorYykgVmVyaWZ5IHBhY2tldHMgYXJlIG5vdCByZWNlaXZlZCBvbiBhbnkgb2YgdGhlIGRhdGFwbGFuZSBwb3J0cyAKK2QpIFZlcmlmeSBwYWNrZXRzIGFyZSBub3QgZXZlbiBzZW50IHRvIHRoZSBjb250cm9sbGVyCisKKworCisyLiAgR2V0IHN1cHBvcnRlZCBhY3Rpb25zIGZyb20gc3dpdGNoCisKK1Rlc3QgRGVzY3JpcHRpb246IEdldCB0aGUgc3VwcG9ydGVkIGFjdGlvbnMgZnJvbSBzd2l0Y2ggYW5kIG1ha2Ugc2FuaXR5IGNoZWNrcy4KKwkJICAvKldoZW4gY29ubmVjdGluZyB0byB0aGUgY29udHJvbGxlciwgYSBzd2l0Y2ggaW5kaWNhdGUgd2hpY2ggb2YgdGhlIJNPcHRpb25hbCBBY3Rpb25zlCBpdCBzdXBwb3J0cyovCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiAgQW5ub3VuY2VtZW50CitQb3J0czogMSAoQ29udHJvbCBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorICAgICAgIAorCitUZXN0IE5vdGVzOiAKKworYSkgU2VuZCBmZWF0dXJlc19yZXF1ZXN0IC4KK2IpIFZlcmlmeSByZXNwb25zZSBpcyBPRlBUX0ZFQVRVUkVTX1JFUExZCitjKSBWZXJpZnkgcmVwbHkgaGFzIHN1cHBvcnRlZCBhY3Rpb24gbGlzdCBzcGVjaWZpZWQKKworCisKKzMuIEZvcndhcmQgQWxsCisKK1Rlc3QgRGVzY3JpcHRpb246IFBhY2tldCBpcyBzZW50IHRvIGFsbCBkYXRhcGxhbmUgcG9ydHMgZXhjZXB0IGluZ3Jlc3MgcG9ydCB3aGVuIG91dHB1dCBhY3Rpb24ucG9ydCA9IE9GUFBfQUxMCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiAgRm9yd2FyZEFsbAorUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisgICAgICAgCitUZXN0IE5vdGVzOiAKKworYSkgSW5zdGFsbCBhIGZsb3cgd2l0aCBvdXRwdXQgYWN0aW9uLnBvcnQgPSBPRlBQX0FMTC4KK2IpIFZlcmlmeSBwYWNrZXRzIGFyZSBmb3J3YXJkZWQgdG8gYWxsIHBvcnRzIGV4Y2VwdCBpbmdyZXNzIHBvcnQuCisKKworCis0LiBGb3J3YXJkIENvbnRyb2xsZXIgCisKK1Rlc3QgRGVzY3JpcHRpb246IFBhY2tldCBpcyBzZW50IHRvIGNvbnRyb2xsZXIgb3V0cHV0LnBvcnQgPSBPRlBQX0NPTlRST0xMRVIKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBGb3J3YXJkQ29udHJvbGxlcgorUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisgICAgICAgCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiBvdXRwdXQgcG9ydCA9IE9GUFBfQ09OVFJPTExFUgorYikgU2VuZCBwYWNrZXRzIG1hdGNoaW5nIHRoZSBmbG93CitjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIG9uIHRoZSBjb250cm9sIHBsYW5lIGFzIGEgcGFja2V0X2luIG1lc3NhZ2UKKworCisKKzUuIEZvcndhcmQgTG9jYWwgKFRCRCCWIFZlcmlmaWNhdGlvbiBvZiBwYWNrZXQgYmVpbmcgcmVjZWl2ZWQgYXQgbG9jYWwgbmV0d29ya2luZyBzdGFjaykKKworVGVzdCBEZXNjcmlwdGlvbjogUGFja2V0IGlzIHNlbnQgdG8gc3dpdGNoknMgbG9jYWwgbmV0d29ya2luZyBzdGFjayBpZiBvdXRwdXQucG9ydCA9IE9GUFBfTE9DQUwKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBGb3J3YXJkTG9jYWwKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworICAgICAgIAorVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gb3V0cHV0IHBvcnQgPSBPRlBQX0xPQ0FMCitiKSBTZW5kIHBhY2tldHMgbWF0Y2hpbmcgdGhlIGZsb3cKK2MpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaW4gdGhlIHN3aXRjaJJzIGxvY2FsIG5ldHdvcmtpbmcgc3RhY2suCisKKworCis2LiBGb3J3YXJkIFRhYmxlCisKK1Rlc3QgRGVzY3JpcHRpb246IFBlcmZvcm0gYWN0aW9ucyBpbiBmbG93IHRhYmxlLiBPbmx5IGZvciBwYWNrZXQtb3V0IG1lc3NhZ2VzLgorCQkgIC8qSWYgdGhlIG91dHB1dCBhY3Rpb24ucG9ydCBpbiB0aGUgcGFja2V0b3V0IG1lc3NhZ2UgPSBPRlAuVEFCTEUsIHRoZW4gdGhlIHBhY2tldCBpbXBsZW1lbnRzIHRoZSBhY3Rpb24gCisJCSAgc3BlY2lmaWVkIGluIHRoZSBtYXRjaGluZyBmbG93IG9mIHRoZSBGTE9XLVRBQkxFKi8KKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBGb3J3YXJkVGFibGUKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgRiB3aXRoIGFjdGlvbiBvdXRwdXQucG9ydCA9IGVncmVzc19wb3J0CitiKSBTZW5kIGEgT0ZQVF9QQUNLRVRfT1VUIG1lc3NhZ2Ugd2l0aCBvdXQgcG9ydD1PRlBQX1RBQkxFIG1hdGNoaW5nIGZsb3cgRiAKK2MpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgb24gZWdyZXNzX3BvcnQgKGkuZSBwYWNrZXRvdXQgbWVzc2FnZSBpbXBsZW1lbnRlZCB0aGUgYWN0aW9uIHNwZWNpZmllZCBpbiB0aGUgbWF0Y2hpbmcgZmxvdyBvZiB0aGUgVGFibGUpCisKKworCis3LiBGb3J3YXJkIEluIFBvcnQKKworVGVzdCBEZXNjcmlwdGlvbjogUGFja2V0IGlzIHNlbnQgdG8gaW5wdXQgcG9ydCBpZiBvdXRwdXQucG9ydCA9IE9GUFBfSU5QT1JUCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiAgRm9yd2FyZElucG9ydAorUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiBvdXRwdXQgcG9ydCA9IE9GUFBfSU5QT1JUCitiKSBTZW5kIHBhY2tldHMgbWF0Y2hpbmcgdGhlIGZsb3cKK2MpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgb24gYWxsIGRhdGFwbGFuZSBwb3J0cyBleGNlcHQgZm9yIGlucHV0IHBvcnQKKworCisKKzguIEZvcndhcmQgRmxvb2QKKworVGVzdCBEZXNjcmlwdGlvbjpGbG9vZCB0aGUgcGFja2V0IGFsb25nIHRoZSBtaW5pbXVtIHNwYW5uaW5nIHRyZWUsIG5vdCBpbmNsdWRpbmcgdGhlIGluY29taW5nIGludGVyZmFjZS4gCisJCSBQYWNrZXQgaXMgc2VudCBhbGwgdGhlIGRhdGFwbGFuZSBwb3J0cyBleGNlcHQgdGhlIGlucHV0IHBvcnQgaWYgb3V0cHV0LnBvcnQgPSBPRlBQX0ZMT09ECisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiAgRm9yd2FyZF9GbG9vZAorUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE9wdGlvbmFsCisKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uIG91dHB1dCBwb3J0ID0gT0ZQUF9GTE9PRAorYikgU2VuZCBwYWNrZXRzIG1hdGNoaW5nIHRoZSBmbG93CitjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIG9uIGFsbCBkYXRhcGxhbmUgcG9ydHMgZXhjZXB0IGZvciBpbnB1dCBwb3J0CisKKworCis5LiBNdWx0aXBsZSBQb3J0cyAtLSBUQkQKKworCisKKworMTAuIEZvcndhcmQgRW5xdWV1ZSAtLS0gVEJECisKKworCisKKzExLiBTZXQgVkxBTiBJZAorCitUZXN0IERlc2NyaXB0aW9uOiBBdHRhY2ggVkxBTiBJRCB0byB1bnRhZ2dlZCBwYWNrZXQuCisgICAgICAgICAgICAgICAgICBJZiBubyBWTEFOIGlzIHByZXNlbnQsIGEgbmV3IGhlYWRlciBpcyBhZGRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgVkxBTiBJRCBhbmQgcHJpb3JpdHkgb2YgemVyby4KKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBBZGRWbGFuSWQKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBPcHRpb25hbAorCisgICAgICAgCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiA9IE9GUEFUX1NFVF9WTEFOX1ZJRCAsIHZsYW5fdmlkID0geCAKK2IpIFNlbmQgcGFja2V0IChsZW5ndGggPSAxMDAgYnl0ZXMpIG1hdGNoaW5nIHRoZSBmbG93CitiKSAgIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIHZsYW4gaWQgYWRkZWQgdG8gaXQuIChJLmUgbGVuZ3RoIG9mIHBhY2tldCB3aXRoIHZpZCBpcyAxMDQgYnl0ZXMsIGRsX3ZsYW5fZW5hYmxlID0gVHJ1ZSwgZGxfdmxhbj0geCwgZGxfdmxhbl9wY3A9MCkgIAorICAgCisKKworMTIuIE1vZGlmeSBWTEFOIElkCisKK1Rlc3QgRGVzY3JpcHRpb246IE1vZGlmaWVzIFZsYW4gVGFnIGZvciBhIHRhZ2dlZCBwYWNrZXQKKwkJICBJZiBhIFZMQU4gaGVhZGVyIGFscmVhZHkgZXhpc3RzLCB0aGUgVkxBTiBJRCBpcyByZXBsYWNlZCB3aXRoIHRoZSBzcGVjaWZpZWQgdmFsdWUKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBNb2RpZnlWbGFuSWQKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBPcHRpb25hbAorCisKK1Rlc3QgTm90ZXM6IAorYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiA9IE9GUEFUX1NFVF9WTEFOX1ZJRCAsIHZsYW5fdmlkID0geCAKK2IpICAgU2VuZCBwYWNrZXQgKGxlbmd0aCA9IDEwMCBieXRlcykgbWF0Y2hpbmcgdGhlIGZsb3cKK2MpICAgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBoYXMgdmxhbiBpZCByZXdyaXR0ZW4uIChJLmUgbGVuZ3RoIG9mIDEwNCBieXRlcywgZGxfdmxhbl9lbmFibGUgPSBUcnVlLCBkbF92bGFuPXgpICAKKworCisKKzEzLiBBZGQgVkxBTiBQcmlvcml0eSB0byBhbiB1bnRhZ2dlZCBwYWNrZXQKKworVGVzdCBEZXNjcmlwdGlvbjogQXR0YWNoIFZMQU4gcHJpb3JpdHkgdG8gYW4gdW50YWdnZWQgcGFja2V0LgorCQkgIFNpbmNlLCBubyBWTEFOIElEIGlzIHByZXNlbnQ7IGEgbmV3IGhlYWRlciBpcyBhZGRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgcHJpb3JpdHkgYW5kIGEgVkxBTiBJRCBvZiB6ZXJvLlwKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBWbGFuUHJpbzEKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBPcHRpb25hbAorCisgICAgICAgCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiA9IE9GUEFUX1NFVF9WTEFOX1BDUCAsIGRsX3ZsYW5fcGNwID14CitiKSBTZW5kIHVudGFnZ2VkIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyAgCitjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGhhcyB2bGFuIHByaW9yaXR5IGFkZGVkIHRvIGl0IGFsb25nIHdpdGggYSB2aWQgdmFsdWUgb2YgemVybyBhZGRlZCBieSBkZWZhdWx0ICAgKGRsX3ZsYW5fZW5hYmxlICwgZGxfdmxhbiA9IDAgLCBkbF92bGFuX3BjcCA9eCApCisKKworCisxNC4gUmV3cml0ZSBleGlzdGluZyBWTEFOIHByaW9yaXR5CisKK1Rlc3QgRGVzY3JpcHRpb246IE1vZGlmeSBWTEFOIHByaW9yaXR5IGZvciBhIHRhZ2dlZCBwYWNrZXQuCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiAgVmxhblByaW8yCitQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogT3B0aW9uYWwKKworICAgICAgIAorVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfVkxBTl9QQ1AgLCBkbF92bGFuX3BjcCA9bmV3X3ZsYW5fcGNwCitiKSBTZW5kIHRhZ2dlZCBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgIChkbF92bGFuID0gb2xkX3ZsYW5faWQgLCBkbF92bGFuX3BjcCA9IG9sZF92bGFuX3BjcCkKK2MpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIHZsYW4gaWQgYWRkZWQgdG8gaXQuIChkbF92bGFuX2VuYWJsZSAsIGRsX3ZsYW4gPSAwICwgZGxfdmxhbl9wY3AgPSBuZXdfdmxhbl9wY3ApCisKKworCisKKzE1LiBNb2RpZnkgTDIgU3JjIEFkZHJlc3MKKworVGVzdCBEZXNjcmlwdGlvbjogTW9kaWZ5IEV0aGVybmV0IFNyYyBBZGRyZXNzIG9mIGEgcGFja2V0CisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiAgTW9kaWZ5TDJTcmMKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBPcHRpb25hbAorCisgICAgICAgCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiA9IE9GUEFUX1NFVF9ETF9TUkMgLCBkbF9zcmMgPW5ld19kbF9zcmMKK2IpIFNlbmQgcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAoZGxfZHN0ID0gb2xkX2RsX3NyYyApCitjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGhhcyBzcmMgYWRkcmVzcyByZXdyaXR0ZW4uIChkbF9zcmM9IG5ld19kbF9zcmMpCisKKworCisxNi4gTW9kaWZ5IEwyIERlc3RpbmF0aW9uIEFkZHJlc3MKKworVGVzdCBEZXNjcmlwdGlvbjogTW9kaWZ5IEV0aGVybmV0IERlc3RpbmF0aW9uIEFkZHJlc3Mgb2YgYSBwYWNrZXQKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBNb2RpZnlMMkRzdAorUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE9wdGlvbmFsCisKKyAgICAgICAKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uID0gT0ZQQVRfU0VUX0RMX0RTVCAsIGRsX2RzdCA9bmV3X2RsX2RzdAorYikgU2VuZCBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgIChkbF9kc3QgPSBvbGRfZGxfc3JjICkKK2MpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIGRlc3RpbmF0aW9uIGFkZHJlc3MgcmV3cml0dGVuLiAoZGxfc3JjPSBuZXdfZGxfc3JjKQorCisKKworMTcuIFN0cmlwIFZMQU4gaGVhZGVyIJYgKEluIG9mdGVzdCwgIG5lZWQgdG8gYWRkIGluIGNvbmZvcm1hbmNlIHRlc3Qtc3VpdGUgKQorCisKKworMTguIE1vZGlmeSBMMyBTcmMgQWRkcmVzcworCitUZXN0IERlc2NyaXB0aW9uOiBNb2RpZnkgTmV0d29yayBTcmMgQWRkcmVzcyBvZiBhIHBhY2tldAorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaXRsZTogIE1vZGlmeUwzU3JjCitQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogT3B0aW9uYWwKKworICAgICAgIAorVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfTldfU1JDICwgbndfc3JjID1uZXdfbndfc3JjCitiKSBTZW5kIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyAgKG53X3NyYyA9IG9sZF9ud19zcmMgKQorYykgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBoYXMgbncgYWRkcmVzcyByZXdyaXR0ZW4uIChud19zcmM9IG5ld19ud19zcmMpCisKKworCisxOS4gTW9kaWZ5IEwzIERzdCBBZGRyZXNzCisKK1Rlc3QgRGVzY3JpcHRpb246IE1vZGlmeSBOZXR3b3JrIERzdCBBZGRyZXNzIG9mIGEgcGFja2V0CisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiAgTW9kaWZ5TDNEc3QKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBPcHRpb25hbAorCisgICAgICAgCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiA9IE9GUEFUX1NFVF9OV19EU1QgLCBud19kc3QgPW5ld19ud19kc3QKK2IpIFNlbmQgcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAobndfZHN0ID0gb2xkX253X2RzdCApCitjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGhhcyBudyBkZXN0aW5hdGlvbiBhZGRyZXNzIHJld3JpdHRlbi4gKG53X2RzdD0gbmV3X253X2RzdCkKKworCisKKzIwLiBNb2RpZnkgTDQgU3JjIEFkZHJlc3MKKworVGVzdCBEZXNjcmlwdGlvbjogTW9kaWZ5IFRDUCBTb3VyY2UgUG9ydCBvZiBhIHBhY2tldAorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaXRsZTogIE1vZGlmeUw0U3JjCitQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogT3B0aW9uYWwKKworICAgICAgIAorVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfVFBfU1JDICwgdGNwX3Nwb3J0ID1uZXdfdGNwX3Nwb3J0CitiKSBTZW5kIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyAgKHRjcF9zcG9ydCA9IG9sZF90Y3Bfc3BvcnQgKQorYykgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBoYXMgdGNwIHNvdXJjZSBwb3J0IHJld3JpdHRlbi4gKHRjcF9zcG9ydCA9IG5ld190Y3Bfc3BvcnQpCisKKworMjEuIE1vZGlmeSBMNCBEc3QgQWRkcmVzcworCitUZXN0IERlc2NyaXB0aW9uOiBNb2RpZnkgVENQIERlc3RpbmF0aW9uIFBvcnQgb2YgYSBwYWNrZXQKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBNb2RpZnlMNERzdAorUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE9wdGlvbmFsCisKKyAgICAgICAKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uID0gT0ZQQVRfU0VUX1RQX0RTVCAsIHRjcF9kcG9ydCA9bmV3X3RjcF9kcG9ydAorYikgU2VuZCBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgICh0Y3BfZHBvcnQgPSBvbGRfdGNwX2Rwb3J0ICkKK2MpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIHRjcCBkZXN0aW5hdGlvbiBwb3J0IHJld3JpdHRlbi4gKHRjcF9zcG9ydCA9IG5ld190Y3Bfc3BvcnQpCisKKworCisyMi4gTW9kaWZ5IFRPUworCitUZXN0IERlc2NyaXB0aW9uOiBNb2RpZnkgTmV0d29yayBUeXBlIG9mIHNlcnZpY2UKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBNb2RpZnlUb3MKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBPcHRpb25hbAorCisgICAgICAgCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiA9IE9GUEFUX1NFVF9OV19UT1MsIGlwX3RvcyA9bmV3X2lwX3RvcworYikgU2VuZCBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgIChpcF90b3M9IG9sZF9pcF90b3MpCitjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGhhcyB0Y3AgZGVzdGluYXRpb24gcG9ydCByZXdyaXR0ZW4uIChpcF90b3M9IG5ld19pcF90b3MpCisKKworCisyMy4gT3JkZXIgTm90IHBvc3NpYmxlICAtLSBUQkQKKworCisKKworMjQuIFNlcXVlbnRpYWwgZXhlY3V0aW9uICAtLSBUQkQgCisKKworCisKKworKioqKiAgICAgQ291bnRlcnMgICAgICoqKioKKworCisKKzEuIFJlY2VpdmVkIFBhY2tldHMgcGVyIEZsb3cKKworCitUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCBwYWNrZXRfY291bnQgaW4gdGhlIEZsb3dfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHBhY2tldHMgaW4gZmxvdyAgCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IFBrdFBlckZsb3cKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgLCBtYXRjaCA9IGluZ3Jlc3NfcG9ydAorYikgU2VuZCBOIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyAgaS5lIHBhY2tldHMgc2hvdWxkIGJlIHNlbnQgb24gaW5ncmVzc19wb3J0CitjKSBTZW5kIGZsb3dfc3RhdHNfcmVxdWVzdCBmb3IgdGhlIGZsb3cgCitkKSBWZXJpZnkgcGFja2V0X2NvdW50ID0gTiBpbiB0aGUgZmxvd19zdGF0c19yZXBseQorCisKKworMi4gUmVjZWl2ZWQgQnl0ZXMgcGVyIEZsb3cKKworCitUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCBieXRlX2NvdW50IGluIHRoZSBGbG93X1N0YXRzIHJlcGx5IGluY3JlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBieXRlcyBpbiBmbG93ICAKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogQnl0UGVyRmxvdworUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyAsIG1hdGNoID0gaW5ncmVzc19wb3J0CitiKSBTZW5kIE4gcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICBpLmUgcGFja2V0cyBzaG91bGQgYmUgc2VudCBvbiBpbmdyZXNzX3BvcnQKK2MpIFNlbmQgZmxvd19zdGF0c19yZXF1ZXN0IGZvciB0aGUgZmxvdyAKK2QpIFZlcmlmeSBieXRlX2NvdW50ID0gTioobm8uIG9mIGJ5dGVzIGluIG9uZSBwYWNrZXQpIGluIHRoZSBmbG93X3N0YXRzX3JlcGx5CisKKworCiszLiBEdXJhdGlvbiBpbiBzZWMgcGVyIEZsb3cKKworCitUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCBkdXJhdGlvbl9zZWMgaW4gdGhlIEZsb3dfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRpbWUgdGhhdCBmbG93IHdhcyBhbGl2ZSBpbiBzZWMgCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IER1cmF0aW9uUGVyRmxvdworUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgYW55IGZsb3cgCitiKSBTZW5kIGZsb3dfc3RhdHNfcmVxdWVzdCBmb3IgdGhhdCBmbG93IHBlcmlvZGljYWxseSBhZnRlciBuIHNlYyBpbnRlcnZhbHMgdXB0byB0aW1lb3V0IG9mIHkgCitjKSBWZXJpZnkgZWFjaCBmbG93X3N0YXRzX3JlcGx5IGhhcyBkdXJhdGlvbl9zZWMgZmllbGQgaW5jcmVtZW50aW5nIGFzIG4gLCAybiAsIDNuIC4uIHkgCisKKworCis0LiBEdXJhdGlvbiBpbiBuc2VjIHBlciBmbG93CisKKworVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgZHVyYXRpb25fbnNlYyBpbiB0aGUgZmxvd19zdGF0cyByZXBsIGluY3JlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0aW1lIGZsb3cgaGFzIGJlZW4gYWxpdmUgaW4gbmFub3NlY29uZHMgCitiZXlvbmQgZHVyYXRpb25fc2VjLgorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBEdXJhdGlvblBlckZsb3cKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhbnkgZmxvdyAKK2IpIFNlbmQgZmxvd19zdGF0c19yZXF1ZXN0IHBlcmlvZGljYWxseSBhZnRlciBuIHNlYyBpbnRlcnZhbHMgdXB0byB0aW1lb3V0IG9mIHkgCitjKSBWZXJpZnkgZWFjaCBmbG93X3N0YXRzX3JlcGx5IGhhcyBkdXJhdGlvbl9zZWMgZmllbGQgaW5jcmVtZW50aW5nIGFzIG4gLCAybiAsIDNuIC4uIHkgYW5kIHJlYWQgb3V0IGR1cmF0aW9uX25zZWMgZmllbGQgKCBWZXJpZmljYXRpb24gb2YgbnNlYyBmaWVsZCAKK2lzIG91dCBvZiBzY29wZSkKKworCisKKzUuIFJlY2VpdmVkIHBhY2tldHMgcGVyIHBvcnQKKworCitUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCByeF9wYWNrZXRzIGluIHRoZSBQb3J0X1N0YXRzIHJlcGx5IGluY3JlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBwYWNrZXRzIHJlY2lldmVkIG9uIHRoYXQgcG9ydAorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBSeFBrdFBlclBvcnQKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgd2l0aCBtYXRjaCBvbiBpbmdyZXNzX3BvcnQKK2IpIFNlbmQgTiBwYWNrZXRzIG9uIHRoZSBpbmdyZXNzX3BvcnQgCitjKSBTZW5kIHBvcnRfc3RhdHMgcmVxdWVzdCBmb3IgcG9ydD1pbmdyZXNzX3BvcnQKK2QpIFZlcmlmeSBwb3J0X3N0YXRzX3JlcGx5IGhhcyByeF9wYWNrZXQ9TgorCisKKworCis2LiBUcmFuc21pdHRlZCBwYWNrZXRzIHBlciBwb3J0CisKKworVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgdHhfcGFja2V0cyBpbiB0aGUgUG9ydF9TdGF0cyByZXBseSBpbmNyZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgcGFja2V0cyB0cmFuc21pdHRlZCBmcm9tIGEgcG9ydCAgCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IFR4UGt0UGVyUG9ydAorUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIG1hdGNoIG9uIGluZ3Jlc3NfcG9ydCwgYWN0aW9uIG91dHB1dCA9IGVncmVzc19wb3J0CitiKSBTZW5kIE4gcGFja2V0cyBvbiB0aGUgaW5ncmVzc19wb3J0CitjKSBTZW5kIHBvcnRfc3RhdHMgcmVxdWVzdCBmb3IgcG9ydD1pbmdyZXNzX3BvcnQKK2QpIFZlcmlmeSBwb3J0X3N0YXRzX3JlcGx5IGhhZCB0eF9wYWNrZXRzPU4gICAKKworCisKKzcuIFJlY2VpdmVkIEJ5dGVzIHBlciBwb3J0CisKKworVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgcnhfYnl0ZXMgaW4gdGhlIFBvcnRfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGJ5dGVzIHJlY2lldmVkIG9uIGEgcG9ydCAgCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IFJ4Qnl0UGVyUG9ydAorUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIG1hdGNoIG9uIGluZ3Jlc3NfcG9ydCwgYWN0aW9uIG91dHB1dCA9IGVncmVzc19wb3J0CitiKSBTZW5kIE4gcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAKK2MpIFNlbmQgcG9ydF9zdGF0cyByZXF1ZXN0IGZvciBwb3J0PWluZ3Jlc3NfcG9ydAorZCkgVmVyaWZ5IHBvcnRfc3RhdHNfcmVwbHkgaGFkIHJ4X2J5dGVzPU4qKG5vLiBvZiBieXRlcyBpbiBhIHBhY2tldCkgCisKKworCis4LiBUcmFuc21pdHRlZCBCeXRlcyBwZXIgcG9ydAorCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IHR4X2J5dGVzIGluIHRoZSBQb3J0X1N0YXRzIHJlcGx5IGluY3JlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBieXRlcyB0cmFuc21pdHRlZCBmcm9tIGEgcG9ydCAgCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IFR4Qnl0UGVyUG9ydAorUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIG1hdGNoIG9uIGluZ3Jlc3NfcG9ydCwgYWN0aW9uIG91dHB1dCA9IGVncmVzc19wb3J0CitiKSBTZW5kIE4gcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAKK2MpIFNlbmQgcG9ydF9zdGF0cyByZXF1ZXN0IGZvciBwb3J0PWluZ3Jlc3NfcG9ydAorZCkgVmVyaWZ5IHBvcnRfc3RhdHNfcmVwbHkgaGFkIHR4X2J5dGVzPU4qKG5vLiBvZiBieXRlcyBpbiBhIHBhY2tldCkgCisKKworCis5LiBSZWNpZXZlIERyb3BzIHBlciBwb3J0IChUQkQgLS0tPiBWZXJpZmljYXRpb24gb2YgY291bnRlciBpbmNyZW1lbnRpbmcgY29ycmVjdGx5KQorCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IHJ4X2Ryb3BwZWQgY291bnRlcnMgaW4gdGhlIFBvcnRfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHBhY2tldHMgZHJvcHBlZCBieSBSWCAgCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IFJ4RHJvcHMKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKK1Rlc3QgTm90ZXMgOgorCithKSBTZW5kIHBvcnRfc3RhdHMgcmVxdWVzdCBmb3IgcG9ydD1pbmdyZXNzX3BvcnQKK2IpIFZlcmlmeSBwb3J0X3N0YXRzIHJlcGx5IGhhcyByeF9kcm9wcGVkIGNvdW50CisKKworCisKKworMTAuIFRyYW5zbWl0IERyb3BzIHBlciBwb3J0IChUQkQgLS0tPiBWZXJpZmljYXRpb24gb2YgY291bnRlciBpbmNyZW1lbnRpbmcgY29ycmVjdGx5KQorCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IHR4X2Ryb3BwZWQgY291bnRlcnMgaW4gdGhlIFBvcnRfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHBhY2tldHMgZHJvcHBlZCBieSBUWAorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBUeERyb3BzCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmFkYXRvcnkKKworCithKSBTZW5kIHBvcnRfc3RhdHMgcmVxdWVzdCBmb3IgcG9ydD1pbmdyZXNzX3BvcnQKK2IpIFZlcmlmeSBwb3J0X3N0YXRzIHJlcGx5IGhhcyB0eF9kcm9wcGVkIGNvdW50CisKKworCisKKzExLiBSZWNpZXZlIEVycm9ycyAoVEJEIC0tLT4gVmVyaWZpY2F0aW9uIG9mIGNvdW50ZXIgaW5jcmVtZW50aW5nIGNvcnJlY3RseSkKKworCitUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCByeF9lcnJvcnMgY291bnRlcnMgaW4gdGhlIFBvcnRfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggbnVtYmVyIG9mIHJlY2lldmVkIGVycm9yICAKKwkJICBUaGlzIGlzIGEgc3VwZXItc2V0IG9mIG1vcmUgc3BlY2lmaWMgcmVjZWl2ZSBlcnJvcnMgYW5kIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHN1bSBvZiBhbGwKKyAgICAgICAgICAgICAgICAgIHJ4XypfZXJyIHZhbHVlcy4KKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogUnhFcnJvcnMKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIFNlbmQgcG9ydF9zdGF0cyByZXF1ZXN0IGZvciBwb3J0PWluZ3Jlc3NfcG9ydAorYikgVmVyaWZ5IHBvcnRfc3RhdHMgcmVwbHkgaGFzIHJ4X2Vycm9ycyBjb3VudAorCisKKworMTIuIFRyYW5zbWl0IEVycm9ycyAoVEJEIC0tLT4gVmVyaWZpY2F0aW9uIG9mIGNvdW50ZXIgaW5jcmVtZW50aW5nIGNvcnJlY3RseSkKKworCitUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCB0eF9lcnJvcnMgY291bnRlcnMgaW4gdGhlIFBvcnRfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggbnVtYmVyIG9mIHRyYXNtaXQgZXJyb3JzICAKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogVHhFcnJvcnMKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIFNlbmQgcG9ydF9zdGF0cyByZXF1ZXN0IGZvciBwb3J0PWluZ3Jlc3NfcG9ydAorYikgVmVyaWZ5IHBvcnRfc3RhdHMgcmVwbHkgaGFzIHR4X2Vycm9ycyBjb3VudAorCisKKworMTMuIFJlY2lldmUgRnJhbWUgRXJyb3JzIChUQkQgLS0tPiBWZXJpZmljYXRpb24gb2YgY291bnRlciBpbmNyZW1lbnRpbmcgY29ycmVjdGx5KQorCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IHJ4X2ZybV9lcnIgY291bnRlcnMgaW4gdGhlIFBvcnRfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIG51bWJlciBvZiBmcmFtZSBhbGlnbm1lbnQgZXJyb3JzCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBSeEZyYW1lRXJyCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6IAorCithKSBTZW5kIHBvcnRfc3RhdHMgcmVxdWVzdCBmb3IgcG9ydD1pbmdyZXNzX3BvcnQKK2IpIFZlcmlmeSBwb3J0X3N0YXRzIHJlcGx5IGhhcyByeF9mcmFtZV9lcnIgY291bnQgCisKKworCisxNC4gUmVjaWV2ZSBPdmVycnVuIEVycm9ycyAoVEJEIC0tLT4gVmVyaWZpY2F0aW9uIG9mIGNvdW50ZXIgaW5jcmVtZW50aW5nIGNvcnJlY3RseSkKKworCitUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCByeF9vdmVyX2VyciBjb3VudGVycyBpbiB0aGUgUG9ydF9TdGF0cyByZXBseSBpbmNyZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgbnVtYmVyIG9mIHdpdGggUlggb3ZlcnJ1bgorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBSeE9FcnIKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIFNlbmQgcG9ydF9zdGF0cyByZXF1ZXN0IGZvciBwb3J0PWluZ3Jlc3NfcG9ydAorYikgVmVyaWZ5IHBvcnRfc3RhdHMgcmVwbHkgaGFzIHJ4X292ZXJfZXJyIGNvdW50IAorCisKKzE1LiBDUkMgRXJyb3JzIChUQkQgLS0tPiBWZXJpZmljYXRpb24gb2YgY291bnRlciBpbmNyZW1lbnRpbmcgY29ycmVjdGx5KQorCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IHJ4X2NyY19lcnIgY291bnRlcnMgaW4gdGhlIFBvcnRfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIG51bWJlciBvZiBjcmMgZXJyb3JzCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IFJ4Q3JjRXJyCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmFkYXRvcnkKKworCitUZXN0IE5vdGVzOiAKKworYSkgU2VuZCBwb3J0X3N0YXRzIHJlcXVlc3QgZm9yIHBvcnQ9aW5ncmVzc19wb3J0CitiKSBWZXJpZnkgcG9ydF9zdGF0cyByZXBseSBoYXMgcnhfY3JjX2VyciBjb3VudCAKKworCisKKzE2LiBDb2xsaXNpb25zIChUQkQgLS0tPiBWZXJpZmljYXRpb24gb2YgY291bnRlciBpbmNyZW1lbnRpbmcgY29ycmVjdGx5KQorCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IGNvbGxpc29ucyBjb3VudGVycyBpbiB0aGUgUG9ydF9TdGF0cyByZXBseSBpbmNyZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29sbGlzaW9ucyBlbmNvdW50ZXJlZCBieSB0aGUgc3dpdGNoCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IENvbGxpc2lvbnMKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIFNlbmQgcG9ydF9zdGF0cyByZXF1ZXN0IGZvciBwb3J0PWluZ3Jlc3NfcG9ydAorYikgVmVyaWZ5IHBvcnRfc3RhdHMgcmVwbHkgaGFzIGNvbGxpc2lvbnMgY291bnQgCisKKworCisxNy4gQWN0aXZlIEVudHJpZXMgcGVyIFRhYmxlCisKKworVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgYWN0aXZlX2NvdW50IGluIHRoZSB0YWJsZSBpbmNyZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgZmxvd3MgaW5zZXJ0ZWQgaW4gdGhlIHRhYmxlCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IEFjdGl2ZUNvdW50CitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgYSBmbG93IAorYikgU2VuZCB0YWJsZV9zdGF0c19yZXF1ZXN0CitjKSBWZXJpZnkgYWN0aXZlX2NvdW50PTEKKworCisKKzE4LiBQYWNrZXQgTG9va3VwIHBlciBUYWJsZQorCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IGxvb2t1cF9jb3VudCBpbiB0aGUgVGFibGVfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIG51bWJlciBvZiBwYWNrZXRzIGxvb2tlZCB1cCBpbiB0YWJsZQorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBMb29rdXBNYXRjaGVkQ291bnQKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgd2l0aCBtYXRjaCBvbiBpbmdyZXNzX3BvcnQKK2IpIFNlbmQgTiBwYWNrZXRzIG9uIGluZ3Jlc3NfcG9ydCAobWF0Y2hpbmcgdGhlIGZsb3cpCitjKSBTZW5kIE4nIHBhY2tldHMgb24geCBwb3J0IChOb3QgbWF0Y2hpbmcgdGhlIGZsb3cpCitkKSBTZW5kIHRhYmxlX3N0YXRzX3JlcXVlc3QgCitlKSBWZXJpZnkgbG9va3VwX2NvdW50ID0gTitOJyAKKworCisKKzE5LiBQYWNrZXRzIG1hdGNoZWQgcGVyIFRhYmxlCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IG1hdGNoZWRfY291bnQgaW4gdGhlIFRhYmxlX1N0YXRzIHJlcGx5IGluY3JlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBudW1iZXIgb2YgcGFja2V0cyBtYXRjaGVkIHdpdGggdGhlIHRhYmxlCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IExvb2t1cE1hdGNoZWRDb3VudAorUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIG1hdGNoIG9uIGluZ3Jlc3NfcG9ydAorYikgU2VuZCBOIHBhY2tldHMgb24gaW5ncmVzc19wb3J0IChtYXRjaGluZyB0aGUgZmxvdykKK2MpIFNlbmQgTicgcGFja2V0cyBvbiB4IHBvcnQgKE5vdCBtYXRjaGluZyB0aGUgZmxvdykKK2QpIFNlbmQgdGFibGVfc3RhdHNfcmVxdWVzdCAKK2UpIFZlcmlmeSBtYXRjaGVkX2NvdW50ID0gTiAKKworCisKKworMjAuIFRyYW5zbWl0IFBhY2tldHMgcGVyIFF1ZXVlCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IHR4X3BhY2tldHMgaW4gdGhlIHF1ZXVlX3N0YXRzIHJlcGx5IGluY3JlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBudW1iZXIgb2YgdHJhbnNtaXR0ZWQgcGFja2V0cworCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBUeFBrdFBlclF1ZXVlCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE9wdGlvbmFsCisKKworVGVzdCBOb3RlczogCisKK2EpIFNlbmQgcXVldWVfc3RhdHMgcmVxdWVzdCBmb3IgcG9ydHM9b2ZwLk9GUFBfQUxMIGFuZCBxdWV1ZV9pZHM9b2ZwLk9GUFFfQUxMIChpLmUgYWxsIHBvcnRzIGFuZCBhbGwgcXVldWVzKQorYikgU2VuZCBxdWV1ZV9zdGF0cyByZXF1ZXN0IGZvciBlZ3Jlc3NfcG9ydFswXSBhbmQgcXVldWVfaWRbMF0gYW5kIG5vdGUgdGhlIHR4X3BhY2tldHMgY291bnQgaW4gdGhlIHJlcGx5CitjKSBJbnNlcnQgYSBmbG93IGVudHJ5IHdpdGggZW5xdWV1ZSBhY3Rpb24gLCBwb3J0ID0gZWdyZXNzX3BvcnRbMF0gcXVldWVfaWQ9IHF1ZXVlX2lkWzBdCitkKSBTZW5kIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdworZSkgU2VuZCBxdWV1ZV9zdGF0cyByZXF1ZXN0IGFnYWluLCB2ZXJpZnkgdHhfcGFja2V0IGNvdW50IGluY3JlbWVudGVkIAorZikgUmVwZWF0IGIgLCBjICwgZCAsIGUgZm9yIGFsbCB0aGUgcXVldWVfaWRzIGNvbmZpZ3VyZWQgZm9yIGVncmVzc19wb3J0WzBdCitoKSBSZXBlYXQgYiAsIGMgLCBkICwgZSAsIGYgZm9yIGFsbCB0aGUgZWdyZXNzX3BvcnRzIGF2YWlsYWJsZQorCisKKworCisyMS4gVHJhbnNtaXQgQnl0ZXMgcGVyIFF1ZXVlCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IHR4X2J5dGVzIGluIHRoZSBxdWV1ZV9zdGF0cyByZXBseSBpbmNyZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgbnVtYmVyIG9mIHRyYW5zbWl0dGVkIGJ5dGVzCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IFR4Qnl0UGVyUXVldWUKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogT3B0aW9uYWwKKworCitUZXN0IE5vdGVzOiAKKworYSkgU2VuZCBxdWV1ZV9zdGF0cyByZXF1ZXN0IGZvciBwb3J0cz1vZnAuT0ZQUF9BTEwgYW5kIHF1ZXVlX2lkcz1vZnAuT0ZQUV9BTEwgKGkuZSBhbGwgcG9ydHMgYW5kIGFsbCBxdWV1ZXMpCitiKSBTZW5kIHF1ZXVlX3N0YXRzIHJlcXVlc3QgZm9yIGVncmVzc19wb3J0WzBdIGFuZCBxdWV1ZV9pZFswXSBhbmQgbm90ZSB0aGUgdHhfYnl0ZXMgY291bnQgaW4gdGhlIHJlcGx5CitjKSBJbnNlcnQgYSBmbG93IGVudHJ5IHdpdGggZW5xdWV1ZSBhY3Rpb24gLCBwb3J0ID0gZWdyZXNzX3BvcnRbMF0gcXVldWVfaWQ9IHF1ZXVlX2lkWzBdCitkKSBTZW5kIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdworZSkgU2VuZCBxdWV1ZV9zdGF0cyByZXF1ZXN0IGFnYWluLCB2ZXJpZnkgdHhfYnl0ZSBjb3VudCBpbmNyZW1lbnRlZCAKK2YpIFJlcGVhdCBiICwgYyAsIGQgLCBlIGZvciBhbGwgdGhlIHF1ZXVlX2lkcyBjb25maWd1cmVkIGZvciBlZ3Jlc3NfcG9ydFswXQoraCkgUmVwZWF0IGIgLCBjICwgZCAsIGUgLCBmIGZvciBhbGwgdGhlIGVncmVzc19wb3J0cyBhdmFpbGFibGUKKworCisKKzIyLiBUcmFuc21pdCBPdmVycnVuIEVycm9ycyBwZXIgcXVldWUgKFRCRCAtLS0tPiBWZXJpZmljYXRpb24gb2YgdHhfZXJyb3IgY291bnQgYmVpbmcgaW5jcmVtZW50ZWQgY29ycmVjdGx5KSAKKworVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgdHhfZXJyb3JzIGluIHRoZSBxdWV1ZV9zdGF0cyByZXBseSBpbmNyZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgbnVtYmVyIG9mIHBhY2tldHMgZHJvcHBlZCBkdWUgdG8gb3ZlcnJ1bi4KK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IFR4RXJyb3JQZXJRdWV1ZQorUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBPcHRpb25hbAorCitUZXN0IE5vdGVzOiAKKworCithKSBTZW5kIHF1ZXVlX3N0YXRzIHJlcXVlc3QgZm9yIHBvcnQ9ZWdyZXNzX3BvcnQgYW5kIHF1ZXVlX2lkcz1vZnAuT0ZQUV9BTEwKK0IpIHNlbmQgcXVldWVfc3RhdHMgcmVxdWVzdCBmb3IgZWdyZXNzX3BvcnQgYW5kIHF1ZXVlX2lkWzBdIChpLmUgZmlyc3QgcXVldWUgY29uZmlndXJlZCBmb3IgZWdyZXNzX3BvcnQpCitjKSBWZXJpZnkgcmVwbHkgaGFzIHR4X2Vycm9ycyBjb3VudCAuCitkKSBSZXBlYXIgYiAsIGMgZm9yIHRoZSBhbGwgcXVldWVfaWRzIG9mIGVncmVzc19wb3J0CisKKworCisKKworKioqKiAgICAgRmxvdyBtYXRjaGVzICAgICAqKioqCisKKworCisxLiBBbGwgV2lsZGNhcmQgTWF0Y2gKKworVGVzdCBEZXNjcmlwdGlvbjogQWRkaW5nIGEgRmxvdyB0aGF0IG1hdGNoZXMgYWxsIHRoZSBwb3NzaWJsZSBmaWVsZHMKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogQWxsV2lsZGNhcmRNYXRjaAorUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOgorCithKSBJbnNlcnQgYSBmbG93IHdpdGggd2lsZGNhcmQgPSBPRlBGV19BTEwgKHdpbGRjYXJkIGFsbCBmaWVsZHMpLCBhY3Rpb24gb3V0cHV0IHRvIGVncmVzc19wb3J0CitiKSBTZW5kIHBhY2tldHMgd2l0aCBkaWZmZXJlbnQgaGVhZGVyIGZpZWxkcworYykgVmVyaWZ5IGFsbCBwYWNrZXRzIG1hdGNoIHRoZSBmbG93IGFuZCBpbXBsZW1lbnQgdGhlIGFjdGlvbiBzcGVjaWZpZWQuCisKKworMi4gU2luZ2xlIEhlYWRlciBGaWVsZDogSW5ncmVzcyBQb3J0CisKK1Rlc3QgRGVzY3JpcHRpb246IE1hdGNoIG9uIEluZ3Jlc3MgUG9ydCBhbmQgV2lsZGNhcmQgcmVzdCAKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogSW5ncmVzc1BvcnQKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgd2l0aCBtYXRjaCA9IGluX3BvcnQgKHNheSBwb3J0IHgpLCBhY3Rpb24gb3V0cHV0IHRvIGVncmVzc19wb3J0CitiKSBTZW5kIHBhY2tldCBvbiBwb3J0IHggCitjKSBWZXJpZnkgcGFja2V0IHdhcyByZWNpZXZlZCBvbiBlZ3Jlc3NfcG9ydAorZCkgU2VuZCBwYWNrZXQgb24gcG9ydCB5CitlKSBWZXJpZnkgUGFja2V0SW4gZXZlbnQgd2FzIHRyaWdnZXJlZCBvbiBjb250cm9sIHBsYW5lCisKKworCiszLiBTaW5nbGUgSGVhZGVyIEZpZWxkOiBFdGhlcm5ldCBTcmMgQWRkcmVzcworCitUZXN0IERlc2NyaXB0aW9uOiBNYXRjaCBvbiBFdGhlcm5ldCBTb3VyY2UgQWRkcmVzcyBhbmQgV2lsZGNhcmQgcmVzdCAKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogRXRoZXJuZXRTcmNBZGRyZXNzCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgYSBmbG93IHdpdGggbWF0Y2ggPSBkbF9zcmMgKHNheSB4KSAsIGFjdGlvbiBvdXRwdXQgdG8gZWdyZXNzX3BvcnQKK2IpIFNlbmQgcGFja2V0IHd0aCBkbF9zcmMgPSB4IAorYykgVmVyaWZ5IHBhY2tldCB3YXMgcmVjaWV2ZWQgb24gZWdyZXNzX3BvcnQKK2QpIFNlbmQgcGFja2V0IHdpdGggZGxfc3JjID0geSAKK2UpIFZlcmlmeSBQYWNrZXRJbiBldmVudCB3YXMgdHJpZ2dlcmVkIG9uIHRoZSBjb250cm9sIHBsYW5lCisKKworCis0LiBTaW5nbGUgSGVhZGVyIEZpZWxkOiBFdGhlcm5ldCBEc3QgQWRkcmVzcworCitUZXN0IERlc2NyaXB0aW9uOiBNYXRjaCBvbiBFdGhlcm5ldCBEZXN0aW5hdGlvbiBBZGRyZXNzIGFuZCBXaWxkY2FyZCByZXN0IAorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBFdGhlcm5ldERzdEFkZHJlc3MKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgd2l0aCBtYXRjaCA9IGRsX2RzdCAoc2F5IHgpICwgYWN0aW9uIG91dHB1dCB0byBlZ3Jlc3NfcG9ydAorYikgU2VuZCBwYWNrZXQgd3RoIGRsX2RzdCA9IHggIAorYykgVmVyaWZ5IHBhY2tldCB3YXMgcmVjaWV2ZWQgb24gZWdyZXNzX3BvcnQKK2QpIFNlbmQgcGFja2V0IHdpdGggZGxfZHN0ID0geSAKK2UpIFZlcmlmeSBQYWNrZXRJbiBldmVudCB3YXMgdHJpZ2dlcmVkIG9uIHRoZSBjb250cm9sIHBsYW5lCisKKworCis1LiBTaW5nbGUgSGVhZGVyIEZpZWxkOiBFdGhlcm5ldCBUeXBlIAorCitUZXN0IERlc2NyaXB0aW9uOiBNYXRjaCBvbiBFaHRlcm5ldCBUeXBlIGFuZCBXaWxkY2FyZCByZXN0IAorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBFdGhlcm5ldFR5cGUKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgd2l0aCBtYXRjaCA9IGRsX3R5cGUgKHNheSB4KSAsIGFjdGlvbiBvdXRwdXQgdG8gZWdyZXNzX3BvcnQKK2IpIFNlbmQgcGFja2V0IHd0aCBkbF90eXBlID0geCAgIAorYykgVmVyaWZ5IHBhY2tldCB3YXMgcmVjaWV2ZWQgb24gZWdyZXNzX3BvcnQKK2QpIFNlbmQgcGFja2V0IHdpdGggZGxfdHlwZSA9IHkgCitlKSBWZXJpZnkgUGFja2V0SW4gZXZlbnQgd2FzIHRyaWdnZXJlZCBvbiB0aGUgY29udHJvbCBwbGFuZQorCisKKworCis2LiBTaW5nbGUgSGVhZGVyIEZpZWxkOiBWbGFuIElkCisKK1Rlc3QgRGVzY3JpcHRpb246IE1hdGNoIG9uIEluZ3Jlc3MgUG9ydCBhbmQgV2lsZGNhcmQgcmVzdCAKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogVmxhbklkCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgYSBmbG93IHdpdGggbWF0Y2ggPSBkbF92bGFuIChzYXkgeCkgLCBhY3Rpb24gb3V0cHV0IHRvIGVncmVzc19wb3J0CitiKSBTZW5kIGEgdGFnZ2VkIHBhY2tldCB3aXRoIChkbF92bGFuX2VuYWJsZT1UcnVlLGRsX3ZsYW4gPSB4KSAgCitjKSBWZXJpZnkgcGFja2V0IHdhcyByZWNpZXZlZCBvbiBlZ3Jlc3NfcG9ydAorZCkgU2VuZCBhbm90aGVyIHRhZ2dlZCBwYWNrZXQgd2l0aCAoZGxfdmxhbl9lbmFibGU9VHJ1ZSxkbF92bGFuID0geSApCitlKSBWZXJpZnkgUGFja2V0SW4gZXZlbnQgd2FzIHRyaWdnZXJlZCBvbiB0aGUgY29udHJvbCBwbGFuZQorCisKKworCis3LiBTaW5nbGUgSGVhZGVyIEZpZWxkOiBWbGFuIFBDUAorCitUZXN0IERlc2NyaXB0aW9uOiBNYXRjaCBvbiBWbGFuIElEIFByaW9yaXR5IAorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBWbGFuUGNwCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgYSBmbG93IHdpdGggbWF0Y2ggPSBkbF92bGFuX3BjcCAoc2F5IHgpICwgYWN0aW9uIG91dHB1dCB0byBlZ3Jlc3NfcG9ydAorYikgU2VuZCBhIHRhZ2dlZCBwYWNrZXQgd2l0aCAoZGxfdmxhbl9lbmFibGU9VHJ1ZSwgZGxfdmxhbiA9ICogLCBkbF92bGFuX3BjcCA9IHgpICAKK2MpIFZlcmlmeSBwYWNrZXQgd2FzIHJlY2lldmVkIG9uIGVncmVzc19wb3J0CitiKSBTZW5kIGEgdGFnZ2VkIHBhY2tldCB3aXRoIChkbF92bGFuX2VuYWJsZT1UcnVlLCBkbF92bGFuID0gKiAsIGRsX3ZsYW5fcGNwID0geSkgIAorZSkgVmVyaWZ5IFBhY2tldEluIGV2ZW50IHdhcyB0cmlnZ2VyZWQgb24gdGhlIGNvbnRyb2wgcGxhbmUKKworCisKKworCis4LiBTaW5nbGUgSGVhZGVyIEZpZWxkOiBJUCBTcmMgQWRkcmVzcyAtLS0tLS0tLSA+IChUQkQpCisKK1Rlc3QgRGVzY3JpcHRpb246IE1hdGNoIG9uIElQIFNyYyBBZGRyZXNzIGFuZCBXaWxkY2FyZCByZXN0IAorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBJUFNyY0FkZHJlc3MKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworCisKKzkuIFNpbmdsZSBIZWFkZXIgRmllbGQ6IElQIERzdCBBZGRyZXNzIC0tLS0tLS0tLS0tPiAoVEJEKQorCitUZXN0IERlc2NyaXB0aW9uOiBNYXRjaCBvbiBJUCBEc3QgQWRkcmVzcyBhbmQgV2lsZGNhcmQgcmVzdCAKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogSVBEc3RBZGRyZXNzCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKKworCisKKzEwLiBTaW5nbGUgSGVhZGVyIEZpZWxkOiBJUCBwcm90b2NvbC0tLS0tLS0tLS0tLS0tLT4gKFRCRCkKKworVGVzdCBEZXNjcmlwdGlvbjogTWF0Y2ggb24gSVAgUHJvdG9jb2wgYW5kIFdpbGRjYXJkIHJlc3QgCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IElQcHJvdG9jb2wKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworCisKKworCisxMS4gU2luZ2xlIEhlYWRlciBGaWVsZDogSVAgVG9zIGJpdHMKKworVGVzdCBEZXNjcmlwdGlvbjogTWF0Y2ggb24gSVAgVG9zIGJpdHMgYW5kIFdpbGRjYXJkIHJlc3QgCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IElwVG9zCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgYSBmbG93IHdpdGggbWF0Y2ggPSBud190b3MgKHNheSB4KSAsIGFjdGlvbiBvdXRwdXQgdG8gZWdyZXNzX3BvcnQKK2IpIFNlbmQgYSB0Y3AgcGFja2V0IHdpdGggKG53X3Rvcz14KSAgCitjKSBWZXJpZnkgcGFja2V0IHdhcyByZWNpZXZlZCBvbiBlZ3Jlc3NfcG9ydAorYikgU2VuZCBhIHRjcCBwYWNrZXQgd2l0aCAobndfdG9zID0geSkKK2UpIFZlcmlmeSBQYWNrZXRJbiBldmVudCB3YXMgdHJpZ2dlcmVkIG9uIHRoZSBjb250cm9sIHBsYW5lCisKKworCisxMi4gU2luZ2xlIEhlYWRlciBGaWVsZDogVHJhbnNwb3J0IFNvdXJjZSBQb3J0CisKK1Rlc3QgRGVzY3JpcHRpb246IE1hdGNoIG9uIFRyYW5zcG9ydCBTcmMgUG9ydCBhbmQgV2lsZGNhcmQgcmVzdCAKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogVGNwU3JjUG9ydAorUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIG1hdGNoID0gdHBfc3JjIChzYXkgeCkgLCBhY3Rpb24gb3V0cHV0IHRvIGVncmVzc19wb3J0CitiKSBTZW5kIGEgdGNwIHBhY2tldCB3aXRoICh0cF9zcmM9eCkgIAorYykgVmVyaWZ5IHBhY2tldCB3YXMgcmVjaWV2ZWQgb24gZWdyZXNzX3BvcnQKK2IpIFNlbmQgYSB0Y3AgcGFja2V0IHdpdGggdHBfc3JjPSB5KQorZSkgVmVyaWZ5IFBhY2tldEluIGV2ZW50IHdhcyB0cmlnZ2VyZWQgb24gdGhlIGNvbnRyb2wgcGxhbmUKKworCisKKzEzLiBTaW5nbGUgSGVhZGVyIEZpZWxkOiBUcmFuc3BvcnQgRGVzdGluYXRpb24gUG9ydAorCitUZXN0IERlc2NyaXB0aW9uOiBNYXRjaCBvbiBUcmFuc3BvcnQgRHN0IFBvcnQgYW5kIFdpbGRjYXJkIHJlc3QgCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IFRjcERzdFBvcnQKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgd2l0aCBtYXRjaCA9IHRwX2RzdCAoc2F5IHgpICwgYWN0aW9uIG91dHB1dCB0byBlZ3Jlc3NfcG9ydAorYikgU2VuZCBhIHRjcCBwYWNrZXQgd2l0aCAodHBfZHN0PXgpICAKK2MpIFZlcmlmeSBwYWNrZXQgd2FzIHJlY2lldmVkIG9uIGVncmVzc19wb3J0CitiKSBTZW5kIGEgdGNwIHBhY2tldCB3aXRoIHRwX2RzdCA9IHkpCitlKSBWZXJpZnkgUGFja2V0SW4gZXZlbnQgd2FzIHRyaWdnZXJlZCBvbiB0aGUgY29udHJvbCBwbGFuZQorCisKKworCisxNC4gTXVsdGlwbGUgSGVhZGVyIEZpZWxkczogTDIKKworCitUZXN0IERlc2NyaXB0aW9uOiBNYXRjaCBvbiBFdGhlcm5ldCBUeXBlLCBFdGhlcm5ldCBTb3VyY2UgQWRkcmVzcywgRXRoZXJuZXQgRGVzdGluYXRpb24gQWRkcmVzcyBhbmQgV2lsZGNhcmQgcmVzdCAKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogTXVsdGlwbGVIZWFkZXJGaWVsZEwyCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgYSBmbG93IHdpdGggbWF0Y2ggPSBkbF90eXBlIChzYXkgeCksIGRsX3NyYyAoc2F5IHkgKSwgZGxfZHN0IChzYXkgeiksIGFjdGlvbiBvdXRwdXQgdG8gZWdyZXNzX3BvcnQKK2IpIFNlbmQgYSBldGggcGFja2V0IHdpdGggZGxfdHlwZSAoc2F5IHgpLCBkbF9zcmMgKHNheSB5ICksIGRsX2RzdCAoc2F5IHopCitjKSBWZXJpZnkgcGFja2V0IHdhcyByZWNpZXZlZCBvbiBlZ3Jlc3NfcG9ydAorYikgU2VuZCBhIGV0aCBwYWNrZXQgd2l0aCBkbF90eXBlIChzYXkgdyksIGRsX3NyYyAoc2F5IHYgKSwgZGxfZHN0IChzYXkgZikKK2UpIFZlcmlmeSBQYWNrZXRJbiBldmVudCB3YXMgdHJpZ2dlcmVkIG9uIHRoZSBjb250cm9sIHBsYW5lCisKKworCisxNS4gTXVsdGlwbGUgSGVhZGVyIEZpZWxkczogTDMgLS0tLS0tPiBUQkQKKworCisKKworMTYuIE11bHRpcGxlIEhlYWRlciBGaWVsZHM6IEw0CisKK1Rlc3QgRGVzY3JpcHRpb246IE1hdGNoIG9uIFRjcCBTb3VyY2UgUG9ydCwgVGNwIERlc3RpbmF0aW9uIFBvcnQKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogTXVsdGlwbGVIZWFkZXJGaWVsZEw0CitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgYSBmbG93IHdpdGggbWF0Y2ggPSB0cF9zcmMgKHNheSB4KSwgdHBfZHN0IChzYXkgeSApCitiKSBTZW5kIGEgdGNwIHBhY2tldCB3aXRoIHRwX3NyYyAoc2F5IHgpLCB0cF9kc3QgKHNheSB5ICkJCitjKSBWZXJpZnkgcGFja2V0IHdhcyByZWNpZXZlZCBvbiBlZ3Jlc3NfcG9ydAorYikgU2VuZCBhIGV0aCBwYWNrZXQgd2l0aCB0Y3Bfc3JjIChzYXkgdyksIHRjcF9kc3QgKHNheSB2ICkKK2UpIFZlcmlmeSBQYWNrZXRJbiBldmVudCB3YXMgdHJpZ2dlcmVkIG9uIHRoZSBjb250cm9sIHBsYW5lCisKKworCisxNy4gQWxsIEhlYWRlciBGaWVsZHM6IEV4YWN0IE1hdGNoIGZsb3dzCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSBleGFjdCBmbG93IG1hdGNoZXMgYXJlIHBvc3NpYmxlIAorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBFeGFjdE1hdGNoCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgYSBmbG93IHdpdGggZXhhY3QgbWF0Y2gsIGFjdGlvbiBvdXRwdXQgdG8gZWdyZXNzX3BvcnQKK2IpIFNlbmQgcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAKK2MpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgb24gZWdyZXNzX3BvcnQKK2QpIFNlbmQgYSBub24tbWF0Y2hpbmcgcGFja2V0CitlKSBWZXJpZnkgUGFja2V0SW4gZXZlbnQgZ2V0cyB0cmlnZ2VyZWQKKworCisKKzE4LiBFeGFjdCBNYXRjaCBIaWdoZXN0IFByaW9yaXR5CisKK1Rlc3QgRGVzY3JpcHRpb246IEFuIGV4YWN0IG1hdGNoIGZsb3cgZW50cnkgaGFzIGEgaGlnaGVzdCBwcmlvcml0eSBjb21wYXJlZCB0byBvdGhlciBmbG93IGVudHJpZXMgCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IEV4YWN0TWF0Y2hIaWdoCitQT3J0czogNCAoMSBDb250cm9sIFBsYW5lIDMgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgdHdvIG92ZXJsYXBwaW5nIGZsb3dzOgorCUV4YWN0IE1hdGNoIChwcmlvID0gcCApICAgYWN0aW9uIGVncmVzc19wb3J0CisJV2lsZGFjcmQgQWxsIChwcmlvID0gcCsgKSBhY3Rpb24gZWdyZXNzX3BvcnQyCitiKSBTZW5kIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvd3MKK2MpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgb24gZWdyZXNzX3BvcnQgCisKKworCisKKzE5LiBXaWxkY2FyZCBNYXRjaCBIaWdoZXN0IFByaW9yaXR5CisKK1Rlc3QgRGVzY3JpcHRpb246IElmIFdpbGRjYXJkIGZsb3cgZW50cmllcyBoYXZlIHByaW9yaXR5IGFzc29jaWF0ZWQgd2l0aCB0aGVtLgorCQkgIEhpZ2hlciBwcmlvcml0eSBXaWxkY2FyZCBmbG93IG92ZXJyaWRlcyB0aGUgbG93ZXIgcHJpcm90eSBXaWxkY2FyZCBmbG93ICAKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogV2lsZGNhcmRNYXRjaEhpZ2gKK1BPcnRzOiA0ICgxIENvbnRyb2wgUGxhbmUgMyBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIEluc2VydCB0d28gd2lsZGNhcmRlZCBmbG93cyA6CisJV2lsZGNhcmQgQWxsIEV4Y2VwdCBpbmdyZXNzIChwcmlvID0gcCApICwgYWN0aW9uID0gZWdyZXNzX3BvcnQKKwlXaWxkY2FyZCBBbGwgKHByaW8gPSBwKyApICxhY3Rpb24gPSBlZ3Jlc3NfcG9ydDIKK2IpIFNlbmQgcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93cyAgCitjKSBWZXJpZnkgcGFja2V0IGlzIHJlY2lldmVkIG9uIGVncmVzc19wb3J0MgorCisKKworMjAuIEZyYWdtZW50IFRDUCBTZWdtZW50cyAtLS0tLS0+IFRCRCAKKworVGVzdCBEZXNjcmlwdGlvbjogQ3JlYXRlIGZsb3cgbWF0Y2hpbmcgb24gdGNwIHBvcnQgbnVtYmVyLiBWZXJpZnkgdGhhdCBmcmFnbWVudGVkIHBhY2tldHMgYWx3YXlzIG1hdGNoIHRoYXQgZmxvdyBydWxlLgorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBGcmFnVGNwU2VnCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQo=