PGhlYWRlciBjbGFzcz0ibWFzdGhlYWQiPgogIDxkaXYgY2xhc3M9ImV5ZWJyb3ciPkdlbSBTdGF0ZSBDaHJvbmljbGUgwrcgRGF0YSBEZXNrPC9kaXY+CiAgPGgxIGNsYXNzPSJ0aXRsZSI+QmFsYW5jZSB0aGUgPGVtPkJ1ZGdldDwvZW0+PC9oMT4KICA8cCBjbGFzcz0iZGVrIj5JZGFobydzIEZZMjAyNyBHZW5lcmFsIEZ1bmQsIGxpbmUgYnkgbGluZS4gQWRqdXN0IGEgdGF4IHJhdGUgb3IgYW4gYWdlbmN5J3MgYnVkZ2V0IGFuZCB3YXRjaCB0aGUgbGVkZ2VyIG1vdmUg4oCUIGV2ZXJ5IGZpZ3VyZSBiZWxvdyBjb21lcyBzdHJhaWdodCBvdXQgb2YgdGhlIExlZ2lzbGF0dXJlJ3Mgb3duIDxhIGhyZWY9Imh0dHBzOi8vbGVnaXNsYXR1cmUuaWRhaG8uZ292L2xzby9icGEvcHVicy9sZnIvIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciI+RlkyMDI3IGZpc2NhbCByZXBvcnQ8L2E+LjwvcD4KICA8cCBjbGFzcz0iZGVrLW5vdGUiPkVuZGluZyBCYWxhbmNlIHJ1bnMgaGlnaGVyIHRoYW4gUmV2ZW51ZSBtaW51cyBBcHByb3ByaWF0aW9ucyBvbiBwdXJwb3NlIOKAlCBpdCBhbHNvIGNvdW50cyAkNjcuM00gaW4gbGVmdG92ZXIgY2FzaCBmcm9tIGxhc3QgeWVhciBhbmQgJDYzLjZNIGluIG9uZS10aW1lIGZ1bmQgdHJhbnNmZXJzIHRoZSBMZWdpc2xhdHVyZSBhbHJlYWR5IGVuYWN0ZWQgdGhpcyBzZXNzaW9uLCBuZWl0aGVyIG9mIHdoaWNoIG1vdmVzIHdoZW4geW91IGFkanVzdCBhIHNsaWRlci4gRnVsbCBicmVha2Rvd24gaW4gdGhlIG1ldGhvZG9sb2d5IG5vdGVzIGJlbG93LjwvcD4KICA8cCBjbGFzcz0iYnlsaW5lIj5GSVNDQUwgWUVBUiAyMDI3IMK3IFNFQ09ORCBSRUdVTEFSIFNFU1NJT04sIDY4VEggSURBSE8gTEVHSVNMQVRVUkUgwrcgU09VUkNFOiBMU08gTEVHSVNMQVRJVkUgRklTQ0FMIFJFUE9SVDwvcD4KPC9oZWFkZXI+Cgo8ZGl2IGNsYXNzPSJsZWRnZXItc3RpY2t5LW91dGVyIj4KICA8ZGl2IGNsYXNzPSJsZWRnZXItYmFyIj4KICAgIDxkaXYgY2xhc3M9ImxlZGdlci1jZWxsIj4KICAgICAgPGRpdiBjbGFzcz0ibGVkZ2VyLWxhYmVsIj5HZW5lcmFsIEZ1bmQgUmV2ZW51ZTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJsZWRnZXItdmFsdWUiIGlkPSJsZWRnZXJSZXZlbnVlIj7igJQ8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ibGVkZ2VyLWRlbHRhIiBpZD0ibGVkZ2VyUmV2ZW51ZURlbHRhIj48L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0ibGVkZ2VyLWNlbGwiPgogICAgICA8ZGl2IGNsYXNzPSJsZWRnZXItbGFiZWwiPkdlbmVyYWwgRnVuZCBBcHByb3ByaWF0aW9uczwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJsZWRnZXItdmFsdWUiIGlkPSJsZWRnZXJBcHByb3AiPuKAlDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJsZWRnZXItZGVsdGEiIGlkPSJsZWRnZXJBcHJvcERlbHRhIj48L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0ibGVkZ2VyLWNlbGwgbGVkZ2VyLWNlbGwtYmFsYW5jZSI+CiAgICAgIDxkaXYgY2xhc3M9ImxlZGdlci1sYWJlbCIgdGl0bGU9IkluY2x1ZGVzIGEgJDY3LjNNIGNhc2ggYmFsYW5jZSBjYXJyaWVkIGZyb20gRlkyMDI2IGFuZCAkNjMuNk0gaW4gZW5hY3RlZCBvbmUtdGltZSB0cmFuc2ZlcnMsIHBlciB0aGUgTEZSJ3Mgb3duIEdlbmVyYWwgRnVuZCBCdWRnZXQgUmVwb3J0IC0tIHNlZSBtZXRob2RvbG9neSBiZWxvdy4iPkVuZGluZyBCYWxhbmNlIDxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIGRvdHRlZDtjdXJzb3I6aGVscDsiPuKTmDwvc3Bhbj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ibGVkZ2VyLXZhbHVlIiBpZD0ibGVkZ2VyQmFsYW5jZSI+4oCUPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImxlZGdlci1kZWx0YSIgaWQ9ImxlZGdlckJhbGFuY2VOb3RlIj48L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0icmVzZXQtY2VsbCI+CiAgICAgIDxidXR0b24gY2xhc3M9InJlc2V0LWJ0biIgaWQ9InJlc2V0QnRuIj7ihrogUmVzZXQgYWxsPC9idXR0b24+CiAgICA8L2Rpdj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJsZWRnZXItZmVkLXN0cmlwIiBpZD0ibGVkZ2VyRmVkU3RyaXAiPgogICAgPHNwYW4gY2xhc3M9ImZlZC1zd2F0Y2giPjwvc3Bhbj4KICAgIDxzcGFuPkZlZGVyYWwgZnVuZHMgYWZmZWN0ZWQgKGluZm9ybWF0aW9uYWwg4oCUIG5vdCBwYXJ0IG9mIElkYWhvJ3MgYmFsYW5jZWQtYnVkZ2V0IHJlcXVpcmVtZW50KTogPHN0cm9uZyBpZD0ibGVkZ2VyRmVkVmFsdWUiPiQwLjBNPC9zdHJvbmc+PC9zcGFuPgogIDwvZGl2Pgo8L2Rpdj4KCjxkaXYgY2xhc3M9IndyYXAiPgoKICA8c2VjdGlvbiBjbGFzcz0iYmxvY2siIGlkPSJyZXZlbnVlLXNlY3Rpb24iPgogICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1oZWFkIj4KICAgICAgPHNwYW4gY2xhc3M9InNlY3Rpb24tbnVtIj5SRVY8L3NwYW4+CiAgICAgIDxoMiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+UmV2ZW51ZTwvaDI+CiAgICA8L2Rpdj4KICAgIDxwIGNsYXNzPSJzZWN0aW9uLXN1YiI+SWRhaG8ncyBHZW5lcmFsIEZ1bmQgZHJhd3MgbWFpbmx5IGZyb20gdGhyZWUgdGF4ZXMuIE1vdmUgYSByYXRlIGFuZCB0aGUgbGVkZ2VyIGFib3ZlIHJlY2FsY3VsYXRlcyBpbnN0YW50bHkg4oCUIHRoaXMgaXMgPGVtPnN0YXRpYzwvZW0+IHNjb3JpbmcgKGl0IGFzc3VtZXMgdGF4YWJsZSBhY3Rpdml0eSBkb2Vzbid0IGNoYW5nZSksIHRoZSBzYW1lIHNpbXBsaWZ5aW5nIGFzc3VtcHRpb24gbW9zdCBxdWljayBmaXNjYWwgZXN0aW1hdGVzIHVzZS48L3A+CiAgICA8ZGl2IGNsYXNzPSJyZXYtZ3JpZCIgaWQ9InJldmVudWVHcmlkIj48L2Rpdj4KICA8L3NlY3Rpb24+CgogIDxzZWN0aW9uIGNsYXNzPSJibG9jayIgaWQ9InNwZW5kaW5nLXNlY3Rpb24iPgogICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1oZWFkIj4KICAgICAgPHNwYW4gY2xhc3M9InNlY3Rpb24tbnVtIj5TUEVORDwvc3Bhbj4KICAgICAgPGgyIGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5TcGVuZGluZywgYnkgZGVwYXJ0bWVudDwvaDI+CiAgICA8L2Rpdj4KICAgIDxwIGNsYXNzPSJzZWN0aW9uLXN1YiI+R3JvdXBlZCB0aGUgd2F5IEpGQUMgaXRzZWxmIGdyb3VwcyB0aGVtLCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgTGVnaXNsYXRpdmUgRmlzY2FsIFJlcG9ydC4gRWFjaCByb3cgc2hvd3MgR2VuZXJhbCBGdW5kLCBEZWRpY2F0ZWQgRnVuZHMsIGFuZCBGZWRlcmFsIEZ1bmRzIHNpZGUgYnkgc2lkZSDigJQgYSBHZW5lcmFsIEZ1bmQgY3V0IGRvZXNuJ3QgdG91Y2ggdGhlIG90aGVyIHR3byBiYXJzLCB3aGljaCBpcyBleGFjdGx5IHRoZSBwb2ludC48L3A+CiAgICA8ZGl2IGlkPSJhcmVhQWNjb3JkaW9ucyI+PC9kaXY+CiAgPC9zZWN0aW9uPgoKICA8ZGl2IGNsYXNzPSJtZXRob2QiPgogICAgPGgzPlJlYWQgdGhpcyBiZWZvcmUgeW91IG1vdmUgYSBzbGlkZXI8L2gzPgogICAgPHA+PHN0cm9uZz5UaGlzIGlzIGEgbWVjaGFuaWNhbCBjYWxjdWxhdG9yLCBub3QgYSBmb3JlY2FzdC48L3N0cm9uZz4gRXZlcnkgbnVtYmVyIHN0YXJ0cyBmcm9tIHRoZSBMZWdpc2xhdHVyZSdzIGFjdHVhbCBGWTIwMjcgYXBwcm9wcmlhdGlvbiBhbmQgcmV2ZW51ZSB0YWJsZXMuIFNsaWRlcnMgYXBwbHkgc2ltcGxlLCBzdGF0aWMgbWF0aCDigJQgZG9sbGFyLWZvci1kb2xsYXIgb3IgcmF0ZS1mb3ItcmF0ZSDigJQgd2l0aCBubyBhc3N1bXB0aW9uIGFib3V0IGhvdyBwZW9wbGUgb3IgYWdlbmNpZXMgd291bGQgYWN0dWFsbHkgcmVzcG9uZC4gUmVhbCBmaXNjYWwgbm90ZXMgYXJlIG1vcmUgY2FyZWZ1bCB0aGFuIHRoaXMsIGFuZCBzbyBzaG91bGQgeW91IGJlIGJlZm9yZSBjaXRpbmcgYSBudW1iZXIgZnJvbSBoZXJlLjwvcD4KICAgIDx1bD4KICAgICAgPGxpPjxzdHJvbmc+QSBidWRnZXQgYmlsbCBpc24ndCB0aGUgb25seSBkb29yLjwvc3Ryb25nPiBKRkFDIHNldHMgZG9sbGFyIGFtb3VudHMsIGJ1dCBlbGlnaWJpbGl0eSwgYmVuZWZpdCBsZXZlbHMsIGFuZCBwcm9ncmFtIHN0cnVjdHVyZSBhcmUgdXN1YWxseSBzZXQgaW4gc2VwYXJhdGUgSWRhaG8gQ29kZSBzZWN0aW9ucy4gUm93cyB0YWdnZWQgPHNwYW4gY2xhc3M9ImNvZGUtdGFnIj5hbWVuZHMgY29kZTwvc3Bhbj4gYWxyZWFkeSByZXF1aXJlZCBtb3JlIHRoYW4gYW4gYXBwcm9wcmlhdGlvbiBiaWxsIHRoaXMgeWVhciDigJQgY3V0dGluZyBtb3N0IG90aGVyIGxpbmVzIGZ1cnRoZXIgd291bGQgdG9vLjwvbGk+CiAgICAgIDxsaT48c3Ryb25nPkZlZGVyYWwgRnVuZHMgYW5kIERlZGljYXRlZCBGdW5kcyBhcmVuJ3QgR2VuZXJhbCBGdW5kJ3MgdG8gc3BlbmQuPC9zdHJvbmc+IFRoZSBncmF5L2dvbGQgcG9ydGlvbiBvZiBlYWNoIGJhciBpcyBtb25leSB0aGUgc3RhdGUgcmVjZWl2ZXMgb3IgY29sbGVjdHMgZm9yIGEgc3BlY2lmaWMgcHVycG9zZSAoZmVkZXJhbCBtYXRjaCwgZmVlcywgZW5kb3dtZW50IGVhcm5pbmdzKS4gQ3V0dGluZyBhIHByb2dyYW0ncyBHZW5lcmFsIEZ1bmQgbGluZSBkb2Vzbid0IGZyZWUgdXAgdGhhdCBtb25leSBmb3Igc29tZXRoaW5nIGVsc2UsIGFuZCBmb3IgZmVkZXJhbGx5IG1hdGNoZWQgcHJvZ3JhbXMgaXQgY2FuIG1lYW4gZm9yZmVpdGluZyB0aGUgbWF0Y2ggZW50aXJlbHkuPC9saT4KICAgICAgPGxpPjxzdHJvbmc+U29tZSBvZiB0aGUgYmlnZ2VzdCBudW1iZXJzIGFyZSBmb3JtdWxhcywgbm90IGNob2ljZXMuPC9zdHJvbmc+IFB1YmxpYyBTY2hvb2wgU3VwcG9ydCBmdW5kcyBhIGNvbnN0aXR1dGlvbmFsIG9ibGlnYXRpb24gKElkYWhvIENvbnN0LiBBcnQuIElYLCBTZWMuIDEpIGxhcmdlbHkgdGhyb3VnaCBzdGF0dXRvcnkgcGVyLXB1cGlsIGZvcm11bGFzOyBNZWRpY2FpZCBlbnJvbGxtZW50IGlzIGZlZGVyYWxseSByZWd1bGF0ZWQgZWxpZ2liaWxpdHksIG5vdCBhIEpGQUMgZGlhbC4gSWRhaG8ncyBGWTIwMjcgcmVndWxhciBNZWRpY2FpZCBmZWRlcmFsIG1hdGNoIHJhdGUgKEZNQVApIGlzIDY3LjMxJSwgc28gYSBzdGF0ZSBHZW5lcmFsIEZ1bmQgY3V0IHRvIG1hdGNoZWQgc2VydmljZXMgZm9yZmVpdHMgcm91Z2hseSAkMi4wNiBpbiBmZWRlcmFsIG1vbmV5IGZvciBldmVyeSAkMSB0aGUgc3RhdGUgcHVsbHMgYmFjayDigJQgc2VlIHRoZSBNZWRpY2FpZCByb3cgZm9yIHRoZSBtYXRoLjwvbGk+CiAgICAgIDxsaT48c3Ryb25nPlRoZSBncm9jZXJ5LXRheCBmaWd1cmVzIGFyZSBlc3RpbWF0ZXMsIG5vdCBJZGFobyBUYXggQ29tbWlzc2lvbiBjb2xsZWN0aW9ucyBkYXRhLjwvc3Ryb25nPiBJZGFobyBkb2Vzbid0IHNlcGFyYXRlbHkgdHJhY2sgZ3JvY2VyeSBzYWxlcyB0YXgsIHNvIHRoZSBzdGF0ZSdzIG93biBmaXNjYWwgYW5hbHlzdHMgdXNlZCBVdGFoJ3MgZ3JvY2VyeS1zaGFyZS1vZi1zYWxlcyBkYXRhIGFzIGEgcHJveHkgZm9yIHRoZSAyMDI1IGJhbGxvdCBpbml0aWF0aXZlIOKAlCBzZWUgdGhlIGNpdGF0aW9uIG9uIHRoYXQgY2FyZC48L2xpPgogICAgICA8bGk+PHN0cm9uZz4iRW5kaW5nIEJhbGFuY2UiIG1hdGNoZXMgdGhlIExlZ2lzbGF0dXJlJ3Mgb3duIGRlZmluaXRpb24sIG5vdCBqdXN0IFJldmVudWUgbWludXMgQXBwcm9wcmlhdGlvbnMuPC9zdHJvbmc+IFRoZSBMRlIncyBHZW5lcmFsIEZ1bmQgQnVkZ2V0IFJlcG9ydCAocC4gMykgZGVmaW5lcyBpdCBhcyBOZXQgUmV2ZW51ZXMgbWludXMgQXBwcm9wcmlhdGlvbnMsIHdoZXJlIE5ldCBSZXZlbnVlcyBmb2xkcyBpbiBhICQ2Ny4zTSBjYXNoIGJhbGFuY2UgY2FycmllZCBvdmVyIGZyb20gRlkyMDI2IGFuZCAkNjMuNk0gaW4gZW5hY3RlZCBvbmUtdGltZSB0cmFuc2ZlcnMg4oCUIG1vc3RseSBhICQ1My43TSBzdGF0dXRvcnkgc3dlZXAgZnJvbSB0aGUgQnVkZ2V0IFN0YWJpbGl6YXRpb24gRnVuZCwgd2hpY2ggZXhjZWVkZWQgaXRzIDE1JS1vZi1HZW5lcmFsLUZ1bmQgY2FwLiBUaG9zZSB0d28gcGllY2VzIGFyZSBhbHJlYWR5LWxvY2tlZC1pbiwgb25lLXRpbWUgYW1vdW50cywgc28gdGhleSdyZSBoZWxkIGZpeGVkIGhlcmUgcmF0aGVyIHRoYW4gbW92aW5nIHdpdGggdGhlIHNsaWRlcnMg4oCUIGEgaHlwb3RoZXRpY2FsIGNoYW5nZSB0byB0aGlzIHllYXIncyB0YXggcmF0ZXMgb3IgYWdlbmN5IGJ1ZGdldHMgd291bGRuJ3QgcmV3cml0ZSBsYXN0IHllYXIncyBsZWZ0b3ZlciBjYXNoIG9yIGJpbGxzIGFscmVhZHkgc2lnbmVkIGludG8gbGF3LiBBdCBldmVyeSBzbGlkZXIgbGVmdCB1bnRvdWNoZWQsIHRoaXMgZGFzaGJvYXJkJ3MgRW5kaW5nIEJhbGFuY2UgZXF1YWxzIHRoZSBMZWdpc2xhdHVyZSdzIG93biBzdGF0ZWQgZmlndXJlIGV4YWN0bHk6ICQxNDgsNzY4LDMwMC48L2xpPgogICAgPC91bD4KICAgIDxwIGNsYXNzPSJzcmMiPlByaW1hcnkgc291cmNlOiBTdGF0ZSBvZiBJZGFobywgMjAyNiBMZWdpc2xhdGl2ZSBGaXNjYWwgUmVwb3J0IGZvciBGaXNjYWwgWWVhciAyMDI3LCBMZWdpc2xhdGl2ZSBTZXJ2aWNlcyBPZmZpY2UsIEJ1ZGdldCBhbmQgUG9saWN5IEFuYWx5c2lzIERpdmlzaW9uLiBHcm9jZXJ5IHRheCBmaWd1cmVzOiBJZGFobyBEaXZpc2lvbiBvZiBGaW5hbmNpYWwgTWFuYWdlbWVudCBmaXNjYWwgaW1wYWN0IHN0YXRlbWVudCwgMjAyNSBSZXBlYWwgSWRhaG8gR3JvY2VyeSBUYXggaW5pdGlhdGl2ZSwgYXMgcmVwb3J0ZWQgYnkgSWRhaG8gQ2FwaXRhbCBTdW4uPC9wPgogIDwvZGl2PgoKICA8Zm9vdGVyIGNsYXNzPSJjcmVkaXRzIj4KICAgIDxzcGFuPkdlbSBTdGF0ZSBDaHJvbmljbGUg4oCUIERhdGEgRGVzazwvc3Bhbj4KICAgIDxzcGFuPkJ1aWx0IGZyb20gdGhlIEZZMjAyNyBMZWdpc2xhdGl2ZSBGaXNjYWwgUmVwb3J0PC9zcGFuPgogIDwvZm9vdGVyPgoKPC9kaXY+ eyJtZXRhIjogeyJzb3VyY2UiOiAiMjAyNiBJZGFobyBMZWdpc2xhdGl2ZSBGaXNjYWwgUmVwb3J0IGZvciBGWTIwMjcsIExTTyBCdWRnZXQgJiBQb2xpY3kgQW5hbHlzaXMgRGl2aXNpb24iLCAiZmlzY2FsX3llYXIiOiAiRlkyMDI3IChKdWx5IDEsIDIwMjYgLSBKdW5lIDMwLCAyMDI3KSIsICJnZl9yZXZlbnVlX3RvdGFsX2Z5MjciOiA1NjM5NjcwMDAwLCAiZ2ZfYXBwcm9wcmlhdGlvbl90b3RhbF9meTI3IjogNTYyMTgzNzEwMCwgImFsbF9mdW5kc190b3RhbF9meTI3IjogMTQ0NDk3MjMyMDAsICJiZWdpbm5pbmdfYmFsYW5jZV9meTI3IjogNjcyOTQ3MDAsICJuZXRfdHJhbnNmZXJzX2Z5MjciOiA2MzY0MDcwMCwgImVuZGluZ19iYWxhbmNlX3JlY29uY2lsaWF0aW9uX25vdGUiOiAiVGhlIEZZMjAyNyBHZW5lcmFsIEZ1bmQgQnVkZ2V0IFJlcG9ydCAoTEZSIHAuMykgZGVmaW5lcyB0aGUgb2ZmaWNpYWwgRW5kaW5nIEJhbGFuY2UgYXMgTmV0IFJldmVudWVzIG1pbnVzIEFwcHJvcHJpYXRpb25zLCB3aGVyZSBOZXQgUmV2ZW51ZXMgPSB0YXggcmV2ZW51ZSArIGEgJDY3LDI5NCw3MDAgY2FzaCBiYWxhbmNlIGNhcnJpZWQgb3ZlciBmcm9tIEZZMjAyNiArICQ2Myw2NDAsNzAwIGluIG5ldCBvbmUtdGltZSB0cmFuc2ZlcnMgKGRvbWluYXRlZCBieSBhICQ1Myw2NzMsODAwIHN0YXR1dG9yeSBzd2VlcCBmcm9tIHRoZSBCdWRnZXQgU3RhYmlsaXphdGlvbiBGdW5kLCB3aGljaCBleGNlZWRlZCBpdHMgMTUlLW9mLUdlbmVyYWwtRnVuZCBzdGF0dXRvcnkgY2FwKS4gVGhpcyBkYXNoYm9hcmQncyBzbGlkZXJzIG9ubHkgYWRqdXN0IGN1cnJlbnQteWVhciB0YXggcmV2ZW51ZSBhbmQgYXBwcm9wcmlhdGlvbnMsIHNvIHRoZSBiZWdpbm5pbmcgYmFsYW5jZSBhbmQgb25lLXRpbWUgdHJhbnNmZXJzIGFyZSBoZWxkIGZpeGVkIGFzIGEgY29uc3RhbnQgYWRkaXRpb24gdG8gdGhlIEJhbGFuY2UgZmlndXJlIC0tIHRoZXkgd291bGQgbm90IGNoYW5nZSBiYXNlZCBvbiBhIGh5cG90aGV0aWNhbCBjaGFuZ2UgdG8gdGhpcyB5ZWFyJ3MgdGF4IHJhdGVzIG9yIGFnZW5jeSBidWRnZXRzLiJ9LCAicmV2ZW51ZV9sZXZlcnMiOiBbeyJpZCI6ICJpbmRpdmlkdWFsX2luY29tZV90YXgiLCAibGFiZWwiOiAiSW5kaXZpZHVhbCBJbmNvbWUgVGF4IiwgImJhc2VfYW1vdW50IjogMjQ2ODE0NTE3NSwgImJhc2VfcmF0ZSI6IDAuMDUzLCAidW5pdCI6ICJyYXRlIiwgIm1pbl9yYXRlIjogMC4wLCAibWF4X3JhdGUiOiAwLjA4LCAic3RlcCI6IDAuMDAxLCAibWVjaGFuaXNtIjogInN0YXRpY19saW5lYXIiLCAiY2l0YXRpb24iOiAiSWRhaG8gQ29kZSA2My0zMDI0OyByYXRlIGN1dCBmcm9tIDUuNjklIHRvIDUuMzAlIGVmZmVjdGl2ZSBKYW4uIDEsIDIwMjUiLCAibGVnYWxfY29uc3RyYWludCI6ICJyZXF1aXJlc19zdGF0dXRlIiwgIm5vdGUiOiAiQSByYXRlIGNoYW5nZSBuZWVkcyBhIGJpbGwgYW1lbmRpbmcgSWRhaG8gQ29kZSA2My0zMDI0IC0tIEpGQUMgY2Fubm90IGRvIHRoaXMgdGhyb3VnaCB0aGUgYXBwcm9wcmlhdGlvbnMgcHJvY2VzcyBhbG9uZS4ifSwgeyJpZCI6ICJjb3Jwb3JhdGVfaW5jb21lX3RheCIsICJsYWJlbCI6ICJDb3Jwb3JhdGUgSW5jb21lIFRheCIsICJiYXNlX2Ftb3VudCI6IDQ2OTcwNjIxNCwgImJhc2VfcmF0ZSI6IDAuMDUzLCAidW5pdCI6ICJyYXRlIiwgIm1pbl9yYXRlIjogMC4wLCAibWF4X3JhdGUiOiAwLjA4LCAic3RlcCI6IDAuMDAxLCAibWVjaGFuaXNtIjogInN0YXRpY19saW5lYXIiLCAiY2l0YXRpb24iOiAiSWRhaG8gQ29kZSA2My0zMDI1OyBtYXRjaGVzIHRoZSBpbmRpdmlkdWFsIGZsYXQgcmF0ZSIsICJsZWdhbF9jb25zdHJhaW50IjogInJlcXVpcmVzX3N0YXR1dGUiLCAibm90ZSI6ICJTYW1lIGZsYXQgcmF0ZSBhcyBpbmRpdmlkdWFsIGluY29tZSB0YXg7IGEgY2hhbmdlIG5lZWRzIGEgc3RhdHV0ZSBhbWVuZG1lbnQsIG5vdCBhIGJ1ZGdldCBiaWxsLiJ9LCB7ImlkIjogInNhbGVzX3RheCIsICJsYWJlbCI6ICJHZW5lcmFsIFNhbGVzIFRheCIsICJiYXNlX2Ftb3VudCI6IDI0MzAwNTUyNjMsICJiYXNlX3JhdGUiOiAwLjA2LCAidW5pdCI6ICJyYXRlIiwgIm1pbl9yYXRlIjogMC4wLCAibWF4X3JhdGUiOiAwLjA5LCAic3RlcCI6IDAuMDAxLCAibWVjaGFuaXNtIjogInN0YXRpY19saW5lYXIiLCAiY2l0YXRpb24iOiAiSWRhaG8gQ29kZSA2My0zNjE5OyBHZW5lcmFsIEZ1bmQgc2hhcmUgb25seSAtLSBhIHBvcnRpb24gb2YgZ3Jvc3MgNiUgc2FsZXMgdGF4IGNvbGxlY3Rpb25zIGlzIHN0YXR1dG9yaWx5IGRpc3RyaWJ1dGVkIHRvIGNpdGllcy9jb3VudGllcyByZXZlbnVlIHNoYXJpbmcgYW5kIG90aGVyIGRlZGljYXRlZCBmdW5kcyBiZWZvcmUgcmVhY2hpbmcgdGhlIEdlbmVyYWwgRnVuZCwgc28gdGhpcyBiYXNlIGlzIHNtYWxsZXIgdGhhbiBncm9zcyBzdGF0ZXdpZGUgc2FsZXMgdGF4IGNvbGxlY3Rpb25zICh+JDMuN0IpLiIsICJsZWdhbF9jb25zdHJhaW50IjogInJlcXVpcmVzX3N0YXR1dGUiLCAibm90ZSI6ICJUaGlzIGZpZ3VyZSBpcyB0aGUgcG9ydGlvbiB0aGF0IHJlYWNoZXMgdGhlIEdlbmVyYWwgRnVuZCwgbm90IGdyb3NzIHN0YXRld2lkZSBjb2xsZWN0aW9ucy4ifSwgeyJpZCI6ICJncm9jZXJ5X2V4ZW1wdGlvbiIsICJsYWJlbCI6ICJFeGVtcHQgZ3JvY2VyaWVzIGZyb20gc2FsZXMgdGF4IiwgInR5cGUiOiAidG9nZ2xlIiwgImJhc2VfYW1vdW50IjogMCwgImNvc3RfaWZfZW5hYmxlZCI6IC00NDc1MDAwMDAsICJjb3N0X3JhbmdlIjogWy00ODUwMDAwMDAsIC00MTAwMDAwMDBdLCAibWVjaGFuaXNtIjogInN0YXRpY190b2dnbGUiLCAiY2l0YXRpb24iOiAiSWRhaG8gRGl2aXNpb24gb2YgRmluYW5jaWFsIE1hbmFnZW1lbnQgZmlzY2FsIGltcGFjdCBzdGF0ZW1lbnQsIDIwMjUgUmVwZWFsIElkYWhvIEdyb2NlcnkgVGF4IGJhbGxvdCBpbml0aWF0aXZlIChJZGFobyBDYXBpdGFsIFN1biwgQXVnLiAyMDI1KSIsICJsZWdhbF9jb25zdHJhaW50IjogInJlcXVpcmVzX3N0YXR1dGVfb3JfaW5pdGlhdGl2ZSIsICJub3RlIjogIkRGTSB1c2VkIFV0YWgncyBncm9jZXJ5LXNoYXJlLW9mLXJldGFpbC1zYWxlcyBkYXRhICgxMS0xMyUpIGFzIGEgcHJveHkgc2luY2UgSWRhaG8gZG9lcyBub3QgaW5kZXBlbmRlbnRseSB0cmFjayBncm9jZXJ5IHNhbGVzIHRheCBjb2xsZWN0aW9ucyAtLSB0aGlzIGlzIGEgcmFuZ2UgZXN0aW1hdGUsIG5vdCBhIHByZWNpc2UgZmlndXJlLiBUaGlzIGlzIHRoZSBncm9zcyBzYWxlcy10YXgtb25seSBjb3N0OyBpdCBkb2VzIE5PVCBpbmNsdWRlIGVsaW1pbmF0aW5nIHRoZSBmb29kIHRheCBjcmVkaXQgKHNlZSBuZXh0IGxldmVyKSAtLSB0aG9zZSBhcmUgdHdvIHNlcGFyYXRlIHBvbGljaWVzLiBUaGlzIGVzdGltYXRlIHNjYWxlcyB3aXRoIHRoZSBzYWxlcyB0YXggcmF0ZSBzbGlkZXIgYWJvdmUgLS0gaXQgYXNzdW1lcyB0aGUgZW5hY3RlZCA2JSByYXRlLCBzbyBkcm9wcGluZyB0aGF0IHJhdGUgbG93ZXJzIHRoaXMgZmlndXJlIHByb3BvcnRpb25hbGx5LCBhbmQgYSAwJSBzYWxlcyB0YXggbWFrZXMgdGhpcyB0b2dnbGUgd29ydGggJDAgKG5vIHRheCBsZWZ0IHRvIGV4ZW1wdCBncm9jZXJpZXMgZnJvbSkuIn0sIHsiaWQiOiAiZm9vZF90YXhfY3JlZGl0IiwgImxhYmVsIjogIkZvb2QgVGF4IENyZWRpdCAocGVyIHBlcnNvbiwgcGVyIHllYXIpIiwgImJhc2VfYW1vdW50IjogMTU1LCAidG90YWxfcHJvZ3JhbV9jb3N0IjogLTIzMjUwMDAwMCwgImNvc3RfcmFuZ2UiOiBbLTI1NTAwMDAwMCwgLTIxMDAwMDAwMF0sICJ1bml0IjogImRvbGxhcnNfcGVyX3BlcnNvbiIsICJtaW5fdmFsIjogMCwgIm1heF92YWwiOiAzMDAsICJzdGVwIjogNSwgIm1lY2hhbmlzbSI6ICJzdGF0aWNfbGluZWFyIiwgImNpdGF0aW9uIjogIklkYWhvIENvZGUgNjMtMzAyNEE7IGNyZWRpdCByYWlzZWQgZnJvbSAkMTIwIHRvICQxNTUgdmlhIEhCMjMxICgyMDI1KTsgdG90YWwgcHJvZ3JhbSBjb3N0IHBlciBERk0gZmlzY2FsIGltcGFjdCBhbmFseXNpcywgMjAyNSIsICJsZWdhbF9jb25zdHJhaW50IjogInJlcXVpcmVzX3N0YXR1dGUiLCAibm90ZSI6ICJUaGlzIGNyZWRpdCBpcyB3aGF0IGFjdHVhbGx5IG9mZnNldHMgdGhlIGdyb2Nlcnkgc2FsZXMgdGF4IGZvciBJZGFobyByZXNpZGVudHMgdG9kYXkuIFplcm9pbmcgaXQgb3V0IGlzIGEgRElGRkVSRU5UIHBvbGljeSB0aGFuIGV4ZW1wdGluZyBncm9jZXJpZXMgYXQgdGhlIHJlZ2lzdGVyIChwcmV2aW91cyBsZXZlcikgLS0gZWxpbWluYXRpbmcgdGhlIGNyZWRpdCByYWlzZXMgcmV2ZW51ZTsgZXhlbXB0aW5nIGdyb2NlcmllcyBhdCBjaGVja291dCBsb3NlcyByZXZlbnVlLiBUaGUgMjAyNSBiYWxsb3QgaW5pdGlhdGl2ZSBidW5kbGVkIGJvdGggY2hhbmdlcyB0b2dldGhlciBmb3IgYSBuZXQgY29zdCBvZiAkMjAwLTIzME0veWVhci4ifV0sICJyZXZlbnVlX3JlZmVyZW5jZSI6IHsicHJvZHVjdF90YXhlcyI6IDY2ODE0MjQ1LCAibWlzY19yZXZlbnVlIjogMjA0OTQ5MTAzLCAiYmVnaW5uaW5nX2JhbGFuY2UiOiA2NzI5NDcwMH0sICJyZXNlcnZlcyI6IHsiYnVkZ2V0X3N0YWJpbGl6YXRpb25fZnVuZF9iYWxhbmNlIjogODgwMTg4ODI1LCAiY2FwX25vdGUiOiAiQmFsYW5jZSBpcyBzdGF0dXRvcmlseSBjYXBwZWQgYXQgMTUlIG9mIHRoZSBHZW5lcmFsIEZ1bmQgZm9yIHRoZSBlbmRpbmcgZmlzY2FsIHllYXIgKFNlY3Rpb24gNTctODE0LCBJZGFobyBDb2RlKS4gSWYgRlkyMDI3IHJldmVudWUgcHJvamVjdGlvbnMgaG9sZCBuZWFyICQ1LjUxLTUuNjRCLCB0aGUgMTUlIGNhcCBpcyByb3VnaGx5ICQ4MjUtODQ2TSAtLSBhbnkgc3VycGx1cyBhYm92ZSB0aGUgY2FwIG5vcm1hbGx5IHN3ZWVwcyB0byB0aGUgR2VuZXJhbCBGdW5kIGF1dG9tYXRpY2FsbHkgdW5sZXNzIHRoZSBMZWdpc2xhdHVyZSBhY3RzIHRvIHJlZGlyZWN0IGl0LCB3aGljaCBoYXBwZW5lZCBpbiB0aGUgMjAyNiBzZXNzaW9uLiIsICJtYWpvcl9yZXNlcnZlc190b3RhbF9meTI3IjogMTIzMTQyMTAwMCwgIm1ham9yX3Jlc2VydmVzX3BjdF9vZl9nZiI6IDAuMjE4fSwgInNwZW5kaW5nX2xldmVycyI6IFt7ImFyZWEiOiAiRWR1Y2F0aW9uIiwgImFnZW5jeSI6ICJQdWJsaWMgU2Nob29sIFN1cHBvcnQiLCAiZnRwIjogMC4wLCAiZ2YiOiAyNzUwMzc5NzAwLCAiZGVkIjogMTA1NDExNDAwLCAiZmVkIjogMjY4NDQ3ODAwLCAidG90YWwiOiAzMTI0MjM4OTAwLCAiZmVkX3NoYXJlIjogMC4wODU5LCAiZGVkX3NoYXJlIjogMC4wMzM3LCAiYW1lbmRzX2NvZGUiOiB0cnVlLCAiYmlsbHMiOiBbIlMxMzYyIiwgIlMxNDM4IiwgIlMxNDQ0Il0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiVGVhY2hlcnMiLCAidGV4dCI6ICJUaGlzIGRpdmlzaW9uIHByb3ZpZGVzIHN0YXRlIGFuZCBmZWRlcmFsIGZ1bmRpbmcgdG8gc3VwcG9ydCB0aGUgaW5zdHJ1Y3Rpb25hbCBzZXJ2aWNlcyBpbiBJZGFobydzIGxvY2FsIHNjaG9vbFxuZGlzdHJpY3RzIGFuZCBwdWJsaWMgY2hhcnRlciBzY2hvb2xzLiBGdW5kcyBhcmUgcHJpbWFyaWx5IGV4cGVuZGVkIGZvciBzYWxhcmllcyBhbmQgZW1wbG95ZXItcGFpZCBiZW5lZml0cyAoUEVSU0kgYW5kIEZJQ0EpIn0sIHsic3ViX3Byb2dyYW0iOiAiU3R1ZGVudCBTdXBwb3J0IiwgInRleHQiOiAiVGhpcyBwcm9ncmFtIHByb3ZpZGVzIHN0YXRlIGZ1bmRpbmcgdG8gc3VwcG9ydCB0aGUgYWRtaW5pc3RyYXRpb24gb2YgSWRhaG8ncyBsb2NhbCBzY2hvb2wgZGlzdHJpY3RzIGFuZCBwdWJsaWNcbmNoYXJ0ZXIgc2Nob29scy4gRnVuZGluZyBpcyB1c2VkIGZvciBwZXJzb25uZWwgY29zdHMgYW5kIHRoZSBlbXBsb3llci1wYWlkIGJlbmVmaXRzIChQRVJTSSBhbmQgRklDQSkgZm9yIGRpc3RyaWN0IGFuZCBzY2hvb2wgYWRtaW5pc3RyYXRvcnMsXG53aGljaCBpbmNsdWRlIHN1cGVyaW50ZW5kZW50cywgYXNzaXN0YW50IHN1cGVyaW50ZW5kZW50cywgcHJpbmNpcGFscywgYXNzaXN0YW50IHByaW5jaXBhbHMsIHN1cGVydmlzb3JzLCBhbmQgY29vcmRpbmF0b3JzLiBUaGlzIHByb2dyYW0gd2FzXG5tb3ZlZCBpbnRvIHRoZSBuZXcgU3R1ZGVudCBTdXBwb3J0IERpdmlzaW9uIGluIEg3NjMgb2YgMjAyNDsgcHJpb3IgdG8gdGhhdCwgaXQgd2FzIGEgc3RhbmRhbG9uZSBkaXZpc2lvbiJ9LCB7InN1Yl9wcm9ncmFtIjogIlN0dWRlbnQgU3VwcG9ydCIsICJ0ZXh0IjogIlRoaXMgcHJvZ3JhbSBwcm92aWRlcyBzdGF0ZSBmdW5kaW5nIHRvIHN1cHBvcnQgdGhlIG9wZXJhdGlvbnMgb2YgSWRhaG8ncyBsb2NhbCBzY2hvb2wgZGlzdHJpY3RzIGFuZCBwdWJsaWMgY2hhcnRlclxuc2Nob29scy4gRnVuZHMgYXJlIHVzZWQgZm9yIHNhbGFyaWVzIGFuZCBlbXBsb3llci1wYWlkIGJlbmVmaXRzIChQRVJTSSwgYW5kIEZJQ0EpIGZvciBhIHdpZGUgcmFuZ2Ugb2Ygam9iIGR1dGllcyBzdWNoIGFzIGJ1c2luZXNzXG5tYW5hZ2Vycywgb2ZmaWNlIHN1cHBvcnQsIGNvbXB1dGVyIHRlY2huaWNpYW5zLCBncm91bmRza2VlcGluZywgYW5kIG1haW50ZW5hbmNlIChjbGFzc2lmaWVkIHN0YWZmKS4gVGhpcyBwcm9ncmFtIGFsc28gaW5jbHVkZXMgZnVuZGluZyBmb3JcbnB1cGlsIHRyYW5zcG9ydGF0aW9uLCB0ZWNobm9sb2d5LCBoZWFsdGggaW5zdXJhbmNlIGZ1bmRzLCBhbmQgZGlzY3JldGlvbmFyeSBmdW5kcyB3aGljaCBjYW4gYmUgdXNlZCBmb3IgYW55IGVkdWNhdGlvbmFsIHN1cHBvcnQgc2VydmljZXMgb3JcbmdlbmVyYWwgb3BlcmF0aW9ucy4gVGhpcyBwcm9ncmFtIHdhcyBtb3ZlZCBpbnRvIHRoZSBuZXcgU3R1ZGVudCBTdXBwb3J0IERpdmkifSwgeyJzdWJfcHJvZ3JhbSI6ICJTdHVkZW50IFN1cHBvcnQiLCAidGV4dCI6ICJDaGlsZHJlbidzIFByb2dyYW1zIGluY2x1ZGVzIHByb2dyYW1zIHRoYXQgcHJvdmlkZSBkaXJlY3QgZWR1Y2F0aW9uYWwgb3IgbWF0ZXJpYWwgYmVuZWZpdHMgdG8gY2hpbGRyZW4sIHdoZXJlXG5mdW5kaW5nIGRvZXMgbm90IHByaW1hcmlseSBnbyB0byBwYXlpbmcgY2VydGlmaWNhdGVkIHRlYWNoZXJzIGFuZCBhZG1pbmlzdHJhdG9ycy4gSXQgYWxzbyBpbmNsdWRlcyBwcm9ncmFtcyB0aGF0IHByb3ZpZGUgZnVuZGluZyBmb3IgdGhlXG5zZXBhcmF0ZSBpbnN0cnVjdGlvbiBvZiBpZGVudGlmaWVkIHN1Ymdyb3VwcyBvZiBjaGlsZHJlbiBvdXRzaWRlIHRoZSBub3JtYWwgY2xhc3Nyb29tIG9mIGFuIElkYWhvIHB1YmxpYyBzY2hvb2wuIFRoaXMgcHJvZ3JhbSB3YXMgbW92ZWQgaW50b1xudGhlIG5ldyBTdHVkZW50IFN1cHBvcnQgRGl2aXNpb24gaW4gSDc2MyBvZiAyMDI0OyBwcmlvciB0byB0aGF0IGl0IHdhcyBhIHN0YW5kYWxvbmUgZGl2aXNpb24ifSwgeyJzdWJfcHJvZ3JhbSI6ICJGYWNpbGl0aWVzIiwgInRleHQiOiAiVGhlIERpdmlzaW9uIG9mIEZhY2lsaXRpZXMgaW5jbHVkZXMgbW9uZXlzIGZyb20gdGhlIEdlbmVyYWwgRnVuZCBmb3IgdGhlIENoYXJ0ZXIgU2Nob29sIEZhY2lsaXRpZXMgUHJvZ3JhbS5cblRoaXMgZGl2aXNpb24gYWxzbyBzdXBwb3J0cyB0aGUgYXBwcm9wcmlhdGVkIGZ1bmRpbmcsIGluY2x1ZGluZyBsb3R0ZXJ5IGRpc3RyaWJ1dGlvbnMsIGZvciB0aGUgU2Nob29sIEZhY2lsaXRpZXMgRnVuZCBlc3RhYmxpc2hlZCBpbiBIMjkyIG9mIDIwMjNcbmFuZCBtb2RpZmllZCBpbiBINTIxIG9mIDIwMjQuIFByaW9yIHRvIEZZIDIwMjUsIHRoaXMgZGl2aXNpb24gaW5jbHVkZWQgYXBwcm9wcmlhdGlvbnMgZm9yIHRoZSBCb25kIExldnkgRXF1YWxpemF0aW9uIFByb2dyYW0gYW5kIHRoZSBTY2hvb2xcbkRpc3RyaWN0IEZhY2lsaXRpZXMgTWFpbnRlbmFuY2UgTWF0Y2ggUHJvZ3JhbTsgdGhlc2UgcHJvZ3JhbXMgZW5kZWQgd2l0aCBwYXNzYWdlIG9mIEg1MjEgb2YgMjAyNCJ9LCB7InN1Yl9wcm9ncmFtIjogIkNlbnRyYWwgU2VydmljZXMiLCAidGV4dCI6ICJUaGUgRGl2aXNpb24gb2YgQ2VudHJhbCBTZXJ2aWNlcyBpbmNsdWRlcyB0aG9zZSBwcm9ncmFtcyBhbmQgZnVuZHMgdGhhdCBhcmUgc3BlbnQgYXQgdGhlIHN0YXRlIGxldmVsIGJ5IHRoZVxuRGVwYXJ0bWVudCBvZiBFZHVjYXRpb24gZm9yIHRoZSBiZW5lZml0IG9mIGFsbCBzY2hvb2wgZGlzdHJpY3RzIGFuZCBjaGFydGVyIHNjaG9vbHMuIEZ1bmRzIGFyZSBwcmltYXJpbHkgdXNlZCB0byBjb250cmFjdCBmb3Igc2VydmljZXMgYW5kIGZvclxucHJvZ3JhbSBvdmVyc2lnaHQgYW5kIGV2YWx1YXRpb24ifV19LCB7ImFyZWEiOiAiRWR1Y2F0aW9uIiwgImFnZW5jeSI6ICJBZ3JpY3VsdHVyYWwgUmVzZWFyY2ggJiBFeHRlbnNpb24gU2VydmljZSIsICJmdHAiOiAzMDcuNzcsICJnZiI6IDM4NjYzMzAwLCAiZGVkIjogMCwgImZlZCI6IDAsICJ0b3RhbCI6IDM4NjYzMzAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMC4wLCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJIODc2Il0sICJub3RlcyI6IFt7InR5cGUiOiAiQlVER0VUIExBVyBFWEVNUFRJT05TIiwgInRleHQiOiAiVGhpcyBhZ2VuY3kgcmVjZWl2ZWQgc3BlY2lmaWMgbGVnaXNsYXRpdmUgYXV0aG9yaXphdGlvbiBpbiBIODc2IHRoYXQgcmVtb3ZlZCBhbGwgcmVzdHJpY3Rpb25zIGxpbWl0aW5nIHRoZVxudHJhbnNmZXIgb2YgbW9uZXlzIGJldHdlZW4gcGVyc29ubmVsIGNvc3RzLCBvcGVyYXRpbmcgZXhwZW5kaXR1cmVzLCBjYXBpdGFsIG91dGxheSwgYW5kIHRydXN0ZWUgYW5kIGJlbmVmaXQgcGF5bWVudHMifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJPdXRyZWFjaCBQcm9ncmFtcyIsICJ0ZXh0IjogIkFncmljdWx0dXJhbCBSZXNlYXJjaCBhbmQgQ29vcGVyYXRpdmUgRXh0ZW5zaW9uIFNlcnZpY2UgKEFSRVMpIHNjaWVudGlzdHMgY29uZHVjdCByZXNlYXJjaCBvbiB0aGUgVW5pdmVyc2l0eVxub2YgSWRhaG8gY2FtcHVzIGFuZCBhdCB0aGlydGVlbiByZXNlYXJjaCBhbmQgZXh0ZW5zaW9uIGNlbnRlcnMgYWNyb3NzIHRoZSBzdGF0ZSB0byBlbnN1cmUgdGhhdCBJZGFobyBhZ3JpY3VsdHVyZSByZW1haW5zIHByb2R1Y3RpdmUgYW5kXG5wcm9maXRhYmxlLiBSZXN1bHRzIG9mIHRoYXQgcmVzZWFyY2gsIGFzIHdlbGwgYXMgZmFtaWx5IGFuZCBjb25zdW1lciBzZXJ2aWNlcywgYXJlIHRoZW4gZGVsaXZlcmVkIHRvIHRoZSBhZ3JpY3VsdHVyYWwgY29tbXVuaXR5IGFuZCBjaXRpemVucyBvZlxuSWRhaG8gdGhyb3VnaCBleHRlbnNpb24gb2ZmaWNlcyBsb2NhdGVkIGluIDQyIG9mIElkYWhvJ3MgNDQgY291bnRpZXMuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDMzLTI5MDgsIElkYWhvIENvZGUsIGV0IHNlcS5dIn1dfSwgeyJhcmVhIjogIkVkdWNhdGlvbiIsICJhZ2VuY3kiOiAiQ29sbGVnZSBhbmQgVW5pdmVyc2l0aWVzIiwgImZ0cCI6IDQ4NjQuOTQsICJnZiI6IDM3NTA4MDEwMCwgImRlZCI6IDM3MDU2OTQwMCwgImZlZCI6IDAsICJ0b3RhbCI6IDc0NTY0OTUwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuNDk3LCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJIODc2IiwgIkg5MjIiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlNlY3Rpb24gOCBvZiBIODc2IGF1dGhvcml6ZWQgdGhlIGNvbGxlZ2UgYW5kIHVuaXZlcnNpdGllcywgYXQgdGhlIGRpc2NyZXRpb24gb2YgdGhlXG5pbnN0aXR1dGlvbmFsIHByZXNpZGVudHMsIHRvIGVtcGxveSBhIHZvbHVudGFyeSBzZXBhcmF0aW9uIGluY2VudGl2ZSBwbGFuIGFzIHBhcnQgb2YgdGhlaXIgb3ZlcmFsbCBmaW5hbmNpYWwgYW5kIGJ1ZGdldCBzdHJhdGVneSJ9LCB7InR5cGUiOiAiQlVER0VUIExBVyBFWEVNUFRJT05TIiwgInRleHQiOiAiVGhpcyBhZ2VuY3kgcmVjZWl2ZWQgc3BlY2lmaWMgbGVnaXNsYXRpdmUgYXV0aG9yaXphdGlvbiBpbiBIODc2IHRoYXQgcmVtb3ZlZCBhbGwgcmVzdHJpY3Rpb25zIGxpbWl0aW5nIHRoZVxudHJhbnNmZXIgb2YgbW9uZXlzIGJldHdlZW4gcGVyc29ubmVsIGNvc3RzLCBvcGVyYXRpbmcgZXhwZW5kaXR1cmVzLCBjYXBpdGFsIG91dGxheSwgYW5kIHRydXN0ZWUgYW5kIGJlbmVmaXQgcGF5bWVudHMifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJCb2lzZSBTdGF0ZSBVbml2ZXJzaXR5IiwgInRleHQiOiAiQm9pc2UgU3RhdGUgVW5pdmVyc2l0eSAoQlNVKSBpcyBhIGNvbXByZWhlbnNpdmUsIHVyYmFuIHVuaXZlcnNpdHkgZm9jdXNlZCBvbiBjdWx0aXZhdGluZyB0aGUgcGVyc29uYWwgYW5kXG5jYXJlZXIgZ3Jvd3RoIG9mIHN0dWRlbnRzIHRocm91Z2ggZWR1Y2F0aW9uIGFuZCByZXNlYXJjaC4gSXRzIGFjYWRlbWljIGNvbGxlZ2VzIG9mZmVyIGFuIGFycmF5IG9mIGRlZ3JlZSBwcm9ncmFtcyBpbiBidXNpbmVzcyxcbmVuZ2luZWVyaW5nLCBoZWFsdGhjYXJlLCBlZHVjYXRpb24gYW5kIHB1YmxpYyBzZXJ2aWNlIn0sIHsic3ViX3Byb2dyYW0iOiAiSWRhaG8gU3RhdGUgVW5pdmVyc2l0eSIsICJ0ZXh0IjogIklkYWhvIFN0YXRlIFVuaXZlcnNpdHksIGxvY2F0ZWQgaW4gUG9jYXRlbGxvLCBpcyBhIGRvY3RvcmFsIHVuaXZlcnNpdHkgc2VydmluZyBhIGRpdmVyc2UgcG9wdWxhdGlvbiB0aHJvdWdoXG5yZXNlYXJjaCwgc3RhdGUgYW5kIHJlZ2lvbmFsIHB1YmxpYyBzZXJ2aWNlLCBhbmQgdW5kZXJncmFkdWF0ZSBhbmQgZ3JhZHVhdGUgcHJvZ3JhbXMuIFRoZSB1bml2ZXJzaXR5IGFsc28gaGFzIHNwZWNpZmljIHJlc3BvbnNpYmlsaXRpZXMgZm9yXG5kZWxpdmVyaW5nIHByb2dyYW1zIGluIHRoZSBoZWFsdGggcHJvZmVzc2lvbnMgd2l0aCBhbiBlbXBoYXNpcyBpbiB0aGUgYmlvbG9naWNhbCBzY2llbmNlcy4gSWRhaG8gU3RhdGUgVW5pdmVyc2l0eSBhbHNvIGVtcGhhc2l6ZXMgYnVzaW5lc3MsXG5lZHVjYXRpb24gYW5kIHRlYWNoZXIgcHJlcGFyYXRpb24sIGVuZ2luZWVyaW5nLCB0ZWNobmljYWwgdHJhaW5pbmcsIGxpYmVyYWwgYXJ0cywgYW5kIHNjaWVuY2VzIn0sIHsic3ViX3Byb2dyYW0iOiAiTGV3aXMtQ2xhcmsgU3RhdGUgQ29sbGVnZSIsICJ0ZXh0IjogIkxld2lzLUNsYXJrIFN0YXRlIENvbGxlZ2UsIGxvY2F0ZWQgaW4gTGV3aXN0b24sIGlzIGEgcmVnaW9uYWwgc3RhdGUgY29sbGVnZSBvZmZlcmluZyB1bmRlcmdyYWR1YXRlIGluc3RydWN0aW9uIGluXG5hcnRzIGFuZCBzY2llbmNlcywgcHJvZmVzc2lvbmFsIGFyZWFzIHRhaWxvcmVkIHRvIHRoZSBlZHVjYXRpb25hbCBuZWVkcyBvZiBJZGFobywgYXBwbGllZCB0ZWNobmljYWwgcHJvZ3JhbXMgYW5kIG5pY2hlIGdyYWR1YXRlIHByb2dyYW1zXG4oZS5nLiwgbnVyc2luZyBsZWFkZXJzaGlwKSB3aGljaCBzdXBwb3J0IHRoZSBzdGF0ZSBhbmQgbG9jYWwgZWNvbm9teS4gVGhlIGNvbGxlZ2UgZW1waGFzaXplcyBidXNpbmVzcywgY3JpbWluYWwganVzdGljZSwgbnVyc2luZywgc29jaWFsIHdvcmssXG50ZWFjaGVyIHByZXBhcmF0aW9uLCBhbmQgY2FyZWVyIHRlY2huaWNhbCBlZHVjYXRpb24uIFRoZSBjb2xsZWdlIGFsc28gcHJvdmlkZXMgc2VsZWN0IHByb2dyYW1zIG9mZmVyZWQgb24gYW5kIG9mZiBjYW1wdXMgYXQgbm9uLXRyYWRpdGlvbmFsXG50aW1lcywgdXNpbmcgbm9uLXRyYWRpdGlvbmFsIG1lYW5zIG9mIGRlbGl2ZXJ5In0sIHsic3ViX3Byb2dyYW0iOiAiVW5pdmVyc2l0eSBvZiBJZGFobyIsICJ0ZXh0IjogIlRoZSBVbml2ZXJzaXR5IG9mIElkYWhvLCBsb2NhdGVkIGluIE1vc2NvdywgaXMgYSBsYW5kLWdyYW50IGluc3RpdHV0aW9uIGNvbW1pdHRlZCB0byB1bmRlcmdyYWR1YXRlIGFuZCBncmFkdWF0ZVxucmVzZWFyY2ggZWR1Y2F0aW9uIHdpdGggZXh0ZW5zaW9uIHNlcnZpY2VzIHJlc3BvbnNpdmUgdG8gSWRhaG8gYW5kIHRoZSByZWdpb24ncyBidXNpbmVzcyBhbmQgY29tbXVuaXR5IG5lZWRzLiBUaGUgdW5pdmVyc2l0eSBpcyBhbHNvXG5yZXNwb25zaWJsZSBmb3IgcmVnaW9uYWwgbWVkaWNhbCBhbmQgdmV0ZXJpbmFyeSBlZHVjYXRpb24gcHJvZ3JhbXMgaW4gd2hpY2ggdGhlIHN0YXRlIG9mIElkYWhvIHBhcnRpY2lwYXRlcy4gVGhlIFVuaXZlcnNpdHkgb2YgSWRhaG9cbmVtcGhhc2l6ZXMgYWdyaWN1bHR1cmUsIG5hdHVyYWwgcmVzb3VyY2VzLCBtZXRhbGx1cmd5LCBlbmdpbmVlcmluZywgYXJjaGl0ZWN0dXJlLCBsYXcsIGZvcmVpZ24gbGFuZ3VhZ2VzLCB0ZWFjaGVyIHByZXBhcmF0aW9uLCBhbmRcbmludGVybmF0aW9uYWwgcHJvZ3JhbXMifSwgeyJzdWJfcHJvZ3JhbSI6ICJTeXN0ZW13aWRlIFByb2dyYW1zIiwgInRleHQiOiAiRnVuZGluZyBmb3IgU3lzdGVtd2lkZSBQcm9ncmFtcyBpcyBpbmNsdWRlZCBpbiB0aGUgQ29sbGVnZSBhbmQgVW5pdmVyc2l0aWVzIGFwcHJvcHJpYXRpb24gYW5kIGlzIGVpdGhlclxuZGlzdHJpYnV0ZWQgdG8gdGhlIGluc3RpdHV0aW9ucyBieSB0aGUgT2ZmaWNlIG9mIHRoZSBTdGF0ZSBCb2FyZCBvZiBFZHVjYXRpb24gb3IgZXhwZW5kZWQgZm9yIHByb2plY3RzIG9yIHNlcnZpY2VzIHRoYXQgYmVuZWZpdCBhbGwgaW5zdGl0dXRpb25zIn1dfSwgeyJhcmVhIjogIkVkdWNhdGlvbiIsICJhZ2VuY3kiOiAiQ29tbXVuaXR5IENvbGxlZ2VzIiwgImZ0cCI6IDAuMCwgImdmIjogNjczNjkzMDAsICJkZWQiOiA4MDAwMDAsICJmZWQiOiAwLCAidG90YWwiOiA2ODE2OTMwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuMDExNywgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiSDg3NiIsICJIOTA2Il0sICJub3RlcyI6IFt7InR5cGUiOiAiQlVER0VUIExBVyBFWEVNUFRJT05TIiwgInRleHQiOiAiVGhpcyBhZ2VuY3kgcmVjZWl2ZWQgc3BlY2lmaWMgbGVnaXNsYXRpdmUgYXV0aG9yaXphdGlvbiBpbiBIODc2IHRoYXQgcmVtb3ZlZCBhbGwgcmVzdHJpY3Rpb25zIGxpbWl0aW5nIHRoZVxudHJhbnNmZXIgb2YgbW9uZXlzIGJldHdlZW4gcGVyc29ubmVsIGNvc3RzLCBvcGVyYXRpbmcgZXhwZW5kaXR1cmVzLCBjYXBpdGFsIG91dGxheSwgYW5kIHRydXN0ZWUgYW5kIGJlbmVmaXQgcGF5bWVudHMifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJDb2xsZWdlIG9mIEVhc3Rlcm4gSWRhaG8iLCAidGV4dCI6ICJUaGUgQ29sbGVnZSBvZiBFYXN0ZXJuIElkYWhvLCBsb2NhdGVkIGluIElkYWhvIEZhbGxzLCBpcyBhIGNvbXByZWhlbnNpdmUgY29tbXVuaXR5IGNvbGxlZ2UgdGhhdCBwcm92aWRlc1xuYWNjZXNzIHRvIGFmZm9yZGFibGUsIHF1YWxpdHkgZWR1Y2F0aW9uIHRoYXQgbWVldHMgdGhlIG5lZWRzIG9mIHN0dWRlbnRzLCByZWdpb25hbCBlbXBsb3llcnMsIGFuZCB0aGUgY29tbXVuaXR5LiBUaGUgaW5zdGl0dXRpb24sIHByZXZpb3VzbHlcbmtub3duIGFzIEVhc3Rlcm4gSWRhaG8gVGVjaG5pY2FsIENvbGxlZ2UsIHJlY2VpdmVkIHN1cHBvcnQgZnJvbSBCb25uZXZpbGxlIENvdW50eSB2b3RlcnMgaW4gMjAxNyB0byBiZWNvbWUgSWRhaG8ncyBmb3VydGggY29tbXVuaXR5XG5jb2xsZWdlLiBGdW5kaW5nIGZvciB0aGUgY29sbGVnZSBjb21lcyBmcm9tIGEgdmFyaWV0eSBvZiBzb3VyY2VzLCBpbmNsdWRpbmcgdGhlIHN0YXRlIEdlbmVyYWwgRnVuZCwgcHJvcGVydHkgdGF4ZXMgZnJvbSB0aGUgdGF4aW5nIGRpc3RyaWN0XG4oQm9ubmV2aWxsZSBDb3VudHkpLCBjb3VudHkgdHVpdGlvbiwgdHVpdGlvbiBhbmQgZmVlcywgYW5kIHN0YXRlIGxpcXVvciBmdW5kcyJ9LCB7InN1Yl9wcm9ncmFtIjogIkNvbGxlZ2Ugb2YgU291dGhlcm4gSWRhaG8iLCAidGV4dCI6ICJUaGUgQ29sbGVnZSBvZiBTb3V0aGVybiBJZGFobywgbG9jYXRlZCBpbiBUd2luIEZhbGxzLCBpcyBhIGNvbXByZWhlbnNpdmUgY29tbXVuaXR5IGNvbGxlZ2UgdGhhdCBwcm92aWRlc1xuZWR1Y2F0aW9uYWwsIHNvY2lhbCwgY3VsdHVyYWwsIGVjb25vbWljLCBhbmQgd29ya2ZvcmNlIGRldmVsb3BtZW50IG9wcG9ydHVuaXRpZXMuIFRoZSBjb2xsZWdlIGhhcyBvZmYtY2FtcHVzIGNlbnRlcnMgaW4gQnVybGV5LCBHb29kaW5nLFxuYW5kIEplcm9tZS4gSW4gMTk2MyB0aGUgSWRhaG8gTGVnaXNsYXR1cmUgcGFzc2VkIHRoZSBKdW5pb3IgQ29sbGVnZSBBY3QsIHdoaWNoIHByb3ZpZGVkIGZvciB0aGUgZXN0YWJsaXNobWVudCBvZiBqdW5pb3IgY29sbGVnZSBkaXN0cmljdHNcbihDaGFwdGVyIDIxLCBUaXRsZSAzMywgSWRhaG8gQ29kZSkuIFR3aW4gRmFsbHMgQ291bnR5IHZvdGVkIHRvIGZvcm0gYSBqdW5pb3IgY29sbGVnZSBkaXN0cmljdCBpbiBOb3ZlbWJlciAxOTY0LiBUaGUgZm9sbG93aW5nIHllYXIsIEplcm9tZVxuQ291bnR5IGNpdGl6ZW5zIHZvdGVkIHRvIGpvaW4gdGhlIGp1bmlvciBjb2xsZWdlIGRpc3RyaWN0LiBGdW5kaW5nIGZvciB0aGUgY29sbGVnIn0sIHsic3ViX3Byb2dyYW0iOiAiQ29sbGVnZSBvZiBXZXN0ZXJuIElkYWhvIiwgInRleHQiOiAiVGhlIENvbGxlZ2Ugb2YgV2VzdGVybiBJZGFobyBjdXJyZW50bHkgb2ZmZXJzIG92ZXIgOTAgQWNhZGVtaWMgVHJhbnNmZXIgYW5kIGNhcmVlci10ZWNobmljYWwgcHJvZ3JhbXMgbGVhZGluZ1xudG8gYW4gQXNzb2NpYXRlIG9mIEFydHMgb3IgU2NpZW5jZSBkZWdyZWUsIGFuIEFzc29jaWF0ZSBvZiBBcHBsaWVkIFNjaWVuY2UgZGVncmVlLCBvciBhIGNlcnRpZmljYXRlLiBDV0kgd2lsbCBiZWdpbiBvZmZlcmluZyBhbiBBcHBsaWVkXG5CYWNoZWxvciBvZiBTY2llbmNlIGRlZ3JlZSBpbiB0aGUgRmFsbCBvZiAyMDI1LiBDV0kgYWxzbyBkZWxpdmVycyBCYXNpYyBTa2lsbHMgRWR1Y2F0aW9uIHRvIGhlbHAgcHJlcGFyZSBmb3IgYSBHRUQsIER1YWwgQ3JlZGl0IHByb2dyYW1zIGZvclxuaGlnaCBzY2hvb2wgc3R1ZGVudHMsIGFuZCBoYXMgbW9yZSB0aGFuIDIwIGZhc3QtdHJhY2ssIG5vbmNyZWRpdCBjYXJlZXIgdHJhaW5pbmcgcHJvZ3JhbXMgZm9yIHdvcmtpbmcgcHJvZmVzc2lvbmFscy4gVGhlIHRheGluZyBkaXN0cmljdCBmb3JcbkNXSSB3YXMgY3JlYXRlZCBpbiBNYXkgMjAwNyB3aGVuIHZvdGVycyBpbiBBZGEgQ291bnR5IGFuZCBDYW55b24gQ291bnR5ICJ9LCB7InN1Yl9wcm9ncmFtIjogIk5vcnRoIElkYWhvIENvbGxlZ2UiLCAidGV4dCI6ICJOb3J0aCBJZGFobyBDb2xsZWdlIChOSUMpIGlzIGEgY29tcHJlaGVuc2l2ZSBjb21tdW5pdHkgY29sbGVnZSBlc3RhYmxpc2hlZCBpbiAxOTMzIG9uIHRoZSBzaG9yZXMgb2YgTGFrZVxuQ29ldXIgZCdBbGVuZS4gTklDIGN1cnJlbnRseSBzZXJ2ZXMgNiwwMDArIHN0dWRlbnRzIGVucm9sbGVkIGluIGNyZWRpdCBjb3Vyc2VzIGFuZCBtb3JlIHRoYW4gNCw1MDAgc3R1ZGVudHMgdGFraW5nIG5vbi1jcmVkaXQgY291cnNlcy4gTklDXG5vZmZlcnMgbW9yZSB0aGFuIDgwIGFjYWRlbWljIGRlZ3JlZSBhbmQgY2FyZWVyIGFuZCB0ZWNobmljYWwgZWR1Y2F0aW9uIGNlcnRpZmljYXRlIHByb2dyYW1zLiBUaGVzZSBjYXJlZXIgcGF0aHdheXMgY292ZXIgdmFyaW91cyBpbnRlcmVzdFxuYXJlYXMsIGluY2x1ZGluZyBhcnRzLCBjb21tdW5pY2F0aW9ucyBhbmQgaHVtYW5pdGllczsgaGVhbHRoY2FyZTsgc2NpZW5jZSwgdGVjaG5vbG9neSwgZW5naW5lZXJpbmcgYW5kIG1hdGg7IGJ1c2luZXNzIGFkbWluaXN0cmF0aW9uIGFuZFxubWFuYWdlbWVudDsgbWFudWZhY3R1cmluZyBhbmQgdHJhZGVzOyBhbmQgc29jaWFsIHNjaWVuY2VzIGFuZCBodW1hbiBzZXJ2aWNlcy4gVGhlIn0sIHsic3ViX3Byb2dyYW0iOiAiQ0MgU3lzdGVtd2lkZSIsICJ0ZXh0IjogIkZ1bmRpbmcgZm9yIFN5c3RlbXdpZGUgUHJvZ3JhbXMgaXMgaW5jbHVkZWQgaW4gdGhlIENvbW11bml0eSBDb2xsZWdlcyBhcHByb3ByaWF0aW9uIGFuZCBpcyBleHBlbmRlZCBmb3JcbnByb2plY3RzIG9yIHNlcnZpY2VzIHRoYXQgYmVuZWZpdCBhbGwgaW5zdGl0dXRpb25zIn1dfSwgeyJhcmVhIjogIkVkdWNhdGlvbiIsICJhZ2VuY3kiOiAiT2ZmaWNlIG9mIHRoZSBTdGF0ZSBCb2FyZCBvZiBFZHVjYXRpb24iLCAiZnRwIjogODAuNDIsICJnZiI6IDE3MjUwODAwLCAiZGVkIjogODY0NDcwMCwgImZlZCI6IDQwMDAwMDAsICJ0b3RhbCI6IDI5ODk1NTAwLCAiZmVkX3NoYXJlIjogMC4xMzM4LCAiZGVkX3NoYXJlIjogMC4yODkyLCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJIODc2IiwgIkg5MjEiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJPU0JFIEFkbWluaXN0cmF0aW9uIiwgInRleHQiOiAiVGhlIE9mZmljZSBvZiB0aGUgU3RhdGUgQm9hcmQgb2YgRWR1Y2F0aW9uIChPU0JFKSBwcm92aWRlcyBwcm9mZXNzaW9uYWwgc3RhZmYgc3VwcG9ydCB0byB0aGUgZWlnaHQtbWVtYmVyIFN0YXRlXG5Cb2FyZCBvZiBFZHVjYXRpb24gaW4gZmlzY2FsLCBhY2FkZW1pYywgbGVnYWwsIHBvbGljeSwgYW5kIHBlcnNvbm5lbCBhcmVhcy4gVGhlIFN0YXRlIEJvYXJkIG9mIEVkdWNhdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGdlbmVyYWxcbnN1cGVydmlzaW9uLCBnb3Zlcm5hbmNlLCBhbmQgY29udHJvbCBvZiBJZGFobydzIHB1YmxpYyBlZHVjYXRpb24gc3lzdGVtIGZyb20ga2luZGVyZ2FydGVuIHRocm91Z2ggdGhlIGRvY3RvcmFsIGxldmVsLiBbQXV0aG9yaXR5OiBJZGFob1xuQ29uc3RpdHV0aW9uLCBBcnRpY2xlIElYLCBTZWN0aW9uIDIsIGFuZCBTZWN0aW9uIDMzLTEwMSwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJJVCBhbmQgRGF0YSBNYW5hZ2VtZW50IiwgInRleHQiOiAiVGhlIElUIGFuZCBEYXRhIE1hbmFnZW1lbnQgUHJvZ3JhbSB3YXMgY3JlYXRlZCBpbiB0aGUgMjAyMCBsZWdpc2xhdGl2ZSBzZXNzaW9uIGZvciBGWSAyMDIxIHRvIGNlbnRyYWxpemVcbnN0YXRlIGVkdWNhdGlvbiBJVCBhbmQgZGF0YSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgT2ZmaWNlIG9mIHRoZSBTdGF0ZSBCb2FyZCBvZiBFZHVjYXRpb24uIFRoZSBTdGF0ZSBCb2FyZCBvZiBFZHVjYXRpb24gaXMgcmVzcG9uc2libGUgZm9yXG5wdWJsaXNoaW5nIGEgcHVibGljIGludmVudG9yeSBhbmQgZGljdGlvbmFyeSBvciBpbmRleCBvZiBkYXRhIGVsZW1lbnRzIChwdXJzdWFudCB0byBTZWN0aW9uIDMzLTEzMygzKShhKSwgSWRhaG8gQ29kZSk7IGRldmVsb3BpbmcgYSBkZXRhaWxlZFxuZGF0YSBzZWN1cml0eSBwbGFuIChwdXJzdWFudCB0byBTZWN0aW9uIDMzLTEzMygzKShkKSwgSWRhaG8gQ29kZSk7IGFuZCBkZXZlbG9waW5nIG1vZGVsIHBvbGljaWVzIGZvciBzY2hvb2wgZGlzdHJpY3RzIGFuZCBwdWJsaWMgY2hhcnRlclxuc2Nob29scyB0aGF0IGdvdmVybiBkYXRhIGNvbGxlY3Rpb24sIGFjY2Vzcywgc2VjdXJpdHksIGFuZCB1c2Ugb2Ygc3R1ZGVudCBkYXRhICJ9LCB7InN1Yl9wcm9ncmFtIjogIlNjaG9vbCBTYWZldHkgYW5kIFNlY3VyaXR5IFByb2dyYW0iLCAidGV4dCI6ICJUaGUgU2Nob29sIFNhZmV0eSBhbmQgU2VjdXJpdHkgUHJvZ3JhbSB3YXMgY3JlYXRlZCBieSB0aGUgTGVnaXNsYXR1cmUgaW4gMjAxNiB0byBzdXBwb3J0IHRoZSBlZmZvcnRzIG9mIElkYWhvXG5wdWJsaWMgc2Nob29scyBhcyB0aGV5IHdvcmsgdG8gY3JlYXRlIHNhZmVyIGxlYXJuaW5nIGVudmlyb25tZW50cy4gUHVyc3VhbnQgdG8gQ2hhcHRlciA1OSwgSWRhaG8gQ29kZSwgdGhlIG9mZmljZSB3b3JrcyB3aXRoaW4gYSB0cmllbm5pYWxcbnNjaGVkdWxlIHRvIHBlcmZvcm0gY29tcHJlaGVuc2l2ZSB0aHJlYXQgYW5kIHZ1bG5lcmFiaWxpdHkgYXNzZXNzbWVudHMgb24gZXZlcnkgc2Nob29sIGNhbXB1cy4gSW4gYWRkaXRpb24gdG8gYXNzZXNzbWVudCBzZXJ2aWNlcywgdGhlXG5vZmZpY2UgYWxzbyBwcm92aWRlcyB0cmFpbmluZywgc3VwcG9ydCwgYW5kIHNlcnZlcyBhcyBhIGNvbXByZWhlbnNpdmUgcmVwb3NpdG9yeSBvZiBlZmZlY3RpdmUgcHJhY3RpY2VzLiBQcmlvciB0byBiZWluZyBob3VzZWQgd2l0aGluIHRoZSBPZmZpY2Vcbm9mIHRoZSBTdGF0ZSBCb2FyZCBvZiBFZHVjYXRpb24sIHRoZSBTY2hvb2wgU2FmZXR5IGFuZCBTZWN1cml0eSBQcm9ncmFtIn1dfSwgeyJhcmVhIjogIkVkdWNhdGlvbiIsICJhZ2VuY3kiOiAiSGVhbHRoIEVkdWNhdGlvbiBQcm9ncmFtcyIsICJmdHAiOiA0OC40NiwgImdmIjogMjk4MDA5MDAsICJkZWQiOiA0MjIwMDAsICJmZWQiOiAwLCAidG90YWwiOiAzMDIyMjkwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuMDE0LCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJIODc2IiwgIkg5MjAiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlNlY3Rpb24gMyBvZiBIOTIwIGRpcmVjdHMgdGhhdCBmdW5kcyBmcm9tIHRoZSBSdXJhbCBIZWFsdGggVHJhbnNmb3JtYXRpb24gUHJvZ3JhbVxuKFJIVFApIGJlIHVzZWQgdG8gZnVuZCB0aGUgYWRkaXRpb25hbCBGWSAyMDI3IHJlc2lkZW5jaWVzIGFuZCBmZWxsb3dzaGlwLCBpZiBSSFRQIGZ1bmRzIGJlY29tZSBhdmFpbGFibGUgZm9yIHRoaXMgcHVycG9zZSJ9LCB7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJTZWN0aW9uIDMgb2YgSDkyMCBkaXJlY3RlZCB0aGF0IGZ1bmRzIGZyb20gdGhlIFJ1cmFsIEhlYWx0aCBUcmFuc2Zvcm1hdGlvbiBQcm9ncmFtXG4oUkhUUCkgYmUgdXNlZCB0byBmdW5kIHRoZSBhZGRpdGlvbmFsIEZZIDIwMjcgcmVzaWRlbmNpZXMgYW5kIGZlbGxvd3NoaXAsIGlmIFJIVFAgZnVuZHMgYmVjb21lIGF2YWlsYWJsZSBmb3IgdGhpcyBwdXJwb3NlIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiQm9pc2UgSW50ZXJuYWwgTWVkaWNpbmUiLCAidGV4dCI6ICJUaGUgQm9pc2UgSW50ZXJuYWwgTWVkaWNpbmUgKEJJTSkgUmVzaWRlbmN5IFByb2dyYW0gcHJvdmlkZXMgaW50ZXJuYWwgbWVkaWNpbmUgcmVzaWRlbmN5IHRyYWluaW5nIGF0IHJ1cmFsIGFuZFxudW5kZXJzZXJ2ZWQgc2l0ZXMgaW4gSWRhaG8uIFRoaXMgcHJvZ3JhbSBpcyBhIHBhcnRuZXJzaGlwIHdpdGggdGhlIGZlZGVyYWwgRGVwYXJ0bWVudCBvZiBWZXRlcmFucyBBZmZhaXJzLCBTdC4gQWxwaG9uc3VzIFJlZ2lvbmFsIEhlYWx0aFxuQ2FyZSBTeXN0ZW0sIFN0LiBMdWtlJ3MgUmVnaW9uYWwgSGVhbHRoIENhcmUgU3lzdGVtLCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24gTWVkaWNhbCBDZW50ZXIsIGFuZCBIYXJib3J2aWV3IE1lZGljYWwgQ2VudGVyLiBUaGlzXG5wcm9ncmFtIHN1cHBvcnRzIDM1IHJlc2lkZW50cyBzcGVjaWFsaXppbmcgaW4gaW50ZXJuYWwgbWVkaWNpbmUifSwgeyJzdWJfcHJvZ3JhbSI6ICJFYXN0ZXJuIElkYWhvIE1lZCBSZXNpZGVuY2llcyIsICJ0ZXh0IjogIkluIEZZIDIwMTksIHRoZSBMZWdpc2xhdHVyZSBmdW5kZWQgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHN0YXRlLWZ1bmRlZCBtZWRpY2FsIHJlc2lkZW5jeSBwcm9ncmFtIGF0IHRoZSBFYXN0ZXJuXG5JZGFobyBSZWdpb25hbCBNZWRpY2FsIENlbnRlciAoRUlNUikgaW4gSWRhaG8gRmFsbHMuIEVJTVIgcmVjZWl2ZWQgaXRzIGluc3RpdHV0aW9uYWwgYWNjcmVkaXRhdGlvbiBmcm9tIHRoZSBBY2NyZWRpdGF0aW9uIENvdW5jaWwgZm9yXG5HcmFkdWF0ZSBNZWRpY2FsIEVkdWNhdGlvbiAoQUNHTUUpIGluIE1heSBvZiAyMDE3LiBUaGUgcmVzaWRlbmN5IHByb2dyYW1zIGFyZSB0aHJlZSB5ZWFycyBpbiBsZW5ndGgsIGFsbG93aW5nIGVhY2ggY29ob3J0IHRvIGluY2x1ZGVcbmFwcHJveGltYXRlbHkgMTUgcmVzaWRlbnRzIn0sIHsic3ViX3Byb2dyYW0iOiAiRmFtaWx5IE1lZGljaW5lIFJlc2lkZW5jaWVzIiwgInRleHQiOiAiSWRhaG8ncyB0aHJlZSBGYW1pbHkgTWVkaWNpbmUgUmVzaWRlbmN5IHByb2dyYW1zICh0aGUgRmFtaWx5IE1lZGljaW5lIFJlc2lkZW5jeSBvZiBJZGFobyBpbiBCb2lzZSwgdGhlIElkYWhvXG5TdGF0ZSBVbml2ZXJzaXR5IEZhbWlseSBNZWRpY2luZSBSZXNpZGVuY3kgaW4gUG9jYXRlbGxvLCBhbmQgdGhlIEtvb3RlbmFpIEhlYWx0aCBGYW1pbHkgTWVkaWNpbmUgUmVzaWRlbmN5IGluIENvZXVyIGQnQWxlbmUpIGRlbGl2ZXIgdGhlXG5maW5hbCB0aHJlZSB5ZWFycyBvZiBmb3JtYWwgZmFtaWx5IHBoeXNpY2lhbiB0cmFpbmluZyB0byBuZXdseSBncmFkdWF0ZWQgbWVkaWNhbCBkb2N0b3JzLiBUaGUgZ29hbCBpcyB0byBwcm9kdWNlIGZhbWlseSBkb2N0b3JzIHRvIHByYWN0aWNlIGluXG5JZGFobydzIHVuZGVyc2VydmVkIHJ1cmFsIGFyZWFzIn0sIHsic3ViX3Byb2dyYW0iOiAiSWRhaG8gRGVudGFsIEVkdWNhdGlvbiBQcm9ncmFtIiwgInRleHQiOiAiVGhlIElkYWhvIERlbnRhbCBFZHVjYXRpb24gUHJvZ3JhbSAoSURFUCkgcHJvdmlkZXMgYWNjZXNzIHRvIHBvc3RncmFkdWF0ZSBkZW50YWwgZWR1Y2F0aW9uIGZvciBJZGFob1xuc3R1ZGVudHMgYW5udWFsbHkgdGhyb3VnaCBhIGNvb3BlcmF0aXZlIHByb2dyYW0gYXQgSWRhaG8gU3RhdGUgVW5pdmVyc2l0eSBhbmQgQ3JlaWdodG9uIFVuaXZlcnNpdHkgaW4gT21haGEsIE5lYnJhc2thIn0sIHsic3ViX3Byb2dyYW0iOiAiUHN5Y2hpYXRyeSBFZHVjYXRpb24iLCAidGV4dCI6ICJUaGUgUHN5Y2hpYXRyeSBFZHVjYXRpb24gUHJvZ3JhbSBwcm92aWRlcyByZXNpZGVuY3kgb3Bwb3J0dW5pdGllcyBmb3IgbWVkaWNhbCByZXNpZGVudHMgaW4gdGhlIGZpZWxkIG9mXG5wc3ljaGlhdHJ5LiBUaGUgcHJvZ3JhbSBpcyBhIGNvbGxhYm9yYXRpb24gd2l0aCB0aGUgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uIFNjaG9vbCBvZiBNZWRpY2luZSwgVmV0ZXJhbnMgQWRtaW5pc3RyYXRpb24sIFN0LiBBbHBob25zdXNcblJlZ2lvbmFsIEhlYWx0aCBDYXJlIFN5c3RlbSwgYW5kIFN0LiBMdWtlJ3MgUmVnaW9uYWwgSGVhbHRoIENhcmUgU3lzdGVtLiBSZXNpZGVudHMgc3BlbmQgdGhlIGZpcnN0IHR3byB5ZWFycyBpbiBTZWF0dGxlIChVbml2ZXJzaXR5IG9mXG5XYXNoaW5ndG9uKSBhbmQgdGhlIGxhc3QgdHdvIHllYXJzIGluIEJvaXNlLiBCb2lzZS1iYXNlZCB0cmFpbmluZyBpbmNsdWRlcyBvdXRwYXRpZW50IHBzeWNoaWF0cnksIGNvbnN1bHRhdGlvbiBsaWFpc29uIHBzeWNoaWF0cnksIGFuZCBwcmltYXJ5XG5jYXJlIGNvbnN1bHRhdGlvbiByb3RhdGlvbnMuIENsaW5pY2FsIHJvdGF0aW9ucyBtYXkgYmUgY29tcGxldGVkIGF0IHRoZSBCb2lzZSBWQSBoIn0sIHsic3ViX3Byb2dyYW0iOiAiVW5pdmVyc2l0eSBvZiBVdGFoIE1lZGljYWwgRWR1Y2F0aW9uIiwgInRleHQiOiAiVGhlIFVuaXZlcnNpdHkgb2YgVXRhaCBNZWRpY2FsIFNjaG9vbCBQcm9ncmFtIHByb3ZpZGVzIGFjY2VzcyB0byBwb3N0Z3JhZHVhdGUgbWVkaWNhbCBlZHVjYXRpb24gZm9yIElkYWhvXG5zdHVkZW50cyBhbm51YWxseSB0aHJvdWdoIGEgY29vcGVyYXRpdmUgcHJvZ3JhbSBhdCB0aGUgVW5pdmVyc2l0eSBvZiBVdGFoLiBGaXNjYWwgeWVhciAyMDIwIHNhdyB0aGUgY29tcGxldGlvbiBvZiB0aGUgbGF0ZXN0IGJ1aWxkLW91dCBvZlxuc2VhdHMgZm9yIHRoZSBtZWRpY2FsIHByb2dyYW0uIEJlZ2lubmluZyBpbiBmaXNjYWwgeWVhciAyMDIwLCB0aGUgYXBwcm9wcmlhdGlvbiBpbmNsdWRlZCBzdXBwb3J0IGZvciBwc3ljaGlhdHJpYyByZXNpZGVuY3kgcG9zaXRpb25zIGluXG5jb2xsYWJvcmF0aW9uIHdpdGggSWRhaG8gU3RhdGUgVW5pdmVyc2l0eSJ9LCB7InN1Yl9wcm9ncmFtIjogIldJTVUgVmV0ZXJpbmFyeSBFZHVjYXRpb24iLCAidGV4dCI6ICJUaGUgV0lNVSAoV2FzaGluZ3Rvbi1JZGFoby1Nb250YW5hLVV0YWgpIFZldGVyaW5hcnkgRWR1Y2F0aW9uIFByb2dyYW0gcHJvdmlkZXMgSWRhaG8gc3R1ZGVudHMgd2l0aFxuYWNjZXNzIHRvIHZldGVyaW5hcnkgbWVkaWNhbCBlZHVjYXRpb24gdGhyb3VnaCBhIGNvb3BlcmF0aXZlIGFncmVlbWVudCBiZXR3ZWVuIHRoZSBVbml2ZXJzaXR5IG9mIElkYWhvLCBNb250YW5hIFN0YXRlIFVuaXZlcnNpdHksIFV0YWhcblN0YXRlIFVuaXZlcnNpdHksIGFuZCBXYXNoaW5ndG9uIFN0YXRlIFVuaXZlcnNpdHkgU2Nob29sIG9mIFZldGVyaW5hcnkgTWVkaWNpbmUifSwgeyJzdWJfcHJvZ3JhbSI6ICJXSU1VIFZldGVyaW5hcnkgRWR1Y2F0aW9uIiwgInRleHQiOiAiVGhlIFdXQU1JIChXYXNoaW5ndG9uLVd5b21pbmctQWxhc2thLU1vbnRhbmEtSWRhaG8pIE1lZGljYWwgRWR1Y2F0aW9uIFByb2dyYW0gcHJvdmlkZXMgYWNjZXNzIHRvXG5wb3N0Z3JhZHVhdGUgbWVkaWNhbCBlZHVjYXRpb24gZm9yIElkYWhvIHN0dWRlbnRzIGFubnVhbGx5IHRocm91Z2ggYSBjb29wZXJhdGl2ZSBwcm9ncmFtIGF0IHRoZSBVbml2ZXJzaXR5IG9mIElkYWhvIHdpdGggdGhlIFVuaXZlcnNpdHkgb2Zcbldhc2hpbmd0b24ifV19LCB7ImFyZWEiOiAiRWR1Y2F0aW9uIiwgImFnZW5jeSI6ICJDYXJlZXIgVGVjaG5pY2FsIEVkdWNhdGlvbiIsICJmdHAiOiA1NjcuMTQsICJnZiI6IDg4ODk4MTAwLCAiZGVkIjogNzQzMDEwMCwgImZlZCI6IDEyMjU3NzAwLCAidG90YWwiOiAxMDg1ODU5MDAsICJmZWRfc2hhcmUiOiAwLjExMjksICJkZWRfc2hhcmUiOiAwLjA2ODQsICJhbWVuZHNfY29kZSI6IGZhbHNlLCAiYmlsbHMiOiBbIkg4NzYiLCAiSDkwNyJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkJVREdFVCBMQVcgRVhFTVBUSU9OUyIsICJ0ZXh0IjogIlRoaXMgYWdlbmN5IHJlY2VpdmVkIHNwZWNpZmljIGxlZ2lzbGF0aXZlIGF1dGhvcml6YXRpb24gaW4gSDg3NiB0aGF0IHJlbW92ZWQgYWxsIHJlc3RyaWN0aW9ucyBsaW1pdGluZyB0aGVcbnRyYW5zZmVyIG9mIG1vbmV5cyBiZXR3ZWVuIHBlcnNvbm5lbCBjb3N0cywgb3BlcmF0aW5nIGV4cGVuZGl0dXJlcywgY2FwaXRhbCBvdXRsYXksIGFuZCB0cnVzdGVlIGFuZCBiZW5lZml0IHBheW1lbnRzIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiQ1RFIEFkbWluaXN0cmF0aW9uIiwgInRleHQiOiAiVGhlIENURSBBZG1pbmlzdHJhdGlvbiBQcm9ncmFtIGluY2x1ZGVzIGNlbnRyYWwgc3RhZmYgdG8gcHJvdmlkZSBsZWFkZXJzaGlwLCBhZG1pbmlzdHJhdGl2ZSBhbmQgdGVjaG5pY2FsXG5hc3Npc3RhbmNlLCBvdmVyc2lnaHQsIGFuZCBhY2NvdW50YWJpbGl0eSB0byB0aGUgc3RhdGV3aWRlIGVkdWNhdGlvbmFsIHN5c3RlbSB0aGF0IHByb3ZpZGVzIGNhcmVlciB0ZWNobmljYWwgcHJvZ3JhbXMgYXQgdGhlIHN0YXRlJ3Mgc2Vjb25kYXJ5XG5zY2hvb2xzIChncmFkZXMgNy0xMiksIHRlY2huaWNhbCBjb2xsZWdlcywgYWR1bHQgZWR1Y2F0aW9uIHByb2dyYW1zLCBhbmQgd29ya2ZvcmNlIHRyYWluaW5nIGNlbnRlcnMuIFRoaXMgc3lzdGVtIHByZXBhcmVzIElkYWhvJ3MgeW91dGggYW5kXG5hZHVsdHMgZm9yIGhpZ2gtc2tpbGwsIGluLWRlbWFuZCBjYXJlZXJzLCBpbmNsdWRpbmcgb25lLXllYXIgYW5kIHR3by15ZWFyIGNyZWRlbnRpYWxzIGFuZCBpbmR1c3RyeSBjZXJ0aWZpY2F0aW9ucywgYXMgd2VsbCBhcyBmb3IgZnVydGhlclxuZWR1Y2F0aW9uYWwgYXR0YWlubWVudCBhbmQgcmV0cmFpbmluZy4gVGhpcyBidWRnZXRlZCBwcm9ncmFtIHdhcyBwcmV2aW91cyJ9LCB7InN1Yl9wcm9ncmFtIjogIlNlY29uZGFyeSBhbmQgR2VuZXJhbCBQcm9ncmFtcyIsICJ0ZXh0IjogIlNlY29uZGFyeSBhbmQgR2VuZXJhbCBQcm9ncmFtcyBwcm92aWRlIHNlY29uZGFyeSBzdHVkZW50cyB3aXRoIGNhcmVlciBhbmQgdGVjaG5pY2FsIHByb2dyYW1zIGFuZCBwcm92aWRlXG5sZWFybmVycyB3aXRoIHRoZSBza2lsbHMgbmVjZXNzYXJ5IHRvIG1haW50YWluIGFuZC9vciBhZHZhbmNlIGluIHRoZWlyIGNob3NlbiBvY2N1cGF0aW9uIG9yIHRvIHRyYW5zaXRpb24gaW50byBjYXJlZXIgdGVjaG5pY2FsIHBvc3RzZWNvbmRhcnlcbnByb2dyYW1zIGF0IHRoZSB0ZWNobmljYWwgY29sbGVnZXMuIFRoZXNlIHByb2dyYW1zIGluY2x1ZGUgcmVzb3VyY2VzIHRvIGFkdmFuY2Ugc3R1ZGVudCBsZWFkZXJzaGlwIG9wcG9ydHVuaXRpZXMgdGhyb3VnaCB0aGUgYXBwbGljYWJsZVxuY2FyZWVyIHRlY2huaWNhbCBzdHVkZW50IG9yZ2FuaXphdGlvbi4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gMzMtMjIwMSwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJQb3N0c2Vjb25kYXJ5IFByb2dyYW1zIiwgInRleHQiOiAiUG9zdHNlY29uZGFyeSBQcm9ncmFtcyBwcm92aWRlcyBjb2xsZWdlIHN0dWRlbnRzIHdpdGggb3Bwb3J0dW5pdGllcyB0byBvYnRhaW4gdHdvLXllYXIgZGVncmVlcyBhbmQgc2hvcnRlclxudGVybSBjZXJ0aWZpY2F0aW9ucyBuZWVkZWQgZm9yIGVtcGxveW1lbnQgaW4gc2tpbGxlZCBhbmQgdGVjaG5pY2FsIG9jY3VwYXRpb25zIHRoYXQgcmVxdWlyZSBsZXNzIHRoYW4gYSBiYWNjYWxhdXJlYXRlIGRlZ3JlZS4gSXQgYWxzbyBwcm92aWRlc1xucGVyc29ucyBhbHJlYWR5IGluIHRoZSB3b3JrZm9yY2Ugd2l0aCB0aGUgc2tpbGxzIG5lY2Vzc2FyeSB0byBtYWludGFpbiBvciBhZHZhbmNlIGluIHRoZWlyIGNob3NlbiBvY2N1cGF0aW9uLiBUaGUgYXBwcm9wcmlhdGlvbiBmb3IgdGhpc1xucHJvZ3JhbSBpcyBpbnRlbmRlZCB0byBmdW5kIDEwMCUgb2YgdGhlIGRpcmVjdCBjb3N0cyBhdCBJZGFobydzIHNpeCB0ZWNobmljYWwgY29sbGVnZXMuIFRob3NlIGNvbGxlZ2VzIGFyZSBsb2NhdGVkIHdpdGhpbiBJZGFobyBTdGF0ZVxuVW5pdmVyc2l0eSwgTGV3aXMtQ2xhcmsgU3RhdGUgQ29sbGVnZSwgQ29sbGVnZSBvZiBTb3V0aGVybiBJZGFobywgQ29sbGVnZSBvZiBXZSJ9LCB7InN1Yl9wcm9ncmFtIjogIkVkdWNhdG9yIFNlcnZpY2VzIFByb2dyYW0iLCAidGV4dCI6ICJUaGUgRWR1Y2F0b3IgU2VydmljZXMgUHJvZ3JhbSBpbmNsdWRlcyBhcHByb3ByaWF0aW9ucyB0YXJnZXRlZCB0b3dhcmQgaW5zdHJ1Y3RvciBwcmVwYXJhdGlvbiwgcmV0ZW50aW9uLCBhbmRcbnJlY3J1aXRtZW50LiBUaGUgbWFqb3JpdHkgb2YgQ1RFIGNlcnRpZmllZCBpbnN0cnVjdGlvbmFsIHN0YWZmIGNvbWUgZGlyZWN0bHkgZnJvbSBpbmR1c3RyeS4gVGhpcyBwcm9ncmFtIHByb3ZpZGVzIHRoZSByZXNvdXJjZXMgZm9yIHRyYWluaW5nIGFuZFxubWVudG9yaW5nIHRvIGhlbHAgcHJlcGFyZSB0aGVzZSBzdWJqZWN0IG1hdHRlciBleHBlcnRzIGZvciB0aGUgY2xhc3Nyb29tIGFuZCB0aGVuIHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkgbWVudG9yaW5nIGFuZCBzdXBwb3J0IHRvIHJldGFpblxudGhlbS4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gMzMtMjIwMSwgSWRhaG8gQ29kZSwgZXQgc2VxLiBhbmQgU2VjdGlvbiAzOS01MDAxLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9LCB7InN1Yl9wcm9ncmFtIjogIlJlbGF0ZWQgUHJvZ3JhbXMiLCAidGV4dCI6ICJSZWxhdGVkIFByb2dyYW1zIGFkbWluaXN0ZXJzIEFkdWx0IEJhc2ljIEVkdWNhdGlvbiAoQUJFKSBhbmQgR2VuZXJhbCBFZHVjYXRpb25hbCBEZXZlbG9wbWVudCAoR0VEKS5cbltBdXRob3JpdHk6IFNlY3Rpb24gMzMtMjQwMSwgSWRhaG8gQ29kZSwgZXQgc2VxLiBhbmQgRXhlY3V0aXZlIE9yZGVyIE5vLiAyMDA3LTA0XSJ9XX0sIHsiYXJlYSI6ICJFZHVjYXRpb24iLCAiYWdlbmN5IjogIklkYWhvIFB1YmxpYyBUZWxldmlzaW9uIiwgImZ0cCI6IDE1LjAsICJnZiI6IDI5NzIwMDAsICJkZWQiOiAxMDA3MDAwLCAiZmVkIjogMCwgInRvdGFsIjogMzk3OTAwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuMjUzMSwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiSDg3NiJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkJVREdFVCBMQVcgRVhFTVBUSU9OUyIsICJ0ZXh0IjogIklkYWhvIFB1YmxpYyBUZWxldmlzaW9uIChJUFRWKSByZWNlaXZlZCBzcGVjaWZpYyBsZWdpc2xhdGl2ZSBhdXRob3JpemF0aW9uIGluIEg4NzYgdGhhdCBwcm92aWRlZCBhIGNvbnRpbnVvdXNcbmFwcHJvcHJpYXRpb24gZm9yIHRoZSBhZ2VuY3kncyBmdW5kaW5nIGFuZCBGVFAgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZWRpY2F0ZWQgTWlzY2VsbGFuZW91cyBSZXZlbnVlIEZ1bmQuIFRoaXMgZXhlbXB0aW9uIHJlcXVpcmVzXG5sZWdpc2xhdGl2ZSBhcHByb3ZhbCBlYWNoIHllYXIifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJSZWxhdGVkIFByb2dyYW1zIiwgInRleHQiOiAiVW5kZXIgdGhlIGdlbmVyYWwgc3VwZXJ2aXNpb24gb2YgdGhlIFN0YXRlIEJvYXJkIG9mIEVkdWNhdGlvbiwgSWRhaG8gUHVibGljIFRlbGV2aXNpb24gcHJvdmlkZXMgZWR1Y2F0aW9uYWwgYW5kXG5pbnN0cnVjdGlvbmFsIHRlbGV2aXNpb24gcHJvZ3JhbXMgZHVyaW5nIGFuZCBhZnRlciBzY2hvb2wgaG91cnMsIHRlbGVjb21tdW5pY2F0aW9ucyBzZXJ2aWNlcywgYW5kIFwicHJpbWUgdGltZVwiIHByb2dyYW1zLiBJZGFobyBQdWJsaWNcblRlbGV2aXNpb24ncyBzdGF0ZXdpZGUgc3lzdGVtIHJlYWNoZXMgYXBwcm94aW1hdGVseSA5OCUgb2YgdGhlIHN0YXRlJ3MgcG9wdWxhdGlvbiB2aWEgNDcgdHJhbnNsYXRvcnMgZGlzdHJpYnV0ZWQgYWNyb3NzIHRoZSBzdGF0ZSBhbmQgZml2ZVxudHJhbnNtaXR0ZXJzIGxvY2F0ZWQgbmVhciBDb2V1ciBkJ0FsZW5lLCBNb3Njb3csIEJvaXNlLCBUd2luIEZhbGxzLCBhbmQgUG9jYXRlbGxvIn1dfSwgeyJhcmVhIjogIkVkdWNhdGlvbiIsICJhZ2VuY3kiOiAiU3BlY2lhbCBQcm9ncmFtcyIsICJmdHAiOiA0OS4yNywgImdmIjogMzAxNDk5MDAsICJkZWQiOiAwLCAiZmVkIjogNDc1MzkwMCwgInRvdGFsIjogMzQ5MDM4MDAsICJmZWRfc2hhcmUiOiAwLjEzNjIsICJkZWRfc2hhcmUiOiAwLjAsICJhbWVuZHNfY29kZSI6IGZhbHNlLCAiYmlsbHMiOiBbIkg4NzYiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlNlY3Rpb24gMTUgb2YgSDg3NiByZXF1aXJlZCB0aGF0IHVuZXhwZW5kZWQgYW5kIHVuY3VtYmVyZWQgZnVuZHMgYXBwcm9wcmlhdGVkIHRvXG50aGUgU2Nob2xhcnNoaXAgYW5kIEdyYW50cyBQcm9ncmFtIG9uIEp1bmUgMzAsIDIwMjYgc2hhbGwgYmUgdHJhbnNmZXJyZWQgdG8gYnkgdGhlIE9mZmljZSBvZiBTdGF0ZSBDb250cm9sbGVyIHRvIHRoZSBPcHBvcnR1bml0eSBTY2hvbGFyc2hpcFxuRnVuZCBjcmVhdGVkIGluIFNlY3Rpb24gMzMtNDMwMywgSWRhaG8gQ29kZSJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkZvcmVzdCBVdGlsaXphdGlvbiBSZXNlYXJjaCIsICJ0ZXh0IjogIlRoZSBGb3Jlc3QgVXRpbGl6YXRpb24gUmVzZWFyY2ggKEZVUikgUHJvZ3JhbSBpcyBhIHBhcnQgb2YgdGhlIFVuaXZlcnNpdHkgb2YgSWRhaG8ncyBDb2xsZWdlIG9mIE5hdHVyYWxcblJlc291cmNlcy4gRlVSIHdvcmtzIHRvIGluY3JlYXNlIHRoZSBwcm9kdWN0aXZpdHkgb2YgSWRhaG8ncyBmb3Jlc3RzIGJ5OiAoMSkgaW1wcm92aW5nIGZvcmVzdCBtYW5hZ2VtZW50LCBoYXJ2ZXN0LCBhbmQgcmVnZW5lcmF0aW9uXG5wcmFjdGljZXM7ICgyKSBpbXByb3Zpbmcgd29vZCB1c2UgYW5kIHdvb2QgcmVzaWR1ZSB1dGlsaXphdGlvbiB0ZWNobm9sb2dpZXM7IGFuZCAoMykgaW1wcm92aW5nIGZvcmVzdCBudXJzZXJ5IG1hbmFnZW1lbnQgcHJhY3RpY2VzLiBGVVJcbmFsc28gaW5jbHVkZXMgdGhlIFBvbGljeSBBbmFseXNpcyBHcm91cCwgd2hpY2ggcHJvdmlkZXMgdGltZWx5LCBzY2llbnRpZmljLCBhbmQgb2JqZWN0aXZlIGRhdGEgYW5kIGFuYWx5c2lzIG9uIHJlc291cmNlIGFuZCBsYW5kIHVzZSBpc3N1ZXMgb2ZcbmludGVyZXN0IHRvIHRoZSBwZW9wbGUgb2YgSWRhaG8uIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDM4LTcwMSwgSWRhaG8gQ29kZSwgZXQifSwgeyJzdWJfcHJvZ3JhbSI6ICJHZW9sb2dpY2FsIFN1cnZleSIsICJ0ZXh0IjogIlRoZSBJZGFobyBHZW9sb2dpY2FsIFN1cnZleSAoSUdTKSBpcyBhZG1pbmlzdGVyZWQgYnkgdGhlIFVuaXZlcnNpdHkgb2YgSWRhaG8gd2l0aGluIHRoZSBPZmZpY2Ugb2YgUmVzZWFyY2ggYW5kXG5FY29ub21pYyBEZXZlbG9wbWVudC4gSXQgaXMgdGhlIGxlYWQgc3RhdGUgYWdlbmN5IGZvciB0aGUgY29sbGVjdGlvbiwgYW5hbHlzaXMsIGFuZCBkaXNzZW1pbmF0aW9uIG9mIGFsbCBnZW9sb2dpYyBhbmQgbWluZXJhbCBkYXRhIGZvciB0aGVcbnN0YXRlLiBUaGUgSUdTIGFjY29tcGxpc2hlcyB0aGlzIG1pc3Npb24gdGhyb3VnaCBhcHBsaWVkIHJlc2VhcmNoIGFuZCBwdWJsaWMgc2VydmljZS4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNDctMjAxLCBJZGFobyBDb2RlLCBldFxuc2VxLl0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJNdXNldW0gb2YgTmF0dXJhbCBIaXN0b3J5IiwgInRleHQiOiAiVGhlIE11c2V1bSBvZiBOYXR1cmFsIEhpc3RvcnksIGxvY2F0ZWQgYXQgSWRhaG8gU3RhdGUgVW5pdmVyc2l0eSwgY29sbGVjdHMgYW5kIHByZXNlcnZlcyBhcnRpZmFjdHMgYW5kXG5kaXNzZW1pbmF0ZXMga25vd2xlZGdlIG9mIHRoZSBuYXR1cmFsIGhpc3Rvcnkgb2YgSWRhaG8gYW5kIHRoZSBJbnRlcm1vdW50YWluIFdlc3QuIFRoZSBtdXNldW0gbWFpbnRhaW5zIGNvbGxlY3Rpb25zIGluIHRoZSBhcmVhcyBvZlxuYW50aHJvcG9sb2d5LCBib3RhbnksIGdlb2xvZ3ksIHBhbGVvbnRvbG9neSwgYW5kIHpvb2xvZ3kuIFRoZSBtdXNldW0gYWxzbyBzdXBwb3J0cyByZXNlYXJjaCwgZXhoaWJpdGlvbnMsIHB1YmxpY2F0aW9ucywgYW5kIGludGVycHJldGl2ZVxucHJvZ3JhbXMgb24gdGhvc2UgdG9waWNzIHRvIGJlbmVmaXQgSWRhaG8gY2l0aXplbnMuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDMzLTMwMTIsIElkYWhvIENvZGUsIGV0IHNlcS5dIn0sIHsic3ViX3Byb2dyYW0iOiAiU2Nob2xhcnNoaXBzIGFuZCBHcmFudHMiLCAidGV4dCI6ICJUaGUgT2ZmaWNlIG9mIHRoZSBTdGF0ZSBCb2FyZCBvZiBFZHVjYXRpb24gYWRtaW5pc3RlcnMgZml2ZSBwcm9ncmFtczogUnVyYWwgYW5kIFVuZGVyc2VydmVkIEVkdWNhdG9yXG5JbmNlbnRpdmUgUHJvZ3JhbSAoU2VjdGlvbiAzMy02NTAxLCBJZGFobyBDb2RlKTsgT3Bwb3J0dW5pdHkgU2Nob2xhcnNoaXAgKFNlY3Rpb24gMzMtNDMwMywgSWRhaG8gQ29kZSk7IEFybWVkIEZvcmNlcyBhbmQgUHVibGljIFNhZmV0eVxuT2ZmaWNlciBTY2hvbGFyc2hpcCAoU2VjdGlvbiAzMy00MzAyLCBJZGFobyBDb2RlKTsgR2FpbmluZyBFYXJseSBBd2FyZW5lc3MgYW5kIFJlYWRpbmVzcyBVbmRlcmdyYWR1YXRlIFByb2dyYW0gKEdFQVJVUCkgZmVkZXJhbFxuc2Nob2xhcnNoaXBzOyBJZGFobyBXb3JrIFN0dWR5IFByb2dyYW0gKFNlY3Rpb24gMzMtNDQwMSwgSWRhaG8gQ29kZSkifSwgeyJzdWJfcHJvZ3JhbSI6ICJTbWFsbCBCdXNpbmVzcyBEZXZlbG9wbWVudCBDZW50ZXJzIiwgInRleHQiOiAiVGhlIElkYWhvIFNtYWxsIEJ1c2luZXNzIERldmVsb3BtZW50IENlbnRlciAoSVNCREMpIHByb3ZpZGVzIGRpcmVjdCBzZXJ2aWNlcyB0byBpbmRpdmlkdWFsIHNtYWxsIGJ1c2luZXNzZXNcbmluIElkYWhvIHRocm91Z2ggYSBoaWdoZXIgZWR1Y2F0aW9uLWJhc2VkIG5ldHdvcmsuIElTQkRDIGlzIGhlYWRxdWFydGVyZWQgYXQgQm9pc2UgU3RhdGUgVW5pdmVyc2l0eSB3aXRoIGZpZWxkIG9mZmljZXMgaW4gQ29ldXIgZCdBbGVuZSxcbkxld2lzdG9uLCBUd2luIEZhbGxzLCBQb2NhdGVsbG8sIGFuZCBJZGFobyBGYWxscyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggTm9ydGggSWRhaG8gQ29sbGVnZSwgTGV3aXMtQ2xhcmsgU3RhdGUgQ29sbGVnZSwgdGhlIENvbGxlZ2Ugb2ZcblNvdXRoZXJuIElkYWhvLCBhbmQgSWRhaG8gU3RhdGUgVW5pdmVyc2l0eSwgcmVzcGVjdGl2ZWx5LiBGcm9tIGl0cyBzaXggb2ZmaWNlcywgSVNCREMgY29uc3VsdGFudHMgcHJvdmlkZSBidXNpbmVzcyBjb3Vuc2VsaW5nLCBub24tYWNhZGVtaWNcbmNyZWRpdCB0cmFpbmluZywgcmVzZWFyY2gsIGFuZCB0ZWNobmljYWwgc3VwcG9ydCBwcmltYXJpbHkgdG8gdmVyeSBzbWFsbCBidXNpbiJ9LCB7InN1Yl9wcm9ncmFtIjogIlRlY2hIZWxwIiwgInRleHQiOiAiVGVjaEhlbHAgcHJvdmlkZXMgbWFudWZhY3R1cmluZyBjb25zdWx0aW5nIHNlcnZpY2VzIHRvIHNtYWxsIGFuZCBtZWRpdW0gc2l6ZWQgY29tcGFuaWVzLiBUZWNoSGVscFxuc3BlY2lhbGlzdHMgcHJvdmlkZSB0ZWNobmljYWwgYW5kIHByb2Zlc3Npb25hbCBhc3Npc3RhbmNlLCB0cmFpbmluZywgYW5kIGluZm9ybWF0aW9uIHRvIElkYWhvIG1hbnVmYWN0dXJlcnMsIHByb2Nlc3NvcnMsIGFuZCBpbnZlbnRvcnMgdG9cbnN0cmVuZ3RoZW4gdGhlaXIgZ2xvYmFsIGNvbXBldGl0aXZlbmVzcyB0aHJvdWdoIHByb2R1Y3QgYW5kIHByb2Nlc3MgaW1wcm92ZW1lbnRzLiBUaGlzIGlzIGEgcGFydG5lcnNoaXAgb2YgSWRhaG8ncyB0aHJlZSBzdGF0ZSB1bml2ZXJzaXRpZXNcbmFuZCBhbiBhZmZpbGlhdGUgb2YgdGhlIE5hdGlvbmFsIEluc3RpdHV0ZSBvZiBTdGFuZGFyZHMgYW5kIFRlY2hub2xvZ3kgTWFudWZhY3R1cmluZyBFeHRlbnNpb24gUGFydG5lcnNoaXAuIEl0IGlzIGFsc28gSWRhaG8ncyBFY29ub21pY1xuRGV2ZWxvcG1lbnQgQWRtaW5pc3RyYXRpb24gVW5pdmVyc2l0eSBDZW50ZXIsIHRhcmdldGluZyBlY29ub21pY2FsbHkgZGlzdHJlc3NlZCBhcmVhcyBvZiJ9XX0sIHsiYXJlYSI6ICJFZHVjYXRpb24iLCAiYWdlbmN5IjogIkRlcGFydG1lbnQgb2YgRWR1Y2F0aW9uIiwgImZ0cCI6IDEyNy4wLCAiZ2YiOiAxMTYxODMwMCwgImRlZCI6IDE0MzkyMzAwLCAiZmVkIjogMjA0MDYwMDAsICJ0b3RhbCI6IDQ2NDE2NjAwLCAiZmVkX3NoYXJlIjogMC40Mzk2LCAiZGVkX3NoYXJlIjogMC4zMTAxLCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJIODc2IiwgIkg5MjEiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJBZG1pbmlzdHJhdGlvbiIsICJ0ZXh0IjogIlRoZSBBZG1pbmlzdHJhdGlvbiBQcm9ncmFtIGluY2x1ZGVzIHRoZSBmdW5jdGlvbnMgb2YgQWNjb3VudGluZywgQ2VydGlmaWNhdGlvbiBhbmQgUHJvZmVzc2lvbmFsIFN0YW5kYXJkcyxcbkNvbW11bmljYXRpb25zLCBIdW1hbiBSZXNvdXJjZXMsIGFuZCBQdWJsaWMgU2Nob29sIEZpbmFuY2UifSwgeyJzdWJfcHJvZ3JhbSI6ICJTdHVkZW50IFNlcnZpY2VzIiwgInRleHQiOiAiVGhlIFN0dWRlbnQgU2VydmljZXMgUHJvZ3JhbSBpbmNsdWRlcyB0aGUgZnVuY3Rpb25zIG9mIEFzc2Vzc21lbnQgYW5kIEFjY291bnRhYmlsaXR5LCBDaGlsZCBOdXRyaXRpb25cblByb2dyYW1zLCBGZWRlcmFsIFByb2dyYW1zLCBJbmRpYW4gRWR1Y2F0aW9uLCBJbnN0cnVjdGlvbmFsIFN1cHBvcnQgZm9yIFN0dWRlbnQtQ2VudGVyZWQgTGVhcm5pbmcsIFNhZmV0eSBhbmQgU3R1ZGVudCBFbmdhZ2VtZW50LFxuU2Nob29sIENob2ljZSwgU3BlY2lhbCBFZHVjYXRpb24sIGFuZCBTdHVkZW50IFRyYW5zcG9ydGF0aW9uIn1dfSwgeyJhcmVhIjogIkVkdWNhdGlvbiIsICJhZ2VuY3kiOiAiVm9jYXRpb25hbCBSZWhhYmlsaXRhdGlvbiIsICJmdHAiOiAxNDQuMzcsICJnZiI6IDUyNDMxMDAsICJkZWQiOiAxNDE5MzAwLCAiZmVkIjogMjAxNTI2MDAsICJ0b3RhbCI6IDI2ODE1MDAwLCAiZmVkX3NoYXJlIjogMC43NTE1LCAiZGVkX3NoYXJlIjogMC4wNTI5LCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJIODc2IiwgIkg4NzciXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJWb2NhdGlvbmFsIFJlaGFiaWxpdGF0aW9uIiwgInRleHQiOiAiVm9jYXRpb25hbCBSZWhhYmlsaXRhdGlvbiBhc3Npc3RzIGluZGl2aWR1YWxzIHdpdGggZGlzYWJpbGl0aWVzIGluIG9idGFpbmluZyBhbmQgbWFpbnRhaW5pbmcgZW1wbG95bWVudFxuY29tbWVuc3VyYXRlIHdpdGggdGhlaXIgYWJpbGl0aWVzLCBza2lsbHMsIGFuZCBkZXNpcmVzLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiAzMy0yMzAxLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9LCB7InN1Yl9wcm9ncmFtIjogIkNvdW5jaWwgZm9yIHRoZSBEZWFmIGFuZCBIYXJkIG9mIEhlYXJpbmciLCAidGV4dCI6ICJUaGUgQ291bmNpbCBmb3IgdGhlIERlYWYgYW5kIEhhcmQgb2YgSGVhcmluZyBjb29yZGluYXRlcyBzdGF0ZS1sZXZlbCBwcm9ncmFtcyBhbmQgZW5zdXJlcyBhY2NvbW1vZGF0aW9uc1xuYW5kIGFjY2VzcyB0byBzZXJ2aWNlcyBmb3IgaW5kaXZpZHVhbHMgd2hvIGFyZSBkZWFmIG9yIGhlYXJpbmcgaW1wYWlyZWQuIFRoZSBjb3VuY2lsIHdhcyBvcmdhbml6ZWQgd2l0aGluIHRoZSBEZXBhcnRtZW50IG9mIEhlYWx0aCBhbmRcbldlbGZhcmUgdW50aWwgRlkgMjAxMSwgYXQgd2hpY2ggdGltZSBpdCBtb3ZlZCB0byB0aGUgRGl2aXNpb24gb2YgVm9jYXRpb25hbCBSZWhhYmlsaXRhdGlvbi4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNjctNzMwMSwgSWRhaG8gQ29kZSxcbmV0IHNlcS5dIn1dfSwgeyJhcmVhIjogIkVkdWNhdGlvbiIsICJhZ2VuY3kiOiAiQ2hhcnRlciBTY2hvb2wgQ29tbWlzc2lvbiIsICJmdHAiOiA1LjAsICJnZiI6IDE5MjYwMCwgImRlZCI6IDU1MjEwMCwgImZlZCI6IDAsICJ0b3RhbCI6IDc0NDcwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuNzQxNCwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiSDg3NiJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFtdfSwgeyJhcmVhIjogIkhlYWx0aCBhbmQgSHVtYW4gU2VydmljZXMiLCAiYWdlbmN5IjogIkRlcGFydG1lbnQgb2YgSGVhbHRoIGFuZCBXZWxmYXJlIiwgImZ0cCI6IDI2MDYuMjcsICJnZiI6IDIyMTMxOTYwMCwgImRlZCI6IDEyMjA3NzEwMCwgImZlZCI6IDY5MDMwNjgwMCwgInRvdGFsIjogMTAzMzcwMzUwMCwgImZlZF9zaGFyZSI6IDAuNjY3OCwgImRlZF9zaGFyZSI6IDAuMTE4MSwgImFtZW5kc19jb2RlIjogdHJ1ZSwgImJpbGxzIjogWyJIOTc4IiwgIlMxNDI5IiwgIlMxNDMyIiwgIlMxNDM0IiwgIlMxNDM1IiwgIlMxNDU0Il0sICJub3RlcyI6IFt7InR5cGUiOiAiQlVER0VUIExBVyBFWEVNUFRJT05TIiwgInRleHQiOiAiVGhlIERpdmlzaW9uIG9mIE1lbnRhbCBIZWFsdGggU2VydmljZXMgcmVjZWl2ZWQgc3BlY2lmaWMgbGVnaXNsYXRpdmUgYXV0aG9yaXphdGlvbiBpbiBTMTQyOSB0aGF0IHByb3ZpZGVzIGFuXG5leGVtcHRpb24gZnJvbSB0aGUgcmVzdHJpY3Rpb25zIHBsYWNlZCBvbiB0aGUgRGVwYXJ0bWVudCBvZiBIZWFsdGggYW5kIFdlbGZhcmUgaW4gUzE0MzUsIHdoaWNoIGxpbWl0IHRoZSB0cmFuc2ZlciBvZiBtb25leXMgZm9yIHRydXN0ZWUgYW5kXG5iZW5lZml0IHBheW1lbnRzIn0sIHsidHlwZSI6ICJCVURHRVQgTEFXIEVYRU1QVElPTlMiLCAidGV4dCI6ICJUaGUgRGl2aXNpb24gb2YgUHN5Y2hpYXRyaWMgSG9zcGl0YWxpemF0aW9uIHJlY2VpdmVkIHNwZWNpZmljIGxlZ2lzbGF0aXZlIGF1dGhvcml6YXRpb24gaW4gUzE0MjkgdGhhdCBwcm92aWRlc1xuYW4gZXhlbXB0aW9uIGZyb20gdGhlIHJlc3RyaWN0aW9ucyBwbGFjZWQgb24gdGhlIERlcGFydG1lbnQgb2YgSGVhbHRoIGFuZCBXZWxmYXJlIGluIFMxNDM1LCB3aGljaCBsaW1pdCB0aGUgdHJhbnNmZXIgb2YgbW9uZXlzIGZvciB0cnVzdGVlXG5hbmQgYmVuZWZpdCBwYXltZW50cyJ9LCB7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJTMTQzNSBpbmNsdWRlZCBmb3VyIHNlY3Rpb25zIG9mIHJlcXVpcmVtZW50cyByZWxldmFudCB0byB0aGlzIHByb2dyYW0uIFNlY3Rpb24gM1xucHJvdmlkZWQgdGhhdCB0aGUgT2ZmaWNlIG9mIHRoZSBTdGF0ZSBDb250cm9sbGVyIHNoYWxsIG1ha2UgcGVyaW9kaWMgdHJhbnNmZXJzIGZyb20gdGhlIEdlbmVyYWwgRnVuZCB0byB0aGUgQ29vcGVyYXRpdmUgV2VsZmFyZSBGdW5kLCBhc1xuYXBwcm92ZWQgYnkgdGhlIEJvYXJkIG9mIEV4YW1pbmVycy4gU2VjdGlvbiA0IHByb3ZpZGVkIHRoYXQgbm8gZnVuZHMgYXBwcm9wcmlhdGVkIGZvciB0cnVzdGVlIGFuZCBiZW5lZml0IHBheW1lbnRzIGNhbiBiZSB0cmFuc2ZlcnJlZCB0b1xuYW55IG90aGVyIGV4cGVuc2UgY2xhc3MuIFNlY3Rpb24gNSBwcm92aWRlZCB0In1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiU291dGh3ZXN0IElkYWhvIFRyZWF0bWVudCBDZW50ZXIiLCAidGV4dCI6ICJGYW1pbHkgYW5kIENvbW11bml0eSBQYXJ0bmVyc2hpcHMgaXMgcmVzcG9uc2libGUgZm9yIGltcHJvdmluZyBjdXN0b21lciBzZXJ2aWNlIHRvIGNsaWVudHMuIFRoaXMgaXNcbmFjY29tcGxpc2hlZCBieTogMSkgcHJvbW90aW5nIGNvb3JkaW5hdGlvbiBhY3Jvc3MgcHJvZ3JhbXM7IDIpIGRlbGl2ZXJpbmcgZW1lcmdlbmN5IGFzc2lzdGFuY2Ugc2VydmljZXMgdGhyb3VnaCBhIGNvbnNvbGlkYXRlZCB1bml0OyAzKVxuaWRlbnRpZnlpbmcgc2VydmljZXMgdGhhdCBjbGllbnRzIGFyZSBhY2Nlc3NpbmcgYWNyb3NzIGFsbCBkaXZpc2lvbnMgYW5kIGNvb3JkaW5hdGluZyB0byByZWR1Y2UgZHVwbGljYXRpb247IGFuZCA0KSBjb29yZGluYXRpbmcgYWNjZXNzIHRvIGNyb3NzLVxuZGl2aXNpb25hbCBzdGFmZmluZyBmb3IgY2xpZW50cyBhdCByaXNrIG9mIGhpZ2hlciBjb3N0IHNlcnZpY2UgbmVlZHMgb3IgbW9yZSBjb21wbGljYXRlZCBzZXJ2aWNlIG5lZWRzLiBUaGlzIHByb2dyYW0gd2FzIGNhbGxlZCBTZXJ2aWNlXG5JbnRlZ3JhdGlvbiBwcmlvciB0byBGWSAyMDI2In0sIHsic3ViX3Byb2dyYW0iOiAiUGh5c2ljYWwgSGVhbHRoIFNlcnZpY2VzIiwgInRleHQiOiAiUHJvdmlkZXMgcHJldmVudGl2ZSwgZWR1Y2F0aW9uYWwsIHRyZWF0bWVudCwgc3VydmVpbGxhbmNlLCBhbmQgaGVhbHRoIHNlcnZpY2VzIHRvIGZhbWlsaWVzIGluIElkYWhvLiBNb3N0IFwiaGFuZHMtXG5vbiBzZXJ2aWNlc1wiIGFyZSBwcm92aWRlZCBieSBjb250cmFjdCB0aHJvdWdoIHNldmVuIHB1YmxpYyBoZWFsdGggZGlzdHJpY3RzLCBiYXNlZCB1cG9uIGEgY29vcGVyYXRpdmUgcHVibGljIGhlYWx0aCBwbGFubmluZyBzeXN0ZW0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJFbWVyZ2VuY3kgTWVkaWNhbCBTZXJ2aWNlcyIsICJ0ZXh0IjogIlByb3ZpZGVzIGEgc3RhdGV3aWRlIHN5c3RlbSB0byByZXNwb25kIHRvIGNyaXRpY2FsIGlsbG5lc3MgYW5kIGluanVyeSBzaXR1YXRpb25zLiBCZWdpbm5pbmcgaW4gRlkgMjAyNiwgdGhpc1xucHJvZ3JhbSBpcyBob3VzZWQgd2l0aGluIHRoZSBJZGFobyBNaWxpdGFyeSBEaXZpc2lvbiJ9LCB7InN1Yl9wcm9ncmFtIjogIkxhYm9yYXRvcnkgU2VydmljZXMiLCAidGV4dCI6ICJQcm92aWRlcyBsYWJvcmF0b3J5IHN1cHBvcnQgZm9yIGRlcGFydG1lbnRhbCBwcm9ncmFtcy4gVGhpcyBwcm9ncmFtIHdhcyBwYXJ0IG9mIFB1YmxpYyBIZWFsdGggU2VydmljZXMgdW50aWxcbkZZIDIwMDMgd2hlbiBpdCB3YXMgZXN0YWJsaXNoZWQgYXMgYSBzZXBhcmF0ZSBzdGFuZC1hbG9uZSBwcm9ncmFtIn0sIHsic3ViX3Byb2dyYW0iOiAiU3VpY2lkZSBQcmV2ZW50aW9uIGFuZCBBd2FyZW5lc3MiLCAidGV4dCI6ICJUaGlzIHByb2dyYW0gd2FzIGNyZWF0ZWQgaW4gMjAxNiB0byBlc3RhYmxpc2ggYW5kIG9wZXJhdGUgYSBTdWljaWRlIFByZXZlbnRpb24gYW5kIEF3YXJlbmVzcyBQcm9ncmFtIGluIHRoZVxuRGVwYXJ0bWVudCBvZiBIZWFsdGggYW5kIFdlbGZhcmUuIFRoZSBwcm9ncmFtJ3MgaW5pdGlhbCBnb2FscyB3ZXJlIHRvIGNyZWF0ZSB5b3V0aCBwcm9ncmFtbWluZyBpbiBjb29wZXJhdGlvbiB3aXRoIHRoZSBTdGF0ZSBEZXBhcnRtZW50IG9mXG5FZHVjYXRpb24sIGVzdGFibGlzaCBhIHB1YmxpYyBhd2FyZW5lc3MgY2FtcGFpZ24sIGFuZCBwcm92aWRlIGZpbmFuY2lhbCBhc3Npc3RhbmNlIHRvIHRoZSBJZGFobyBTdWljaWRlIEhvdGxpbmUuIFRoZSBwcm9ncmFtIHdhcyBjcmVhdGVkXG5pbiByZXNwb25zZSB0byByZWNvbW1lbmRhdGlvbnMgbWFkZSBieSB0aGUgSGVhbHRoIFF1YWxpdHkgUGxhbm5pbmcgQ29tbWlzc2lvbiwgYXMgcmVxdWlyZWQgYnkgU0NSMTA0IG9mIHRoZSAyMDE1IGxlZ2lzbGF0aXZlIHNlc3Npb24uXG5JbiBBdWd1c3QgMjAxOCwgaW4gcGFydG5lcnNoaXAgd2l0aCByZWxldmFudCBzdGFrZWhvbGRlcnMsIHRoZSBwcm9ncmFtIGRldmVsb3BlZCBhIn0sIHsic3ViX3Byb2dyYW0iOiAiSGVhbHRoIENhcmUgUG9saWN5IEluaXRpYXRpdmVzIiwgInRleHQiOiAiVGhlIHByb2dyYW0gd2FzIGVzdGFibGlzaGVkIGluIDIwMTUgdG8gYWRtaW5pc3RlciB0aGUgU3RhdGUgSGVhbHRoY2FyZSBJbm5vdmF0aW9uIFBsYW4gKFNISVApIGFuZCBvdGhlclxuc3RhdGV3aWRlIGhlYWx0aC1wb2xpY3kgaW5pdGlhdGl2ZXMgZm9jdXNlZCBvbiBpbXByb3ZpbmcgSWRhaG9cdTIwMTlzIGhlYWx0aCBjYXJlIHN5c3RlbS4gSW4gMjAxNywgdGhlIExlZ2lzbGF0dXJlIGFkZGVkIGZ1bmRpbmcgdG8gc3VwcG9ydFxuTWVkaWNhaWQtZWxpZ2libGUgc2VydmljZXMgaW4gdGhlIEdyYWR1YXRlIE1lZGljYWwgRWR1Y2F0aW9uIChHTUUpIFByb2dyYW0uIEluIDIwMjAsIHRoZSBMZWdpc2xhdHVyZSBhcHByb3ZlZCBtb3ZpbmcgdGhlIHByb2dyYW0gZnJvbSBhXG5zdGFuZC1hbG9uZSBkaXZpc2lvbiBhbmQgcHJvZ3JhbSB0byBhIHByb2dyYW0gd2l0aGluIHRoZSBQdWJsaWMgSGVhbHRoIFNlcnZpY2VzIERpdmlzaW9uIn0sIHsic3ViX3Byb2dyYW0iOiAiSGVhbHRoIENhcmUgUG9saWN5IEluaXRpYXRpdmVzIiwgInRleHQiOiAiUHJvdmlkZXMgcG9saWN5IGRpcmVjdGlvbiwgYWRtaW5pc3RyYXRpdmUgbGVhZGVyc2hpcCwgYW5kIG1hbmFnZW1lbnQgc3VwcG9ydCBuZWNlc3NhcnkgZm9yIHRoZSBkZXBhcnRtZW50IHRvXG5vcGVyYXRlLiBJbmNsdWRlcyB0aGUgRGl2aXNpb24gb2YgSW5mb3JtYXRpb24gU2VydmljZXMsIHRoZSBEaXZpc2lvbiBvZiBNYW5hZ2VtZW50IFNlcnZpY2VzLCBMZWdhbCBTZXJ2aWNlcywgdGhlIE9mZmljZSBvZiBQdWJsaWNcblBhcnRpY2lwYXRpb24sIHRoZSBPZmZpY2Ugb2YgdGhlIERpcmVjdG9yLCBhbmQgUmVnaW9uYWwgQWRtaW5pc3RyYXRpb24ifSwgeyJzdWJfcHJvZ3JhbSI6ICJIZWFsdGggQ2FyZSBQb2xpY3kgSW5pdGlhdGl2ZXMiLCAidGV4dCI6ICJUaGlzIHByb2dyYW0gc3VydmV5cywgaW5zcGVjdHMsIGxpY2Vuc2VzLCBhbmQgY2VydGlmaWVzIGhlYWx0aCBjYXJlIGZhY2lsaXRpZXMgdGhhdCByZXF1aXJlIGNlcnRpZmljYXRpb24gb3IgbGljZW5zdXJlXG5ieSBlaXRoZXIgc3RhdGUgb3IgZmVkZXJhbCByZXF1aXJlbWVudHMuIFRoZSBwcm9ncmFtIGludmVzdGlnYXRlcyBjb21wbGFpbnRzLCBjb25kdWN0cyBvbi1zaXRlIHN1cnZleXMsIGFuZCB0YWtlcyBhcHByb3ByaWF0ZSBsaWNlbnN1cmVcbmFjdGlvbiB0byBwcm90ZWN0IHRoZSBoZWFsdGggYW5kIHNhZmV0eSBvZiB2dWxuZXJhYmxlIHBlb3BsZSByZWNlaXZpbmcgaGVhbHRoLXJlbGF0ZWQgc2VydmljZXMgYW5kIHN1cHBvcnQuIFtTdGF0dXRvcnkgQXV0aG9yaXR5IFRpdGxlIDM5XSJ9LCB7InN1Yl9wcm9ncmFtIjogIkNoaWxkcmVuJ3MgTWVudGFsIEhlYWx0aCIsICJ0ZXh0IjogIlByb3ZpZGVzIGFzc2Vzc21lbnQgYW5kIGV2YWx1YXRpb24sIGNsaW5pY2FsIGNhc2UgbWFuYWdlbWVudCwgaG9zcGl0YWxpemF0aW9uLCByZXNpZGVudGlhbCB0cmVhdG1lbnQsIGFuZFxudGhlcmFwZXV0aWMgZm9zdGVyIGNhcmUgZm9yIGNoaWxkcmVuIHdpdGggc2VyaW91cyBlbW90aW9uYWwgZGlzdHVyYmFuY2VzIn0sIHsic3ViX3Byb2dyYW0iOiAiQWR1bHQgTWVudGFsIEhlYWx0aCIsICJ0ZXh0IjogIlByb3ZpZGVzIGNvbW11bml0eS1iYXNlZCBzZXJ2aWNlcyBmb3IgYWR1bHRzIGV4cGVyaWVuY2luZyBzZXJpb3VzIGFuZCBwZXJzaXN0ZW50IG1lbnRhbCBpbGxuZXNzIn0sIHsic3ViX3Byb2dyYW0iOiAiQ29tbXVuaXR5IEhvc3BpdGFsaXphdGlvbiIsICJ0ZXh0IjogIkZ1bmRzIGFyZSB1c2VkIHRvIHBheSBmb3IgcGF0aWVudCBjYXJlIG9uY2UgYW4gaW5kaXZpZHVhbCBoYXMgYmVlbiBjb21taXR0ZWQgdG8gc3RhdGUgY3VzdG9keSwgYnV0IGJlZm9yZSBhIGJlZFxuaXMgYXZhaWxhYmxlIGluIG9uZSBvZiB0aGUgdHdvIHN0YXRlIGluc3RpdHV0aW9ucyJ9LCB7InN1Yl9wcm9ncmFtIjogIlN0YXRlIEhvc3BpdGFsIE5vcnRoIiwgInRleHQiOiAiU3RhdGUgSG9zcGl0YWwgTm9ydGggKFNITiksIGluIE9yb2Zpbm8sIHdhcyBlc3RhYmxpc2hlZCB0byBkaWFnbm9zZSwgY2FyZSBmb3IsIGFuZCB0cmVhdCBtZW50YWxseSBpbGwgY2l0aXplbnMgdGhhdFxuaGF2ZSBiZWVuIGFkanVkaWNhdGVkIGJ5IGEgY291cnQgb2YgbGF3In0sIHsic3ViX3Byb2dyYW0iOiAiU3RhdGUgSG9zcGl0YWwgU291dGgiLCAidGV4dCI6ICJTdGF0ZSBIb3NwaXRhbCBTb3V0aCAoU0hTKSwgaW4gQmxhY2tmb290LCBzZXJ2ZXMgYXMgdGhlIG1ham9yIGFkdWx0IHBzeWNoaWF0cmljIGlucGF0aWVudCBmYWNpbGl0eSBmb3IgdGhlIHN0YXRlLiBUaGVcbmhvc3BpdGFsIHByb3ZpZGVzIGludGVuc2l2ZSBwc3ljaGlhdHJpYyB0cmVhdG1lbnQgZm9yIGFjdXRlLCBjaHJvbmljLCBnZXJpYXRyaWMsIGFuZCBmb3JlbnNpYyBwYXRpZW50cyBpbiBhIHJlc2lkZW50aWFsIHNldHRpbmcifSwgeyJzdWJfcHJvZ3JhbSI6ICJTdGF0ZSBIb3NwaXRhbCBXZXN0IiwgInRleHQiOiAiU3RhdGUgSG9zcGl0YWwgV2VzdCAoU0hXKSwgd2FzIGVzdGFibGlzaGVkIGluIDIwMjAgd2l0aCBwYXNzYWdlIG9mIEg1OTcuIFRoZSBhZG9sZXNjZW50IHVuaXQgd2lsbCBoYXZlIGEgMTZcbmJlZCBjYXBhY2l0eSBhbmQgd2lsbCBiZSBsb2NhdGVkIGluIE5hbXBhLCBJZGFoby4gU0hXIHdpbGwgcHJvdmlkZSBjYXJlIHRvIG1lZGljYWxseSBzdGFibGUgYW5kIGhlYWx0aHkgcGF0aWVudHMgd2l0aCBhIHByaW1hcnkgcHN5Y2hpYXRyaWNcbmRpYWdub3NpcyB0aGF0IHdpbGwgaW5jbHVkZSBvbmUtb24tb25lIGNvdW5zZWxpbmcsIHNvY2lhbCB0aGVyYXB5LCBhIG1lZGljYWwgcmVnaW1lLCByZWNyZWF0aW9uYWwgYW5kIG9jY3VwYXRpb25hbCB0aGVyYXBpZXMsIGFuZCBhIGNvbnRpbnVpbmdcbmVkdWNhdGlvbiBlbnZpcm9ubWVudC4gVGhlIGF2ZXJhZ2UgbGVuZ3RoIG9mIHN0YXkgaXMgZXN0aW1hdGVkIGF0IDMwIGRheXMgYW5kIHRoZSBkZXBhcnRtZW50IGNhbGN1bGF0ZXMgc2VydmluZyBhYm91dCAxMjUtMTUwXG5hZG9sZXNjZW50cyBlYWNoIHllYXIifV0sICJjaGlsZHJlbiI6IFt7Im5hbWUiOiAiSW5kaXJlY3QgU3VwcG9ydCBTZXJ2aWNlcyIsICJnZiI6IDIwODk5NDAwLCAiZGVkIjogMzQ3MzMwMCwgImZlZCI6IDMxOTU5OTMwMCwgInRvdGFsIjogMzQzOTcyMDAwLCAiZmVkX3NoYXJlIjogMC45MjkxLCAiZGVkX3NoYXJlIjogMC4wMTAxLCAiYmlsbHMiOiBbIlMxNDMyIiwgIlMxNDM1Il0sICJub3RlcyI6IFt7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJTMTQzNSBpbmNsdWRlZCBuaW5lIHNlY3Rpb25zIG9mIGNvbmRpdGlvbnMsIGxpbWl0YXRpb25zLCBhbmQgcmVzdHJpY3Rpb25zIHJlbGV2YW50IHRvIHRoaXNcbnByb2dyYW0uIFNlY3Rpb24gMyBwcm92aWRlZCB0aGF0IHRoZSBPZmZpY2Ugb2YgdGhlIFN0YXRlIENvbnRyb2xsZXIgc2hhbGwgbWFrZSBwZXJpb2RpYyB0cmFuc2ZlcnMgZnJvbSB0aGUgR2VuZXJhbCBGdW5kIHRvIHRoZSBDb29wZXJhdGl2ZVxuV2VsZmFyZSBGdW5kLCBhcyBhcHByb3ZlZCBieSB0aGUgQm9hcmQgb2YgRXhhbWluZXJzLiBTZWN0aW9uIDQgcHJvdmlkZWQgdGhhdCBubyBmdW5kcyBhcHByb3ByaWF0ZWQgZm9yIHRydXN0ZWUgYW5kIGJlbmVmaXQgcGF5bWVudHMgY2FuXG5iZSB0cmFuc2ZlcnJlZCB0byBhbnkgb3RoZXIgZXhwZW5zIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiSGVhbHRoIENhcmUgUG9saWN5IEluaXRpYXRpdmVzIiwgInRleHQiOiAiUHJvdmlkZXMgcG9saWN5IGRpcmVjdGlvbiwgYWRtaW5pc3RyYXRpdmUgbGVhZGVyc2hpcCwgYW5kIG1hbmFnZW1lbnQgc3VwcG9ydCBuZWNlc3NhcnkgZm9yIHRoZSBkZXBhcnRtZW50IHRvXG5vcGVyYXRlLiBJbmNsdWRlcyB0aGUgRGl2aXNpb24gb2YgSW5mb3JtYXRpb24gU2VydmljZXMsIHRoZSBEaXZpc2lvbiBvZiBNYW5hZ2VtZW50IFNlcnZpY2VzLCBMZWdhbCBTZXJ2aWNlcywgdGhlIE9mZmljZSBvZiBQdWJsaWNcblBhcnRpY2lwYXRpb24sIHRoZSBPZmZpY2Ugb2YgdGhlIERpcmVjdG9yLCBhbmQgUmVnaW9uYWwgQWRtaW5pc3RyYXRpb24ifV19LCB7Im5hbWUiOiAiUHVibGljIEhlYWx0aCBTZXJ2aWNlcyIsICJnZiI6IDEwMTYxOTAwLCAiZGVkIjogNTY2MDc0MDAsICJmZWQiOiA3NDQyNjUwMCwgInRvdGFsIjogMTQxMTk1ODAwLCAiZmVkX3NoYXJlIjogMC41MjcxLCAiZGVkX3NoYXJlIjogMC40MDA5LCAiYmlsbHMiOiBbIkg5NzgiLCAiUzE0MzUiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlMxNDM1IGluY2x1ZGVkIGZvdXIgc2VjdGlvbnMgb2YgcmVxdWlyZW1lbnRzIHJlbGV2YW50IHRvIHRoaXMgcHJvZ3JhbS4gU2VjdGlvbiAzXG5wcm92aWRlZCB0aGF0IHRoZSBPZmZpY2Ugb2YgdGhlIFN0YXRlIENvbnRyb2xsZXIgc2hhbGwgbWFrZSBwZXJpb2RpYyB0cmFuc2ZlcnMgZnJvbSB0aGUgR2VuZXJhbCBGdW5kIHRvIHRoZSBDb29wZXJhdGl2ZSBXZWxmYXJlIEZ1bmQsIGFzXG5hcHByb3ZlZCBieSB0aGUgQm9hcmQgb2YgRXhhbWluZXJzLiBTZWN0aW9uIDQgcHJvdmlkZWQgdGhhdCBubyBmdW5kcyBhcHByb3ByaWF0ZWQgZm9yIHRydXN0ZWUgYW5kIGJlbmVmaXQgcGF5bWVudHMgY2FuIGJlIHRyYW5zZmVycmVkIHRvXG5hbnkgb3RoZXIgZXhwZW5zZSBjbGFzcy4gU2VjdGlvbiA1IHByb3ZpZGVkIHQifSwgeyJ0eXBlIjogIkNPTkRJVElPTlMsIExJTUlUQVRJT05TLCBBTkQgUkVTVFJJQ1RJT05TIiwgInRleHQiOiAiUzE0MzUgaW5jbHVkZWQgc2V2ZW4gc2VjdGlvbnMgb2YgcmVxdWlyZW1lbnRzIHJlbGV2YW50IHRvIHRoaXMgcHJvZ3JhbS4gU2VjdGlvbiAzXG5wcm92aWRlZCB0aGF0IHRoZSBPZmZpY2Ugb2YgdGhlIFN0YXRlIENvbnRyb2xsZXIgc2hhbGwgbWFrZSBwZXJpb2RpYyB0cmFuc2ZlcnMgZnJvbSB0aGUgR2VuZXJhbCBGdW5kIHRvIHRoZSBDb29wZXJhdGl2ZSBXZWxmYXJlIEZ1bmQsIGFzXG5hcHByb3ZlZCBieSB0aGUgQm9hcmQgb2YgRXhhbWluZXJzLiBTZWN0aW9uIDQgcHJvdmlkZWQgdGhhdCBubyBmdW5kcyBhcHByb3ByaWF0ZWQgZm9yIHRydXN0ZWUgYW5kIGJlbmVmaXQgcGF5bWVudHMgY2FuIGJlIHRyYW5zZmVycmVkIHRvXG5hbnkgb3RoZXIgZXhwZW5zZSBjbGFzcy4gU2VjdGlvbiA1IHByb3ZpZGVkICJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIlBoeXNpY2FsIEhlYWx0aCBTZXJ2aWNlcyIsICJ0ZXh0IjogIlByb3ZpZGVzIHByZXZlbnRpdmUsIGVkdWNhdGlvbmFsLCB0cmVhdG1lbnQsIHN1cnZlaWxsYW5jZSwgYW5kIGhlYWx0aCBzZXJ2aWNlcyB0byBmYW1pbGllcyBpbiBJZGFoby4gTW9zdCBcImhhbmRzLVxub24gc2VydmljZXNcIiBhcmUgcHJvdmlkZWQgYnkgY29udHJhY3QgdGhyb3VnaCBzZXZlbiBwdWJsaWMgaGVhbHRoIGRpc3RyaWN0cywgYmFzZWQgdXBvbiBhIGNvb3BlcmF0aXZlIHB1YmxpYyBoZWFsdGggcGxhbm5pbmcgc3lzdGVtIn0sIHsic3ViX3Byb2dyYW0iOiAiRW1lcmdlbmN5IE1lZGljYWwgU2VydmljZXMiLCAidGV4dCI6ICJQcm92aWRlcyBhIHN0YXRld2lkZSBzeXN0ZW0gdG8gcmVzcG9uZCB0byBjcml0aWNhbCBpbGxuZXNzIGFuZCBpbmp1cnkgc2l0dWF0aW9ucy4gQmVnaW5uaW5nIGluIEZZIDIwMjYsIHRoaXNcbnByb2dyYW0gaXMgaG91c2VkIHdpdGhpbiB0aGUgSWRhaG8gTWlsaXRhcnkgRGl2aXNpb24ifSwgeyJzdWJfcHJvZ3JhbSI6ICJMYWJvcmF0b3J5IFNlcnZpY2VzIiwgInRleHQiOiAiUHJvdmlkZXMgbGFib3JhdG9yeSBzdXBwb3J0IGZvciBkZXBhcnRtZW50YWwgcHJvZ3JhbXMuIFRoaXMgcHJvZ3JhbSB3YXMgcGFydCBvZiBQdWJsaWMgSGVhbHRoIFNlcnZpY2VzIHVudGlsXG5GWSAyMDAzIHdoZW4gaXQgd2FzIGVzdGFibGlzaGVkIGFzIGEgc2VwYXJhdGUgc3RhbmQtYWxvbmUgcHJvZ3JhbSJ9LCB7InN1Yl9wcm9ncmFtIjogIlN1aWNpZGUgUHJldmVudGlvbiBhbmQgQXdhcmVuZXNzIiwgInRleHQiOiAiVGhpcyBwcm9ncmFtIHdhcyBjcmVhdGVkIGluIDIwMTYgdG8gZXN0YWJsaXNoIGFuZCBvcGVyYXRlIGEgU3VpY2lkZSBQcmV2ZW50aW9uIGFuZCBBd2FyZW5lc3MgUHJvZ3JhbSBpbiB0aGVcbkRlcGFydG1lbnQgb2YgSGVhbHRoIGFuZCBXZWxmYXJlLiBUaGUgcHJvZ3JhbSdzIGluaXRpYWwgZ29hbHMgd2VyZSB0byBjcmVhdGUgeW91dGggcHJvZ3JhbW1pbmcgaW4gY29vcGVyYXRpb24gd2l0aCB0aGUgU3RhdGUgRGVwYXJ0bWVudCBvZlxuRWR1Y2F0aW9uLCBlc3RhYmxpc2ggYSBwdWJsaWMgYXdhcmVuZXNzIGNhbXBhaWduLCBhbmQgcHJvdmlkZSBmaW5hbmNpYWwgYXNzaXN0YW5jZSB0byB0aGUgSWRhaG8gU3VpY2lkZSBIb3RsaW5lLiBUaGUgcHJvZ3JhbSB3YXMgY3JlYXRlZFxuaW4gcmVzcG9uc2UgdG8gcmVjb21tZW5kYXRpb25zIG1hZGUgYnkgdGhlIEhlYWx0aCBRdWFsaXR5IFBsYW5uaW5nIENvbW1pc3Npb24sIGFzIHJlcXVpcmVkIGJ5IFNDUjEwNCBvZiB0aGUgMjAxNSBsZWcifSwgeyJzdWJfcHJvZ3JhbSI6ICJIZWFsdGggQ2FyZSBQb2xpY3kgSW5pdGlhdGl2ZXMiLCAidGV4dCI6ICJUaGUgcHJvZ3JhbSB3YXMgZXN0YWJsaXNoZWQgaW4gMjAxNSB0byBhZG1pbmlzdGVyIHRoZSBTdGF0ZSBIZWFsdGhjYXJlIElubm92YXRpb24gUGxhbiAoU0hJUCkgYW5kIG90aGVyXG5zdGF0ZXdpZGUgaGVhbHRoLXBvbGljeSBpbml0aWF0aXZlcyBmb2N1c2VkIG9uIGltcHJvdmluZyBJZGFob1x1MjAxOXMgaGVhbHRoIGNhcmUgc3lzdGVtLiBJbiAyMDE3LCB0aGUgTGVnaXNsYXR1cmUgYWRkZWQgZnVuZGluZyB0byBzdXBwb3J0XG5NZWRpY2FpZC1lbGlnaWJsZSBzZXJ2aWNlcyBpbiB0aGUgR3JhZHVhdGUgTWVkaWNhbCBFZHVjYXRpb24gKEdNRSkgUHJvZ3JhbS4gSW4gMjAyMCwgdGhlIExlZ2lzbGF0dXJlIGFwcHJvdmVkIG1vdmluZyB0aGUgcHJvZ3JhbSBmcm9tIGFcbnN0YW5kLWFsb25lIGRpdmlzaW9uIGFuZCBwcm9ncmFtIHRvIGEgcHJvZ3JhbSB3aXRoaW4gdGhlIFB1YmxpYyBIZWFsdGggU2VydmljZXMgRGl2aXNpb24ifV19LCB7Im5hbWUiOiAiRGl2aXNpb24gb2YgV2VsZmFyZSIsICJnZiI6IDUwNDc2MzAwLCAiZGVkIjogNDkwMTEwMCwgImZlZCI6IDgxMzA3NDAwLCAidG90YWwiOiAxMzY2ODQ4MDAsICJmZWRfc2hhcmUiOiAwLjU5NDksICJkZWRfc2hhcmUiOiAwLjAzNTksICJiaWxscyI6IFsiUzE0MzQiLCAiUzE0MzUiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbXX0sIHsibmFtZSI6ICJZb3V0aCBTYWZldHkgJiBQZXJtYW5lbmN5IiwgImdmIjogNTM4OTM3MDAsICJkZWQiOiA5Mzg3MDAsICJmZWQiOiA2ODA4NjgwMCwgInRvdGFsIjogMTIyOTE5MjAwLCAiZmVkX3NoYXJlIjogMC41NTM5LCAiZGVkX3NoYXJlIjogMC4wMDc2LCAiYmlsbHMiOiBbIlMxNDM1IiwgIlMxNDU0Il0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW119LCB7Im5hbWUiOiAiRWFybHkgTGVhcm5pbmcgJiBEZXZlbG9wbWVudCIsICJnZiI6IDIxMTE2NzAwLCAiZGVkIjogMTQ2ODkwMCwgImZlZCI6IDg0MTQwMDAwLCAidG90YWwiOiAxMDY3MjU2MDAsICJmZWRfc2hhcmUiOiAwLjc4ODQsICJkZWRfc2hhcmUiOiAwLjAxMzgsICJiaWxscyI6IFsiUzE0MzUiLCAiUzE0NTQiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbXX0sIHsibmFtZSI6ICJQc3ljaGlhdHJpYyBIb3NwaXRhbGl6YXRpb24iLCAiZ2YiOiAyMzk2NTkwMCwgImRlZCI6IDQzNjI4MTAwLCAiZmVkIjogMTAxNzcwMCwgInRvdGFsIjogNjg2MTE3MDAsICJmZWRfc2hhcmUiOiAwLjAxNDgsICJkZWRfc2hhcmUiOiAwLjYzNTksICJiaWxscyI6IFsiUzE0MjkiLCAiUzE0MzUiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJCVURHRVQgTEFXIEVYRU1QVElPTlMiLCAidGV4dCI6ICJUaGUgRGl2aXNpb24gb2YgUHN5Y2hpYXRyaWMgSG9zcGl0YWxpemF0aW9uIHJlY2VpdmVkIHNwZWNpZmljIGxlZ2lzbGF0aXZlIGF1dGhvcml6YXRpb24gaW4gUzE0MjkgdGhhdCBwcm92aWRlc1xuYW4gZXhlbXB0aW9uIGZyb20gdGhlIHJlc3RyaWN0aW9ucyBwbGFjZWQgb24gdGhlIERlcGFydG1lbnQgb2YgSGVhbHRoIGFuZCBXZWxmYXJlIGluIFMxNDM1LCB3aGljaCBsaW1pdCB0aGUgdHJhbnNmZXIgb2YgbW9uZXlzIGZvciB0cnVzdGVlXG5hbmQgYmVuZWZpdCBwYXltZW50cyJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkNvbW11bml0eSBIb3NwaXRhbGl6YXRpb24iLCAidGV4dCI6ICJGdW5kcyBhcmUgdXNlZCB0byBwYXkgZm9yIHBhdGllbnQgY2FyZSBvbmNlIGFuIGluZGl2aWR1YWwgaGFzIGJlZW4gY29tbWl0dGVkIHRvIHN0YXRlIGN1c3RvZHksIGJ1dCBiZWZvcmUgYSBiZWRcbmlzIGF2YWlsYWJsZSBpbiBvbmUgb2YgdGhlIHR3byBzdGF0ZSBpbnN0aXR1dGlvbnMifSwgeyJzdWJfcHJvZ3JhbSI6ICJTdGF0ZSBIb3NwaXRhbCBOb3J0aCIsICJ0ZXh0IjogIlN0YXRlIEhvc3BpdGFsIE5vcnRoIChTSE4pLCBpbiBPcm9maW5vLCB3YXMgZXN0YWJsaXNoZWQgdG8gZGlhZ25vc2UsIGNhcmUgZm9yLCBhbmQgdHJlYXQgbWVudGFsbHkgaWxsIGNpdGl6ZW5zIHRoYXRcbmhhdmUgYmVlbiBhZGp1ZGljYXRlZCBieSBhIGNvdXJ0IG9mIGxhdyJ9LCB7InN1Yl9wcm9ncmFtIjogIlN0YXRlIEhvc3BpdGFsIFNvdXRoIiwgInRleHQiOiAiU3RhdGUgSG9zcGl0YWwgU291dGggKFNIUyksIGluIEJsYWNrZm9vdCwgc2VydmVzIGFzIHRoZSBtYWpvciBhZHVsdCBwc3ljaGlhdHJpYyBpbnBhdGllbnQgZmFjaWxpdHkgZm9yIHRoZSBzdGF0ZS4gVGhlXG5ob3NwaXRhbCBwcm92aWRlcyBpbnRlbnNpdmUgcHN5Y2hpYXRyaWMgdHJlYXRtZW50IGZvciBhY3V0ZSwgY2hyb25pYywgZ2VyaWF0cmljLCBhbmQgZm9yZW5zaWMgcGF0aWVudHMgaW4gYSByZXNpZGVudGlhbCBzZXR0aW5nIn0sIHsic3ViX3Byb2dyYW0iOiAiU3RhdGUgSG9zcGl0YWwgV2VzdCIsICJ0ZXh0IjogIlN0YXRlIEhvc3BpdGFsIFdlc3QgKFNIVyksIHdhcyBlc3RhYmxpc2hlZCBpbiAyMDIwIHdpdGggcGFzc2FnZSBvZiBINTk3LiBUaGUgYWRvbGVzY2VudCB1bml0IHdpbGwgaGF2ZSBhIDE2XG5iZWQgY2FwYWNpdHkgYW5kIHdpbGwgYmUgbG9jYXRlZCBpbiBOYW1wYSwgSWRhaG8uIFNIVyB3aWxsIHByb3ZpZGUgY2FyZSB0byBtZWRpY2FsbHkgc3RhYmxlIGFuZCBoZWFsdGh5IHBhdGllbnRzIHdpdGggYSBwcmltYXJ5IHBzeWNoaWF0cmljXG5kaWFnbm9zaXMgdGhhdCB3aWxsIGluY2x1ZGUgb25lLW9uLW9uZSBjb3Vuc2VsaW5nLCBzb2NpYWwgdGhlcmFweSwgYSBtZWRpY2FsIHJlZ2ltZSwgcmVjcmVhdGlvbmFsIGFuZCBvY2N1cGF0aW9uYWwgdGhlcmFwaWVzLCBhbmQgYSBjb250aW51aW5nXG5lZHVjYXRpb24gZW52aXJvbm1lbnQuIFRoZSBhdmVyYWdlIGxlbmd0aCBvZiBzdGF5IGlzIGVzdGltYXRlZCBhdCAzMCBkYXlzIGFuZCB0aGUgZGVwYXJ0bWVudCBjYWxjdWxhdGVzIHNlcnZpIn1dfSwgeyJuYW1lIjogIk1lbnRhbCBIZWFsdGggU2VydmljZXMiLCAiZ2YiOiAzNjg5MjQwMCwgImRlZCI6IDMxNDI2MDAsICJmZWQiOiAxMjUxMDYwMCwgInRvdGFsIjogNTI1NDU2MDAsICJmZWRfc2hhcmUiOiAwLjIzODEsICJkZWRfc2hhcmUiOiAwLjA1OTgsICJiaWxscyI6IFsiUzE0MjkiLCAiUzE0MzUiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJCVURHRVQgTEFXIEVYRU1QVElPTlMiLCAidGV4dCI6ICJUaGUgRGl2aXNpb24gb2YgTWVudGFsIEhlYWx0aCBTZXJ2aWNlcyByZWNlaXZlZCBzcGVjaWZpYyBsZWdpc2xhdGl2ZSBhdXRob3JpemF0aW9uIGluIFMxNDI5IHRoYXQgcHJvdmlkZXMgYW5cbmV4ZW1wdGlvbiBmcm9tIHRoZSByZXN0cmljdGlvbnMgcGxhY2VkIG9uIHRoZSBEZXBhcnRtZW50IG9mIEhlYWx0aCBhbmQgV2VsZmFyZSBpbiBTMTQzNSwgd2hpY2ggbGltaXQgdGhlIHRyYW5zZmVyIG9mIG1vbmV5cyBmb3IgdHJ1c3RlZSBhbmRcbmJlbmVmaXQgcGF5bWVudHMifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJDaGlsZHJlbidzIE1lbnRhbCBIZWFsdGgiLCAidGV4dCI6ICJQcm92aWRlcyBhc3Nlc3NtZW50IGFuZCBldmFsdWF0aW9uLCBjbGluaWNhbCBjYXNlIG1hbmFnZW1lbnQsIGhvc3BpdGFsaXphdGlvbiwgcmVzaWRlbnRpYWwgdHJlYXRtZW50LCBhbmRcbnRoZXJhcGV1dGljIGZvc3RlciBjYXJlIGZvciBjaGlsZHJlbiB3aXRoIHNlcmlvdXMgZW1vdGlvbmFsIGRpc3R1cmJhbmNlcyJ9LCB7InN1Yl9wcm9ncmFtIjogIkFkdWx0IE1lbnRhbCBIZWFsdGgiLCAidGV4dCI6ICJQcm92aWRlcyBjb21tdW5pdHktYmFzZWQgc2VydmljZXMgZm9yIGFkdWx0cyBleHBlcmllbmNpbmcgc2VyaW91cyBhbmQgcGVyc2lzdGVudCBtZW50YWwgaWxsbmVzcyJ9XX0sIHsibmFtZSI6ICJTdWJzdGFuY2UgQWJ1c2UgVHJlYXRtZW50ICYgUHJldmVudGlvbiIsICJnZiI6IDAsICJkZWQiOiAzMTg3MTAwLCAiZmVkIjogMjM1MjQzMDAsICJ0b3RhbCI6IDI2NzExNDAwLCAiZmVkX3NoYXJlIjogMC44ODA3LCAiZGVkX3NoYXJlIjogMC4xMTkzLCAiYmlsbHMiOiBbIlMxNDI5IiwgIlMxNDM1Il0sICJub3RlcyI6IFt7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJTMTQzNSBpbmNsdWRlZCBzaXggc2VjdGlvbnMgb2YgY29uZGl0aW9ucywgbGltaXRhdGlvbnMsIGFuZCByZXN0cmljdGlvbnMgcmVsZXZhbnQgdG8gdGhpc1xucHJvZ3JhbS4gU2VjdGlvbiAzIHByb3ZpZGVkIHRoYXQgdGhlIE9mZmljZSBvZiB0aGUgU3RhdGUgQ29udHJvbGxlciBzaGFsbCBtYWtlIHBlcmlvZGljIHRyYW5zZmVycyBmcm9tIHRoZSBHZW5lcmFsIEZ1bmQgdG8gdGhlIENvb3BlcmF0aXZlXG5XZWxmYXJlIEZ1bmQsIGFzIGFwcHJvdmVkIGJ5IHRoZSBCb2FyZCBvZiBFeGFtaW5lcnMuIFNlY3Rpb24gNCBwcm92aWRlZCB0aGF0IG5vIGZ1bmRzIGFwcHJvcHJpYXRlZCBmb3IgdHJ1c3RlZSBhbmQgYmVuZWZpdCBwYXltZW50cyBjYW5cbmJlIHRyYW5zZmVycmVkIHRvIGFueSBvdGhlciBleHBlbnNlIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiSGVhbHRoIENhcmUgUG9saWN5IEluaXRpYXRpdmVzIiwgInRleHQiOiAiVGhlIFN1YnN0YW5jZSBBYnVzZSBUcmVhdG1lbnQgJiBQcmV2ZW50aW9uIFByb2dyYW0gd2FzIGluc3RpdHV0ZWQgdG8gcmVkdWNlIHRoZSBpbXBhY3Qgb2YgYWxjb2hvbCBhbmQgb3RoZXJcbmRydWcgYWJ1c2UgYnkgZGV2ZWxvcGluZyB0cmVhdG1lbnQgcHJvZ3JhbXMgZm9yIHBlb3BsZSB3aG8gYXJlIGRlcGVuZGVudCB1cG9uIHRoZXNlIHN1YnN0YW5jZXM7IGFuZCBieSBkZXZlbG9waW5nIHByZXZlbnRpb24gcHJvZ3JhbXNcbmZvciBwZW9wbGUgd2hvIGFyZSBhdCByaXNrIG9mIGRldmVsb3BpbmcgYSBzdWJzdGFuY2UgdXNlIGRlcGVuZGVuY3kifV19LCB7Im5hbWUiOiAiSW5kZXBlbmRlbnQgQ291bmNpbHMiLCAiZ2YiOiA1NjM0MDAsICJkZWQiOiAzNjEwOTAwLCAiZmVkIjogMTM5MDc2MDAsICJ0b3RhbCI6IDE4MDgxOTAwLCAiZmVkX3NoYXJlIjogMC43NjkxLCAiZGVkX3NoYXJlIjogMC4xOTk3LCAiYmlsbHMiOiBbXSwgIm5vdGVzIjogW3sidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlMxNDM1IGluY2x1ZGVkIHRocmVlIHNlY3Rpb25zIG9mIHJlcXVpcmVtZW50cyByZWxldmFudCB0byB0aGlzIHByb2dyYW0uIFNlY3Rpb24gM1xucHJvdmlkZWQgdGhhdCB0aGUgT2ZmaWNlIG9mIHRoZSBTdGF0ZSBDb250cm9sbGVyIHNoYWxsIG1ha2UgcGVyaW9kaWMgdHJhbnNmZXJzIGZyb20gdGhlIEdlbmVyYWwgRnVuZCB0byB0aGUgQ29vcGVyYXRpdmUgV2VsZmFyZSBGdW5kLCBhc1xuYXBwcm92ZWQgYnkgdGhlIEJvYXJkIG9mIEV4YW1pbmVycy4gU2VjdGlvbiA0IHByb3ZpZGVkIHRoYXQgbm8gZnVuZHMgYXBwcm9wcmlhdGVkIGZvciB0cnVzdGVlIGFuZCBiZW5lZml0IHBheW1lbnRzIGNhbiBiZSB0cmFuc2ZlcnJlZCB0b1xuYW55IG90aGVyIGV4cGVuc2UgY2xhc3MuIFNlY3Rpb24gMjYgcHJvdmlkZWQifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJEZXZlbG9wbWVudGFsIERpc2FiaWxpdGllcyBDb3VuY2lsIiwgInRleHQiOiAiTWFpbnRhaW4gYSBjZW50cmFsIHBvaW50IGZvciBjb29wZXJhdGlvbiBhbmQgY29vcmRpbmF0aW9uIGJldHdlZW4gdGhlIHB1YmxpYyBhbmQgcHJpdmF0ZSBzZWN0b3JzIHRvIGVuc3VyZSB0aGF0XG50aG9zZSB3aXRoIGRldmVsb3BtZW50YWwgZGlzYWJpbGl0aWVzIHJlY2VpdmUgbmVjZXNzYXJ5IHNlcnZpY2VzIGFuZCBvdGhlciBhc3Npc3RhbmNlLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiA2Ny02NzAxLCBJZGFobyBDb2RlXSJ9LCB7InN1Yl9wcm9ncmFtIjogIkRvbWVzdGljIFZpb2xlbmNlIENvdW5jaWwiLCAidGV4dCI6ICJQcm92aWRlcyBjb3Vuc2VsaW5nLCBtZWRpY2luZSwgYW5kIGZpbmFuY2lhbCBhc3Npc3RhbmNlIHRvIHZpY3RpbXMgb2YgZG9tZXN0aWMgdmlvbGVuY2UuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OlxuU2VjdGlvbiAzOS01MjAzLCBJZGFobyBDb2RlXSJ9XX0sIHsibmFtZSI6ICJMaWNlbnNpbmcgYW5kIENlcnRpZmljYXRpb24iLCAiZ2YiOiAyMzM2MzAwLCAiZGVkIjogMTA0OTUwMCwgImZlZCI6IDU0MzA3MDAsICJ0b3RhbCI6IDg4MTY1MDAsICJmZWRfc2hhcmUiOiAwLjYxNiwgImRlZF9zaGFyZSI6IDAuMTE5LCAiYmlsbHMiOiBbIlMxNDM0IiwgIlMxNDM1Il0sICJub3RlcyI6IFt7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJTMTQzNSBpbmNsdWRlZCBmaXZlIHNlY3Rpb25zIG9mIHJlcXVpcmVtZW50cyByZWxldmFudCB0byB0aGlzIHByb2dyYW0uIFNlY3Rpb24gM1xucHJvdmlkZWQgdGhhdCB0aGUgT2ZmaWNlIG9mIHRoZSBTdGF0ZSBDb250cm9sbGVyIHNoYWxsIG1ha2UgcGVyaW9kaWMgdHJhbnNmZXJzIGZyb20gdGhlIEdlbmVyYWwgRnVuZCB0byB0aGUgQ29vcGVyYXRpdmUgV2VsZmFyZSBGdW5kLCBhc1xuYXBwcm92ZWQgYnkgdGhlIEJvYXJkIG9mIEV4YW1pbmVycy4gU2VjdGlvbiA0IHByb3ZpZGVkIHRoYXQgbm8gZnVuZHMgYXBwcm9wcmlhdGVkIGZvciB0cnVzdGVlIGFuZCBiZW5lZml0IHBheW1lbnRzIGNhbiBiZSB0cmFuc2ZlcnJlZCB0b1xuYW55IG90aGVyIGV4cGVuc2UgY2xhc3MuIFNlY3Rpb24gNSBwcm92aWRlZCB0In1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiSGVhbHRoIENhcmUgUG9saWN5IEluaXRpYXRpdmVzIiwgInRleHQiOiAiVGhpcyBwcm9ncmFtIHN1cnZleXMsIGluc3BlY3RzLCBsaWNlbnNlcywgYW5kIGNlcnRpZmllcyBoZWFsdGggY2FyZSBmYWNpbGl0aWVzIHRoYXQgcmVxdWlyZSBjZXJ0aWZpY2F0aW9uIG9yIGxpY2Vuc3VyZVxuYnkgZWl0aGVyIHN0YXRlIG9yIGZlZGVyYWwgcmVxdWlyZW1lbnRzLiBUaGUgcHJvZ3JhbSBpbnZlc3RpZ2F0ZXMgY29tcGxhaW50cywgY29uZHVjdHMgb24tc2l0ZSBzdXJ2ZXlzLCBhbmQgdGFrZXMgYXBwcm9wcmlhdGUgbGljZW5zdXJlXG5hY3Rpb24gdG8gcHJvdGVjdCB0aGUgaGVhbHRoIGFuZCBzYWZldHkgb2YgdnVsbmVyYWJsZSBwZW9wbGUgcmVjZWl2aW5nIGhlYWx0aC1yZWxhdGVkIHNlcnZpY2VzIGFuZCBzdXBwb3J0LiBbU3RhdHV0b3J5IEF1dGhvcml0eSBUaXRsZSAzOV0ifV19LCB7Im5hbWUiOiAiRmFtaWx5IGFuZCBDb21tdW5pdHkgUGFydG5lcnNoaXBzIiwgImdmIjogMTAxMzYwMCwgImRlZCI6IDY5NTAwLCAiZmVkIjogNjM1NTkwMCwgInRvdGFsIjogNzQzOTAwMCwgImZlZF9zaGFyZSI6IDAuODU0NCwgImRlZF9zaGFyZSI6IDAuMDA5MywgImJpbGxzIjogWyJTMTQzNSIsICJTMTQ1NCJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkNPTkRJVElPTlMsIExJTUlUQVRJT05TLCBBTkQgUkVTVFJJQ1RJT05TIiwgInRleHQiOiAiUzE0MzUgaW5jbHVkZWQgZm91ciBzZWN0aW9ucyBvZiByZXF1aXJlbWVudHMgcmVsZXZhbnQgdG8gdGhpcyBwcm9ncmFtLiBTZWN0aW9uIDNcbnByb3ZpZGVkIHRoYXQgdGhlIE9mZmljZSBvZiB0aGUgU3RhdGUgQ29udHJvbGxlciBzaGFsbCBtYWtlIHBlcmlvZGljIHRyYW5zZmVycyBmcm9tIHRoZSBHZW5lcmFsIEZ1bmQgdG8gdGhlIENvb3BlcmF0aXZlIFdlbGZhcmUgRnVuZCwgYXNcbmFwcHJvdmVkIGJ5IHRoZSBCb2FyZCBvZiBFeGFtaW5lcnMuIFNlY3Rpb24gNCBwcm92aWRlZCB0aGF0IG5vIGZ1bmRzIGFwcHJvcHJpYXRlZCBmb3IgdHJ1c3RlZSBhbmQgYmVuZWZpdCBwYXltZW50cyBjYW4gYmUgdHJhbnNmZXJyZWQgdG9cbmFueSBvdGhlciBleHBlbnNlIGNsYXNzLiBTZWN0aW9uIDUgcHJvdmlkZWQgdCJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIlNvdXRod2VzdCBJZGFobyBUcmVhdG1lbnQgQ2VudGVyIiwgInRleHQiOiAiRmFtaWx5IGFuZCBDb21tdW5pdHkgUGFydG5lcnNoaXBzIGlzIHJlc3BvbnNpYmxlIGZvciBpbXByb3ZpbmcgY3VzdG9tZXIgc2VydmljZSB0byBjbGllbnRzLiBUaGlzIGlzXG5hY2NvbXBsaXNoZWQgYnk6IDEpIHByb21vdGluZyBjb29yZGluYXRpb24gYWNyb3NzIHByb2dyYW1zOyAyKSBkZWxpdmVyaW5nIGVtZXJnZW5jeSBhc3Npc3RhbmNlIHNlcnZpY2VzIHRocm91Z2ggYSBjb25zb2xpZGF0ZWQgdW5pdDsgMylcbmlkZW50aWZ5aW5nIHNlcnZpY2VzIHRoYXQgY2xpZW50cyBhcmUgYWNjZXNzaW5nIGFjcm9zcyBhbGwgZGl2aXNpb25zIGFuZCBjb29yZGluYXRpbmcgdG8gcmVkdWNlIGR1cGxpY2F0aW9uOyBhbmQgNCkgY29vcmRpbmF0aW5nIGFjY2VzcyB0byBjcm9zcy1cbmRpdmlzaW9uYWwgc3RhZmZpbmcgZm9yIGNsaWVudHMgYXQgcmlzayBvZiBoaWdoZXIgY29zdCBzZXJ2aWNlIG5lZWRzIG9yIG1vcmUgY29tcGxpY2F0ZWQgc2VydmljZSBuZWVkcy4gVGhpcyBwcm9ncmFtIHcifV19XX0sIHsiYXJlYSI6ICJIZWFsdGggYW5kIEh1bWFuIFNlcnZpY2VzIiwgImFnZW5jeSI6ICJEaXZpc2lvbiBvZiBNZWRpY2FpZCIsICJmdHAiOiAzMDMuNSwgImdmIjogMTA0Nzg5OTMwMCwgImRlZCI6IDEyNjUxMDEyMDAsICJmZWQiOiAzMTkzMTE3OTAwLCAidG90YWwiOiA1NTA2MTE4NDAwLCAiZmVkX3NoYXJlIjogMC41Nzk5LCAiZGVkX3NoYXJlIjogMC4yMjk4LCAiYW1lbmRzX2NvZGUiOiB0cnVlLCAiYmlsbHMiOiBbIlMxNDMzIiwgIlMxNDM1Il0sICJub3RlcyI6IFt7InR5cGUiOiAiRkVERVJBTCBNQVRDSCBSQVRFIChGTUFQKSIsICJ0ZXh0IjogIklkYWhvJ3MgcmVndWxhciBNZWRpY2FpZCBGTUFQIGZvciBGWTIwMjcgaXMgNjcuMzElIChDSElQJ3MgZW5oYW5jZWQgcmF0ZSBpcyA3Ny4xMiUpLCBwZXIgSEhTJ3Mgb2ZmaWNpYWwgRmVkZXJhbCBSZWdpc3RlciBub3RpY2UuIFRoYXQgbWVhbnMgZm9yIGV2ZXJ5ICQxIG9mIHN0YXRlIHNwZW5kaW5nIG9uIHJlZ3VsYXIgRk1BUC1tYXRjaGVkIE1lZGljYWlkIHNlcnZpY2VzLCB0aGUgZmVkZXJhbCBnb3Zlcm5tZW50IGNvbnRyaWJ1dGVzIGFib3V0ICQyLjA2IGluIG1hdGNoLiBDdXR0aW5nICQxIG9mIHN0YXRlIEdlbmVyYWwgRnVuZCBmcm9tIHRoYXQgcG9ydGlvbiBvZiBNZWRpY2FpZCBkb2Vzbid0IGp1c3Qgc2F2ZSB0aGUgc3RhdGUgJDEgLS0gaXQgY2FuIHJlbW92ZSByb3VnaGx5ICQzLjA2IG9mIHRvdGFsIGZ1bmRlZCBjYXJlLCBzaW5jZSB0aGUgc3RhdGUncyBzaGFyZSBpcyB3aGF0IHRyaWdnZXJzIHRoZSBmZWRlcmFsIG1hdGNoIGluIHRoZSBmaXJzdCBwbGFjZS4gTm90ZSB0aGUgRGl2aXNpb24gb2YgTWVkaWNhaWQncyAkMSwwNDcuOU0gR2VuZXJhbCBGdW5kIGxpbmUgYmxlbmRzIHNldmVyYWwgZGlmZmVyZW50IG1hdGNoIHJhdGVzIChyZWd1bGFyIEZNQVAsIEFDQSBleHBhbnNpb24gYXQgYSBmaXhlZCA5MCUgZmVkZXJhbCwgQ0hJUCdzIGVuaGFuY2VkIHJhdGUsIGFuZCB+NTAlIGZvciBhZG1pbmlzdHJhdGl2ZSBjb3N0cyksIHNvIHRoaXMgbXVsdGlwbGllciBhcHBsaWVzIG1vc3QgZGlyZWN0bHkgdG8gdHJhZGl0aW9uYWwgTWVkaWNhaWQgc2VydmljZXMsIG5vdCB0aGUgd2hvbGUgbGluZS4ifSwgeyJ0eXBlIjogIkNPTkRJVElPTlMsIExJTUlUQVRJT05TLCBBTkQgUkVTVFJJQ1RJT05TIiwgInRleHQiOiAiUzE0MzUgaW5jbHVkZWQgc2l4IHNlY3Rpb25zIG9mIGNvbmRpdGlvbnMsIGxpbWl0YXRpb25zLCBhbmQgcmVzdHJpY3Rpb25zIHJlbGV2YW50IHRvIHRoaXNcbnByb2dyYW0uIFNlY3Rpb24gMyBwcm92aWRlZCB0aGF0IHRoZSBPZmZpY2Ugb2YgdGhlIFN0YXRlIENvbnRyb2xsZXIgc2hhbGwgbWFrZSBwZXJpb2RpYyB0cmFuc2ZlcnMgZnJvbSB0aGUgR2VuZXJhbCBGdW5kIHRvIHRoZSBDb29wZXJhdGl2ZVxuV2VsZmFyZSBGdW5kLCBhcyBhcHByb3ZlZCBieSB0aGUgQm9hcmQgb2YgRXhhbWluZXJzLiBTZWN0aW9uIDQgcHJvdmlkZWQgdGhhdCBubyBmdW5kcyBhcHByb3ByaWF0ZWQgZm9yIHRydXN0ZWUgYW5kIGJlbmVmaXQgcGF5bWVudHMgY2FuXG5iZSB0cmFuc2ZlcnJlZCB0byBhbnkgb3RoZXIgZXhwZW5zZSJ9LCB7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJTMTQzNSBpbmNsdWRlZCAxMSBzZWN0aW9ucyBvZiBjb25kaXRpb25zLCBsaW1pdGF0aW9ucywgYW5kIHJlc3RyaWN0aW9ucyByZWxldmFudCB0byB0aGlzXG5wcm9ncmFtLiBTZWN0aW9uIDMgcHJvdmlkZWQgdGhhdCB0aGUgT2ZmaWNlIG9mIHRoZSBTdGF0ZSBDb250cm9sbGVyIHNoYWxsIG1ha2UgcGVyaW9kaWMgdHJhbnNmZXJzIGZyb20gdGhlIEdlbmVyYWwgRnVuZCB0byB0aGUgQ29vcGVyYXRpdmVcbldlbGZhcmUgRnVuZCwgYXMgYXBwcm92ZWQgYnkgdGhlIEJvYXJkIG9mIEV4YW1pbmVycy4gU2VjdGlvbiA0IHByb3ZpZGVkIHRoYXQgbm8gZnVuZHMgYXBwcm9wcmlhdGVkIGZvciB0cnVzdGVlIGFuZCBiZW5lZml0IHBheW1lbnRzIGNhblxuYmUgdHJhbnNmZXJyZWQgdG8gYW55IG90aGVyIGV4cGVuc2UgIn1dLCAiZm1hcF9yZWd1bGFyIjogMC42NzMxLCAiZm1hcF9lbmhhbmNlZF9jaGlwIjogMC43NzEyLCAiZm1hcF9jaXRhdGlvbiI6ICJISFMsIFwiRmVkZXJhbCBGaW5hbmNpYWwgUGFydGljaXBhdGlvbiBpbiBTdGF0ZSBBc3Npc3RhbmNlIEV4cGVuZGl0dXJlcy4uLiBmb3IgT2N0b2JlciAxLCAyMDI2LCBUaHJvdWdoIFNlcHRlbWJlciAzMCwgMjAyNyxcIiA5MCBGZWQuIFJlZy4gNTQ2OTYgKE5vdi4gMjgsIDIwMjUpIiwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIk1lZGljYWlkIEFkbWluaXN0cmF0aW9uIGFuZCBNZWRpY2FsIE1nbXQiLCAidGV4dCI6ICJJbmNsdWRlcyBhbGwgZXhwZW5kaXR1cmVzIHRvIGFkbWluaXN0ZXIgYSBjb21wcmVoZW5zaXZlIHByb2dyYW0gb2YgbWVkaWNhbCBjb3ZlcmFnZSB0byBlbGlnaWJsZSByZWNpcGllbnRzIGluXG5JZGFoby4gQ292ZXJhZ2UgaXMgcHJvdmlkZWQgdGhyb3VnaCB0cmFkaXRpb25hbCBNZWRpY2FpZCAoVGl0bGUgWElYKSBhbmQgQ0hJUCAoVGl0bGUgWFhJKS4gQWRtaW5pc3RyYXRpdmUgZnVuY3Rpb25zIGluY2x1ZGUgbWFuYWdpbmcgcHJvdmlkZXJcbnBheW1lbnRzLCBjb250cmFjdHMgd2l0aCBnb3Zlcm5tZW50YWwgYW5kIG5vbi1nb3Zlcm5tZW50YWwgZW50aXRpZXMgZm9yIG1lZGljYWwgbWFuYWdlbWVudCwgZHJ1ZyB1dGlsaXphdGlvbiByZXZpZXdzLCBhbmQgYXNzZXNzbWVudHMuXG5BcyBvZiBGWSAyMDI2LCB0aGUgZm9sbG93aW5nIHNlcnZpY2VzIGFyZSBhbHNvIHVuZGVyIHRoaXMgYnVkZ2V0ZWQgcHJvZ3JhbTogdGhlIE1lZGljYWlkIFByb2dyYW0gSW50ZWdyaXR5IFVuaXQgKGZvcm1lcmx5IHBhcnQgb2YgSW5kaXJlY3RcblN1cHBvcnQgU2VydmljZXMpOyB0aGUgSWRhaG8gQmVoYXZpb3JhbCBIZWFsdGggUGxhbiBzdGFmZiAoZm9ybWVybHkgcGFydCBvIn0sIHsic3ViX3Byb2dyYW0iOiAiQ29vcmRpbmF0ZWQgTWVkaWNhaWQgUGxhbiIsICJ0ZXh0IjogIkJlbmVmaWNpYXJpZXMgY292ZXJlZCBpbiB0aGlzIHBsYW4gcHJpbWFyaWx5IGNvbnNpc3Qgb2YgdGhvc2Ugd2hvIGFyZSBhZ2UgNjUgYW5kIG9sZGVyLiBBbGwgaW5kaXZpZHVhbHMgZHVhbGx5XG5lbGlnaWJsZSBmb3IgTWVkaWNhaWQgYW5kIE1lZGljYXJlLCByZWdhcmRsZXNzIG9mIGFnZSwgbWF5IGVsZWN0IHRvIHJlY2VpdmUgY292ZXJhZ2UgdW5kZXIgdGhpcyBwbGFuIn0sIHsic3ViX3Byb2dyYW0iOiAiRW5oYW5jZWQgTWVkaWNhaWQgUGxhbiIsICJ0ZXh0IjogIk1lZGljYWlkIGVsaWdpYmxlIGdyb3VwIHByaW1hcmlseSBtYWRlIHVwIG9mIGNoaWxkcmVuIGFuZCBhZHVsdHMgKG5vbi1lbGRlcmx5KSB3aXRoIGRpc2FiaWxpdGllcyBvciBvdGhlciBpbmRpdmlkdWFsc1xud2l0aCBzcGVjaWFsIGhlYWx0aCBuZWVkcywgc3VjaCBhcyBmb3N0ZXIgY2hpbGRyZW4uIEluZGl2aWR1YWxzIGluY2x1ZGVkIGluIHRoaXMgcGxhbiBtYXkgZWxlY3QgdG8gcmVtYWluIGluIHRoaXMgcGxhbiBhZnRlciB0aGV5IHR1cm4gNjUgeWVhcnMgb2xkIn0sIHsic3ViX3Byb2dyYW0iOiAiQmFzaWMgTWVkaWNhaWQgUGxhbiIsICJ0ZXh0IjogIk1lZGljYWlkIGVsaWdpYmxlIGdyb3VwIHByaW1hcmlseSBjb25zaXN0aW5nIG9mIFByZWduYW50IFdvbWVuIGFuZCBDaGlsZHJlbiAoUFdDKSwgRmFtaWx5IE1lZGljYWlkLCBhbmRcbklkYWhvJ3MgQ2hpbGRyZW4gSGVhbHRoIEluc3VyYW5jZSBQcm9ncmFtIChDSElQKS4gVGhlc2UgcG9wdWxhdGlvbnMgYXJlIGFzc3VtZWQgdG8gaGF2ZSBhdmVyYWdlIGxldmVscyBvZiBoZWFsdGggYW5kIGRpc2Vhc2UifSwgeyJzdWJfcHJvZ3JhbSI6ICJFeHBhbnNpb24gTWVkaWNhaWQgUGxhbiIsICJ0ZXh0IjogIkluIE5vdmVtYmVyIDIwMTgsIDYxJSBvZiB0aGUgcGVvcGxlIG9mIElkYWhvIGFwcHJvdmVkIE1lZGljYWlkIGV4cGFuc2lvbiB3aXRoIHBhc3NhZ2Ugb2YgUHJvcG9zaXRpb24gMi5cblRoaXMgYmFsbG90IGluaXRpYXRpdmUgYWxsb3dlZCBmb3IgSWRhaG9hbnMgd2l0aCBhbiBpbmNvbWUgYXQgMTMzJSBvciBsZXNzIG9mIHRoZSBmZWRlcmFsIHBvdmVydHkgbGltaXQgKEZQTCkgdG8gZW5yb2xsIGluIE1lZGljYWlkLiBTZXJ2aWNlcyBmb3JcbmV4cGFuc2lvbiBhcmUgb3V0bGluZWQgaW4gQ2hhcHRlciAyLCBUaXRsZSA1NiwgSWRhaG8gQ29kZSwgYW5kIHdlbnQgbGl2ZSBvbiBKYW51YXJ5IDEsIDIwMjAifSwgeyJzdWJfcHJvZ3JhbSI6ICJIb3NwaXRhbCBBc3Nlc3NtZW50IiwgInRleHQiOiAiQ3JlYXRlZCBkdXJpbmcgdGhlIDIwMjYgbGVnaXNsYXRpdmUgc2Vzc2lvbiwgdGhpcyBwcm9ncmFtIHNlcnZlcyB0byBpZGVudGlmeSBhbmQgdHJhY2sgYXBwcm9wcmlhdGlvbiBhbmRcbmV4cGVuZGl0dXJlcyByZWxhdGVkIHRvIHRoZSB1cHBlci1wYXltZW50IGxpbWl0IChVUEwpIHN1cHBsZW1lbnRhbCBwYXltZW50IHByb2dyYW0uIE1lZGljYWlkIFVQTCBzdXBwbGVtZW50YWwgcGF5bWVudHMgYXJlIGFkZGl0aW9uYWwsXG5ub24tY2xhaW0tYmFzZWQgZnVuZHMgc3RhdGVzIHBheSB0byBwcm92aWRlcnMgKGhvc3BpdGFscywgaW50ZXJtZWRpYXRlIGNhcmUgZmFjaWxpdGllcywgbnVyc2luZyBmYWNpbGl0aWVzKSBpbiBmZWUtZm9yLXNlcnZpY2UgKEZGUykgbW9kZWxzLlxuVGhlc2UgcGF5bWVudHMgY292ZXIgdGhlIGdhcCBiZXR3ZWVuIGJhc2UgTWVkaWNhaWQgcmF0ZXMgYW5kIHdoYXQgTWVkaWNhcmUgd291bGQgaGF2ZSBwYWlkIGZvciB0aGUgc2FtZSBzZXJ2aWNlcy4gQWxzbyBpbmNsdWRlZCBpbiB0aGlzXG5wcm9ncmFtIGFyZSBEaXNwcm9wb3J0aW9uYXRlIFNoYXJlIEhvc3BpdGFsIChEU0gpIHBheW1lbnRzLCB3aGljaCBhcmUgcmVxdWlyZWQgcGF5bSJ9LCB7InN1Yl9wcm9ncmFtIjogIkV4dGVuZGVkIEVtcGxveW1lbnQgU2VydmljZXMiLCAidGV4dCI6ICJFeHRlbmRlZCBFbXBsb3ltZW50IFNlcnZpY2VzIChFRVMpIGlzIGEgcHJvZ3JhbSBkZXNpZ25lZCB0byBwcm92aWRlIHJlbXVuZXJhdGl2ZSB3b3JrIGFuZCBzdXBwb3J0IGZvclxuYWR1bHRzIHdpdGggZGV2ZWxvcG1lbnRhbCBkaXNhYmlsaXRpZXMgb3IgbWVudGFsIGlsbG5lc3Mgd2hvIGxhY2sgdGhlIHNraWxscyBhbmQgZXhwZXJpZW5jZSB0byBvYnRhaW4gYW5kIG1haW50YWluIGVtcGxveW1lbnQgaW4gdGhlXG5jb21wZXRpdGl2ZSBsYWJvciBtYXJrZXQuIFRoaXMgcHJvZ3JhbSB3YXMgcHJldmlvdXNseSBuYW1lZCBcIkNvbW11bml0eSBTdXBwb3J0ZWQgRW1wbG95bWVudC5cIiBbU3RhdHV0b3J5IEF1dGhvcml0eTogQ2hhcHRlciAxNywgVGl0bGVcbjU2LCBJZGFobyBDb2RlIF0gVGhlIGJ1ZGdldGVkIHByb2dyYW0gRUVTIHdhcyBtb3ZlZCB0byB0aGUgRGl2aXNpb24gb2YgTWVkaWNhaWQgZnJvbSB0aGUgRGl2aXNpb24gb2YgU2VydmljZXMgZm9yIHRoZSBEZXZlbG9wbWVudGFsbHlcbkRpc2FibGVkIGJlZ2lubmluZyBpbiBGWSAyMDI2In1dfSwgeyJhcmVhIjogIkhlYWx0aCBhbmQgSHVtYW4gU2VydmljZXMiLCAiYWdlbmN5IjogIlN0YXRlIEluZGVwZW5kZW50IExpdmluZyBDb3VuY2lsIiwgImZ0cCI6IDQuMCwgImdmIjogMjgzNjAwLCAiZGVkIjogNDA3MDAwLCAiZmVkIjogMCwgInRvdGFsIjogNjkwNjAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMC41ODkzLCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJTMTEzMiIsICJTMTQzNSJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkRvbWVzdGljIFZpb2xlbmNlIENvdW5jaWwiLCAidGV4dCI6ICJUaGUgU3RhdGUgSW5kZXBlbmRlbnQgTGl2aW5nIENvdW5jaWwgKFNJTEMpIHByb21vdGVzIGluZGVwZW5kZW50IGxpdmluZyB0byBtYXhpbWl6ZSB0aGUgaW5kZXBlbmRlbmNlIGFuZFxucHJvZHVjdGl2aXR5IG9mIGluZGl2aWR1YWxzIHdpdGggZGlzYWJpbGl0aWVzIGFuZCB0aGUgaW50ZWdyYXRpb24gYW5kIGZ1bGwgaW5jbHVzaW9uIG9mIGluZGl2aWR1YWxzIHdpdGggZGlzYWJpbGl0aWVzIGludG8gbWFpbnN0cmVhbSBzb2NpZXR5LlxuW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNTYtMTIwMSwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifV19LCB7ImFyZWEiOiAiUHVibGljIFNhZmV0eSIsICJhZ2VuY3kiOiAiRGVwYXJ0bWVudCBvZiBDb3JyZWN0aW9uIiwgImZ0cCI6IDIyNTQuMzUsICJnZiI6IDM4NTgwNjgwMCwgImRlZCI6IDQwNzEzMzAwLCAiZmVkIjogMjQ5NDYwMCwgInRvdGFsIjogNDI5MDE0NzAwLCAiZmVkX3NoYXJlIjogMC4wMDU4LCAiZGVkX3NoYXJlIjogMC4wOTQ5LCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJTMTM2MSIsICJTMTM4OCJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkNPTkRJVElPTlMsIExJTUlUQVRJT05TLCBBTkQgUkVTVFJJQ1RJT05TIiwgInRleHQiOiAiU2VjdGlvbiAzIG9mIFMxMzg4IHJlcXVpcmVkIGEgcmVwb3J0IG9uIENvbW11bml0eSBSZWVudHJ5IENlbnRlciBlZmZpY2llbmN5IGFuZFxuZWZmZWN0aXZlbmVzcywgYW5kIHJlcXVpcmVkIHRoZSBkZXBhcnRtZW50IHRvIGluaXRpYXRlIGEgcmVxdWVzdCBmb3IgaW5mb3JtYXRpb24gdG8gZXZhbHVhdGUgcG90ZW50aWFsIG91dHNvdXJjaW5nIG1vZGVscyJ9LCB7InR5cGUiOiAiQlVER0VUIExBVyBFWEVNUFRJT05TIiwgInRleHQiOiAiVGhpcyBhZ2VuY3kgcmVjZWl2ZWQgc3BlY2lmaWMgbGVnaXNsYXRpdmUgYXV0aG9yaXphdGlvbiBpbiBTMTM2MSB0aGF0IGV4ZW1wdGVkIHRoZSBhZ2VuY3kgZnJvbSB0aGUgMTAlXG50cmFuc2ZlciBsaW1pdGF0aW9uIGJldHdlZW4gYnVkZ2V0ZWQgcHJvZ3JhbXMsIHByb3ZpZGVkIHRoYXQgbW9uZXlzIGFwcHJvcHJpYXRlZCB0byB0aGUgQ291bnR5IGFuZCBPdXQtb2YtU3RhdGUgUGxhY2VtZW50IFByb2dyYW0gYW5kXG50aGUgTWVkaWNhbCBTZXJ2aWNlcyBQcm9ncmFtIG1heSBvbmx5IGJlIHRyYW5zZmVycmVkIGJldHdlZW4gc2FpZCBwcm9ncmFtcyJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkRvbWVzdGljIFZpb2xlbmNlIENvdW5jaWwiLCAidGV4dCI6ICJNYW5hZ2VtZW50IFNlcnZpY2VzIGluY2x1ZGVzIHRoZSBCb2FyZCBvZiBDb3JyZWN0aW9uIGFuZCB0aGUgRGlyZWN0b3IncyBPZmZpY2UuIEl0IGFsc28gaGFzIGRlcGFydG1lbnQtd2lkZVxub3ZlcnNpZ2h0IG9mIGh1bWFuIHJlc291cmNlcywgaW5mb3JtYXRpb24gc2VydmljZXMsIGNvbnN0cnVjdGlvbiwgZmluYW5jaWFsIHNlcnZpY2VzLCBjZW50cmFsIHJlY29yZHMsIHJlc2VhcmNoIGFuZCBxdWFsaXR5IGFzc3VyYW5jZSwgYW5kXG5sZWdhbCBzZXJ2aWNlcyJ9LCB7InN1Yl9wcm9ncmFtIjogIlByaXNvbnMgQWRtaW5pc3RyYXRpb24iLCAidGV4dCI6ICJQcmlzb25zIEFkbWluaXN0cmF0aW9uIGhhcyBvdmVyc2lnaHQgb3ZlciBJZGFobydzIHRlbiBzdGF0ZSBwcmlzb25zLiBJdCBlbnN1cmVzIGNvbXBsaWFuY2Ugd2l0aCBhbGwgcG9saWNpZXMgYW5kXG5wcm9jZWR1cmVzLCBhbmQgc3RhdGUgYW5kIGZlZGVyYWwgZ3VpZGVsaW5lcyJ9LCB7InN1Yl9wcm9ncmFtIjogIklkYWhvIFN0YXRlIENvcnJlY3Rpb25hbCBJbnN0aXR1dGlvbiAtIEJvaXNlIiwgInRleHQiOiAiSWRhaG8gU3RhdGUgQ29ycmVjdGlvbmFsIEluc3RpdHV0aW9uIGlzIHRoZSBzdGF0ZSdzIG9sZGVzdCBhbmQgbGFyZ2VzdCBzdGF0ZS1vcGVyYXRlZCBmYWNpbGl0eS4gSXQgaXMgdGhlIHByaW1hcnkgZmFjaWxpdHlcbmZvciBsb25nLXRlcm0gbWFsZSwgbWVkaXVtLWN1c3RvZHkgb2ZmZW5kZXJzLiBJdCBhbHNvIGhhcyBzcGVjaWFsLXVzZSBiZWRzIGZvciBpbmZpcm1hcnksIG91dHBhdGllbnQgbWVudGFsIGhlYWx0aCwgYW5kIGdlcmlhdHJpYyBpbm1hdGVzLiBUaGVcbmNvbXBvdW5kIGluY2x1ZGVzIGEgY2hhcGVsLCByZWNyZWF0aW9uIGNlbnRlciwgc2Nob29sLCBsYXJnZSBjb3JyZWN0aW9uYWwgaW5kdXN0cmllcyBvcGVyYXRpb24sIGFuZCBhIG1lZGljYWwgY2xpbmljLiBUaGUgc2FmZSBvcGVyYXRpbmdcbmNhcGFjaXR5IGF0IElTQ0kgaXMgMSw1NzcgYmVkcyJ9LCB7InN1Yl9wcm9ncmFtIjogIklkYWhvIFN0YXRlIENvcnJlY3Rpb25hbCBDZW50ZXIgLSBCb2lzZSIsICJ0ZXh0IjogIlRoZSBJZGFobyBTdGF0ZSBDb3JyZWN0aW9uYWwgQ2VudGVyIG9wZW5lZCBpbiBKdWx5IDIwMDAgYXMgdGhlIGZpcnN0IHN0YXRlLW93bmVkLCBwcml2YXRlbHkgb3BlcmF0ZWQgZmFjaWxpdHkuIEl0XG53YXMgYnVpbHQgb24gc3RhdGUgcHJvcGVydHkgYnkgdGhlIENvcnJlY3Rpb25zIENvcnAuIG9mIEFtZXJpY2EgKENDQSkgYW5kIG9wZXJhdGVkIGJ5IENDQSB1bnRpbCBKdWx5IDEsIDIwMTQsIGF0IHdoaWNoIHRpbWUgdGhlIERlcGFydG1lbnRcbm9mIENvcnJlY3Rpb24gYXNzdW1lZCBmdWxsIG1hbmFnZW1lbnQgYW5kIG9wZXJhdGlvbi4gSXQgaG91c2VzIGNsb3NlLCBtZWRpdW0sIGFuZCBtaW5pbXVtLWN1c3RvZHkgbWFsZSBvZmZlbmRlcnMuIFRoZSBzYWZlIG9wZXJhdGluZ1xuY2FwYWNpdHkgYXQgdGhpcyBmYWNpbGl0eSBpcyAyLDEyOCBiZWRzIn0sIHsic3ViX3Byb2dyYW0iOiAiSWRhaG8gQ29ycmVjdGlvbmFsIEluc3RpdHV0aW9uIC0gT3JvZmlubyIsICJ0ZXh0IjogIklkYWhvIENvcnJlY3Rpb25hbCBJbnN0aXR1dGlvbiAtIE9yb2Zpbm8gaXMgYSBtb2RpZmllZCBzdGF0ZSBzY2hvb2wgYW5kIGhvc3BpdGFsIG1lbnRhbCBoZWFsdGggYnVpbGRpbmcuIEEgbmV3XG53aW5nIHdhcyBhZGRlZCBpbiAxOTg4LiBJdCBpcyBhIHN0YW5kYXJkIHByaXNvbiBkZXNpZ25lZCBmb3IgbWFsZSBpbm1hdGVzIG9mIGFsbCBjdXN0b2R5IGxldmVscyBpbmNsdWRpbmcgcHJvdGVjdGl2ZSBjdXN0b2R5IGlubWF0ZXMuIElDSU9cbm9mZmVycyB2b2NhdGlvbmFsIHdvcmsgcHJvZ3JhbXMsIGVkdWNhdGlvbiwgYW5kIG90aGVyIHByb2dyYW1taW5nIG9wcG9ydHVuaXRpZXMgd2l0aCBhIHNhZmUgb3BlcmF0aW5nIGNhcGFjaXR5IG9mIDU4OCBiZWRzIn0sIHsic3ViX3Byb2dyYW0iOiAiSWRhaG8gTWF4aW11bSBTZWN1cml0eSBJbnN0aXR1dGlvbiAtIEJvaXNlIiwgInRleHQiOiAiSWRhaG8gTWF4aW11bSBTZWN1cml0eSBJbnN0aXR1dGlvbiAtIEJvaXNlIG9wZW5lZCBpbiAxOTg5IHRvIGNvbmZpbmUgSWRhaG8ncyBoaWdoZXN0IHJpc2sgb2ZmZW5kZXJzLiBUaGUgcHJpc29uXG5pcyBsb2NhdGVkIHdpdGhpbiBhIGRvdWJsZSBwZXJpbWV0ZXIgZmVuY2UgcmVpbmZvcmNlZCB3aXRoIHJhem9yIHdpcmUgYW5kIGFuIGVsZWN0cm9uaWMgZGV0ZWN0aW9uIHN5c3RlbS4gVGhlIGlubWF0ZSBwb3B1bGF0aW9uIGlzIGNvbXBvc2VkXG5vZiBhIGxhcmdlIG51bWJlciBvZiBtZW50YWwgaGVhbHRoIGlubWF0ZXMsIGluY2x1ZGluZyBjaXZpbCBjb21taXRtZW50cy4gSU1TSSBoYXMgcmVzdHJpY3RpdmUgaG91c2luZyBiZWRzIGRlZGljYXRlZCB0byBhZG1pbmlzdHJhdGl2ZVxuc2VncmVnYXRpb24gYW5kIGRlYXRoIHJvdy4gVGhlIHJlbWFpbmluZyBiZWRzIGFyZSBhbGxvY2F0ZWQgZm9yIGNsb3NlLWN1c3RvZHksIGdlbmVyYWwgcG9wdWxhdGlvbiBpbm1hdGVzLiBUaGUgc2FmZSBvcGVyYXRpbmcgY2FwYWNpdHkgYXRcbklNU0kgaXMgNTA4IGJlZHMuIE9mIHRoYXQgbnVtYmVyLCAzMiBiZWRzIGFyZSBkZWRpY2F0ZWQgZm9yIG1lbnRhbCBoZWFsdGgsICJ9LCB7InN1Yl9wcm9ncmFtIjogIk5vcnRoIElkYWhvIENvcnJlY3Rpb25hbCBJbnN0aXR1dGlvbiAtIENvdHRvbndvb2QiLCAidGV4dCI6ICJOb3J0aCBJZGFobyBDb3JyZWN0aW9uYWwgSW5zdGl0dXRpb24gLSBDb3R0b253b29kIGlzIGEgZm9ybWVyIG1pbGl0YXJ5IHJhZGFyIHN0YXRpb24gbm9ydGggb2YgdGhlIHRvd24gb2ZcbkNvdHRvbndvb2QuIFRoaXMgaXMgYSBwcm9ncmFtLXNwZWNpZmljIHByaXNvbiBkZXNpZ25lZCBmb3IgbWFsZSBpbm1hdGVzIHNlbnRlbmNlZCB0byBhIHJldGFpbmVkIGp1cmlzZGljdGlvbiBjb21taXRtZW50IChyaWRlcikgYnkgdGhlXG5jb3VydC4gSXQgcHJvdmlkZXMgYSBzZW50ZW5jaW5nIGFsdGVybmF0aXZlIGZvciB0aGUgY291cnRzIHRvIHRhcmdldCB0aG9zZSBvZmZlbmRlcnMgd2hvIG1pZ2h0LCBhZnRlciBhIHBlcmlvZCBvZiBwcm9ncmFtbWluZyBhbmQgZXZhbHVhdGlvbiwgYmVcbnZpYWJsZSBjYW5kaWRhdGVzIGZvciBwcm9iYXRpb24gcmF0aGVyIHRoYW4gaW5jYXJjZXJhdGlvbi4gVGhlIHNhZmUgb3BlcmF0aW5nIGNhcGFjaXR5IGF0IE5JQ0kgaXMgNDI4IGJlZHMifSwgeyJzdWJfcHJvZ3JhbSI6ICJTb3V0aCBJZGFobyBDb3JyZWN0aW9uYWwgSW5zdGl0dXRpb24gLSBCb2lzZSIsICJ0ZXh0IjogIlNvdXRoIElkYWhvIENvcnJlY3Rpb25hbCBJbnN0aXR1dGlvbiAtIEJvaXNlIChTSUNJKSBpcyBhIHdvcmtpbmcgZmFjaWxpdHkgd2hpY2ggaG91c2VzIDM3MiBtYWxlIG1pbmltdW0tY3VzdG9keVxuaW5tYXRlcyBpbiBhIGRvcm1pdG9yeSBzZXR0aW5nLiBTSUNJIGlubWF0ZXMgd29yayBpbiByb2FkIGNyZXdzIGZvciB0aGUgSWRhaG8gVHJhbnNwb3J0YXRpb24gRGVwYXJ0bWVudCBhbmQgaW4gZmlyZWZpZ2h0aW5nIGNyZXdzIGZvciB0aGUgVVNcbkZvcmVzdCBTZXJ2aWNlLiBTSUNJIGFsc28gY29udGFpbnMgMzk2IGJlZHMgZm9yIGZlbWFsZXMsIGhvdXNpbmcgbWluaW11bSBhbmQgbWVkaXVtLWN1c3RvZHkgaW5tYXRlcy4gSW4gMjAyMywgdGhlIEVhc3QgZG9ybSB3YXNcbmNvbXBsZXRlZCB3aGljaCBob3VzZXMgYW4gYWRkaXRpb25hbCA3MiBtaW5pbXVtIGN1c3RvZHkgbWFsZSBiZWRzIFRoZSBzYWZlIG9wZXJhdGluZyBjYXBhY2l0eSBvZiB0aGUgcHJpc29uIGlzIDg0MCBiZWRzIn0sIHsic3ViX3Byb2dyYW0iOiAiU291dGggSWRhaG8gQ29ycmVjdGlvbmFsIEluc3RpdHV0aW9uIC0gQm9pc2UiLCAidGV4dCI6ICJTdC4gQW50aG9ueSBXb3JrIENhbXAgKFNBV0MpLCBsb2NhdGVkIGluIHRoZSBlYXN0ZXJuIElkYWhvIHRvd24gb2YgU3QuIEFudGhvbnksIGlzIGRlc2lnbmVkIGZvciBsb3ctcmlza1xubWluaW11bS1jdXN0b2R5IG1hbGUgaW5tYXRlcy4gVGhlIHByb2dyYW0gZm9jdXMgaXMgdG8gcHJvdmlkZSB3b3JrIHRoZXJhcHkgYnkgb2ZmZXJpbmcgZnVsbC10aW1lLCBjb25zdHJ1Y3RpdmUsIHBhaWQgZW1wbG95bWVudCB0byBpbm1hdGVzXG50aHJvdWdoIGNvbnRyYWN0ZWQgd29yayBhbmQgcHVibGljIHNlcnZpY2UgcHJvamVjdHMgd2l0aCBnb3Zlcm5tZW50IGFnZW5jaWVzLCBub24tcHJvZml0cywgYW5kIHByaXZhdGUgZW1wbG95ZXJzLiBTQVdDIGFsc28gZnVuY3Rpb25zIGFzXG5hIHByZS1yZWxlYXNlIGNlbnRlciwgb2ZmZXJpbmcgc3Vic3RhbmNlIGFidXNlIHRyZWF0bWVudCwgYWNhZGVtaWMsIGFuZCB2b2NhdGlvbmFsIGVkdWNhdGlvbi4gVGhlIHNhZmUgb3BlcmF0aW5nIGNhcGFjaXR5IGF0IHRoaXMgZmFjaWxpdHkgaXNcbjQwMiBiZWRzIn0sIHsic3ViX3Byb2dyYW0iOiAiU291dGggSWRhaG8gQ29ycmVjdGlvbmFsIEluc3RpdHV0aW9uIC0gQm9pc2UiLCAidGV4dCI6ICJQb2NhdGVsbG8gV29tZW4ncyBDb3JyZWN0aW9uYWwgQ2VudGVyIChQV0NDKSBpcyB0aGUgc3RhdGUncyBmaXJzdCBmYWNpbGl0eSBkZXNpZ25lZCBzcGVjaWZpY2FsbHkgdG8gbWVldCB0aGVcbnVuaXF1ZSBwcm9ncmFtIG5lZWRzIG9mIGZlbWFsZSBvZmZlbmRlcnMuIEl0IG9wZW5lZCBpbiAxOTk0IGFuZCBob3VzZXMgYWxsIGN1c3RvZHkgbGV2ZWxzLiBUaGUgaW5zdGl0dXRpb24gaGFzIGl0cyBvd24gcmVjZXB0aW9uIGFuZFxuZGlhZ25vc3RpYyBjZW50ZXIsIHByZS1yZWxlYXNlIHByb2dyYW0sIGFuZCB3b3JrIGNlbnRlciByZWxlYXNlLiBUaGUgc2FmZSBvcGVyYXRpbmcgY2FwYWNpdHkgYXQgUFdDQyBpcyAzMjggYmVkcyJ9LCB7InN1Yl9wcm9ncmFtIjogIlNvdXRoIElkYWhvIENvcnJlY3Rpb25hbCBJbnN0aXR1dGlvbiAtIEJvaXNlIiwgInRleHQiOiAiVGhlIFNvdXRoIEJvaXNlIFdvbWVuJ3MgQ29ycmVjdGlvbmFsIENlbnRlciAoU0JXQ0MpIGhvdXNlcyBmZW1hbGVzIHVuZGVyIGNvdXJ0LXJldGFpbmVkIGp1cmlzZGljdGlvbi4gSXRcbnByb3ZpZGVzIGEgc2VudGVuY2luZyBhbHRlcm5hdGl2ZSBmb3IgdGhlIGNvdXJ0cyB0byB0YXJnZXQgdGhvc2Ugb2ZmZW5kZXJzIHdobyBtaWdodCwgYWZ0ZXIgYSBwZXJpb2Qgb2YgcHJvZ3JhbW1pbmcgYW5kIGV2YWx1YXRpb24sIGJlIHZpYWJsZVxuY2FuZGlkYXRlcyBmb3IgcHJvYmF0aW9uIHJhdGhlciB0aGFuIGluY2FyY2VyYXRpb24uIFRoZSBzYWZlIG9wZXJhdGluZyBjYXBhY2l0eSBhdCBTQldDQyBpcyAzMDkgYmVkcyJ9LCB7InN1Yl9wcm9ncmFtIjogIlNvdXRoIElkYWhvIENvcnJlY3Rpb25hbCBJbnN0aXR1dGlvbiAtIEJvaXNlIiwgInRleHQiOiAiVGhlIE1vdW50YWluIFZpZXcgVHJhbnNmb3JtYXRpb24gQ2VudGVyIChNVlRDKSBpcyB1c2VkIHRvIGhvdXNlIHJldGFpbmVkIGp1cmlzZGljdGlvbiAocmlkZXIpIG9mZmVuZGVycyBhbmRcbmhhcyBhIHNhZmUgb3BlcmF0aW5nIGNhcGFjaXR5IG9mIDQ0MiBiZWRzLiBNVlRDIHdhcyBjcmVhdGVkIHVuZGVyIHRoZSBEaXZpc2lvbiBvZiBQcmlzb25zIHN0YXJ0aW5nIGluIEZZIDIwMjQsIGFuZCB3YXMgcHJldmlvdXNseSBrbm93blxuYXMgdGhlIENvcnJlY3Rpb25hbCBBbHRlcm5hdGl2ZSBQbGFjZW1lbnQgUHJvZ3JhbSAoQ0FQUCkuIEl0IHdhcyBhIHByaXZhdGVseSBvcGVyYXRlZCB0cmVhdG1lbnQgZmFjaWxpdHkgdGhhdCBwcm92aWRlZCBpbnRlbnNpdmUgcmVzaWRlbnRpYWxcbnN1YnN0YW5jZSBhYnVzZSBhbmQgY29nbml0aXZlIHByb2dyYW1taW5nIGZvciBvZmZlbmRlcnMuIFRoaXMgZmFjaWxpdHkgaGFzIGFsc28gYmVlbiB1c2VkIHRvIHByb3ZpZGUgc2FuY3Rpb24gYW5kIGludGVydmVudGlvbiBjYXBhYmlsaXRpZXNcbnRvIHByb2JhdGlvbiBhbmQgcGFyb2xlIG9mZmVuZGVycyJ9LCB7InN1Yl9wcm9ncmFtIjogIkNvbW11bml0eSBTdXBlcnZpc2lvbiIsICJ0ZXh0IjogIlRoaXMgcHJvZ3JhbSBpcyByZXNwb25zaWJsZSBmb3Igc3VwZXJ2aXNpbmcgYWxsIGFkdWx0IGZlbG9ueSBwcm9iYXRpb25lcnMgYW5kIHBhcm9sZWVzIHRvIHN1cHBvcnQgY29tbXVuaXR5XG5zYWZldHkgYW5kIHRvIHByb3ZpZGUgb2ZmZW5kZXJzIG9wcG9ydHVuaXRpZXMgZm9yIHN1Y2Nlc3NmdWwgY2hhbmdlLiBUaGUgZGl2aXNpb24gcHJlcGFyZXMgcHJlc2VudGVuY2UgaW52ZXN0aWdhdGlvbiByZXBvcnRzIGZvciBjb3VydHMgaW5cbklkYWhvJ3Mgc2V2ZW4ganVkaWNpYWwgZGlzdHJpY3RzLiBDb3Vuc2Vsb3JzIHByb3ZpZGUgZ3JvdXAgYW5kIGluZGl2aWR1YWwgc3Vic3RhbmNlIGFidXNlIHRyZWF0bWVudCBvciBvdGhlciB0eXBlcyBvZiB0cmVhdG1lbnQuIFRoZXJlIGFyZVxuc2V2ZW4gZGlzdHJpY3Qgb2ZmaWNlcyB3aXRoIDE2IHNhdGVsbGl0ZSBvZmZpY2VzIGFyb3VuZCB0aGUgc3RhdGUuIFRoaXMgcHJvZ3JhbSBwcmV2aW91c2x5IGFjY291bnRlZCBmb3IgdGhlIGNvbnRyYWN0IGNvc3RzIG9mIG9wZXJhdGluZyBzZXZlblxuQ29tbXVuaXR5IEludGVydmVudGlvbiBTdGF0aW9ucyAoQ0lTcykgc3RhdGV3aWRlOiBvbmUgaW4gZWFjaCBqdWRpY2lhbCAifSwgeyJzdWJfcHJvZ3JhbSI6ICJDb21tdW5pdHkgUmVlbnRyeSBDZW50ZXJzIiwgInRleHQiOiAiVGhlIGRlcGFydG1lbnQgc3VwZXJ2aXNlcyBmZWxvbnkgb2ZmZW5kZXJzIGluIGZpdmUgY29tbXVuaXR5IHJlZW50cnkgY2VudGVycyAoQ1JDcykgbG9jYXRlZCBpbiBOYW1wYSwgQm9pc2VcbigyKSwgSWRhaG8gRmFsbHMsIGFuZCBUd2luIEZhbGxzLiBBIHNpeHRoIGNvbW11bml0eSByZWVudHJ5IGNlbnRlciBpcyBleHBlY3RlZCB0byBvcGVuIGluIFBvY2F0ZWxsbyBpbiBGWSAyMDI3LiBUaGVzZSBmYWNpbGl0aWVzIGhvdXNlIGNvdXJ0LVxucmV0YWluZWQganVyaXNkaWN0aW9uYWwgb2ZmZW5kZXJzIHRvZ2V0aGVyIHdpdGggb2ZmZW5kZXJzIHByZXBhcmluZyBmb3IgcGFyb2xlIGZyb20gc3RhdGUgcHJpc29ucy4gVGhlc2UgYXJlIHJlc2lkZW50aWFsIGZhY2lsaXRpZXMgdGhhdCBhbGxvd1xub2ZmZW5kZXJzIHRvIHdvcmsgd2hpbGUgYmVjb21pbmcgcmV1bml0ZWQgd2l0aCBmYW1pbGllcyBhbmQgdGhlIGNvbW11bml0eSwgYW5kIHByb3ZpZGUgcHJvdGVjdGlvbiB0byB0aGUgY29tbXVuaXR5IHRocm91Z2ggaGlnaFxuYWNjb3VudGFiaWxpdHkgYW5kIHNlY3VyaXR5IG9mIHRoZSBvZmZlbmRlciBpbiB0aGUgQ1JDIHByb2dyYW0uIFRoZSB0b3RhbCBzYWZlICJ9LCB7InN1Yl9wcm9ncmFtIjogIkNvbW11bml0eSBSZWVudHJ5IENlbnRlcnMiLCAidGV4dCI6ICJUaGUgTWVkaWNhbCBTZXJ2aWNlcyBQcm9ncmFtIGluY2x1ZGVzIGNvc3RzIHBhaWQgdG8gdGhlIGZvci1wcm9maXQsIHByaXZhdGUgbWVkaWNhbCBzZXJ2aWNlIHByb3ZpZGVyIGZvciBJZGFob1xub2ZmZW5kZXJzIGluIHN0YXRlIHByaXNvbnMgYW5kIGNvbW11bml0eSByZWVudHJ5IGNlbnRlcnMifV0sICJjaGlsZHJlbiI6IFt7Im5hbWUiOiAiU3RhdGUgUHJpc29ucyIsICJnZiI6IDE3MjU3NDkwMCwgImRlZCI6IDE4Mjc4MjAwLCAiZmVkIjogMTQ5OTMwMCwgInRvdGFsIjogMTkyMzUyNDAwLCAiZmVkX3NoYXJlIjogMC4wMDc4LCAiZGVkX3NoYXJlIjogMC4wOTUsICJiaWxscyI6IFsiUzEzNjEiLCAiUzEzODgiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJCVURHRVQgTEFXIEVYRU1QVElPTlMiLCAidGV4dCI6ICJUaGlzIGFnZW5jeSByZWNlaXZlZCBzcGVjaWZpYyBsZWdpc2xhdGl2ZSBhdXRob3JpemF0aW9uIGluIFMxMzYxIHRoYXQgZXhlbXB0ZWQgdGhlIGFnZW5jeSBmcm9tIHRoZSAxMCVcbnRyYW5zZmVyIGxpbWl0YXRpb24gYmV0d2VlbiBidWRnZXRlZCBwcm9ncmFtcywgcHJvdmlkZWQgdGhhdCBtb25leXMgYXBwcm9wcmlhdGVkIHRvIHRoZSBDb3VudHkgYW5kIE91dC1vZi1TdGF0ZSBQbGFjZW1lbnQgUHJvZ3JhbSBhbmRcbnRoZSBNZWRpY2FsIFNlcnZpY2VzIFByb2dyYW0gbWF5IG9ubHkgYmUgdHJhbnNmZXJyZWQgYmV0d2VlbiBzYWlkIHByb2dyYW1zIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiUHJpc29ucyBBZG1pbmlzdHJhdGlvbiIsICJ0ZXh0IjogIlByaXNvbnMgQWRtaW5pc3RyYXRpb24gaGFzIG92ZXJzaWdodCBvdmVyIElkYWhvJ3MgdGVuIHN0YXRlIHByaXNvbnMuIEl0IGVuc3VyZXMgY29tcGxpYW5jZSB3aXRoIGFsbCBwb2xpY2llcyBhbmRcbnByb2NlZHVyZXMsIGFuZCBzdGF0ZSBhbmQgZmVkZXJhbCBndWlkZWxpbmVzIn0sIHsic3ViX3Byb2dyYW0iOiAiSWRhaG8gU3RhdGUgQ29ycmVjdGlvbmFsIEluc3RpdHV0aW9uIC0gQm9pc2UiLCAidGV4dCI6ICJJZGFobyBTdGF0ZSBDb3JyZWN0aW9uYWwgSW5zdGl0dXRpb24gaXMgdGhlIHN0YXRlJ3Mgb2xkZXN0IGFuZCBsYXJnZXN0IHN0YXRlLW9wZXJhdGVkIGZhY2lsaXR5LiBJdCBpcyB0aGUgcHJpbWFyeSBmYWNpbGl0eVxuZm9yIGxvbmctdGVybSBtYWxlLCBtZWRpdW0tY3VzdG9keSBvZmZlbmRlcnMuIEl0IGFsc28gaGFzIHNwZWNpYWwtdXNlIGJlZHMgZm9yIGluZmlybWFyeSwgb3V0cGF0aWVudCBtZW50YWwgaGVhbHRoLCBhbmQgZ2VyaWF0cmljIGlubWF0ZXMuIFRoZVxuY29tcG91bmQgaW5jbHVkZXMgYSBjaGFwZWwsIHJlY3JlYXRpb24gY2VudGVyLCBzY2hvb2wsIGxhcmdlIGNvcnJlY3Rpb25hbCBpbmR1c3RyaWVzIG9wZXJhdGlvbiwgYW5kIGEgbWVkaWNhbCBjbGluaWMuIFRoZSBzYWZlIG9wZXJhdGluZ1xuY2FwYWNpdHkgYXQgSVNDSSBpcyAxLDU3NyBiZWRzIn0sIHsic3ViX3Byb2dyYW0iOiAiSWRhaG8gU3RhdGUgQ29ycmVjdGlvbmFsIENlbnRlciAtIEJvaXNlIiwgInRleHQiOiAiVGhlIElkYWhvIFN0YXRlIENvcnJlY3Rpb25hbCBDZW50ZXIgb3BlbmVkIGluIEp1bHkgMjAwMCBhcyB0aGUgZmlyc3Qgc3RhdGUtb3duZWQsIHByaXZhdGVseSBvcGVyYXRlZCBmYWNpbGl0eS4gSXRcbndhcyBidWlsdCBvbiBzdGF0ZSBwcm9wZXJ0eSBieSB0aGUgQ29ycmVjdGlvbnMgQ29ycC4gb2YgQW1lcmljYSAoQ0NBKSBhbmQgb3BlcmF0ZWQgYnkgQ0NBIHVudGlsIEp1bHkgMSwgMjAxNCwgYXQgd2hpY2ggdGltZSB0aGUgRGVwYXJ0bWVudFxub2YgQ29ycmVjdGlvbiBhc3N1bWVkIGZ1bGwgbWFuYWdlbWVudCBhbmQgb3BlcmF0aW9uLiBJdCBob3VzZXMgY2xvc2UsIG1lZGl1bSwgYW5kIG1pbmltdW0tY3VzdG9keSBtYWxlIG9mZmVuZGVycy4gVGhlIHNhZmUgb3BlcmF0aW5nXG5jYXBhY2l0eSBhdCB0aGlzIGZhY2lsaXR5IGlzIDIsMTI4IGJlZHMifSwgeyJzdWJfcHJvZ3JhbSI6ICJJZGFobyBDb3JyZWN0aW9uYWwgSW5zdGl0dXRpb24gLSBPcm9maW5vIiwgInRleHQiOiAiSWRhaG8gQ29ycmVjdGlvbmFsIEluc3RpdHV0aW9uIC0gT3JvZmlubyBpcyBhIG1vZGlmaWVkIHN0YXRlIHNjaG9vbCBhbmQgaG9zcGl0YWwgbWVudGFsIGhlYWx0aCBidWlsZGluZy4gQSBuZXdcbndpbmcgd2FzIGFkZGVkIGluIDE5ODguIEl0IGlzIGEgc3RhbmRhcmQgcHJpc29uIGRlc2lnbmVkIGZvciBtYWxlIGlubWF0ZXMgb2YgYWxsIGN1c3RvZHkgbGV2ZWxzIGluY2x1ZGluZyBwcm90ZWN0aXZlIGN1c3RvZHkgaW5tYXRlcy4gSUNJT1xub2ZmZXJzIHZvY2F0aW9uYWwgd29yayBwcm9ncmFtcywgZWR1Y2F0aW9uLCBhbmQgb3RoZXIgcHJvZ3JhbW1pbmcgb3Bwb3J0dW5pdGllcyB3aXRoIGEgc2FmZSBvcGVyYXRpbmcgY2FwYWNpdHkgb2YgNTg4IGJlZHMifSwgeyJzdWJfcHJvZ3JhbSI6ICJJZGFobyBNYXhpbXVtIFNlY3VyaXR5IEluc3RpdHV0aW9uIC0gQm9pc2UiLCAidGV4dCI6ICJJZGFobyBNYXhpbXVtIFNlY3VyaXR5IEluc3RpdHV0aW9uIC0gQm9pc2Ugb3BlbmVkIGluIDE5ODkgdG8gY29uZmluZSBJZGFobydzIGhpZ2hlc3QgcmlzayBvZmZlbmRlcnMuIFRoZSBwcmlzb25cbmlzIGxvY2F0ZWQgd2l0aGluIGEgZG91YmxlIHBlcmltZXRlciBmZW5jZSByZWluZm9yY2VkIHdpdGggcmF6b3Igd2lyZSBhbmQgYW4gZWxlY3Ryb25pYyBkZXRlY3Rpb24gc3lzdGVtLiBUaGUgaW5tYXRlIHBvcHVsYXRpb24gaXMgY29tcG9zZWRcbm9mIGEgbGFyZ2UgbnVtYmVyIG9mIG1lbnRhbCBoZWFsdGggaW5tYXRlcywgaW5jbHVkaW5nIGNpdmlsIGNvbW1pdG1lbnRzLiBJTVNJIGhhcyByZXN0cmljdGl2ZSBob3VzaW5nIGJlZHMgZGVkaWNhdGVkIHRvIGFkbWluaXN0cmF0aXZlXG5zZWdyZWdhdGlvbiBhbmQgZGVhdGggcm93LiBUaGUgcmVtYWluaW5nIGJlZHMgYXJlIGFsbG9jYXRlZCBmb3IgY2xvc2UtY3VzdG9keSwgZ2VuZXJhbCBwb3B1bGF0aW9uIGlubWF0ZXMuIFRoZSBzYSJ9LCB7InN1Yl9wcm9ncmFtIjogIk5vcnRoIElkYWhvIENvcnJlY3Rpb25hbCBJbnN0aXR1dGlvbiAtIENvdHRvbndvb2QiLCAidGV4dCI6ICJOb3J0aCBJZGFobyBDb3JyZWN0aW9uYWwgSW5zdGl0dXRpb24gLSBDb3R0b253b29kIGlzIGEgZm9ybWVyIG1pbGl0YXJ5IHJhZGFyIHN0YXRpb24gbm9ydGggb2YgdGhlIHRvd24gb2ZcbkNvdHRvbndvb2QuIFRoaXMgaXMgYSBwcm9ncmFtLXNwZWNpZmljIHByaXNvbiBkZXNpZ25lZCBmb3IgbWFsZSBpbm1hdGVzIHNlbnRlbmNlZCB0byBhIHJldGFpbmVkIGp1cmlzZGljdGlvbiBjb21taXRtZW50IChyaWRlcikgYnkgdGhlXG5jb3VydC4gSXQgcHJvdmlkZXMgYSBzZW50ZW5jaW5nIGFsdGVybmF0aXZlIGZvciB0aGUgY291cnRzIHRvIHRhcmdldCB0aG9zZSBvZmZlbmRlcnMgd2hvIG1pZ2h0LCBhZnRlciBhIHBlcmlvZCBvZiBwcm9ncmFtbWluZyBhbmQgZXZhbHVhdGlvbiwgYmVcbnZpYWJsZSBjYW5kaWRhdGVzIGZvciBwcm9iYXRpb24gcmF0aGVyIHRoYW4gaW5jYXJjZXJhdGlvbi4gVGhlIHNhZmUgb3BlcmF0aW5nIGNhcGFjaXR5IGF0IE5JQ0kgaXMgNDI4IGJlZHMifSwgeyJzdWJfcHJvZ3JhbSI6ICJTb3V0aCBJZGFobyBDb3JyZWN0aW9uYWwgSW5zdGl0dXRpb24gLSBCb2lzZSIsICJ0ZXh0IjogIlNvdXRoIElkYWhvIENvcnJlY3Rpb25hbCBJbnN0aXR1dGlvbiAtIEJvaXNlIChTSUNJKSBpcyBhIHdvcmtpbmcgZmFjaWxpdHkgd2hpY2ggaG91c2VzIDM3MiBtYWxlIG1pbmltdW0tY3VzdG9keVxuaW5tYXRlcyBpbiBhIGRvcm1pdG9yeSBzZXR0aW5nLiBTSUNJIGlubWF0ZXMgd29yayBpbiByb2FkIGNyZXdzIGZvciB0aGUgSWRhaG8gVHJhbnNwb3J0YXRpb24gRGVwYXJ0bWVudCBhbmQgaW4gZmlyZWZpZ2h0aW5nIGNyZXdzIGZvciB0aGUgVVNcbkZvcmVzdCBTZXJ2aWNlLiBTSUNJIGFsc28gY29udGFpbnMgMzk2IGJlZHMgZm9yIGZlbWFsZXMsIGhvdXNpbmcgbWluaW11bSBhbmQgbWVkaXVtLWN1c3RvZHkgaW5tYXRlcy4gSW4gMjAyMywgdGhlIEVhc3QgZG9ybSB3YXNcbmNvbXBsZXRlZCB3aGljaCBob3VzZXMgYW4gYWRkaXRpb25hbCA3MiBtaW5pbXVtIGN1c3RvZHkgbWFsZSBiZWRzIFRoZSBzYWZlIG9wZXJhdGluZyBjYXBhY2l0eSBvZiB0aGUgcHJpc29uIGlzIDg0MCBiZWRzIn0sIHsic3ViX3Byb2dyYW0iOiAiU291dGggSWRhaG8gQ29ycmVjdGlvbmFsIEluc3RpdHV0aW9uIC0gQm9pc2UiLCAidGV4dCI6ICJTdC4gQW50aG9ueSBXb3JrIENhbXAgKFNBV0MpLCBsb2NhdGVkIGluIHRoZSBlYXN0ZXJuIElkYWhvIHRvd24gb2YgU3QuIEFudGhvbnksIGlzIGRlc2lnbmVkIGZvciBsb3ctcmlza1xubWluaW11bS1jdXN0b2R5IG1hbGUgaW5tYXRlcy4gVGhlIHByb2dyYW0gZm9jdXMgaXMgdG8gcHJvdmlkZSB3b3JrIHRoZXJhcHkgYnkgb2ZmZXJpbmcgZnVsbC10aW1lLCBjb25zdHJ1Y3RpdmUsIHBhaWQgZW1wbG95bWVudCB0byBpbm1hdGVzXG50aHJvdWdoIGNvbnRyYWN0ZWQgd29yayBhbmQgcHVibGljIHNlcnZpY2UgcHJvamVjdHMgd2l0aCBnb3Zlcm5tZW50IGFnZW5jaWVzLCBub24tcHJvZml0cywgYW5kIHByaXZhdGUgZW1wbG95ZXJzLiBTQVdDIGFsc28gZnVuY3Rpb25zIGFzXG5hIHByZS1yZWxlYXNlIGNlbnRlciwgb2ZmZXJpbmcgc3Vic3RhbmNlIGFidXNlIHRyZWF0bWVudCwgYWNhZGVtaWMsIGFuZCB2b2NhdGlvbmFsIGVkdWNhdGlvbi4gVGhlIHNhZmUgb3BlcmF0aW5nIGNhcGFjaSJ9LCB7InN1Yl9wcm9ncmFtIjogIlNvdXRoIElkYWhvIENvcnJlY3Rpb25hbCBJbnN0aXR1dGlvbiAtIEJvaXNlIiwgInRleHQiOiAiUG9jYXRlbGxvIFdvbWVuJ3MgQ29ycmVjdGlvbmFsIENlbnRlciAoUFdDQykgaXMgdGhlIHN0YXRlJ3MgZmlyc3QgZmFjaWxpdHkgZGVzaWduZWQgc3BlY2lmaWNhbGx5IHRvIG1lZXQgdGhlXG51bmlxdWUgcHJvZ3JhbSBuZWVkcyBvZiBmZW1hbGUgb2ZmZW5kZXJzLiBJdCBvcGVuZWQgaW4gMTk5NCBhbmQgaG91c2VzIGFsbCBjdXN0b2R5IGxldmVscy4gVGhlIGluc3RpdHV0aW9uIGhhcyBpdHMgb3duIHJlY2VwdGlvbiBhbmRcbmRpYWdub3N0aWMgY2VudGVyLCBwcmUtcmVsZWFzZSBwcm9ncmFtLCBhbmQgd29yayBjZW50ZXIgcmVsZWFzZS4gVGhlIHNhZmUgb3BlcmF0aW5nIGNhcGFjaXR5IGF0IFBXQ0MgaXMgMzI4IGJlZHMifSwgeyJzdWJfcHJvZ3JhbSI6ICJTb3V0aCBJZGFobyBDb3JyZWN0aW9uYWwgSW5zdGl0dXRpb24gLSBCb2lzZSIsICJ0ZXh0IjogIlRoZSBTb3V0aCBCb2lzZSBXb21lbidzIENvcnJlY3Rpb25hbCBDZW50ZXIgKFNCV0NDKSBob3VzZXMgZmVtYWxlcyB1bmRlciBjb3VydC1yZXRhaW5lZCBqdXJpc2RpY3Rpb24uIEl0XG5wcm92aWRlcyBhIHNlbnRlbmNpbmcgYWx0ZXJuYXRpdmUgZm9yIHRoZSBjb3VydHMgdG8gdGFyZ2V0IHRob3NlIG9mZmVuZGVycyB3aG8gbWlnaHQsIGFmdGVyIGEgcGVyaW9kIG9mIHByb2dyYW1taW5nIGFuZCBldmFsdWF0aW9uLCBiZSB2aWFibGVcbmNhbmRpZGF0ZXMgZm9yIHByb2JhdGlvbiByYXRoZXIgdGhhbiBpbmNhcmNlcmF0aW9uLiBUaGUgc2FmZSBvcGVyYXRpbmcgY2FwYWNpdHkgYXQgU0JXQ0MgaXMgMzA5IGJlZHMifSwgeyJzdWJfcHJvZ3JhbSI6ICJTb3V0aCBJZGFobyBDb3JyZWN0aW9uYWwgSW5zdGl0dXRpb24gLSBCb2lzZSIsICJ0ZXh0IjogIlRoZSBNb3VudGFpbiBWaWV3IFRyYW5zZm9ybWF0aW9uIENlbnRlciAoTVZUQykgaXMgdXNlZCB0byBob3VzZSByZXRhaW5lZCBqdXJpc2RpY3Rpb24gKHJpZGVyKSBvZmZlbmRlcnMgYW5kXG5oYXMgYSBzYWZlIG9wZXJhdGluZyBjYXBhY2l0eSBvZiA0NDIgYmVkcy4gTVZUQyB3YXMgY3JlYXRlZCB1bmRlciB0aGUgRGl2aXNpb24gb2YgUHJpc29ucyBzdGFydGluZyBpbiBGWSAyMDI0LCBhbmQgd2FzIHByZXZpb3VzbHkga25vd25cbmFzIHRoZSBDb3JyZWN0aW9uYWwgQWx0ZXJuYXRpdmUgUGxhY2VtZW50IFByb2dyYW0gKENBUFApLiBJdCB3YXMgYSBwcml2YXRlbHkgb3BlcmF0ZWQgdHJlYXRtZW50IGZhY2lsaXR5IHRoYXQgcHJvdmlkZWQgaW50ZW5zaXZlIHJlc2lkZW50aWFsXG5zdWJzdGFuY2UgYWJ1c2UgYW5kIGNvZ25pdGl2ZSBwcm9ncmFtbWluZyBmb3Igb2ZmZW5kZXJzLiBUaGlzIGZhY2lsaXR5IGhhcyBhbHNvIGJlZW4gdXNlZCB0byBwcm92aWRlIHNhbmN0aW9uIGFuZCBpIn1dfSwgeyJuYW1lIjogIk1lZGljYWwgU2VydmljZXMiLCAiZ2YiOiA3MjcyNDgwMCwgImRlZCI6IDEzNTAwMCwgImZlZCI6IDAsICJ0b3RhbCI6IDcyODU5ODAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMC4wMDE5LCAiYmlsbHMiOiBbIlMxMzYxIiwgIlMxMzg4Il0sICJub3RlcyI6IFt7InR5cGUiOiAiQlVER0VUIExBVyBFWEVNUFRJT05TIiwgInRleHQiOiAiVGhpcyBhZ2VuY3kgcmVjZWl2ZWQgc3BlY2lmaWMgbGVnaXNsYXRpdmUgYXV0aG9yaXphdGlvbiBpbiBTMTM2MSB0aGF0IGV4ZW1wdGVkIHRoZSBhZ2VuY3kgZnJvbSB0aGUgMTAlXG50cmFuc2ZlciBsaW1pdGF0aW9uIGJldHdlZW4gYnVkZ2V0ZWQgcHJvZ3JhbXMsIHByb3ZpZGVkIHRoYXQgbW9uZXlzIGFwcHJvcHJpYXRlZCB0byB0aGUgQ291bnR5IGFuZCBPdXQtb2YtU3RhdGUgUGxhY2VtZW50IFByb2dyYW0gYW5kXG50aGUgTWVkaWNhbCBTZXJ2aWNlcyBQcm9ncmFtIG1heSBvbmx5IGJlIHRyYW5zZmVycmVkIGJldHdlZW4gc2FpZCBwcm9ncmFtcyJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkNvbW11bml0eSBSZWVudHJ5IENlbnRlcnMiLCAidGV4dCI6ICJUaGUgTWVkaWNhbCBTZXJ2aWNlcyBQcm9ncmFtIGluY2x1ZGVzIGNvc3RzIHBhaWQgdG8gdGhlIGZvci1wcm9maXQsIHByaXZhdGUgbWVkaWNhbCBzZXJ2aWNlIHByb3ZpZGVyIGZvciBJZGFob1xub2ZmZW5kZXJzIGluIHN0YXRlIHByaXNvbnMgYW5kIGNvbW11bml0eSByZWVudHJ5IGNlbnRlcnMifV19LCB7Im5hbWUiOiAiQ29tbXVuaXR5IENvcnJlY3Rpb25zIiwgImdmIjogNDg0MzM1MDAsICJkZWQiOiAxOTA1NDgwMCwgImZlZCI6IDk5NTMwMCwgInRvdGFsIjogNjg0ODM2MDAsICJmZWRfc2hhcmUiOiAwLjAxNDUsICJkZWRfc2hhcmUiOiAwLjI3ODIsICJiaWxscyI6IFsiUzEzNjEiLCAiUzEzODgiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlNlY3Rpb24gMyBvZiBTMTM4OCByZXF1aXJlZCBhIHJlcG9ydCBvbiBDb21tdW5pdHkgUmVlbnRyeSBDZW50ZXIgZWZmaWNpZW5jeSBhbmRcbmVmZmVjdGl2ZW5lc3MsIGFuZCByZXF1aXJlZCB0aGUgZGVwYXJ0bWVudCB0byBpbml0aWF0ZSBhIHJlcXVlc3QgZm9yIGluZm9ybWF0aW9uIHRvIGV2YWx1YXRlIHBvdGVudGlhbCBvdXRzb3VyY2luZyBtb2RlbHMifSwgeyJ0eXBlIjogIkJVREdFVCBMQVcgRVhFTVBUSU9OUyIsICJ0ZXh0IjogIlRoaXMgYWdlbmN5IHJlY2VpdmVkIHNwZWNpZmljIGxlZ2lzbGF0aXZlIGF1dGhvcml6YXRpb24gaW4gUzEzNjEgdGhhdCBleGVtcHRlZCB0aGUgYWdlbmN5IGZyb20gdGhlIDEwJVxudHJhbnNmZXIgbGltaXRhdGlvbiBiZXR3ZWVuIGJ1ZGdldGVkIHByb2dyYW1zLCBwcm92aWRlZCB0aGF0IG1vbmV5cyBhcHByb3ByaWF0ZWQgdG8gdGhlIENvdW50eSBhbmQgT3V0LW9mLVN0YXRlIFBsYWNlbWVudCBQcm9ncmFtIGFuZFxudGhlIE1lZGljYWwgU2VydmljZXMgUHJvZ3JhbSBtYXkgb25seSBiZSB0cmFuc2ZlcnJlZCBiZXR3ZWVuIHNhaWQgcHJvZ3JhbXMifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJDb21tdW5pdHkgU3VwZXJ2aXNpb24iLCAidGV4dCI6ICJUaGlzIHByb2dyYW0gaXMgcmVzcG9uc2libGUgZm9yIHN1cGVydmlzaW5nIGFsbCBhZHVsdCBmZWxvbnkgcHJvYmF0aW9uZXJzIGFuZCBwYXJvbGVlcyB0byBzdXBwb3J0IGNvbW11bml0eVxuc2FmZXR5IGFuZCB0byBwcm92aWRlIG9mZmVuZGVycyBvcHBvcnR1bml0aWVzIGZvciBzdWNjZXNzZnVsIGNoYW5nZS4gVGhlIGRpdmlzaW9uIHByZXBhcmVzIHByZXNlbnRlbmNlIGludmVzdGlnYXRpb24gcmVwb3J0cyBmb3IgY291cnRzIGluXG5JZGFobydzIHNldmVuIGp1ZGljaWFsIGRpc3RyaWN0cy4gQ291bnNlbG9ycyBwcm92aWRlIGdyb3VwIGFuZCBpbmRpdmlkdWFsIHN1YnN0YW5jZSBhYnVzZSB0cmVhdG1lbnQgb3Igb3RoZXIgdHlwZXMgb2YgdHJlYXRtZW50LiBUaGVyZSBhcmVcbnNldmVuIGRpc3RyaWN0IG9mZmljZXMgd2l0aCAxNiBzYXRlbGxpdGUgb2ZmaWNlcyBhcm91bmQgdGhlIHN0YXRlLiBUaGlzIHByb2dyYW0gcHJldmlvdXNseSBhY2NvdW50ZWQgZm9yIHRoZSBjb250ciJ9LCB7InN1Yl9wcm9ncmFtIjogIkNvbW11bml0eSBSZWVudHJ5IENlbnRlcnMiLCAidGV4dCI6ICJUaGUgZGVwYXJ0bWVudCBzdXBlcnZpc2VzIGZlbG9ueSBvZmZlbmRlcnMgaW4gZml2ZSBjb21tdW5pdHkgcmVlbnRyeSBjZW50ZXJzIChDUkNzKSBsb2NhdGVkIGluIE5hbXBhLCBCb2lzZVxuKDIpLCBJZGFobyBGYWxscywgYW5kIFR3aW4gRmFsbHMuIEEgc2l4dGggY29tbXVuaXR5IHJlZW50cnkgY2VudGVyIGlzIGV4cGVjdGVkIHRvIG9wZW4gaW4gUG9jYXRlbGxvIGluIEZZIDIwMjcuIFRoZXNlIGZhY2lsaXRpZXMgaG91c2UgY291cnQtXG5yZXRhaW5lZCBqdXJpc2RpY3Rpb25hbCBvZmZlbmRlcnMgdG9nZXRoZXIgd2l0aCBvZmZlbmRlcnMgcHJlcGFyaW5nIGZvciBwYXJvbGUgZnJvbSBzdGF0ZSBwcmlzb25zLiBUaGVzZSBhcmUgcmVzaWRlbnRpYWwgZmFjaWxpdGllcyB0aGF0IGFsbG93XG5vZmZlbmRlcnMgdG8gd29yayB3aGlsZSBiZWNvbWluZyByZXVuaXRlZCB3aXRoIGZhbWlsaWVzIGFuZCB0aGUgY29tbXVuaXR5LCBhbmQgcHJvdmlkZSBwcm90ZWN0aW9uIHRvIHRoZSBjbyJ9XX0sIHsibmFtZSI6ICJDb3VudHkgYW5kIE91dC1vZi1TdGF0ZSBQbGFjZW1lbnQiLCAiZ2YiOiA1OTQ3NzYwMCwgImRlZCI6IDAsICJmZWQiOiAwLCAidG90YWwiOiA1OTQ3NzYwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuMCwgImJpbGxzIjogWyJTMTM2MSIsICJTMTM4OCJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkJVREdFVCBMQVcgRVhFTVBUSU9OUyIsICJ0ZXh0IjogIlRoaXMgYWdlbmN5IHJlY2VpdmVkIHNwZWNpZmljIGxlZ2lzbGF0aXZlIGF1dGhvcml6YXRpb24gaW4gUzEzNjEgdGhhdCBleGVtcHRlZCB0aGUgYWdlbmN5IGZyb20gdGhlIDEwJVxudHJhbnNmZXIgbGltaXRhdGlvbiBiZXR3ZWVuIGJ1ZGdldGVkIHByb2dyYW1zLCBwcm92aWRlZCB0aGF0IG1vbmV5cyBhcHByb3ByaWF0ZWQgdG8gdGhlIENvdW50eSBhbmQgT3V0LW9mLVN0YXRlIFBsYWNlbWVudCBQcm9ncmFtIGFuZFxudGhlIE1lZGljYWwgU2VydmljZXMgUHJvZ3JhbSBtYXkgb25seSBiZSB0cmFuc2ZlcnJlZCBiZXR3ZWVuIHNhaWQgcHJvZ3JhbXMifSwgeyJ0eXBlIjogIk9USEVSIExFR0lTTEFUSU9OIiwgInRleHQiOiAiSDY4NCBhZGRlZCBhIG5ldyBzZWN0aW9uIG9mIElkYWhvIENvZGUsIDIwLTYyOSwgdG8gYXV0aG9yaXplIGEgY291bnR5IHNoZXJpZmYncyBvZmZpY2UgdG8gc2VlayByZWltYnVyc2VtZW50IGZvclxudGhlIGNvc3RzIG9mIGNvbGxlY3RpbmcgYSBwcmlzb25lciwgcHJvYmF0aW9uZXIsIG9yIHBhcm9sZWUgZnJvbSBvdXQtb2Ytc3RhdGUgd2hvIGhhcyBhYnNjb25kZWQgZnJvbSB0aGUgc3VwZXJ2aXNpb24gb2YgdGhlIElkYWhvIERlcGFydG1lbnRcbm9mIENvcnJlY3Rpb24uIEg1NTYgYW1lbmRlZCBTZWN0aW9uIDIwLTIzN0EsIElkYWhvIENvZGUsIHRvIGNoYW5nZSB0aGUgcmVpbWJ1cnNlbWVudCByYXRlIHRoZSBEZXBhcnRtZW50IG9mIENvcnJlY3Rpb24gcGF5cyB0b1xuY291bnRpZXMgZm9yIGhvdXNpbiJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIlNvdXRoIElkYWhvIENvcnJlY3Rpb25hbCBJbnN0aXR1dGlvbiAtIEJvaXNlIiwgInRleHQiOiAiVGhlIENvdW50eSBhbmQgT3V0LW9mLVN0YXRlIFBsYWNlbWVudCBQcm9ncmFtIHByb3ZpZGVzIGZ1bmRpbmcgdG8gaG91c2UgYW5kIHByb3ZpZGUgbWVkaWNhbCBjYXJlIGZvclxub2ZmZW5kZXJzIHBsYWNlZCBpbiBjb3VudHkgamFpbHMgYW5kIGNvbnRyYWN0IG91dC1vZi1zdGF0ZSBwcmlzb24gYmVkcyJ9XX0sIHsibmFtZSI6ICJNYW5hZ2VtZW50IFNlcnZpY2VzIiwgImdmIjogMjg3NTc0MDAsICJkZWQiOiAzMjQ1MzAwLCAiZmVkIjogMCwgInRvdGFsIjogMzIwMDI3MDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAwLjEwMTQsICJiaWxscyI6IFsiUzEzNjEiLCAiUzEzODgiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJCVURHRVQgTEFXIEVYRU1QVElPTlMiLCAidGV4dCI6ICJUaGlzIGFnZW5jeSByZWNlaXZlZCBzcGVjaWZpYyBsZWdpc2xhdGl2ZSBhdXRob3JpemF0aW9uIGluIFMxMzYxIHRoYXQgZXhlbXB0ZWQgdGhlIGFnZW5jeSBmcm9tIHRoZSAxMCVcbnRyYW5zZmVyIGxpbWl0YXRpb24gYmV0d2VlbiBidWRnZXRlZCBwcm9ncmFtcywgcHJvdmlkZWQgdGhhdCBtb25leXMgYXBwcm9wcmlhdGVkIHRvIHRoZSBDb3VudHkgYW5kIE91dC1vZi1TdGF0ZSBQbGFjZW1lbnQgUHJvZ3JhbSBhbmRcbiB0aGUgTWVkaWNhbCBTZXJ2aWNlcyBQcm9ncmFtIG1heSBvbmx5IGJlIHRyYW5zZmVycmVkIGJldHdlZW4gc2FpZCBwcm9ncmFtcyJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkRvbWVzdGljIFZpb2xlbmNlIENvdW5jaWwiLCAidGV4dCI6ICJNYW5hZ2VtZW50IFNlcnZpY2VzIGluY2x1ZGVzIHRoZSBCb2FyZCBvZiBDb3JyZWN0aW9uIGFuZCB0aGUgRGlyZWN0b3IncyBPZmZpY2UuIEl0IGFsc28gaGFzIGRlcGFydG1lbnQtd2lkZVxub3ZlcnNpZ2h0IG9mIGh1bWFuIHJlc291cmNlcywgaW5mb3JtYXRpb24gc2VydmljZXMsIGNvbnN0cnVjdGlvbiwgZmluYW5jaWFsIHNlcnZpY2VzLCBjZW50cmFsIHJlY29yZHMsIHJlc2VhcmNoIGFuZCBxdWFsaXR5IGFzc3VyYW5jZSwgYW5kXG5sZWdhbCBzZXJ2aWNlcyJ9XX0sIHsibmFtZSI6ICJDb21tdW5pdHktQmFzZWQgU3Vic3RhbmNlIEFidXNlIFRyZWF0bWVudCIsICJnZiI6IDM4Mzg2MDAsICJkZWQiOiAwLCAiZmVkIjogMCwgInRvdGFsIjogMzgzODYwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuMCwgImJpbGxzIjogWyJTMTM2MSIsICJTMTM4OCJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFtdfV19LCB7ImFyZWEiOiAiUHVibGljIFNhZmV0eSIsICJhZ2VuY3kiOiAiSnVkaWNpYWwgQnJhbmNoIiwgImZ0cCI6IDQxMS4wLCAiZ2YiOiA3NDg5MTYwMCwgImRlZCI6IDI3OTU2NTAwLCAiZmVkIjogMTk3MDUwMCwgInRvdGFsIjogMTA0ODE4NjAwLCAiZmVkX3NoYXJlIjogMC4wMTg4LCAiZGVkX3NoYXJlIjogMC4yNjY3LCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJIODQ3IiwgIkg5MjUiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbXSwgImNoaWxkcmVuIjogW3sibmFtZSI6ICJDb3VydCBPcGVyYXRpb25zIiwgImdmIjogNzE4MDM4MDAsICJkZWQiOiAyNzk1NjUwMCwgImZlZCI6IDE5NzA1MDAsICJ0b3RhbCI6IDEwMTczMDgwMCwgImZlZF9zaGFyZSI6IDAuMDE5NCwgImRlZF9zaGFyZSI6IDAuMjc0OCwgImJpbGxzIjogWyJIODQ3IiwgIkg5MjUiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlNlY3Rpb24gMyBvZiBIODQ3IHJlcXVpcmVzIHRoZSBTdXByZW1lIENvdXJ0IHRvIHVzZSB1bmNvbW1pdHRlZCBhbW91bnRzXG5hcHByb3ByaWF0ZWQgZm9yIGp1ZGljaWFsIHJldGlyZW1lbnQgY29udHJpYnV0aW9ucyBmb3IgbW9udGhseSB0cmFuc2ZlcnMgdG8gdGhlIEp1ZGdlcycgUmV0aXJlbWVudCBGdW5kIn0sIHsidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlNlY3Rpb24gMyBvZiBIODQ3IHJlcXVpcmVkIHRoZSBTdXByZW1lIENvdXJ0IHRvIHVzZSB1bmNvbW1pdHRlZCBhbW91bnRzXG5hcHByb3ByaWF0ZWQgZm9yIGp1ZGljaWFsIHJldGlyZW1lbnQgY29udHJpYnV0aW9ucyBmb3IgbW9udGhseSB0cmFuc2ZlcnMgdG8gdGhlIEp1ZGdlcycgUmV0aXJlbWVudCBGdW5kIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiU3VwcmVtZSBDb3VydCIsICJ0ZXh0IjogIlRoZSBTdXByZW1lIENvdXJ0IG9mIElkYWhvIGlzIHRoZSBzdGF0ZSdzIGNvdXJ0IG9mIGxhc3QgcmVzb3J0LiBUaGUgQ291cnQgaGVhcnMgYXBwZWFscyBmcm9tIGZpbmFsIGRlY2lzaW9ucyBvZlxudGhlIGRpc3RyaWN0IGNvdXJ0cywgYXMgd2VsbCBhcyBmcm9tIG9yZGVycyBvZiB0aGUgUHVibGljIFV0aWxpdGllcyBDb21taXNzaW9uIGFuZCB0aGUgSW5kdXN0cmlhbCBDb21taXNzaW9uLiBJdCBoYXMgb3JpZ2luYWwganVyaXNkaWN0aW9uIHRvIGhlYXJcbmNsYWltcyBhZ2FpbnN0IHRoZSBzdGF0ZSBhbmQgdG8gaXNzdWUgd3JpdHMgb2YgcmV2aWV3LCBtYW5kYW11cywgcHJvaGliaXRpb24sIGFuZCBoYWJlYXMgY29ycHVzLCBhbmQgYWxsIHdyaXRzIG5lY2Vzc2FyeSBmb3IgY29tcGxldGVcbmV4ZXJjaXNlIG9mIGl0cyBhcHBlbGxhdGUganVyaXNkaWN0aW9uLiBUaGUgQ291cnQgbWF5IGFsc28gcmV2aWV3IGRlY2lzaW9ucyBvZiB0aGUgQ291cnQgb2YgQXBwZWFscyB1cG9uIHBlIn0sIHsic3ViX3Byb2dyYW0iOiAiQ291cnQgb2YgQXBwZWFscyIsICJ0ZXh0IjogIlRoZSBDb3VydCBvZiBBcHBlYWxzIGhhcyBqdXJpc2RpY3Rpb24gdG8gaGVhciBhbmQgZGVjaWRlIGFsbCBjYXNlcyBhc3NpZ25lZCB0byBpdCBieSB0aGUgU3VwcmVtZSBDb3VydC5cbkhvd2V2ZXIsIHRoZSBTdXByZW1lIENvdXJ0IG1heSBub3QgYXNzaWduIGNhc2VzIGludm9sdmluZyB0aGUgb3JpZ2luYWwganVyaXNkaWN0aW9uIG9mIHRoZSBJZGFobyBTdXByZW1lIENvdXJ0LCBhcHBlYWxzIGZyb20gaW1wb3NpdGlvbiBvZlxuc2VudGVuY2VzIG9mIGNhcGl0YWwgcHVuaXNobWVudCBpbiBjcmltaW5hbCBjYXNlcywgYXBwZWFscyBmcm9tIHRoZSBJbmR1c3RyaWFsIENvbW1pc3Npb24sIGFwcGVhbHMgZnJvbSB0aGUgUHVibGljIFV0aWxpdGllcyBDb21taXNzaW9uLFxucmV2aWV3IG9mIHRoZSByZWNvbW1lbmRhdG9yeSBvcmRlcnMgb2YgdGhlIEJvYXJkIG9mIENvbW1pc3Npb25lcnMgb2YgdGhlIElkYWhvIFN0YXRlIEJhciwgYW5kIHJldmlldyBvZiByZWNvbW1lbmRhdG9yeSBvIn0sIHsic3ViX3Byb2dyYW0iOiAiRGlzdHJpY3QgQ291cnRzIiwgInRleHQiOiAiRGlzdHJpY3QgY291cnRzIGhhdmUganVyaXNkaWN0aW9uIG92ZXIgY2l2aWwgYW5kIGNyaW1pbmFsIGNhc2VzLiBEaXN0cmljdCBqdWRnZXMgaGVhciBmZWxvbnkgY3JpbWluYWwgY2FzZXMsIGFuZFxudHlwaWNhbGx5IGhlYXIgY2l2aWwgY2FzZXMgd2hlcmUgdGhlIGFtb3VudCBvZiBtb25leSBpbiBkaXNwdXRlIGV4Y2VlZHMgJDEwLDAwMC4gRGlzdHJpY3QganVkZ2VzIGFsc28gaGVhciBwb3N0LWNvbnZpY3Rpb24gcmVsaWVmIGFjdGlvbnMgaW5cbndoaWNoIGEgZGVmZW5kYW50IGlzIGNoYWxsZW5naW5nIGhpcyBvciBoZXIgY29udmljdGlvbiBvciBpbmNhcmNlcmF0aW9uLiBEaXN0cmljdCBjb3VydHMgaGF2ZSBhcHBlbGxhdGUganVyaXNkaWN0aW9uIG92ZXIgZGVjaXNpb25zIG1hZGUgYnlcbm1hZ2lzdHJhdGUganVkZ2VzLCBzdGF0ZSBhZ2VuY2llcywgYW5kIGNvdW50eSBib2FyZHMifSwgeyJzdWJfcHJvZ3JhbSI6ICJNYWdpc3RyYXRlIERpdmlzaW9uIiwgInRleHQiOiAiTWFnaXN0cmF0ZSBjb3VydHMgaGF2ZSBqdXJpc2RpY3Rpb24gb3ZlciBjaXZpbCBjYXNlcyB1bmRlciAkMTAsMDAwLCBhcyB3ZWxsIGFzIG1hdHRlcnMgcmVsYXRpbmcgdG8gYWRvcHRpb24sIHRoZVxuQ2hpbGQgUHJvdGVjdGl2ZSBBY3QsIGRvbWVzdGljIHJlbGF0aW9ucyAoc3VjaCBhcyBjaGlsZCBjdXN0b2R5LCBjaGlsZCBzdXBwb3J0LCBvciBkaXZvcmNlKSwgZ3VhcmRpYW5zaGlwcyBhbmQgY29uc2VydmF0b3JzaGlwcyxcbmhvc3BpdGFsaXphdGlvbnMgb2YgdGhlIG1lbnRhbGx5IGlsbCwgdGhlIEp1dmVuaWxlIENvcnJlY3Rpb25zIEFjdCwgcHJvYmF0ZSwgYW5kIHNtYWxsIGNsYWltcy4gTWFnaXN0cmF0ZSBjb3VydHMgYWxzbyBoYXZlIGp1cmlzZGljdGlvbiBvdmVyXG5jcmltaW5hbCBtaXNkZW1lYW5vcnMgYW5kIGluZnJhY3Rpb25zLiBNYWdpc3RyYXRlIGp1ZGdlcyBoZWFyIGZlbG9ueSBwcmVsaW1pbmFyeSBoZWFyaW5ncyBhbmQgbWF5IGlzc3VlIHdhcnJhbnRzIG9mIGEifSwgeyJzdWJfcHJvZ3JhbSI6ICJXYXRlciBBZGp1ZGljYXRpb24iLCAidGV4dCI6ICJUaGlzIHByb2dyYW0gbWFuYWdlcyB0aGUgcHJvY2VzcyBlc3RhYmxpc2hlZCB0byBpbnZlbnRvcnkgYWxsIHN1cmZhY2UgYW5kIGdyb3VuZCB3YXRlciByaWdodHMgaW4gdGhlIFNuYWtlXG5SaXZlciBCYXNpbiBBZGp1ZGljYXRpb24gKFNSQkEpLCB0aGUgQ29ldXIgZCdBbGVuZS1TcG9rYW5lIFJpdmVyIEJhc2luIEFkanVkaWNhdGlvbiAoQ1NSQkEpLCB0aGUgUGFsb3VzZSBSaXZlciBCYXNpbiBBZGp1ZGljYXRpb25cbihQUkJBKSwgdGhlIENsYXJrIEZvcmstUGVuZCBPcmVpbGxlIFJpdmVyIEJhc2lucyBBZGp1ZGljYXRpb24gKENGUFJCQSksIHRoZSBCZWFyIFJpdmVyIEJhc2lucyBBZGp1ZGljYXRpb24gKEJSQkEpLCBhbmQgdGhlIEtvb3RlbmFpXG5SaXZlciBCYXNpbnMgQWRqdWRpY2F0aW9uIChLUkJBKSJ9LCB7InN1Yl9wcm9ncmFtIjogIkNvbW11bml0eS1CYXNlZCBTdWJzdGFuY2UgVXNlIFRyZWF0bWVudCBTZXJ2aWNlcyIsICJ0ZXh0IjogIlRyZWF0bWVudCBDb3VydHMgZGl2ZXJ0IGp1c3RpY2UgaW52b2x2ZWQgaW5kaXZpZHVhbHMsIHdpdGggc3Vic3RhbmNlIGFidXNlIGlzc3VlcywgZnJvbSBwcmlzb24gYW5kIGphaWwgaW50b1xudHJlYXRtZW50LiBNYXRjaGluZyBzdXBlcnZpc2lvbiBhbmQgYmVoYXZpb3JhbCBoZWFsdGggdHJlYXRtZW50IHRvIHRoZSBuZWVkcyBvZiB0aG9zZSBwYXJ0aWNpcGF0aW5nIGluIHRoZSB0cmVhdG1lbnQgY291cnRzIGNhbiBoZWxwIGJyZWFrXG50aGUgY3ljbGUgb2YgY3JpbWluYWwgYmVoYXZpb3IsIGFsY29ob2wgYW5kIGRydWcgdXNlLCBhbmQgaW5jYXJjZXJhdGlvbiJ9LCB7InN1Yl9wcm9ncmFtIjogIlNlbmlvciBKdWRnZXMiLCAidGV4dCI6ICJUaGlzIHByb2dyYW0gd2FzIGNyZWF0ZWQgZHVyaW5nIHRoZSAyMDE2IExlZ2lzbGF0aXZlIFNlc3Npb24gaW4gb3JkZXIgdG8gYnVkZ2V0IGFuZCBhY2NvdW50IGZvciBzZW5pb3IganVkZ2VcbnBlciBkaWVtIHNlcGFyYXRlbHkgZnJvbSBvdGhlciBicmFuY2ggYWN0aXZpdGllcy4gUHVyc3VhbnQgdG8gU2VjdGlvbnMgMS0yMjIxIGFuZCAxLTIwMDUsIElkYWhvIENvZGUsIGEgc2VuaW9yIGp1ZGdlIGlzIGEgcmV0aXJlZCBqdWRnZSB3aG9cbmhhcyBhcHBsaWVkIHRvIHRoZSBTdXByZW1lIENvdXJ0IHRvIGJlIGRlc2lnbmF0ZWQgdG8gY292ZXIgd29ya2xvYWQgaW5jcmVhc2VzLCBjb3VydCBjYXNlIGJhY2tsb2dzLCBhbmQgbGVhdmUgc2NoZWR1bGVzLCBmb3Igd2hpY2ggdGhleVxuYXJlIHBhaWQgYW4gYW1vdW50IGVxdWFsIHRvIDg1JSBvZiB0aGUgZGFpbHkgc2FsYXJ5IG9mIHRoZSBoaWdoZXN0IG9mZmljZSBpbiB3aGljaCB0aGV5IHNlcnZlZCJ9XX0sIHsibmFtZSI6ICJHdWFyZGlhbiBBZCBMaXRlbSBQcm9ncmFtIiwgImdmIjogMjkzMjgwMCwgImRlZCI6IDAsICJmZWQiOiAwLCAidG90YWwiOiAyOTMyODAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMC4wLCAiYmlsbHMiOiBbIkg4NDciLCAiSDkyNSJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkJVREdFVCBMQVcgRVhFTVBUSU9OUyIsICJ0ZXh0IjogIlRoZSBKdWRpY2lhbCBCcmFuY2ggcmVjZWl2ZWQgc3BlY2lmaWMgbGVnaXNsYXRpdmUgYXV0aG9yaXphdGlvbiBpbiBIODQ3IHRoYXQgcmVtb3ZlcyBhbGwgcmVzdHJpY3Rpb25zIGxpbWl0aW5nXG50aGUgdHJhbnNmZXIgb2YgbW9uZXlzIGFtb25nIHBlcnNvbm5lbCBjb3N0cywgb3BlcmF0aW5nIGV4cGVuZGl0dXJlcywgY2FwaXRhbCBvdXRsYXksIGFuZCB0cnVzdGVlIGFuZCBiZW5lZml0IHBheW1lbnRzLiBUaGUgYmlsbCBhbHNvXG5leGVtcHRlZCB0aGUgYWdlbmN5IGZyb20gdGhlIDEwJSB0cmFuc2ZlciBsaW1pdGF0aW9uIGJldHdlZW4gYnVkZ2V0ZWQgcHJvZ3JhbXMifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJTZW5pb3IgSnVkZ2VzIiwgInRleHQiOiAiVGhlIFN1cHJlbWUgQ291cnQgaXMgdGhlIHBhc3MtdGhyb3VnaCBlbnRpdHkgYW5kIGdyYW50IGFkbWluaXN0cmF0b3IgZm9yIGd1YXJkaWFuIGFkIGxpdGVtIChHQUwpIHByb2dyYW1zXG5hcm91bmQgdGhlIHN0YXRlLiBUaGUgYWRtaW5pc3RyYXRvciBhd2FyZHMgbG9jYWwgZ3JhbnRzIHN0YXRld2lkZSB0byBwZXJzb25zIG9yIG9yZ2FuaXphdGlvbnMgdG8gb3BlcmF0ZSBwcm9ncmFtcyB0byByZWNydWl0LCB0cmFpbiwgYW5kXG5jb29yZGluYXRlIHZvbHVudGVlcnMgdG8gYWN0IGFzIGNvdXJ0LWFwcG9pbnRlZCBzcGVjaWFsIGFkdm9jYXRlcyBmb3IgYWJ1c2VkLCBuZWdsZWN0ZWQsIG9yIGFiYW5kb25lZCBjaGlsZHJlbiB1bmRlciB0aGUgQ2hpbGQgUHJvdGVjdGl2ZVxuQWN0In1dfSwgeyJuYW1lIjogIkp1ZGljaWFsIENvdW5jaWwiLCAiZ2YiOiAxNTUwMDAsICJkZWQiOiAwLCAiZmVkIjogMCwgInRvdGFsIjogMTU1MDAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMC4wLCAiYmlsbHMiOiBbIkg4NDciLCAiSDkyNSJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkJVREdFVCBMQVcgRVhFTVBUSU9OUyIsICJ0ZXh0IjogIlRoZSBKdWRpY2lhbCBCcmFuY2ggcmVjZWl2ZWQgc3BlY2lmaWMgbGVnaXNsYXRpdmUgYXV0aG9yaXphdGlvbiBpbiBIODQ3IHRoYXQgcmVtb3ZlcyBhbGwgcmVzdHJpY3Rpb25zIGxpbWl0aW5nXG50aGUgdHJhbnNmZXIgb2YgbW9uZXlzIGFtb25nIHBlcnNvbm5lbCBjb3N0cywgb3BlcmF0aW5nIGV4cGVuZGl0dXJlcywgY2FwaXRhbCBvdXRsYXksIGFuZCB0cnVzdGVlIGFuZCBiZW5lZml0IHBheW1lbnRzLiBUaGUgYmlsbCBhbHNvXG5leGVtcHRlZCB0aGUgYWdlbmN5IGZyb20gdGhlIDEwJSB0cmFuc2ZlciBsaW1pdGF0aW9uIGJldHdlZW4gYnVkZ2V0ZWQgcHJvZ3JhbXMifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJTZW5pb3IgSnVkZ2VzIiwgInRleHQiOiAiVGhlIElkYWhvIEp1ZGljaWFsIENvdW5jaWwgaXMgZW1wb3dlcmVkIGJ5IHN0YXR1dGUgdG8gbm9taW5hdGUgcGVyc29ucyB0byB0aGUgR292ZXJub3IgZm9yIGFwcG9pbnRtZW50IHRvXG52YWNhbmNpZXMgb24gdGhlIFN1cHJlbWUgQ291cnQsIENvdXJ0IG9mIEFwcGVhbHMsIGFuZCBEaXN0cmljdCBDb3VydHMgYW5kIG1ha2UgcmVjb21tZW5kYXRpb25zIHRvIHRoZSBTdXByZW1lIENvdXJ0IGZvciB0aGUgcmVtb3ZhbCxcbmRpc2NpcGxpbmUsIGFuZCByZXRpcmVtZW50IG9mIGp1ZGljaWFsIG9mZmljZXJzIn1dfV19LCB7ImFyZWEiOiAiUHVibGljIFNhZmV0eSIsICJhZ2VuY3kiOiAiRGVwYXJ0bWVudCBvZiBKdXZlbmlsZSBDb3JyZWN0aW9ucyIsICJmdHAiOiA0MDIuMCwgImdmIjogNTEzMjMzMDAsICJkZWQiOiA5Mjc4NjAwLCAiZmVkIjogMjE5OTYwMCwgInRvdGFsIjogNjI4MDE1MDAsICJmZWRfc2hhcmUiOiAwLjAzNSwgImRlZF9zaGFyZSI6IDAuMTQ3NywgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiUzEzNjEiLCAiUzE0MDIiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlNlY3Rpb24gNyBvZiBIOTQyIGluY2x1ZGVkIGNvbmRpdGlvbnMsIGxpbWl0YXRpb25zLCBhbmQgcmVzdHJpY3Rpb25zIHBlcnRhaW5pbmcgdG8geW91dGhcbiBhc3Nlc3NtZW50IGNlbnRlcnMuIFRoaXMgc2VjdGlvbiBkaWN0YXRlZCB0aGF0IG1vbmV5cyBhcHByb3ByaWF0ZWQgZm9yIHlvdXRoIGFzc2Vzc21lbnQgY2VudGVycyBhcmUgaW50ZW5kZWQgdG8gYmUgb25ldGltZSB3aXRoIG5vXG5leHBlY3RhdGlvbiBvZiBmdXR1cmUgZmluYW5jaWFsIHN1cHBvcnQuIFlvdXRoIGFzc2Vzc21lbnQgY2VudGVycyBtdXN0IHN1Ym1pdCBzdXN0YWluYWJpbGl0eSBwbGFucyB0aGF0IHNoYWxsIGJlIHN1Ym1pdHRlZCB0byB0aGUgRGVwYXJ0bWVudFxub2YgSnV2ZW5pbGUgQ29ycmVjdGlvbnMgKElESkMpIGFuZCB0aGUifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJBZG1pbmlzdHJhdGlvbiIsICJ0ZXh0IjogIkFkbWluaXN0cmF0aW9uIHByb3ZpZGVzIHN1cHBvcnQgYW5kIG92ZXJzaWdodCBmdW5jdGlvbnMgZm9yIHRoZSBkZXBhcnRtZW50LiBGdW5jdGlvbnMgaW5jbHVkZSB0aGUgZGlyZWN0b3JcdTIwMTlzXG5vZmZpY2UsIGxlZ2FsLCBmaXNjYWwsIGluZm9ybWF0aW9uIHRlY2hub2xvZ3ksIHB1cmNoYXNpbmcsIGZhY2lsaXR5IGFuZCBmbGVldCBtYW5hZ2VtZW50LCBodW1hbiByZXNvdXJjZXMsIGFuZCBxdWFsaXR5IGltcHJvdmVtZW50In0sIHsic3ViX3Byb2dyYW0iOiAiQ29tbXVuaXR5LCBPcGVyYXRpb25zLCBhbmQgUHJvZ3JhbSBTZXJ2aWNlcyIsICJ0ZXh0IjogIlRoaXMgcHJvZ3JhbSBlbmNvbXBhc3NlcyBhbGwgZGVwYXJ0bWVudCBmdW5jdGlvbnMgcmVsYXRlZCB0byBidWlsZGluZyBhbmQgbWFpbnRhaW5pbmcgcGFydG5lcnNoaXBzIGFuZFxucHJvZ3JhbXMgYXQgdGhlIGNvbW11bml0eSBsZXZlbCB0byBzZXJ2ZSBqdXZlbmlsZXMgYW5kIGF2b2lkIGNvbW1pdG1lbnQgdG8gdGhlIGRlcGFydG1lbnQuIFN0YWZmIHdvcmsgZGlyZWN0bHkgd2l0aCBjb21tdW5pdHlcbm9yZ2FuaXphdGlvbnMgdXRpbGl6aW5nIGEgdmFyaWV0eSBvZiBzdHJhdGVnaWVzIGFuZCBmdW5kaW5nIHN0cmVhbXMgdG8gYnVpbGQgY29tbXVuaXR5IGNvbXBldGVuY3kuIFBlYWNlIE9mZmljZXIgU3RhbmRhcmRzIGFuZCBUcmFpbmluZ1xuQWNhZGVteSBzdGFmZiB3b3JrIGRpcmVjdGx5IHdpdGgganV2ZW5pbGUganVzdGljZSBlbXBsb3llZXMgdG8gaW1wcm92ZSBwcm9mZXNzaW9uYWxpc20gYW5kIG91dGNvbWVzLiBJdCBhbHNvIGFkbWluaXN0ZXJzIHRoZSBJbnRlcnN0YXRlXG5Db21wYWN0IG9uIEp1dmVuaWxlcywgd2hpY2ggb3ZlcnNlZXMgY2FzZXMgb2YganV2ZW5pbGUgc3VwZXJ2aXNpb24gYWNyb3NzIHN0YXRlIGxpbmVzIGluIG9yZGVyIHRvIGEifSwgeyJzdWJfcHJvZ3JhbSI6ICJJbnN0aXR1dGlvbnMiLCAidGV4dCI6ICJUaGUgZGVwYXJ0bWVudCBvcGVyYXRlcyB0aHJlZSBmYWNpbGl0aWVzIGZvciBqdXZlbmlsZSBvZmZlbmRlcnMgYW5kIGNvbnRyYWN0cyB3aXRoIHByaXZhdGUgcmVzaWRlbnRpYWwgcHJvdmlkZXJzIGZvclxuYWRkaXRpb25hbCBqdXZlbmlsZSBwbGFjZW1lbnRzLiBEZXBhcnRtZW50IHByb2dyYW1taW5nIGlzIGJhc2VkIG9uIGEgYmFsYW5jZWQgYXBwcm9hY2gsIGFuZCBpbmNsdWRlcyBjb21wb25lbnRzIG9mIHZpY3RpbSBhbmRcbmNvbW11bml0eSByZXN0b3JhdGlvbiwgd29yayBwcm9qZWN0cywgc29jaWFsIHNraWxscyBkZXZlbG9wbWVudCwgYW5kIGVkdWNhdGlvbi4gWW91dGggcHJlc2VudGluZyB0aGUgaGlnaGVzdCByaXNrIHRvIHRoZSBjb21tdW5pdHkgYXJlXG5wbGFjZWQgaW4gb25lIG9mIHRoZSBKdXZlbmlsZSBDb3JyZWN0aW9ucyBDZW50ZXJzIGluIFN0LiBBbnRob255ICgxMzAgYmVkcyksIE5hbXBhICg2NiBiZWRzKSwgb3IgTGV3aXN0b24gKDMwIGJlZHMpLiBQcm92aWRlcnMgYWxzbyBzZXJ2ZVxuanV2ZW5pbGVzIHRyYW5zaXRpb25pbmcgYmFjayB0byB0aGUgY29tbXVuaXR5LiBUaGUgZGVwYXJ0bWVudCdzIGNsaW5pY2FsIHN0YWZmIHByb3ZpIn1dfSwgeyJhcmVhIjogIlB1YmxpYyBTYWZldHkiLCAiYWdlbmN5IjogIklkYWhvIFN0YXRlIFBvbGljZSIsICJmdHAiOiA2NDYuMDksICJnZiI6IDY5MTgwNTAwLCAiZGVkIjogMzg0Njc2MDAsICJmZWQiOiAxNTQzMDUwMCwgInRvdGFsIjogMTIzMDc4NjAwLCAiZmVkX3NoYXJlIjogMC4xMjU0LCAiZGVkX3NoYXJlIjogMC4zMTI1LCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJTMTM2MSIsICJTMTQwOSJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFtdLCAiY2hpbGRyZW4iOiBbeyJuYW1lIjogIkRpdmlzaW9uIG9mIElkYWhvIFN0YXRlIFBvbGljZSIsICJnZiI6IDY5MTgwNTAwLCAiZGVkIjogMjc4MTE4MDAsICJmZWQiOiAxNTE3MTgwMCwgInRvdGFsIjogMTEyMTY0MTAwLCAiZmVkX3NoYXJlIjogMC4xMzUzLCAiZGVkX3NoYXJlIjogMC4yNDgsICJiaWxscyI6IFsiUzEzNjEiLCAiUzE0MDkiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJPVEhFUiBMRUdJU0xBVElPTiIsICJ0ZXh0IjogIkg3OTMgYW1lbmRlZCB0aGUgcmV2ZW51ZSBkaXN0cmlidXRpb24gb2YgdGhlIGJlZXIgZXhjaXNlIHRheCBwdXJzdWFudCB0byBTZWN0aW9uIDIzLTEwMDgsIElkYWhvIENvZGUsIGRpcmVjdGluZ1xubW9uZXlzIHRoYXQgd2VyZSBwcmV2aW91c2x5IGRpc3RyaWJ1dGVkIHRvIHRoZSBQZXJtYW5lbnQgQnVpbGRpbmcgRnVuZCB0byB0aGUgSWRhaG8gU3RhdGUgUG9saWNlLCB3aXRoIDYwJSBvZiB0aG9zZSBjb250cmlidXRpb25zIGdvaW5nIHRvXG50aGUgSWRhaG8gTGF3IEVuZm9yY2VtZW50IChQcm9qZWN0IENob2ljZSkgRnVuZCwgYW5kIHRoZSBvdGhlciA0MCUgZGlyZWN0ZWQgdG8gdGhlIEFsY29ob2wgQmV2ZXJhZ2UgQ29udHJvbCBGdW5kLiBTMTMyNSBjcmVhdGVkIGFcbm5ldyB3aGl0ZSBhbmQgYmxhY2sifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJEaXJlY3RvcidzIE9mZmljZSIsICJ0ZXh0IjogIlRoZSBEaXJlY3RvcidzIE9mZmljZSBwcm92aWRlcyBhZG1pbmlzdHJhdGl2ZSBhbmQgcG9saWN5IHN1cHBvcnQgdG8gdGhlIGVudGlyZSBkZXBhcnRtZW50LiBJbmNsdWRlZCB3aXRoaW4gdGhpc1xucHJvZ3JhbSBhcmUgdGhlIGRpcmVjdG9yJ3Mgb2ZmaWNlLCBsZWdhbCBzZXJ2aWNlcywgZmluYW5jaWFsIHNlcnZpY2VzLCBhbmQgcHJvY3VyZW1lbnQifSwgeyJzdWJfcHJvZ3JhbSI6ICJDYXBpdG9sIFByb3RlY3RpdmUgU2VydmljZXMiLCAidGV4dCI6ICJUaGlzIHByb2dyYW0gcHJvdmlkZXMgcHJvdGVjdGlvbiBmb3IgSWRhaG8ncyBHb3Zlcm5vciBhbmQgRmlyc3QgTGFkeS4gQ3VycmVudGx5LCBvZmZpY2VycyBhcmUgYXNzaWduZWQgdG8gZXNjb3J0XG5hbmQgcHJvdGVjdCB0aGVtIGF0IGFsbCBldmVudHMsIHdoaWxlIHRoZXkgYXJlIHJlcHJlc2VudGluZyBJZGFoby4gSXQgYWxzbyBwcm92aWRlcyBwcm90ZWN0aW9uIHRvIHRoZSBMZWdpc2xhdHVyZSBkdXJpbmcgdGhlIGxlZ2lzbGF0aXZlIHNlc3Npb24sXG5TdXByZW1lIENvdXJ0IHNlY3VyaXR5LCBhbmQgb2ZmaWNlciBzdXBwb3J0IGZvciBDYXBpdG9sIE1hbGwgc2VjdXJpdHkgYW5kIHRoZSBDaGluZGVuIENhbXB1cy4gVGhlIGFnZW5jeSBjaGFuZ2VkIHRoZSBwcm9ncmFtIG5hbWUgaW5cbjIwMjEgZnJvbSBFeGVjdXRpdmUgUHJvdGVjdGlvbiB0byBDYXBpdG9sIFByb3RlY3RpdmUgU2VydmljZXMgdG8gbW9yZSBhY2N1cmF0ZWx5IGRlZmluZSB0aGUgcHJvZ3JhbSJ9LCB7InN1Yl9wcm9ncmFtIjogIkludmVzdGlnYXRpb25zIiwgInRleHQiOiAiSW52ZXN0aWdhdGlvbnMgcHJvdmlkZXMgc3RhdGV3aWRlIGRldGVjdGl2ZSBzZXJ2aWNlcyBmb3IgbG9jYWwgbGF3IGVuZm9yY2VtZW50IGFuZCBJZGFobyBjaXRpemVucywgd2l0aCBhIHByaW1hcnlcbmZvY3VzIG9uIGRydWcgZW5mb3JjZW1lbnQgYW5kIHZpY3RpbSBjcmltZXMifSwgeyJzdWJfcHJvZ3JhbSI6ICJQYXRyb2wiLCAidGV4dCI6ICJQYXRyb2wgaXMgcmVzcG9uc2libGUgZm9yIHRoZSBwcm90ZWN0aW9uIG9mIGxpZmUgYW5kIHByb3BlcnR5IG9uIElkYWhvJ3MgaGlnaHdheXMsIGFuZCBwcm92aWRlcyBhY2NpZGVudFxuaW52ZXN0aWdhdGlvbnMgYW5kIGFzc2lzdGFuY2UgdG8gdGhlIG1vdG9yaW5nIHB1YmxpYyBhbmQgYWxsIGxhdyBlbmZvcmNlbWVudCBhZ2VuY2llcyBpbiBJZGFoby4gSXQgaXMgYWxzbyByZXNwb25zaWJsZSBmb3IgZmxlZXQgbWFuYWdlbWVudFxuYW5kIHRyYWluaW5nIn0sIHsic3ViX3Byb2dyYW0iOiAiTGF3IEVuZm9yY2VtZW50IFByb2dyYW1zIiwgInRleHQiOiAiVGhpcyBwcm9ncmFtIGFkbWluaXN0ZXJzIHRoZSBhbGNvaG9sIGJldmVyYWdlIGxhd3Mgb2YgdGhlIHN0YXRlIHJlbGF0aW5nIHRvIGxpY2Vuc2luZyBhbmQgY29tcGxpYW5jZSJ9LCB7InN1Yl9wcm9ncmFtIjogIlN1cHBvcnQgU2VydmljZXMiLCAidGV4dCI6ICJTdXBwb3J0IFNlcnZpY2VzIGlzIGNvbXBvc2VkIG9mIHRoZSBjcmltaW5hbCBpZGVudGlmaWNhdGlvbiBzZWN0aW9uLCB3aGljaCBwcm92aWRlcyB3YW50ZWQgcGVyc29ucyBhbmQgc3RvbGVuXG5wcm9wZXJ0eSBpbmZvcm1hdGlvbiB0byBsYXcgZW5mb3JjZW1lbnQgaW4gdGhlIGZpZWxkOyBtYWludGFpbnMgc2V4IG9mZmVuZGVyIGFuZCBvdGhlciByZWdpc3RyaWVzOyBhbmQgc3VwcG9ydHMgaW5mb3JtYXRpb24gc3lzdGVtcyJ9LCB7InN1Yl9wcm9ncmFtIjogIkZvcmVuc2ljIFNlcnZpY2VzIiwgInRleHQiOiAiRm9yZW5zaWMgU2VydmljZXMgYXNzaXN0cyBsYXcgZW5mb3JjZW1lbnQgYWdlbmNpZXMgdGhyb3VnaCBldmlkZW5jZSBnYXRoZXJpbmcsIGxhYm9yYXRvcnkgZXhhbWluYXRpb25zLFxuYW5hbHlzaXMsIGFuZCB0cmFpbmluZzsgcGVyZm9ybXMgRE5BIGFuYWx5c2lzOyBhbmQgbWFpbnRhaW5zIHRoZSBDb21iaW5lZCBETkEgSW5kZXggU3lzdGVtIChDT0RJUykgZGF0YWJhc2UifV19LCB7Im5hbWUiOiAiUE9TVCBBY2FkZW15IiwgImdmIjogMCwgImRlZCI6IDU4MDc2MDAsICJmZWQiOiAyNTg3MDAsICJ0b3RhbCI6IDYwNjYzMDAsICJmZWRfc2hhcmUiOiAwLjA0MjYsICJkZWRfc2hhcmUiOiAwLjk1NzQsICJiaWxscyI6IFsiUzEzNjEiLCAiUzE0MDkiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJGb3JlbnNpYyBTZXJ2aWNlcyIsICJ0ZXh0IjogIlRoZSBQT1NUIEFjYWRlbXkgZGVsaXZlcnMgdHJhaW5pbmcgYW5kIHRlY2huaWNhbCBhc3Npc3RhbmNlIHRvIGFsbCBsZXZlbHMgb2YgbGF3IGVuZm9yY2VtZW50IHRocm91Z2hvdXQgdGhlXG5zdGF0ZSwgcHJvdmlkaW5nIGJvdGggYmFzaWMgYW5kIHNwZWNpYWxpemVkIHRyYWluaW5nIHByb2dyYW1zIGZvciBhbGwgY29tbWlzc2lvbmVkIHBlYWNlIG9mZmljZXJzLiBQT1NUIGFsc28gdXBob2xkcyBjZXJ0aWZpY2F0aW9uIGFuZFxudHJhaW5pbmcgc3RhbmRhcmRzIGZvciBJZGFob1x1MjAxOXMgbGF3IGVuZm9yY2VtZW50IHByb2Zlc3Npb25hbHMsIGFzIGRpcmVjdGVkIGJ5IHRoZSBJZGFobyBQT1NUIENvdW5jaWwifV19LCB7Im5hbWUiOiAiQnJhbmQgSW5zcGVjdGlvbiIsICJnZiI6IDAsICJkZWQiOiA0NDA1MTAwLCAiZmVkIjogMCwgInRvdGFsIjogNDQwNTEwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDEuMCwgImJpbGxzIjogWyJTMTM2MSIsICJTMTQwOSJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkluc3RpdHV0aW9ucyIsICJ0ZXh0IjogIkJyYW5kIEluc3BlY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHRoZSBjZXJ0aWZpY2F0aW9uIG9mIG93bmVyc2hpcCBvZiBsaXZlc3RvY2sgdGhhdCBpcyB0cmFkZWQsIHNvbGQsIG9yIHNsYXVnaHRlcmVkIn1dfSwgeyJuYW1lIjogIlJhY2luZyBDb21taXNzaW9uIiwgImdmIjogMCwgImRlZCI6IDQ0MzEwMCwgImZlZCI6IDAsICJ0b3RhbCI6IDQ0MzEwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDEuMCwgImJpbGxzIjogWyJTMTM2MSJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkZvcmVuc2ljIFNlcnZpY2VzIiwgInRleHQiOiAiVGhlIFJhY2luZyBDb21taXNzaW9uIG1haW50YWlucyB0aGUgcXVhbGl0eSBvZiBob3JzZSByYWNpbmcgb3BlcmF0aW9ucyBieSBwcm90ZWN0aW5nIHBhcnRpY2lwYW50cyBhbmQgdGhlXG5wdWJsaWMgZnJvbSBpbGxlZ2FsIGFjdGl2aXR5In1dfV19LCB7ImFyZWEiOiAiTmF0dXJhbCBSZXNvdXJjZXMiLCAiYWdlbmN5IjogIkRlcGFydG1lbnQgb2YgRW52aXJvbm1lbnRhbCBRdWFsaXR5IiwgImZ0cCI6IDM3OS4wLCAiZ2YiOiAyODUxMTEwMCwgImRlZCI6IDIyMzczNjAwLCAiZmVkIjogNDc0NzE2MDAsICJ0b3RhbCI6IDk4MzU2MzAwLCAiZmVkX3NoYXJlIjogMC40ODI2LCAiZGVkX3NoYXJlIjogMC4yMjc1LCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJTMTM2MyIsICJTMTQwMyJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkNPTkRJVElPTlMsIExJTUlUQVRJT05TLCBBTkQgUkVTVFJJQ1RJT05TIiwgInRleHQiOiAiU2VjdGlvbiA4IG9mIFMxMzYzIGRpcmVjdGVkIHRoZSB1c2Ugb2YgdGhlIEFSUEEgU3RhdGUgRmlzY2FsIFJlY292ZXJ5IEZ1bmQgZm9yXG53YXRlciBpbmZyYXN0cnVjdHVyZSBhbmQgcmVtZWRpYXRpb24gcHJvamVjdHMgYW5kIHJlcXVpcmVkIGEgcmVwb3J0IHBlcnRhaW5pbmcgdG8gZnVuZCBleHBlbmRpdHVyZSBhbmQgcHJvamVjdCBjb21wbGV0aW9uIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiQWRtaW5pc3RyYXRpb24gYW5kIFN1cHBvcnQgU2VydmljZXMiLCAidGV4dCI6ICJBZG1pbmlzdHJhdGlvbiBhbmQgU3VwcG9ydCBTZXJ2aWNlcyBkZXZlbG9wcyBwb2xpY2llcywgbGVnaXNsYXRpb24sIGFuZCBydWxlcyB0aGF0IHN1c3RhaW4gdGhlIHN0YXRlXHUyMDE5cyBhdXRob3JpdHlcbm92ZXIgcGVybWl0dGluZywgcmVndWxhdG9yeSwgYW5kIHJlbWVkaWF0aW9uIHByb2dyYW1zOyBwcm9tb3RlcyBwdWJsaWMgdW5kZXJzdGFuZGluZyBvZiBtYWpvciBlbnZpcm9ubWVudGFsIGlzc3VlcyBhbmQgc29saWNpdHMgcHVibGljIGlucHV0XG5pbiBlbnZpcm9ubWVudGFsIHByaW9yaXR5IHNldHRpbmc7IGFzc2Vzc2VzIGFuZCByZXBvcnRzIG9uIHByb2dyYW0gZWZmZWN0aXZlbmVzcyBpbiBpbXByb3Zpbmcgd2F0ZXIgYW5kIGFpciBxdWFsaXR5OyBhbmQgc2VydmVzIHRoZVxuZGVwYXJ0bWVudFx1MjAxOXMgaW50ZXJuYWwgc3VwcG9ydCBuZWVkcy4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gMzktMTAyQSwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifV19LCB7ImFyZWEiOiAiTmF0dXJhbCBSZXNvdXJjZXMiLCAiYWdlbmN5IjogIkRlcGFydG1lbnQgb2YgRmlzaCBhbmQgR2FtZSIsICJmdHAiOiA1NTAuMCwgImdmIjogMCwgImRlZCI6IDkyOTg5MDAwLCAiZmVkIjogNjg1MjgwMDAsICJ0b3RhbCI6IDE2MTUxNzAwMCwgImZlZF9zaGFyZSI6IDAuNDI0MywgImRlZF9zaGFyZSI6IDAuNTc1NywgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiSDk2NCIsICJTMTM2MyJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkNPTkRJVElPTlMsIExJTUlUQVRJT05TLCBBTkQgUkVTVFJJQ1RJT05TIiwgInRleHQiOiAiU2VjdGlvbiA0IG9mIEg5NjQgZGlyZWN0ZWQgdGhhdCAkMjAwLDAwMCBhcHByb3ByaWF0ZWQgdG8gbWFuYWdlIHdvbGYgcHJlZGF0aW9uIGJlXG51c2VkIGZvciB0cmFwcGluZyBhbmQgcmVxdWlyZWQgdGhhdCBhbnkgdW5leHBlbmRlZCBmdW5kcyByZXZlcnQgdG8gdGhlIGZ1bmQifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJBZG1pbmlzdHJhdGlvbiIsICJ0ZXh0IjogIlRoZSBBZG1pbmlzdHJhdGlvbiBQcm9ncmFtIHByb3ZpZGVzIHRoZSBhZG1pbmlzdHJhdGl2ZSwgZmlzY2FsLCBpbmZvcm1hdGlvbiBzeXN0ZW1zLCBodW1hbiByZXNvdXJjZXMsIGFuZFxucG9saWN5IHN1cHBvcnQgZm9yIHRoZSBkZXBhcnRtZW50IGFuZCB0aGUgRmlzaCBhbmQgR2FtZSBDb21taXNzaW9uLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiAzNi0xMDEsIElkYWhvIENvZGUsIGV0IHNlcS5dIn0sIHsic3ViX3Byb2dyYW0iOiAiRW5mb3JjZW1lbnQiLCAidGV4dCI6ICJUaGUgRW5mb3JjZW1lbnQgUHJvZ3JhbSBpcyByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIHRoZSBsYXdzIGFuZCByZWd1bGF0aW9ucyBwcm9tdWxnYXRlZCBieSB0aGUgSWRhaG8gRmlzaFxuYW5kIEdhbWUgQ29tbWlzc2lvbi4gT2ZmaWNlcnMgZG8gdGhpcyBieSBjaGVja2luZyBodW50ZXJzLCBmaXNoZXJtZW4sIGFuZCB0cmFwcGVycyBmb3IgY29tcGxpYW5jZSB3aXRoIGVzdGFibGlzaGVkIGxhd3MgYW5kIHJ1bGVzIn0sIHsic3ViX3Byb2dyYW0iOiAiRmlzaGVyaWVzIiwgInRleHQiOiAiVGhlIEZpc2hlcmllcyBQcm9ncmFtIG1vbml0b3JzIGFuZCBtYW5pcHVsYXRlcyBmaXNoIHBvcHVsYXRpb25zIHRvIG1haW50YWluIG9yIGNyZWF0ZSBwdWJsaWMgZmlzaGVyaWVzLCBwcm90ZWN0c1xuYW5kIGVuaGFuY2VzIGZpc2ggaGFiaXRhdCwgZGV2ZWxvcHMgYW5nbGVyIGFjY2VzcyBhbmQgYW5nbGVyIGluZm9ybWF0aW9uLCBjb29yZGluYXRlcyB3aXRoIHRoZSBnZW5lcmFsIGZpc2hpbmcgcHVibGljLCBhbmQgZGV2ZWxvcHMgZmlzaGluZ1xuYW5kIGhhcnZlc3RpbmcgcnVsZXMifSwgeyJzdWJfcHJvZ3JhbSI6ICJXaWxkbGlmZSIsICJ0ZXh0IjogIlRoZSBXaWxkbGlmZSBQcm9ncmFtIGlzIHJlc3BvbnNpYmxlIGZvciBwcmVzZXJ2aW5nLCBwcm90ZWN0aW5nLCBwZXJwZXR1YXRpbmcsIGFuZCBtYW5hZ2luZyB0aGUgd2lsZGxpZmUgb2YgdGhlXG5zdGF0ZSBhcyBkaXJlY3RlZCBieSBzdGF0ZSBsYXcuIEl0IGhhbmRsZXMgc3RhdGV3aWRlIGNvb3JkaW5hdGlvbiBpbiBzaXggbWFqb3IgYXJlYXM6IGJpZyBnYW1lLCBnYW1lIGJpcmRzLCBmdXJiZWFyZXJzLCBkZXBhcnRtZW50IGxhbmRzLFxucmVzZWFyY2gsIGFuZCB0aGUgbm9uLWdhbWUgcHJvZ3JhbSJ9LCB7InN1Yl9wcm9ncmFtIjogIkNvbW11bmljYXRpb25zIiwgInRleHQiOiAiVGhlIENvbW11bmljYXRpb25zIFByb2dyYW0gaW5jcmVhc2VzIHB1YmxpYyBhd2FyZW5lc3Mgb2YgSWRhaG9cdTIwMTlzIGZpc2ggYW5kIHdpbGRsaWZlIHJlc291cmNlcyB0aHJvdWdoXG5lZHVjYXRpb24gYW5kIGluZm9ybWF0aW9uIHByb2dyYW1zLCBwcm92aWRlcyBodW50ZXIgc2FmZXR5IGFuZCBldGhpY3MgcHJvZ3JhbXMsIGFuZCBzb2xpY2l0cyBwdWJsaWMgb3BpbmlvbiB0aHJvdWdoIHN1cnZleXMgYW5kIGNvbnRhY3RzIn1dfSwgeyJhcmVhIjogIk5hdHVyYWwgUmVzb3VyY2VzIiwgImFnZW5jeSI6ICJCb2FyZCBvZiBMYW5kIENvbW1pc3Npb25lcnMiLCAiZnRwIjogMzM4LjkzLCAiZ2YiOiAxMTI2NDIwMCwgImRlZCI6IDU2MjU2NzAwLCAiZmVkIjogMTIzMjcyMDAsICJ0b3RhbCI6IDc5ODQ4MTAwLCAiZmVkX3NoYXJlIjogMC4xNTQ0LCAiZGVkX3NoYXJlIjogMC43MDQ1LCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJTMTI0NyIsICJTMTM2MyIsICJTMTM4MCJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkNPTkRJVElPTlMsIExJTUlUQVRJT05TLCBBTkQgUkVTVFJJQ1RJT05TIiwgInRleHQiOiAiU2VjdGlvbiA1IG9mIFMxNDI3IHJlcXVpcmVkIHRoYXQgYW55IGFwcHJvcHJpYXRpb24gZnJvbSB0aGUgR2VuZXJhbCBGdW5kIGZvciBmaXJlXG5maWdodGluZyBib251c2VzIGJlIGxpbWl0ZWQgdG8gc3BlY2lmaWMgZW1wbG95ZWVzIGFuZCByZXF1aXJlZCBhIGEgcmVwb3J0IHRvIHRoZSBMZWdpc2xhdHVyZSJ9LCB7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJTZWN0aW9uIDExIG9mIFMxMzYzIHJlY29nbml6ZWQgdGhlIGFtb3VudCB0aGF0IHRoZSBTdGF0ZSBMYW5kIEJvYXJkIGFwcHJvdmVkIGZvclxudHJhbnNmZXIgdG8gdGhlIGluY29tZSBmdW5kcyBhbmQgYXZhaWxhYmxlIGZvciBhcHByb3ByaWF0aW9uIHRvIHRoZSBiZW5lZmljaWFyaWVzLiBUaGF0IGFtb3VudCB3YXMgJDExNywyNzgsNDAwIGZvciBGWSAyMDI3In0sIHsidHlwZSI6ICJCVURHRVQgTEFXIEVYRU1QVElPTlMiLCAidGV4dCI6ICJUaGlzIGFnZW5jeSByZWNlaXZlZCBzcGVjaWZpYyBsZWdpc2xhdGl2ZSBhdXRob3JpemF0aW9uIGluIFMxNDI3IHRoYXQgZXhlbXB0ZWQgdGhlIGFnZW5jeSBmcm9tIHRoZSAxMCVcbnRyYW5zZmVyIGxpbWl0YXRpb24gYmV0d2VlbiBidWRnZXRlZCBwcm9ncmFtcyBmb3IgdHJhbnNmZXJzIGludG8gdGhlIEZvcmVzdCBhbmQgUmFuZ2UgRmlyZSBQcm90ZWN0aW9uIFByb2dyYW0gaW4gRlkgMjAyNyJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkNvbW11bmljYXRpb25zIiwgInRleHQiOiAiVGhlIEVuZG93bWVudCBGdW5kIEludmVzdG1lbnQgQm9hcmQgYWN0aXZlbHkgbWFuYWdlcyB0aGUgbGFuZCBncmFudCBlbmRvd21lbnQgZnVuZHMsIHRoZSBTdGF0ZSBJbnN1cmFuY2VcbkZ1bmQsIHRoZSBSaXR0ZXIgSXNsYW5kIEVuZG93bWVudCwgdGhlIFRyYWlsIG9mIHRoZSBDb2V1ciBkJ0FsZW5lcyBFbmRvd21lbnQsIHRoZSBLZWxsb2dnIEluc3RpdHV0aW9uYWwgQ29udHJvbHMgRW5kb3dtZW50LCBhbmQgSWRhaG8gRmlzaFxuYW5kIEdhbWUgRW5kb3dtZW50cy4gVGhlIG9iamVjdGl2ZSBpcyB0byBwcm92aWRlIGdyb3d0aCBvZiBwcmluY2lwYWwgdG8gdGhlIGZ1bmRzIGFuZCBpbmNyZWFzaW5nIGluY29tZSB0byB0aGUgZnVuZHMnIGJlbmVmaWNpYXJpZXMuXG5bU3RhdHV0b3J5IEF1dGhvcml0eTogQXJ0LiBJWCwgU2VjdGlvbiAzLCBJZGFobyBDb25zdC47IFNlY3Rpb24gNTctNzE4LCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9LCB7InN1Yl9wcm9ncmFtIjogIkJ1c2luZXNzIFNlcnZpY2VzIiwgInRleHQiOiAiVGhlIEJ1c2luZXNzIFNlcnZpY2VzIFByb2dyYW0gcHJvdmlkZXMgc3RhZmYgc3VwcG9ydCB0byB0aGUgU3RhdGUgQm9hcmQgb2YgTGFuZCBDb21taXNzaW9uZXJzLCBhbmQgcHJvdmlkZXNcbmFkbWluaXN0cmF0aXZlIGFuZCB0ZWNobmljYWwgYXNzaXN0YW5jZSBpbiBsZWdhbCwgZGF0YSBwcm9jZXNzaW5nLCBwZXJzb25uZWwsIGh1bWFuIHJlc291cmNlcywgZmlzY2FsLCBhbmQgSVQgc2VydmljZXMuIFByaW9yIHRvIEZZIDIwMjIsIHRoaXNcbnByb2dyYW0gd2FzIG5hbWVkIHRoZSBTdXBwb3J0IFNlcnZpY2VzIFByb2dyYW0uIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDU4LTEwMSwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJGb3Jlc3QgUmVzb3VyY2VzIE1hbmFnZW1lbnQiLCAidGV4dCI6ICJUaGUgRm9yZXN0IFJlc291cmNlcyBNYW5hZ2VtZW50IFByb2dyYW0gaGFzIHRoZSByZXNwb25zaWJpbGl0eSB0byBwcm92aWRlIHRlY2huaWNhbCBndWlkYW5jZSwgZGV2ZWxvcFxuYWRtaW5pc3RyYXRpdmUgcHJvY2VkdXJlcywgYW5kIG1haW50YWluIGEgc3lzdGVtIG9mIHJldmlldyBmb3IgYWxsIHByb2dyYW1zIHJlbGF0aW5nIHRvIHRoZSBwcm90ZWN0aW9uLCBhZG1pbmlzdHJhdGlvbiwgaW1wcm92ZW1lbnQsIGFuZFxudXRpbGl6YXRpb24gb2YgdGhlIGZvcmVzdCByZXNvdXJjZXMgb24gc3RhdGUgYW5kIHByaXZhdGUgbGFuZHMgd2l0aGluIElkYWhvLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiA1OC0xMDEsIElkYWhvIENvZGUsIGV0IHNlcS5dIn0sIHsic3ViX3Byb2dyYW0iOiAiVHJ1c3QgTGFuZCBNYW5hZ2VtZW50IiwgInRleHQiOiAiVGhlIG9iamVjdGl2ZSBvZiB0aGlzIHByb2dyYW0gaXMgdG8gbWF4aW1pemUgaW5jb21lIGZyb20gY3JvcGxhbmQsIGdyYXppbmcsIG1pbmVyYWwgcmVzb3VyY2VzLCByZWNyZWF0aW9uIHNpdGVzXG5hbmQgc3BlY2lhbCBzdXJmYWNlIHVzZXMgb2Ygc3RhdGUtb3duZWQgbGFuZCwgYW5kIHRvIHByb3ZpZGUgZW52aXJvbm1lbnRhbCBwcm90ZWN0aW9uIG9mIHRoZSBzdGF0ZSdzIG5hdHVyYWwgcmVzb3VyY2VzIGFuZCBwdWJsaWMgdHJ1c3QgbGFuZHNcbnRocm91Z2ggYWN0aXZlIGFkbWluaXN0cmF0aW9uIG9mIHRoZSBMYWtlIFByb3RlY3Rpb24gQWN0LCBTdXJmYWNlIE1pbmluZyBBY3QsIGFuZCB0aGUgRHJlZGdlIGFuZCBQbGFjZXIgTWluaW5nIEFjdC4gVGhlIHByb2dyYW0gYWxzb1xuYWRtaW5pc3RlcnMgYSBzdGF0ZSBsYW5kIHNhbGUgYW5kIGV4Y2hhbmdlIHByb2dyYW0sIHdoaWNoIHVzZXMgdGhlIGxhbmQgZXhjaGFuZ2UgcHJvZ3JhbSB0byBibG9jayBzdGF0ZSBvd25lcnNoaXAgZm9yIG1hbmFnZW1lbnRcbmVmZmljaWVuY3kgd2hpbGUgYWNxdWlyaW5nIGhpZ2ggdmFsdWUsIGhpZ2ggcmV2ZW51ZSBwcm9kdWNpbmcgcHJvcGVydHkuIEFkbWluaXN0cmF0aSJ9LCB7InN1Yl9wcm9ncmFtIjogIkZvcmVzdCBhbmQgUmFuZ2UgRmlyZSBQcm90ZWN0aW9uIiwgInRleHQiOiAiVGhpcyBwcm9ncmFtIHByb3ZpZGVzIHByb3RlY3Rpb24gdG8gdGhlIHRpbWJlcmVkIGFuZCBncmF6aW5nIGxhbmRzIG9mIHRoZSBzdGF0ZSB0aHJvdWdoIHByZXZlbnRpb24sIGFuZCByYXBpZFxuZGV0ZWN0aW9uIGFuZCBzdXBwcmVzc2lvbiBvZiB3aWxkZmlyZS4gVGhlIHByb2dyYW0gYWxzbyBwcm92aWRlcyBhc3Npc3RhbmNlIHRvIHJ1cmFsIGNvbW11bml0eSBmaXJlIGRlcGFydG1lbnRzLiBUaGUgRGVwYXJ0bWVudCBvZiBMYW5kc1xuaGFzIGEgZmlyZSBwcm90ZWN0aW9uIG9yZ2FuaXphdGlvbiBpbnZvbHZpbmcgdGVuIGRpc3RyaWN0cywgc2Vhc29uYWwgbG9va291dHMsIGFuZCBmaXJlIGNvbnRyb2wgYWlkZXMuIFN0YXRlIGxhbmQgaXMgYWxzbyBwcm90ZWN0ZWQgYnkgdHdvIGZpcmVcbnByb3RlY3RpdmUgYXNzb2NpYXRpb25zIG9mIHdoaWNoIHRoZSBTdGF0ZSBvZiBJZGFobyBpcyBhIG1lbWJlci4gRnVydGhlcm1vcmUsIHN0YXRlIGFuZCBwcml2YXRlIGxhbmRzIHdpdGhpbiB0aGUgVVMgRm9yZXN0IFNlcnZpY2UgYW5kXG5CdXJlYXUgb2YgTGFuZCBNYW5hZ2VtZW50IHByb3RlY3Rpb24gYm91bmRhcmllcyBhcmUgcHJvdGVjdGVkIGJ5IHRob3NlIHR3byJ9LCB7InN1Yl9wcm9ncmFtIjogIlNjYWxpbmcgUHJhY3RpY2VzIiwgInRleHQiOiAiVGhlIEJvYXJkIG9mIFNjYWxpbmcgUHJhY3RpY2VzIGlzIGNvbXBvc2VkIG9mIHRoZSBEaXJlY3RvciBvZiB0aGUgRGVwYXJ0bWVudCBvZiBMYW5kcyBhbmQgc2l4IG90aGVyIG1lbWJlcnNcbnJlcHJlc2VudGluZyBkaWZmZXJlbnQgc2VnbWVudHMgb2YgdGhlIHRpbWJlciBpbmR1c3RyeTogdHdvIHJlcHJlc2VudGluZyBtYW51ZmFjdHVyaW5nLCB0d28gcmVwcmVzZW50aW5nIGxvZ2dpbmcgYW5kIHRyYW5zcG9ydGF0aW9uLCBvbmVcbnJlcHJlc2VudGluZyBub25pbmR1c3RyaWFsIHByaXZhdGUgZm9yZXN0IGxhbmRvd25lcnMsIGFuZCBvbmUgcmVwcmVzZW50aW5nIHNtYWxsIGluZHVzdHJpYWwgZm9yZXN0IGxhbmRvd25lcnMuIFRoZSBib2FyZCBpcyBjaGFyZ2VkIHdpdGggdGhlXG5yZXNwb25zaWJpbGl0eSBvZiBhc3N1cmluZyB0aGF0IG9ubHkgY29tcGV0ZW50IGFuZCBjZXJ0aWZpZWQgc2NhbGVycyBhcmUgdXNlZCBieSB0aGUgZm9yZXN0IHByb2R1Y3RzIGluZHVzdHJ5IHRvIHNjYWxlIChtZWFzdXJlKSBmb3Jlc3QgcHJvZHVjdHNcbmluIGEgc3RhbmRhcmQsIHVuaWZvcm0gbWV0aG9kIHN0YXRld2lkZS4gVGhlIGJvYXJkIHRlc3RzIGFuZCBsaWNlbnNlcyJ9XSwgImNoaWxkcmVuIjogW3sibmFtZSI6ICJEZXBhcnRtZW50IG9mIExhbmRzIiwgImdmIjogMTEyNjQyMDAsICJkZWQiOiA1NTIzMzMwMCwgImZlZCI6IDEyMzI3MjAwLCAidG90YWwiOiA3ODgyNDcwMCwgImZlZF9zaGFyZSI6IDAuMTU2NCwgImRlZF9zaGFyZSI6IDAuNzAwNywgImJpbGxzIjogWyJTMTI0NyIsICJTMTM2MyJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkNPTkRJVElPTlMsIExJTUlUQVRJT05TLCBBTkQgUkVTVFJJQ1RJT05TIiwgInRleHQiOiAiU2VjdGlvbiA1IG9mIFMxNDI3IHJlcXVpcmVkIHRoYXQgYW55IGFwcHJvcHJpYXRpb24gZnJvbSB0aGUgR2VuZXJhbCBGdW5kIGZvciBmaXJlXG5maWdodGluZyBib251c2VzIGJlIGxpbWl0ZWQgdG8gc3BlY2lmaWMgZW1wbG95ZWVzIGFuZCByZXF1aXJlZCBhIGEgcmVwb3J0IHRvIHRoZSBMZWdpc2xhdHVyZSJ9LCB7InR5cGUiOiAiQlVER0VUIExBVyBFWEVNUFRJT05TIiwgInRleHQiOiAiVGhpcyBhZ2VuY3kgcmVjZWl2ZWQgc3BlY2lmaWMgbGVnaXNsYXRpdmUgYXV0aG9yaXphdGlvbiBpbiBTMTQyNyB0aGF0IGV4ZW1wdGVkIHRoZSBhZ2VuY3kgZnJvbSB0aGUgMTAlXG50cmFuc2ZlciBsaW1pdGF0aW9uIGJldHdlZW4gYnVkZ2V0ZWQgcHJvZ3JhbXMgZm9yIHRyYW5zZmVycyBpbnRvIHRoZSBGb3Jlc3QgYW5kIFJhbmdlIEZpcmUgUHJvdGVjdGlvbiBQcm9ncmFtIGluIEZZIDIwMjcifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJCdXNpbmVzcyBTZXJ2aWNlcyIsICJ0ZXh0IjogIlRoZSBCdXNpbmVzcyBTZXJ2aWNlcyBQcm9ncmFtIHByb3ZpZGVzIHN0YWZmIHN1cHBvcnQgdG8gdGhlIFN0YXRlIEJvYXJkIG9mIExhbmQgQ29tbWlzc2lvbmVycywgYW5kIHByb3ZpZGVzXG5hZG1pbmlzdHJhdGl2ZSBhbmQgdGVjaG5pY2FsIGFzc2lzdGFuY2UgaW4gbGVnYWwsIGRhdGEgcHJvY2Vzc2luZywgcGVyc29ubmVsLCBodW1hbiByZXNvdXJjZXMsIGZpc2NhbCwgYW5kIElUIHNlcnZpY2VzLiBQcmlvciB0byBGWSAyMDIyLCB0aGlzXG5wcm9ncmFtIHdhcyBuYW1lZCB0aGUgU3VwcG9ydCBTZXJ2aWNlcyBQcm9ncmFtLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiA1OC0xMDEsIElkYWhvIENvZGUsIGV0IHNlcS5dIn0sIHsic3ViX3Byb2dyYW0iOiAiRm9yZXN0IFJlc291cmNlcyBNYW5hZ2VtZW50IiwgInRleHQiOiAiVGhlIEZvcmVzdCBSZXNvdXJjZXMgTWFuYWdlbWVudCBQcm9ncmFtIGhhcyB0aGUgcmVzcG9uc2liaWxpdHkgdG8gcHJvdmlkZSB0ZWNobmljYWwgZ3VpZGFuY2UsIGRldmVsb3BcbmFkbWluaXN0cmF0aXZlIHByb2NlZHVyZXMsIGFuZCBtYWludGFpbiBhIHN5c3RlbSBvZiByZXZpZXcgZm9yIGFsbCBwcm9ncmFtcyByZWxhdGluZyB0byB0aGUgcHJvdGVjdGlvbiwgYWRtaW5pc3RyYXRpb24sIGltcHJvdmVtZW50LCBhbmRcbnV0aWxpemF0aW9uIG9mIHRoZSBmb3Jlc3QgcmVzb3VyY2VzIG9uIHN0YXRlIGFuZCBwcml2YXRlIGxhbmRzIHdpdGhpbiBJZGFoby4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNTgtMTAxLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9LCB7InN1Yl9wcm9ncmFtIjogIlRydXN0IExhbmQgTWFuYWdlbWVudCIsICJ0ZXh0IjogIlRoZSBvYmplY3RpdmUgb2YgdGhpcyBwcm9ncmFtIGlzIHRvIG1heGltaXplIGluY29tZSBmcm9tIGNyb3BsYW5kLCBncmF6aW5nLCBtaW5lcmFsIHJlc291cmNlcywgcmVjcmVhdGlvbiBzaXRlc1xuYW5kIHNwZWNpYWwgc3VyZmFjZSB1c2VzIG9mIHN0YXRlLW93bmVkIGxhbmQsIGFuZCB0byBwcm92aWRlIGVudmlyb25tZW50YWwgcHJvdGVjdGlvbiBvZiB0aGUgc3RhdGUncyBuYXR1cmFsIHJlc291cmNlcyBhbmQgcHVibGljIHRydXN0IGxhbmRzXG50aHJvdWdoIGFjdGl2ZSBhZG1pbmlzdHJhdGlvbiBvZiB0aGUgTGFrZSBQcm90ZWN0aW9uIEFjdCwgU3VyZmFjZSBNaW5pbmcgQWN0LCBhbmQgdGhlIERyZWRnZSBhbmQgUGxhY2VyIE1pbmluZyBBY3QuIFRoZSBwcm9ncmFtIGFsc29cbmFkbWluaXN0ZXJzIGEgc3RhdGUgbGFuZCBzYWxlIGFuZCBleGNoYW5nZSBwcm9ncmFtLCB3aGljaCB1c2VzIHRoZSBsYW5kIGV4Y2hhbmdlIHByb2dyYW0gdG8gYmxvY2sgc3RhdGUgb3duZXJzaGlwIn0sIHsic3ViX3Byb2dyYW0iOiAiRm9yZXN0IGFuZCBSYW5nZSBGaXJlIFByb3RlY3Rpb24iLCAidGV4dCI6ICJUaGlzIHByb2dyYW0gcHJvdmlkZXMgcHJvdGVjdGlvbiB0byB0aGUgdGltYmVyZWQgYW5kIGdyYXppbmcgbGFuZHMgb2YgdGhlIHN0YXRlIHRocm91Z2ggcHJldmVudGlvbiwgYW5kIHJhcGlkXG5kZXRlY3Rpb24gYW5kIHN1cHByZXNzaW9uIG9mIHdpbGRmaXJlLiBUaGUgcHJvZ3JhbSBhbHNvIHByb3ZpZGVzIGFzc2lzdGFuY2UgdG8gcnVyYWwgY29tbXVuaXR5IGZpcmUgZGVwYXJ0bWVudHMuIFRoZSBEZXBhcnRtZW50IG9mIExhbmRzXG5oYXMgYSBmaXJlIHByb3RlY3Rpb24gb3JnYW5pemF0aW9uIGludm9sdmluZyB0ZW4gZGlzdHJpY3RzLCBzZWFzb25hbCBsb29rb3V0cywgYW5kIGZpcmUgY29udHJvbCBhaWRlcy4gU3RhdGUgbGFuZCBpcyBhbHNvIHByb3RlY3RlZCBieSB0d28gZmlyZVxucHJvdGVjdGl2ZSBhc3NvY2lhdGlvbnMgb2Ygd2hpY2ggdGhlIFN0YXRlIG9mIElkYWhvIGlzIGEgbWVtYmVyLiBGdXJ0aGVybW9yZSwgc3RhdGUgYW5kIHByaXZhdGUgbGFuZHMgd2l0aGluICJ9LCB7InN1Yl9wcm9ncmFtIjogIlNjYWxpbmcgUHJhY3RpY2VzIiwgInRleHQiOiAiVGhlIEJvYXJkIG9mIFNjYWxpbmcgUHJhY3RpY2VzIGlzIGNvbXBvc2VkIG9mIHRoZSBEaXJlY3RvciBvZiB0aGUgRGVwYXJ0bWVudCBvZiBMYW5kcyBhbmQgc2l4IG90aGVyIG1lbWJlcnNcbnJlcHJlc2VudGluZyBkaWZmZXJlbnQgc2VnbWVudHMgb2YgdGhlIHRpbWJlciBpbmR1c3RyeTogdHdvIHJlcHJlc2VudGluZyBtYW51ZmFjdHVyaW5nLCB0d28gcmVwcmVzZW50aW5nIGxvZ2dpbmcgYW5kIHRyYW5zcG9ydGF0aW9uLCBvbmVcbnJlcHJlc2VudGluZyBub25pbmR1c3RyaWFsIHByaXZhdGUgZm9yZXN0IGxhbmRvd25lcnMsIGFuZCBvbmUgcmVwcmVzZW50aW5nIHNtYWxsIGluZHVzdHJpYWwgZm9yZXN0IGxhbmRvd25lcnMuIFRoZSBib2FyZCBpcyBjaGFyZ2VkIHdpdGggdGhlXG5yZXNwb25zaWJpbGl0eSBvZiBhc3N1cmluZyB0aGF0IG9ubHkgY29tcGV0ZW50IGFuZCBjZXJ0aWZpZWQgc2NhbGVycyBhcmUgdXNlZCBieSB0aGUgZm9yZXN0IHByb2R1Y3RzIGluZHVzdHJ5IHRvIHMifV19LCB7Im5hbWUiOiAiRW5kb3dtZW50IEZ1bmQgSW52ZXN0bWVudCBCb2FyZCIsICJnZiI6IDAsICJkZWQiOiAxMDIzNDAwLCAiZmVkIjogMCwgInRvdGFsIjogMTAyMzQwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDEuMCwgImJpbGxzIjogWyJTMTM2MyIsICJTMTM4MCJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkNPTkRJVElPTlMsIExJTUlUQVRJT05TLCBBTkQgUkVTVFJJQ1RJT05TIiwgInRleHQiOiAiU2VjdGlvbiAxMSBvZiBTMTM2MyByZWNvZ25pemVkIHRoZSBhbW91bnQgdGhhdCB0aGUgU3RhdGUgTGFuZCBCb2FyZCBhcHByb3ZlZCBmb3JcbnRyYW5zZmVyIHRvIHRoZSBpbmNvbWUgZnVuZHMgYW5kIGF2YWlsYWJsZSBmb3IgYXBwcm9wcmlhdGlvbiB0byB0aGUgYmVuZWZpY2lhcmllcy4gVGhhdCBhbW91bnQgd2FzICQxMTcsMjc4LDQwMCBmb3IgRlkgMjAyNyJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkNvbW11bmljYXRpb25zIiwgInRleHQiOiAiVGhlIEVuZG93bWVudCBGdW5kIEludmVzdG1lbnQgQm9hcmQgYWN0aXZlbHkgbWFuYWdlcyB0aGUgbGFuZCBncmFudCBlbmRvd21lbnQgZnVuZHMsIHRoZSBTdGF0ZSBJbnN1cmFuY2VcbkZ1bmQsIHRoZSBSaXR0ZXIgSXNsYW5kIEVuZG93bWVudCwgdGhlIFRyYWlsIG9mIHRoZSBDb2V1ciBkJ0FsZW5lcyBFbmRvd21lbnQsIHRoZSBLZWxsb2dnIEluc3RpdHV0aW9uYWwgQ29udHJvbHMgRW5kb3dtZW50LCBhbmQgSWRhaG8gRmlzaFxuYW5kIEdhbWUgRW5kb3dtZW50cy4gVGhlIG9iamVjdGl2ZSBpcyB0byBwcm92aWRlIGdyb3d0aCBvZiBwcmluY2lwYWwgdG8gdGhlIGZ1bmRzIGFuZCBpbmNyZWFzaW5nIGluY29tZSB0byB0aGUgZnVuZHMnIGJlbmVmaWNpYXJpZXMuXG5bU3RhdHV0b3J5IEF1dGhvcml0eTogQXJ0LiBJWCwgU2VjdGlvbiAzLCBJZGFobyBDb25zdC47IFNlY3Rpb24gNTctNzE4LCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9XX1dfSwgeyJhcmVhIjogIk5hdHVyYWwgUmVzb3VyY2VzIiwgImFnZW5jeSI6ICJEZXBhcnRtZW50IG9mIFBhcmtzIGFuZCBSZWNyZWF0aW9uIiwgImZ0cCI6IDE5OC43NSwgImdmIjogNDE1ODAwMCwgImRlZCI6IDU0MDQ2MDAwLCAiZmVkIjogMTA0MTQyMDAsICJ0b3RhbCI6IDY4NjE4MjAwLCAiZmVkX3NoYXJlIjogMC4xNTE4LCAiZGVkX3NoYXJlIjogMC43ODc2LCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJTMTM2MyIsICJTMTQxNyJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkJVREdFVCBMQVcgRVhFTVBUSU9OUyIsICJ0ZXh0IjogIlRoaXMgYWdlbmN5IHJlY2VpdmVkIHNwZWNpZmljIGxlZ2lzbGF0aXZlIGF1dGhvcml6YXRpb24gaW4gUzE0MTcgdGhhdCBleGVtcHRzIHRoZSBhZ2VuY3kgZnJvbSB0aGUgMTAlXG50cmFuc2ZlciBsaW1pdGF0aW9uIGJldHdlZW4gYnVkZ2V0ZWQgcHJvZ3JhbXMifSwgeyJ0eXBlIjogIkJVREdFVCBMQVcgRVhFTVBUSU9OUyIsICJ0ZXh0IjogIlRoaXMgYWdlbmN5IHJlY2VpdmVkIHNwZWNpZmljIGxlZ2lzbGF0aXZlIGF1dGhvcml6YXRpb24gaW4gUzEzNjMgdGhhdCBleGVtcHRlZCB0aGUgYWdlbmN5IGZyb20gdGhlIDEwJVxudHJhbnNmZXIgbGltaXRhdGlvbiBiZXR3ZWVuIGJ1ZGdldGVkIHByb2dyYW1zLiBUaGlzIHJlcXVlc3Qgd291bGQgZW5hYmxlIHRoZSBhZ2VuY3kgdG8gdHJhbnNmZXIgdHJ1c3RlZSBhbmQgYmVuZWZpdCBwYXltZW50cyBhcHByb3ByaWF0ZWRcbmZvciBncmFudHMgaW4gdGhlIFBhcmsgT3BlcmF0aW9ucyBQcm9ncmFtIHRvIGNhcGl0YWwgb3V0bGF5IGluIHRoZSBDYXBpdGFsIERldmVsb3BtZW50IFByb2dyYW0gdG8gcmVmbGVjdCBncmFudHMgYXdhcmRlZCB0byB0aGUgRGVwYXJ0bWVudFxub2YgUGFya3MgYW5kIFJlY3JlYXQifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJTY2FsaW5nIFByYWN0aWNlcyIsICJ0ZXh0IjogIlRoZSBNYW5hZ2VtZW50IFNlcnZpY2VzIFByb2dyYW0gaW1wbGVtZW50cyB0aGUgcG9saWNpZXMgb2YgdGhlIFBhcmtzIGFuZCBSZWNyZWF0aW9uIEJvYXJkLCBhbmRcbmFkbWluaXN0ZXJzIHRoZSBvcGVyYXRpb24gb2YgdGhlIGJ1cmVhdXMgd2l0aGluIHRoZSBkZXBhcnRtZW50LiBJbiBhZGRpdGlvbiB0byB0aGUgZXhlY3V0aXZlIHN0YWZmLCBpdCBpbmNsdWRlcyBzdGFmZmluZyBmb3IgcHVibGljIGluZm9ybWF0aW9uLFxuZmlzY2FsLCByZXNlcnZhdGlvbnMsIHJlZ2lzdHJhdGlvbnMsIGNhcGl0YWwgZGV2ZWxvcG1lbnQsIGFuZCBvdXRkb29yIHJlY3JlYXRpb24uIEJlZ2lubmluZyBpbiBGWSAyMDI2LCB0aGUgTWFuYWdlbWVudCBTZXJ2aWNlcyBhbmQgUGFya1xuT3BlcmF0aW9ucyBQcm9ncmFtcyB3ZXJlIGNvbnNvbGlkYXRlZCBpbnRvIG9uZSBwcm9ncmFtLCBlbGltaW5hdGluZyB0aGUgZm9ybWVyLiBUaGUgbWFpbnRlbmFuY2UgYXBwcm9wcmlhdGlvbiBmb3IgdGhlIE1hbmFnZW1lbnRcblNlcnZpY2VzIFByb2dyYW0sIGFuZCBlbmhhbmNlbWVudHMgYXBwcm92ZWQgYnkgdGhlIExlZ2lzbGF0dXJlLCB3ZXJlIHJlZHVjZWQgZnJvbSB0aGUgTWFuYWdlbWUifSwgeyJzdWJfcHJvZ3JhbSI6ICJQYXJrIE9wZXJhdGlvbnMiLCAidGV4dCI6ICJUaGUgUGFyayBPcGVyYXRpb25zIFByb2dyYW0gaGFzIHRoZSByZXNwb25zaWJpbGl0eSBvZiBtYW5hZ2luZyBJZGFobydzIDMwIHN0YXRlIHBhcmtzIGFuZCBzdGF0ZSB0cmFpbHMgYnlcbnByb3ZpZGluZyB2aXNpdG9ycyBhIHF1YWxpdHkgb3V0ZG9vciBleHBlcmllbmNlIHRocm91Z2ggcmVjcmVhdGlvbiwgaW50ZXJwcmV0YXRpb24sIGFuZCBlZHVjYXRpb24gcHJvZ3JhbXMsIHdoaWxlIHByb3RlY3RpbmcgdGhlIG5hdHVyYWxcbnJlc291cmNlcyBmb3IgZnV0dXJlIGdlbmVyYXRpb25zLiBCZWdpbm5pbmcgaW4gRlkgMjAyNiwgdGhlIE1hbmFnZW1lbnQgU2VydmljZXMgYW5kIFBhcmsgT3BlcmF0aW9ucyBQcm9ncmFtcyB3ZXJlIGNvbnNvbGlkYXRlZCBpbnRvXG5vbmUgcHJvZ3JhbSwgZWxpbWluYXRpbmcgdGhlIGZvcm1lci4gVGhlIG1haW50ZW5hbmNlIGFwcHJvcHJpYXRpb24gZm9yIHRoZSBNYW5hZ2VtZW50IFNlcnZpY2VzIFByb2dyYW0sIGFuZCBlbmhhbmNlbWVudHMgYXBwcm92ZWQgYnlcbnRoZSBMZWdpc2xhdHVyZSwgd2VyZSByZWR1Y2VkIGZyb20gdGhlIE1hbmFnZW1lbnQgU2VydmljZXMgUHJvZ3JhbSBhbmQgYWRkZWQgdG8gdGhlIFBhcmsgT3BlIn0sIHsic3ViX3Byb2dyYW0iOiAiQ2FwaXRhbCBEZXZlbG9wbWVudCIsICJ0ZXh0IjogIlRoZSBDYXBpdGFsIERldmVsb3BtZW50IFByb2dyYW0gd2FzIGluaXRpYXRlZCB0byBhZG1pbmlzdGVyIHRoZSBhY3F1aXNpdGlvbiwgcGxhbm5pbmcsIGFuZCBjb25zdHJ1Y3Rpb24gb2ZcbmltcHJvdmVtZW50cyB0byBleGlzdGluZyBhbmQgcHJvcG9zZWQgc3RhdGUgcGFya3MuIFRoZSByZWNyZWF0aW9uIG5lZWRzIG9mIHByZXNlbnQgYW5kIGZ1dHVyZSBwb3B1bGF0aW9ucyBhcmUgaWRlbnRpZmllZCBpbiBhIFN0YXRld2lkZVxuQ29tcHJlaGVuc2l2ZSBPdXRkb29yIFJlY3JlYXRpb24gUGxhbiBhbmQgY2hhbmdlcyBhcmUgaW1wbGVtZW50ZWQgaW4gYSBtYW5uZXIgY29uZHVjaXZlIHRvIHByZXNlcnZpbmcgdGhlIGFyZWFzJyBuYXR1cmFsIGFuZCBoaXN0b3JpY1xudmFsdWVzLiBUaGUgY2FwaXRhbCBkZXZlbG9wbWVudCBwcm9ncmFtIGhhcyBubyBwb3NpdGlvbnMuIFRoZSBwcm9ncmFtIGlzIHplcm9lZCBvdXQgZWFjaCB5ZWFyIGFuZCBhY2NvdW50cyBmb3IgdGhlIG1haW50ZW5hbmNlIGFuZFxucmVwYWlyIGFuZCBjYXBpdGFsIGRldmVsb3BtZW50IGNvc3RzIG9mIHRoZSBwYXJrcyJ9XX0sIHsiYXJlYSI6ICJOYXR1cmFsIFJlc291cmNlcyIsICJhZ2VuY3kiOiAiRGVwYXJ0bWVudCBvZiBXYXRlciBSZXNvdXJjZXMiLCAiZnRwIjogMTg3Ljc1LCAiZ2YiOiA1ODY4ODYwMCwgImRlZCI6IDY3ODgyMDAsICJmZWQiOiA1MTg5MDEwMCwgInRvdGFsIjogMTE3MzY2OTAwLCAiZmVkX3NoYXJlIjogMC40NDIxLCAiZGVkX3NoYXJlIjogMC4wNTc4LCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJTMTM2MyIsICJTMTQzMSJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkNPTkRJVElPTlMsIExJTUlUQVRJT05TLCBBTkQgUkVTVFJJQ1RJT05TIiwgInRleHQiOiAiU2VjdGlvbiA0IG9mIFMxNDMxIGluY2x1ZGVkIG9uZSBzZWN0aW9uIG9mIGNvbmRpdGlvbnMsIGxpbWl0YXRpb25zLCBhbmQgcmVzdHJpY3Rpb25zLFxud2hpY2ggZGlyZWN0ZWQgdGhlIHVzZSBvZiBmdW5kcyBmb3Igd2F0ZXIgcmlnaHQgY2xhaW1zIGZvciBGWSAyMDI3LiBMYW5ndWFnZSB3YXMgaW5jbHVzaXZlIG9mIGFsbCBnZW5lcmFsIHN0cmVhbSBhZGp1ZGljYXRpb25zLCBpbmNsdWRpbmdcbnRob3NlIHdpdGhpbiB0aGUgTm9ydGhlcm4gSWRhaG8gQWRqdWRpY2F0aW9uIFByb2dyYW0ifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJNYW5hZ2VtZW50IGFuZCBTdXBwb3J0IFNlcnZpY2VzIiwgInRleHQiOiAiVGhlIERlcGFydG1lbnQgb2YgV2F0ZXIgUmVzb3VyY2VzIGFuZCB0aGUgSWRhaG8gV2F0ZXIgUmVzb3VyY2UgQm9hcmQgYXJlIHJlc3BvbnNpYmxlIGZvciBjYXJyeWluZyBvdXQgdGhlXG53YXRlciByZXNvdXJjZSBsYXdzIG9mIHRoZSBzdGF0ZS4gVGhleSBmYWNpbGl0YXRlIGFuZCBlbmNvdXJhZ2UgdGhlIG9yZGVybHkgbWFuYWdlbWVudCwgY29uc2VydmF0aW9uLCBkZXZlbG9wbWVudCwgYW5kIG9wdGltdW0gdXNlIG9mIHRoZVxuc3RhdGUncyB3YXRlciByZXNvdXJjZXMuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9ucyA0Mi0xNzAxIGFuZCBTZWN0aW9uIDQyLTE3MzIsIElkYWhvIENvZGUsIGV0IHNlcS5dIn0sIHsic3ViX3Byb2dyYW0iOiAiUGxhbm5pbmcgYW5kIFRlY2huaWNhbCBTZXJ2aWNlcyIsICJ0ZXh0IjogIlRoZSBwdXJwb3NlIG9mIHRoZSBQbGFubmluZyBhbmQgVGVjaG5pY2FsIFNlcnZpY2VzIFByb2dyYW0gaXMgdG8gcHJvdmlkZSBzdGFmZiBzdXBwb3J0IGZvciB0aGUgV2F0ZXIgUmVzb3VyY2VcbkJvYXJkIGluIGRldmVsb3BpbmcgbXVsdGlwbGUgdXNlIHdhdGVyIHBvbGljaWVzLiBVbmRlciBndWlkYW5jZSBvZiB0aGUgYm9hcmQsIGRlcGFydG1lbnQgc3RhZmYgYXJlIHJlc3BvbnNpYmxlIGZvcjogdW5kZXJ0YWtpbmcgc3R1ZGllcyBvZlxud2F0ZXIgcHJvamVjdHM7IGNvbGxlY3RpbmcgYW5kIGFuYWx5emluZyBkYXRhIHRocm91Z2ggc3RyZWFtIGdhdWdpbmcsIHJlbW90ZSBzZW5zaW5nLCBzdXJmYWNlIGFuZCBncm91bmR3YXRlciBxdWFsaXR5IG1vbml0b3JpbmcsIGFuZFxubWluaW11bSBzdHJlYW0gZmxvdyBhbmFseXNpczsgYW5kIHByb3ZpZGluZyB0ZWNobmljYWwgc3VwcG9ydCB0byB0aGUgZGVwYXJ0bWVudCdzIHJlZ3VsYXRvcnkgcHJvZ3JhbXMsIGluY2x1ZGluZyBkYW0gc2FmZXR5LCBzdHJlYW1cbmNoYW5uZWwgcHJvdGVjdGlvbiwgd2F0ZXIgcmlnaHRzLCBnZW90aGVybWFsIHJlc291cmNlcywgYW5kIGFkanVkaWNhdGlvbnMifSwgeyJzdWJfcHJvZ3JhbSI6ICJXYXRlciBNYW5hZ2VtZW50IiwgInRleHQiOiAiVGhlIFdhdGVyIE1hbmFnZW1lbnQgUHJvZ3JhbSBjb25zaXN0cyBvZiB0d28gbWFqb3IgcG9saWN5IGFyZWFzOiAxKSByZXNvdXJjZSBwcm90ZWN0aW9uLCB3aGljaCBpbmNsdWRlc1xucmVndWxhdGlvbiBvZiB3YXRlciB3ZWxscywgZGFtIGFuZCBtaW5lIHRhaWxpbmcgc3RydWN0dXJlcywgc3RyZWFtIGNoYW5uZWwgcHJvdGVjdGlvbiwgaW5qZWN0aW9uIGFuZCB3YXN0ZSBkaXNwb3NhbCB3ZWxscywgYW5kIGZsb29kIGluc3VyYW5jZVxucHJvZ3JhbXM7IGFuZCAyKSB3YXRlciBhbGxvY2F0aW9uLCB3aGljaCBpbmNsdWRlcyB0aGUgd2F0ZXIgcmlnaHRzIHByb2Nlc3MsIGVuZm9yY2luZyBzdGF0ZSBsYXcgdG8gcHJldmVudCB1bmF1dGhvcml6ZWQgdXNlIG9mIHdhdGVyLCBhbmRcbmFzc2lzdGluZyByaWdodCBob2xkZXJzIGluIHRoZSBmYWlyIGFuZCBlZmZpY2llbnQgZGlzdHJpYnV0aW9uIGFuZCB1c2Ugb2Ygd2F0ZXIifSwgeyJzdWJfcHJvZ3JhbSI6ICJOb3J0aGVybiBJZGFobyBBZGp1ZGljYXRpb24iLCAidGV4dCI6ICJINTQ1IG9mIDIwMDYgYXV0aG9yaXplZCBhIGdlbmVyYWwgd2F0ZXIgcmlnaHRzIGFkanVkaWNhdGlvbiBmb3IgdGhvc2UgcG9ydGlvbnMgb2Ygbm9ydGhlcm4gSWRhaG8gdGhhdCBhcmUgbm90XG5pbmNsdWRlZCBpbiB0aGUgU25ha2UgUml2ZXIgQmFzaW4uIFRob3NlIGJhc2lucyBhcmUgdGhlIENvZXVyIGQnQWxlbmUtU3Bva2FuZSBSaXZlciBCYXNpbiwgdGhlIFBhbG91c2UgUml2ZXIgQmFzaW4sIEtvb3RlbmFpIFJpdmVyXG5CYXNpbiwgYW5kIENsYXJrIEZvcmstUGVuZCBPcmVpbGxlIFJpdmVyIEJhc2lucy4gVGhlIExlZ2lzbGF0dXJlIHByb3ZpZGVkIGZ1bmRpbmcgaW4gMjAwNiB0byB0aGUgRGVwYXJ0bWVudCBvZiBXYXRlciBSZXNvdXJjZXMgdG8gYmVnaW5cbnRoZSBhZGp1ZGljYXRpb24gb2YgdGhlIENvZXVyIGQnQWxlbmUtU3Bva2FuZSBCYXNpbi4gSW4gRlkgMjAxNiwgdGhlIExlZ2lzbGF0dXJlIHJlcXVpcmVkIGluIGRpcmVjdG9yIHRvIGNvbW1lbmNlIHRoZSBQYWxvdXNlIFJpdmVyIEJhc2luXG5hZGp1ZGljYXRpb24gYW5kIG1hZGUgYWRkaXRpb25hbCBhcHByb3ByaWF0aW9uIHRvIHN1cHBvcnQgdGhlIGFjdGl2aXRpZXMuIEluIDIwMjQsIHRoIn0sIHsic3ViX3Byb2dyYW0iOiAiQmVhciBSaXZlciBCYXNpbiBBZGp1ZGljYXRpb24iLCAidGV4dCI6ICJIMzgyIG9mIDIwMjAgYXV0aG9yaXplZCBhIGdlbmVyYWwgd2F0ZXIgcmlnaHRzIGFkanVkaWNhdGlvbiBvZiB0aGUgQmVhciBSaXZlciBCYXNpbi4gVGhlIExlZ2lzbGF0dXJlIHByb3ZpZGVkXG5mdW5kaW5nIGluIEZZIDIwMjIgdG8gdGhlIERlcGFydG1lbnQgb2YgV2F0ZXIgUmVzb3VyY2VzIHRvIGJlZ2luIHRoZSBhZGp1ZGljYXRpb24gb2YgdGhlIEJlYXIgUml2ZXIgQmFzaW4uIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDQyLVxuMTQwNkMsIElkYWhvIENvZGUsIGV0IHNlcS5dIn1dLCAiY2hpbGRyZW4iOiBbeyJuYW1lIjogIldhdGVyIFJlc291cmNlcyAoY29yZSBvcGVyYXRpb25zKSIsICJnZiI6IDU0ODUzNjAwLCAiZGVkIjogNjI1MzQwMCwgImZlZCI6IDUxODkwMTAwLCAidG90YWwiOiAxMTI5OTcxMDAsICJmZWRfc2hhcmUiOiAwLjQ1OTIsICJkZWRfc2hhcmUiOiAwLjA1NTMsICJiaWxscyI6IFsiUzEzNjMiLCAiUzE0MzEiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlNlY3Rpb24gNCBvZiBTMTQzMSBpbmNsdWRlZCBvbmUgc2VjdGlvbiBvZiBjb25kaXRpb25zLCBsaW1pdGF0aW9ucywgYW5kIHJlc3RyaWN0aW9ucyxcbndoaWNoIGRpcmVjdGVkIHRoZSB1c2Ugb2YgZnVuZHMgZm9yIHdhdGVyIHJpZ2h0IGNsYWltcyBmb3IgRlkgMjAyNy4gTGFuZ3VhZ2Ugd2FzIGluY2x1c2l2ZSBvZiBhbGwgZ2VuZXJhbCBzdHJlYW0gYWRqdWRpY2F0aW9ucywgaW5jbHVkaW5nXG50aG9zZSB3aXRoaW4gdGhlIE5vcnRoZXJuIElkYWhvIEFkanVkaWNhdGlvbiBQcm9ncmFtIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiTWFuYWdlbWVudCBhbmQgU3VwcG9ydCBTZXJ2aWNlcyIsICJ0ZXh0IjogIlRoZSBEZXBhcnRtZW50IG9mIFdhdGVyIFJlc291cmNlcyBhbmQgdGhlIElkYWhvIFdhdGVyIFJlc291cmNlIEJvYXJkIGFyZSByZXNwb25zaWJsZSBmb3IgY2Fycnlpbmcgb3V0IHRoZVxud2F0ZXIgcmVzb3VyY2UgbGF3cyBvZiB0aGUgc3RhdGUuIFRoZXkgZmFjaWxpdGF0ZSBhbmQgZW5jb3VyYWdlIHRoZSBvcmRlcmx5IG1hbmFnZW1lbnQsIGNvbnNlcnZhdGlvbiwgZGV2ZWxvcG1lbnQsIGFuZCBvcHRpbXVtIHVzZSBvZiB0aGVcbnN0YXRlJ3Mgd2F0ZXIgcmVzb3VyY2VzLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbnMgNDItMTcwMSBhbmQgU2VjdGlvbiA0Mi0xNzMyLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9LCB7InN1Yl9wcm9ncmFtIjogIlBsYW5uaW5nIGFuZCBUZWNobmljYWwgU2VydmljZXMiLCAidGV4dCI6ICJUaGUgcHVycG9zZSBvZiB0aGUgUGxhbm5pbmcgYW5kIFRlY2huaWNhbCBTZXJ2aWNlcyBQcm9ncmFtIGlzIHRvIHByb3ZpZGUgc3RhZmYgc3VwcG9ydCBmb3IgdGhlIFdhdGVyIFJlc291cmNlXG5Cb2FyZCBpbiBkZXZlbG9waW5nIG11bHRpcGxlIHVzZSB3YXRlciBwb2xpY2llcy4gVW5kZXIgZ3VpZGFuY2Ugb2YgdGhlIGJvYXJkLCBkZXBhcnRtZW50IHN0YWZmIGFyZSByZXNwb25zaWJsZSBmb3I6IHVuZGVydGFraW5nIHN0dWRpZXMgb2ZcbndhdGVyIHByb2plY3RzOyBjb2xsZWN0aW5nIGFuZCBhbmFseXppbmcgZGF0YSB0aHJvdWdoIHN0cmVhbSBnYXVnaW5nLCByZW1vdGUgc2Vuc2luZywgc3VyZmFjZSBhbmQgZ3JvdW5kd2F0ZXIgcXVhbGl0eSBtb25pdG9yaW5nLCBhbmRcbm1pbmltdW0gc3RyZWFtIGZsb3cgYW5hbHlzaXM7IGFuZCBwcm92aWRpbmcgdGVjaG5pY2FsIHN1cHBvcnQgdG8gdGhlIGRlcGFydG1lbnQncyByZWd1bGF0b3J5IHByb2dyYW1zLCBpbmNsdWRpbmcgZGFtICJ9LCB7InN1Yl9wcm9ncmFtIjogIldhdGVyIE1hbmFnZW1lbnQiLCAidGV4dCI6ICJUaGUgV2F0ZXIgTWFuYWdlbWVudCBQcm9ncmFtIGNvbnNpc3RzIG9mIHR3byBtYWpvciBwb2xpY3kgYXJlYXM6IDEpIHJlc291cmNlIHByb3RlY3Rpb24sIHdoaWNoIGluY2x1ZGVzXG5yZWd1bGF0aW9uIG9mIHdhdGVyIHdlbGxzLCBkYW0gYW5kIG1pbmUgdGFpbGluZyBzdHJ1Y3R1cmVzLCBzdHJlYW0gY2hhbm5lbCBwcm90ZWN0aW9uLCBpbmplY3Rpb24gYW5kIHdhc3RlIGRpc3Bvc2FsIHdlbGxzLCBhbmQgZmxvb2QgaW5zdXJhbmNlXG5wcm9ncmFtczsgYW5kIDIpIHdhdGVyIGFsbG9jYXRpb24sIHdoaWNoIGluY2x1ZGVzIHRoZSB3YXRlciByaWdodHMgcHJvY2VzcywgZW5mb3JjaW5nIHN0YXRlIGxhdyB0byBwcmV2ZW50IHVuYXV0aG9yaXplZCB1c2Ugb2Ygd2F0ZXIsIGFuZFxuYXNzaXN0aW5nIHJpZ2h0IGhvbGRlcnMgaW4gdGhlIGZhaXIgYW5kIGVmZmljaWVudCBkaXN0cmlidXRpb24gYW5kIHVzZSBvZiB3YXRlciJ9LCB7InN1Yl9wcm9ncmFtIjogIk5vcnRoZXJuIElkYWhvIEFkanVkaWNhdGlvbiIsICJ0ZXh0IjogIkg1NDUgb2YgMjAwNiBhdXRob3JpemVkIGEgZ2VuZXJhbCB3YXRlciByaWdodHMgYWRqdWRpY2F0aW9uIGZvciB0aG9zZSBwb3J0aW9ucyBvZiBub3J0aGVybiBJZGFobyB0aGF0IGFyZSBub3RcbmluY2x1ZGVkIGluIHRoZSBTbmFrZSBSaXZlciBCYXNpbi4gVGhvc2UgYmFzaW5zIGFyZSB0aGUgQ29ldXIgZCdBbGVuZS1TcG9rYW5lIFJpdmVyIEJhc2luLCB0aGUgUGFsb3VzZSBSaXZlciBCYXNpbiwgS29vdGVuYWkgUml2ZXJcbkJhc2luLCBhbmQgQ2xhcmsgRm9yay1QZW5kIE9yZWlsbGUgUml2ZXIgQmFzaW5zLiBUaGUgTGVnaXNsYXR1cmUgcHJvdmlkZWQgZnVuZGluZyBpbiAyMDA2IHRvIHRoZSBEZXBhcnRtZW50IG9mIFdhdGVyIFJlc291cmNlcyB0byBiZWdpblxudGhlIGFkanVkaWNhdGlvbiBvZiB0aGUgQ29ldXIgZCdBbGVuZS1TcG9rYW5lIEJhc2luLiBJbiBGWSAyMDE2LCB0aGUgTGVnaXNsYXR1cmUgcmVxdWlyZWQgaW4gZGlyZWN0b3IgdG8gY29tbWVuY2UgdGhlIFBhbG91In0sIHsic3ViX3Byb2dyYW0iOiAiQmVhciBSaXZlciBCYXNpbiBBZGp1ZGljYXRpb24iLCAidGV4dCI6ICJIMzgyIG9mIDIwMjAgYXV0aG9yaXplZCBhIGdlbmVyYWwgd2F0ZXIgcmlnaHRzIGFkanVkaWNhdGlvbiBvZiB0aGUgQmVhciBSaXZlciBCYXNpbi4gVGhlIExlZ2lzbGF0dXJlIHByb3ZpZGVkXG5mdW5kaW5nIGluIEZZIDIwMjIgdG8gdGhlIERlcGFydG1lbnQgb2YgV2F0ZXIgUmVzb3VyY2VzIHRvIGJlZ2luIHRoZSBhZGp1ZGljYXRpb24gb2YgdGhlIEJlYXIgUml2ZXIgQmFzaW4uIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDQyLVxuMTQwNkMsIElkYWhvIENvZGUsIGV0IHNlcS5dIn1dfSwgeyJuYW1lIjogIlNvaWwgYW5kIFdhdGVyIENvbnNlcnZhdGlvbiBDb21taXNzaW9uIiwgImdmIjogMzgzNTAwMCwgImRlZCI6IDUzNDgwMCwgImZlZCI6IDAsICJ0b3RhbCI6IDQzNjk4MDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAwLjEyMjQsICJiaWxscyI6IFsiUzE0MDUiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlNlY3Rpb24gMyBvZiBTMTQwNSBkaXJlY3RlZCB0aGUgZXF1YWwgZGlzdHJpYnV0aW9uIG9mICQzMDAsMDAwIGFtb25nIHRoZSA1MCBzb2lsIGFuZFxud2F0ZXIgZGlzdHJpY3RzIn0sIHsidHlwZSI6ICJPVEhFUiBMRUdJU0xBVElPTiIsICJ0ZXh0IjogIkg1MDMgYW1lbmRlZCBTZWN0aW9uIDIyLTI3MTgsIElkYWhvIENvZGUsIHRvIGVzdGFibGlzaCBTb2lsIGFuZCBXYXRlciBDb25zZXJ2YXRpb24gQ29tbWlzc2lvbiB3aXRoaW4gdGhlXG5EZXBhcnRtZW50IG9mIFdhdGVyIFJlc291cmNlcyBhbmQgcmVtb3ZlIGl0IGZyb20gdGhlIERlcGFydG1lbnQgb2YgQWdyaWN1bHR1cmUgdG8gc3RyZWFtbGluZSBhZG1pbmlzdHJhdGl2ZSBmdW5jdGlvbnMifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJCZWFyIFJpdmVyIEJhc2luIEFkanVkaWNhdGlvbiIsICJ0ZXh0IjogIlRoZSBTb2lsIGFuZCBXYXRlciBDb25zZXJ2YXRpb24gQ29tbWlzc2lvbiBjb25zaXN0cyBvZiBzZXZlbiBtZW1iZXJzIGFwcG9pbnRlZCBieSB0aGUgR292ZXJub3IuIFRoZVxuY29tbWlzc2lvbidzIG1pc3Npb24gaXMgdG8gZmFjaWxpdGF0ZSBjb29yZGluYXRlZCBub24tcmVndWxhdG9yeSwgdm9sdW50YXJ5LCBhbmQgbG9jYWxseS1sZWQgY29uc2VydmF0aW9uIGJ5IGZlZGVyYWwsIHN0YXRlLCBhbmQgbG9jYWxcbmdvdmVybm1lbnRzIGluY2x1ZGluZyBJZGFobydzIGNvbnNlcnZhdGlvbiBkaXN0cmljdHMgYW5kIG90aGVyIHBhcnRuZXJzLiBUaGUgZ29hbCBvZiB0aGUgY29tbWlzc2lvbiBpcyB0byBjb25zZXJ2ZSwgc3VzdGFpbiwgaW1wcm92ZSwgYW5kXG5lbmhhbmNlIHNvaWwsIHdhdGVyLCBhaXIsIHBsYW50LCBhbmQgYW5pbWFsIHJlc291cmNlcy4gQmVnaW5uaW5nIGluIEZZIDIwMjcsIHRoZSBTb2lsIGFuZCBXYXRlciBDb25zZXJ2YXRpb24gQ29tbWlzc2lvbiB3YXMgcmVtIn0sIHsic3ViX3Byb2dyYW0iOiAiQW5pbWFsIERhbWFnZSBDb250cm9sIiwgInRleHQiOiAiVGhlIFNvaWwgYW5kIFdhdGVyIENvbnNlcnZhdGlvbiBDb21taXNzaW9uIGNvbnNpc3RzIG9mIHNldmVuIG1lbWJlcnMgYXBwb2ludGVkIGJ5IHRoZSBHb3Zlcm5vci4gVGhlXG5jb21taXNzaW9uJ3MgbWlzc2lvbiBpcyB0byBmYWNpbGl0YXRlIGNvb3JkaW5hdGVkIG5vbi1yZWd1bGF0b3J5LCB2b2x1bnRhcnksIGFuZCBsb2NhbGx5LWxlZCBjb25zZXJ2YXRpb24gYnkgZmVkZXJhbCwgc3RhdGUsIGFuZCBsb2NhbFxuZ292ZXJubWVudHMgaW5jbHVkaW5nIElkYWhvJ3MgY29uc2VydmF0aW9uIGRpc3RyaWN0cyBhbmQgb3RoZXIgcGFydG5lcnMuIFRoZSBnb2FsIG9mIHRoZSBjb21taXNzaW9uIGlzIHRvIGNvbnNlcnZlLCBzdXN0YWluLCBpbXByb3ZlLCBhbmRcbmVuaGFuY2Ugc29pbCwgd2F0ZXIsIGFpciwgcGxhbnQsIGFuZCBhbmltYWwgcmVzb3VyY2VzLiBCZWdpbm5pbmcgaW4gRlkgMjAyNywgdGhlIFNvaWwgYW5kIFdhdGVyIENvbnNlcnZhdGlvbiBDb21taXNzaW9uIHdhcyByZW0ifV19XX0sIHsiYXJlYSI6ICJFY29ub21pYyBEZXZlbG9wbWVudCIsICJhZ2VuY3kiOiAiRGVwYXJ0bWVudCBvZiBBZ3JpY3VsdHVyZSIsICJmdHAiOiAyMzAuMCwgImdmIjogMTUwMTQ2MDAsICJkZWQiOiAzMjcwMjkwMCwgImZlZCI6IDc2NzM4MDAsICJ0b3RhbCI6IDU1MzkxMzAwLCAiZmVkX3NoYXJlIjogMC4xMzg1LCAiZGVkX3NoYXJlIjogMC41OTA0LCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJTMTM3MyIsICJTMTQwNCJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkFkbWluaXN0cmF0aW9uIiwgInRleHQiOiAiVGhlIGxvbmctcmFuZ2UgZ29hbCBvZiB0aGUgRGVwYXJ0bWVudCBvZiBBZ3JpY3VsdHVyZSBpcyB0byBndWFyYW50ZWUgdGhhdCBJZGFobyBhZ3JpY3VsdHVyYWwgcHJvZHVjdHMgYXJlIG9mIGFcbmhpZ2ggcXVhbGl0eSwgZGlzZWFzZS1mcmVlLCBhbmQgdGhhdCB0aGV5IG1lZXQgZmVkZXJhbCBhbmQgc3RhdGUgbGF3cywgcnVsZXMsIGFuZCByZWd1bGF0aW9ucy4gSXQgaXMgYWxzbyB0aGUgZ29hbCBvZiB0aGUgZGVwYXJ0bWVudCB0byBwcm90ZWN0XG5ib3RoIHRoZSBjb25zdW1lciBhbmQgdGhlIHByb2R1Y2VyIGZyb20gZnJhdWQsIHByb3ZpZGUgYXNzaXN0YW5jZSB0byB0aGUgaW5kdXN0cnkgaW4gbWFya2V0aW5nIElkYWhvIGFncmljdWx0dXJhbCBwcm9kdWN0cywgYW5kIGltcHJvdmUgZmFybVxuYW5kIGFncmljdWx0dXJlIGJ1c2luZXNzIGluY29tZS4gVGhlIEFkbWluaXN0cmF0aW9uIFByb2dyYW0gY29vcmRpbmF0ZXMgdGhlIGFjY291bnRpbmcsIHBheXJvbGwsIGxlZ2FsLCBpbmZvcm1hdGlvbiB0ZWNobm9sb2d5LCBhbmRcbnBlcnNvbm5lbCBmdW5jdGlvbnMgZm9yIHRoZSBkZXBhcnRtZW50LiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiAyMiJ9LCB7InN1Yl9wcm9ncmFtIjogIkFuaW1hbCBJbmR1c3RyaWVzIiwgInRleHQiOiAiVGhlIERpdmlzaW9uIG9mIEFuaW1hbCBJbmR1c3RyaWVzIGhhcyB0aHJlZSBidXJlYXVzOiB0aGUgQW5pbWFsIEhlYWx0aCBCdXJlYXUgKFZldGVyaW5hcnkgU2VydmljZXMpLCBWZWdldGF0aW9uXG5NYW5hZ2VtZW50IChyYW5nZWxhbmQgcmVzb3VyY2VzKSwgYW5kIHRoZSBCdXJlYXUgb2YgQW5pbWFsIE1hbmFnZW1lbnQgKGluY2x1ZGluZyBkYWlyeSwgbGl2ZXN0b2NrIGluc3BlY3Rpb24sIGFuaW1hbCB3YXN0ZSBtYW5hZ2VtZW50LFxuYW5kIHRoZSBhbmltYWwgbGFib3JhdG9yeSkuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDIyLTEwMSwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJBZ3JpY3VsdHVyYWwgUmVzb3VyY2VzIiwgInRleHQiOiAiVGhlIEFncmljdWx0dXJhbCBSZXNvdXJjZXMgUHJvZ3JhbSB3YXMgY3JlYXRlZCB0byBwcm90ZWN0IHRoZSBwdWJsaWMgaGVhbHRoLCBlbnZpcm9ubWVudCwgbGl2ZXN0b2NrLCBhbmQgd2lsZGxpZmVcbmZyb20gcG9zc2libGUgYWR2ZXJzZSBlZmZlY3RzIHJlc3VsdGluZyBmcm9tIHRoZSBpbXByb3BlciB1c2Ugb2YgcGVzdGljaWRlcyBvciBmZXJ0aWxpemVycy4gVGhlIGRpdmlzaW9uIHByb3ZpZGVzIGVkdWNhdGlvbmFsIHByb2dyYW1zIGFuZFxucGFydGljaXBhdGVzIGluIHB1YmxpYyBhbmQgZ292ZXJubWVudGFsIHByb2dyYW1zIGFpbWVkIGF0IHJlZHVjaW5nIGFkdmVyc2UgZWZmZWN0cyB0aGF0IG1heSByZXN1bHQgZnJvbSBhZ3JpY3VsdHVyYWwgcHJhY3RpY2VzIG9yIHVyYmFuXG5hY3Rpdml0aWVzIGludm9sdmluZyBwZXN0aWNpZGUgb3IgZmVydGlsaXplciB1c2UuIFByb2dyYW1zIGluY2x1ZGUgZ3JvdW5kIGFuZCBzdXJmYWNlIHdhdGVyIHF1YWxpdHkgcHJvdGVjdGlvbiwgd29ya2VyIHByb3RlY3Rpb24sIGVuZGFuZ2VyZWRcbnNwZWNpZXMgcHJvdGVjdGlvbiwgYW5kIHVudXNhYmxlIHBlc3RpY2lkZSBkaXNwb3NhbC4gW1N0YXR1dG9yeSBBdXRobyJ9LCB7InN1Yl9wcm9ncmFtIjogIlBsYW50IEluZHVzdHJpZXMiLCAidGV4dCI6ICJUaGUgRGl2aXNpb24gb2YgUGxhbnQgSW5kdXN0cmllcyBpbmNsdWRlcyB0aGUgcGxhbnQsIGZlcnRpbGl6ZXIsIGFuZCBzZWVkIGxhYm9yYXRvcmllczsgYW5kIHRoZSBwbGFudCwgZmVlZCBhbmRcbmZlcnRpbGl6ZXIsIGFuZCBub3hpb3VzIHdlZWQgYW5kIGludmFzaXZlIHNwZWNpZXMgcHJvZ3JhbXMuIEl0IGFsc28gaW5jbHVkZXMsIGZvciBidWRnZXRhcnkgcHVycG9zZXMsIHRoZSBGb29kIFF1YWxpdHkgQXNzdXJhbmNlIExhYiBhbmRcbnRoZSBIb25leSBDb21taXNzaW9uLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiAyMi0xMDEsIElkYWhvIENvZGUsIGV0IHNlcS5dIn0sIHsic3ViX3Byb2dyYW0iOiAiQWdyaWN1bHR1cmFsIEluc3BlY3Rpb25zIiwgInRleHQiOiAiVGhlIERpdmlzaW9uIG9mIEFncmljdWx0dXJhbCBJbnNwZWN0aW9ucyBoYXMgdGhyZWUgYnVyZWF1cyB0aGF0IGluY2x1ZGUgdGhlIEJ1cmVhdSBvZiBXZWlnaHRzIGFuZCBNZWFzdXJlcywgdGhlXG5CdXJlYXUgb2YgV2FyZWhvdXNlIENvbnRyb2wsIGFuZCB0aGUgQnVyZWF1IG9mIFNoaXBwaW5nIGFuZCBNYXJrZXQgSW5zcGVjdGlvbnMuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDIyLTEwMSwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJNYXJrZXQgRGV2ZWxvcG1lbnQiLCAidGV4dCI6ICJUaGUgTWFya2V0IERldmVsb3BtZW50IFByb2dyYW0gYXNzaXN0cyBJZGFobyBhZ3JpY3VsdHVyYWwgcHJvZHVjZXJzIHRvIGluY3JlYXNlIHRoZWlyIHByb2ZpdGFiaWxpdHkuIEl0IGRvZXMgc29cbmJ5IHByb3ZpZGluZyBjdXJyZW50IGFuZCBhY2N1cmF0ZSBtYXJrZXQgYW5hbHlzaXMgdG8gbWFrZSBwcm9maXRhYmxlIG1hcmtldGluZyBhbmQgcHJvZHVjdGlvbiBkZWNpc2lvbnM7IHByb3ZpZGluZyBzdXBwb3J0IGFuZCBmdW5kaW5nIHRvXG5kaXZlcnNpZnkgdGhlaXIgcHJvZHVjdHMgYW5kIG1heGltaXplIHByb2ZpdHMgb24gdGhlaXIgb3BlcmF0aW9uczsgZW5oYW5jaW5nIG1hcmtldGluZyBvcHBvcnR1bml0aWVzIGZvciB0aGVpciBwcm9kdWN0czsgYW5kIGFjdGluZyBhcyBhIGxpYWlzb25cbmJldHdlZW4gdGhlIHByb2R1Y2VycyBhbmQgZmVkZXJhbCBtYXJrZXRpbmcgcHJvZ3JhbXMuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDIyLTEwMSwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJBbmltYWwgRGFtYWdlIENvbnRyb2wiLCAidGV4dCI6ICJUaGUgVW5pdGVkIFN0YXRlcyBEZXBhcnRtZW50IG9mIEFncmljdWx0dXJlIChVU0RBKSBBbmltYWwgYW5kIFBsYW50IEhlYWx0aCBJbnNwZWN0aW9uIFNlcnZpY2UgKEFQSElTKVxuV2lsZGxpZmUgU2VydmljZXMgUHJvZ3JhbSBvcGVyYXRlcyBpbiBJZGFobyB1bmRlciBhIG1lbW9yYW5kdW0gb2YgdW5kZXJzdGFuZGluZyB3aXRoIHRoZSBJZGFobyBTdGF0ZSBBbmltYWwgRGFtYWdlIENvbnRyb2wgQm9hcmQuXG5UaGUgY2hhaXJtYW4gb2YgdGhlIFNoZWVwIGFuZCBHb2F0IEhlYWx0aCBCb2FyZCBpcyB0aGUgY2hhaXJtYW4gb2YgdGhlIFN0YXRlIEFuaW1hbCBEYW1hZ2UgQ29udHJvbCBCb2FyZC4gT3RoZXIgbWVtYmVycyBhcmUgdGhlXG5EaXJlY3RvciBvZiB0aGUgU3RhdGUgRGVwYXJ0bWVudCBvZiBBZ3JpY3VsdHVyZSwgdGhlIERpcmVjdG9yIG9mIHRoZSBTdGF0ZSBEZXBhcnRtZW50IG9mIEZpc2ggYW5kIEdhbWUsIG9uZSByZXByZXNlbnRhdGl2ZSBmcm9tIHRoZSBJZGFob1xuQ2F0dGxlIEFzc29jaWF0aW9uLCBhbmQgdGhlIGNoYWlybWFuIG9mIHRoZSBib2FyZCBvZiBkaXJlY3RvcnMgZm9yIGVhY2ggb2YgdGhlIGZpdmUgYW5pbWFsIGRhbWFnZSBjb250In0sIHsic3ViX3Byb2dyYW0iOiAiQW5pbWFsIERhbWFnZSBDb250cm9sIiwgInRleHQiOiAiVGhlIElkYWhvIFNoZWVwIGFuZCBHb2F0IEhlYWx0aCBCb2FyZCBwcm92aWRlcyBhIGNvbXByZWhlbnNpdmUgcHJvZ3JhbSBpbnZvbHZpbmcgZGlzZWFzZSBhbmQgcHJlZGF0b3JcbmNvbnRyb2wgdG8gZW5hYmxlIHRoZSBzaGVlcCBhbmQgZ29hdCBpbmR1c3RyaWVzIHRvIG1haW50YWluIGhpZ2ggcHJvZHVjdGlvbiBzdGFuZGFyZHMgYW5kIGVjb25vbWljIHJldHVybnMuIFRoZSBib2FyZCdzIGRlZGljYXRlZCBmdW5kLCBhc1xuYXV0aG9yaXplZCBpbiBTZWN0aW9uIDI1LTEzMSwgSWRhaG8gQ29kZSwgaXMgZnJvbSBhbiBhbm51YWwgYXNzZXNzbWVudCBub3QgdG8gZXhjZWVkIDEyIGNlbnRzIHBlciBwb3VuZCBvZiB3b29sIG9uIHNoZWVwIGFuZCBhblxuYXNzZXNzbWVudCBvbiBnb2F0cyBvbiBhIHBlciBoZWFkIGJhc2lzLiBUaGUgY3VycmVudCBhc3Nlc3NtZW50IGlzIGVpZ2h0IGNlbnRzIHdoaWNoIGlzIGFwcG9ydGlvbmVkIGF0IHRocmVlIGNlbnRzIGZvciBhbmltYWwgaGVhbHRoLCB0aHJlZVxuY2VudHMgZm9yIHByZWRhdG9yIGNvbnRyb2wgKGluY2x1ZGVkIGluIHRoZSBBbmltYWwgRGFtYWdlIENvbnRyb2wgUHJvZ3JhbSksIGFuZCB0d28gY2VudHMgZiJ9XX0sIHsiYXJlYSI6ICJFY29ub21pYyBEZXZlbG9wbWVudCIsICJhZ2VuY3kiOiAiRGVwYXJ0bWVudCBvZiBDb21tZXJjZSIsICJmdHAiOiA0MS4wLCAiZ2YiOiA1NTk3OTAwLCAiZGVkIjogMzE0MjEyMDAsICJmZWQiOiAxNjY2NTAyMDAsICJ0b3RhbCI6IDIwMzY2OTMwMCwgImZlZF9zaGFyZSI6IDAuODE4MiwgImRlZF9zaGFyZSI6IDAuMTU0MywgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiUzEzNzMiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlMxMzczIGluY2x1ZGVkIG9uZSBzZWN0aW9uIG9mIGNvbmRpdGlvbnMsIGxpbWl0YXRpb25zLCBhbmQgcmVzdHJpY3Rpb25zIHJlbGF0aW5nIHRvIHRoZVxuRGVwYXJ0bWVudCBvZiBDb21tZXJjZS4gU2VjdGlvbiA5IG9mIFMxMzczIGRpcmVjdGVkIHRoYXQgbW9uZXlzIGFwcHJvcHJpYXRlZCBmcm9tIHRoZSBBUlBBIENhcGl0YWwgUHJvamVjdHMgRnVuZCBhbmQgRmVkZXJhbCBHcmFudFxuRnVuZCBmb3IgdGhlIHB1cnBvc2Ugb2YgYnJvYWRiYW5kIGdyYW50cyBzaGFsbCBiZSBhbGxvY2F0ZWQgYXQgdGhlIGRpcmVjdGlvbiBvZiB0aGUgSWRhaG8gQnJvYWRiYW5kIEFkdmlzb3J5IEJvYXJkIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiQ29tbWVyY2UiLCAidGV4dCI6ICJUaGUgRGVwYXJ0bWVudCBvZiBDb21tZXJjZSBwcm9tb3RlcyBhIGhlYWx0aHkgc3RhdGUgZWNvbm9teSBieSB3b3JraW5nIHRvOiAoMSkgZXhwYW5kIGV4aXN0aW5nIElkYWhvXG5pbmR1c3RyaWVzOyAoMikgcHJvbW90ZSBpbnZlc3RtZW50cyBpbiBJZGFobzsgKDMpIGRldmVsb3AgbWFya2V0cyBmb3IgSWRhaG8gcHJvZHVjdHMgYW5kIHNlcnZpY2VzOyAoNCkgYXR0cmFjdCBuZXcgYnVzaW5lc3NlcyB0byBJZGFobzsgKDUpXG5wcm9tb3RlIElkYWhvJ3MgdHJhdmVsIGluZHVzdHJ5OyAoNikgaW1wcm92ZSBJZGFobydzIGltYWdlOyBhbmQgKDcpIHByb3ZpZGUgdGVjaG5pY2FsIGFzc2lzdGFuY2UgdG8gbG9jYWwgZ292ZXJubWVudHMgYW5kIGFkbWluaXN0ZXIgdGhlXG5Db21tdW5pdHkgRGV2ZWxvcG1lbnQgQmxvY2sgR3JhbnQgcHJvZ3JhbS4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNjctNDcwMSwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifV19LCB7ImFyZWEiOiAiRWNvbm9taWMgRGV2ZWxvcG1lbnQiLCAiYWdlbmN5IjogIkRlcGFydG1lbnQgb2YgRmluYW5jZSIsICJmdHAiOiA3NC4wLCAiZ2YiOiAwLCAiZGVkIjogMTE4ODAzMDAsICJmZWQiOiAwLCAidG90YWwiOiAxMTg4MDMwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDEuMCwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiUzEzNzMiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJCcm9hZGJhbmQgT2ZmaWNlIiwgInRleHQiOiAiVGhlIERlcGFydG1lbnQgb2YgRmluYW5jZSByZWd1bGF0ZXMgZmluYW5jaWFsIGluc3RpdHV0aW9ucyBhbmQgdGhlIGZpbmFuY2lhbCBzZXJ2aWNlcyBpbmR1c3RyeSB3aXRoaW4gdGhlIHN0YXRlLlxuVGhlIGRlcGFydG1lbnQgYWRtaW5pc3RlcnMgYW5kIGVuZm9yY2VzIDIxIHJlZ3VsYXRvcnkgc3RhdHV0ZXMsIGVuY291cmFnaW5nIGxlZ2l0aW1hdGUgZmluYW5jaWFsIHRyYW5zYWN0aW9ucyB3aGlsZSBwcm90ZWN0aW5nIHRoZSBwdWJsaWMgZnJvbVxuZnJhdWQsIHVuc2FmZSBwcmFjdGljZXMsIGFuZCB1bmxhd2Z1bCBjb25kdWN0LiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiA2Ny0yNzAxLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9XX0sIHsiYXJlYSI6ICJFY29ub21pYyBEZXZlbG9wbWVudCIsICJhZ2VuY3kiOiAiSW5kdXN0cmlhbCBDb21taXNzaW9uIiwgImZ0cCI6IDEyOS4wLCAiZ2YiOiAyNzk0MDAsICJkZWQiOiAyMDM0NjcwMCwgImZlZCI6IDE2MzkwMDAsICJ0b3RhbCI6IDIyMjY1MTAwLCAiZmVkX3NoYXJlIjogMC4wNzM2LCAiZGVkX3NoYXJlIjogMC45MTM4LCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJTMTM3MyIsICJTMTM4NSJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkNvbXBlbnNhdGlvbiIsICJ0ZXh0IjogIlRoZSBDb21wZW5zYXRpb24gUHJvZ3JhbSBpbmNsdWRlcyBlbXBsb3llciBjb21wbGlhbmNlLCBiZW5lZml0cyBhZG1pbmlzdHJhdGlvbiwgbWFuYWdlbWVudCBzZXJ2aWNlcywgYW5kXG5hZGp1ZGljYXRpb24uIFRoZSBwcm9ncmFtIGV2YWx1YXRlcyBwcm9wZXJ0eSBhbmQgY2FzdWFsdHkgaW5zdXJlcnMgYXBwbHlpbmcgdG8gd3JpdGUgd29ya2VycycgY29tcGVuc2F0aW9uIGluc3VyYW5jZSBhbmQgZW1wbG95ZXJzXG5yZXF1ZXN0aW5nIHRvIGJlY29tZSBzZWxmLWluc3VyZWQ7IGVuc3VyZXMgdGhhdCBhZGVxdWF0ZSBzZWN1cml0aWVzIGFyZSBoZWxkIGluIHRoZSBzdGF0ZSB0cmVhc3VyeSB0byBwYXkgb3V0c3RhbmRpbmcgd29ya2VycycgY29tcGVuc2F0aW9uXG5saWFiaWxpdGllcyBpbiBjYXNlIG9mIGluc29sdmVuY3k7IGVuZm9yY2VzIHRoZSByZXF1aXJlbWVudHMgb2YgdGhlIHdvcmtlcnNcdTIwMTkgY29tcGVuc2F0aW9uIGxhdyB0byBlbnN1cmUgdGltZWx5LCBhY2N1cmF0ZSBwYXltZW50IHRvIGluanVyZWRcbndvcmtlcnM7IGVuc3VyZXMgdGhhdCBlbXBsb3llcnMgYXJlIHByb3ZpZGluZyBzdGF0dXRvcnkgY292ZXJhZ2UgdG8gYWxsIGVsaWdpYmxlIHdvciJ9LCB7InN1Yl9wcm9ncmFtIjogIlJlaGFiaWxpdGF0aW9uIiwgInRleHQiOiAiVGhlIFJlaGFiaWxpdGF0aW9uIFByb2dyYW0gd2FzIGVzdGFibGlzaGVkIGluIDE5NzggdG8gcHJvdmlkZSByZWhhYmlsaXRhdGlvbiBjb25zdWx0YW50IHNlcnZpY2VzIHdpdGggc3BlY2lhbFxuZW1waGFzaXMgb24gam9iIHBsYWNlbWVudC4gQWN0aW5nIGFzIGEgbmV1dHJhbCB0aGlyZCBwYXJ0eSB0byBpbmp1cmVkIHdvcmtlcnMgYW5kIGVtcGxveWVycywgdGhlIHByb2dyYW0gaGVscHMgd29ya2VycyBmaW5kIGdhaW5mdWxcbmVtcGxveW1lbnQgYXQgYSB3YWdlIGFzIGNsb3NlIGFzIHBvc3NpYmxlIHRvIHRoZWlyIHByZS1pbmp1cnkgaW5jb21lLiBDb25zdWx0YW50cyBzZXJ2ZSBpbmp1cmVkIHdvcmtlcnMgZnJvbSBmaWVsZCBvZmZpY2VzIGluIENvZXVyIGQnQWxlbmUsXG5MZXdpc3RvbiwgU2FuZHBvaW50LCBDYWxkd2VsbCwgUGF5ZXR0ZSwgQm9pc2UsIFR3aW4gRmFsbHMsIFBvY2F0ZWxsbywgSWRhaG8gRmFsbHMsIGFuZCBCdXJsZXkuIFVwb24gcmVjZWl2aW5nIGEgcmVmZXJyYWwgZnJvbSBpbmR1c3RyeSBvciBvdGhlclxuc291cmNlcywgZmllbGQgY29uc3VsdGFudHMgbWFrZSBjb250YWN0IHdpdGggdGhlIGluanVyZWQgd29ya2VyIGFzIHNvb24gYSJ9LCB7InN1Yl9wcm9ncmFtIjogIkNyaW1lIFZpY3RpbXMgQ29tcGVuc2F0aW9uIiwgInRleHQiOiAiVGhlIENyaW1lIFZpY3RpbXMgQ29tcGVuc2F0aW9uIFByb2dyYW0gd2FzIGVzdGFibGlzaGVkIGluIDE5ODYgdG8gcHJvdmlkZSBmaW5hbmNpYWwgYXNzaXN0YW5jZSB0byBpbm5vY2VudFxudmljdGltcyBvZiBjcmltZS4gQmVuZWZpdHMgYXJlIHBhaWQgZm9yIGNvc3RzIHN1Y2ggYXMgbWVkaWNhbCBhbmQgbWVudGFsIGhlYWx0aCBjYXJlLCBleGFtaW5hdGlvbnMsIGZ1bmVyYWwgZXhwZW5zZXMgZm9yIHZpY3RpbXMsIGFuZCBsb3N0XG53YWdlcyBmb3IgdmljdGltcyB3aG8gYXJlIHVuYWJsZSB0byB3b3JrIGFzIGEgcmVzdWx0IG9mIGEgY3JpbWUsIHVwIHRvIGEgbWF4aW11bSBvZiAkMjUsMDAwIHBlciB2aWN0aW0sIHBlciBjcmltZS4gQmVuZWZpdHMgYXJlIG5vdCBwYXlhYmxlXG5mb3IgcHJvcGVydHkgZGFtYWdlLiBGdW5kaW5nIGNvbWVzIGZyb20gZmluZXMgYW5kIHBlbmFsdGllcyBhc3Nlc3NlZCBvbiBjcmltaW5hbCBjb252aWN0aW9ucyBhbmQgYSBmZWRlcmFsIGdyYW50IGZyb20gVS5TLiBEZXBhcnRtZW50IG9mXG5KdXN0aWNlLiBDZXJ0YWluIHJlc3RpdHV0aW9uIGFuZCBwcmlzb24gcGF5bWVudCBwcm9ncmFtcyBhcmUgYWxzbyBkaXJlY3RlZCB0byJ9XX0sIHsiYXJlYSI6ICJFY29ub21pYyBEZXZlbG9wbWVudCIsICJhZ2VuY3kiOiAiRGVwYXJ0bWVudCBvZiBJbnN1cmFuY2UiLCAiZnRwIjogNzcuNSwgImdmIjogMCwgImRlZCI6IDExNDY1ODAwLCAiZmVkIjogNzYwMzAwLCAidG90YWwiOiAxMjIyNjEwMCwgImZlZF9zaGFyZSI6IDAuMDYyMiwgImRlZF9zaGFyZSI6IDAuOTM3OCwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiUzEzNzMiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJJbnN1cmFuY2UgUmVndWxhdGlvbiIsICJ0ZXh0IjogIlRoZSBJbnN1cmFuY2UgUmVndWxhdGlvbiBQcm9ncmFtIGlzIGNvbXBvc2VkIG9mIHRoZSBDb21wYW55IEFjdGl2aXRpZXMsIENvbnN1bWVyIEFmZmFpcnMsIGFuZCBQcm9kdWN0XG5SZXZpZXcgQnVyZWF1cy4gVGhlIENvbXBhbnkgQWN0aXZpdGllcyBCdXJlYXUgaXMgY2hhcmdlZCB3aXRoIG1vbml0b3JpbmcgdGhlIGZpbmFuY2lhbCBjb25kaXRpb24gb2YgYWxsIGluc3VyYW5jZSBlbnRpdGllcyBsaWNlbnNlZCBvclxuYXBwcm92ZWQgdG8gc2VsbCBpbnN1cmFuY2UgaW4gdGhlIHN0YXRlIG9mIElkYWhvIHRvIGVuc3VyZSB0aGF0IGVhY2ggd2lsbCBiZSBhYmxlIHRvIG1lZXQgaXRzIG9ibGlnYXRpb25zIHRvIHBvbGljeWhvbGRlcnMgYW5kIGNyZWRpdG9ycy4gVGhlXG5Db21wYW55IEFjdGl2aXRpZXMgQnVyZWF1IGFsc28gbGljZW5zZXMgaW5zdXJhbmNlIGFnZW50cywgYnJva2VycywgaW5zdXJhbmNlIGNvdW5zZWxvcnMsIHRoaXJkLXBhcnR5IGFkbWluaXN0cmF0b3JzLCBhZGp1c3RlcnMsIGFuZFxubWFuYWdpbmcgZ2VuZXJhbCBhZ2VudHMuIFRoZSBDb25zdW1lciBBZmZhaXJzIEJ1cmVhdSBpcyByZXNwb25zaWJsZSBmb3IgcHJvdmlkaW5nIGNvbnN1bWUifSwgeyJzdWJfcHJvZ3JhbSI6ICJTdGF0ZSBGaXJlIE1hcnNoYWwiLCAidGV4dCI6ICJUaGUgU3RhdGUgRmlyZSBNYXJzaGFsIGlzIHJlc3BvbnNpYmxlIGZvciBmaXJlIHByZXZlbnRpb24gdGhyb3VnaCBlbmZvcmNlbWVudCBvZiB0aGUgVW5pZm9ybSBGaXJlIENvZGUsXG5pbnZlc3RpZ2F0aW9uIG9mIHN1c3BlY3RlZCBhcnNvbiBvciBmcmF1ZCwgYW5kIHB1YmxpYyBlZHVjYXRpb24gYWJvdXQgZmlyZSBwcmV2ZW50aW9uIGFuZCBpZGVudGlmaWNhdGlvbiBvZiBoYXphcmRvdXMgY29uZGl0aW9ucyBpbiBidWlsZGluZ3Mgb3JcbnByZW1pc2VzLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiA0MS0yNTMsIElkYWhvIENvZGUsIGV0IHNlcS5dIn1dfSwgeyJhcmVhIjogIkVjb25vbWljIERldmVsb3BtZW50IiwgImFnZW5jeSI6ICJEZXBhcnRtZW50IG9mIExhYm9yIiwgImZ0cCI6IDY0NC4wLCAiZ2YiOiA2MTY3MDAsICJkZWQiOiAyMzU4NDcwMCwgImZlZCI6IDgxNzE4ODAwLCAidG90YWwiOiAxMDU5MjAyMDAsICJmZWRfc2hhcmUiOiAwLjc3MTUsICJkZWRfc2hhcmUiOiAwLjIyMjcsICJhbWVuZHNfY29kZSI6IGZhbHNlLCAiYmlsbHMiOiBbIlMxMzczIl0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiQWRtaW5pc3RyYXRpdmUgU2VydmljZXMiLCAidGV4dCI6ICJBZG1pbmlzdHJhdGl2ZSBTZXJ2aWNlcyBwcm92aWRlcyBzdXBwb3J0IHRvIG90aGVyIHByb2dyYW1zIGFuZCBmdWxmaWxscyBkZXBhcnRtZW50IG5lZWRzIGluIGFjY291bnRpbmcsIGZhY2lsaXRpZXMsXG5jb21tdW5pY2F0aW9ucywgYW5kIHJlc2VhcmNoIn0sIHsic3ViX3Byb2dyYW0iOiAiRGV0ZXJtaW5hdGlvbnMiLCAidGV4dCI6ICJJbiBGWSAyMDIyLCB0aGUgYWdlbmN5IHdhcyBjb25zb2xpZGF0ZWQgaW50byB0aHJlZSBidWRnZXRlZCBwcm9ncmFtcy4gRGV0ZXJtaW5hdGlvbnMgaXMgY29tcHJpc2VkIG9mXG5VbmVtcGxveW1lbnQgSW5zdXJhbmNlIEFkbWluaXN0cmF0aW9uLCB3aGljaCBpbmNsdWRlcyB0aGUgVW5lbXBsb3ltZW50IEluc3VyYW5jZSAoVUkpIGNhbGwgY2VudGVyLCBVSSB0YXgsIFVJIGNvbXBsaWFuY2UgYW5kIGludGVncml0eSwgVUlcbmJlbmVmaXRzIGFkanVkaWNhdGlvbiBhbmQgY2xhaW1zLCBBcHBlYWxzLCBEaXNhYmlsaXR5IERldGVybWluYXRpb25zLCBhbmQgV2FnZSBhbmQgSG91ci4gVUkgcHJvZ3JhbXMgZm9yIGVsaWdpYmxlIHdvcmtlcnMgYXJlIGFkbWluaXN0ZXJlZFxudGhyb3VnaCBmZWRlcmFsIGFuZCBzdGF0ZSBjb29wZXJhdGlvbiwgaW5jbHVkaW5nIHVuZW1wbG95bWVudCBjb21wZW5zYXRpb24gZm9yIGZlZGVyYWwgZW1wbG95ZWVzIG9yIGV4LXNlcnZpY2UgbWVtYmVycywgZGlzYXN0ZXJcbnVuZW1wbG95bWVudCBhc3Npc3RhbmNlLCBhbmQgVHJhZGUgQWRqdXN0bWVudCBBc3Npc3RhbmNlLiBEaXNhYmlsaXR5IERldGVybWluYXRpb24gU2VydmljZXMgIn0sIHsic3ViX3Byb2dyYW0iOiAiV29ya2ZvcmNlIGFuZCBDb21taXNzaW9ucyIsICJ0ZXh0IjogIkluIEZZIDIwMjIsIEVtcGxveW1lbnQgU2VydmljZXMgd2FzIHJlb3JnYW5pemVkIGludG8gYSBuZXcgcHJvZ3JhbSBjYWxsZWQgV29ya2ZvcmNlIGFuZCBDb21taXNzaW9ucy5cbldvcmtmb3JjZSBhbmQgQ29tbWlzc2lvbnMgY29uc2lzdHMgb2YgbG9jYWwgb2ZmaWNlIG9wZXJhdGlvbnMsIGxhYm9yIGV4Y2hhbmdlIGFjdGl2aXRpZXMsIGVtcGxveW1lbnQgYW5kIHRyYWluaW5nIHByb2dyYW1zLCB0aGUgSWRhaG9cbkh1bWFuIFJpZ2h0cyBDb21taXNzaW9uLCBhbmQgU2VydmUgSWRhaG8uIExvY2FsIExhYm9yIG9mZmljZXMgZGVsaXZlciBhIGJyb2FkIHJhbmdlIG9mIHdvcmtmb3JjZSBkZXZlbG9wbWVudCBzZXJ2aWNlcyB0byBoZWxwIGNvbm5lY3RcbmFuZCBwcmVwYXJlIHdvcmtlcnMgZm9yIElkYWhvIGpvYnMgaW4gZGVtYW5kLiBUaGUgSWRhaG8gSHVtYW4gUmlnaHRzIENvbW1pc3Npb24gYWRtaW5pc3RlcnMgdGhlIHBvbGljaWVzIG91dGxpbmVkIGluIHRoZSBmZWRlcmFsIGZhaXJcbmVtcGxveW1lbnQgcHJhY3RpY2UgYWN0cyBiYW5uaW5nIGRpc2NyaW1pbmF0aW9uIGJhc2VkIG9uIHJhY2UsIGNvbG9yLCByZWxpZ2lvbiwgc2V4LCBuYXRpb25hbCBvcmkifV19LCB7ImFyZWEiOiAiRWNvbm9taWMgRGV2ZWxvcG1lbnQiLCAiYWdlbmN5IjogIlB1YmxpYyBVdGlsaXRpZXMgQ29tbWlzc2lvbiIsICJmdHAiOiA0OS4wLCAiZ2YiOiAwLCAiZGVkIjogNzMzMTcwMCwgImZlZCI6IDM4NTgwMCwgInRvdGFsIjogNzcxNzUwMCwgImZlZF9zaGFyZSI6IDAuMDUsICJkZWRfc2hhcmUiOiAwLjk1LCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJTMTM3MyIsICJTMTM4NCJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIldvcmtmb3JjZSBhbmQgQ29tbWlzc2lvbnMiLCAidGV4dCI6ICJUaGUgY29tbWlzc2lvbiByZXZpZXdzIGV2ZXJ5IGludmVzdG9yLW93bmVkIHV0aWxpdHkgaW4gdGhlIHN0YXRlLCBhc3N1cmluZyBhZGVxdWF0ZSBzZXJ2aWNlcyBhbmQgZml4aW5nIGp1c3QsXG5yZWFzb25hYmxlLCBhbmQgc3VmZmljaWVudCByYXRlcy4gVGhpcyBidWRnZXQgaW5jbHVkZXMgdGhlIENvbW1pc3Npb25lcnMsIGFuIGFkbWluaXN0cmF0aXZlIGRpdmlzaW9uLCBhbmQgYSB1dGlsaXRpZXMgZGl2aXNpb24uIFtTdGF0dXRvcnlcbmF1dGhvcml0eTogQ2hhcHRlciAyLCBUaXRsZSA2MSwgSWRhaG8gQ29kZS5dIn1dfSwgeyJhcmVhIjogIkVjb25vbWljIERldmVsb3BtZW50IiwgImFnZW5jeSI6ICJTZWxmLUdvdmVybmluZyBBZ2VuY2llcyIsICJmdHAiOiAxMjQ5LjAxLCAiZ2YiOiA2NDY5MjUwMCwgImRlZCI6IDEyMjE5MjMwMCwgImZlZCI6IDM1MDI3MTAwLCAidG90YWwiOiAyMjE5MTE5MDAsICJmZWRfc2hhcmUiOiAwLjE1NzgsICJkZWRfc2hhcmUiOiAwLjU1MDYsICJhbWVuZHNfY29kZSI6IHRydWUsICJiaWxscyI6IFsiUzEzNzMiLCAiUzEzODEiLCAiUzEzODMiLCAiUzEzODciLCAiUzE0MDYiLCAiUzE0MDciLCAiUzE0MzQiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJCVURHRVQgTEFXIEVYRU1QVElPTlMiLCAidGV4dCI6ICJUaGlzIGFnZW5jeSByZWNlaXZlZCBzcGVjaWZpYyBsZWdpc2xhdGl2ZSBhdXRob3JpemF0aW9uIGluIFMxMzczIHRoYXQgZXhlbXB0cyB0aGUgYWdlbmN5IGZyb20gdGhlIDEwJVxudHJhbnNmZXIgbGltaXRhdGlvbiBiZXR3ZWVuIGJ1ZGdldGVkIHByb2dyYW1zIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiV29ya2ZvcmNlIGFuZCBDb21taXNzaW9ucyIsICJ0ZXh0IjogIlRoZSBJZGFobyBDb21taXNzaW9uIG9uIEhpc3BhbmljIEFmZmFpcnMgcHJvbW90ZXMgZWNvbm9taWMsIGVkdWNhdGlvbmFsLCBzb2NpYWwsIGxlZ2FsLCBhbmQgcG9saXRpY2FsIGVxdWFsaXR5XG5mb3IgSGlzcGFuaWMgcGVvcGxlIGluIElkYWhvLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiA2Ny03MjAxLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9LCB7InN1Yl9wcm9ncmFtIjogIldvcmtmb3JjZSBhbmQgQ29tbWlzc2lvbnMiLCAidGV4dCI6ICJUaGUgSWRhaG8gU3RhdGUgSGlzdG9yaWNhbCBTb2NpZXR5IChJU0hTKSB3YXMgZXN0YWJsaXNoZWQgYnkgc3RhdHV0ZSBpbiAxOTA3LiBUaGUgYWdlbmN5IHdhcyBtb3ZlZCBmcm9tIHRoZVxuU3RhdGUgQm9hcmQgb2YgRWR1Y2F0aW9uIHRvIHRoZSBEZXBhcnRtZW50IG9mIFNlbGYtR292ZXJuaW5nIEFnZW5jaWVzIGluIDIwMDkuIEl0cyBvcGVyYXRpb25zIGFyZSBkaXJlY3RlZCBieSBhIHNldmVuLW1lbWJlciBib2FyZCBvZlxudHJ1c3RlZXMuIFRoZSBkdXRpZXMgb2YgdGhlIElTSFMgaW5jbHVkZTogKDEpIGlkZW50aWZ5aW5nIGFuZCBwcmVzZXJ2aW5nIHNpZ25pZmljYW50IGJ1aWxkaW5ncywgc2l0ZXMsIG9iamVjdHMsIHBob3RvZ3JhcGhzLCBhbmQgbGlicmFyeSByZXNvdXJjZXNcbmZvciB0aGUgZWR1Y2F0aW9uIGFuZCBiZW5lZml0IG9mIHRoaXMgYW5kIGZ1dHVyZSBnZW5lcmF0aW9uczsgKDIpIHByb3ZpZGluZyB0ZWNobmljYWwgc2VydmljZXMsIGZlZGVyYWwgZ3JhbnQgcmV2aWV3IGNsZWFyYW5jZXMsIGFuZCBvdGhlclxuYXNzaXN0YW5jZSB0byBsb2NhbCBnb3Zlcm5tZW50cywgaGlzdG9yaWNhbCBzb2NpZXRpZXMsIGFuZCBwcml2YXRlIGNpdGl6In0sIHsic3ViX3Byb2dyYW0iOiAiV29ya2ZvcmNlIGFuZCBDb21taXNzaW9ucyIsICJ0ZXh0IjogIlRoZSBJZGFobyBDb21taXNzaW9uIGZvciBMaWJyYXJpZXMgKElDZkwpIGFzc2lzdHMgYXBwcm94aW1hdGVseSA4NTAgYWNhZGVtaWMsIHB1YmxpYywgYW5kIHNjaG9vbCBsaWJyYXJpZXMsXG5pbmNsdWRpbmcgMTQ3IHB1YmxpYyBsaWJyYXJpZXMsIGFjcm9zcyB0aGUgc3RhdGUgdG8gYnVpbGQgdGhlIGNhcGFjaXR5IHRvIGJldHRlciBzZXJ2ZSB0aGVpciBjb21tdW5pdGllcy4gSUNmTCBwcm92aWRlcyBjb250aW51aW5nIGxpYnJhcnlcbmVkdWNhdGlvbiBhbmQgY29uc3VsdGFudCBzZXJ2aWNlcyB0byB0aGUgSWRhaG8gbGlicmFyeSBjb21tdW5pdHksIGNvb3JkaW5hdGVzIHN0YXRld2lkZSBsaWJyYXJ5IHByb2dyYW1zLCBhZG1pbmlzdGVycyBncmFudCBwcm9ncmFtcyBmb3JcbmxpYnJhcnkgZGV2ZWxvcG1lbnQgcHVycG9zZXMsIGFkdm9jYXRlcyBmb3IgbGlicmFyeSBzZXJ2aWNlcywgYW5kIGZhY2lsaXRhdGVzIHBsYW5uaW5nIGZvciBsaWJyYXJ5IGRldmVsb3BtZW50IGF0IHRoZSBsb2NhbCwgY29vcGVyYXRpdmUsIGFuZFxuc3RhdGUgbGV2ZWwuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDMzLTI1MDEsIElkYWhvIENvZGUsIGV0IHNlcS5dIn0sIHsic3ViX3Byb2dyYW0iOiAiV29ya2ZvcmNlIGFuZCBDb21taXNzaW9ucyIsICJ0ZXh0IjogIlRoZSBtaXNzaW9uIG9mIHRoZSBJZGFobyBMb3R0ZXJ5IGlzIHRvIG1heGltaXplIG5ldCBpbmNvbWUgYW5kIHRoZSByZXN1bHRpbmcgYW5udWFsIGRpdmlkZW5kIHBheW1lbnRzIGZvciBJZGFob1xucHVibGljIHNjaG9vbHMgYW5kIGJ1aWxkaW5ncy4gW1N0YXR1dG9yeSBhdXRob3JpdHk6IENoYXB0ZXIgNzQsIFRpdGxlIDY3LCBJZGFobyBDb2RlLl0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJPZmZpY2Ugb2YgdGhlIFN0YXRlIEFwcGVsbGF0ZSBQdWJsaWMgRGVmZW5kZXIiLCAidGV4dCI6ICJUaGUgT2ZmaWNlIG9mIHRoZSBTdGF0ZSBBcHBlbGxhdGUgUHVibGljIERlZmVuZGVyIHByb3ZpZGVzIGxlZ2FsIHJlcHJlc2VudGF0aW9uIHRvIGluZGlnZW50IGRlZmVuZGFudHMgaW4gYXBwZWFsc1xub2YgZmVsb255IGNyaW1pbmFsIGNvbnZpY3Rpb25zIG9yIHBvc3QtanVkZ21lbnQgb3JkZXJzIGluIGRpc3RyaWN0IGNvdXJ0OyBhcHBlYWxzIGZyb20gdGhlIGRpc3RyaWN0IGNvdXJ0IGluIHBvc3QtY29udmljdGlvbiByZWxpZWYgcHJvY2VlZGluZ3NcbmJyb3VnaHQgcHVyc3VhbnQgdG8gdGhlIFVuaWZvcm0gUG9zdC1Db252aWN0aW9uIFByb2NlZHVyZXMgQWN0OyBhcHBlYWxzIGZyb20gdGhlIGRpc3RyaWN0IGNvdXJ0IGluIGhhYmVhcyBjb3JwdXMgcHJvY2VlZGluZ3M7IHBvc3QtXG5jb252aWN0aW9uIHJlbGllZiBwcm9jZWVkaW5ncyBpbiBjYXBpdGFsIGNhc2VzOyBhcHBlYWxzIGZyb20gdGhlIGRpc3RyaWN0IGNvdXJ0IGluIG1pc2RlbWVhbm9yIGNhc2VzOyBhbmQgYXBwZWFscyBmcm9tIHRoZSBkaXN0cmljdCBjb3VydCBpblxuY2FzZXMgdW5kZXIgdGhlIEp1dmVuaWxlIENvcnJlY3Rpb25zIEFjdC4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3RpIn0sIHsic3ViX3Byb2dyYW0iOiAiQ2FwaXRhbCBhbmQgQ29uZmxpY3QgUmVwcmVzZW50YXRpb24iLCAidGV4dCI6ICJUaGlzIHByb2dyYW0gd2FzIGNyZWF0ZWQgZHVyaW5nIHRoZSAyMDE1IExlZ2lzbGF0aXZlIFNlc3Npb24gaW4gb3JkZXIgdG8gYnVkZ2V0IGZvciB0aGUgZmx1Y3R1YXRpbmcgY29zdHNcbmFzc29jaWF0ZWQgd2l0aCAoYSkgb3V0c2lkZSBjb3Vuc2VsIGZvciBub25jYXBpdGFsIGFwcGVhbHMgaW4gd2hpY2ggYSBjb25jdXJyZW50IGNvbmZsaWN0IG9mIGludGVyZXN0IGlzIGlkZW50aWZpZWQ7IGFuZCAoYikgZXh0cmFvcmRpbmFyeSBsaXRpZ2F0aW9uXG5kaXJlY3RseSByZWxhdGVkIHRvIHRoZSBwcm92aXNpb24gb2YgcmVwcmVzZW50YXRpb24gaW4gY2FwaXRhbCBjYXNlcywgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBjb25zdWx0YXRpb24gd2l0aCBleHBlcnRzOyB0cmF2ZWwsIGxvZGdpbmcsIGFuZCBwZXJcbmRpZW0gZm9yIGV4cGVydCBhbmQgbGF5IHdpdG5lc3NlczsgZGVwb3NpdGlvbnM7IGludmVzdGlnYXRpb247IGVtcGxveWVlIHRyYXZlbCBhc3NvY2lhdGVkIHdpdGggd2l0bmVzcyBpbnRlcnZpZXdzOyBjb3VydCByZXBvcnRpbmcgYW5kXG50cmFuc2NyaXB0aW9uIHNlcnZpY2VzOyBleHBlcnQgd2l0bmVzcyBmZWVzOyBvdXRzaWRlIGNvdW5zIn0sIHsic3ViX3Byb2dyYW0iOiAiQ2FwaXRhbCBhbmQgQ29uZmxpY3QgUmVwcmVzZW50YXRpb24iLCAidGV4dCI6ICJUaGUgRGl2aXNpb24gb2YgVmV0ZXJhbnMgU2VydmljZXMgcHJvdmlkZXMgY2FyZSBhbmQgc2VydmljZXMgdG8gSWRhaG8gdmV0ZXJhbnMgYW5kIHRoZWlyIGRlcGVuZGVudHMuIEl0XG5vcGVyYXRlcyBzdGF0ZSB2ZXRlcmFucyBob21lcyBpbiBCb2lzZSwgTGV3aXN0b24sIFBvY2F0ZWxsbywgYW5kIFBvc3QgRmFsbHM7IGFuZCB0aGUgc3RhdGUgdmV0ZXJhbnMgY2VtZXRlcmllcyBpbiBCb2lzZSBhbmQgQmxhY2tmb290LlxuW1N0YXR1dG9yeSBBdXRob3JpdHkgQ2hhcHRlcnMgMSBhbmQgMiwgVGl0bGUgNjUgYW5kIENoYXB0ZXIgOSwgVGl0bGUgNjYsIElkYWhvIENvZGUuXSJ9LCB7InN1Yl9wcm9ncmFtIjogIkNhcGl0YWwgYW5kIENvbmZsaWN0IFJlcHJlc2VudGF0aW9uIiwgInRleHQiOiAiVGhlIE9mZmljZSBvZiB0aGUgU3RhdGUgUHVibGljIERlZmVuZGVyIGVuc3VyZXMgdGhhdCBxdWFsaWZpZWQgZGVmZW5kaW5nIGF0dG9ybmV5cywgZXhwZXJ0cywgaW52ZXN0aWdhdG9ycyxcbm1pdGlnYXRpb24gc3BlY2lhbGlzdHMsIHN0ZW5vZ3JhcGhlcnMsIHBhcmFsZWdhbHMsIG9yIG90aGVyIHN1cHBvcnQgc3RhZmYgYW5kIGFzc2lzdGFudHMgYXJlIGVtcGxveWVkIG9yIGNvbnRyYWN0ZWQgYXMgbmVjZXNzYXJ5IHRvIHByb3ZpZGVcbmxlZ2FsIHJlcHJlc2VudGF0aW9uIHRvIGluZGlnZW50IGRlZmVuZGFudHMgYXQgYWxsIHN0YWdlcyBvZiBjcmltaW5hbCBhbmQgY29tbWl0bWVudCBwcm9jZWVkaW5ncy5cblRoZSBPZmZpY2Ugb2YgdGhlIFN0YXRlIFB1YmxpYyBEZWZlbmRlciAoU1BEKSB3YXMgY3JlYXRlZCBpbiAyMDIzIHB1cnN1YW50IHRvIFNlY3Rpb24gMTktNjAwMywgSWRhaG8gQ29kZSwgYW5kIGJlZ2FuIG9wZXJhdGluZyBvblxuT2N0b2JlciAxLCAyMDI0LiBUaGUgUHVibGljIERlZmVuc2UgQ29tbWlzc2lvbiB3YXMgZGlzc29sdmVkIGFuZCBpdHMgcmVzcG9uc2liaWxpdGllcyB3ZXJlIHRyYW5zaXRpb25lZCB0byB0aGUgU1BEIn0sIHsic3ViX3Byb2dyYW0iOiAiQWRtaW5pc3RyYXRpb24iLCAidGV4dCI6ICJUaGUgQWRtaW5pc3RyYXRpb24gUHJvZ3JhbSBwcm92aWRlcyBhZG1pbmlzdHJhdGl2ZTsgbGVnYWw7IElUOyBidWRnZXQgYW5kIGZpbmFuY2U7IGFuZCBzZWN0aW9uIGNoaWVmIHN1cHBvcnQgdG9cbnRoZSBlbnRpcmUgYWdlbmN5LiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiA2Ny0yNjAxLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9LCB7InN1Yl9wcm9ncmFtIjogIkJ1aWxkaW5nIENvbnN0cnVjdGlvbiAmIFJlYWwiLCAidGV4dCI6ICJUaGUgQnVpbGRpbmcgQ29uc3RydWN0aW9uIGFuZCBSZWFsIEVzdGF0ZSBQcm9ncmFtIHByb3ZpZGVzIGxpY2Vuc2luZyBhbmQgcmVnaXN0cmF0aW9uOyBjb2RlIGFkb3B0aW9uO1xuZWR1Y2F0aW9uLCBjdXJyaWN1bHVtLCBhbmQgdGVzdGluZzsgcGVybWl0dGluZzsgcGxhbiByZXZpZXcgYW5kIGluc3BlY3Rpb25zOyBhbmQgYm9hcmQgc3VwcG9ydCB0byAxNiBib2FyZHMgYW5kIGNvbW1pc3Npb25zLiBbU3RhdHV0b3J5XG5BdXRob3JpdHk6IFNlY3Rpb24gNjctMjYwMSwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJPY2N1cGF0aW9uYWwgTGljZW5zZXMiLCAidGV4dCI6ICJUaGUgT2NjdXBhdGlvbmFsIExpY2Vuc2VzIFByb2dyYW0gcHJvdmlkZXMgbGljZW5zaW5nIGFuZCByZWdpc3RyYXRpb247IGRpc2NpcGxpbmFyeSByZXBvcnRpbmc7IGVkdWNhdGlvbixcbmN1cnJpY3VsdW0sIGFuZCB0ZXN0aW5nOyBpbnNwZWN0aW9uczsgYW5kIGJvYXJkIHN1cHBvcnQgdG8gMTYgYm9hcmRzIGFuZCBjb21taXNzaW9ucy4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNjctMjYwMSwgSWRhaG8gQ29kZSwgZXRcbnNlcS5dIn0sIHsic3ViX3Byb2dyYW0iOiAiSGVhbHRoIFByb2Zlc3Npb25zIiwgInRleHQiOiAiVGhlIEhlYWx0aCBQcm9mZXNzaW9ucyBQcm9ncmFtIHByb3ZpZGVzIGxpY2Vuc2luZyBhbmQgcmVnaXN0cmF0aW9uOyBsZWdpc2xhdGlvbiBhbmQgcmVndWxhdG9yeSBhZmZhaXJzO1xuaW5zcGVjdGlvbnM7IGludmVzdGlnYXRpb25zIGFuZCBjb21wbGlhbmNlOyBlZHVjYXRpb24sIGN1cnJpY3VsdW0sIGFuZCBtb25pdG9yaW5nOyBhbmQgYm9hcmQgc3VwcG9ydCB0byAxNiBib2FyZHMgYW5kIGNvbW1pc3Npb25zLlxuW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNjctMjYwMSwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJIZWFsdGggUHJvZmVzc2lvbnMiLCAidGV4dCI6ICJUaGUgT2ZmaWNlIG9mIEFkbWluaXN0cmF0aXZlIEhlYXJpbmdzIHByb3ZpZGVzIGluZGVwZW5kZW50IGFuZCBpbXBhcnRpYWwgaGVhcmluZ3Mgb2YgY29udGVzdGVkIGFkbWluaXN0cmF0aXZlXG5jYXNlcyB1bmRlciB0aGUgQWRtaW5pc3RyYXRpdmUgSGVhcmluZyBBY3QsIGFuZCBmYWNpbGl0YXRlcyB0aGUgb3Bwb3J0dW5pdHkgZm9yIHBhcnRpZXMgdG8gcmVzb2x2ZSB0aGVpciBkaXNwdXRlcyB0aHJvdWdoIGFsdGVybmF0aXZlIGRpc3B1dGVcbnJlc29sdXRpb24uIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDY3LTUyMDEsIGV0IHNlcS4sIElkYWhvIENvZGVdIn1dLCAiY2hpbGRyZW4iOiBbeyJuYW1lIjogIk9mZmljZSBvZiB0aGUgU3RhdGUgUHVibGljIERlZmVuZGVyIiwgImdmIjogNDMwNDQ1MDAsICJkZWQiOiAzOTE2MDQwMCwgImZlZCI6IDAsICJ0b3RhbCI6IDgyMjA0OTAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMC40NzY0LCAiYmlsbHMiOiBbIlMxMzczIiwgIlMxNDA2Il0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiQ2FwaXRhbCBhbmQgQ29uZmxpY3QgUmVwcmVzZW50YXRpb24iLCAidGV4dCI6ICJUaGUgT2ZmaWNlIG9mIHRoZSBTdGF0ZSBQdWJsaWMgRGVmZW5kZXIgZW5zdXJlcyB0aGF0IHF1YWxpZmllZCBkZWZlbmRpbmcgYXR0b3JuZXlzLCBleHBlcnRzLCBpbnZlc3RpZ2F0b3JzLFxubWl0aWdhdGlvbiBzcGVjaWFsaXN0cywgc3Rlbm9ncmFwaGVycywgcGFyYWxlZ2Fscywgb3Igb3RoZXIgc3VwcG9ydCBzdGFmZiBhbmQgYXNzaXN0YW50cyBhcmUgZW1wbG95ZWQgb3IgY29udHJhY3RlZCBhcyBuZWNlc3NhcnkgdG8gcHJvdmlkZVxubGVnYWwgcmVwcmVzZW50YXRpb24gdG8gaW5kaWdlbnQgZGVmZW5kYW50cyBhdCBhbGwgc3RhZ2VzIG9mIGNyaW1pbmFsIGFuZCBjb21taXRtZW50IHByb2NlZWRpbmdzLlxuVGhlIE9mZmljZSBvZiB0aGUgU3RhdGUgUHVibGljIERlZmVuZGVyIChTUEQpIHdhcyBjcmVhdGVkIGluIDIwMjMgcHVyc3VhbnQgdG8gU2VjdGlvbiAxOS02MDAzLCBJZGFobyBDb2RlLCBhbmQgYmVnYW4gb3BlcmF0aW5nIG9uXG5PY3RvYmVyIDEsIDIwMjQuIFRoZSBQdWIifV19LCB7Im5hbWUiOiAiRGl2aXNpb24gb2YgVmV0ZXJhbnMgU2VydmljZXMiLCAiZ2YiOiAxNzM2MjAwLCAiZGVkIjogMzI2NTk4MDAsICJmZWQiOiAzMTkyMTUwMCwgInRvdGFsIjogNjYzMTc1MDAsICJmZWRfc2hhcmUiOiAwLjQ4MTMsICJkZWRfc2hhcmUiOiAwLjQ5MjUsICJiaWxscyI6IFsiUzEzNzMiLCAiUzEzODMiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJDYXBpdGFsIGFuZCBDb25mbGljdCBSZXByZXNlbnRhdGlvbiIsICJ0ZXh0IjogIlRoZSBEaXZpc2lvbiBvZiBWZXRlcmFucyBTZXJ2aWNlcyBwcm92aWRlcyBjYXJlIGFuZCBzZXJ2aWNlcyB0byBJZGFobyB2ZXRlcmFucyBhbmQgdGhlaXIgZGVwZW5kZW50cy4gSXRcbm9wZXJhdGVzIHN0YXRlIHZldGVyYW5zIGhvbWVzIGluIEJvaXNlLCBMZXdpc3RvbiwgUG9jYXRlbGxvLCBhbmQgUG9zdCBGYWxsczsgYW5kIHRoZSBzdGF0ZSB2ZXRlcmFucyBjZW1ldGVyaWVzIGluIEJvaXNlIGFuZCBCbGFja2Zvb3QuXG5bU3RhdHV0b3J5IEF1dGhvcml0eSBDaGFwdGVycyAxIGFuZCAyLCBUaXRsZSA2NSBhbmQgQ2hhcHRlciA5LCBUaXRsZSA2NiwgSWRhaG8gQ29kZS5dIn1dfSwgeyJuYW1lIjogIkRpdmlzaW9uIG9mIE9jY3VwYXRpb25hbCBhbmQgUHJvZmVzc2lvbmFsIExpY2Vuc2VzIiwgImdmIjogMCwgImRlZCI6IDM3MDU1NzAwLCAiZmVkIjogMjE2MTAwLCAidG90YWwiOiAzNzI3MTgwMCwgImZlZF9zaGFyZSI6IDAuMDA1OCwgImRlZF9zaGFyZSI6IDAuOTk0MiwgImJpbGxzIjogWyJTMTM3MyIsICJTMTQwNyJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkJVREdFVCBMQVcgRVhFTVBUSU9OUyIsICJ0ZXh0IjogIlRoaXMgYWdlbmN5IHJlY2VpdmVkIHNwZWNpZmljIGxlZ2lzbGF0aXZlIGF1dGhvcml6YXRpb24gaW4gUzEzNzMgdGhhdCBleGVtcHRzIHRoZSBhZ2VuY3kgZnJvbSB0aGUgMTAlXG50cmFuc2ZlciBsaW1pdGF0aW9uIGJldHdlZW4gYnVkZ2V0ZWQgcHJvZ3JhbXMifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJBZG1pbmlzdHJhdGlvbiIsICJ0ZXh0IjogIlRoZSBBZG1pbmlzdHJhdGlvbiBQcm9ncmFtIHByb3ZpZGVzIGFkbWluaXN0cmF0aXZlOyBsZWdhbDsgSVQ7IGJ1ZGdldCBhbmQgZmluYW5jZTsgYW5kIHNlY3Rpb24gY2hpZWYgc3VwcG9ydCB0b1xudGhlIGVudGlyZSBhZ2VuY3kuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDY3LTI2MDEsIElkYWhvIENvZGUsIGV0IHNlcS5dIn0sIHsic3ViX3Byb2dyYW0iOiAiQnVpbGRpbmcgQ29uc3RydWN0aW9uICYgUmVhbCIsICJ0ZXh0IjogIlRoZSBCdWlsZGluZyBDb25zdHJ1Y3Rpb24gYW5kIFJlYWwgRXN0YXRlIFByb2dyYW0gcHJvdmlkZXMgbGljZW5zaW5nIGFuZCByZWdpc3RyYXRpb247IGNvZGUgYWRvcHRpb247XG5lZHVjYXRpb24sIGN1cnJpY3VsdW0sIGFuZCB0ZXN0aW5nOyBwZXJtaXR0aW5nOyBwbGFuIHJldmlldyBhbmQgaW5zcGVjdGlvbnM7IGFuZCBib2FyZCBzdXBwb3J0IHRvIDE2IGJvYXJkcyBhbmQgY29tbWlzc2lvbnMuIFtTdGF0dXRvcnlcbkF1dGhvcml0eTogU2VjdGlvbiA2Ny0yNjAxLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9LCB7InN1Yl9wcm9ncmFtIjogIk9jY3VwYXRpb25hbCBMaWNlbnNlcyIsICJ0ZXh0IjogIlRoZSBPY2N1cGF0aW9uYWwgTGljZW5zZXMgUHJvZ3JhbSBwcm92aWRlcyBsaWNlbnNpbmcgYW5kIHJlZ2lzdHJhdGlvbjsgZGlzY2lwbGluYXJ5IHJlcG9ydGluZzsgZWR1Y2F0aW9uLFxuY3VycmljdWx1bSwgYW5kIHRlc3Rpbmc7IGluc3BlY3Rpb25zOyBhbmQgYm9hcmQgc3VwcG9ydCB0byAxNiBib2FyZHMgYW5kIGNvbW1pc3Npb25zLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiA2Ny0yNjAxLCBJZGFobyBDb2RlLCBldFxuc2VxLl0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJIZWFsdGggUHJvZmVzc2lvbnMiLCAidGV4dCI6ICJUaGUgSGVhbHRoIFByb2Zlc3Npb25zIFByb2dyYW0gcHJvdmlkZXMgbGljZW5zaW5nIGFuZCByZWdpc3RyYXRpb247IGxlZ2lzbGF0aW9uIGFuZCByZWd1bGF0b3J5IGFmZmFpcnM7XG5pbnNwZWN0aW9uczsgaW52ZXN0aWdhdGlvbnMgYW5kIGNvbXBsaWFuY2U7IGVkdWNhdGlvbiwgY3VycmljdWx1bSwgYW5kIG1vbml0b3Jpbmc7IGFuZCBib2FyZCBzdXBwb3J0IHRvIDE2IGJvYXJkcyBhbmQgY29tbWlzc2lvbnMuXG5bU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiA2Ny0yNjAxLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9XX0sIHsibmFtZSI6ICJJZGFobyBTdGF0ZSBIaXN0b3JpY2FsIFNvY2lldHkiLCAiZ2YiOiA0NDc3ODAwLCAiZGVkIjogNDA5NzIwMCwgImZlZCI6IDkzNzgwMCwgInRvdGFsIjogOTUxMjgwMCwgImZlZF9zaGFyZSI6IDAuMDk4NiwgImRlZF9zaGFyZSI6IDAuNDMwNywgImJpbGxzIjogWyJTMTM3MyIsICJTMTM4NyJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIldvcmtmb3JjZSBhbmQgQ29tbWlzc2lvbnMiLCAidGV4dCI6ICJUaGUgSWRhaG8gU3RhdGUgSGlzdG9yaWNhbCBTb2NpZXR5IChJU0hTKSB3YXMgZXN0YWJsaXNoZWQgYnkgc3RhdHV0ZSBpbiAxOTA3LiBUaGUgYWdlbmN5IHdhcyBtb3ZlZCBmcm9tIHRoZVxuU3RhdGUgQm9hcmQgb2YgRWR1Y2F0aW9uIHRvIHRoZSBEZXBhcnRtZW50IG9mIFNlbGYtR292ZXJuaW5nIEFnZW5jaWVzIGluIDIwMDkuIEl0cyBvcGVyYXRpb25zIGFyZSBkaXJlY3RlZCBieSBhIHNldmVuLW1lbWJlciBib2FyZCBvZlxudHJ1c3RlZXMuIFRoZSBkdXRpZXMgb2YgdGhlIElTSFMgaW5jbHVkZTogKDEpIGlkZW50aWZ5aW5nIGFuZCBwcmVzZXJ2aW5nIHNpZ25pZmljYW50IGJ1aWxkaW5ncywgc2l0ZXMsIG9iamVjdHMsIHBob3RvZ3JhcGhzLCBhbmQgbGlicmFyeSByZXNvdXJjZXNcbmZvciB0aGUgZWR1Y2F0aW9uIGFuZCBiZW5lZml0IG9mIHRoaXMgYW5kIGZ1dHVyZSBnZW5lcmF0aW9uczsgKDIpIHByb3ZpZGluZyB0ZWNobmljYWwgc2VydmljZXMsIGZlZGVyYWwgZ3JhbnQgciJ9XX0sIHsibmFtZSI6ICJTdGF0ZSBMb3R0ZXJ5IiwgImdmIjogMCwgImRlZCI6IDg2ODY2MDAsICJmZWQiOiAwLCAidG90YWwiOiA4Njg2NjAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMS4wLCAiYmlsbHMiOiBbIlMxMzczIiwgIlMxMzgxIl0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiV29ya2ZvcmNlIGFuZCBDb21taXNzaW9ucyIsICJ0ZXh0IjogIlRoZSBtaXNzaW9uIG9mIHRoZSBJZGFobyBMb3R0ZXJ5IGlzIHRvIG1heGltaXplIG5ldCBpbmNvbWUgYW5kIHRoZSByZXN1bHRpbmcgYW5udWFsIGRpdmlkZW5kIHBheW1lbnRzIGZvciBJZGFob1xucHVibGljIHNjaG9vbHMgYW5kIGJ1aWxkaW5ncy4gW1N0YXR1dG9yeSBhdXRob3JpdHk6IENoYXB0ZXIgNzQsIFRpdGxlIDY3LCBJZGFobyBDb2RlLl0ifV19LCB7Im5hbWUiOiAiQ29tbWlzc2lvbiBmb3IgTGlicmFyaWVzIiwgImdmIjogNDc1ODUwMCwgImRlZCI6IDcwMDAwLCAiZmVkIjogMTk1MTcwMCwgInRvdGFsIjogNjc4MDIwMCwgImZlZF9zaGFyZSI6IDAuMjg3OSwgImRlZF9zaGFyZSI6IDAuMDEwMywgImJpbGxzIjogWyJTMTM3MyJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIldvcmtmb3JjZSBhbmQgQ29tbWlzc2lvbnMiLCAidGV4dCI6ICJUaGUgSWRhaG8gQ29tbWlzc2lvbiBmb3IgTGlicmFyaWVzIChJQ2ZMKSBhc3Npc3RzIGFwcHJveGltYXRlbHkgODUwIGFjYWRlbWljLCBwdWJsaWMsIGFuZCBzY2hvb2wgbGlicmFyaWVzLFxuaW5jbHVkaW5nIDE0NyBwdWJsaWMgbGlicmFyaWVzLCBhY3Jvc3MgdGhlIHN0YXRlIHRvIGJ1aWxkIHRoZSBjYXBhY2l0eSB0byBiZXR0ZXIgc2VydmUgdGhlaXIgY29tbXVuaXRpZXMuIElDZkwgcHJvdmlkZXMgY29udGludWluZyBsaWJyYXJ5XG5lZHVjYXRpb24gYW5kIGNvbnN1bHRhbnQgc2VydmljZXMgdG8gdGhlIElkYWhvIGxpYnJhcnkgY29tbXVuaXR5LCBjb29yZGluYXRlcyBzdGF0ZXdpZGUgbGlicmFyeSBwcm9ncmFtcywgYWRtaW5pc3RlcnMgZ3JhbnQgcHJvZ3JhbXMgZm9yXG5saWJyYXJ5IGRldmVsb3BtZW50IHB1cnBvc2VzLCBhZHZvY2F0ZXMgZm9yIGxpYnJhcnkgc2VydmljZXMsIGFuZCBmYWNpbGl0YXRlcyBwbGFubmluZyBmb3IgbGlicmFyeSBkZXZlbG9wbWVudCBhdCB0aCJ9XX0sIHsibmFtZSI6ICJDb21taXNzaW9uIGZvciBQYXJkb25zIGFuZCBQYXJvbGUiLCAiZ2YiOiA0MTg2NjAwLCAiZGVkIjogMjA1MTAwLCAiZmVkIjogMCwgInRvdGFsIjogNDM5MTcwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuMDQ2NywgImJpbGxzIjogWyJTMTM3MyJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFtdfSwgeyJuYW1lIjogIlN0YXRlIEFwcGVsbGF0ZSBQdWJsaWMgRGVmZW5kZXIiLCAiZ2YiOiA0MTkzOTAwLCAiZGVkIjogMCwgImZlZCI6IDAsICJ0b3RhbCI6IDQxOTM5MDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAwLjAsICJiaWxscyI6IFsiUzEzNzMiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJPZmZpY2Ugb2YgdGhlIFN0YXRlIEFwcGVsbGF0ZSBQdWJsaWMgRGVmZW5kZXIiLCAidGV4dCI6ICJUaGUgT2ZmaWNlIG9mIHRoZSBTdGF0ZSBBcHBlbGxhdGUgUHVibGljIERlZmVuZGVyIHByb3ZpZGVzIGxlZ2FsIHJlcHJlc2VudGF0aW9uIHRvIGluZGlnZW50IGRlZmVuZGFudHMgaW4gYXBwZWFsc1xub2YgZmVsb255IGNyaW1pbmFsIGNvbnZpY3Rpb25zIG9yIHBvc3QtanVkZ21lbnQgb3JkZXJzIGluIGRpc3RyaWN0IGNvdXJ0OyBhcHBlYWxzIGZyb20gdGhlIGRpc3RyaWN0IGNvdXJ0IGluIHBvc3QtY29udmljdGlvbiByZWxpZWYgcHJvY2VlZGluZ3NcbmJyb3VnaHQgcHVyc3VhbnQgdG8gdGhlIFVuaWZvcm0gUG9zdC1Db252aWN0aW9uIFByb2NlZHVyZXMgQWN0OyBhcHBlYWxzIGZyb20gdGhlIGRpc3RyaWN0IGNvdXJ0IGluIGhhYmVhcyBjb3JwdXMgcHJvY2VlZGluZ3M7IHBvc3QtXG5jb252aWN0aW9uIHJlbGllZiBwcm9jZWVkaW5ncyBpbiBjYXBpdGFsIGNhc2VzOyBhcHBlYWxzIGZyb20gdGhlIGRpc3RyaWN0IGNvdXJ0IGluIG1pc2RlbWVhbm9yIGNhc2VzOyBhbmQgYXBwZSJ9LCB7InN1Yl9wcm9ncmFtIjogIkNhcGl0YWwgYW5kIENvbmZsaWN0IFJlcHJlc2VudGF0aW9uIiwgInRleHQiOiAiVGhpcyBwcm9ncmFtIHdhcyBjcmVhdGVkIGR1cmluZyB0aGUgMjAxNSBMZWdpc2xhdGl2ZSBTZXNzaW9uIGluIG9yZGVyIHRvIGJ1ZGdldCBmb3IgdGhlIGZsdWN0dWF0aW5nIGNvc3RzXG5hc3NvY2lhdGVkIHdpdGggKGEpIG91dHNpZGUgY291bnNlbCBmb3Igbm9uY2FwaXRhbCBhcHBlYWxzIGluIHdoaWNoIGEgY29uY3VycmVudCBjb25mbGljdCBvZiBpbnRlcmVzdCBpcyBpZGVudGlmaWVkOyBhbmQgKGIpIGV4dHJhb3JkaW5hcnkgbGl0aWdhdGlvblxuZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgcHJvdmlzaW9uIG9mIHJlcHJlc2VudGF0aW9uIGluIGNhcGl0YWwgY2FzZXMsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gY29uc3VsdGF0aW9uIHdpdGggZXhwZXJ0czsgdHJhdmVsLCBsb2RnaW5nLCBhbmQgcGVyXG5kaWVtIGZvciBleHBlcnQgYW5kIGxheSB3aXRuZXNzZXM7IGRlcG9zaXRpb25zOyBpbnZlc3RpZ2F0aW9uOyBlbXBsb3llZSB0cmF2ZWwgYXNzb2NpYXRlZCB3aXQifV19LCB7Im5hbWUiOiAiT2ZmaWNlIG9mIEFkbWluaXN0cmF0aXZlIEhlYXJpbmdzIiwgImdmIjogMTU2NjMwMCwgImRlZCI6IDAsICJmZWQiOiAwLCAidG90YWwiOiAxNTY2MzAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMC4wLCAiYmlsbHMiOiBbIlMxMzczIiwgIlMxNDM0Il0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiSGVhbHRoIFByb2Zlc3Npb25zIiwgInRleHQiOiAiVGhlIE9mZmljZSBvZiBBZG1pbmlzdHJhdGl2ZSBIZWFyaW5ncyBwcm92aWRlcyBpbmRlcGVuZGVudCBhbmQgaW1wYXJ0aWFsIGhlYXJpbmdzIG9mIGNvbnRlc3RlZCBhZG1pbmlzdHJhdGl2ZVxuY2FzZXMgdW5kZXIgdGhlIEFkbWluaXN0cmF0aXZlIEhlYXJpbmcgQWN0LCBhbmQgZmFjaWxpdGF0ZXMgdGhlIG9wcG9ydHVuaXR5IGZvciBwYXJ0aWVzIHRvIHJlc29sdmUgdGhlaXIgZGlzcHV0ZXMgdGhyb3VnaCBhbHRlcm5hdGl2ZSBkaXNwdXRlXG5yZXNvbHV0aW9uLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiA2Ny01MjAxLCBldCBzZXEuLCBJZGFobyBDb2RlXSJ9XX0sIHsibmFtZSI6ICJDb21taXNzaW9uIG9uIEhpc3BhbmljIEFmZmFpcnMiLCAiZ2YiOiAyNzc5MDAsICJkZWQiOiAyNTc1MDAsICJmZWQiOiAwLCAidG90YWwiOiA1MzU0MDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAwLjQ4MDksICJiaWxscyI6IFsiUzEzNzMiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJXb3JrZm9yY2UgYW5kIENvbW1pc3Npb25zIiwgInRleHQiOiAiVGhlIElkYWhvIENvbW1pc3Npb24gb24gSGlzcGFuaWMgQWZmYWlycyBwcm9tb3RlcyBlY29ub21pYywgZWR1Y2F0aW9uYWwsIHNvY2lhbCwgbGVnYWwsIGFuZCBwb2xpdGljYWwgZXF1YWxpdHlcbmZvciBIaXNwYW5pYyBwZW9wbGUgaW4gSWRhaG8uIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDY3LTcyMDEsIElkYWhvIENvZGUsIGV0IHNlcS5dIn1dfSwgeyJuYW1lIjogIk9mZmljZSBvZiBIZWFsdGggYW5kIFNvY2lhbCBTZXJ2aWNlcyBPbWJ1ZHNtYW4iLCAiZ2YiOiA0NTA4MDAsICJkZWQiOiAwLCAiZmVkIjogMCwgInRvdGFsIjogNDUwODAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMC4wLCAiYmlsbHMiOiBbIlMxMzczIl0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW119XX0sIHsiYXJlYSI6ICJFY29ub21pYyBEZXZlbG9wbWVudCIsICJhZ2VuY3kiOiAiSWRhaG8gVHJhbnNwb3J0YXRpb24gRGVwYXJ0bWVudCIsICJmdHAiOiAxNjQ1LjAsICJnZiI6IDAsICJkZWQiOiA1NDQ2MjQ4MDAsICJmZWQiOiA0OTIzOTkxMDAsICJ0b3RhbCI6IDEwMzcwMjM5MDAsICJmZWRfc2hhcmUiOiAwLjQ3NDgsICJkZWRfc2hhcmUiOiAwLjUyNTIsICJhbWVuZHNfY29kZSI6IGZhbHNlLCAiYmlsbHMiOiBbIlMxMzczIiwgIlMxNDI2Il0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW10sICJjaGlsZHJlbiI6IFt7Im5hbWUiOiAiQ29udHJhY3QgQ29uc3RydWN0aW9uICYgUmlnaHQtb2YtV2F5IEFjcS4iLCAiZ2YiOiAwLCAiZGVkIjogMTc2NTAwMzAwLCAiZmVkIjogNDM3MDQwMTAwLCAidG90YWwiOiA2MTM1NDA0MDAsICJmZWRfc2hhcmUiOiAwLjcxMjMsICJkZWRfc2hhcmUiOiAwLjI4NzcsICJiaWxscyI6IFtdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkFlcm9uYXV0aWNzIiwgInRleHQiOiAiVGhlIENvbnRyYWN0IENvbnN0cnVjdGlvbiBhbmQgUmlnaHQtb2YtV2F5IEFjcXVpc2l0aW9uIERpdmlzaW9uIGFjY291bnRzIGZvciB0aGUgZnVuZHMgYXBwcm9wcmlhdGVkIGZvclxuaGlnaHdheSBjb25zdHJ1Y3Rpb24gcHJvamVjdHMgdGhhdCBtYWludGFpbiBhbmQgaW1wcm92ZSB0aGUgc3RhdGVcdTIwMTlzIGhpZ2h3YXkgc3lzdGVtIn1dfSwgeyJuYW1lIjogIkhpZ2h3YXkgT3BlcmF0aW9ucyIsICJnZiI6IDAsICJkZWQiOiAyNjczOTg4MDAsICJmZWQiOiA1MDE4NzcwMCwgInRvdGFsIjogMzE3NTg2NTAwLCAiZmVkX3NoYXJlIjogMC4xNTgsICJkZWRfc2hhcmUiOiAwLjg0MiwgImJpbGxzIjogW10sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiQWVyb25hdXRpY3MiLCAidGV4dCI6ICJUaGUgSGlnaHdheSBPcGVyYXRpb25zIERpdmlzaW9uIHBlcmZvcm1zIHN0YXRld2lkZSBoaWdod2F5IG1haW50ZW5hbmNlIGZ1bmN0aW9ucyBhbmQgZGlyZWN0cyBoaWdod2F5XG5pbXByb3ZlbWVudHM7IGFkbWluaXN0ZXJzIGZlZGVyYWwtYWlkIHNhZmV0eSBpbXByb3ZlbWVudCBwcm9qZWN0cyBhbmQgc2FmZXR5IHRhc2tzOyBwcm90ZWN0cyBoaWdod2F5cyBmcm9tIG92ZXJzaXplLCBvdmVyd2VpZ2h0LCBhbmRcbmRhbmdlcm91cyB1c2FnZTsgbWFuYWdlcyBmZWRlcmFsIHRyYW5zaXQgZ3JhbnQgcHJvZ3JhbXMgYW5kIGVuY291cmFnZXMgY29vcmRpbmF0ZWQgdHJhbnNwb3J0YXRpb24gc2VydmljZXM7IGRldmVsb3BzIHByb2plY3RzIHRvIGltcHJvdmVcbnN0YXRlIGFuZCBsb2NhbCBoaWdod2F5IHN5c3RlbXMgdG8gaW1wcm92ZSBzYWZldHk7IGFuZCBjb29yZGluYXRlcyB0cmFuc3BvcnRhdGlvbiByZXNlYXJjaCBlZmZvcnRzIn1dfSwgeyJuYW1lIjogIlRyYW5zcG9ydGF0aW9uIFNlcnZpY2VzIiwgImdmIjogMCwgImRlZCI6IDY0MDkyODAwLCAiZmVkIjogMTU3MTMwMCwgInRvdGFsIjogNjU2NjQxMDAsICJmZWRfc2hhcmUiOiAwLjAyMzksICJkZWRfc2hhcmUiOiAwLjk3NjEsICJiaWxscyI6IFsiUzEzNzMiLCAiUzE0MjYiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJBZG1pbmlzdHJhdGlvbiIsICJ0ZXh0IjogIlRoZSBBZG1pbmlzdHJhdGlvbiBQcm9ncmFtIHN1cHBvcnRzIHRoZSBJZGFobyBUcmFuc3BvcnRhdGlvbiBEZXBhcnRtZW50IEJvYXJkOyBwcm92aWRlcyBsZWdhbCByZXByZXNlbnRhdGlvblxuYW5kIHNlcnZpY2VzIGZvciB0aGUgZGVwYXJ0bWVudDsgZGV2ZWxvcHMgbGVnaXNsYXRpb247IG9wZXJhdGVzIGluZm9ybWF0aW9uIHN5c3RlbXM7IGNvb3JkaW5hdGVzIHNhZmV0eSBhbmQgcmlzayBtYW5hZ2VtZW50OyBwcm92aWRlc1xuZW1wbG95ZWUgc2VydmljZXMsIGJ1c2luZXNzIGFuZCBzdXBwb3J0IG1hbmFnZW1lbnQ7IHByb3ZpZGVzIGZpbmFuY2lhbCBzZXJ2aWNlczsgZGV2ZWxvcHMgbG9uZy1yYW5nZSBwcm9ncmFtIGFuZCBwcm9qZWN0IGJ1ZGdldCBwbGFucztcbmFuZCBwZXJmb3JtcyBlY29ub21pYyBhbmQgcHJvZ3JhbSByZXNlYXJjaCBhY3Rpdml0aWVzIn0sIHsic3ViX3Byb2dyYW0iOiAiQ2FwaXRhbCBGYWNpbGl0aWVzIiwgInRleHQiOiAiVGhlIENhcGl0YWwgRmFjaWxpdGllcyBQcm9ncmFtIGRldmVsb3BzLCBhZG1pbmlzdGVycywgYW5kIHByb3ZpZGVzIHRlY2huaWNhbCBhc3Npc3RhbmNlIGFuZCByZWNvbW1lbmRhdGlvbnNcbmZvciB0aGUgZGVwYXJ0bWVudCdzIGhlYWRxdWFydGVycyBhbmQgdGhlIHNpeCB0cmFuc3BvcnRhdGlvbiBkaXN0cmljdHMuIFRoaXMgaW5jbHVkZXMgbmV3IGNvbnN0cnVjdGlvbiwgc2l0ZSBkZXZlbG9wbWVudCwgc3lzdGVtIHVwZ3JhZGVzLFxucHJldmVudGl2ZSBtYWludGVuYW5jZSwgYnVpbGRpbmcgYWx0ZXJhdGlvbnMgYW5kIHJlcGFpcnMsIGVuZXJneSBjb25zZXJ2YXRpb24sIGJ1aWxkaW5nIHNlY3VyaXR5LCBsaWZlIHNhZmV0eSByZXF1aXJlbWVudHMsIGFuZCB2YXJpb3VzIGJ1aWxkaW5nXG5jb2RlIGNvbXBsaWFuY2UsIGluY2x1ZGluZyBwcm9qZWN0cyByZXF1aXJlZCBieSB0aGUgQW1lcmljYW5zIHdpdGggRGlzYWJpbGl0aWVzIEFjdCJ9LCB7InN1Yl9wcm9ncmFtIjogIkFlcm9uYXV0aWNzIiwgInRleHQiOiAiVGhlIEFlcm9uYXV0aWNzIFByb2dyYW0gYXNzaXN0cyBJZGFobyBtdW5pY2lwYWxpdGllcyBpbiBkZXZlbG9waW5nIHRoZWlyIGFpcnBvcnRzIGFuZCBvcGVyYXRlcyB0aGUgc3RhdGUncyBhaXJcbmZsZWV0IHN5c3RlbSJ9XX0sIHsibmFtZSI6ICJNb3RvciBWZWhpY2xlcyIsICJnZiI6IDAsICJkZWQiOiAzNjYzMjkwMCwgImZlZCI6IDM2MDAwMDAsICJ0b3RhbCI6IDQwMjMyOTAwLCAiZmVkX3NoYXJlIjogMC4wODk1LCAiZGVkX3NoYXJlIjogMC45MTA1LCAiYmlsbHMiOiBbXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJBZXJvbmF1dGljcyIsICJ0ZXh0IjogIlRoZSBEaXZpc2lvbiBvZiBNb3RvciBWZWhpY2xlcyAoRE1WKSBtYW5hZ2VzIGRyaXZlclx1MjAxOXMgbGljZW5zZXMsIHZlaGljbGUgcmVnaXN0cmF0aW9ucywgbGljZW5zZSBwbGF0ZXMsIGFuZFxudmVoaWNsZSB0aXRsZXMuIFRoaXMgZGl2aXNpb24gaXMgcmVzcG9uc2libGUgdG8gbWVldCB0aGUgbmVlZHMgYW5kIGV4cGVjdGF0aW9ucyBvZiBtb3RvciB2ZWhpY2xlIGN1c3RvbWVycyBhbmQgdGhlIGNvdW50eSBzaGVyaWZmcyBhbmRcbmFzc2Vzc29ycyB3aG8gd29yayBhcyB0aGUgZGVwYXJ0bWVudFx1MjAxOXMgYWdlbnRzIn1dfV19LCB7ImFyZWEiOiAiR2VuZXJhbCBHb3Zlcm5tZW50IiwgImFnZW5jeSI6ICJEZXBhcnRtZW50IG9mIEFkbWluaXN0cmF0aW9uIiwgImZ0cCI6IDEzNy4wLCAiZ2YiOiAyNDI2NTAwLCAiZGVkIjogMzIwMjU5MDAsICJmZWQiOiAwLCAidG90YWwiOiAzNDQ1MjQwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuOTI5NiwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiSDg2NyIsICJIOTIzIl0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiTWFuYWdlbWVudCBTZXJ2aWNlcyIsICJ0ZXh0IjogIlRoZSBNYW5hZ2VtZW50IFNlcnZpY2VzIFByb2dyYW0gKGZvcm1lcmx5IG5hbWVkIHRoZSBEaXJlY3RvcidzIE9mZmljZSkgcHJvdmlkZXMgYWRtaW5pc3RyYXRpdmUsIGZpc2NhbCwgbGVnYWwsXG5hbmQgaHVtYW4gcmVzb3VyY2VzIHNlcnZpY2VzIHRvIHRoZSBkZXBhcnRtZW50LCBhbmQgYWRtaW5pc3RlcnMgdGhlIEluZHVzdHJpYWwgU3BlY2lhbCBJbmRlbW5pdHkgRnVuZC4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNjctXG41NzAxLCBJZGFobyBDb2RlXSJ9LCB7InN1Yl9wcm9ncmFtIjogIlB1YmxpYyBXb3JrcyIsICJ0ZXh0IjogIlRoZSBEaXZpc2lvbiBvZiBQdWJsaWMgV29ya3MgaXMgcmVzcG9uc2libGUgZm9yIHRoZSBwbGFubmluZywgZGVzaWduLCBjb25zdHJ1Y3Rpb24gYW5kIG1haW50ZW5hbmNlIG9mIGFsbCBzdGF0ZVxuZmFjaWxpdGllcy4gVGhlIGRpdmlzaW9uIGRldmVsb3BzIGJ1ZGdldHMsIHN1cGVydmlzZXMgdGhlIGJpZGRpbmcgcHJvY2VzcywgYW5kIG92ZXJzZWVzIHRoZSBzZWxlY3Rpb24gb2YgYXJjaGl0ZWN0cyBhbmQgZW5naW5lZXJzIGZvciBzdGF0ZVxuYnVpbGRpbmcgYW5kIHJlbm92YXRpb24gcHJvamVjdHMuIFRoZSBkaXZpc2lvbiBzdXBlcnZpc2VzIHByb2plY3QgY29uc3RydWN0aW9uIHRvIGVuc3VyZSBwcm9qZWN0cyBwcm9jZWVkIGFjY29yZGluZyB0byBhcHByb3ZlZCBwbGFucyBhbmRcbnNwZWNpZmljYXRpb25zLCBhbmQgcHJvdmlkZXMgcHJvcGVydHkgbWFuYWdlbWVudCBzZXJ2aWNlcyBmb3Igc3RhdGUgYnVpbGRpbmdzLiBPdGhlciBzZXJ2aWNlcyBpbmNsdWRlIHByZXZlbnRhdGl2ZSBhbmQgY29ycmVjdGl2ZSBidWlsZGluZ1xubWFpbnRlbmFuY2UsIGN1c3RvZGlhbCwgZW52aXJvbm1lbnRhbCBjb250cm9sLCBncm91bmRzIGtlZXBpbmcsIGFuZCB1dGkifV0sICJjaGlsZHJlbiI6IFt7Im5hbWUiOiAiQWRtaW5pc3RyYXRpb24gKGNvcmUgb3BlcmF0aW9ucykiLCAiZ2YiOiAyNDI2NTAwLCAiZGVkIjogMjk2ODM5MDAsICJmZWQiOiAwLCAidG90YWwiOiAzMjExMDQwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuOTI0NCwgImJpbGxzIjogWyJIODY3IiwgIkg5MjMiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJNYW5hZ2VtZW50IFNlcnZpY2VzIiwgInRleHQiOiAiVGhlIE1hbmFnZW1lbnQgU2VydmljZXMgUHJvZ3JhbSAoZm9ybWVybHkgbmFtZWQgdGhlIERpcmVjdG9yJ3MgT2ZmaWNlKSBwcm92aWRlcyBhZG1pbmlzdHJhdGl2ZSwgZmlzY2FsLCBsZWdhbCxcbmFuZCBodW1hbiByZXNvdXJjZXMgc2VydmljZXMgdG8gdGhlIGRlcGFydG1lbnQsIGFuZCBhZG1pbmlzdGVycyB0aGUgSW5kdXN0cmlhbCBTcGVjaWFsIEluZGVtbml0eSBGdW5kLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiA2Ny1cbjU3MDEsIElkYWhvIENvZGVdIn0sIHsic3ViX3Byb2dyYW0iOiAiUHVibGljIFdvcmtzIiwgInRleHQiOiAiVGhlIERpdmlzaW9uIG9mIFB1YmxpYyBXb3JrcyBpcyByZXNwb25zaWJsZSBmb3IgdGhlIHBsYW5uaW5nLCBkZXNpZ24sIGNvbnN0cnVjdGlvbiBhbmQgbWFpbnRlbmFuY2Ugb2YgYWxsIHN0YXRlXG5mYWNpbGl0aWVzLiBUaGUgZGl2aXNpb24gZGV2ZWxvcHMgYnVkZ2V0cywgc3VwZXJ2aXNlcyB0aGUgYmlkZGluZyBwcm9jZXNzLCBhbmQgb3ZlcnNlZXMgdGhlIHNlbGVjdGlvbiBvZiBhcmNoaXRlY3RzIGFuZCBlbmdpbmVlcnMgZm9yIHN0YXRlXG5idWlsZGluZyBhbmQgcmVub3ZhdGlvbiBwcm9qZWN0cy4gVGhlIGRpdmlzaW9uIHN1cGVydmlzZXMgcHJvamVjdCBjb25zdHJ1Y3Rpb24gdG8gZW5zdXJlIHByb2plY3RzIHByb2NlZWQgYWNjb3JkaW5nIHRvIGFwcHJvdmVkIHBsYW5zIGFuZFxuc3BlY2lmaWNhdGlvbnMsIGFuZCBwcm92aWRlcyBwcm9wZXJ0eSBtYW5hZ2VtZW50IHNlcnZpY2VzIGZvciBzdGF0ZSBidWlsZGluZ3MuIE90aGVyIHNlcnZpY2VzIGluY2x1ZGUgcHJldmVudGEifV19LCB7Im5hbWUiOiAiQ2FwaXRvbCBDb21taXNzaW9uIiwgImdmIjogMCwgImRlZCI6IDIzNDIwMDAsICJmZWQiOiAwLCAidG90YWwiOiAyMzQyMDAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMS4wLCAiYmlsbHMiOiBbXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJEb2N1bWVudCBTZXJ2aWNlcyIsICJ0ZXh0IjogIlRoZSBDYXBpdG9sIENvbW1pc3Npb24ncyBtaXNzaW9uIGlzIHRvIG92ZXJzZWUgYWxsIHJlbm92YXRpb24gYW5kIHJlc3RvcmF0aW9uIGVmZm9ydHMgb2YgdGhlIENhcGl0b2wgYnVpbGRpbmcgYW5kXG5ncm91bmRzLiBUaGlzIGluY2x1ZGVzIHNlbGVjdGluZyBhbiBhcmNoaXRlY3QgZm9yIHRoZSBDYXBpdG9sOyBkZXZlbG9waW5nIGEgbWFzdGVyIHBsYW4gYWRkcmVzc2luZyB0aGUgYnVpbGRpbmcsIGl0cyBmdXJuaXNoaW5ncywgYW5kIGdyb3VuZHM7XG5hbmQgb3ZlcnNlZWluZyBhbnkgbW9kaWZpY2F0aW9uIHRvIHRoZSBwaHlzaWNhbCBzdHJ1Y3R1cmUgb2YgdGhlIGJ1aWxkaW5nLiBTdGF0dXRlIHJlcXVpcmVzIHRoZSBjb21taXNzaW9uIHRvIG1lZXQgYXQgbGVhc3QgdHdpY2UgYSB5ZWFyLlxuW1N0YXR1dG9yeSBBdXRob3JpdHk6IENoYXB0ZXIgMTYsIFRpdGxlIDY3LCBJZGFobyBDb2RlXSJ9XX1dfSwgeyJhcmVhIjogIkdlbmVyYWwgR292ZXJubWVudCIsICJhZ2VuY3kiOiAiUGVybWFuZW50IEJ1aWxkaW5nIEZ1bmQiLCAiZnRwIjogMC4wLCAiZ2YiOiAwLCAiZGVkIjogNzI1MDczMDAsICJmZWQiOiAwLCAidG90YWwiOiA3MjUwNzMwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDEuMCwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiSDkxOSJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkNPTkRJVElPTlMsIExJTUlUQVRJT05TLCBBTkQgUkVTVFJJQ1RJT05TIiwgInRleHQiOiAiSDkxOSBpbmNsdWRlZCBzaXggc2VjdGlvbnMgb2YgY29uZGl0aW9ucywgbGltaXRhdGlvbnMsIGFuZCByZXN0cmljdGlvbnMuIFNlY3Rpb24gMiBvZlxuSDkxOSBhbGxvY2F0ZWQgdGhlIGFwcHJvcHJpYXRpb24gcHJvdmlkZWQgZm9yIHNwZWNpZmljIHByb2plY3RzLiBTZWN0aW9uIDMgcHJvdmlkZWQgdGhlIGFwcHJvcHJpYXRpb24gbWF5IGJlIHVzZWQgYXMgbWF0Y2hpbmcgZnVuZHMgYW5kIHRoZVxuRGl2aXNpb24gb2YgUHVibGljIFdvcmtzIG1heSBleHBlbmQgYW55IGFwcHJvcHJpYXRpb24gdG8gYW4gYWdlbmN5IGZvciBwdWJsaWMgd29ya3Mgd2l0aCB0aGUgYXBwcm92YWwgb2YgdGhlIGNvdW5jaWwuIFNlY3Rpb24gNCBwcm92aWRlZFxuZmxleGliaWxpdHkgdG8gcmVhbGxvY2F0ZSBwcm9qZWN0IHNhdiJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkRvY3VtZW50IFNlcnZpY2VzIiwgInRleHQiOiAiVGhlIGZpdmUtcGVyc29uIFBlcm1hbmVudCBCdWlsZGluZyBGdW5kIEFkdmlzb3J5IENvdW5jaWwgaXMgY29tcG9zZWQgb2Ygb25lIG1lbWJlciBmcm9tIHRoZSBTZW5hdGUsIG9uZVxubWVtYmVyIGZyb20gdGhlIEhvdXNlIG9mIFJlcHJlc2VudGF0aXZlcywgb25lIGNvbnRyYWN0b3IsIG9uZSBiYW5rZXIsIGFuZCBvbmUgYnVzaW5lc3MgcGVyc29uLiBUaGUgY291bmNpbCBvdmVyc2VlcyBhbmQgYXBwcm92ZXMgYWxsXG5wbGFubmluZywgZGVzaWduLCBhbmQgY29uc3RydWN0aW9uIG9mIHN0YXRlIHB1YmxpYyB3b3JrcyBwcm9qZWN0cy4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNjctNTcxMCwgSWRhaG8gQ29kZV0ifV19LCB7ImFyZWEiOiAiR2VuZXJhbCBHb3Zlcm5tZW50IiwgImFnZW5jeSI6ICJBdHRvcm5leSBHZW5lcmFsIiwgImZ0cCI6IDIyNy40LCAiZ2YiOiAzMTA2MjcwMCwgImRlZCI6IDIwNTI1MDAsICJmZWQiOiAxNjAyNDAwLCAidG90YWwiOiAzNDcxNzYwMCwgImZlZF9zaGFyZSI6IDAuMDQ2MiwgImRlZF9zaGFyZSI6IDAuMDU5MSwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiSDg2NiIsICJIOTcxIl0sICJub3RlcyI6IFt7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJIOTcxIHNldCBhc2lkZSBleGlzdGluZyBJZGFobyBDb2RlIHN1Y2ggdGhhdCBtb25leXMgaW4gdGhlIENvbnN1bWVyIFByb3RlY3Rpb25cbkZ1bmQgbWF5IGJlIHVzZWQgaW4gRlkgMjAyNiBhbmQgRlkgMjAyNyBmb3IgdGhlIGZ1cnRoZXJhbmNlIG9mIGFsbCB0aGUgQXR0b3JuZXkgR2VuZXJhbCdzIGR1dGllcyBhbmQgYWN0aXZpdGllcyB1bmRlciBJZGFobyBsYXcsIGluIGFkZGl0aW9uXG50byBkdXRpZXMgYW5kIGFjdGl2aXRpZXMgcmVsYXRlZCB0byB0aGUgQ29uc3VtZXIgUHJvdGVjdGlvbiBBY3QifSwgeyJ0eXBlIjogIkNPTkRJVElPTlMsIExJTUlUQVRJT05TLCBBTkQgUkVTVFJJQ1RJT05TIiwgInRleHQiOiAiSDk3MSBzZXQgYXNpZGUgZXhpc3RpbmcgSWRhaG8gQ29kZSBzbyB0aGF0IG1vbmV5cyBpbiB0aGUgQ29uc3VtZXIgUHJvdGVjdGlvbiBGdW5kXG5tYXkgYmUgdXNlZCBpbiBGWSAyMDI2IGFuZCBGWSAyMDI3IGZvciB0aGUgZnVydGhlcmFuY2Ugb2YgYWxsIHRoZSBBdHRvcm5leSBHZW5lcmFsJ3MgZHV0aWVzIGFuZCBhY3Rpdml0aWVzIHVuZGVyIElkYWhvIGxhdywgYXMgb3Bwb3NlZCB0b1xub25seSBkdXRpZXMgYW5kIGFjdGl2aXRpZXMgdGhhdCByZWxhdGUgdG8gdGhlIENvbnN1bWVyIFByb3RlY3Rpb24gQWN0In1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiU3RhdGUgTGVnYWwgU2VydmljZXMiLCAidGV4dCI6ICJUaGlzIHByb2dyYW0gcHJvdmlkZXMgbGVnYWwgYXNzaXN0YW5jZSB0byBhZ2VuY2llcyBpbiBjaXZpbCBtYXR0ZXJzLCByZXByZXNlbnRzIHRoZSBzdGF0ZSBpbiBjcmltaW5hbCBtYXR0ZXJzLCBhbmRcbnByb3ZpZGVzIG92ZXJhbGwgYWRtaW5pc3RyYXRpdmUgc3VwcG9ydCBmb3IgdGhlIG9mZmljZSJ9LCB7InN1Yl9wcm9ncmFtIjogIkludGVybmV0IENyaW1lcyBBZ2FpbnN0IENoaWxkcmVuIiwgInRleHQiOiAiUGFydG5lcmluZyB3aXRoIGxvY2FsIGxhdyBlbmZvcmNlbWVudCBlbnRpdGllcywgdGhpcyBwcm9ncmFtIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgaW52ZXN0aWdhdGlvbiBhbmQgcHJvc2VjdXRpb25cbm9mIG9mZmVuZGVycyB3aG8gdXNlIHRoZSBpbnRlcm5ldCwgb25saW5lIHN5c3RlbXMsIGNvbXB1dGVyIHRlY2hub2xvZ3ksIGNlbGx1bGFyIHBob25lcywgc21hcnQgcGhvbmVzLCBvciBtb2JpbGUgZGV2aWNlcyB0byBzZXh1YWxseSBleHBsb2l0XG5jaGlsZHJlbiJ9LCB7InN1Yl9wcm9ncmFtIjogIlNwZWNpYWwgTGl0aWdhdGlvbiIsICJ0ZXh0IjogIlRoaXMgcHJvZ3JhbSBwcm92aWRlcyBmb3IgZXh0cmFvcmRpbmFyeSBsaXRpZ2F0aW9uIGNvc3RzIGFuZCBmb3IgdGhlIHJldGVudGlvbiBvZiBwcml2YXRlIGxlZ2FsIHJlcHJlc2VudGF0aW9uIGZvclxuZXh0cmFvcmRpbmFyeSBvciB1bmFudGljaXBhdGVkIGxpdGlnYXRpb24gd2hlbiBzcGVjaWFsIGV4cGVydGlzZSBpcyBuZWVkZWQgb3Igd2hlbiB0aGVyZSBpcyBhbiBldGhpY2FsIGNvbmZsaWN0IG9mIGludGVyZXN0IGJldHdlZW4gZ292ZXJubWVudGFsXG5lbnRpdGllcyJ9XX0sIHsiYXJlYSI6ICJHZW5lcmFsIEdvdmVybm1lbnQiLCAiYWdlbmN5IjogIlN0YXRlIENvbnRyb2xsZXIiLCAiZnRwIjogMTI1LjAsICJnZiI6IDIzMzE4OTAwLCAiZGVkIjogMTQ2Mzk3MDAsICJmZWQiOiAxNjA3NjAwLCAidG90YWwiOiAzOTU2NjIwMCwgImZlZF9zaGFyZSI6IDAuMDQwNiwgImRlZF9zaGFyZSI6IDAuMzcsICJhbWVuZHNfY29kZSI6IGZhbHNlLCAiYmlsbHMiOiBbIkg4NjYiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlNlY3Rpb24gMTEgb2YgSDg2NiByZXF1aXJlZCB0aGUgT2ZmaWNlIG9mIHRoZSBTdGF0ZSBDb250cm9sbGVyIHRvIGNvbXBsZXRlIGEgY2FzaFxucmVjb25jaWxpYXRpb24gb2YgYWNjb3VudCBiYWxhbmNlcyBhbmQgYWN0aXZpdHkgaW4gTHVtYSB0byBtb250aGx5IGJhbmsgc3RhdGVtZW50cyBmb3IgZWFjaCBmdW5kIGFuZCBhZ2VuY3kgZnJvbSBKdWx5IDEsIDIwMjMgdGhyb3VnaCBKdW5lXG4zMCwgMjAyNiwgYW5kIHRvIHByb3ZpZGUgYSByZXBvcnQgdG8gSkZBQyBvbiB0aGUgYWNjdXJhY3kgb2YgcmVwb3J0ZWQgY2FzaCBiYWxhbmNlcyBhZnRlciByZWNvbmNpbGlhdGlvbiBhdCB0aGUgZmFsbCBpbnRlcmltIG1lZXRpbmcgb2YgSkZBQyBvclxuT2N0b2JlciAxNiwgMjAyNiwgd2hpY2hldmVyIGlzIGVhcmwifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJBZG1pbmlzdHJhdGlvbiIsICJ0ZXh0IjogIlRoaXMgb2ZmaWNlIHByb3ZpZGVzIGFkbWluaXN0cmF0aXZlLCBmaW5hbmNpYWwsIGFuZCBodW1hbiByZXNvdXJjZXMgc2VydmljZXMgZm9yIHRoZSBhZ2VuY3k7IGFuZCBwcm92aWRlc1xuc3VwcG9ydCBmb3IgdGhlIGV4IG9mZmljaW8gZHV0aWVzIG9mIHRoZSBTdGF0ZSBDb250cm9sbGVyIGluY2x1ZGluZyBzZXJ2aW5nIGFzIHNlY3JldGFyeSB0byB0aGUgQm9hcmQgb2YgRXhhbWluZXJzLCBtZW1iZXIgb2YgdGhlIElkYWhvIFN0YXRlXG5Cb2FyZCBvZiBMYW5kIENvbW1pc3Npb25lcnMsIFN0YXRlIFNvY2lhbCBTZWN1cml0eSBBZG1pbmlzdHJhdG9yLCBhbmQgSWRhaG8gVGVjaG5vbG9neSBBdXRob3JpdHkgKElUQSkgbWVtYmVyLiBBcyBJZGFobydzIGFkbWluaXN0cmF0b3Igb2ZcbnN0YXRlIHNvY2lhbCBzZWN1cml0eSBwcm9ncmFtcywgdGhlIFN0YXRlIENvbnRyb2xsZXIgaXMgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIHN0YXRlIGNvbXBsaWFuY2Ugd2l0aCBTZWN0aW9uIDIxOCBvZiB0aGUgZmVkZXJhbCBTb2NpYWxcblNlY3VyaXR5IEFjdC4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb25zIDY3LTEwMDEgYW5kIDU5LTExMDFBLCBJZGFobyBDb2QifSwgeyJzdWJfcHJvZ3JhbSI6ICJTdGF0ZXdpZGUgQWNjb3VudGluZyIsICJ0ZXh0IjogIlN0YXRld2lkZSBBY2NvdW50aW5nIHB1Ymxpc2hlcyBJZGFobydzIEFubnVhbCBDb21wcmVoZW5zaXZlIEZpbmFuY2lhbCBSZXBvcnQsIGFzIHdlbGwgYXMgb3RoZXIgc3RhdGV3aWRlIGFuZFxuYWdlbmN5IHNwZWNpZmljIHJlcG9ydHMuIEZpbmFuY2lhbCByZXBvcnRzIHByZXBhcmVkIGJ5IHRoZSBvZmZpY2UgYXJlIGNyaXRpY2FsIHRvIG1haW50YWluaW5nIElkYWhvJ3MgaGlnaCBjcmVkaXQgcmF0aW5nIGFuZCBpbiBvYnRhaW5pbmcgZmF2b3JhYmxlXG5pbnRlcmVzdCByYXRlcyB3aGVuIGlzc3VpbmcgdGF4IGFudGljaXBhdGlvbiBub3RlcyBhbmQgb3RoZXIgYm9uZHMuIFRoZSBvZmZpY2UgcHJvdmlkZXMgZ3VpZGFuY2UgYW5kIHN1cHBvcnQgdG8gYWdlbmNpZXMgZm9yIHByb3BlciBpbnRlcm5hbFxuY29udHJvbHMgYW5kIGdlbmVyYWxseSBhY2NlcHRlZCBhY2NvdW50aW5nIHByaW5jaXBsZXMgdG8gYmV0dGVyIG1hbmFnZSBhbmQgcmVwb3J0IHRoZSBmaW5hbmNpYWwgYWZmYWlycyBvZiB0aGUgc3RhdGUgb2YgSWRhaG8uIFtTdGF0dXRvcnlcbkF1dGhvcml0eTogU2VjdGlvbiA2Ny0xMDAxLCBJZGFobyBDb2RlXSJ9LCB7InN1Yl9wcm9ncmFtIjogIkNvbXB1dGVyIENlbnRlciIsICJ0ZXh0IjogIlRoZSBDb21wdXRlciBTZXJ2aWNlIENlbnRlciBtYWludGFpbnMgSWRhaG8ncyBsYXJnZXN0IHN0YXRlIGRhdGEgY2VudGVyIGFuZCBwcm92aWRlcyB0ZWNobm9sb2d5IHNlcnZpY2VzIHRvXG50aGUgQWNjb3VudGluZyBQcm9ncmFtLCBhcyB3ZWxsIGFzIG1hbnkgb3RoZXIgc3RhdGUgYWdlbmNpZXMuIFRoZSBkaXZpc2lvbiBpcyBmdW5kZWQgdmlhIGEgZGVkaWNhdGVkIGZ1bmQgYXBwcm9wcmlhdGlvbiBhbmQgYmlsbHMgdGhlIFN0YXRlXG5Db250cm9sbGVyJ3MgZGl2aXNpb25zIGFuZCBhZ2VuY3kgY3VzdG9tZXJzIGRpcmVjdGx5IGZvciBJVCBzZXJ2aWNlcyBpdCBwcm92aWRlcy4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNjctMTAwMSwgSWRhaG8gQ29kZV0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJFbnRlcnByaXNlIEJ1c2luZXNzIE9wZXJhdGlvbnMiLCAidGV4dCI6ICJFbnRlcnByaXNlIEJ1c2luZXNzIE9wZXJhdGlvbnMgKEVCTykgaG91c2VzIHRoZSB0ZWFtIHRoYXQgbWFpbnRhaW5zIEx1bWEsIHRoZSBzdGF0ZSdzIGVudGVycHJpc2UgcmVzb3VyY2VcbnBsYW5uaW5nIHN1aXRlIHRoYXQgcHJvdmlkZXMgYWNjb3VudGluZywgcGF5cm9sbCwgaHVtYW4gcmVzb3VyY2UsIGJ1ZGdldCwgYW5kIHByb2N1cmVtZW50IG1vZHVsZXMuIEVCTyBtYWludGFpbnMgdGhlIHN0YXRlJ3MgYWNjb3VudGluZ1xuc3lzdGVtIG9mIHJlY29yZCBhbmQgcHJvY2Vzc2VzIHZlbmRvciBwYXltZW50cyBvbiBiZWhhbGYgb2Ygc3RhdGUgYWdlbmNpZXMuIEVCTyBwcm9jZXNzZXMgdGhlIHN0YXRlJ3MgcGF5cm9sbCBhbmQgaXMgcmVzcG9uc2libGUgZm9yXG5nYXJuaXNobWVudCBwcm9jZXNzaW5nLCB0YXggcmVwb3J0aW5nLCBhbmQgZWxlY3Ryb25pYyBmdW5kIHRyYW5zZmVycyB3aXRoIG1ham9yIHZlbmRvcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXlyb2xsIHN5c3RlbS4gVGhlIGRpdmlzaW9uIGFsc29cbm1haW50YWlucyBhbmQgc3VwcG9ydHMgTHVtYSBQcm9jdXJlbWVudCBmb3IgdGhlIERpdmlzaW9uIG9mIFB1cmNoYXNpbmcsIEx1bWEgR0hSIGZvIn1dfSwgeyJhcmVhIjogIkdlbmVyYWwgR292ZXJubWVudCIsICJhZ2VuY3kiOiAiT2ZmaWNlIG9mIHRoZSBHb3Zlcm5vciIsICJmdHAiOiAxNDI3LjUxLCAiZ2YiOiAzNTczMzcwMCwgImRlZCI6IDIzMTU4NTIwMCwgImZlZCI6IDE4ODY0OTcwMCwgInRvdGFsIjogNDU1OTY4NjAwLCAiZmVkX3NoYXJlIjogMC40MTM3LCAiZGVkX3NoYXJlIjogMC41MDc5LCAiYW1lbmRzX2NvZGUiOiB0cnVlLCAiYmlsbHMiOiBbIkg4NjciLCAiSDg2OCIsICJIODY5IiwgIkg4NzAiLCAiSDkwOCIsICJIOTI0IiwgIkg5MzMiLCAiSDk0MiIsICJIOTQ5IiwgIlMxNDE2Il0sICJub3RlcyI6IFt7InR5cGUiOiAiT1RIRVIgTEVHSVNMQVRJT04iLCAidGV4dCI6ICJIODk4IG1vdmVkIHRoZSBTdGF0ZSBIaXN0b3JpYyBQcmVzZXJ2YXRpb24gT2ZmaWNlIGZyb20gdGhlIElkYWhvIFN0YXRlIEhpc3RvcmljYWwgU29jaWV0eSB0byB0aGUgT2ZmaWNlIG9mIFNwZWNpZXMsXG5NaW5lcmFscywgYW5kIEVuZXJneSBDb29yZGluYXRpb24ifSwgeyJ0eXBlIjogIk9USEVSIExFR0lTTEFUSU9OIiwgInRleHQiOiAiSDczNyBtZXJnZWQgdGhlIE9mZmljZSBvZiBTcGVjaWVzIENvbnNlcnZhdGlvbiB3aXRoIHRoZSBPZmZpY2Ugb2YgRW5lcmd5IGFuZCBNaW5lcmFsIFJlc291cmNlcy4gVGhlIG5ld2x5XG5mb3JtZWQgb2ZmaWNlIGlzIGNhbGxlZCB0aGUgT2ZmaWNlIG9mIFNwZWNpZXMsIE1pbmVyYWxzLCBhbmQgRW5lcmd5IENvb3JkaW5hdGlvbiJ9LCB7InR5cGUiOiAiQlVER0VUIExBVyBFWEVNUFRJT05TIiwgInRleHQiOiAiVGhlIEV4ZWN1dGl2ZSBPZmZpY2Ugb2YgdGhlIEdvdmVybm9yIHJlY2VpdmVkIHNwZWNpZmljIGxlZ2lzbGF0aXZlIGF1dGhvcml6YXRpb24gaW4gU2VjdGlvbiAzIG9mIEg4NjYgdGhhdFxucmVtb3ZlZCBhbGwgcmVzdHJpY3Rpb25zIGxpbWl0aW5nIHRoZSB0cmFuc2ZlciBvZiBtb25leXMgYW1vbmcgcGVyc29ubmVsIGNvc3RzLCBvcGVyYXRpbmcgZXhwZW5kaXR1cmVzLCBjYXBpdGFsIG91dGxheSwgYW5kIHRydXN0ZWUgYW5kXG5iZW5lZml0IHBheW1lbnRzLiBUaGUgYmlsbCBhbHNvIGV4ZW1wdGVkIHRoZSBvZmZpY2UgZnJvbSB0aGUgMTAlIHRyYW5zZmVyIGxpbWl0YXRpb24gYmV0d2VlbiBidWRnZXRlZCBwcm9ncmFtcyJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkVudGVycHJpc2UgQnVzaW5lc3MgT3BlcmF0aW9ucyIsICJ0ZXh0IjogIlRoZSBEaXZpc2lvbiBvZiBGaW5hbmNpYWwgTWFuYWdlbWVudCB3b3JrcyB3aXRoIHRoZSBHb3Zlcm5vciB0byBwcm92aWRlIGRpcmVjdGlvbiBhbmQgbGVhZGVyc2hpcCBpbiBtYW5hZ2luZ1xudGhlIGZpbmFuY2lhbCBhbmQgcG9saWN5IGlzc3VlcyBvZiBzdGF0ZSBnb3Zlcm5tZW50OyBwcm9kdWNlcyBhIGJhbGFuY2VkIGJ1ZGdldCByZWNvbW1lbmRhdGlvbiB0byB0aGUgTGVnaXNsYXR1cmUgdGhhdCBhZGRyZXNzZXMgdGhlIG5lZWRzXG5vZiB0aGUgc3RhdGU7IHByb2plY3RzIGFuZCBtb25pdG9ycyBzdGF0ZSByZXZlbnVlczsgYW5kIGNvb3JkaW5hdGVzIHN0YXRlIGZpbmFuY2lhbCBwcmFjdGljZXMuIFRoZSBkaXZpc2lvbiBjb25zaXN0cyBvZiBmb3VyIG1haW4gYWRtaW5pc3RyYXRpdmVcbnVuaXRzOiBCdWRnZXQsIEVjb25vbWljIEFuYWx5c2lzLCBGaXNjYWwgYW5kIE9wZXJhdGlvbnMsIGFuZCBSZWd1bGF0b3J5IGFuZCBMZWdpc2xhdGl2ZSBBZmZhaXJzLCB3aGljaCBpbmNsdWRlcyB0aGUgT2ZmaWNlIG9mIHRoZVxuQWRtaW5pc3RyYXRpdmUgUnVsZXMgQ29vcmRpbmF0b3IuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9ucyA2Ny0xOTEwIHRocm8ifSwgeyJzdWJfcHJvZ3JhbSI6ICJBZG1pbmlzdHJhdGlvbiAtIEdvdmVybm9yJ3MgT2ZmaWNlIiwgInRleHQiOiAiVGhpcyBwcm9ncmFtIGV4ZXJjaXNlcyB0aGUgcG93ZXJzIGFuZCBkdXRpZXMgb2YgdGhlIENoaWVmIEV4ZWN1dGl2ZSBvZiB0aGUgc3RhdGUgb2YgSWRhaG8gaW4gYWNjb3JkYW5jZSB3aXRoIHRoZVxuSWRhaG8gQ29uc3RpdHV0aW9uIGFuZCB0aGUgbGF3cyBvZiB0aGUgc3RhdGUifSwgeyJzdWJfcHJvZ3JhbSI6ICJBY3RpbmcgR292ZXJub3IgUGF5IiwgInRleHQiOiAiQXJ0aWNsZSA0LCBTZWN0aW9ucyAxMiBhbmQgMTQgb2YgdGhlIElkYWhvIENvbnN0aXR1dGlvbiBkZWxpbmVhdGUgdGhlIHN1Y2Nlc3Npb24gb2YgcG93ZXIuIEluIHRoZSBldmVudCB0aGVcbkdvdmVybm9yIGlzIG91dCBvZiB0aGUgc3RhdGUsIHRoZSBMaWV1dGVuYW50IEdvdmVybm9yIGJlY29tZXMgYWN0aW5nIEdvdmVybm9yLiBJbiB0aGUgYWJzZW5jZSBvZiB0aGUgTGlldXRlbmFudCBHb3Zlcm5vciwgdGhlIFByZXNpZGVudFxuUHJvIFRlbXBvcmUgaXMgdG8gYWN0IGFzIEdvdmVybm9yLiBJbiB0aGUgYWJzZW5jZSBvZiB0aGUgUHJlc2lkZW50IFBybyBUZW1wb3JlLCB0aGUgU3BlYWtlciBvZiB0aGUgSG91c2UgaXMgdG8gYWN0IGFzIEdvdmVybm9yLiBQdXJzdWFudFxudG8gU2VjdGlvbiA2Ny04MDkoMiksIElkYWhvIENvZGUsIHRoZSBvZmZpY2lhbCBhY3RpbmcgYXMgR292ZXJub3IgaXMgZW50aXRsZWQgdG8gYWRkaXRpb25hbCBjb21wZW5zYXRpb24gY2FsY3VsYXRlZCBhcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuXG50aGUgR292ZXJub3IncyBzYWxhcnkgYW5kIHRoZSBzYWxhcnkgb2YgdGhlIExpZXV0ZW5hbnQgR292ZXJub3IifSwgeyJzdWJfcHJvZ3JhbSI6ICJFeHBlbnNlIEFsbG93YW5jZSIsICJ0ZXh0IjogIlNlY3Rpb24gNjctODA4KGQpLCBJZGFobyBDb2RlLCBwcm92aWRlcyB0aGF0IGNlcnRhaW4gbW9uZXlzIG1heSBiZSB1c2VkIGF0IHRoZSBHb3Zlcm5vcidzIGRpc2NyZXRpb24gdG8gYXNzaXN0XG5pbiBkZWZyYXlpbmcgZXhwZW5zZXMgcmVsYXRpbmcgdG8gb3IgcmVzdWx0aW5nIGZyb20gdGhlIGRpc2NoYXJnZSBvZiBvZmZpY2lhbCBkdXRpZXMifSwgeyJzdWJfcHJvZ3JhbSI6ICJHb3Zlcm5vclx1MjAxOXMgRW1lcmdlbmN5IiwgInRleHQiOiAiRnVuZHMgYXJlIGF2YWlsYWJsZSB0byBiZSBleHBlbmRlZCBieSB0aGUgR292ZXJub3IgdG8gcGF5IG5lY2Vzc2FyeSBjb3N0cyBhc3NvY2lhdGVkIHdpdGggYW55IGVtZXJnZW5jeSxcbndoaWNoIHdhcyBub3QgZm9yZXNlZW4gb3IgcmVhc29uYWJseSBmb3Jlc2VlYWJsZSBieSB0aGUgTGVnaXNsYXR1cmUsIGFuZCB3aGljaCBtYXkgYXJpc2UgaW4gY2Fycnlpbmcgb24gdGhlIGVzc2VudGlhbCBmdW5jdGlvbnMgb2Ygc3RhdGVcbmdvdmVybm1lbnQgYW5kIGluIHByb3RlY3RpbmcgdGhlIGludGVyZXN0cyBvZiB0aGUgc3RhdGUgKFNlY3Rpb24gNTctMTYwMSwgSWRhaG8gQ29kZSkifSwgeyJzdWJfcHJvZ3JhbSI6ICJHb3Zlcm5vclx1MjAxOXMgRW1lcmdlbmN5IiwgInRleHQiOiAiVGhlIERpdmlzaW9uIG9mIEh1bWFuIFJlc291cmNlcyAoREhSKSBpcyBvcmdhbml6ZWQgd2l0aGluIHRoZSBPZmZpY2Ugb2YgdGhlIEdvdmVybm9yLiBUaGUgZGl2aXNpb24gaXNcbnJlc3BvbnNpYmxlIGZvciBlbXBsb3llZSByZWNydWl0bWVudCwgam9iIGNsYXNzaWZpY2F0aW9uLCBlbXBsb3llZSBhc3Nlc3NtZW50IGFuZCBzZWxlY3Rpb24gcHJvY2Vzc2VzLCBjb21wZW5zYXRpb24gaXNzdWVzLCB3b3JrZm9yY2VcbnBsYW5uaW5nIGFuZCBkZXZlbG9wbWVudCwgZW1wbG95ZWUgcmVsYXRpb25zLCBhbmQgcHJvdmlkaW5nIGh1bWFuIHJlc291cmNlIHBvbGljeSB0byBjb21wbHkgd2l0aCBhcHBsaWNhYmxlIGxhd3MgYW5kIHJlZ3VsYXRpb25zLiBNb3N0IG9mXG50aGUgZm9ybWVyIHBvd2VycyBhbmQgZHV0aWVzIG9mIHRoZSBQZXJzb25uZWwgQ29tbWlzc2lvbiB3ZXJlIHN0YXR1dG9yaWx5IHRyYW5zZmVycmVkIHRvIHRoZSBhZG1pbmlzdHJhdG9yIG9mIHRoZSBEaXZpc2lvbiBvZiBIdW1hblxuUmVzb3VyY2VzIGluIEZZIDIwMDAuIFRoZSBhZG1pbmlzdHJhdG9yIGlzIGFwcG9pbnRlZCBieSBhbmQgcmVwb3J0cyB0byB0aGUgR292ZXJub3IuIFRoZSBQZXJzbyJ9LCB7InN1Yl9wcm9ncmFtIjogIkdvdmVybm9yXHUyMDE5cyBFbWVyZ2VuY3kiLCAidGV4dCI6ICJUaGUgT2ZmaWNlIG9mIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgU2VydmljZXMgb3BlcmF0ZXMgdGhlIHN0YXRlIG5ldHdvcmsgYW5kIGNvb3JkaW5hdGVkIGludGVybmV0LCBjb25zb2xpZGF0ZWRcbm1lc3NhZ2luZywgdGVsZXBob25lLCBhbmQgZGF0YSBhbmQgdmlkZW8gdHJhbnNtaXNzaW9uIHNlcnZpY2VzLiBUaGUgb2ZmaWNlIGFsc28gY29vcmRpbmF0ZXMgdGhlIElkYWhvIFRlY2hub2xvZ3kgQXV0aG9yaXR5IChJVEEpLCB3aGljaFxucmV2aWV3cyBhbmQgZXZhbHVhdGVzIHRoZSBpbmZvcm1hdGlvbiB0ZWNobm9sb2d5IGFuZCB0ZWxlY29tbXVuaWNhdGlvbnMgc3lzdGVtcyBpbiB1c2UgYnkgc3RhdGUgYWdlbmNpZXMsIGFuZCBwcmVwYXJlcyBzdGF0ZXdpZGUgc2hvcnRcbmFuZCBsb25nLXJhbmdlIElUIGFuZCBUZWxlY29tbXVuaWNhdGlvbnMgUGxhbnMuIFdpdGhpbiB0aGUgY29udGV4dCBvZiB0aG9zZSBwbGFucywgdGhlIElUQSBlc3RhYmxpc2hlcyBzdGF0ZXdpZGUgSVQgYW5kXG50ZWxlY29tbXVuaWNhdGlvbnMgcG9saWNpZXMsIHN0YW5kYXJkcywgZ3VpZGVsaW5lcywgYW5kIGNvbnZlbnRpb25zIGFzc3VyaW5nIHVuaWZvcm1pdHkgYW5kIGNvbXBhIn0sIHsic3ViX3Byb2dyYW0iOiAiTWlsaXRhcnkgTWFuYWdlbWVudCIsICJ0ZXh0IjogIlRoZSBNaWxpdGFyeSBEaXZpc2lvblx1MjAxOXMgTWlsaXRhcnkgTWFuYWdlbWVudCBQcm9ncmFtIHByb3ZpZGVzIG92ZXJhbGwgbWFuYWdlbWVudCB0aGF0IGVuc3VyZXMgbWlzc2lvblxuY2FwYWJpbGl0eSBhbmQgbWVldHMgdGhlIGdvYWxzIG9mIHRoZSBzdGF0ZSBhbmQgZmVkZXJhbCBnb3Zlcm5tZW50cywgYXMgZXN0YWJsaXNoZWQgYnkgbGF3In0sIHsic3ViX3Byb2dyYW0iOiAiRmVkZXJhbC9TdGF0ZSBBZ3JlZW1lbnRzIiwgInRleHQiOiAiVGhlIHB1cnBvc2Ugb2YgdGhlIE1pbGl0YXJ5IERpdmlzaW9uXHUyMDE5cyBGZWRlcmFsL1N0YXRlIEFncmVlbWVudHMgUHJvZ3JhbSBpcyB0byBvcGVyYXRlIGFuZCBtYWludGFpbiB0aGUgR293ZW5cbkZpZWxkIGNvbXBsZXhlcywgZGVzZXJ0IHRyYWluaW5nIHJhbmdlIGZhY2lsaXRpZXMsIGFuZCBuaW5lIG1haW50ZW5hbmNlIHNob3BzIGxvY2F0ZWQgdGhyb3VnaG91dCB0aGUgc3RhdGUuIFRoaXMgcHJvZ3JhbSBpcyBhIGpvaW50IHZlbnR1cmVcbmJldHdlZW4gdGhlIHN0YXRlIGFuZCB0aGUgZmVkZXJhbCBOYXRpb25hbCBHdWFyZCBCdXJlYXUuIFNlcnZpY2UgY29udHJhY3RzIGFyZSBuZWdvdGlhdGVkIGFubnVhbGx5IGluIHdoaWNoIHRoZSBzdGF0ZSBwcm92aWRlcyBzcGVjaWZpZWRcbnNlcnZpY2VzIHRvIHRoZSBOYXRpb25hbCBHdWFyZCBhbmQgaXMgcmVpbWJ1cnNlZCBieSB0aGUgZmVkZXJhbCBnb3Zlcm5tZW50IGZvciA1MCB0byAxMDAgcGVyY2VudCBvZiB0aGUgY29zdC4gVGhlcmUgaXMgY3VycmVudGx5IGEgdG90YWwgb2YgMTNcbmNvb3BlcmF0aXZlIGFncmVlbWVudHMgYmV0d2VlbiB0aGUgQWlyIGFuZCBBcm15IE5hdGlvbmFsIEd1YXJkIn0sIHsic3ViX3Byb2dyYW0iOiAiT2ZmaWNlIG9mIEVtZXJnZW5jeSBNYW5hZ2VtZW50IiwgInRleHQiOiAiSW4gRlkgMjAxOCwgdGhlIElkYWhvIE9mZmljZSBvZiBFbWVyZ2VuY3kgTWFuYWdlbWVudCAoSU9FTSkgcmVwbGFjZWQgdGhlIElkYWhvIEJ1cmVhdSBvZiBIb21lbGFuZFxuU2VjdXJpdHkuIEJlZ2lubmluZyBpbiBGWSAyMDA1LCB0aGUgQnVyZWF1IG9mIEhvbWVsYW5kIFNlY3VyaXR5IHN1cGVyc2VkZWQgYW5kIGNvbWJpbmVkIHRoZSBmdW5jdGlvbnMgb2YgdGhlIEJ1cmVhdSBvZiBEaXNhc3RlciBTZXJ2aWNlc1xuYW5kIHRoZSBCdXJlYXUgb2YgSGF6YXJkb3VzIE1hdGVyaWFscy4gW0F1dGhvcml0eTogRXhlYy4gT3JkZXIgTm8uIDIwMDMtMTEsIFNlY3Rpb25zIDM5LTcxMDEgYW5kIDQ2LTEwMDEsIElkYWhvIENvZGUsIGV0IHNlcS5dIn0sIHsic3ViX3Byb2dyYW0iOiAiRW1lcmdlbmN5IE1lZGljYWwgU2VydmljZXMiLCAidGV4dCI6ICJQcm92aWRlcyBhIHN0YXRld2lkZSBzeXN0ZW0gdG8gcmVzcG9uZCB0byBjcml0aWNhbCBpbGxuZXNzIGFuZCBpbmp1cnkgc2l0dWF0aW9ucy4gSDIwNiAoMjAyNSkgZXN0YWJsaXNoZWQgdGhlXG5FbWVyZ2VuY3kgTWVkaWNhbCBTZXJ2aWNlcyBBY3Qgd2l0aGluIFRpdGxlIDQ2LCBJZGFobyBDb2RlLCBhbmQgdHJhbnNmZXJyZWQgdGhpcyBwcm9ncmFtIGZyb20gdGhlIERlcGFydG1lbnQgb2YgSGVhbHRoIGFuZCBXZWxmYXJlIHRvIHRoZVxuTWlsaXRhcnkgRGl2aXNpb24ifSwgeyJzdWJfcHJvZ3JhbSI6ICJSZXRpcmVtZW50IEFkbWluaXN0cmF0aW9uIiwgInRleHQiOiAiVGhlIFB1YmxpYyBFbXBsb3llZSBSZXRpcmVtZW50IFN5c3RlbSBvZiBJZGFobyAoUEVSU0kpIGFkbWluaXN0ZXJzIGEgZGVmaW5lZCBiZW5lZml0IHJldGlyZW1lbnQgcGxhbiB0aGF0IGlzXG5tYW5kYXRvcnkgZm9yIGFsbCBlbGlnaWJsZSBzdGF0ZSBlbXBsb3llZXMgYW5kIHNjaG9vbCBkaXN0cmljdCBlbXBsb3llZXMsIGFzIHdlbGwgYXMgZm9yIGVtcGxveWVlcyBvZiBwb2xpdGljYWwgc3ViZGl2aXNpb25zIHdoaWNoIGhhdmUgZWxlY3RlZFxudG8gcGFydGljaXBhdGUuIFBFUlNJIGFsc28gYWRtaW5pc3RlcnMgYSBkZWZpbmVkIGNvbnRyaWJ1dGlvbiBwbGFuIHRoYXQgcHJvdmlkZXMgYW4gb3B0aW9uYWwgNDAxKGspIHBsYW4gdG8gYWxsIG1lbWJlcnMgd2hvIGFyZSBlbGlnaWJsZS5cblN0YXR1dG9yeSBhdXRob3JpdHk6IENoYXB0ZXIgMTMsIFRpdGxlIDU5LCBJZGFobyBDb2RlIn0sIHsic3ViX3Byb2dyYW0iOiAiUG9ydGZvbGlvIEludmVzdG1lbnQiLCAidGV4dCI6ICJUaGUgUG9ydGZvbGlvIEludmVzdG1lbnQgUHJvZ3JhbSBtYW5hZ2VzIFBFUlNJIGFzc2V0cyB0byByZWFsaXplIHNlY3VyZSBsb25nLXRlcm0gcmV0dXJucyBvbiBpbnZlc3RtZW50c1xud2hpbGUgbWluaW1pemluZyByaXNrLCB3aXRoIGEgZ29hbCBvZiBwcm92aWRpbmcgdGhlIGZ1bmRzIG5lY2Vzc2FyeSB0byBtZWV0IHJldGlyZW1lbnQgcGxhbiBvYmxpZ2F0aW9ucy4gU2luY2UgRlkgMTk5NiwgdGhlIGFkbWluaXN0cmF0aXZlXG5jb3N0cyBvZiB0aGUgUG9ydGZvbGlvIEludmVzdG1lbnQgUHJvZ3JhbSBoYXZlIGJlZW4gYXBwcm9wcmlhdGVkIGFubnVhbGx5LCB3aGlsZSB0aGUgcmVtYWluaW5nIGludmVzdG1lbnQgY29zdHMgb3BlcmF0ZSB1bmRlciBhIGNvbnRpbnVvdXNcbmFwcHJvcHJpYXRpb24gcHVyc3VhbnQgdG8gU2VjdGlvbiA1OS0xMzExLCBJZGFobyBDb2RlIn0sIHsic3ViX3Byb2dyYW0iOiAiUG9ydGZvbGlvIEludmVzdG1lbnQiLCAidGV4dCI6ICJUaGUgYWdlbmN5IHByb3ZpZGVzIGNvb3JkaW5hdGlvbiBiZXR3ZWVuIHZhcmlvdXMgc3RhdGUgYW5kIGZlZGVyYWwgYWdlbmNpZXMgcmVzcG9uc2libGUgZm9yIHNwZWNpZXNcbmNvbnNlcnZhdGlvbiB1bmRlciB0aGUgRW5kYW5nZXJlZCBTcGVjaWVzIEFjdC4gVGhlIG9mZmljZSBkZXZlbG9wcyBpbnRlZ3JhdGVkIHN0YXRlIHBvbGljaWVzIHRvd2FyZHMgYXQtcmlzayBzcGVjaWVzIHdpdGggYXBwcm9wcmlhdGVcbm1hbmFnZW1lbnQgcGxhbnMgYW5kIGxhbmRvd25lciBpbmNlbnRpdmVzIGFuZCBwcm90ZWN0aW9ucy4gSW4gMjAyNiwgcHVyc3VhbnQgdG8gSDczNywgdGhlIGFwcHJvcHJpYXRpb24gZm9yIHRoaXMgcHJvZ3JhbSB3YXMgcmVkdWNlZFxuYW5kIHJlbG9jYXRlZCB0byB0aGUgT2ZmaWNlIG9mIFNwZWNpZXMsIE1pbmVyYWxzLCBhbmQgRW5lcmd5IENvb3JkaW5hdGlvbi4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNjctODE4LCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9LCB7InN1Yl9wcm9ncmFtIjogIlN0YXRlIEhpc3RvcmljIFByZXNlcnZhdGlvbiIsICJ0ZXh0IjogIlRoZSBTY2llbmNlLCBUZWNobm9sb2d5LCBFbmdpbmVlcmluZywgYW5kIE1hdGggQWN0aW9uIENlbnRlciAoU1RFTS1BQykgd2FzIGNyZWF0ZWQgdW5kZXIgdGhlIE9mZmljZSBvZiB0aGVcbkdvdmVybm9yIHRocm91Z2ggSDMwMiBvZiAyMDE1IHRvIHByb21vdGUgdGhlIGV4cGFuc2lvbiBvZiBzdHVkZW50IGVuZ2FnZW1lbnQgaW4gU1RFTSBhY3Rpdml0aWVzLiBTVEVNIHB1cnN1ZXMgdGhpcyBtaXNzaW9uIHRocm91Z2ggMSlcbmNvb3JkaW5hdGlvbiBvZiBhbGwgc3RhdGUgZGVwYXJ0bWVudHMgYW5kIGRpdmlzaW9ucyBvbiBTVEVNLXJlbGF0ZWQgYWN0aXZpdGllczsgMikgcHJvbW90aW9uIG9mIFNURU0gdGhyb3VnaCBiZXN0IHByYWN0aWNlcyBpbiBlZHVjYXRpb247IDMpXG5zdXBwb3J0IG9mIGhpZ2gtcXVhbGl0eSBwcm9mZXNzaW9uYWwgZGV2ZWxvcG1lbnQgZm9yIGVkdWNhdG9yczsgNCkgZmFjaWxpdGF0aW9uIG9mIFNURU0tcmVsYXRlZCBjb21wZXRpdGlvbnMsIHNjaWVuY2UgZmFpcnMsIGNhbXBzLCBhbmQgc3R1ZGVudFxucHJvZ3JhbXM7IGFuZCA1KSBlbmdhZ2VtZW50IG9mIHByaXZhdGUgaW5kdXN0cnkgaW4gdGhlIGRldmVsb3BtZW50IGFuZCBtYWkifSwgeyJzdWJfcHJvZ3JhbSI6ICJTdGF0ZSBIaXN0b3JpYyBQcmVzZXJ2YXRpb24iLCAidGV4dCI6ICJUaGUgTGVnaXNsYXR1cmUgcGFzc2VkIEg0NzAgb2YgMjAxNCBhbmQgZXN0YWJsaXNoZWQgYSBmaXZlLW1lbWJlciBXb2xmIERlcHJlZGF0aW9uIENvbnRyb2wgQm9hcmQgaW4gdGhlXG5PZmZpY2Ugb2YgdGhlIEdvdmVybm9yIGFuZCBjcmVhdGVkIGEgc2V0IG9mIG5ldyBjb250aW51b3VzbHkgYXBwcm9wcmlhdGVkIGZ1bmRzIGFuZCBzdWJhY2NvdW50cyB0byBiZSBhZG1pbmlzdGVyZWQgYnkgdGhlIERlcGFydG1lbnQgb2ZcbkFncmljdWx0dXJlLiBINDcwIGVzdGFibGlzaGVkIHRoYXQgZmVlcyBmcm9tIHNwb3J0c21lbiBhbmQgdGhlIGxpdmVzdG9jayBpbmR1c3RyeSBiZSBhbGxvY2F0ZWQgaW50byB0aGUgc3ViYWNjb3VudHMgd2l0aCB0aGUgZXhwZWN0YXRpb24gdGhhdFxudGhlIEdlbmVyYWwgRnVuZCB3b3VsZCBhbHNvIGNvbnRyaWJ1dGUuIFRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgV29sZiBEZXByZWRhdGlvbiBDb250cm9sIEJvYXJkIGlzIHRvIGFsbG9jYXRlIHRoZSBtb25leXMgZm9yIGNvbnRyb2wgYWN0aW9uc1xuYXBwcm92ZWQgYnkgdGhlIElkYWhvIEZpc2ggYW5kIEdhbWUgQ29tbWlzc2lvbi4gVGhlIGJvYXJkIGhhcyBhIGNvb3BlcmF0aXZlIn0sIHsic3ViX3Byb2dyYW0iOiAiU3RhdGUgSGlzdG9yaWMgUHJlc2VydmF0aW9uIiwgInRleHQiOiAiVGhlIHJlcXVpcmVtZW50cywgZ29hbHMsIGFuZCBvYmplY3RpdmVzIG9mIHRoZSBXb3JrZm9yY2UgRGV2ZWxvcG1lbnQgQ291bmNpbCBpbmNsdWRlOiAxKSBpbmNyZWFzZSBwdWJsaWNcbmF3YXJlbmVzcyBvZiBhbmQgYWNjZXNzIHRvIGNhcmVlciBlZHVjYXRpb24gYW5kIHRyYWluaW5nIG9wcG9ydHVuaXRpZXM7IDIpIGltcHJvdmUgdGhlIGVmZmVjdGl2ZW5lc3MsIHF1YWxpdHksIGFuZCBjb29yZGluYXRpb24gb2YgcHJvZ3JhbXNcbmFuZCBzZXJ2aWNlcyBkZXNpZ25lZCB0byBtYWludGFpbiBhIGhpZ2hseSBza2lsbGVkIHdvcmtmb3JjZTsgMykgcHJvdmlkZSBmb3IgdGhlIG1vc3QgZWZmaWNpZW50IHVzZSBvZiBmZWRlcmFsLCBzdGF0ZSwgYW5kIGxvY2FsIHdvcmtmb3JjZVxuZGV2ZWxvcG1lbnQgcmVzb3VyY2VzOyA0KSBmdWxmaWxsIHRoZSByZXF1aXJlbWVudHMgb2YgdGhlIFN0YXRlIFdvcmtmb3JjZSBJbnZlc3RtZW50IEJvYXJkIGFzIHNldCBmb3J0aCBpbiB0aGUgV29ya2ZvcmNlIElubm92YXRpb24gYW5kXG5PcHBvcnR1bml0eSBBY3QgKFdJT0EpOyA1KSBkZXZlbG9wIGFuZCBvdmVyc2VlIHByb2NlZHVyZXMsIGNyaXRlcmlhLCBhbmQgcGVyZm9ybSJ9XSwgImNoaWxkcmVuIjogW3sibmFtZSI6ICJNaWxpdGFyeSBEaXZpc2lvbiIsICJnZiI6IDk2NzA5MDAsICJkZWQiOiAxNTk3MzYwMCwgImZlZCI6IDkxMjAyODAwLCAidG90YWwiOiAxMTY4NDczMDAsICJmZWRfc2hhcmUiOiAwLjc4MDUsICJkZWRfc2hhcmUiOiAwLjEzNjcsICJiaWxscyI6IFsiSDg2NyIsICJIOTA4Il0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiTWlsaXRhcnkgTWFuYWdlbWVudCIsICJ0ZXh0IjogIlRoZSBNaWxpdGFyeSBEaXZpc2lvblx1MjAxOXMgTWlsaXRhcnkgTWFuYWdlbWVudCBQcm9ncmFtIHByb3ZpZGVzIG92ZXJhbGwgbWFuYWdlbWVudCB0aGF0IGVuc3VyZXMgbWlzc2lvblxuY2FwYWJpbGl0eSBhbmQgbWVldHMgdGhlIGdvYWxzIG9mIHRoZSBzdGF0ZSBhbmQgZmVkZXJhbCBnb3Zlcm5tZW50cywgYXMgZXN0YWJsaXNoZWQgYnkgbGF3In0sIHsic3ViX3Byb2dyYW0iOiAiRmVkZXJhbC9TdGF0ZSBBZ3JlZW1lbnRzIiwgInRleHQiOiAiVGhlIHB1cnBvc2Ugb2YgdGhlIE1pbGl0YXJ5IERpdmlzaW9uXHUyMDE5cyBGZWRlcmFsL1N0YXRlIEFncmVlbWVudHMgUHJvZ3JhbSBpcyB0byBvcGVyYXRlIGFuZCBtYWludGFpbiB0aGUgR293ZW5cbkZpZWxkIGNvbXBsZXhlcywgZGVzZXJ0IHRyYWluaW5nIHJhbmdlIGZhY2lsaXRpZXMsIGFuZCBuaW5lIG1haW50ZW5hbmNlIHNob3BzIGxvY2F0ZWQgdGhyb3VnaG91dCB0aGUgc3RhdGUuIFRoaXMgcHJvZ3JhbSBpcyBhIGpvaW50IHZlbnR1cmVcbmJldHdlZW4gdGhlIHN0YXRlIGFuZCB0aGUgZmVkZXJhbCBOYXRpb25hbCBHdWFyZCBCdXJlYXUuIFNlcnZpY2UgY29udHJhY3RzIGFyZSBuZWdvdGlhdGVkIGFubnVhbGx5IGluIHdoaWNoIHRoZSBzdGF0ZSBwcm92aWRlcyBzcGVjaWZpZWRcbnNlcnZpY2VzIHRvIHRoZSBOYXRpb25hbCBHdWFyZCBhbmQgaXMgcmVpbWJ1cnNlZCBieSB0aGUgZmVkZXJhbCBnb3Zlcm5tZW50IGZvciA1MCB0byAxMDAgcGVyY2VudCBvZiB0aGUgY29zdC4gVGhlciJ9LCB7InN1Yl9wcm9ncmFtIjogIk9mZmljZSBvZiBFbWVyZ2VuY3kgTWFuYWdlbWVudCIsICJ0ZXh0IjogIkluIEZZIDIwMTgsIHRoZSBJZGFobyBPZmZpY2Ugb2YgRW1lcmdlbmN5IE1hbmFnZW1lbnQgKElPRU0pIHJlcGxhY2VkIHRoZSBJZGFobyBCdXJlYXUgb2YgSG9tZWxhbmRcblNlY3VyaXR5LiBCZWdpbm5pbmcgaW4gRlkgMjAwNSwgdGhlIEJ1cmVhdSBvZiBIb21lbGFuZCBTZWN1cml0eSBzdXBlcnNlZGVkIGFuZCBjb21iaW5lZCB0aGUgZnVuY3Rpb25zIG9mIHRoZSBCdXJlYXUgb2YgRGlzYXN0ZXIgU2VydmljZXNcbmFuZCB0aGUgQnVyZWF1IG9mIEhhemFyZG91cyBNYXRlcmlhbHMuIFtBdXRob3JpdHk6IEV4ZWMuIE9yZGVyIE5vLiAyMDAzLTExLCBTZWN0aW9ucyAzOS03MTAxIGFuZCA0Ni0xMDAxLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9LCB7InN1Yl9wcm9ncmFtIjogIkVtZXJnZW5jeSBNZWRpY2FsIFNlcnZpY2VzIiwgInRleHQiOiAiUHJvdmlkZXMgYSBzdGF0ZXdpZGUgc3lzdGVtIHRvIHJlc3BvbmQgdG8gY3JpdGljYWwgaWxsbmVzcyBhbmQgaW5qdXJ5IHNpdHVhdGlvbnMuIEgyMDYgKDIwMjUpIGVzdGFibGlzaGVkIHRoZVxuRW1lcmdlbmN5IE1lZGljYWwgU2VydmljZXMgQWN0IHdpdGhpbiBUaXRsZSA0NiwgSWRhaG8gQ29kZSwgYW5kIHRyYW5zZmVycmVkIHRoaXMgcHJvZ3JhbSBmcm9tIHRoZSBEZXBhcnRtZW50IG9mIEhlYWx0aCBhbmQgV2VsZmFyZSB0byB0aGVcbk1pbGl0YXJ5IERpdmlzaW9uIn1dfSwgeyJuYW1lIjogIldvcmtmb3JjZSBEZXZlbG9wbWVudCBDb3VuY2lsIiwgImdmIjogMzA4NDIwMCwgImRlZCI6IDgzNTY3MjAwLCAiZmVkIjogMTAxODQwMCwgInRvdGFsIjogODc2Njk4MDAsICJmZWRfc2hhcmUiOiAwLjAxMTYsICJkZWRfc2hhcmUiOiAwLjk1MzIsICJiaWxscyI6IFsiSDg2NyIsICJIOTQ5Il0sICJub3RlcyI6IFt7InR5cGUiOiAiT1RIRVIgTEVHSVNMQVRJT04iLCAidGV4dCI6ICJINzYxIHJlbW92ZWQgcmVmZXJlbmNlcyB0byB0aGUgU1RFTSBBY3Rpb24gQ2VudGVyIGluIElkYWhvIENvZGUgYW5kIGNoYW5nZWQgdGhlIGNvZGlmaWVkIGF1dGhvcml0eSB0byB0aGVcbldvcmtmb3JjZSBEZXZlbG9wbWVudCBDb3VuY2lsLiBUaGUgZmlzY2FsIGltcGFjdCBvZiB0aGlzIGxlZ2lzbGF0aW9uIHJlc3VsdGVkIGluIGEgbmV0IGRlY3JlYXNlIGluIGFwcHJvcHJpYXRpb24uIFRocm91Z2ggSDk0OSB0aGUgdG90YWxcbmFwcHJvcHJpYXRpb24gdG8gdGhlIFNURU0gQWN0aW9uIENlbnRlciBvZiAkNSw5OTAsNTAwIHdhcyByZWR1Y2VkIGFuZCB0aGUgV29ya2ZvcmNlIERldmVsb3BtZW50IENvdW5jaWwncyBhcHByb3ByaWF0aW9uIHdhcyBpbmNyZWFzZWRcbmJ5ICQzLDAwNyw4MDAuIFRoaXMgaW1wIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiU3RhdGUgSGlzdG9yaWMgUHJlc2VydmF0aW9uIiwgInRleHQiOiAiVGhlIHJlcXVpcmVtZW50cywgZ29hbHMsIGFuZCBvYmplY3RpdmVzIG9mIHRoZSBXb3JrZm9yY2UgRGV2ZWxvcG1lbnQgQ291bmNpbCBpbmNsdWRlOiAxKSBpbmNyZWFzZSBwdWJsaWNcbmF3YXJlbmVzcyBvZiBhbmQgYWNjZXNzIHRvIGNhcmVlciBlZHVjYXRpb24gYW5kIHRyYWluaW5nIG9wcG9ydHVuaXRpZXM7IDIpIGltcHJvdmUgdGhlIGVmZmVjdGl2ZW5lc3MsIHF1YWxpdHksIGFuZCBjb29yZGluYXRpb24gb2YgcHJvZ3JhbXNcbmFuZCBzZXJ2aWNlcyBkZXNpZ25lZCB0byBtYWludGFpbiBhIGhpZ2hseSBza2lsbGVkIHdvcmtmb3JjZTsgMykgcHJvdmlkZSBmb3IgdGhlIG1vc3QgZWZmaWNpZW50IHVzZSBvZiBmZWRlcmFsLCBzdGF0ZSwgYW5kIGxvY2FsIHdvcmtmb3JjZVxuZGV2ZWxvcG1lbnQgcmVzb3VyY2VzOyA0KSBmdWxmaWxsIHRoZSByZXF1aXJlbWVudHMgb2YgdGhlIFN0YXRlIFdvcmtmb3JjZSBJbnZlc3RtZW50IEJvYXJkIGFzIHNldCBmb3J0aCBpbiB0aGUgV29ya2YifV19LCB7Im5hbWUiOiAiT2ZmaWNlIG9mIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgU2VydmljZXMiLCAiZ2YiOiA2Mzc0ODAwLCAiZGVkIjogNDQ4OTI3MDAsICJmZWQiOiA0NTQ0MDAsICJ0b3RhbCI6IDUxNzIxOTAwLCAiZmVkX3NoYXJlIjogMC4wMDg4LCAiZGVkX3NoYXJlIjogMC44NjgsICJiaWxscyI6IFsiSDg2NyIsICJIODcwIl0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiR292ZXJub3JcdTIwMTlzIEVtZXJnZW5jeSIsICJ0ZXh0IjogIlRoZSBPZmZpY2Ugb2YgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBTZXJ2aWNlcyBvcGVyYXRlcyB0aGUgc3RhdGUgbmV0d29yayBhbmQgY29vcmRpbmF0ZWQgaW50ZXJuZXQsIGNvbnNvbGlkYXRlZFxubWVzc2FnaW5nLCB0ZWxlcGhvbmUsIGFuZCBkYXRhIGFuZCB2aWRlbyB0cmFuc21pc3Npb24gc2VydmljZXMuIFRoZSBvZmZpY2UgYWxzbyBjb29yZGluYXRlcyB0aGUgSWRhaG8gVGVjaG5vbG9neSBBdXRob3JpdHkgKElUQSksIHdoaWNoXG5yZXZpZXdzIGFuZCBldmFsdWF0ZXMgdGhlIGluZm9ybWF0aW9uIHRlY2hub2xvZ3kgYW5kIHRlbGVjb21tdW5pY2F0aW9ucyBzeXN0ZW1zIGluIHVzZSBieSBzdGF0ZSBhZ2VuY2llcywgYW5kIHByZXBhcmVzIHN0YXRld2lkZSBzaG9ydFxuYW5kIGxvbmctcmFuZ2UgSVQgYW5kIFRlbGVjb21tdW5pY2F0aW9ucyBQbGFucy4gV2l0aGluIHRoZSBjb250ZXh0IG9mIHRob3NlIHBsYW5zLCB0aGUgSVRBIGVzdGFibGlzaGVzIHN0YXRld2lkZSBJVCBhIn1dfSwgeyJuYW1lIjogIlNwZWNpZXMsIE1pbmVyYWxzLCBhbmQgRW5lcmd5IENvb3JkaW5hdGlvbiIsICJnZiI6IDE5NDMxMDAsICJkZWQiOiAxMTk3NjAwMCwgImZlZCI6IDMzODg4MDAwLCAidG90YWwiOiA0NzgwNzEwMCwgImZlZF9zaGFyZSI6IDAuNzA4OCwgImRlZF9zaGFyZSI6IDAuMjUwNSwgImJpbGxzIjogWyJTMTQxNiJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIk9USEVSIExFR0lTTEFUSU9OIiwgInRleHQiOiAiSDg5OCBtb3ZlZCB0aGUgU3RhdGUgSGlzdG9yaWMgUHJlc2VydmF0aW9uIE9mZmljZSBmcm9tIHRoZSBJZGFobyBTdGF0ZSBIaXN0b3JpY2FsIFNvY2lldHkgdG8gdGhlIE9mZmljZSBvZiBTcGVjaWVzLFxuTWluZXJhbHMsIGFuZCBFbmVyZ3kgQ29vcmRpbmF0aW9uIn0sIHsidHlwZSI6ICJPVEhFUiBMRUdJU0xBVElPTiIsICJ0ZXh0IjogIkg3MzcgbWVyZ2VkIHRoZSBPZmZpY2Ugb2YgU3BlY2llcyBDb25zZXJ2YXRpb24gd2l0aCB0aGUgT2ZmaWNlIG9mIEVuZXJneSBhbmQgTWluZXJhbCBSZXNvdXJjZXMuIFRoZSBuZXdseVxuZm9ybWVkIG9mZmljZSBpcyBjYWxsZWQgdGhlIE9mZmljZSBvZiBTcGVjaWVzLCBNaW5lcmFscywgYW5kIEVuZXJneSBDb29yZGluYXRpb24ifV0sICJkZXNjcmlwdGlvbnMiOiBbXX0sIHsibmFtZSI6ICJEaXZpc2lvbiBvZiBGaW5hbmNpYWwgTWFuYWdlbWVudCIsICJnZiI6IDIyNTU0MDAsICJkZWQiOiA5OTg4MDAsICJmZWQiOiA0MTU4OTcwMCwgInRvdGFsIjogNDQ4NDM5MDAsICJmZWRfc2hhcmUiOiAwLjkyNzQsICJkZWRfc2hhcmUiOiAwLjAyMjMsICJiaWxscyI6IFsiSDg2NyJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkVudGVycHJpc2UgQnVzaW5lc3MgT3BlcmF0aW9ucyIsICJ0ZXh0IjogIlRoZSBEaXZpc2lvbiBvZiBGaW5hbmNpYWwgTWFuYWdlbWVudCB3b3JrcyB3aXRoIHRoZSBHb3Zlcm5vciB0byBwcm92aWRlIGRpcmVjdGlvbiBhbmQgbGVhZGVyc2hpcCBpbiBtYW5hZ2luZ1xudGhlIGZpbmFuY2lhbCBhbmQgcG9saWN5IGlzc3VlcyBvZiBzdGF0ZSBnb3Zlcm5tZW50OyBwcm9kdWNlcyBhIGJhbGFuY2VkIGJ1ZGdldCByZWNvbW1lbmRhdGlvbiB0byB0aGUgTGVnaXNsYXR1cmUgdGhhdCBhZGRyZXNzZXMgdGhlIG5lZWRzXG5vZiB0aGUgc3RhdGU7IHByb2plY3RzIGFuZCBtb25pdG9ycyBzdGF0ZSByZXZlbnVlczsgYW5kIGNvb3JkaW5hdGVzIHN0YXRlIGZpbmFuY2lhbCBwcmFjdGljZXMuIFRoZSBkaXZpc2lvbiBjb25zaXN0cyBvZiBmb3VyIG1haW4gYWRtaW5pc3RyYXRpdmVcbnVuaXRzOiBCdWRnZXQsIEVjb25vbWljIEFuYWx5c2lzLCBGaXNjYWwgYW5kIE9wZXJhdGlvbnMsIGFuZCBSZWd1bGF0b3J5IGFuZCBMZWdpc2xhdGl2ZSBBZmZhaXJzLCB3aGljaCBpbmNsIn1dfSwgeyJuYW1lIjogIlN0YXRlIExpcXVvciBEaXZpc2lvbiIsICJnZiI6IDAsICJkZWQiOiAzMzI3MDkwMCwgImZlZCI6IDAsICJ0b3RhbCI6IDMzMjcwOTAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMS4wLCAiYmlsbHMiOiBbIkg4NjciLCAiSDkyNCJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkdvdmVybm9yXHUyMDE5cyBFbWVyZ2VuY3kiLCAidGV4dCI6ICJUaGUgU3RhdGUgTGlxdW9yIERpdmlzaW9uIHJlZ3VsYXRlcyBhbmQgY29udHJvbHMgdGhlIHRyYWZmaWMgYW5kIHNhbGUgb2YgYWxjb2hvbGljIGxpcXVvci4gW1N0YXR1dG9yeSBhdXRob3JpdHk6XG5DaGFwdGVyIDIsIFRpdGxlIDIzLCBJZGFobyBDb2RlLl0ifV19LCB7Im5hbWUiOiAiRGl2aXNpb24gb2YgSHVtYW4gUmVzb3VyY2VzIiwgImdmIjogMCwgImRlZCI6IDE5NjIwOTAwLCAiZmVkIjogMCwgInRvdGFsIjogMTk2MjA5MDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAxLjAsICJiaWxscyI6IFsiSDg2NyJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkdvdmVybm9yXHUyMDE5cyBFbWVyZ2VuY3kiLCAidGV4dCI6ICJUaGUgRGl2aXNpb24gb2YgSHVtYW4gUmVzb3VyY2VzIChESFIpIGlzIG9yZ2FuaXplZCB3aXRoaW4gdGhlIE9mZmljZSBvZiB0aGUgR292ZXJub3IuIFRoZSBkaXZpc2lvbiBpc1xucmVzcG9uc2libGUgZm9yIGVtcGxveWVlIHJlY3J1aXRtZW50LCBqb2IgY2xhc3NpZmljYXRpb24sIGVtcGxveWVlIGFzc2Vzc21lbnQgYW5kIHNlbGVjdGlvbiBwcm9jZXNzZXMsIGNvbXBlbnNhdGlvbiBpc3N1ZXMsIHdvcmtmb3JjZVxucGxhbm5pbmcgYW5kIGRldmVsb3BtZW50LCBlbXBsb3llZSByZWxhdGlvbnMsIGFuZCBwcm92aWRpbmcgaHVtYW4gcmVzb3VyY2UgcG9saWN5IHRvIGNvbXBseSB3aXRoIGFwcGxpY2FibGUgbGF3cyBhbmQgcmVndWxhdGlvbnMuIE1vc3Qgb2ZcbnRoZSBmb3JtZXIgcG93ZXJzIGFuZCBkdXRpZXMgb2YgdGhlIFBlcnNvbm5lbCBDb21taXNzaW9uIHdlcmUgc3RhdHV0b3JpbHkgdHJhbnNmZXJyZWQgdG8gdGhlIGFkbWluaXN0cmF0b3Igb2YgdGhlIERpdmlzaW9uIG9mICJ9XX0sIHsibmFtZSI6ICJDb21taXNzaW9uIG9uIEFnaW5nIiwgImdmIjogNjMxOTcwMCwgImRlZCI6IDAsICJmZWQiOiAxMDUyNDcwMCwgInRvdGFsIjogMTY4NDQ0MDAsICJmZWRfc2hhcmUiOiAwLjYyNDgsICJkZWRfc2hhcmUiOiAwLjAsICJiaWxscyI6IFsiSDg2NyIsICJIOTMzIl0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiRW50ZXJwcmlzZSBCdXNpbmVzcyBPcGVyYXRpb25zIiwgInRleHQiOiAiVGhlIENvbW1pc3Npb24gb24gQWdpbmcgYXNzaXN0cyBvbGRlciBJZGFob2FucyB0byBjb250aW51ZSBsaXZpbmcgaW5kZXBlbmRlbnRseSBpbiB0aGVpciBvd24gaG9tZXMgYnlcbnByb3ZpZGluZyB0aGVtIGFuZCB0aGVpciBjYXJlZ2l2ZXJzIHdpdGggYSB2YXJpZXR5IG9mIHByb2dyYW1zIGFuZCBzZXJ2aWNlcy4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNjctNTAwMSwgSWRhaG8gQ29kZV0ifV19LCB7Im5hbWUiOiAiUHVibGljIEVtcGxveWVlIFJldGlyZW1lbnQgU3lzdGVtIiwgImdmIjogMCwgImRlZCI6IDEzNjc1NzAwLCAiZmVkIjogMCwgInRvdGFsIjogMTM2NzU3MDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAxLjAsICJiaWxscyI6IFsiSDg2NyIsICJIODY4Il0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiUmV0aXJlbWVudCBBZG1pbmlzdHJhdGlvbiIsICJ0ZXh0IjogIlRoZSBQdWJsaWMgRW1wbG95ZWUgUmV0aXJlbWVudCBTeXN0ZW0gb2YgSWRhaG8gKFBFUlNJKSBhZG1pbmlzdGVycyBhIGRlZmluZWQgYmVuZWZpdCByZXRpcmVtZW50IHBsYW4gdGhhdCBpc1xubWFuZGF0b3J5IGZvciBhbGwgZWxpZ2libGUgc3RhdGUgZW1wbG95ZWVzIGFuZCBzY2hvb2wgZGlzdHJpY3QgZW1wbG95ZWVzLCBhcyB3ZWxsIGFzIGZvciBlbXBsb3llZXMgb2YgcG9saXRpY2FsIHN1YmRpdmlzaW9ucyB3aGljaCBoYXZlIGVsZWN0ZWRcbnRvIHBhcnRpY2lwYXRlLiBQRVJTSSBhbHNvIGFkbWluaXN0ZXJzIGEgZGVmaW5lZCBjb250cmlidXRpb24gcGxhbiB0aGF0IHByb3ZpZGVzIGFuIG9wdGlvbmFsIDQwMShrKSBwbGFuIHRvIGFsbCBtZW1iZXJzIHdobyBhcmUgZWxpZ2libGUuXG5TdGF0dXRvcnkgYXV0aG9yaXR5OiBDaGFwdGVyIDEzLCBUaXRsZSA1OSwgSWRhaG8gQ29kZSJ9LCB7InN1Yl9wcm9ncmFtIjogIlBvcnRmb2xpbyBJbnZlc3RtZW50IiwgInRleHQiOiAiVGhlIFBvcnRmb2xpbyBJbnZlc3RtZW50IFByb2dyYW0gbWFuYWdlcyBQRVJTSSBhc3NldHMgdG8gcmVhbGl6ZSBzZWN1cmUgbG9uZy10ZXJtIHJldHVybnMgb24gaW52ZXN0bWVudHNcbndoaWxlIG1pbmltaXppbmcgcmlzaywgd2l0aCBhIGdvYWwgb2YgcHJvdmlkaW5nIHRoZSBmdW5kcyBuZWNlc3NhcnkgdG8gbWVldCByZXRpcmVtZW50IHBsYW4gb2JsaWdhdGlvbnMuIFNpbmNlIEZZIDE5OTYsIHRoZSBhZG1pbmlzdHJhdGl2ZVxuY29zdHMgb2YgdGhlIFBvcnRmb2xpbyBJbnZlc3RtZW50IFByb2dyYW0gaGF2ZSBiZWVuIGFwcHJvcHJpYXRlZCBhbm51YWxseSwgd2hpbGUgdGhlIHJlbWFpbmluZyBpbnZlc3RtZW50IGNvc3RzIG9wZXJhdGUgdW5kZXIgYSBjb250aW51b3VzXG5hcHByb3ByaWF0aW9uIHB1cnN1YW50IHRvIFNlY3Rpb24gNTktMTMxMSwgSWRhaG8gQ29kZSJ9XX0sIHsibmFtZSI6ICJPZmZpY2Ugb2YgRHJ1ZyBQb2xpY3kiLCAiZ2YiOiAzODI3MDAsICJkZWQiOiA1MDI0NTAwLCAiZmVkIjogNDUzNzkwMCwgInRvdGFsIjogOTk0NTEwMCwgImZlZF9zaGFyZSI6IDAuNDU2MywgImRlZF9zaGFyZSI6IDAuNTA1MiwgImJpbGxzIjogWyJIODY3IiwgIkg5NDIiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlNlY3Rpb24gOSBvZiBIOTQyIHJlcXVpcmVzIE9EUCB0byB1c2UgdGhlIHN0YXRlIHByb2N1cmVtZW50IHByb2Nlc3MgdG8gaWRlbnRpZnkgYVxuc3VpdGFibGUgdmVuZG9yIHRvIGNvbmR1Y3QgdGhlIHN0YXRld2lkZSBkcnVnIGF3YXJlbmVzcyBjYW1wYWlnbi4gVGhlIEpvaW50IE1pbGxlbm5pdW0gRnVuZCBDb21taXR0ZWUgc2hhbGwgYmUgcHJvdmlkZWQgYW4gb3Bwb3J0dW5pdHlcbnRvIHJldmlldyB0aGUgcHJvcG9zYWxzIGFuZCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgc2VsZWN0aW9uIHByb2Nlc3MuIFRoaXMgc2VjdGlvbiBhbHNvIHJlcXVpcmVzIHNlbWktYW5udWFsIHJlcG9ydGluZyBvbiB0aGUgdXNlIG9mIGZ1bmRzLCBhc1xud2VsbCBhcyBhIGZ1bGwgcmVwb3J0IG9mIHRoZSBzdGF0ZXdpZGUgbWUifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJFbnRlcnByaXNlIEJ1c2luZXNzIE9wZXJhdGlvbnMiLCAidGV4dCI6ICJUaGUgT2ZmaWNlIG9mIERydWcgUG9saWN5IChPRFApIHdhcyBlc3RhYmxpc2hlZCBpbiAyMDA3IHRvIG92ZXJzZWUgYW5kIGV4ZWN1dGUgdGhlIGNvb3JkaW5hdGlvbiBvZiBhbGwgZHJ1ZyBhbmRcbnN1YnN0YW5jZSBhYnVzZSBwcm9ncmFtcyB3aXRoaW4gdGhlIHN0YXRlLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiA2Ny04MjEsIElkYWhvIENvZGUsIGV0IHNlcS5dIn1dfSwgeyJuYW1lIjogIkNvbW1pc3Npb24gZm9yIHRoZSBCbGluZCBhbmQgVmlzdWFsbHkgSW1wYWlyZWQiLCAiZ2YiOiAxNzM2OTAwLCAiZGVkIjogNDc4NjAwLCAiZmVkIjogNDE4NTAwMCwgInRvdGFsIjogNjQwMDUwMCwgImZlZF9zaGFyZSI6IDAuNjUzOSwgImRlZF9zaGFyZSI6IDAuMDc0OCwgImJpbGxzIjogWyJIODY3IiwgIkg4NjkiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIkg4NjkgaW5jbHVkZWQgb25lIHNlY3Rpb24gb2YgY29uZGl0aW9ucywgbGltaXRhdGlvbnMsIGFuZCByZXN0cmljdGlvbnMuIFNlY3Rpb24gMlxuZGlyZWN0ZWQgdGhlIGNvbW1pc3Npb24gdG8gcHJpb3JpdGl6ZSBzaWdodCByZXN0b3JhdGlvbiBwcm9jZWR1cmVzIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiRW50ZXJwcmlzZSBCdXNpbmVzcyBPcGVyYXRpb25zIiwgInRleHQiOiAiVGhlIElkYWhvIENvbW1pc3Npb24gZm9yIHRoZSBCbGluZCBhbmQgVmlzdWFsbHkgSW1wYWlyZWQgcHJvbW90ZXMgY2hvaWNlcyBhbmQgZW1wb3dlcm1lbnQgZm9yIHBlb3BsZSB3aG9cbmFyZSBsZWdhbGx5IGJsaW5kLCBmdW5jdGlvbmFsbHkgYmxpbmQsIG9yIGluIGRhbmdlciBvZiBsZWdhbCBibGluZG5lc3M7IGFuZCBhc3Npc3RzIHRoZW0gaW4gYWNoaWV2aW5nIGVtcGxveW1lbnQsIGluZGVwZW5kZW5jZSwgYW5kIGludGVncmF0aW9uXG5pbnRvIHRoZSB3b3JrcGxhY2UgYW5kIHRoZSBjb21tdW5pdHkuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDY3LTU0MDEsIElkYWhvIENvZGUsIGV0IHNlcS5dIn1dfSwgeyJuYW1lIjogIkV4ZWN1dGl2ZSBPZmZpY2Ugb2YgdGhlIEdvdmVybm9yIiwgImdmIjogMjY2NzUwMCwgImRlZCI6IDIwMDAwMDAsICJmZWQiOiAwLCAidG90YWwiOiA0NjY3NTAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMC40Mjg1LCAiYmlsbHMiOiBbIkg4NjYiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJCVURHRVQgTEFXIEVYRU1QVElPTlMiLCAidGV4dCI6ICJUaGUgRXhlY3V0aXZlIE9mZmljZSBvZiB0aGUgR292ZXJub3IgcmVjZWl2ZWQgc3BlY2lmaWMgbGVnaXNsYXRpdmUgYXV0aG9yaXphdGlvbiBpbiBTZWN0aW9uIDMgb2YgSDg2NiB0aGF0XG5yZW1vdmVkIGFsbCByZXN0cmljdGlvbnMgbGltaXRpbmcgdGhlIHRyYW5zZmVyIG9mIG1vbmV5cyBhbW9uZyBwZXJzb25uZWwgY29zdHMsIG9wZXJhdGluZyBleHBlbmRpdHVyZXMsIGNhcGl0YWwgb3V0bGF5LCBhbmQgdHJ1c3RlZSBhbmRcbmJlbmVmaXQgcGF5bWVudHMuIFRoZSBiaWxsIGFsc28gZXhlbXB0ZWQgdGhlIG9mZmljZSBmcm9tIHRoZSAxMCUgdHJhbnNmZXIgbGltaXRhdGlvbiBiZXR3ZWVuIGJ1ZGdldGVkIHByb2dyYW1zIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiQWRtaW5pc3RyYXRpb24gLSBHb3Zlcm5vcidzIE9mZmljZSIsICJ0ZXh0IjogIlRoaXMgcHJvZ3JhbSBleGVyY2lzZXMgdGhlIHBvd2VycyBhbmQgZHV0aWVzIG9mIHRoZSBDaGllZiBFeGVjdXRpdmUgb2YgdGhlIHN0YXRlIG9mIElkYWhvIGluIGFjY29yZGFuY2Ugd2l0aCB0aGVcbklkYWhvIENvbnN0aXR1dGlvbiBhbmQgdGhlIGxhd3Mgb2YgdGhlIHN0YXRlIn0sIHsic3ViX3Byb2dyYW0iOiAiQWN0aW5nIEdvdmVybm9yIFBheSIsICJ0ZXh0IjogIkFydGljbGUgNCwgU2VjdGlvbnMgMTIgYW5kIDE0IG9mIHRoZSBJZGFobyBDb25zdGl0dXRpb24gZGVsaW5lYXRlIHRoZSBzdWNjZXNzaW9uIG9mIHBvd2VyLiBJbiB0aGUgZXZlbnQgdGhlXG5Hb3Zlcm5vciBpcyBvdXQgb2YgdGhlIHN0YXRlLCB0aGUgTGlldXRlbmFudCBHb3Zlcm5vciBiZWNvbWVzIGFjdGluZyBHb3Zlcm5vci4gSW4gdGhlIGFic2VuY2Ugb2YgdGhlIExpZXV0ZW5hbnQgR292ZXJub3IsIHRoZSBQcmVzaWRlbnRcblBybyBUZW1wb3JlIGlzIHRvIGFjdCBhcyBHb3Zlcm5vci4gSW4gdGhlIGFic2VuY2Ugb2YgdGhlIFByZXNpZGVudCBQcm8gVGVtcG9yZSwgdGhlIFNwZWFrZXIgb2YgdGhlIEhvdXNlIGlzIHRvIGFjdCBhcyBHb3Zlcm5vci4gUHVyc3VhbnRcbnRvIFNlY3Rpb24gNjctODA5KDIpLCBJZGFobyBDb2RlLCB0aGUgb2ZmaWNpYWwgYWN0aW5nIGFzIEdvdmVybm9yIGlzIGVudGl0bGVkIHRvIGFkZGl0aW9uYWwgY29tcGVuc2F0aW9uIGNhbGN1bGF0ZWQgYXMgIn0sIHsic3ViX3Byb2dyYW0iOiAiRXhwZW5zZSBBbGxvd2FuY2UiLCAidGV4dCI6ICJTZWN0aW9uIDY3LTgwOChkKSwgSWRhaG8gQ29kZSwgcHJvdmlkZXMgdGhhdCBjZXJ0YWluIG1vbmV5cyBtYXkgYmUgdXNlZCBhdCB0aGUgR292ZXJub3IncyBkaXNjcmV0aW9uIHRvIGFzc2lzdFxuaW4gZGVmcmF5aW5nIGV4cGVuc2VzIHJlbGF0aW5nIHRvIG9yIHJlc3VsdGluZyBmcm9tIHRoZSBkaXNjaGFyZ2Ugb2Ygb2ZmaWNpYWwgZHV0aWVzIn0sIHsic3ViX3Byb2dyYW0iOiAiR292ZXJub3JcdTIwMTlzIEVtZXJnZW5jeSIsICJ0ZXh0IjogIkZ1bmRzIGFyZSBhdmFpbGFibGUgdG8gYmUgZXhwZW5kZWQgYnkgdGhlIEdvdmVybm9yIHRvIHBheSBuZWNlc3NhcnkgY29zdHMgYXNzb2NpYXRlZCB3aXRoIGFueSBlbWVyZ2VuY3ksXG53aGljaCB3YXMgbm90IGZvcmVzZWVuIG9yIHJlYXNvbmFibHkgZm9yZXNlZWFibGUgYnkgdGhlIExlZ2lzbGF0dXJlLCBhbmQgd2hpY2ggbWF5IGFyaXNlIGluIGNhcnJ5aW5nIG9uIHRoZSBlc3NlbnRpYWwgZnVuY3Rpb25zIG9mIHN0YXRlXG5nb3Zlcm5tZW50IGFuZCBpbiBwcm90ZWN0aW5nIHRoZSBpbnRlcmVzdHMgb2YgdGhlIHN0YXRlIChTZWN0aW9uIDU3LTE2MDEsIElkYWhvIENvZGUpIn1dfSwgeyJuYW1lIjogIkNvbW1pc3Npb24gb24gdGhlIEFydHMiLCAiZ2YiOiA5MjYxMDAsICJkZWQiOiAxMDYzMDAsICJmZWQiOiAxMjQ4ODAwLCAidG90YWwiOiAyMjgxMjAwLCAiZmVkX3NoYXJlIjogMC41NDc0LCAiZGVkX3NoYXJlIjogMC4wNDY2LCAiYmlsbHMiOiBbIkg4NjciXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJFbnRlcnByaXNlIEJ1c2luZXNzIE9wZXJhdGlvbnMiLCAidGV4dCI6ICJUaGUgQ29tbWlzc2lvbiBvbiB0aGUgQXJ0cyBhZHZvY2F0ZXMgYW5kIGVuY291cmFnZXMgdGhlIGRldmVsb3BtZW50IG9mIGFydHMgaW4gSWRhaG8uIEl0IGlzIGEgc2VydmljZSBhbmRcbmFkdm9jYWN5IG9yZ2FuaXphdGlvbiB0aGF0IHByb3ZpZGVzIGluZm9ybWF0aW9uLCB0ZWNobmljYWwgYXNzaXN0YW5jZSwgYXdhcmRzLCBhbmQgZ3JhbnRzIHRvIGluZGl2aWR1YWxzIGFuZCBsb2NhbCBhcnRzIG9yZ2FuaXphdGlvbnMuXG5bU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiA2Ny01NjAxLCBJZGFobyBDb2RlXSJ9XX0sIHsibmFtZSI6ICJXb2xmIERlcHJlZGF0aW9uIENvbnRyb2wgQm9hcmQiLCAiZ2YiOiAzNzI0MDAsICJkZWQiOiAwLCAiZmVkIjogMCwgInRvdGFsIjogMzcyNDAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMC4wLCAiYmlsbHMiOiBbIkg4NjciXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJTdGF0ZSBIaXN0b3JpYyBQcmVzZXJ2YXRpb24iLCAidGV4dCI6ICJUaGUgTGVnaXNsYXR1cmUgcGFzc2VkIEg0NzAgb2YgMjAxNCBhbmQgZXN0YWJsaXNoZWQgYSBmaXZlLW1lbWJlciBXb2xmIERlcHJlZGF0aW9uIENvbnRyb2wgQm9hcmQgaW4gdGhlXG5PZmZpY2Ugb2YgdGhlIEdvdmVybm9yIGFuZCBjcmVhdGVkIGEgc2V0IG9mIG5ldyBjb250aW51b3VzbHkgYXBwcm9wcmlhdGVkIGZ1bmRzIGFuZCBzdWJhY2NvdW50cyB0byBiZSBhZG1pbmlzdGVyZWQgYnkgdGhlIERlcGFydG1lbnQgb2ZcbkFncmljdWx0dXJlLiBINDcwIGVzdGFibGlzaGVkIHRoYXQgZmVlcyBmcm9tIHNwb3J0c21lbiBhbmQgdGhlIGxpdmVzdG9jayBpbmR1c3RyeSBiZSBhbGxvY2F0ZWQgaW50byB0aGUgc3ViYWNjb3VudHMgd2l0aCB0aGUgZXhwZWN0YXRpb24gdGhhdFxudGhlIEdlbmVyYWwgRnVuZCB3b3VsZCBhbHNvIGNvbnRyaWJ1dGUuIFRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgV29sZiBEZXByZWRhdGlvbiBDb250cm9sIEJvYXJkIGlzIHRvIGFsbG9jYXRlIHRoZSBtbyJ9XX0sIHsibmFtZSI6ICJTVEVNIEFjdGlvbiBDZW50ZXIiLCAiZ2YiOiAwLCAiZGVkIjogMCwgImZlZCI6IDAsICJ0b3RhbCI6IDAsICJmZWRfc2hhcmUiOiAwLCAiZGVkX3NoYXJlIjogMCwgImJpbGxzIjogW10sICJub3RlcyI6IFt7InR5cGUiOiAiT1RIRVIgTEVHSVNMQVRJT04iLCAidGV4dCI6ICJINzYxIHJlbW92ZWQgcmVmZXJlbmNlcyB0byB0aGUgU1RFTSBBY3Rpb24gQ2VudGVyIGluIElkYWhvIENvZGUgYW5kIGNoYW5nZWQgdGhlIGNvZGlmaWVkIGF1dGhvcml0eSB0byB0aGVcbldvcmtmb3JjZSBEZXZlbG9wbWVudCBDb3VuY2lsLiBUaGUgZmlzY2FsIGltcGFjdCBvZiB0aGlzIGxlZ2lzbGF0aW9uIHJlc3VsdGVkIGluIGEgbmV0IGRlY3JlYXNlIGluIGFwcHJvcHJpYXRpb24uIFRocm91Z2ggSDk0OSwgdGhlIHRvdGFsXG5hcHByb3ByaWF0aW9uIHRvIHRoZSBTVEVNIEFjdGlvbiBDZW50ZXIgb2YgJDUsOTkwLDUwMCB3YXMgcmVkdWNlZCBhbmQgdGhlIFdvcmtmb3JjZSBEZXZlbG9wbWVudCBDb3VuY2lsJ3MgYXBwcm9wcmlhdGlvbiB3YXNcbmluY3JlYXNlZCBieSAkMywwMDcsODAwLiBUaGlzIGltIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiU3RhdGUgSGlzdG9yaWMgUHJlc2VydmF0aW9uIiwgInRleHQiOiAiVGhlIFNjaWVuY2UsIFRlY2hub2xvZ3ksIEVuZ2luZWVyaW5nLCBhbmQgTWF0aCBBY3Rpb24gQ2VudGVyIChTVEVNLUFDKSB3YXMgY3JlYXRlZCB1bmRlciB0aGUgT2ZmaWNlIG9mIHRoZVxuR292ZXJub3IgdGhyb3VnaCBIMzAyIG9mIDIwMTUgdG8gcHJvbW90ZSB0aGUgZXhwYW5zaW9uIG9mIHN0dWRlbnQgZW5nYWdlbWVudCBpbiBTVEVNIGFjdGl2aXRpZXMuIFNURU0gcHVyc3VlcyB0aGlzIG1pc3Npb24gdGhyb3VnaCAxKVxuY29vcmRpbmF0aW9uIG9mIGFsbCBzdGF0ZSBkZXBhcnRtZW50cyBhbmQgZGl2aXNpb25zIG9uIFNURU0tcmVsYXRlZCBhY3Rpdml0aWVzOyAyKSBwcm9tb3Rpb24gb2YgU1RFTSB0aHJvdWdoIGJlc3QgcHJhY3RpY2VzIGluIGVkdWNhdGlvbjsgMylcbnN1cHBvcnQgb2YgaGlnaC1xdWFsaXR5IHByb2Zlc3Npb25hbCBkZXZlbG9wbWVudCBmb3IgZWR1Y2F0b3JzOyA0KSBmYWNpbGl0YXRpb24gb2YgU1RFTS1yZWxhdGVkIGNvbXBldGl0aW9ucywgc2NpZW5jZSAifV19XX0sIHsiYXJlYSI6ICJHZW5lcmFsIEdvdmVybm1lbnQiLCAiYWdlbmN5IjogIkxlZ2lzbGF0aXZlIEJyYW5jaCIsICJmdHAiOiA4Ni4wLCAiZ2YiOiAxODU0NDMwMCwgImRlZCI6IDMwNTU4MDAsICJmZWQiOiAwLCAidG90YWwiOiAyMTYwMDEwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuMTQxNSwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiSDg0OCJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFtdLCAiY2hpbGRyZW4iOiBbeyJuYW1lIjogIkxlZ2lzbGF0aXZlIFNlcnZpY2VzIE9mZmljZSIsICJnZiI6IDg5NDM2MDAsICJkZWQiOiAzMDU1ODAwLCAiZmVkIjogMCwgInRvdGFsIjogMTE5OTk0MDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAwLjI1NDcsICJiaWxscyI6IFtdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkJVREdFVCBMQVcgRVhFTVBUSU9OUyIsICJ0ZXh0IjogIlRoaXMgYWdlbmN5IHJlY2VpdmVkIHNwZWNpZmljIGxlZ2lzbGF0aXZlIGF1dGhvcml6YXRpb24gaW4gSDg0OCB0aGF0IHJlbW92ZXMgYWxsIHJlc3RyaWN0aW9ucyBsaW1pdGluZyB0aGVcbnRyYW5zZmVyIG9mIG1vbmV5cyBhbW9uZyBwZXJzb25uZWwgY29zdHMsIGFuZCBvcGVyYXRpbmcgZXhwZW5kaXR1cmVzLiBUaGUgYmlsbCBhbHNvIGV4ZW1wdGVkIHRoZSBhZ2VuY3kgZnJvbSB0aGUgMTAlIHRyYW5zZmVyIGxpbWl0YXRpb25cbmJldHdlZW4gdGhlIExlZ2lzbGF0aXZlIFRlY2hub2xvZ3kgYW5kIHRoZSBMZWdpc2xhdGl2ZSBTZXJ2aWNlcyBPZmZpY2UifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJTdGF0ZSBIaXN0b3JpYyBQcmVzZXJ2YXRpb24iLCAidGV4dCI6ICJUaGUgTGVnaXNsYXRpdmUgU2VydmljZXMgT2ZmaWNlIChMU08pIHByb3ZpZGVzIHByb2Zlc3Npb25hbCBzdGFmZiBzdXBwb3J0IHRvIHRoZSBMZWdpc2xhdHVyZSBpbiB0aGUgYXJlYXMgb2ZcbnJlc2VhcmNoIGFuZCBsZWdpc2xhdGlvbjsgYnVkZ2V0IGFuZCBwb2xpY3kgYW5hbHlzaXM7IHJldmVudWUgYXNzZXNzbWVudCwgbGVnaXNsYXRpdmUgYXVkaXRzOyBpbmZvcm1hdGlvbiB0ZWNobm9sb2d5OyBhbmQgYWRtaW5pc3RyYXRpb24ifV19LCB7Im5hbWUiOiAiTGVnaXNsYXR1cmUiLCAiZ2YiOiA4NTExMDAwLCAiZGVkIjogMCwgImZlZCI6IDAsICJ0b3RhbCI6IDg1MTEwMDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAwLjAsICJiaWxscyI6IFsiSDg0OCJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIlN0YXRlIEhpc3RvcmljIFByZXNlcnZhdGlvbiIsICJ0ZXh0IjogIlRoZSBJZGFobyBMZWdpc2xhdHVyZSBpcyBjb21wb3NlZCBvZiAzNSBzZW5hdG9ycyBhbmQgNzAgcmVwcmVzZW50YXRpdmVzIGZyb20gSWRhaG8ncyAzNSBsZWdpc2xhdGl2ZSBkaXN0cmljdHMuXG5UaGUgbWVtYmVyc2hpcCBpcyBlbGVjdGVkIGZvciB0d28teWVhciB0ZXJtcyBhbmQgbWVldHMgYW5udWFsbHkifV19LCB7Im5hbWUiOiAiT2ZmaWNlIG9mIFBlcmZvcm1hbmNlIEV2YWx1YXRpb25zIiwgImdmIjogMTA4OTcwMCwgImRlZCI6IDAsICJmZWQiOiAwLCAidG90YWwiOiAxMDg5NzAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMC4wLCAiYmlsbHMiOiBbXSwgIm5vdGVzIjogW3sidHlwZSI6ICJCVURHRVQgTEFXIEVYRU1QVElPTlMiLCAidGV4dCI6ICJUaGlzIGFnZW5jeSByZWNlaXZlZCBzcGVjaWZpYyBsZWdpc2xhdGl2ZSBhdXRob3JpemF0aW9uIGluIEg4NDggdGhhdCByZW1vdmVzIGFsbCByZXN0cmljdGlvbnMgbGltaXRpbmcgdGhlXG50cmFuc2ZlciBvZiBtb25leXMgYW1vbmcgcGVyc29ubmVsIGNvc3RzLCBhbmQgb3BlcmF0aW5nIGV4cGVuZGl0dXJlcyJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIlN0YXRlIEhpc3RvcmljIFByZXNlcnZhdGlvbiIsICJ0ZXh0IjogIlRoZSBPZmZpY2Ugb2YgUGVyZm9ybWFuY2UgRXZhbHVhdGlvbnMgcHJvdmlkZXMgcHJvZmVzc2lvbmFsIGFuZCBpbmRlcGVuZGVudCBhc3Nlc3NtZW50IGFuZCBldmFsdWF0aW9uIG9mXG5zdGF0ZSBhZ2VuY2llcywgcHJvZ3JhbXMsIGZ1bmN0aW9ucywgYW5kIGFjdGl2aXRpZXMgdW5kZXIgdGhlIGRpcmVjdGlvbiBvZiB0aGUgSm9pbnQgTGVnaXNsYXRpdmUgT3ZlcnNpZ2h0IENvbW1pdHRlZSJ9XX1dfSwgeyJhcmVhIjogIkdlbmVyYWwgR292ZXJubWVudCIsICJhZ2VuY3kiOiAiTGlldXRlbmFudCBHb3Zlcm5vciIsICJmdHAiOiAzLjAsICJnZiI6IDMwMjUwMCwgImRlZCI6IDAsICJmZWQiOiAwLCAidG90YWwiOiAzMDI1MDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAwLjAsICJhbWVuZHNfY29kZSI6IGZhbHNlLCAiYmlsbHMiOiBbIkg4NjYiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJCVURHRVQgTEFXIEVYRU1QVElPTlMiLCAidGV4dCI6ICJTZWN0aW9uIDQgb2YgSDg2NiByZW1vdmVkIGFsbCByZXN0cmljdGlvbnMgbGltaXRpbmcgdGhlIHRyYW5zZmVyIG9mIG1vbmV5cyBhbW9uZyBwZXJzb25uZWwgY29zdHMsIG9wZXJhdGluZ1xuZXhwZW5kaXR1cmVzLCBjYXBpdGFsIG91dGxheSwgYW5kIHRydXN0ZWUgYW5kIGJlbmVmaXQgcGF5bWVudHMifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJTdGF0ZSBIaXN0b3JpYyBQcmVzZXJ2YXRpb24iLCAidGV4dCI6ICJUaGUgTGlldXRlbmFudCBHb3Zlcm5vciBjYXJyaWVzIG91dCB2YXJpb3VzIGNvbnN0aXR1dGlvbmFsIGFuZCBzdGF0dXRvcnkgcmVzcG9uc2liaWxpdGllcyBhcyBhIHN0YXRld2lkZSBlbGVjdGVkXG5vZmZpY2lhbCBvZiB0aGUgRXhlY3V0aXZlIEJyYW5jaCBhbmQgYXMgcHJlc2lkaW5nIG9mZmljZXIgb2YgdGhlIElkYWhvIFNlbmF0ZS4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNjctODA5LCBJZGFobyBDb2RlXSJ9XX0sIHsiYXJlYSI6ICJHZW5lcmFsIEdvdmVybm1lbnQiLCAiYWdlbmN5IjogIkRlcGFydG1lbnQgb2YgUmV2ZW51ZSBhbmQgVGF4YXRpb24iLCAiZnRwIjogNDQ5LjAsICJnZiI6IDQ1Nzg5NTAwLCAiZGVkIjogMTEyNjY1MDAsICJmZWQiOiAwLCAidG90YWwiOiA1NzA1NjAwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuMTk3NSwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiSDg2NyIsICJIODcxIl0sICJub3RlcyI6IFt7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJIODcxIGluY2x1ZGVkIG9uZSBzZWN0aW9uIG9mIGNvbmRpdGlvbnMsIGxpbWl0YXRpb25zLCBhbmQgcmVzdHJpY3Rpb25zLiBTZWN0aW9uIDIgb2Zcbkg4NzEgcmVxdWlyZWQgdGhhdCAkNTUwLDAwMCBvZiB0aGUgbW9uZXlzIGFwcHJvcHJpYXRlZCBmcm9tIHRoZSBHZW5lcmFsIEZ1bmQgaW4gU2VjdGlvbiAxIG9mIHRoZSBiaWxsIG1heSBvbmx5IGJlIHVzZWQgZm9yIEZBU1QgVGF4XG4gQ29sbGVjdGlvbiB2ZW5kb3IgcGF5bWVudHMifSwgeyJ0eXBlIjogIk9USEVSIExFR0lTTEFUSU9OIiwgInRleHQiOiAiSDU5OSB3YXMgdGhlIGFubnVhbCB0YXggY29uZm9ybWl0eSBiaWxsIHRvIHVwZGF0ZSBzdGF0dXRvcnkgcmVmZXJlbmNlcyB0byB0aGUgSW50ZXJuYWwgUmV2ZW51ZSBDb2RlIChJUkMpLiBUaGUgYmlsbFxuY29uZm9ybWVkIHRoZSBJZGFobyBpbmNvbWUgdGF4IGNvZGUgdG8gY2hhbmdlcyBtYWRlIHRvIHRoZSBJUkMgdGhhdCBhZmZlY3RlZCB0aGUgMjAyNSB0YXggeWVhciwgZnVsbHkgY29uZm9ybWluZyB0byB0aGUgdGF4IGNoYW5nZXMgaW4gdGhlXG5mZWRlcmFsIE9uZSBCaWcgQmVhdXRpZnVsIEJpbGwgKEhSMSkgZXhjZXB0IGZvciBib251cyBkZXByZWNpYXRpb24gYW5kIFImRSBleHBlbmRpdHVyZSBjaGFuZ2VzLiBQYXJ0IG9mIHRoZSBzdXBwbGVtZW50YWwgYXBwcm9wcmlhdGlvblxucHJvdmlkZWQgaSJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIlN0YXRlIEhpc3RvcmljIFByZXNlcnZhdGlvbiIsICJ0ZXh0IjogIlRoZSBCb2FyZCBvZiBUYXggQXBwZWFscyAoSWRhaG8gQ29kZSwgVGl0bGUgNjMsIENoYXB0ZXIgMzgpIHByb3ZpZGVzIGEgZm9ydW0gZm9yIHRheHBheWVycyB0byBhcHBlYWwgdGF4XG5kZWNpc2lvbnMgbWFkZSBmcm9tIHRoZSBJZGFobyBTdGF0ZSBUYXggQ29tbWlzc2lvbiBvciB0aGUgY291bnR5IGJvYXJkcyBvZiBlcXVhbGl6YXRpb24uIFRoZSB0aHJlZS1tZW1iZXIgYm9hcmQgcHJvdmlkZXMgYW4gb3Bwb3J0dW5pdHlcbmZvciBhcHBlbGxhbnRzIGFuZCByZXNwb25kZW50cyB0byBwcmVzZW50IHRlc3RpbW9ueSBhbmQgZXZpZGVuY2UgYXQgcXVhc2ktanVkaWNpYWwgYm9hcmQgaGVhcmluZ3MgYXJvdW5kIHRoZSBzdGF0ZSJ9LCB7InN1Yl9wcm9ncmFtIjogIkdlbmVyYWwgU2VydmljZXMiLCAidGV4dCI6ICJUaGUgR2VuZXJhbCBTZXJ2aWNlcyBwb3JnYW0gcHJvdmlkZXMgdGhlIGNlbnRyYWxpemVkIG1hbmFnZW1lbnQgb2Ygc3RhdGUgdGF4IHJldmVudWVzIGFuZCB0aGUgYWdlbmN5XG5idWRnZXQsIHJlc2VhcmNoLCBwb2xpY3ksIGxlZ2FsLCBwZXJzb25uZWwsIHF1YWxpdHkgYXNzdXJhbmNlLCBhbmQgc29mdHdhcmUgZGV2ZWxvcG1lbnQuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDYzLTEwMSwgSWRhaG8gQ29kZSxcbmV0IHNlcS5dIn0sIHsic3ViX3Byb2dyYW0iOiAiQXVkaXQgRGl2aXNpb24iLCAidGV4dCI6ICJUaGlzIHByb2dyYW0gZW5zdXJlcyBmYWlybmVzcyBhbmQgY29uc2lzdGVuY3kgb2YgSWRhaG8ncyB0YXggbGF3cyBieSBleGFtaW5pbmcgdGF4IHJldHVybnMgZm9yIHBvdGVudGlhbCBlcnJvcnNcbmFuZCBvYnRhaW5pbmcgdGF4IHJldHVybnMgaW4gY2FzZXMgd2hlcmUgYSByZXR1cm4gaXMgcmVxdWlyZWQgdG8gYmUgZmlsZWQgYnV0IG5vIHJldHVybiB3YXMgc3VibWl0dGVkLiBJdCBjb25kdWN0cyBhdWRpdHMgb24gdmlydHVhbGx5IGFsbCB0YXhcbnR5cGVzIGFkbWluaXN0ZXJlZCBieSB0aGUgYWdlbmN5IGJ5IGF1dGhvcml0eSBvZiBJZGFobyBDb2RlIGFuZCB0aGUgTXVsdGktU3RhdGUgVGF4IENvbXBhY3QsIGFuZCBjb25kdWN0cyBkaXNjb3ZlcnkgYW5kIGVuZm9yY2VtZW50XG5lZmZvcnRzIGRpcmVjdGVkIGF0IG5vbi1maWxlcnMifSwgeyJzdWJfcHJvZ3JhbSI6ICJDb21wbGlhbmNlIERpdmlzaW9uIiwgInRleHQiOiAiVGhpcyBwcm9ncmFtIHByb3ZpZGVzIHRheHBheWVycyB3aXRoIGVkdWNhdGlvbiBhbmQgcHJvZ3JhbXMgdG8gZW5zdXJlIGVxdWl0YWJsZSBhbmQgZmFpciBjb21wbGlhbmNlLCBhcyB3ZWxsXG5hcyBwYXltZW50IG9mIHVucGFpZCB0YXggZGVidHMuIEl0IHByb3ZpZGVzIGRpcmVjdCB0YXhwYXllciBzZXJ2aWNlIHRvIHRoZSBwdWJsaWMgZnJvbSB0aGUgYWRtaW5pc3RyYXRpdmUgb2ZmaWNlIGluIEJvaXNlIGFuZCBmaXZlIGZpZWxkIG9mZmljZVxubG9jYXRpb25zOyBhbmQgY29sbGVjdHMgZGVsaW5xdWVudCB0YXhlcyBmb3IgdmlydHVhbGx5IGFsbCB0YXggdHlwZXMgYWRtaW5pc3RlcmVkIGJ5IHRoZSBhZ2VuY3kgYnkgYXV0aG9yaXR5IG9mIElkYWhvIENvZGUgYW5kIHRoZSBNdWx0aS1TdGF0ZVxuVGF4IENvbXBhY3QuIEFkZGl0aW9uYWxseSwgaXQgcHJvdmlkZXMgdGF4IHByZXBhcmF0aW9uIHN1cHBvcnQgYW5kIGVkdWNhdGlvbiwgYW5kIHNlcnZlcyBhcyBhIGxpbmsgYmV0d2VlbiB0aGUgcHVibGljIGFuZCB0aGUgYWdlbmN5In0sIHsic3ViX3Byb2dyYW0iOiAiUmV2ZW51ZSBPcGVyYXRpb25zIiwgInRleHQiOiAiQWRtaW5pc3RlcnMgdGhlIHZvbHVudGFyeSB0YXggY29tcGxpYW5jZSBwcm9ncmFtLiBNYWpvciBhY3Rpdml0aWVzIGluY2x1ZGU6IHJlZ2lzdGVyaW5nIHBlcm1pdCBob2xkZXJzIGZvciBzYWxlcyxcbndpdGhob2xkaW5nLCBob3RlbC9tb3RlbCwgc3BlY2lhbCBmdWVscywgYmVlciwgd2luZSwgY2lnYXJldHRlIGFuZCB0b2JhY2NvIHRheGVzOyBlbnN1cmluZyB0aGF0IGFsbCBpbmRpdmlkdWFscyBhbmQgbGljZW5zZWQgYnVzaW5lc3NlcyBhcmVcbm1haWxlZCBwcm9wZXIgdGF4IGZvcm1zIGZvciByZXBvcnRpbmc7IGVzdGFibGlzaGluZyB0YXhwYXllciBsaWFiaWxpdHksIGFzIHdlbGwgYXMgcHJvY2Vzc2luZyByZXZlbnVlIGFuZCByZWZ1bmQgZG9jdW1lbnRzIHN1Ym1pdHRlZCBieVxudGF4cGF5ZXJzOyBhbmQgbWFpbnRhaW5pbmcgYSByZWNvcmRzIHN5c3RlbSBjYXBhYmxlIG9mIHByb3ZpZGluZyBpbmRpdmlkdWFscyB3aXRoIHRheCBkb2N1bWVudHMifSwgeyJzdWJfcHJvZ3JhbSI6ICJQcm9wZXJ0eSBUYXgiLCAidGV4dCI6ICJUaGUgUHJvcGVydHkgVGF4IFByb2dyYW0gcHJvdmlkZXMgb3ZlcnNpZ2h0IGFuZCB0ZWNobmljYWwgc3VwcG9ydCBpbiB0aGUgYWRtaW5pc3RyYXRpb24gb2YgdGhlIHByb3BlcnR5IHRheFxuc3lzdGVtLCB3b3JraW5nIHRvIGVuc3VyZSBmYWlyLCBlcXVpdGFibGUsIGFuZCBhY2N1cmF0ZSBwcm9wZXJ0eSB0YXhhdGlvbi4gVGhlIHByb2dyYW0gaXMgcmVxdWlyZWQgdG86IGFubnVhbGx5IGFwcHJhaXNlIGFsbCBjbGFzcyB0aHJlZVxub3BlcmF0aW5nIHByb3BlcnR5LCBhcyByZXF1aXJlZCBieSBTZWN0aW9uIDYzLTIyMTUsIElkYWhvIENvZGU7IGV4YW1pbmUgcHJvcGVydHkgdGF4IGxldmllcyBvZiBhbGwgdGF4aW5nIGRpc3RyaWN0cyB0byBlbnN1cmUgY29tcGxpYW5jZSB3aXRoXG5JZGFobyBDb2RlOyBkZXZlbG9wIGZvcm1zLCBwcm9jZWR1cmVzLCBhbmQgY29tcHV0ZXIgc29mdHdhcmUgbmVjZXNzYXJ5IGZvciBjb3VudHkgYXNzZXNzb3JzIHRvIGFwcHJhaXNlIHByb3BlcnR5OyBkZXZlbG9wIGFuIGFzc2Vzc29yXHUyMDE5c1xubWFudWFsIGluIG9yZGVyIHRvIGZhY2lsaXRhdGUgdW5pZm9ybWl0eSBvZiBhcHByYWlzYWxzOyBhbmQgYWRtaW5pc3RlciBwcm9wZXIifV0sICJjaGlsZHJlbiI6IFt7Im5hbWUiOiAiU3RhdGUgVGF4IENvbW1pc3Npb24iLCAiZ2YiOiA0NTEzMjIwMCwgImRlZCI6IDExMjY2NTAwLCAiZmVkIjogMCwgInRvdGFsIjogNTYzOTg3MDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAwLjE5OTgsICJiaWxscyI6IFsiSDg2NyIsICJIODcxIl0sICJub3RlcyI6IFt7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJIODcxIGluY2x1ZGVkIG9uZSBzZWN0aW9uIG9mIGNvbmRpdGlvbnMsIGxpbWl0YXRpb25zLCBhbmQgcmVzdHJpY3Rpb25zLiBTZWN0aW9uIDIgb2Zcbkg4NzEgcmVxdWlyZWQgdGhhdCAkNTUwLDAwMCBvZiB0aGUgbW9uZXlzIGFwcHJvcHJpYXRlZCBmcm9tIHRoZSBHZW5lcmFsIEZ1bmQgaW4gU2VjdGlvbiAxIG9mIHRoZSBiaWxsIG1heSBvbmx5IGJlIHVzZWQgZm9yIEZBU1QgVGF4XG4gQ29sbGVjdGlvbiB2ZW5kb3IgcGF5bWVudHMifSwgeyJ0eXBlIjogIk9USEVSIExFR0lTTEFUSU9OIiwgInRleHQiOiAiSDU5OSB3YXMgdGhlIGFubnVhbCB0YXggY29uZm9ybWl0eSBiaWxsIHRvIHVwZGF0ZSBzdGF0dXRvcnkgcmVmZXJlbmNlcyB0byB0aGUgSW50ZXJuYWwgUmV2ZW51ZSBDb2RlIChJUkMpLiBUaGUgYmlsbFxuY29uZm9ybWVkIHRoZSBJZGFobyBpbmNvbWUgdGF4IGNvZGUgdG8gY2hhbmdlcyBtYWRlIHRvIHRoZSBJUkMgdGhhdCBhZmZlY3RlZCB0aGUgMjAyNSB0YXggeWVhciwgZnVsbHkgY29uZm9ybWluZyB0byB0aGUgdGF4IGNoYW5nZXMgaW4gdGhlXG5mZWRlcmFsIE9uZSBCaWcgQmVhdXRpZnVsIEJpbGwgKEhSMSkgZXhjZXB0IGZvciBib251cyBkZXByZWNpYXRpb24gYW5kIFImRSBleHBlbmRpdHVyZSBjaGFuZ2VzLiBQYXJ0IG9mIHRoZSBzdXBwbGVtZW50YWwgYXBwcm9wcmlhdGlvblxucHJvdmlkZWQgaSJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkdlbmVyYWwgU2VydmljZXMiLCAidGV4dCI6ICJUaGUgR2VuZXJhbCBTZXJ2aWNlcyBwb3JnYW0gcHJvdmlkZXMgdGhlIGNlbnRyYWxpemVkIG1hbmFnZW1lbnQgb2Ygc3RhdGUgdGF4IHJldmVudWVzIGFuZCB0aGUgYWdlbmN5XG5idWRnZXQsIHJlc2VhcmNoLCBwb2xpY3ksIGxlZ2FsLCBwZXJzb25uZWwsIHF1YWxpdHkgYXNzdXJhbmNlLCBhbmQgc29mdHdhcmUgZGV2ZWxvcG1lbnQuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDYzLTEwMSwgSWRhaG8gQ29kZSxcbmV0IHNlcS5dIn0sIHsic3ViX3Byb2dyYW0iOiAiQXVkaXQgRGl2aXNpb24iLCAidGV4dCI6ICJUaGlzIHByb2dyYW0gZW5zdXJlcyBmYWlybmVzcyBhbmQgY29uc2lzdGVuY3kgb2YgSWRhaG8ncyB0YXggbGF3cyBieSBleGFtaW5pbmcgdGF4IHJldHVybnMgZm9yIHBvdGVudGlhbCBlcnJvcnNcbmFuZCBvYnRhaW5pbmcgdGF4IHJldHVybnMgaW4gY2FzZXMgd2hlcmUgYSByZXR1cm4gaXMgcmVxdWlyZWQgdG8gYmUgZmlsZWQgYnV0IG5vIHJldHVybiB3YXMgc3VibWl0dGVkLiBJdCBjb25kdWN0cyBhdWRpdHMgb24gdmlydHVhbGx5IGFsbCB0YXhcbnR5cGVzIGFkbWluaXN0ZXJlZCBieSB0aGUgYWdlbmN5IGJ5IGF1dGhvcml0eSBvZiBJZGFobyBDb2RlIGFuZCB0aGUgTXVsdGktU3RhdGUgVGF4IENvbXBhY3QsIGFuZCBjb25kdWN0cyBkaXNjb3ZlcnkgYW5kIGVuZm9yY2VtZW50XG5lZmZvcnRzIGRpcmVjdGVkIGF0IG5vbi1maWxlcnMifSwgeyJzdWJfcHJvZ3JhbSI6ICJDb21wbGlhbmNlIERpdmlzaW9uIiwgInRleHQiOiAiVGhpcyBwcm9ncmFtIHByb3ZpZGVzIHRheHBheWVycyB3aXRoIGVkdWNhdGlvbiBhbmQgcHJvZ3JhbXMgdG8gZW5zdXJlIGVxdWl0YWJsZSBhbmQgZmFpciBjb21wbGlhbmNlLCBhcyB3ZWxsXG5hcyBwYXltZW50IG9mIHVucGFpZCB0YXggZGVidHMuIEl0IHByb3ZpZGVzIGRpcmVjdCB0YXhwYXllciBzZXJ2aWNlIHRvIHRoZSBwdWJsaWMgZnJvbSB0aGUgYWRtaW5pc3RyYXRpdmUgb2ZmaWNlIGluIEJvaXNlIGFuZCBmaXZlIGZpZWxkIG9mZmljZVxubG9jYXRpb25zOyBhbmQgY29sbGVjdHMgZGVsaW5xdWVudCB0YXhlcyBmb3IgdmlydHVhbGx5IGFsbCB0YXggdHlwZXMgYWRtaW5pc3RlcmVkIGJ5IHRoZSBhZ2VuY3kgYnkgYXV0aG9yaXR5IG9mIElkYWhvIENvZGUgYW5kIHRoZSBNdWx0aS1TdGF0ZVxuVGF4IENvbXBhY3QuIEFkZGl0aW9uYWxseSwgaXQgcHJvdmlkZXMgdGF4IHByZXBhcmF0aW9uIHN1cHBvcnQgYW5kIGVkdWNhdGlvbiwgYW5kIHNlcnZlcyBhcyBhIGxpbmsgYmV0d2UifSwgeyJzdWJfcHJvZ3JhbSI6ICJSZXZlbnVlIE9wZXJhdGlvbnMiLCAidGV4dCI6ICJBZG1pbmlzdGVycyB0aGUgdm9sdW50YXJ5IHRheCBjb21wbGlhbmNlIHByb2dyYW0uIE1ham9yIGFjdGl2aXRpZXMgaW5jbHVkZTogcmVnaXN0ZXJpbmcgcGVybWl0IGhvbGRlcnMgZm9yIHNhbGVzLFxud2l0aGhvbGRpbmcsIGhvdGVsL21vdGVsLCBzcGVjaWFsIGZ1ZWxzLCBiZWVyLCB3aW5lLCBjaWdhcmV0dGUgYW5kIHRvYmFjY28gdGF4ZXM7IGVuc3VyaW5nIHRoYXQgYWxsIGluZGl2aWR1YWxzIGFuZCBsaWNlbnNlZCBidXNpbmVzc2VzIGFyZVxubWFpbGVkIHByb3BlciB0YXggZm9ybXMgZm9yIHJlcG9ydGluZzsgZXN0YWJsaXNoaW5nIHRheHBheWVyIGxpYWJpbGl0eSwgYXMgd2VsbCBhcyBwcm9jZXNzaW5nIHJldmVudWUgYW5kIHJlZnVuZCBkb2N1bWVudHMgc3VibWl0dGVkIGJ5XG50YXhwYXllcnM7IGFuZCBtYWludGFpbmluZyBhIHJlY29yZHMgc3lzdGVtIGNhcGFibGUgb2YgcHJvdmlkaW5nIGluZGl2aWR1YWxzIHdpdGggdGF4IGRvY3VtZW50cyJ9LCB7InN1Yl9wcm9ncmFtIjogIlByb3BlcnR5IFRheCIsICJ0ZXh0IjogIlRoZSBQcm9wZXJ0eSBUYXggUHJvZ3JhbSBwcm92aWRlcyBvdmVyc2lnaHQgYW5kIHRlY2huaWNhbCBzdXBwb3J0IGluIHRoZSBhZG1pbmlzdHJhdGlvbiBvZiB0aGUgcHJvcGVydHkgdGF4XG5zeXN0ZW0sIHdvcmtpbmcgdG8gZW5zdXJlIGZhaXIsIGVxdWl0YWJsZSwgYW5kIGFjY3VyYXRlIHByb3BlcnR5IHRheGF0aW9uLiBUaGUgcHJvZ3JhbSBpcyByZXF1aXJlZCB0bzogYW5udWFsbHkgYXBwcmFpc2UgYWxsIGNsYXNzIHRocmVlXG5vcGVyYXRpbmcgcHJvcGVydHksIGFzIHJlcXVpcmVkIGJ5IFNlY3Rpb24gNjMtMjIxNSwgSWRhaG8gQ29kZTsgZXhhbWluZSBwcm9wZXJ0eSB0YXggbGV2aWVzIG9mIGFsbCB0YXhpbmcgZGlzdHJpY3RzIHRvIGVuc3VyZSBjb21wbGlhbmNlIHdpdGhcbklkYWhvIENvZGU7IGRldmVsb3AgZm9ybXMsIHByb2NlZHVyZXMsIGFuZCBjb21wdXRlciBzb2Z0d2FyZSBuZWNlc3NhcnkgZm9yIGNvdW50eSBhc3Nlc3NvcnMgdG8gYXBwcmFpc2UgcHJvcGVydHk7In1dfSwgeyJuYW1lIjogIkJvYXJkIG9mIFRheCBBcHBlYWxzIiwgImdmIjogNjU3MzAwLCAiZGVkIjogMCwgImZlZCI6IDAsICJ0b3RhbCI6IDY1NzMwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuMCwgImJpbGxzIjogW10sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiU3RhdGUgSGlzdG9yaWMgUHJlc2VydmF0aW9uIiwgInRleHQiOiAiVGhlIEJvYXJkIG9mIFRheCBBcHBlYWxzIChJZGFobyBDb2RlLCBUaXRsZSA2MywgQ2hhcHRlciAzOCkgcHJvdmlkZXMgYSBmb3J1bSBmb3IgdGF4cGF5ZXJzIHRvIGFwcGVhbCB0YXhcbmRlY2lzaW9ucyBtYWRlIGZyb20gdGhlIElkYWhvIFN0YXRlIFRheCBDb21taXNzaW9uIG9yIHRoZSBjb3VudHkgYm9hcmRzIG9mIGVxdWFsaXphdGlvbi4gVGhlIHRocmVlLW1lbWJlciBib2FyZCBwcm92aWRlcyBhbiBvcHBvcnR1bml0eVxuZm9yIGFwcGVsbGFudHMgYW5kIHJlc3BvbmRlbnRzIHRvIHByZXNlbnQgdGVzdGltb255IGFuZCBldmlkZW5jZSBhdCBxdWFzaS1qdWRpY2lhbCBib2FyZCBoZWFyaW5ncyBhcm91bmQgdGhlIHN0YXRlIn1dfV19LCB7ImFyZWEiOiAiR2VuZXJhbCBHb3Zlcm5tZW50IiwgImFnZW5jeSI6ICJTZWNyZXRhcnkgb2YgU3RhdGUiLCAiZnRwIjogMzUuNSwgImdmIjogNTg3MjQwMCwgImRlZCI6IDAsICJmZWQiOiAwLCAidG90YWwiOiA1ODcyNDAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMC4wLCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJIODY2IiwgIkg5NTIiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJTZWNyZXRhcnkgb2YgU3RhdGUiLCAidGV4dCI6ICJUaGUgQWRtaW5pc3RyYXRpb24gUHJvZ3JhbSBwZXJmb3JtcyBhbGwgdGhlIGNvbnN0aXR1dGlvbmFsIGFuZCBzdGF0dXRvcnkgZnVuY3Rpb25zIG9mIHRoZSBPZmZpY2Ugb2YgdGhlIFNlY3JldGFyeVxub2YgU3RhdGUgaW5jbHVkaW5nIHJlZ2lzdGVyaW5nIHRoZSBvZmZpY2lhbCBhY3RzIG9mIHRoZSBMZWdpc2xhdHVyZSBhbmQgdGhlIEdvdmVybm9yOyBhZG1pbmlzdGVyaW5nIGFuZCBjZXJ0aWZ5aW5nIGVsZWN0aW9uczsgbWFpbnRhaW5pbmcgYSByZWdpc3RyeVxub2YgdG9ydCBjbGFpbXMsIGV4dHJhZGl0aW9ucywgZGVlZHMsIG9mZmljaWFsIG9hdGhzLCBhbmQgZ3ViZXJuYXRvcmlhbCBhcHBvaW50bWVudHM7IGFkbWluaXN0ZXJpbmcgdGhlIFN1bnNoaW5lIExhdzsgYW5kIG1haW50YWluaW5nIGFuZFxub3BlcmF0aW5nIHRoZSBDZW50cmFsaXplZCBVbmlmb3JtIENvbW1lcmNpYWwgQ29kZSBhcyBpdCByZWxhdGVzIHRvIHN0YXRlLCBjb21tZXJjaWFsLCBhbmQgZmFybSBwcm9kdWN0IGZpbGluZ3MuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBDaGFwdGVyXG45LCBUaXRsZSA2NywgSWRhaG8gQ29kZV0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJDb21taXNzaW9uIG9uIFVuaWZvcm0gU3RhdGUgTGF3cyIsICJ0ZXh0IjogIlRoZSBDb21taXNzaW9uIG9uIFVuaWZvcm0gU3RhdGUgTGF3cyBpcyBjb21wb3NlZCBvZiBmb3VyIG1lbWJlcnMgd2hvIGFyZSBhcHBvaW50ZWQgYnkgdGhlIEdvdmVybm9yLiBUaGVcbmNvbW1pc3Npb24gc3R1ZGllcyBwcm9wb3NlZCB1bmlmb3JtIGxhd3MgYW5kIGRyYWZ0cyBsZWdpc2xhdGlvbiBmb3IgY29uc2lkZXJhdGlvbiBieSB0aGUgSWRhaG8gTGVnaXNsYXR1cmUgd2hlcmUgdW5pZm9ybWl0eSBhbW9uZyBzdGF0ZVxubGF3cyBpcyBkZXNpcmFibGUuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBDaGFwdGVyIDE3LCBUaXRsZSA2NywgSWRhaG8gQ29kZV0ifV19LCB7ImFyZWEiOiAiR2VuZXJhbCBHb3Zlcm5tZW50IiwgImFnZW5jeSI6ICJTdGF0ZSBUcmVhc3VyZXIiLCAiZnRwIjogMzAuMCwgImdmIjogMTY0MDgwMCwgImRlZCI6IDM4MTY5MDAsICJmZWQiOiAwLCAidG90YWwiOiA1NDU3NzAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMC42OTk0LCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJIODY2Il0sICJub3RlcyI6IFt7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJTZWN0aW9uIDEyIG9mIEg4NjYgbGltaXRlZCB0aGUgYW1vdW50IHRoZSBTdGF0ZSBUcmVhc3VyZXIgY2FuIHVzZSBmcm9tIHRoZSBHZW5lcmFsXG5GdW5kIGFuZCBQcm9mZXNzaW9uYWwgU2VydmljZXMgRnVuZCBmb3IgcGF5bWVudCBvZiBiYW5rIHNlcnZpY2UgZmVlcyJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkNvbW1pc3Npb24gb24gVW5pZm9ybSBTdGF0ZSBMYXdzIiwgInRleHQiOiAiVGhlIFN0YXRlIFRyZWFzdXJlciBvcGVyYXRlcyBhcyB0aGUgY2VudHJhbCBjaGllZiBmaXNjYWwgb2ZmaWNlciBhbmQgYmFua2VyIG9mIG1vbmV5cyBjb2xsZWN0ZWQgYnkgSWRhaG8uIFRoZVxuVHJlYXN1cmVyJ3MgT2ZmaWNlIGFjdHMgYXMgdGhlIHN0YXRlJ3MgYmFuaywgcmVjZWl2aW5nIGFuZCBkaXNidXJzaW5nIGFsbCBtb25leXMuIFRoZSBvZmZpY2UgYWxzbyBpbnZlc3RzIGlkbGUgc3RhdGUgbW9uZXlzIGFuZCBmdW5kcyBmb3IgbG9jYWxcbmdvdmVybm1lbnRzIGFuZCBzdGF0ZSBhZ2VuY2llcy4gVGhlIFRyZWFzdXJlcidzIE9mZmljZSBhZG1pbmlzdGVycyB0aGUgSWRhaG8gTWlsbGVubml1bSBGdW5kLCB0aGUgSWRlYWwgQ29sbGVnZSBTYXZpbmdzIFByb2dyYW0sIGFuZCB0aGVcbklkYWhvIFByaW1lIExvYW4gUHJvZ3JhbS4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IENoYXB0ZXIgMTIsIFRpdGxlIDY3LCBJZGFobyBDb2RlXSJ9XX1dfQ== KGZ1bmN0aW9uKCl7CiAgInVzZSBzdHJpY3QiOwoKICBmdW5jdGlvbiBpbml0KCl7CgogIGNvbnN0IEFSRUFfT1JERVIgPSBbCiAgICAiRWR1Y2F0aW9uIiwgIkhlYWx0aCBhbmQgSHVtYW4gU2VydmljZXMiLCAiUHVibGljIFNhZmV0eSIsCiAgICAiTmF0dXJhbCBSZXNvdXJjZXMiLCAiRWNvbm9taWMgRGV2ZWxvcG1lbnQiLCAiR2VuZXJhbCBHb3Zlcm5tZW50IgogIF07CgogIC8vIC0tLS0tLS0tLS0gZm9ybWF0dGluZyAtLS0tLS0tLS0tCiAgZnVuY3Rpb24gZm10UGxhaW4obil7CiAgICBjb25zdCBtID0gbi8xZTY7CiAgICBjb25zdCBuZWcgPSBtIDwgMDsKICAgIGNvbnN0IGJvZHkgPSAiJCIgKyBNYXRoLmFicyhtKS50b0xvY2FsZVN0cmluZygiZW4tVVMiLCB7bWluaW11bUZyYWN0aW9uRGlnaXRzOjEsIG1heGltdW1GcmFjdGlvbkRpZ2l0czoxfSkgKyAiTSI7CiAgICByZXR1cm4gbmVnID8gIigiICsgYm9keSArICIpIiA6IGJvZHk7CiAgfQogIGZ1bmN0aW9uIGZtdFNpZ25lZChuKXsKICAgIGNvbnN0IG0gPSBuLzFlNjsKICAgIGlmIChNYXRoLmFicyhtKSA8IDAuMDUpIHJldHVybiAibm8gY2hhbmdlIjsKICAgIGNvbnN0IHNpZ24gPSBtID4gMCA/ICIrIiA6ICJcdTIyMTIiOwogICAgcmV0dXJuIHNpZ24gKyAiJCIgKyBNYXRoLmFicyhtKS50b0xvY2FsZVN0cmluZygiZW4tVVMiLCB7bWluaW11bUZyYWN0aW9uRGlnaXRzOjEsIG1heGltdW1GcmFjdGlvbkRpZ2l0czoxfSkgKyAiTSI7CiAgfQogIGZ1bmN0aW9uIHBjdChuKXsgcmV0dXJuIChuKjEwMCkudG9GaXhlZCgxKSArICIlIjsgfQoKICAvLyAtLS0tLS0tLS0tIHN0YXRlIC0tLS0tLS0tLS0KICBjb25zdCBzdGF0ZSA9IHsgcmV2ZW51ZTp7fSwgc3BlbmRpbmc6e30sIHNwZW5kaW5nRmVkOnt9LCBsaW5rZWQ6e30sIGNoaWxkUGN0Ont9LCBjaGlsZEZlZFBjdDp7fSB9OwoKICBEQVRBLnJldmVudWVfbGV2ZXJzLmZvckVhY2goZnVuY3Rpb24obCl7CiAgICBpZiAobC50eXBlID09PSAidG9nZ2xlIikgc3RhdGUucmV2ZW51ZVtsLmlkXSA9IGZhbHNlOwogICAgZWxzZSBpZiAobC51bml0ID09PSAicmF0ZSIpIHN0YXRlLnJldmVudWVbbC5pZF0gPSBsLmJhc2VfcmF0ZTsKICAgIGVsc2Ugc3RhdGUucmV2ZW51ZVtsLmlkXSA9IGwuYmFzZV9hbW91bnQ7CiAgfSk7CiAgREFUQS5zcGVuZGluZ19sZXZlcnMuZm9yRWFjaChmdW5jdGlvbihsLCBpKXsKICAgIHN0YXRlLnNwZW5kaW5nW2ldID0gMDsgICAgICAvLyBHZW5lcmFsIEZ1bmQgcGVyY2VudCBjaGFuZ2UsIC0xMDAuLjEwMCAobWFzdGVyLCB3aGVuIGNoaWxkcmVuIGV4aXN0KQogICAgc3RhdGUuc3BlbmRpbmdGZWRbaV0gPSAwOyAgIC8vIEZlZGVyYWwgRnVuZHMgcGVyY2VudCBjaGFuZ2UsIC0xMDAuLjEwMCAodXNlZCB3aGVuIHVubGlua2VkIC8gbWFzdGVyKQogICAgc3RhdGUubGlua2VkW2ldID0gISFsLmZtYXBfcmVndWxhcjsgLy8gZGVmYXVsdDogZm9sbG93IEdGIGF1dG9tYXRpY2FsbHkgd2hlbiB3ZSBoYXZlIGEgcmVhbCBtYXRjaCByYXRlCiAgICBpZiAobC5jaGlsZHJlbil7CiAgICAgIHN0YXRlLmNoaWxkUGN0W2ldID0gbC5jaGlsZHJlbi5tYXAoZnVuY3Rpb24oKXsgcmV0dXJuIDA7IH0pOwogICAgICBzdGF0ZS5jaGlsZEZlZFBjdFtpXSA9IGwuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uKCl7IHJldHVybiAwOyB9KTsKICAgIH0KICB9KTsKCiAgLy8gLS0tLS0tLS0tLSBjYWxjdWxhdGlvbiAtLS0tLS0tLS0tCiAgZnVuY3Rpb24gcmV2ZW51ZURlbHRhKGxldmVyKXsKICAgIGNvbnN0IHYgPSBzdGF0ZS5yZXZlbnVlW2xldmVyLmlkXTsKICAgIGlmIChsZXZlci50eXBlID09PSAidG9nZ2xlIil7CiAgICAgIGlmICghdikgcmV0dXJuIDA7CiAgICAgIGlmIChsZXZlci5pZCA9PT0gImdyb2NlcnlfZXhlbXB0aW9uIil7CiAgICAgICAgLy8gc2NhbGUgd2l0aCB0aGUgY3VycmVudCBzYWxlcyB0YXggcmF0ZSBzbGlkZXIgLS0gZXhlbXB0aW5nIGdyb2NlcmllcyBmcm9tIGEKICAgICAgICAvLyAwJSBzYWxlcyB0YXggaXMgd29ydGggJDA7IHRoZSBiYXNlIGVzdGltYXRlIGFzc3VtZWQgdGhlIGVuYWN0ZWQgNiUgcmF0ZQogICAgICAgIGNvbnN0IHNhbGVzVGF4TGV2ZXIgPSBEQVRBLnJldmVudWVfbGV2ZXJzLmZpbmQoZnVuY3Rpb24oc2wpeyByZXR1cm4gc2wuaWQgPT09ICJzYWxlc190YXgiOyB9KTsKICAgICAgICBjb25zdCByYXRpbyA9IHNhbGVzVGF4TGV2ZXIgPyAoc3RhdGUucmV2ZW51ZVsic2FsZXNfdGF4Il0gLyBzYWxlc1RheExldmVyLmJhc2VfcmF0ZSkgOiAxOwogICAgICAgIHJldHVybiBsZXZlci5jb3N0X2lmX2VuYWJsZWQgKiByYXRpbzsKICAgICAgfQogICAgICByZXR1cm4gbGV2ZXIuY29zdF9pZl9lbmFibGVkOwogICAgfQogICAgaWYgKGxldmVyLnVuaXQgPT09ICJyYXRlIikgcmV0dXJuIGxldmVyLmJhc2VfYW1vdW50ICogKHYvbGV2ZXIuYmFzZV9yYXRlIC0gMSk7CiAgICBpZiAobGV2ZXIudW5pdCA9PT0gImRvbGxhcnNfcGVyX3BlcnNvbiIpIHJldHVybiBsZXZlci50b3RhbF9wcm9ncmFtX2Nvc3QgKiAodi9sZXZlci5iYXNlX2Ftb3VudCAtIDEpOwogICAgcmV0dXJuIDA7CiAgfQogIGZ1bmN0aW9uIGNoaWxkRGVsdGFHRihsZXZlciwgaSwgY2kpewogICAgcmV0dXJuIGxldmVyLmNoaWxkcmVuW2NpXS5nZiAqIChzdGF0ZS5jaGlsZFBjdFtpXVtjaV0gLyAxMDApOwogIH0KICBmdW5jdGlvbiBjaGlsZERlbHRhRmVkKGxldmVyLCBpLCBjaSl7CiAgICByZXR1cm4gbGV2ZXIuY2hpbGRyZW5bY2ldLmZlZCAqIChzdGF0ZS5jaGlsZEZlZFBjdFtpXVtjaV0gLyAxMDApOwogIH0KICBmdW5jdGlvbiBzcGVuZGluZ0RlbHRhR0YobGV2ZXIsIGkpewogICAgaWYgKGxldmVyLmNoaWxkcmVuKXsKICAgICAgbGV0IHN1bSA9IDA7CiAgICAgIGZvciAobGV0IGNpID0gMDsgY2kgPCBsZXZlci5jaGlsZHJlbi5sZW5ndGg7IGNpKyspIHN1bSArPSBjaGlsZERlbHRhR0YobGV2ZXIsIGksIGNpKTsKICAgICAgcmV0dXJuIHN1bTsKICAgIH0KICAgIHJldHVybiBsZXZlci5nZiAqIChzdGF0ZS5zcGVuZGluZ1tpXSAvIDEwMCk7CiAgfQogIGZ1bmN0aW9uIGZtYXBNdWx0aXBsaWVyKGxldmVyKXsKICAgIHJldHVybiBsZXZlci5mbWFwX3JlZ3VsYXIgLyAoMSAtIGxldmVyLmZtYXBfcmVndWxhcik7CiAgfQogIGZ1bmN0aW9uIHNwZW5kaW5nRGVsdGFGZWQobGV2ZXIsIGkpewogICAgaWYgKGxldmVyLmNoaWxkcmVuKXsKICAgICAgbGV0IHN1bSA9IDA7CiAgICAgIGZvciAobGV0IGNpID0gMDsgY2kgPCBsZXZlci5jaGlsZHJlbi5sZW5ndGg7IGNpKyspIHN1bSArPSBjaGlsZERlbHRhRmVkKGxldmVyLCBpLCBjaSk7CiAgICAgIHJldHVybiBzdW07CiAgICB9CiAgICBpZiAobGV2ZXIuZm1hcF9yZWd1bGFyICYmIHN0YXRlLmxpbmtlZFtpXSl7CiAgICAgIHJldHVybiBzcGVuZGluZ0RlbHRhR0YobGV2ZXIsIGkpICogZm1hcE11bHRpcGxpZXIobGV2ZXIpOwogICAgfQogICAgcmV0dXJuIGxldmVyLmZlZCAqIChzdGF0ZS5zcGVuZGluZ0ZlZFtpXSAvIDEwMCk7CiAgfQoKICBmdW5jdGlvbiB0b3RhbHMoKXsKICAgIGxldCByZXZEZWx0YSA9IDA7CiAgICBEQVRBLnJldmVudWVfbGV2ZXJzLmZvckVhY2goZnVuY3Rpb24obCl7IHJldkRlbHRhICs9IHJldmVudWVEZWx0YShsKTsgfSk7CiAgICBsZXQgc3BlbmREZWx0YSA9IDAsIGZlZERlbHRhID0gMDsKICAgIERBVEEuc3BlbmRpbmdfbGV2ZXJzLmZvckVhY2goZnVuY3Rpb24obCwgaSl7CiAgICAgIHNwZW5kRGVsdGEgKz0gc3BlbmRpbmdEZWx0YUdGKGwsIGkpOwogICAgICBmZWREZWx0YSArPSBzcGVuZGluZ0RlbHRhRmVkKGwsIGkpOwogICAgfSk7CiAgICBjb25zdCByZXZlbnVlID0gREFUQS5tZXRhLmdmX3JldmVudWVfdG90YWxfZnkyNyArIHJldkRlbHRhOwogICAgY29uc3QgYXBwcm9wID0gREFUQS5tZXRhLmdmX2FwcHJvcHJpYXRpb25fdG90YWxfZnkyNyArIHNwZW5kRGVsdGE7CiAgICAvLyBFbmRpbmcgQmFsYW5jZSBwZXIgdGhlIExGUidzIG93biBHZW5lcmFsIEZ1bmQgQnVkZ2V0IFJlcG9ydCAocC4zKTogTmV0IFJldmVudWVzIG1pbnVzCiAgICAvLyBBcHByb3ByaWF0aW9ucywgd2hlcmUgTmV0IFJldmVudWVzIGluY2x1ZGVzIHRoZSBiZWdpbm5pbmcgY2FzaCBiYWxhbmNlIGNhcnJpZWQgb3ZlciBmcm9tCiAgICAvLyBGWTIwMjYgYW5kIG5ldCBvbmUtdGltZSB0cmFuc2ZlcnMgYWxyZWFkeSBlbmFjdGVkIHRoaXMgc2Vzc2lvbi4gVGhvc2UgdHdvIGNvbXBvbmVudHMgYXJlCiAgICAvLyBmaXhlZCAtLSB0aGV5IGRvbid0IG1vdmUgd2l0aCBoeXBvdGhldGljYWwgY3VycmVudC15ZWFyIHRheCBvciBzcGVuZGluZyBjaGFuZ2VzLgogICAgY29uc3QgZml4ZWRPZmZzZXQgPSBEQVRBLm1ldGEuYmVnaW5uaW5nX2JhbGFuY2VfZnkyNyArIERBVEEubWV0YS5uZXRfdHJhbnNmZXJzX2Z5Mjc7CiAgICBjb25zdCBiYWxhbmNlID0gcmV2ZW51ZSAtIGFwcHJvcCArIGZpeGVkT2Zmc2V0OwogICAgcmV0dXJuIHsgcmV2ZW51ZSwgYXBwcm9wLCBiYWxhbmNlLCByZXZEZWx0YSwgc3BlbmREZWx0YSwgZmVkRGVsdGEsIGZpeGVkT2Zmc2V0IH07CiAgfQoKICAvLyAtLS0tLS0tLS0tIGJ1aWxkOiByZXZlbnVlIGNhcmRzIC0tLS0tLS0tLS0KICBjb25zdCByZXZHcmlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJldmVudWVHcmlkIik7CgogIGZ1bmN0aW9uIHJldmVudWVDYXJkSFRNTChsKXsKICAgIGlmIChsLnR5cGUgPT09ICJ0b2dnbGUiKXsKICAgICAgcmV0dXJuICgKICAgICAgICAnPGRpdiBjbGFzcz0ibGV2ZXItY2FyZCI+JyArCiAgICAgICAgICAnPGRpdiBjbGFzcz0ibGV2ZXItdG9wIj4nICsKICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJsZXZlci1uYW1lIj4nICsgbC5sYWJlbCArICc8L3NwYW4+JyArCiAgICAgICAgICAgICc8c3BhbiBjbGFzcz0ibGV2ZXItZGVsdGEiIGlkPSJyZXYtZGVsdGEtJyArIGwuaWQgKyAnIj5ubyBjaGFuZ2U8L3NwYW4+JyArCiAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAnPGRpdiBjbGFzcz0idG9nZ2xlLXJvdyI+JyArCiAgICAgICAgICAgICc8bGFiZWwgY2xhc3M9InRvZ2dsZS1zd2l0Y2giPicgKwogICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIGRhdGEtcmV2PSInICsgbC5pZCArICciIGlkPSJyZXYtaW5wdXQtJyArIGwuaWQgKyAnIj4nICsKICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9InRvZ2dsZS10cmFjayI+PC9zcGFuPjxzcGFuIGNsYXNzPSJ0b2dnbGUtdGh1bWIiPjwvc3Bhbj4nICsKICAgICAgICAgICAgJzwvbGFiZWw+JyArCiAgICAgICAgICAgICc8c3BhbiBjbGFzcz0idG9nZ2xlLWxhYmVsIj5FeGVtcHQgZ3JvY2VyaWVzIGF0IGNoZWNrb3V0IChlc3QuICcgKyBmbXRQbGFpbihsLmNvc3RfaWZfZW5hYmxlZCkgKyAnIGF0IHRoZSBlbmFjdGVkIDYlIHJhdGU7IHNjYWxlcyB3aXRoIHRoZSBzYWxlcyB0YXggc2xpZGVyIGFib3ZlKTwvc3Bhbj4nICsKICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICc8ZGl2IGNsYXNzPSJsZXZlci1ub3RlIj4nICsgbC5ub3RlICsgJzwvZGl2PicgKwogICAgICAgICAgJzxkaXYgY2xhc3M9ImxldmVyLWNpdGUiPlNvdXJjZTogJyArIGwuY2l0YXRpb24gKyAnPC9kaXY+JyArCiAgICAgICAgJzwvZGl2PicKICAgICAgKTsKICAgIH0KICAgIGlmIChsLnVuaXQgPT09ICJkb2xsYXJzX3Blcl9wZXJzb24iKXsKICAgICAgcmV0dXJuICgKICAgICAgICAnPGRpdiBjbGFzcz0ibGV2ZXItY2FyZCI+JyArCiAgICAgICAgICAnPGRpdiBjbGFzcz0ibGV2ZXItdG9wIj4nICsKICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJsZXZlci1uYW1lIj4nICsgbC5sYWJlbCArICc8L3NwYW4+JyArCiAgICAgICAgICAgICc8c3BhbiBjbGFzcz0ibGV2ZXItZmlndXJlIiBpZD0icmV2LWZpZ3VyZS0nICsgbC5pZCArICciPiQnICsgbC5iYXNlX2Ftb3VudCArICc8L3NwYW4+JyArCiAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAnPGlucHV0IHR5cGU9InJhbmdlIiBkYXRhLXJldj0iJyArIGwuaWQgKyAnIiBpZD0icmV2LWlucHV0LScgKyBsLmlkICsKICAgICAgICAgICAgJyIgbWluPSInICsgbC5taW5fdmFsICsgJyIgbWF4PSInICsgbC5tYXhfdmFsICsgJyIgc3RlcD0iJyArIGwuc3RlcCArICciIHZhbHVlPSInICsgbC5iYXNlX2Ftb3VudCArICciPicgKwogICAgICAgICAgJzxkaXYgY2xhc3M9InNsaWRlci10aWNrcyI+PHNwYW4+JCcgKyBsLm1pbl92YWwgKyAnPC9zcGFuPjxzcGFuPmN1cnJlbnQgbGF3OiAkJyArIGwuYmFzZV9hbW91bnQgKyAnPC9zcGFuPjxzcGFuPiQnICsgbC5tYXhfdmFsICsgJzwvc3Bhbj48L2Rpdj4nICsKICAgICAgICAgICc8ZGl2IGNsYXNzPSJsZXZlci1kZWx0YSIgaWQ9InJldi1kZWx0YS0nICsgbC5pZCArICciIHN0eWxlPSJtYXJnaW4tdG9wOjhweDsiPkdlbmVyYWwgRnVuZCBpbXBhY3Q6IG5vIGNoYW5nZTwvZGl2PicgKwogICAgICAgICAgJzxkaXYgY2xhc3M9ImxldmVyLW5vdGUiPicgKyBsLm5vdGUgKyAnPC9kaXY+JyArCiAgICAgICAgICAnPGRpdiBjbGFzcz0ibGV2ZXItY2l0ZSI+U291cmNlOiAnICsgbC5jaXRhdGlvbiArICc8L2Rpdj4nICsKICAgICAgICAnPC9kaXY+JwogICAgICApOwogICAgfQogICAgLy8gcmF0ZSBsZXZlcgogICAgcmV0dXJuICgKICAgICAgJzxkaXYgY2xhc3M9ImxldmVyLWNhcmQiPicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJsZXZlci10b3AiPicgKwogICAgICAgICAgJzxzcGFuIGNsYXNzPSJsZXZlci1uYW1lIj4nICsgbC5sYWJlbCArICc8L3NwYW4+JyArCiAgICAgICAgICAnPHNwYW4gY2xhc3M9ImxldmVyLWZpZ3VyZSIgaWQ9InJldi1maWd1cmUtJyArIGwuaWQgKyAnIj4nICsgcGN0KGwuYmFzZV9yYXRlKSArICc8L3NwYW4+JyArCiAgICAgICAgJzwvZGl2PicgKwogICAgICAgICc8aW5wdXQgdHlwZT0icmFuZ2UiIGRhdGEtcmV2PSInICsgbC5pZCArICciIGlkPSJyZXYtaW5wdXQtJyArIGwuaWQgKwogICAgICAgICAgJyIgbWluPSInICsgbC5taW5fcmF0ZSArICciIG1heD0iJyArIGwubWF4X3JhdGUgKyAnIiBzdGVwPSInICsgbC5zdGVwICsgJyIgdmFsdWU9IicgKyBsLmJhc2VfcmF0ZSArICciPicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJzbGlkZXItdGlja3MiPjxzcGFuPicgKyBwY3QobC5taW5fcmF0ZSkgKyAnPC9zcGFuPjxzcGFuPmN1cnJlbnQgbGF3OiAnICsgcGN0KGwuYmFzZV9yYXRlKSArICc8L3NwYW4+PHNwYW4+JyArIHBjdChsLm1heF9yYXRlKSArICc8L3NwYW4+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImxldmVyLWRlbHRhIiBpZD0icmV2LWRlbHRhLScgKyBsLmlkICsgJyIgc3R5bGU9Im1hcmdpbi10b3A6OHB4OyI+QmFzZSByZXZlbnVlOiAnICsgZm10UGxhaW4obC5iYXNlX2Ftb3VudCkgKyAnICZuYnNwO8K3Jm5ic3A7IG5vIGNoYW5nZTwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJsZXZlci1ub3RlIj4nICsgbC5ub3RlICsgJzwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJsZXZlci1jaXRlIj5Tb3VyY2U6ICcgKyBsLmNpdGF0aW9uICsgJzwvZGl2PicgKwogICAgICAnPC9kaXY+JwogICAgKTsKICB9CgogIERBVEEucmV2ZW51ZV9sZXZlcnMuZm9yRWFjaChmdW5jdGlvbihsKXsKICAgIHJldkdyaWQuaW5zZXJ0QWRqYWNlbnRIVE1MKCJiZWZvcmVlbmQiLCByZXZlbnVlQ2FyZEhUTUwobCkpOwogIH0pOwoKICAvLyAtLS0tLS0tLS0tIGJ1aWxkOiBzcGVuZGluZyBhY2NvcmRpb25zIC0tLS0tLS0tLS0KICBjb25zdCBhY2NvcmRpb25zUm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhcmVhQWNjb3JkaW9ucyIpOwoKICBmdW5jdGlvbiBmdW5kQmFySFRNTChsKXsKICAgIGNvbnN0IGdmUGN0ID0gKGwuZ2YvbC50b3RhbCoxMDApIHx8IDA7CiAgICBjb25zdCBkZWRQY3QgPSAobC5kZWQvbC50b3RhbCoxMDApIHx8IDA7CiAgICBjb25zdCBmZWRQY3QgPSAobC5mZWQvbC50b3RhbCoxMDApIHx8IDA7CiAgICByZXR1cm4gKAogICAgICAnPGRpdiBjbGFzcz0iZnVuZC1iYXIiPicgKwogICAgICAgICc8c3BhbiBjbGFzcz0ic2VnLWdmIiBzdHlsZT0id2lkdGg6JyArIGdmUGN0ICsgJyUiPjwvc3Bhbj4nICsKICAgICAgICAnPHNwYW4gY2xhc3M9InNlZy1kZWQiIHN0eWxlPSJ3aWR0aDonICsgZGVkUGN0ICsgJyUiPjwvc3Bhbj4nICsKICAgICAgICAnPHNwYW4gY2xhc3M9InNlZy1mZWQiIHN0eWxlPSJ3aWR0aDonICsgZmVkUGN0ICsgJyUiPjwvc3Bhbj4nICsKICAgICAgJzwvZGl2PicgKwogICAgICAnPGRpdiBjbGFzcz0iZnVuZC1sZWdlbmQiPicgKwogICAgICAgICc8c3BhbiBjbGFzcz0iZmwtZ2YiPkdlbmVyYWwgJyArIGdmUGN0LnRvRml4ZWQoMCkgKyAnJTwvc3Bhbj4nICsKICAgICAgICAnPHNwYW4gY2xhc3M9ImZsLWRlZCI+RGVkaWNhdGVkICcgKyBkZWRQY3QudG9GaXhlZCgwKSArICclPC9zcGFuPicgKwogICAgICAgICc8c3BhbiBjbGFzcz0iZmwtZmVkIj5GZWRlcmFsICcgKyBmZWRQY3QudG9GaXhlZCgwKSArICclPC9zcGFuPicgKwogICAgICAnPC9kaXY+JwogICAgKTsKICB9CgogIGZ1bmN0aW9uIGdmU2xpZGVySFRNTChsLCBpKXsKICAgIGNvbnN0IGxhYmVsID0gbC5jaGlsZHJlbiA/ICJHZW5lcmFsIEZ1bmQgPHNwYW4gY2xhc3M9XCJtYXN0ZXItdGFnXCI+c2NhbGVzIGFsbCBzdWItcHJvZ3JhbXM8L3NwYW4+IiA6ICJHZW5lcmFsIEZ1bmQiOwogICAgcmV0dXJuICgKICAgICAgJzxkaXYgY2xhc3M9InNsaWRlci1yb3ctbGFiZWwiPicgKwogICAgICAgICc8c3BhbiBjbGFzcz0ic2xpZGVyLWtpbmQgZ2YiPicgKyBsYWJlbCArICc8L3NwYW4+JyArCiAgICAgICAgJzxzcGFuIGNsYXNzPSJzbGlkZXItZmlncyI+PHNwYW4gY2xhc3M9InNsaWRlci1maWciIGlkPSJhZ2VuY3ktZ2YtJyArIGkgKyAnIj4nICsgZm10UGxhaW4obC5nZikgKyAnPC9zcGFuPiAnICsKICAgICAgICAgICc8c3BhbiBjbGFzcz0ic2xpZGVyLWRlbHRhIiBpZD0iYWdlbmN5LWRlbHRhLScgKyBpICsgJyI+bm8gY2hhbmdlPC9zcGFuPjwvc3Bhbj4nICsKICAgICAgJzwvZGl2PicgKwogICAgICAnPGlucHV0IHR5cGU9InJhbmdlIiBkYXRhLXNwZW5kPSInICsgaSArICciIGlkPSJzcGVuZC1pbnB1dC0nICsgaSArICciIG1pbj0iLTEwMCIgbWF4PSIxMDAiIHN0ZXA9IjEiIHZhbHVlPSIwIj4nICsKICAgICAgJzxkaXYgY2xhc3M9InNsaWRlci10aWNrcyI+PHNwYW4+XHUyMjEyMTAwJTwvc3Bhbj48c3Bhbj5GWTIwMjcgYXMgZW5hY3RlZDwvc3Bhbj48c3Bhbj4rMTAwJTwvc3Bhbj48L2Rpdj4nCiAgICApOwogIH0KCiAgZnVuY3Rpb24gZmVkU2xpZGVySFRNTChsLCBpKXsKICAgIGNvbnN0IGxpbmthYmxlID0gISFsLmZtYXBfcmVndWxhcjsKICAgIGNvbnN0IGxpbmtlZCA9IHN0YXRlLmxpbmtlZFtpXTsKICAgIGxldCBsaW5rUm93ID0gIiI7CiAgICBpZiAobGlua2FibGUpewogICAgICBsaW5rUm93ID0gJzxkaXYgY2xhc3M9Imxpbmstcm93Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJsaW5rLWlucHV0LScgKyBpICsgJyIgZGF0YS1saW5rPSInICsgaSArICciJyArIChsaW5rZWQgPyAnIGNoZWNrZWQnIDogJycpICsgJz4nICsKICAgICAgICAnPGxhYmVsIGZvcj0ibGluay1pbnB1dC0nICsgaSArICciPkxpbmsgdG8gR2VuZXJhbCBGdW5kICgnICsgKGwuZm1hcF9yZWd1bGFyKjEwMCkudG9GaXhlZCgyKSArICclIEZNQVApPC9sYWJlbD48L2Rpdj4nOwogICAgfQogICAgY29uc3QgbGFiZWwgPSAiRmVkZXJhbCBGdW5kcyIgKyAobC5jaGlsZHJlbiA/ICcgPHNwYW4gY2xhc3M9Im1hc3Rlci10YWciPnNjYWxlcyBhbGwgc3ViLXByb2dyYW1zPC9zcGFuPicgOiAnJykgKwogICAgICAnPHNwYW4gaWQ9ImZlZC1mb2xsb3dpbmctJyArIGkgKyAnIj4nICsgKGxpbmthYmxlICYmIGxpbmtlZCA/ICcgKGZvbGxvd2luZyBHRiknIDogJycpICsgJzwvc3Bhbj4nOwogICAgcmV0dXJuICgKICAgICAgbGlua1JvdyArCiAgICAgICc8ZGl2IGNsYXNzPSJzbGlkZXItcm93LWxhYmVsIj4nICsKICAgICAgICAnPHNwYW4gY2xhc3M9InNsaWRlci1raW5kIGZlZCI+JyArIGxhYmVsICsgJzwvc3Bhbj4nICsKICAgICAgICAnPHNwYW4gY2xhc3M9InNsaWRlci1maWdzIj48c3BhbiBjbGFzcz0ic2xpZGVyLWZpZyIgaWQ9ImFnZW5jeS1mZWQtJyArIGkgKyAnIj4nICsgZm10UGxhaW4obC5mZWQpICsgJzwvc3Bhbj4gJyArCiAgICAgICAgICAnPHNwYW4gY2xhc3M9InNsaWRlci1kZWx0YSIgaWQ9ImFnZW5jeS1mZWQtZGVsdGEtJyArIGkgKyAnIj5ubyBjaGFuZ2U8L3NwYW4+PC9zcGFuPicgKwogICAgICAnPC9kaXY+JyArCiAgICAgICc8aW5wdXQgdHlwZT0icmFuZ2UiIGNsYXNzPSJmZWQtc2xpZGVyIiBkYXRhLXNwZW5kLWZlZD0iJyArIGkgKyAnIiBpZD0ic3BlbmQtZmVkLWlucHV0LScgKyBpICsKICAgICAgICAnIiBtaW49Ii0xMDAiIG1heD0iMTAwIiBzdGVwPSIxIiB2YWx1ZT0iMCInICsgKChsaW5rYWJsZSAmJiBsaW5rZWQpID8gJyBkaXNhYmxlZCcgOiAnJykgKyAnPicgKwogICAgICAnPGRpdiBjbGFzcz0ic2xpZGVyLXRpY2tzIj48c3Bhbj5cdTIyMTIxMDAlPC9zcGFuPjxzcGFuPkZZMjAyNyBhcyBlbmFjdGVkPC9zcGFuPjxzcGFuPisxMDAlPC9zcGFuPjwvZGl2PicKICAgICk7CiAgfQoKICBmdW5jdGlvbiBjaGlsZFJvd0hUTUwobCwgaSwgY2hpbGQsIGNpKXsKICAgIGNvbnN0IGhhc0dGID0gY2hpbGQuZ2YgPiAwOwogICAgY29uc3QgaGFzRmVkID0gY2hpbGQuZmVkID4gMDsKICAgIGNvbnN0IGJpbGxUYWdzID0gKGNoaWxkLmJpbGxzIHx8IFtdKS5tYXAoZnVuY3Rpb24oYil7CiAgICAgIGNvbnN0IHVybCA9IGJpbGxVcmwoYik7CiAgICAgIHJldHVybiB1cmwgPyAnPGEgY2xhc3M9ImJpbGwtdGFnIiBocmVmPSInICsgdXJsICsgJyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPicgKyBiICsgJzwvYT4nIDogJyc7CiAgICB9KS5qb2luKCIiKTsKICAgIGxldCByb3dzID0gIiI7CiAgICBpZiAoaGFzR0YpewogICAgICByb3dzICs9ICc8ZGl2IGNsYXNzPSJzbGlkZXItcm93LWxhYmVsIj48c3BhbiBjbGFzcz0ic2xpZGVyLWtpbmQgZ2YiPkdlbmVyYWwgRnVuZDwvc3Bhbj4nICsKICAgICAgICAnPHNwYW4gY2xhc3M9InNsaWRlci1maWdzIj48c3BhbiBjbGFzcz0ic2xpZGVyLWZpZyIgaWQ9ImNoaWxkLWdmLScgKyBpICsgJy0nICsgY2kgKyAnIj4nICsgZm10UGxhaW4oY2hpbGQuZ2YpICsgJzwvc3Bhbj4gJyArCiAgICAgICAgJzxzcGFuIGNsYXNzPSJzbGlkZXItZGVsdGEiIGlkPSJjaGlsZC1kZWx0YS0nICsgaSArICctJyArIGNpICsgJyI+bm8gY2hhbmdlPC9zcGFuPjwvc3Bhbj48L2Rpdj4nICsKICAgICAgICAnPGlucHV0IHR5cGU9InJhbmdlIiBjbGFzcz0iY2hpbGQtc2xpZGVyIiBkYXRhLWNoaWxkPSInICsgaSArICc6JyArIGNpICsgJyIgaWQ9ImNoaWxkLWlucHV0LScgKyBpICsgJy0nICsgY2kgKyAnIiBtaW49Ii0xMDAiIG1heD0iMTAwIiBzdGVwPSIxIiB2YWx1ZT0iMCI+JzsKICAgIH0KICAgIGlmIChoYXNGZWQpewogICAgICByb3dzICs9ICc8ZGl2IGNsYXNzPSJzbGlkZXItcm93LWxhYmVsIj48c3BhbiBjbGFzcz0ic2xpZGVyLWtpbmQgZmVkIj5GZWRlcmFsIEZ1bmRzPC9zcGFuPicgKwogICAgICAgICc8c3BhbiBjbGFzcz0ic2xpZGVyLWZpZ3MiPjxzcGFuIGNsYXNzPSJzbGlkZXItZmlnIiBpZD0iY2hpbGQtZmVkLScgKyBpICsgJy0nICsgY2kgKyAnIj4nICsgZm10UGxhaW4oY2hpbGQuZmVkKSArICc8L3NwYW4+ICcgKwogICAgICAgICc8c3BhbiBjbGFzcz0ic2xpZGVyLWRlbHRhIiBpZD0iY2hpbGQtZmVkLWRlbHRhLScgKyBpICsgJy0nICsgY2kgKyAnIj5ubyBjaGFuZ2U8L3NwYW4+PC9zcGFuPjwvZGl2PicgKwogICAgICAgICc8aW5wdXQgdHlwZT0icmFuZ2UiIGNsYXNzPSJjaGlsZC1zbGlkZXIgZmVkLXNsaWRlciIgZGF0YS1jaGlsZC1mZWQ9IicgKyBpICsgJzonICsgY2kgKyAnIiBpZD0iY2hpbGQtZmVkLWlucHV0LScgKyBpICsgJy0nICsgY2kgKyAnIiBtaW49Ii0xMDAiIG1heD0iMTAwIiBzdGVwPSIxIiB2YWx1ZT0iMCI+JzsKICAgIH0KICAgIGlmICghaGFzR0YgJiYgIWhhc0ZlZCl7CiAgICAgIHJvd3MgPSBjaGlsZC50b3RhbCA9PT0gMAogICAgICAgID8gJzxkaXYgY2xhc3M9Im5vLWdmLW5vdGUiPiQwIGZvciBGWTIwMjcgXHUyMDE0IHNlZSBub3RlcyBiZWxvdyAob2Z0ZW4gbWVhbnMgdGhlIHByb2dyYW0gd2FzIGNvbnNvbGlkYXRlZCBpbnRvIGFub3RoZXIgbGluZSB0aGlzIHllYXIpLjwvZGl2PicKICAgICAgICA6ICc8ZGl2IGNsYXNzPSJuby1nZi1ub3RlIj4xMDAlIGRlZGljYXRlZCBmdW5kcyBcdTIwMTQgbm90IGFkanVzdGFibGUgaGVyZS48L2Rpdj4nOwogICAgfQogICAgY29uc3QgZGVzY0J0biA9IGNoaWxkLmRlc2NyaXB0aW9ucyAmJiBjaGlsZC5kZXNjcmlwdGlvbnMubGVuZ3RoCiAgICAgID8gJzxidXR0b24gY2xhc3M9ImRlc2MtdG9nZ2xlIiBkYXRhLWNoaWxkLWRlc2MtdG9nZ2xlPSInICsgaSArICc6JyArIGNpICsgJyI+V2hhdCB0aGlzIGZ1bmRzIFx1MjViZTwvYnV0dG9uPicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJkZXNjLWJveCIgaWQ9ImNoaWxkLWRlc2MtYm94LScgKyBpICsgJy0nICsgY2kgKyAnIj4nICsKICAgICAgICAgIGNoaWxkLmRlc2NyaXB0aW9ucy5tYXAoZnVuY3Rpb24oZCl7IHJldHVybiAnPHA+PHNwYW4gY2xhc3M9ImRlc2Mta2luZCI+JyArIChkLnN1Yl9wcm9ncmFtfHxjaGlsZC5uYW1lKSArICc8L3NwYW4+PGJyPicgKyBkLnRleHQgKyAnPC9wPic7IH0pLmpvaW4oIiIpICsKICAgICAgICAnPC9kaXY+JwogICAgICA6ICIiOwogICAgY29uc3Qgbm90ZUJ0biA9IGNoaWxkLm5vdGVzICYmIGNoaWxkLm5vdGVzLmxlbmd0aAogICAgICA/ICc8YnV0dG9uIGNsYXNzPSJjYXZlYXQtdG9nZ2xlIiBkYXRhLWNoaWxkLWNhdmVhdC10b2dnbGU9IicgKyBpICsgJzonICsgY2kgKyAnIj5Db25kaXRpb25zIFx1MjViZTwvYnV0dG9uPicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJjYXZlYXQtYm94IiBpZD0iY2hpbGQtY2F2ZWF0LWJveC0nICsgaSArICctJyArIGNpICsgJyI+JyArCiAgICAgICAgICBjaGlsZC5ub3Rlcy5tYXAoZnVuY3Rpb24obil7IHJldHVybiAnPHA+PHNwYW4gY2xhc3M9ImNhdmVhdC1raW5kIj4nICsgbi50eXBlICsgJzwvc3Bhbj48YnI+JyArIG4udGV4dCArICc8L3A+JzsgfSkuam9pbigiIikgKwogICAgICAgICc8L2Rpdj4nCiAgICAgIDogIiI7CiAgICByZXR1cm4gKAogICAgICAnPGRpdiBjbGFzcz0iY2hpbGQtcm93Ij4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iY2hpbGQtdG9wIj4nICsKICAgICAgICAgICc8c3BhbiBjbGFzcz0iY2hpbGQtbmFtZSI+JyArIGNoaWxkLm5hbWUgKyAnPC9zcGFuPicgKyBiaWxsVGFncyArCiAgICAgICAgICAnPHNwYW4gY2xhc3M9ImNoaWxkLXRvdGFsIj4nICsgZm10UGxhaW4oY2hpbGQudG90YWwpICsgJzwvc3Bhbj4nICsKICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgZnVuZEJhckhUTUwoY2hpbGQpICsKICAgICAgICByb3dzICsKICAgICAgICAnPGRpdiBjbGFzcz0iY2hpbGQtbGlua3MiPicgKyBkZXNjQnRuICsgbm90ZUJ0biArICc8L2Rpdj4nICsKICAgICAgJzwvZGl2PicKICAgICk7CiAgfQoKICBmdW5jdGlvbiBjaGlsZHJlblNlY3Rpb25IVE1MKGwsIGkpewogICAgaWYgKCFsLmNoaWxkcmVuIHx8ICFsLmNoaWxkcmVuLmxlbmd0aCkgcmV0dXJuICIiOwogICAgY29uc3Qgcm93cyA9IGwuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uKGMsIGNpKXsgcmV0dXJuIGNoaWxkUm93SFRNTChsLCBpLCBjLCBjaSk7IH0pLmpvaW4oIiIpOwogICAgcmV0dXJuICgKICAgICAgJzxidXR0b24gY2xhc3M9InN1YnByb2dyYW0tdG9nZ2xlIiBkYXRhLXN1YnByb2dyYW0tdG9nZ2xlPSInICsgaSArICciPlx1MjViOCBTaG93ICcgKyBsLmNoaWxkcmVuLmxlbmd0aCArICcgc3ViLXByb2dyYW1zPC9idXR0b24+JyArCiAgICAgICc8ZGl2IGNsYXNzPSJzdWJwcm9ncmFtLWxpc3QiIGlkPSJzdWJwcm9ncmFtLWxpc3QtJyArIGkgKyAnIj4nICsgcm93cyArICc8L2Rpdj4nCiAgICApOwogIH0KCiAgZnVuY3Rpb24gY2F2ZWF0Qm94SFRNTChsLCBpKXsKICAgIGxldCBwYXJ0cyA9IFtdOwogICAgaWYgKGwuZm1hcF9yZWd1bGFyKXsKICAgICAgY29uc3QgbXVsdCA9IChsLmZtYXBfcmVndWxhci8oMS1sLmZtYXBfcmVndWxhcikpOwogICAgICBwYXJ0cy5wdXNoKCc8cD48c3BhbiBjbGFzcz0iY2F2ZWF0LWtpbmQiPkZlZGVyYWwgbWF0Y2ggcmF0ZSAoRk1BUCk8L3NwYW4+PGJyPklkYWhvXCdzIHJlZ3VsYXIgTWVkaWNhaWQgRk1BUCBmb3IgRlkyMDI3IGlzICcgKwogICAgICAgIChsLmZtYXBfcmVndWxhcioxMDApLnRvRml4ZWQoMikgKyAnJSAoQ0hJUFwncyBlbmhhbmNlZCByYXRlIGlzICcgKyAobC5mbWFwX2VuaGFuY2VkX2NoaXAqMTAwKS50b0ZpeGVkKDIpICsKICAgICAgICAnJSksIHBlciBISFNcJ3Mgb2ZmaWNpYWwgRmVkZXJhbCBSZWdpc3RlciBub3RpY2UuIEZvciBldmVyeSAkMSBvZiBzdGF0ZSBzcGVuZGluZyBvbiByZWd1bGFyIEZNQVAtbWF0Y2hlZCBzZXJ2aWNlcywgdGhlIGZlZGVyYWwgJyArCiAgICAgICAgJ2dvdmVybm1lbnQgY29udHJpYnV0ZXMgYWJvdXQgJCcgKyBtdWx0LnRvRml4ZWQoMikgKyAnIGluIG1hdGNoIFx1MjAxNCBzbyBhICQxIHN0YXRlIGN1dCBjYW4gcmVtb3ZlIHJvdWdobHkgJCcgKyAoMSttdWx0KS50b0ZpeGVkKDIpICsKICAgICAgICAnIG9mIHRvdGFsIGZ1bmRlZCBjYXJlLiBUaGUgRGl2aXNpb25cJ3MgJyArIGZtdFBsYWluKGwuZ2YpICsgJyBHZW5lcmFsIEZ1bmQgbGluZSBibGVuZHMgc2V2ZXJhbCBtYXRjaCByYXRlcyAocmVndWxhciBGTUFQLCBBQ0EgJyArCiAgICAgICAgJ2V4cGFuc2lvbiBhdCBhIGZpeGVkIDkwJSBmZWRlcmFsLCBDSElQXCdzIGVuaGFuY2VkIHJhdGUsIH41MCUgZm9yIGFkbWluaXN0cmF0aW9uKSwgc28gdGhpcyBtdWx0aXBsaWVyIGFwcGxpZXMgbW9zdCBkaXJlY3RseSB0byAnICsKICAgICAgICAndHJhZGl0aW9uYWwgTWVkaWNhaWQgc2VydmljZXMsIG5vdCB0aGUgd2hvbGUgbGluZS4gVGhlIEZlZGVyYWwgRnVuZHMgc2xpZGVyIGFib3ZlIGlzIGxpbmtlZCB0byB0aGlzIHJhdGUgYnkgZGVmYXVsdCBcdTIwMTQgdW5jaGVjayAnICsKICAgICAgICAnIkxpbmsgdG8gR2VuZXJhbCBGdW5kIiB0byBtb3ZlIGl0IGluZGVwZW5kZW50bHkuIDxzcGFuIHN0eWxlPSJvcGFjaXR5Oi43Ij5Tb3VyY2U6ICcgKyBsLmZtYXBfY2l0YXRpb24gKyAnPC9zcGFuPjwvcD4nKTsKICAgIH0gZWxzZSBpZiAobC5mZWRfc2hhcmUgPj0gMC4zKXsKICAgICAgcGFydHMucHVzaCgnPHA+PHNwYW4gY2xhc3M9ImNhdmVhdC1raW5kIj5GZWRlcmFsIG1hdGNoPC9zcGFuPjxicj4nICsgKGwuZmVkX3NoYXJlKjEwMCkudG9GaXhlZCgwKSArICclIG9mIHRoaXMgcHJvZ3JhbVwncyB0b3RhbCBmdW5kaW5nIGlzIGZlZGVyYWwuIEN1dHRpbmcgdGhlIHN0YXRlIEdlbmVyYWwgRnVuZCBzaGFyZSBkb2VzblwndCBuZWNlc3NhcmlseSByZWR1Y2UgdGhlIGZlZGVyYWwgZG9sbGFycyBcdTIwMTQgYW5kIGZvciBhIG1hdGNoZWQgcHJvZ3JhbSwgaXQgY2FuIG1lYW4gZm9yZmVpdGluZyBmZWRlcmFsIG1hdGNoIG9uIHRvcCBvZiB0aGUgc3RhdGUgY3V0LjwvcD4nKTsKICAgIH0KICAgIGlmIChsLmFtZW5kc19jb2RlKXsKICAgICAgcGFydHMucHVzaCgnPHA+PHNwYW4gY2xhc3M9ImNhdmVhdC1raW5kIj5CZXlvbmQgYSBidWRnZXQgYmlsbDwvc3Bhbj48YnI+VGhpcyBwcm9ncmFtXCdzIEZZMjAyNyBidWRnZXQgYmlsbCBhbHJlYWR5IGFtZW5kZWQgSWRhaG8gQ29kZSBvciBzZXNzaW9uIGxhdywgbm90IGp1c3QgYXBwcm9wcmlhdGVkIGRvbGxhcnMuIEEgaHlwb3RoZXRpY2FsIGN1dCBvZiBzaW1pbGFyIHNjb3BlIHdvdWxkIGxpa2VseSBuZWVkIHRoZSBzYW1lLjwvcD4nKTsKICAgIH0KICAgIGwubm90ZXMuZm9yRWFjaChmdW5jdGlvbihuKXsKICAgICAgaWYgKG4udHlwZSA9PT0gIkZFREVSQUwgTUFUQ0ggUkFURSAoRk1BUCkiKSByZXR1cm47IC8vIGFscmVhZHkgcmVuZGVyZWQgcHJlY2lzZWx5IGFib3ZlCiAgICAgIHBhcnRzLnB1c2goJzxwPjxzcGFuIGNsYXNzPSJjYXZlYXQta2luZCI+JyArIG4udHlwZSArICc8L3NwYW4+PGJyPicgKyBuLnRleHQgKyAnPC9wPicpOwogICAgfSk7CiAgICBpZiAocGFydHMubGVuZ3RoID09PSAwKSByZXR1cm4gIiI7CiAgICByZXR1cm4gKAogICAgICAnPGJ1dHRvbiBjbGFzcz0iY2F2ZWF0LXRvZ2dsZSIgZGF0YS1jYXZlYXQtdG9nZ2xlPSInICsgaSArICciPlNob3cgbGVnaXNsYXRpdmUgY29uZGl0aW9ucyAmYW1wOyBjb250ZXh0IFx1MjViZTwvYnV0dG9uPicgKwogICAgICAnPGRpdiBjbGFzcz0iY2F2ZWF0LWJveCIgaWQ9ImNhdmVhdC1ib3gtJyArIGkgKyAnIj4nICsgcGFydHMuam9pbigiIikgKyAnPC9kaXY+JwogICAgKTsKICB9CgogIGZ1bmN0aW9uIGRlc2NCb3hIVE1MKGwsIGkpewogICAgaWYgKCFsLmRlc2NyaXB0aW9ucyB8fCBsLmRlc2NyaXB0aW9ucy5sZW5ndGggPT09IDApIHJldHVybiAiIjsKICAgIGNvbnN0IHBhcnRzID0gbC5kZXNjcmlwdGlvbnMubWFwKGZ1bmN0aW9uKGQpewogICAgICBjb25zdCBsYWJlbCA9IGQuc3ViX3Byb2dyYW0gfHwgbC5hZ2VuY3k7CiAgICAgIHJldHVybiAnPHA+PHNwYW4gY2xhc3M9ImRlc2Mta2luZCI+JyArIGxhYmVsICsgJzwvc3Bhbj48YnI+JyArIGQudGV4dCArICc8L3A+JzsKICAgIH0pOwogICAgcmV0dXJuICgKICAgICAgJzxidXR0b24gY2xhc3M9ImRlc2MtdG9nZ2xlIiBkYXRhLWRlc2MtdG9nZ2xlPSInICsgaSArICciPlNob3cgd2hhdCB0aGlzIGZ1bmRzIFx1MjViZTwvYnV0dG9uPicgKwogICAgICAnPGRpdiBjbGFzcz0iZGVzYy1ib3giIGlkPSJkZXNjLWJveC0nICsgaSArICciPicgKyBwYXJ0cy5qb2luKCIiKSArICc8L2Rpdj4nCiAgICApOwogIH0KCiAgZnVuY3Rpb24gYmlsbFVybChiaWxsKXsKICAgIGNvbnN0IG0gPSAvXihbQS1aXSspKFxkKykkLy5leGVjKGJpbGwpOwogICAgaWYgKCFtKSByZXR1cm4gbnVsbDsKICAgIGxldCBudW0gPSBtWzJdOwogICAgd2hpbGUgKG51bS5sZW5ndGggPCA0KSBudW0gPSAiMCIgKyBudW07CiAgICByZXR1cm4gImh0dHBzOi8vbGVnaXNsYXR1cmUuaWRhaG8uZ292L3Nlc3Npb25pbmZvLzIwMjYvbGVnaXNsYXRpb24vIiArIG1bMV0gKyBudW0gKyAiLyI7CiAgfQoKICBmdW5jdGlvbiBhZ2VuY3lSb3dIVE1MKGwsIGkpewogICAgY29uc3QgYmlsbFRhZ3MgPSAobC5iaWxscyB8fCBbXSkubWFwKGZ1bmN0aW9uKGIpewogICAgICBjb25zdCB1cmwgPSBiaWxsVXJsKGIpOwogICAgICByZXR1cm4gdXJsCiAgICAgICAgPyAnPGEgY2xhc3M9ImJpbGwtdGFnIiBocmVmPSInICsgdXJsICsgJyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPicgKyBiICsgJzwvYT4nCiAgICAgICAgOiAnPHNwYW4gY2xhc3M9ImJpbGwtdGFnIj4nICsgYiArICc8L3NwYW4+JzsKICAgIH0pLmpvaW4oIiIpOwogICAgY29uc3QgY29kZVRhZyA9IGwuYW1lbmRzX2NvZGUgPyAnPHNwYW4gY2xhc3M9ImNvZGUtdGFnIj5hbWVuZHMgY29kZTwvc3Bhbj4nIDogIiI7CiAgICBjb25zdCBoYXNHRiA9IGwuZ2YgPiAwOwogICAgY29uc3QgaGFzRmVkID0gbC5mZWQgPiAwOwoKICAgIGxldCBib2R5ID0gIiI7CiAgICBpZiAoaGFzR0YpIGJvZHkgKz0gZ2ZTbGlkZXJIVE1MKGwsIGkpOwogICAgaWYgKGhhc0ZlZCkgYm9keSArPSBmZWRTbGlkZXJIVE1MKGwsIGkpOwogICAgaWYgKCFoYXNHRiAmJiAhaGFzRmVkKXsKICAgICAgYm9keSA9ICc8ZGl2IGNsYXNzPSJuby1nZi1ub3RlIj4xMDAlIGRlZGljYXRlZCBmdW5kcyBcdTIwMTQgbm90IGFkanVzdGFibGUgaGVyZS48L2Rpdj4nOwogICAgfSBlbHNlIGlmICghaGFzRmVkKXsKICAgICAgYm9keSArPSAnPGRpdiBjbGFzcz0ibm8tZ2Ytbm90ZSIgc3R5bGU9Im1hcmdpbi10b3A6OHB4OyI+Tm8gZmVkZXJhbCBmdW5kaW5nIGZvciB0aGlzIHByb2dyYW0uPC9kaXY+JzsKICAgIH0gZWxzZSBpZiAoIWhhc0dGKXsKICAgICAgYm9keSArPSAnPGRpdiBjbGFzcz0ibm8tZ2Ytbm90ZSIgc3R5bGU9Im1hcmdpbi10b3A6OHB4OyI+Tm8gR2VuZXJhbCBGdW5kIGFwcHJvcHJpYXRpb24gXHUyMDE0IHRoZSBzbGlkZXIgYWJvdmUgYWRqdXN0cyBmZWRlcmFsIGZ1bmRzIG9ubHkuPC9kaXY+JzsKICAgIH0KCiAgICByZXR1cm4gKAogICAgICAnPGRpdiBjbGFzcz0iYWdlbmN5LXJvdyI+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImFnZW5jeS10b3AiPicgKwogICAgICAgICAgJzxkaXYgY2xhc3M9ImFnZW5jeS1uYW1lLXdyYXAiPjxzcGFuIGNsYXNzPSJhZ2VuY3ktbmFtZSI+JyArIGwuYWdlbmN5ICsgJzwvc3Bhbj4nICsgYmlsbFRhZ3MgKyBjb2RlVGFnICsgJzwvZGl2PicgKwogICAgICAgICAgJzxkaXYgY2xhc3M9ImFnZW5jeS1maWd1cmVzIj48ZGl2IGNsYXNzPSJhZ2VuY3ktZ2YiPicgKyBmbXRQbGFpbihsLnRvdGFsKSArICcgdG90YWw8L2Rpdj48L2Rpdj4nICsKICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgZnVuZEJhckhUTUwobCkgKwogICAgICAgIGJvZHkgKwogICAgICAgIGNoaWxkcmVuU2VjdGlvbkhUTUwobCwgaSkgKwogICAgICAgIGRlc2NCb3hIVE1MKGwsIGkpICsKICAgICAgICBjYXZlYXRCb3hIVE1MKGwsIGkpICsKICAgICAgJzwvZGl2PicKICAgICk7CiAgfQoKICBjb25zdCBhcmVhSW5kZXggPSB7fTsKICBBUkVBX09SREVSLmZvckVhY2goZnVuY3Rpb24oYXJlYSwgaWR4KXsKICAgIGNvbnN0IGxldmVycyA9IFtdOwogICAgREFUQS5zcGVuZGluZ19sZXZlcnMuZm9yRWFjaChmdW5jdGlvbihsLCBpKXsgaWYgKGwuYXJlYSA9PT0gYXJlYSkgbGV2ZXJzLnB1c2goW2wsaV0pOyB9KTsKICAgIGNvbnN0IGFyZWFHRiA9IGxldmVycy5yZWR1Y2UoZnVuY3Rpb24oc3VtLCBwYWlyKXsgcmV0dXJuIHN1bSArIHBhaXJbMF0uZ2Y7IH0sIDApOwogICAgY29uc3QgYXJlYVRvdGFsID0gbGV2ZXJzLnJlZHVjZShmdW5jdGlvbihzdW0sIHBhaXIpeyByZXR1cm4gc3VtICsgcGFpclswXS50b3RhbDsgfSwgMCk7CiAgICBjb25zdCBudW0gPSBTdHJpbmcoaWR4KzEpLnBhZFN0YXJ0KDIsIjAiKTsKICAgIGNvbnN0IHJvd3NIVE1MID0gbGV2ZXJzLm1hcChmdW5jdGlvbihwYWlyKXsgcmV0dXJuIGFnZW5jeVJvd0hUTUwocGFpclswXSwgcGFpclsxXSk7IH0pLmpvaW4oIiIpOwogICAgY29uc3QgaHRtbCA9ICgKICAgICAgJzxkZXRhaWxzIGNsYXNzPSJhcmVhIj4nICsKICAgICAgICAnPHN1bW1hcnkgY2xhc3M9ImFyZWEtc3VtbWFyeSI+JyArCiAgICAgICAgICAnPHNwYW4gY2xhc3M9ImFyZWEtY2hldnJvbiI+XHUyNWI4PC9zcGFuPicgKwogICAgICAgICAgJzxzcGFuIGNsYXNzPSJhcmVhLW5hbWUiPicgKyBudW0gKyAnICZuYnNwOycgKyBhcmVhICsgJzwvc3Bhbj4nICsKICAgICAgICAgICc8c3BhbiBjbGFzcz0iYXJlYS1maWd1cmVzIj4nICsKICAgICAgICAgICAgJzxzcGFuPjxzcGFuIGNsYXNzPSJhcmVhLWZpZ3VyZS1sYWJlbCI+R2VuZXJhbCBGdW5kPC9zcGFuPjxicj48c3BhbiBjbGFzcz0iYXJlYS1maWd1cmUtdmFsdWUiIGlkPSJhcmVhLWdmLScgKyBpZHggKyAnIj4nICsgZm10UGxhaW4oYXJlYUdGKSArICc8L3NwYW4+PC9zcGFuPicgKwogICAgICAgICAgICAnPHNwYW4+PHNwYW4gY2xhc3M9ImFyZWEtZmlndXJlLWxhYmVsIj5BbGwgRnVuZHM8L3NwYW4+PGJyPjxzcGFuIGNsYXNzPSJhcmVhLWZpZ3VyZS12YWx1ZSI+JyArIGZtdFBsYWluKGFyZWFUb3RhbCkgKyAnPC9zcGFuPjwvc3Bhbj4nICsKICAgICAgICAgICc8L3NwYW4+JyArCiAgICAgICAgJzwvc3VtbWFyeT4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iYXJlYS1ib2R5Ij4nICsgcm93c0hUTUwgKyAnPC9kaXY+JyArCiAgICAgICc8L2RldGFpbHM+JwogICAgKTsKICAgIGFjY29yZGlvbnNSb290Lmluc2VydEFkamFjZW50SFRNTCgiYmVmb3JlZW5kIiwgaHRtbCk7CiAgICBhcmVhSW5kZXhbYXJlYV0gPSB7IGlkeCwgYmFzZUdGOiBhcmVhR0YsIG1lbWJlcklkeDogbGV2ZXJzLm1hcChmdW5jdGlvbihwKXtyZXR1cm4gcFsxXTt9KSB9OwogIH0pOwoKICAvLyAtLS0tLS0tLS0tIHVwZGF0ZSAtLS0tLS0tLS0tCiAgZnVuY3Rpb24gdXBkYXRlQWxsKCl7CiAgICBjb25zdCB0ID0gdG90YWxzKCk7CiAgICBjb25zdCBiYWxFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsZWRnZXJCYWxhbmNlIik7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGVkZ2VyUmV2ZW51ZSIpLnRleHRDb250ZW50ID0gZm10UGxhaW4odC5yZXZlbnVlKTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsZWRnZXJBcHByb3AiKS50ZXh0Q29udGVudCA9IGZtdFBsYWluKHQuYXBwcm9wKTsKICAgIGJhbEVsLnRleHRDb250ZW50ID0gZm10UGxhaW4odC5iYWxhbmNlKTsKICAgIGJhbEVsLmNsYXNzTGlzdC5yZW1vdmUoImRlZmljaXQiLCJzdXJwbHVzIik7CiAgICBiYWxFbC5jbGFzc0xpc3QuYWRkKHQuYmFsYW5jZSA8IDAgPyAiZGVmaWNpdCIgOiAic3VycGx1cyIpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxlZGdlclJldmVudWVEZWx0YSIpLnRleHRDb250ZW50ID0gZm10U2lnbmVkKHQucmV2RGVsdGEpICsgIiB2cy4gZW5hY3RlZCI7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGVkZ2VyQXByb3BEZWx0YSIpLnRleHRDb250ZW50ID0gZm10U2lnbmVkKHQuc3BlbmREZWx0YSkgKyAiIHZzLiBlbmFjdGVkIjsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsZWRnZXJCYWxhbmNlTm90ZSIpLnRleHRDb250ZW50ID0gdC5iYWxhbmNlIDwgMCA/ICJzaG9ydGZhbGwiIDogInN1cnBsdXMiOwoKICAgIGNvbnN0IGZlZFN0cmlwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxlZGdlckZlZFN0cmlwIik7CiAgICBpZiAoTWF0aC5hYnModC5mZWREZWx0YSkgPiA1MDAwMCl7CiAgICAgIGZlZFN0cmlwLmNsYXNzTGlzdC5hZGQoInNob3ciKTsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxlZGdlckZlZFZhbHVlIikudGV4dENvbnRlbnQgPSBmbXRTaWduZWQodC5mZWREZWx0YSk7CiAgICB9IGVsc2UgewogICAgICBmZWRTdHJpcC5jbGFzc0xpc3QucmVtb3ZlKCJzaG93Iik7CiAgICB9CgogICAgREFUQS5yZXZlbnVlX2xldmVycy5mb3JFYWNoKGZ1bmN0aW9uKGwpewogICAgICBjb25zdCBkID0gcmV2ZW51ZURlbHRhKGwpOwogICAgICBjb25zdCBkZWx0YUVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJldi1kZWx0YS0iICsgbC5pZCk7CiAgICAgIGlmIChsLnR5cGUgPT09ICJ0b2dnbGUiKXsKICAgICAgICBkZWx0YUVsLnRleHRDb250ZW50ID0gc3RhdGUucmV2ZW51ZVtsLmlkXSA/IChmbXRTaWduZWQoZCkgKyAiIHRvIEdlbmVyYWwgRnVuZCIpIDogIm5vIGNoYW5nZSI7CiAgICAgICAgZGVsdGFFbC5jbGFzc05hbWUgPSAibGV2ZXItZGVsdGEgIiArIChkIDwgMCA/ICJuZWciIDogKGQgPiAwID8gInBvcyIgOiAiIikpOwogICAgICB9IGVsc2UgaWYgKGwudW5pdCA9PT0gImRvbGxhcnNfcGVyX3BlcnNvbiIpewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXYtZmlndXJlLSIgKyBsLmlkKS50ZXh0Q29udGVudCA9ICIkIiArIHN0YXRlLnJldmVudWVbbC5pZF07CiAgICAgICAgZGVsdGFFbC50ZXh0Q29udGVudCA9ICJHZW5lcmFsIEZ1bmQgaW1wYWN0OiAiICsgZm10U2lnbmVkKGQpOwogICAgICAgIGRlbHRhRWwuY2xhc3NOYW1lID0gImxldmVyLWRlbHRhICIgKyAoZCA8IDAgPyAibmVnIiA6IChkID4gMCA/ICJwb3MiIDogIiIpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmV2LWZpZ3VyZS0iICsgbC5pZCkudGV4dENvbnRlbnQgPSBwY3Qoc3RhdGUucmV2ZW51ZVtsLmlkXSk7CiAgICAgICAgZGVsdGFFbC5pbm5lckhUTUwgPSAiQmFzZSByZXZlbnVlOiAiICsgZm10UGxhaW4obC5iYXNlX2Ftb3VudCkgKyAiICZuYnNwO1x1MDBiNyZuYnNwOyAiICsgZm10U2lnbmVkKGQpOwogICAgICAgIGRlbHRhRWwuY2xhc3NOYW1lID0gImxldmVyLWRlbHRhICIgKyAoZCA8IDAgPyAibmVnIiA6IChkID4gMCA/ICJwb3MiIDogIiIpKTsKICAgICAgfQogICAgfSk7CgogICAgREFUQS5zcGVuZGluZ19sZXZlcnMuZm9yRWFjaChmdW5jdGlvbihsLCBpKXsKICAgICAgaWYgKGwuZ2YgPiAwKXsKICAgICAgICBjb25zdCBkID0gc3BlbmRpbmdEZWx0YUdGKGwsIGkpOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhZ2VuY3ktZ2YtIiArIGkpLnRleHRDb250ZW50ID0gZm10UGxhaW4obC5nZiArIGQpOwogICAgICAgIGNvbnN0IGRlbHRhRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWdlbmN5LWRlbHRhLSIgKyBpKTsKICAgICAgICBkZWx0YUVsLnRleHRDb250ZW50ID0gZm10U2lnbmVkKGQpOwogICAgICAgIGRlbHRhRWwuY2xhc3NOYW1lID0gInNsaWRlci1kZWx0YSAiICsgKGQgPCAwID8gIm5lZyIgOiAoZCA+IDAgPyAicG9zIiA6ICIiKSk7CiAgICAgIH0KICAgICAgaWYgKGwuZmVkID4gMCl7CiAgICAgICAgY29uc3QgZmQgPSBzcGVuZGluZ0RlbHRhRmVkKGwsIGkpOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhZ2VuY3ktZmVkLSIgKyBpKS50ZXh0Q29udGVudCA9IGZtdFBsYWluKGwuZmVkICsgZmQpOwogICAgICAgIGNvbnN0IGZkZWx0YUVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFnZW5jeS1mZWQtZGVsdGEtIiArIGkpOwogICAgICAgIGZkZWx0YUVsLnRleHRDb250ZW50ID0gZm10U2lnbmVkKGZkKTsKICAgICAgICBmZGVsdGFFbC5jbGFzc05hbWUgPSAic2xpZGVyLWRlbHRhICIgKyAoZmQgPCAwID8gIm5lZyIgOiAoZmQgPiAwID8gInBvcyIgOiAiIikpOwogICAgICAgIC8vIGtlZXAgdGhlIChwb3NzaWJseSBkaXNhYmxlZCkgZmVkZXJhbCBzbGlkZXIncyB2aXN1YWwgcG9zaXRpb24gaG9uZXN0IHdoZW4gbGlua2VkCiAgICAgICAgaWYgKGwuZm1hcF9yZWd1bGFyICYmIHN0YXRlLmxpbmtlZFtpXSl7CiAgICAgICAgICBjb25zdCBlcXVpdlBjdCA9IGwuZmVkICE9PSAwID8gKGZkIC8gbC5mZWQgKiAxMDApIDogMDsKICAgICAgICAgIGNvbnN0IGZlZElucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZW5kLWZlZC1pbnB1dC0iICsgaSk7CiAgICAgICAgICBpZiAoZmVkSW5wdXQpIGZlZElucHV0LnZhbHVlID0gTWF0aC5tYXgoLTEwMCwgTWF0aC5taW4oMTAwLCBlcXVpdlBjdCkpOwogICAgICAgIH0KICAgICAgfQogICAgICBpZiAobC5jaGlsZHJlbil7CiAgICAgICAgbC5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGMsIGNpKXsKICAgICAgICAgIGlmIChjLmdmID4gMCl7CiAgICAgICAgICAgIGNvbnN0IGNkID0gY2hpbGREZWx0YUdGKGwsIGksIGNpKTsKICAgICAgICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQtZ2YtIiArIGkgKyAiLSIgKyBjaSk7CiAgICAgICAgICAgIGlmIChlbCkgZWwudGV4dENvbnRlbnQgPSBmbXRQbGFpbihjLmdmICsgY2QpOwogICAgICAgICAgICBjb25zdCBkZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQtZGVsdGEtIiArIGkgKyAiLSIgKyBjaSk7CiAgICAgICAgICAgIGlmIChkZWwpeyBkZWwudGV4dENvbnRlbnQgPSBmbXRTaWduZWQoY2QpOyBkZWwuY2xhc3NOYW1lID0gInNsaWRlci1kZWx0YSAiICsgKGNkIDwgMCA/ICJuZWciIDogKGNkID4gMCA/ICJwb3MiIDogIiIpKTsgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKGMuZmVkID4gMCl7CiAgICAgICAgICAgIGNvbnN0IGNmZCA9IGNoaWxkRGVsdGFGZWQobCwgaSwgY2kpOwogICAgICAgICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZC1mZWQtIiArIGkgKyAiLSIgKyBjaSk7CiAgICAgICAgICAgIGlmIChlbCkgZWwudGV4dENvbnRlbnQgPSBmbXRQbGFpbihjLmZlZCArIGNmZCk7CiAgICAgICAgICAgIGNvbnN0IGRlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZC1mZWQtZGVsdGEtIiArIGkgKyAiLSIgKyBjaSk7CiAgICAgICAgICAgIGlmIChkZWwpeyBkZWwudGV4dENvbnRlbnQgPSBmbXRTaWduZWQoY2ZkKTsgZGVsLmNsYXNzTmFtZSA9ICJzbGlkZXItZGVsdGEgIiArIChjZmQgPCAwID8gIm5lZyIgOiAoY2ZkID4gMCA/ICJwb3MiIDogIiIpKTsgfQogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICB9CiAgICB9KTsKCiAgICBPYmplY3Qua2V5cyhhcmVhSW5kZXgpLmZvckVhY2goZnVuY3Rpb24oYXJlYSl7CiAgICAgIGNvbnN0IGluZm8gPSBhcmVhSW5kZXhbYXJlYV07CiAgICAgIGxldCBzdW0gPSAwOwogICAgICBpbmZvLm1lbWJlcklkeC5mb3JFYWNoKGZ1bmN0aW9uKGkpeyBzdW0gKz0gREFUQS5zcGVuZGluZ19sZXZlcnNbaV0uZ2YgKyBzcGVuZGluZ0RlbHRhR0YoREFUQS5zcGVuZGluZ19sZXZlcnNbaV0sIGkpOyB9KTsKICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXJlYS1nZi0iICsgaW5mby5pZHgpOwogICAgICBpZiAoZWwpIGVsLnRleHRDb250ZW50ID0gZm10UGxhaW4oc3VtKTsKICAgIH0pOwogIH0KCiAgLy8gLS0tLS0tLS0tLSBldmVudHMgLS0tLS0tLS0tLQogIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBmdW5jdGlvbihlKXsKICAgIGNvbnN0IHJldklkID0gZS50YXJnZXQuZ2V0QXR0cmlidXRlKCJkYXRhLXJldiIpOwogICAgY29uc3Qgc3BlbmRJZHggPSBlLnRhcmdldC5nZXRBdHRyaWJ1dGUoImRhdGEtc3BlbmQiKTsKICAgIGNvbnN0IHNwZW5kRmVkSWR4ID0gZS50YXJnZXQuZ2V0QXR0cmlidXRlKCJkYXRhLXNwZW5kLWZlZCIpOwogICAgY29uc3QgY2hpbGRLZXkgPSBlLnRhcmdldC5nZXRBdHRyaWJ1dGUoImRhdGEtY2hpbGQiKTsKICAgIGNvbnN0IGNoaWxkRmVkS2V5ID0gZS50YXJnZXQuZ2V0QXR0cmlidXRlKCJkYXRhLWNoaWxkLWZlZCIpOwogICAgaWYgKHJldklkICE9PSBudWxsKXsKICAgICAgY29uc3QgbGV2ZXIgPSBEQVRBLnJldmVudWVfbGV2ZXJzLmZpbmQoZnVuY3Rpb24obCl7IHJldHVybiBsLmlkID09PSByZXZJZDsgfSk7CiAgICAgIHN0YXRlLnJldmVudWVbcmV2SWRdID0gKGxldmVyLnR5cGUgPT09ICJ0b2dnbGUiKSA/IGUudGFyZ2V0LmNoZWNrZWQgOiBwYXJzZUZsb2F0KGUudGFyZ2V0LnZhbHVlKTsKICAgICAgdXBkYXRlQWxsKCk7CiAgICB9IGVsc2UgaWYgKHNwZW5kSWR4ICE9PSBudWxsKXsKICAgICAgY29uc3QgdmFsID0gcGFyc2VGbG9hdChlLnRhcmdldC52YWx1ZSk7CiAgICAgIHN0YXRlLnNwZW5kaW5nW3NwZW5kSWR4XSA9IHZhbDsKICAgICAgY29uc3QgbGV2ZXIgPSBEQVRBLnNwZW5kaW5nX2xldmVyc1tzcGVuZElkeF07CiAgICAgIGlmIChsZXZlci5jaGlsZHJlbil7CiAgICAgICAgLy8gbWFzdGVyIGNvbnRyb2w6IGNhc2NhZGUgdG8gZXZlcnkgY2hpbGQncyBHRiBzbGlkZXIKICAgICAgICBzdGF0ZS5jaGlsZFBjdFtzcGVuZElkeF0gPSBsZXZlci5jaGlsZHJlbi5tYXAoZnVuY3Rpb24oKXsgcmV0dXJuIHZhbDsgfSk7CiAgICAgICAgbGV2ZXIuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbihjLCBjaSl7CiAgICAgICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZC1pbnB1dC0iICsgc3BlbmRJZHggKyAiLSIgKyBjaSk7CiAgICAgICAgICBpZiAoZWwpIGVsLnZhbHVlID0gdmFsOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIHVwZGF0ZUFsbCgpOwogICAgfSBlbHNlIGlmIChzcGVuZEZlZElkeCAhPT0gbnVsbCl7CiAgICAgIGNvbnN0IHZhbCA9IHBhcnNlRmxvYXQoZS50YXJnZXQudmFsdWUpOwogICAgICBzdGF0ZS5zcGVuZGluZ0ZlZFtzcGVuZEZlZElkeF0gPSB2YWw7CiAgICAgIGNvbnN0IGxldmVyID0gREFUQS5zcGVuZGluZ19sZXZlcnNbc3BlbmRGZWRJZHhdOwogICAgICBpZiAobGV2ZXIuY2hpbGRyZW4pewogICAgICAgIHN0YXRlLmNoaWxkRmVkUGN0W3NwZW5kRmVkSWR4XSA9IGxldmVyLmNoaWxkcmVuLm1hcChmdW5jdGlvbigpeyByZXR1cm4gdmFsOyB9KTsKICAgICAgICBsZXZlci5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGMsIGNpKXsKICAgICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkLWZlZC1pbnB1dC0iICsgc3BlbmRGZWRJZHggKyAiLSIgKyBjaSk7CiAgICAgICAgICBpZiAoZWwpIGVsLnZhbHVlID0gdmFsOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIHVwZGF0ZUFsbCgpOwogICAgfSBlbHNlIGlmIChjaGlsZEtleSAhPT0gbnVsbCl7CiAgICAgIGNvbnN0IHBhcnRzID0gY2hpbGRLZXkuc3BsaXQoIjoiKTsgY29uc3QgaSA9IHBhcnRzWzBdLCBjaSA9IHBhcnNlSW50KHBhcnRzWzFdLCAxMCk7CiAgICAgIHN0YXRlLmNoaWxkUGN0W2ldW2NpXSA9IHBhcnNlRmxvYXQoZS50YXJnZXQudmFsdWUpOwogICAgICB1cGRhdGVBbGwoKTsKICAgIH0gZWxzZSBpZiAoY2hpbGRGZWRLZXkgIT09IG51bGwpewogICAgICBjb25zdCBwYXJ0cyA9IGNoaWxkRmVkS2V5LnNwbGl0KCI6Iik7IGNvbnN0IGkgPSBwYXJ0c1swXSwgY2kgPSBwYXJzZUludChwYXJ0c1sxXSwgMTApOwogICAgICBzdGF0ZS5jaGlsZEZlZFBjdFtpXVtjaV0gPSBwYXJzZUZsb2F0KGUudGFyZ2V0LnZhbHVlKTsKICAgICAgdXBkYXRlQWxsKCk7CiAgICB9CiAgfSk7CgogIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgZnVuY3Rpb24oZSl7CiAgICBjb25zdCBsaW5rSWR4ID0gZS50YXJnZXQuZ2V0QXR0cmlidXRlKCJkYXRhLWxpbmsiKTsKICAgIGlmIChsaW5rSWR4ICE9PSBudWxsKXsKICAgICAgY29uc3QgaSA9IGxpbmtJZHg7CiAgICAgIGNvbnN0IGwgPSBEQVRBLnNwZW5kaW5nX2xldmVyc1tpXTsKICAgICAgY29uc3Qgbm93TGlua2VkID0gZS50YXJnZXQuY2hlY2tlZDsKICAgICAgY29uc3QgZmVkSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlbmQtZmVkLWlucHV0LSIgKyBpKTsKICAgICAgaWYgKCFub3dMaW5rZWQpewogICAgICAgIC8vIHByZXNlcnZlIGNvbnRpbnVpdHk6IHNlZWQgdGhlIGluZGVwZW5kZW50IHNsaWRlciBhdCBpdHMgY3VycmVudCBkZXJpdmVkIHBvc2l0aW9uCiAgICAgICAgY29uc3QgY3VycmVudEVxdWl2UGN0ID0gZmVkSW5wdXQgPyBwYXJzZUZsb2F0KGZlZElucHV0LnZhbHVlKSA6IDA7CiAgICAgICAgc3RhdGUubGlua2VkW2ldID0gZmFsc2U7CiAgICAgICAgaWYgKGZlZElucHV0KXsgZmVkSW5wdXQuZGlzYWJsZWQgPSBmYWxzZTsgZmVkSW5wdXQudmFsdWUgPSBjdXJyZW50RXF1aXZQY3Q7IH0KICAgICAgICBzdGF0ZS5zcGVuZGluZ0ZlZFtpXSA9IGN1cnJlbnRFcXVpdlBjdDsKICAgICAgfSBlbHNlIHsKICAgICAgICBzdGF0ZS5saW5rZWRbaV0gPSB0cnVlOwogICAgICAgIGlmIChmZWRJbnB1dCkgZmVkSW5wdXQuZGlzYWJsZWQgPSB0cnVlOwogICAgICB9CiAgICAgIGNvbnN0IGZvbGxvd1RhZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmZWQtZm9sbG93aW5nLSIgKyBpKTsKICAgICAgaWYgKGZvbGxvd1RhZykgZm9sbG93VGFnLnRleHRDb250ZW50ID0gbm93TGlua2VkID8gIiAoZm9sbG93aW5nIEdGKSIgOiAiIjsKICAgICAgdXBkYXRlQWxsKCk7CiAgICB9CiAgfSk7CgogIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbihlKXsKICAgIGNvbnN0IGNhdmVhdEJ0biA9IGUudGFyZ2V0LmNsb3Nlc3QoIltkYXRhLWNhdmVhdC10b2dnbGVdIik7CiAgICBpZiAoY2F2ZWF0QnRuKXsKICAgICAgY29uc3QgaSA9IGNhdmVhdEJ0bi5nZXRBdHRyaWJ1dGUoImRhdGEtY2F2ZWF0LXRvZ2dsZSIpOwogICAgICBjb25zdCBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2F2ZWF0LWJveC0iICsgaSk7CiAgICAgIGNvbnN0IG9wZW4gPSBib3guY2xhc3NMaXN0LnRvZ2dsZSgib3BlbiIpOwogICAgICBjYXZlYXRCdG4udGV4dENvbnRlbnQgPSAob3BlbiA/ICJIaWRlIGxlZ2lzbGF0aXZlIGNvbmRpdGlvbnMgJiBjb250ZXh0IFx1MjViNCIgOiAiU2hvdyBsZWdpc2xhdGl2ZSBjb25kaXRpb25zICYgY29udGV4dCBcdTI1YmUiKTsKICAgICAgcmV0dXJuOwogICAgfQogICAgY29uc3QgZGVzY0J0biA9IGUudGFyZ2V0LmNsb3Nlc3QoIltkYXRhLWRlc2MtdG9nZ2xlXSIpOwogICAgaWYgKGRlc2NCdG4pewogICAgICBjb25zdCBpID0gZGVzY0J0bi5nZXRBdHRyaWJ1dGUoImRhdGEtZGVzYy10b2dnbGUiKTsKICAgICAgY29uc3QgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc2MtYm94LSIgKyBpKTsKICAgICAgY29uc3Qgb3BlbiA9IGJveC5jbGFzc0xpc3QudG9nZ2xlKCJvcGVuIik7CiAgICAgIGRlc2NCdG4udGV4dENvbnRlbnQgPSAob3BlbiA/ICJIaWRlIHdoYXQgdGhpcyBmdW5kcyBcdTI1YjQiIDogIlNob3cgd2hhdCB0aGlzIGZ1bmRzIFx1MjViZSIpOwogICAgICByZXR1cm47CiAgICB9CiAgICBjb25zdCBzdWJCdG4gPSBlLnRhcmdldC5jbG9zZXN0KCJbZGF0YS1zdWJwcm9ncmFtLXRvZ2dsZV0iKTsKICAgIGlmIChzdWJCdG4pewogICAgICBjb25zdCBpID0gc3ViQnRuLmdldEF0dHJpYnV0ZSgiZGF0YS1zdWJwcm9ncmFtLXRvZ2dsZSIpOwogICAgICBjb25zdCBsaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1YnByb2dyYW0tbGlzdC0iICsgaSk7CiAgICAgIGNvbnN0IG9wZW4gPSBsaXN0LmNsYXNzTGlzdC50b2dnbGUoIm9wZW4iKTsKICAgICAgY29uc3QgbiA9IERBVEEuc3BlbmRpbmdfbGV2ZXJzW2ldLmNoaWxkcmVuLmxlbmd0aDsKICAgICAgc3ViQnRuLnRleHRDb250ZW50ID0gKG9wZW4gPyAiXHUyNWJlIEhpZGUgIiA6ICJcdTI1YjggU2hvdyAiKSArIG4gKyAiIHN1Yi1wcm9ncmFtcyI7CiAgICAgIHJldHVybjsKICAgIH0KICAgIGNvbnN0IGNoaWxkRGVzY0J0biA9IGUudGFyZ2V0LmNsb3Nlc3QoIltkYXRhLWNoaWxkLWRlc2MtdG9nZ2xlXSIpOwogICAgaWYgKGNoaWxkRGVzY0J0bil7CiAgICAgIGNvbnN0IGtleSA9IGNoaWxkRGVzY0J0bi5nZXRBdHRyaWJ1dGUoImRhdGEtY2hpbGQtZGVzYy10b2dnbGUiKTsKICAgICAgY29uc3QgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkLWRlc2MtYm94LSIgKyBrZXkucmVwbGFjZSgiOiIsICItIikpOwogICAgICBjb25zdCBvcGVuID0gYm94LmNsYXNzTGlzdC50b2dnbGUoIm9wZW4iKTsKICAgICAgY2hpbGREZXNjQnRuLnRleHRDb250ZW50ID0gb3BlbiA/ICJXaGF0IHRoaXMgZnVuZHMgXHUyNWI0IiA6ICJXaGF0IHRoaXMgZnVuZHMgXHUyNWJlIjsKICAgICAgcmV0dXJuOwogICAgfQogICAgY29uc3QgY2hpbGRDYXZlYXRCdG4gPSBlLnRhcmdldC5jbG9zZXN0KCJbZGF0YS1jaGlsZC1jYXZlYXQtdG9nZ2xlXSIpOwogICAgaWYgKGNoaWxkQ2F2ZWF0QnRuKXsKICAgICAgY29uc3Qga2V5ID0gY2hpbGRDYXZlYXRCdG4uZ2V0QXR0cmlidXRlKCJkYXRhLWNoaWxkLWNhdmVhdC10b2dnbGUiKTsKICAgICAgY29uc3QgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkLWNhdmVhdC1ib3gtIiArIGtleS5yZXBsYWNlKCI6IiwgIi0iKSk7CiAgICAgIGNvbnN0IG9wZW4gPSBib3guY2xhc3NMaXN0LnRvZ2dsZSgib3BlbiIpOwogICAgICBjaGlsZENhdmVhdEJ0bi50ZXh0Q29udGVudCA9IG9wZW4gPyAiQ29uZGl0aW9ucyBcdTI1YjQiIDogIkNvbmRpdGlvbnMgXHUyNWJlIjsKICAgICAgcmV0dXJuOwogICAgfQogIH0pOwoKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzZXRCdG4iKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCl7CiAgICBEQVRBLnJldmVudWVfbGV2ZXJzLmZvckVhY2goZnVuY3Rpb24obCl7CiAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJldi1pbnB1dC0iICsgbC5pZCk7CiAgICAgIGlmIChsLnR5cGUgPT09ICJ0b2dnbGUiKXsgc3RhdGUucmV2ZW51ZVtsLmlkXSA9IGZhbHNlOyBpbnB1dC5jaGVja2VkID0gZmFsc2U7IH0KICAgICAgZWxzZSBpZiAobC51bml0ID09PSAicmF0ZSIpeyBzdGF0ZS5yZXZlbnVlW2wuaWRdID0gbC5iYXNlX3JhdGU7IGlucHV0LnZhbHVlID0gbC5iYXNlX3JhdGU7IH0KICAgICAgZWxzZSB7IHN0YXRlLnJldmVudWVbbC5pZF0gPSBsLmJhc2VfYW1vdW50OyBpbnB1dC52YWx1ZSA9IGwuYmFzZV9hbW91bnQ7IH0KICAgIH0pOwogICAgREFUQS5zcGVuZGluZ19sZXZlcnMuZm9yRWFjaChmdW5jdGlvbihsLCBpKXsKICAgICAgc3RhdGUuc3BlbmRpbmdbaV0gPSAwOwogICAgICBzdGF0ZS5zcGVuZGluZ0ZlZFtpXSA9IDA7CiAgICAgIHN0YXRlLmxpbmtlZFtpXSA9ICEhbC5mbWFwX3JlZ3VsYXI7CiAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZW5kLWlucHV0LSIgKyBpKTsKICAgICAgaWYgKGlucHV0KSBpbnB1dC52YWx1ZSA9IDA7CiAgICAgIGNvbnN0IGZlZElucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZW5kLWZlZC1pbnB1dC0iICsgaSk7CiAgICAgIGlmIChmZWRJbnB1dCl7IGZlZElucHV0LnZhbHVlID0gMDsgZmVkSW5wdXQuZGlzYWJsZWQgPSAhIWwuZm1hcF9yZWd1bGFyOyB9CiAgICAgIGNvbnN0IGxpbmtJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaW5rLWlucHV0LSIgKyBpKTsKICAgICAgaWYgKGxpbmtJbnB1dCkgbGlua0lucHV0LmNoZWNrZWQgPSAhIWwuZm1hcF9yZWd1bGFyOwogICAgICBjb25zdCBmb2xsb3dUYWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmVkLWZvbGxvd2luZy0iICsgaSk7CiAgICAgIGlmIChmb2xsb3dUYWcpIGZvbGxvd1RhZy50ZXh0Q29udGVudCA9IGwuZm1hcF9yZWd1bGFyID8gIiAoZm9sbG93aW5nIEdGKSIgOiAiIjsKICAgICAgaWYgKGwuY2hpbGRyZW4pewogICAgICAgIHN0YXRlLmNoaWxkUGN0W2ldID0gbC5jaGlsZHJlbi5tYXAoZnVuY3Rpb24oKXsgcmV0dXJuIDA7IH0pOwogICAgICAgIHN0YXRlLmNoaWxkRmVkUGN0W2ldID0gbC5jaGlsZHJlbi5tYXAoZnVuY3Rpb24oKXsgcmV0dXJuIDA7IH0pOwogICAgICAgIGwuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbihjLCBjaSl7CiAgICAgICAgICBjb25zdCBnZkVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkLWlucHV0LSIgKyBpICsgIi0iICsgY2kpOwogICAgICAgICAgaWYgKGdmRWwpIGdmRWwudmFsdWUgPSAwOwogICAgICAgICAgY29uc3QgZmVkRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQtZmVkLWlucHV0LSIgKyBpICsgIi0iICsgY2kpOwogICAgICAgICAgaWYgKGZlZEVsKSBmZWRFbC52YWx1ZSA9IDA7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0pOwogICAgdXBkYXRlQWxsKCk7CiAgfSk7CgogIHVwZGF0ZUFsbCgpOwoKICAvLyAtLS0tLS0tLS0tIG9mZnNldCBiZWxvdyBhbnkgc3RpY2t5L2ZpeGVkIHNpdGUgY2hyb21lIC0tLS0tLS0tLS0KICAvLyBSYXRoZXIgdGhhbiBsb29raW5nIGZvciBvbmUgc3BlY2lmaWMgZWxlbWVudCwgc2NhbiBmb3IgYW55dGhpbmcgcGlubmVkIHRvIHRoZQogIC8vIHRvcCBvZiB0aGUgdmlld3BvcnQgLS0gV1AgYWRtaW4gYmFyLCB0aGVtZSBzdGlja3kgbmF2LCBjb29raWUgYmFubmVycywgZXRjLiAtLQogIC8vIGFuZCBzaXQganVzdCBiZWxvdyB0aGUgdGFsbGVzdCBzdGFjayBvZiB0aGVtLiBSZS1jaGVja2VkIG9uIHJlc2l6ZSBhbmQgc2Nyb2xsCiAgLy8gKHRocm90dGxlZCkgc2luY2Ugc29tZSB0aGVtZXMgb25seSBzd2l0Y2ggdGhlaXIgaGVhZGVyIHRvIGZpeGVkL3N0aWNreSBvbmNlCiAgLy8geW91J3ZlIHNjcm9sbGVkIHBhc3QgYSB0aHJlc2hvbGQuCiAgY29uc3QgbGVkZ2VyT3V0ZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIubGVkZ2VyLXN0aWNreS1vdXRlciIpOwogIGZ1bmN0aW9uIGFkanVzdFN0aWNreU9mZnNldCgpewogICAgaWYgKCFsZWRnZXJPdXRlcikgcmV0dXJuOwogICAgbGV0IG1heEJvdHRvbSA9IDA7CiAgICBjb25zdCBjYW5kaWRhdGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiaGVhZGVyLCBuYXYsIFtjbGFzcyo9J2hlYWRlciddLCBbY2xhc3MqPSdzdGlja3knXSwgW2NsYXNzKj0nZml4ZWQnXSwgW2lkKj0naGVhZGVyJ10sICN3cGFkbWluYmFyIik7CiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhbmRpZGF0ZXMubGVuZ3RoOyBpKyspewogICAgICBjb25zdCBlbCA9IGNhbmRpZGF0ZXNbaV07CiAgICAgIGlmIChlbCA9PT0gbGVkZ2VyT3V0ZXIgfHwgbGVkZ2VyT3V0ZXIuY29udGFpbnMoZWwpIHx8IGVsLmNvbnRhaW5zKGxlZGdlck91dGVyKSkgY29udGludWU7CiAgICAgIGNvbnN0IGNzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpOwogICAgICBpZiAoKGNzLnBvc2l0aW9uID09PSAiZml4ZWQiIHx8IGNzLnBvc2l0aW9uID09PSAic3RpY2t5IikgJiYgY3MudmlzaWJpbGl0eSAhPT0gImhpZGRlbiIgJiYgY3MuZGlzcGxheSAhPT0gIm5vbmUiKXsKICAgICAgICBjb25zdCByZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgaWYgKHJlY3QudG9wID49IC01ICYmIHJlY3QudG9wIDwgMjAwICYmIHJlY3QuYm90dG9tID4gNSAmJiByZWN0LndpZHRoID4gMCl7CiAgICAgICAgICBtYXhCb3R0b20gPSBNYXRoLm1heChtYXhCb3R0b20sIHJlY3QuYm90dG9tKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIGxlZGdlck91dGVyLnN0eWxlLnRvcCA9IE1hdGgubWF4KDAsIG1heEJvdHRvbSkgKyAicHgiOwogIH0KICBhZGp1c3RTdGlja3lPZmZzZXQoKTsKICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgYWRqdXN0U3RpY2t5T2Zmc2V0KTsKICBsZXQgc2Nyb2xsVGltZXIgPSBudWxsOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCBmdW5jdGlvbigpewogICAgaWYgKHNjcm9sbFRpbWVyKSByZXR1cm47CiAgICBzY3JvbGxUaW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgYWRqdXN0U3RpY2t5T2Zmc2V0KCk7IHNjcm9sbFRpbWVyID0gbnVsbDsgfSwgMTUwKTsKICB9LCB7IHBhc3NpdmU6dHJ1ZSB9KTsKCiAgfSAvLyBlbmQgaW5pdCgpCgogIGZ1bmN0aW9uIHNob3dGYXRhbEVycm9yKGVycil7CiAgICB0cnl7CiAgICAgIHZhciBib3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgYm94LnNldEF0dHJpYnV0ZSgic3R5bGUiLAogICAgICAgICJtYXgtd2lkdGg6OTYwcHg7bWFyZ2luOjIwcHggYXV0bztwYWRkaW5nOjE2cHggMThweDtiYWNrZ3JvdW5kOiNGMURBRDM7Ym9yZGVyOjFweCBzb2xpZCAjQTEzRDJFOyIgKwogICAgICAgICJib3JkZXItcmFkaXVzOjZweDtmb250LWZhbWlseTptb25vc3BhY2U7Zm9udC1zaXplOjEycHg7Y29sb3I6IzVhMjMxODtsaW5lLWhlaWdodDoxLjY7d2hpdGUtc3BhY2U6cHJlLXdyYXA7Iik7CiAgICAgIGJveC50ZXh0Q29udGVudCA9ICJCdWRnZXQgc2ltdWxhdG9yIGZhaWxlZCB0byBsb2FkOiAiICsgKGVyciAmJiBlcnIubWVzc2FnZSA/IGVyci5tZXNzYWdlIDogZXJyKSArCiAgICAgICAgIlxuXG5UaGlzIHVzdWFsbHkgbWVhbnMgc29tZXRoaW5nIG9uIHRoZSBwYWdlIChhIGNhY2hpbmcgb3IgbWluaWZpY2F0aW9uIHBsdWdpbiwgbW9zdCBvZnRlbikgYWx0ZXJlZCB0aGUgc2NyaXB0LiAiICsKICAgICAgICAiT3BlbiB0aGUgYnJvd3NlciBjb25zb2xlIChGMTIpIGZvciB0aGUgZnVsbCBlcnJvciwgb3IgdHJ5IGRpc2FibGluZyBKUy9IVE1MIG1pbmlmaWNhdGlvbiBmb3IgdGhpcyBwYWdlLiI7CiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYm94KTsKICAgIH0gY2F0Y2goZTIpeyAvKiBub3RoaW5nIG1vcmUgd2UgY2FuIGRvICovIH0KICB9CgogIGZ1bmN0aW9uIGJvb3QoKXsKICAgIHRyeSB7IGluaXQoKTsgfQogICAgY2F0Y2goZXJyKXsgc2hvd0ZhdGFsRXJyb3IoZXJyKTsgfQogIH0KCiAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICJsb2FkaW5nIil7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgYm9vdCk7CiAgfSBlbHNlIHsKICAgIGJvb3QoKTsKICB9Cn0pKCk7Cgo= Share: Copy Facebook Twitter Email