Name: series-workflowtwk87 Phase: Failed StartedAt: 2026-09-06 20:23:28 +0000 UTC FinishedAt: 2026-09-06 21:03:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtwk87[0] Phase: Succeeded StartedAt: 2026-09-06 20:23:28 +0000 UTC FinishedAt: 2026-09-06 21:02:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtwk87[0].run-triage Phase: Succeeded StartedAt: 2026-09-06 20:23:28 +0000 UTC FinishedAt: 2026-09-06 21:02:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBEZXZpY2V0cmVlIGJpbmRpbmdzIGRvY3VtZW50YXRpb24gYW5kIGFkZHMgTURJTyBidXMgY2xvY2sgZnJlcXVlbmN5IGNvbmZpZ3VyYXRpb24gc3VwcG9ydCB0byB0aGUgUmVhbHRlayBSVEw4Mzh4L1JUTDgzOXgvUlRMOTMweC9SVEw5MzF4IE1ESU8gY29udHJvbGxlciBkcml2ZXIgKGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYykuIFRoaXMgZHJpdmVyIGlzIGRlc2lnbmVkIHNwZWNpZmljYWxseSBmb3IgUmVhbHRlayBPdHRvIE1JUFMgc3dpdGNoIFNvQ3MgKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKSwgcmVxdWlyZXMgT0Ygc3lzY29uIHBhcmVudCBub2Rlcywgc3VwcHJlc3NlcyBtYW51YWwgZHJpdmVyIGJpbmRpbmcgdmlhIHN5c2ZzLCBhbmQgY2Fubm90IGJlIHByb2JlZCBvciBleGVjdXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCBRRU1VL0dDRSB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjAyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTg3ZDAxZjJjOGY1MTcxYWM1NDBmY2RmMWU0MjVkNGE0ODllZGVkNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMjE6MDI6MjIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sXG5pbmRleCA2N2UwYjIzYTg0NzBlLi44ODUwMmQwMTdlZWRiIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxcbkBAIC01Niw2ICYjNDM7NTYsOSBAQCBwYXR0ZXJuUHJvcGVydGllczpcbiAgICAgICByZWc6XG4gICAgICAgICBtYXhJdGVtczogMVxuIFxuJiM0MzsgICAgICBjbG9jay1mcmVxdWVuY3k6XG4mIzQzOyAgICAgICAgZGVmYXVsdDogMjUwMDAwMFxuJiM0MztcbiAgICAgcmVxdWlyZWQ6XG4gICAgICAgLSByZWdcbiBcbkBAIC03MSw2ICYjNDM7NzQsNDMgQEAgcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gcmVnXG4gXG4mIzQzO2FsbE9mOlxuJiM0MzsgIC0gaWY6XG4mIzQzOyAgICAgIHByb3BlcnRpZXM6XG4mIzQzOyAgICAgICAgY29tcGF0aWJsZTpcbiYjNDM7ICAgICAgICAgIGNvbnRhaW5zOlxuJiM0MzsgICAgICAgICAgICBlbnVtOlxuJiM0MzsgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw4MzgwLW1kaW9cbiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM4MS1tZGlvXG4mIzQzOyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzODItbWRpb1xuJiM0MzsgICAgdGhlbjpcbiYjNDM7ICAgICAgcGF0dGVyblByb3BlcnRpZXM6XG4mIzQzOyAgICAgICAgJiMzOTtebWRpby1idXNAWzAtM10kJiMzOTs6XG4mIzQzOyAgICAgICAgICBwcm9wZXJ0aWVzOlxuJiM0MzsgICAgICAgICAgICBjbG9jay1mcmVxdWVuY3k6XG4mIzQzOyAgICAgICAgICAgICAgZW51bTogWzI1MDAwMDAsIDEwMDAwMDAwXVxuJiM0MzsgIC0gaWY6XG4mIzQzOyAgICAgIHByb3BlcnRpZXM6XG4mIzQzOyAgICAgICAgY29tcGF0aWJsZTpcbiYjNDM7ICAgICAgICAgIGNvbnRhaW5zOlxuJiM0MzsgICAgICAgICAgICBlbnVtOlxuJiM0MzsgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw4MzkxLW1kaW9cbiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM5Mi1tZGlvXG4mIzQzOyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzOTMtbWRpb1xuJiM0MzsgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzAxLW1kaW9cbiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMmItbWRpb1xuJiM0MzsgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzAyYy1tZGlvXG4mIzQzOyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDkzMDMtbWRpb1xuJiM0MzsgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzExLW1kaW9cbiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMxMi1tZGlvXG4mIzQzOyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDkzMTMtbWRpb1xuJiM0MzsgICAgdGhlbjpcbiYjNDM7ICAgICAgcGF0dGVyblByb3BlcnRpZXM6XG4mIzQzOyAgICAgICAgJiMzOTtebWRpby1idXNAWzAtM10kJiMzOTs6XG4mIzQzOyAgICAgICAgICBwcm9wZXJ0aWVzOlxuJiM0MzsgICAgICAgICAgICBjbG9jay1mcmVxdWVuY3k6XG4mIzQzOyAgICAgICAgICAgICAgZW51bTogWzEyNTAwMDAsIDI1MDAwMDAsIDUwMDAwMDBdXG4mIzQzO1xuIHVuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbiBcbiBleGFtcGxlczpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcbmluZGV4IDExZDA3OGVmOTQxY2QuLjhlZGIwYmEwYmNkZDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY1xuQEAgLTEzMCw2ICYjNDM7MTMwLDcgQEBcbiAjZGVmaW5lIFJUTDgzODBfTlVNX1BBR0VTXHRcdFx0NDA5NlxuICNkZWZpbmUgUlRMODM4MF9OVU1fUE9SVFNcdFx0XHQyOFxuICNkZWZpbmUgUlRMODM4MF9TTUlfR0xCX0NUUkxcdFx0XHQweGExMDBcbiYjNDM7I2RlZmluZSAgIFJUTDgzODBfU01JX0ZSRVFfU0VMXHRcdFx0QklUKDEpXG4gI2RlZmluZSAgIFJUTDgzODBfU01JX1BIWV9QQVRDSF9ET05FXHRcdEJJVCgxNSlcbiAjZGVmaW5lIFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8wXHRcdDB4YTFiOFxuICNkZWZpbmUgUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzFcdFx0MHhhMWJjXG5AQCAtMTY5LDEyICYjNDM7MTcwLDE1IEBAXG4gI2RlZmluZSBSVEw4MzkwX1BIWVJFR19QT1JUX0NUUkxfTE9XXHRcdDB4MDNlNFxuICNkZWZpbmUgUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0hJR0hcdFx0MHgwM2U4XG4gI2RlZmluZSBSVEw4MzkwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTFx0XHQweDAzZmNcbiYjNDM7I2RlZmluZSBSVEw4MzkwX1NNSV9HTEJfQ1RSTFx0XHRcdDB4MDNmOFxuJiM0MzsjZGVmaW5lICAgUlRMODM5MF9TTUlfRlJFUV9TRUxcdFx0XHRHRU5NQVNLKDYsIDUpXG4gXG4gI2RlZmluZSBSVEw5MzAwX05VTV9CVVNFU1x0XHRcdDRcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX1BBR0VTXHRcdFx0NDA5NlxuICNkZWZpbmUgUlRMOTMwMF9OVU1fUE9SVFNcdFx0XHQyOFxuICNkZWZpbmUgUlRMOTMwMF9TTUlfR0xCX0NUUkxcdFx0XHQweGNhMDBcbiAjZGVmaW5lICAgUlRMOTMwMF9HTEJfQ1RSTF9JTlRGX1NFTChpbnRmKVx0QklUKDE2ICYjNDM7IChpbnRmKSlcbiYjNDM7I2RlZmluZSAgIFJUTDkzMDBfU01JX0ZSRVFfU0VMKGludGYpXHRcdEdFTk1BU0soKGludGYpICogMiAmIzQzOyA5LCAoaW50ZikgKiAyICYjNDM7IDgpXG4gI2RlZmluZSBSVEw5MzAwX1NNSV9QT1JUMF8xNV9QT0xMSU5HX1NFTFx0MHhjYTA4XG4gI2RlZmluZSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMFx0XHQweGNiNzBcbiAjZGVmaW5lIFJUTDkzMDBfU01JX0FDQ0VTU19QSFlfQ1RSTF8xXHRcdDB4Y2I3NFxuQEAgLTE5Niw2ICYjNDM7MjAwLDggQEBcbiAjZGVmaW5lIFJUTDkzMTBfTlVNX0JVU0VTXHRcdFx0NFxuICNkZWZpbmUgUlRMOTMxMF9OVU1fUEFHRVNcdFx0XHQ4MTkyXG4gI2RlZmluZSBSVEw5MzEwX05VTV9QT1JUU1x0XHRcdDU2XG4mIzQzOyNkZWZpbmUgUlRMOTMxMF9TTUlfR0xCX0NUUkwwXHRcdFx0MHgwY2MwXG4mIzQzOyNkZWZpbmUgICBSVEw5MzEwX1NNSV9GUkVRX1NFTChpbnRmKVx0XHRHRU5NQVNLKChpbnRmKSAqIDIgJiM0MzsgNSwgKGludGYpICogMiAmIzQzOyA0KVxuICNkZWZpbmUgUlRMOTMxMF9TTUlfR0xCX0NUUkwxXHRcdFx0MHgwY2JjXG4gI2RlZmluZSAgIFJUTDkzMTBfU01JX0dMQl9GTVRfU0VMX0M0NShpbnRmKVx0QklUKChpbnRmKSAqIDIgJiM0MzsgMSlcbiAjZGVmaW5lIFJUTDkzMTBfU01JX0lORFJUX0FDQ0VTU19DVFJMXzBcdFx0MHgwYzAwXG5AQCAtMjUxLDYgJiM0MzsyNTcsNyBAQCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2IHtcbiBcdHN0cnVjdCByZWdtYXAgKnJlZ21hcDtcbiBcdHN0cnVjdCBtdXRleCBsb2NrOyAvKiBwcm90ZWN0IEhXIGFjY2VzcyAqL1xuIFx0REVDTEFSRV9CSVRNQVAodmFsaWRfcG9ydHMsIE1BWF9QT1JUUyk7XG4mIzQzO1x0dTMyIGdsb2JhbF9mcmVxO1xuIFx0dTE2IHBhZ2VbTUFYX1BPUlRTXTtcbiBcdHU4IHNtaV9idXNbTUFYX1BPUlRTXTtcbiBcdHU4IHNtaV9hZGRyW01BWF9QT1JUU107XG5AQCAtMjY5LDYgJiM0MzsyNzYsNyBAQCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIHtcbiBcdHU4IG51bV9wb3J0cztcbiBcdHUxNiBudW1fcGFnZXM7XG4gXHR1MzIgcG9sbF9jdHJsO1xuJiM0MztcdGludCAoKnNldF9idXNfZnJlcXVlbmN5KShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSk7XG4gXHRpbnQgKCpzZXR1cF9jb250cm9sbGVyKShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KTtcbiBcdGludCAoKnJlYWRfYzIyKShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSk7XG4gXHRpbnQgKCpyZWFkX2M0NSkoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSk7XG5AQCAtNzQwLDYgJiM0Mzs3NDgsMTcgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3NldHVwX3RvcG9sb2d5KHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGZyZXEgIT0gMjUwMDAwMCBcdTAwMjZcdTAwMjYgZnJlcSAhPSAxMDAwMDAwMClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmVnbWFwX2Fzc2lnbl9iaXRzKHByaXYtXHUwMDNlcmVnbWFwLCBSVEw4MzgwX1NNSV9HTEJfQ1RSTCxcbiYjNDM7XHRcdFx0XHQgIFJUTDgzODBfU01JX0ZSRVFfU0VMLCBmcmVxID09IDEwMDAwMDAwKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4ge1xuIFx0LypcbkBAIC03NDksNiAmIzQzOzc2OCw0MCBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gcmVnbWFwX3NldF9iaXRzKHByaXYtXHUwMDNlcmVnbWFwLCBSVEw4MzgwX1NNSV9HTEJfQ1RSTCwgUlRMODM4MF9TTUlfUEhZX1BBVENIX0RPTkUpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuJiM0MztcdHUzMiB2YWw7XG4mIzQzO1x0aW50IGVycjtcbiYjNDM7XG4mIzQzO1x0aWYgKGZyZXEgIT0gMTI1MDAwMCBcdTAwMjZcdTAwMjYgZnJlcSAhPSAyNTAwMDAwIFx1MDAyNlx1MDAyNiBmcmVxICE9IDUwMDAwMDApXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRpZiAocHJpdi1cdTAwM2VnbG9iYWxfZnJlcSlcbiYjNDM7XHRcdHJldHVybiBmcmVxID09IHByaXYtXHUwMDNlZ2xvYmFsX2ZyZXEgPyAwIDogLUVJTlZBTDtcbiYjNDM7XG4mIzQzO1x0dmFsID0gRklFTERfUFJFUChSVEw4MzkwX1NNSV9GUkVRX1NFTCwgZnJlcSAvIDI1MDAwMDApO1xuJiM0MztcdGVyciA9IHJlZ21hcF91cGRhdGVfYml0cyhwcml2LVx1MDAzZXJlZ21hcCwgUlRMODM5MF9TTUlfR0xCX0NUUkwsIFJUTDgzOTBfU01JX0ZSRVFfU0VMLCB2YWwpO1xuJiM0MztcdGlmICghZXJyKVxuJiM0MztcdFx0cHJpdi1cdTAwM2VnbG9iYWxfZnJlcSA9IGZyZXE7XG4mIzQzO1xuJiM0MztcdHJldHVybiBlcnI7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbiYjNDM7XHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gYnVzLVx1MDAzZXByaXY7XG4mIzQzO1x0dTMyIG1hc2ssIHZhbDtcbiYjNDM7XG4mIzQzO1x0aWYgKGZyZXEgIT0gMTI1MDAwMCBcdTAwMjZcdTAwMjYgZnJlcSAhPSAyNTAwMDAwIFx1MDAyNlx1MDAyNiBmcmVxICE9IDUwMDAwMDApXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4mIzQzO1x0bWFzayA9IFJUTDkzMDBfU01JX0ZSRVFfU0VMKGNoYW4tXHUwMDNlbWRpb19idXMpO1xuJiM0MztcdHZhbCA9IGZpZWxkX3ByZXAobWFzaywgZnJlcSAvIDI1MDAwMDApO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtXHUwMDNlcmVnbWFwLCBSVEw5MzAwX1NNSV9HTEJfQ1RSTCwgbWFzaywgdmFsKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4ge1xuIFx0dTMyIGdsYl9jdHJsX21hc2sgPSAwLCBnbGJfY3RybF92YWwgPSAwO1xuQEAgLTc2OSw2ICYjNDM7ODIyLDIxIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuJiM0MztcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBidXMtXHUwMDNlcHJpdjtcbiYjNDM7XHR1MzIgbWFzaywgdmFsO1xuJiM0MztcbiYjNDM7XHRpZiAoZnJlcSAhPSAxMjUwMDAwIFx1MDAyNlx1MDAyNiBmcmVxICE9IDI1MDAwMDAgXHUwMDI2XHUwMDI2IGZyZXEgIT0gNTAwMDAwMClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRtYXNrID0gUlRMOTMxMF9TTUlfRlJFUV9TRUwoY2hhbi1cdTAwM2VtZGlvX2J1cyk7XG4mIzQzO1x0dmFsID0gZmllbGRfcHJlcChtYXNrLCBmcmVxIC8gMjUwMDAwMCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZWdtYXBfdXBkYXRlX2JpdHMocHJpdi1cdTAwM2VyZWdtYXAsIFJUTDkzMTBfU01JX0dMQl9DVFJMMCwgbWFzaywgdmFsKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4ge1xuIFx0aW50IGksIGVycjtcbkBAIC04MzEsMTQgJiM0Mzs4OTksMTQgQEAgc3RhdGljIHZvaWQgb3R0b19lbWRpb19ub3RpZnlfcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIH1cbiBcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdixcbi1cdFx0XHRcdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqbm9kZSlcbiYjNDM7XHRcdFx0XHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXG4ge1xuIFx0c3RydWN0IG90dG9fZW1kaW9fY2hhbiAqY2hhbjtcbiBcdHN0cnVjdCBtaWlfYnVzICpidXM7XG4tXHR1MzIgbWRpb19idXM7XG4mIzQzO1x0dTMyIG1kaW9fYnVzLCBmcmVxO1xuIFx0aW50IGVycjtcbiBcbi1cdGVyciA9IGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcJiMzNDtyZWdcJiMzNDssIFx1MDAyNm1kaW9fYnVzKTtcbiYjNDM7XHRlcnIgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcJiMzNDtyZWdcJiMzNDssIFx1MDAyNm1kaW9fYnVzKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCBcJiMzNDt1bmRlZmluZWQgc21pIGJ1cyBudW1iZXJcXG5cJiMzNDspO1xuIFxuQEAgLTg2NSw3ICYjNDM7OTMzLDE0IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2XG4gXG4gXHRzbnByaW50ZihidXMtXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXCYjMzQ7JXMtJWRcJiMzNDssIGRldl9uYW1lKGRldiksIG1kaW9fYnVzKTtcbiBcbi1cdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgdG9fb2Zfbm9kZShub2RlKSk7XG4mIzQzO1x0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsIFwmIzM0O2Nsb2NrLWZyZXF1ZW5jeVwmIzM0OywgXHUwMDI2ZnJlcSkpXG4mIzQzO1x0XHRmcmVxID0gMjUwMDAwMDtcbiYjNDM7XHRlcnIgPSBwcml2LVx1MDAzZWluZm8tXHUwMDNlc2V0X2J1c19mcmVxdWVuY3koYnVzLCBmcmVxKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBlcnIsIFwmIzM0O2Nhbm5vdCBzZXQgZnJlcXVlbmN5ICV1IGZvciBNRElPIGJ1cyAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgICAgIGZyZXEsIG1kaW9fYnVzKTtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCBcJiMzNDtjYW5ub3QgcmVnaXN0ZXIgTURJTyBidXNcXG5cJiMzNDspO1xuIFxuQEAgLTEwMjcsNyAmIzQzOzExMDIsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXCYjMzQ7ZmFpbGVkIHRvIHNldHVwIE1ESU8gYnVzIGNvbnRyb2xsZXJcXG5cJiMzNDspO1xuIFx0fVxuIFxuLVx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkX25vZGVfc2NvcGVkKGRldiwgY2hpbGQpIHtcbiYjNDM7XHRmb3JfZWFjaF9jaGlsZF9vZl9ub2RlX3Njb3BlZChkZXYtXHUwMDNlb2Zfbm9kZSwgY2hpbGQpIHtcbiBcdFx0ZXJyID0gb3R0b19lbWRpb19wcm9iZV9vbmUoZGV2LCBwcml2LCBjaGlsZCk7XG4gXHRcdGlmIChlcnIpXG4gXHRcdFx0cmV0dXJuIGVycjtcbkBAIC0xMDUxLDYgJiM0MzsxMTI2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzgwX2luZm8gPSB7XG4gXHQubnVtX3BhZ2VzID0gUlRMODM4MF9OVU1fUEFHRVMsXG4gXHQubnVtX3BvcnRzID0gUlRMODM4MF9OVU1fUE9SVFMsXG4gXHQucG9sbF9jdHJsID0gUlRMODM4MF9TTUlfUE9MTF9DVFJMLFxuJiM0MztcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fODM4MF9zZXRfYnVzX2ZyZXF1ZW5jeSxcbiBcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIsXG4gXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIsXG4gXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jNDUsXG5AQCAtMTA3NSw2ICYjNDM7MTE1MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM5MF9pbmZvID0ge1xuIFx0Lm51bV9wYWdlcyA9IFJUTDgzOTBfTlVNX1BBR0VTLFxuIFx0Lm51bV9wb3J0cyA9IFJUTDgzOTBfTlVNX1BPUlRTLFxuIFx0LnBvbGxfY3RybCA9IFJUTDgzOTBfU01JX1BPUlRfUE9MTElOR19DVFJMLFxuJiM0MztcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fODM5MF9zZXRfYnVzX2ZyZXF1ZW5jeSxcbiBcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2MyMixcbiBcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2M0NSxcbiBcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzIyLFxuQEAgLTEwOTcsNiAmIzQzOzExNzQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMDBfaW5mbyA9IHtcbiBcdC5udW1fcG9ydHMgPSBSVEw5MzAwX05VTV9QT1JUUyxcbiBcdC5udW1fcGFnZXMgPSBSVEw5MzAwX05VTV9QQUdFUyxcbiBcdC5wb2xsX2N0cmwgPSBSVEw5MzAwX1NNSV9QT0xMX0NUUkwsXG4mIzQzO1x0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb185MzAwX3NldF9idXNfZnJlcXVlbmN5LFxuIFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcixcbiBcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2MyMixcbiBcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2M0NSxcbkBAIC0xMTIzLDYgJiM0MzsxMjAxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzEwX2luZm8gPSB7XG4gXHQubnVtX3BhZ2VzID0gUlRMOTMxMF9OVU1fUEFHRVMsXG4gXHQubnVtX3BvcnRzID0gUlRMOTMxMF9OVU1fUE9SVFMsXG4gXHQucG9sbF9jdHJsID0gUlRMOTMxMF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsXG4mIzQzO1x0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb185MzEwX3NldF9idXNfZnJlcXVlbmN5LFxuIFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMTBfc2V0dXBfY29udHJvbGxlcixcbiBcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMixcbiBcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2M0NSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTowMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIERldmljZXRyZWUgYmluZGluZ3MgZG9jdW1lbnRhdGlvbiBhbmQgYWRkcyBNRElPIGJ1cyBjbG9jayBmcmVxdWVuY3kgY29uZmlndXJhdGlvbiBzdXBwb3J0IHRvIHRoZSBSZWFsdGVrIFJUTDgzOHgvUlRMODM5eC9SVEw5MzB4L1JUTDkzMXggTURJTyBjb250cm9sbGVyIGRyaXZlciAoZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jKS4gVGhpcyBkcml2ZXIgaXMgZGVzaWduZWQgc3BlY2lmaWNhbGx5IGZvciBSZWFsdGVrIE90dG8gTUlQUyBzd2l0Y2ggU29DcyAoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpLCByZXF1aXJlcyBPRiBzeXNjb24gcGFyZW50IG5vZGVzLCBzdXBwcmVzc2VzIG1hbnVhbCBkcml2ZXIgYmluZGluZyB2aWEgc3lzZnMsIGFuZCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIGFtZDY0IFFFTVUvR0NFIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhODdkMDFmMmM4ZjUxNzFhYzU0MGZjZGYxZTQyNWQ0YTQ4OWVkZWQ1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBTZXAgNiAyMTowMjoyMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbAppbmRleCA2N2UwYjIzYTg0NzBlLi44ODUwMmQwMTdlZWRiIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sCkBAIC01Niw2ICYjNDM7NTYsOSBAQCBwYXR0ZXJuUHJvcGVydGllczoKICAgICAgIHJlZzoKICAgICAgICAgbWF4SXRlbXM6IDEKIAomIzQzOyAgICAgIGNsb2NrLWZyZXF1ZW5jeToKJiM0MzsgICAgICAgIGRlZmF1bHQ6IDI1MDAwMDAKJiM0MzsKICAgICByZXF1aXJlZDoKICAgICAgIC0gcmVnCiAKQEAgLTcxLDYgJiM0Mzs3NCw0MyBAQCByZXF1aXJlZDoKICAgLSBjb21wYXRpYmxlCiAgIC0gcmVnCiAKJiM0MzthbGxPZjoKJiM0MzsgIC0gaWY6CiYjNDM7ICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgIGNvbXBhdGlibGU6CiYjNDM7ICAgICAgICAgIGNvbnRhaW5zOgomIzQzOyAgICAgICAgICAgIGVudW06CiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM4MC1tZGlvCiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM4MS1tZGlvCiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM4Mi1tZGlvCiYjNDM7ICAgIHRoZW46CiYjNDM7ICAgICAgcGF0dGVyblByb3BlcnRpZXM6CiYjNDM7ICAgICAgICAmIzM5O15tZGlvLWJ1c0BbMC0zXSQmIzM5OzoKJiM0MzsgICAgICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgICAgICBjbG9jay1mcmVxdWVuY3k6CiYjNDM7ICAgICAgICAgICAgICBlbnVtOiBbMjUwMDAwMCwgMTAwMDAwMDBdCiYjNDM7ICAtIGlmOgomIzQzOyAgICAgIHByb3BlcnRpZXM6CiYjNDM7ICAgICAgICBjb21wYXRpYmxlOgomIzQzOyAgICAgICAgICBjb250YWluczoKJiM0MzsgICAgICAgICAgICBlbnVtOgomIzQzOyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzOTEtbWRpbwomIzQzOyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzOTItbWRpbwomIzQzOyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzOTMtbWRpbwomIzQzOyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDkzMDEtbWRpbwomIzQzOyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDkzMDJiLW1kaW8KJiM0MzsgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzAyYy1tZGlvCiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMy1tZGlvCiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMxMS1tZGlvCiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMxMi1tZGlvCiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMxMy1tZGlvCiYjNDM7ICAgIHRoZW46CiYjNDM7ICAgICAgcGF0dGVyblByb3BlcnRpZXM6CiYjNDM7ICAgICAgICAmIzM5O15tZGlvLWJ1c0BbMC0zXSQmIzM5OzoKJiM0MzsgICAgICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgICAgICBjbG9jay1mcmVxdWVuY3k6CiYjNDM7ICAgICAgICAgICAgICBlbnVtOiBbMTI1MDAwMCwgMjUwMDAwMCwgNTAwMDAwMF0KJiM0MzsKIHVuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2UKIAogZXhhbXBsZXM6CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMKaW5kZXggMTFkMDc4ZWY5NDFjZC4uOGVkYjBiYTBiY2RkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYwpAQCAtMTMwLDYgJiM0MzsxMzAsNyBAQAogI2RlZmluZSBSVEw4MzgwX05VTV9QQUdFUwkJCTQwOTYKICNkZWZpbmUgUlRMODM4MF9OVU1fUE9SVFMJCQkyOAogI2RlZmluZSBSVEw4MzgwX1NNSV9HTEJfQ1RSTAkJCTB4YTEwMAomIzQzOyNkZWZpbmUgICBSVEw4MzgwX1NNSV9GUkVRX1NFTAkJCUJJVCgxKQogI2RlZmluZSAgIFJUTDgzODBfU01JX1BIWV9QQVRDSF9ET05FCQlCSVQoMTUpCiAjZGVmaW5lIFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8wCQkweGExYjgKICNkZWZpbmUgUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzEJCTB4YTFiYwpAQCAtMTY5LDEyICYjNDM7MTcwLDE1IEBACiAjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9MT1cJCTB4MDNlNAogI2RlZmluZSBSVEw4MzkwX1BIWVJFR19QT1JUX0NUUkxfSElHSAkJMHgwM2U4CiAjZGVmaW5lIFJUTDgzOTBfU01JX1BPUlRfUE9MTElOR19DVFJMCQkweDAzZmMKJiM0MzsjZGVmaW5lIFJUTDgzOTBfU01JX0dMQl9DVFJMCQkJMHgwM2Y4CiYjNDM7I2RlZmluZSAgIFJUTDgzOTBfU01JX0ZSRVFfU0VMCQkJR0VOTUFTSyg2LCA1KQogCiAjZGVmaW5lIFJUTDkzMDBfTlVNX0JVU0VTCQkJNAogI2RlZmluZSBSVEw5MzAwX05VTV9QQUdFUwkJCTQwOTYKICNkZWZpbmUgUlRMOTMwMF9OVU1fUE9SVFMJCQkyOAogI2RlZmluZSBSVEw5MzAwX1NNSV9HTEJfQ1RSTAkJCTB4Y2EwMAogI2RlZmluZSAgIFJUTDkzMDBfR0xCX0NUUkxfSU5URl9TRUwoaW50ZikJQklUKDE2ICYjNDM7IChpbnRmKSkKJiM0MzsjZGVmaW5lICAgUlRMOTMwMF9TTUlfRlJFUV9TRUwoaW50ZikJCUdFTk1BU0soKGludGYpICogMiAmIzQzOyA5LCAoaW50ZikgKiAyICYjNDM7IDgpCiAjZGVmaW5lIFJUTDkzMDBfU01JX1BPUlQwXzE1X1BPTExJTkdfU0VMCTB4Y2EwOAogI2RlZmluZSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMAkJMHhjYjcwCiAjZGVmaW5lIFJUTDkzMDBfU01JX0FDQ0VTU19QSFlfQ1RSTF8xCQkweGNiNzQKQEAgLTE5Niw2ICYjNDM7MjAwLDggQEAKICNkZWZpbmUgUlRMOTMxMF9OVU1fQlVTRVMJCQk0CiAjZGVmaW5lIFJUTDkzMTBfTlVNX1BBR0VTCQkJODE5MgogI2RlZmluZSBSVEw5MzEwX05VTV9QT1JUUwkJCTU2CiYjNDM7I2RlZmluZSBSVEw5MzEwX1NNSV9HTEJfQ1RSTDAJCQkweDBjYzAKJiM0MzsjZGVmaW5lICAgUlRMOTMxMF9TTUlfRlJFUV9TRUwoaW50ZikJCUdFTk1BU0soKGludGYpICogMiAmIzQzOyA1LCAoaW50ZikgKiAyICYjNDM7IDQpCiAjZGVmaW5lIFJUTDkzMTBfU01JX0dMQl9DVFJMMQkJCTB4MGNiYwogI2RlZmluZSAgIFJUTDkzMTBfU01JX0dMQl9GTVRfU0VMX0M0NShpbnRmKQlCSVQoKGludGYpICogMiAmIzQzOyAxKQogI2RlZmluZSBSVEw5MzEwX1NNSV9JTkRSVF9BQ0NFU1NfQ1RSTF8wCQkweDBjMDAKQEAgLTI1MSw2ICYjNDM7MjU3LDcgQEAgc3RydWN0IG90dG9fZW1kaW9fcHJpdiB7CiAJc3RydWN0IHJlZ21hcCAqcmVnbWFwOwogCXN0cnVjdCBtdXRleCBsb2NrOyAvKiBwcm90ZWN0IEhXIGFjY2VzcyAqLwogCURFQ0xBUkVfQklUTUFQKHZhbGlkX3BvcnRzLCBNQVhfUE9SVFMpOwomIzQzOwl1MzIgZ2xvYmFsX2ZyZXE7CiAJdTE2IHBhZ2VbTUFYX1BPUlRTXTsKIAl1OCBzbWlfYnVzW01BWF9QT1JUU107CiAJdTggc21pX2FkZHJbTUFYX1BPUlRTXTsKQEAgLTI2OSw2ICYjNDM7Mjc2LDcgQEAgc3RydWN0IG90dG9fZW1kaW9faW5mbyB7CiAJdTggbnVtX3BvcnRzOwogCXUxNiBudW1fcGFnZXM7CiAJdTMyIHBvbGxfY3RybDsKJiM0MzsJaW50ICgqc2V0X2J1c19mcmVxdWVuY3kpKHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKTsKIAlpbnQgKCpzZXR1cF9jb250cm9sbGVyKShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KTsKIAlpbnQgKCpyZWFkX2MyMikoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpOwogCWludCAoKnJlYWRfYzQ1KShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKTsKQEAgLTc0MCw2ICYjNDM7NzQ4LDE3IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19zZXR1cF90b3BvbG9neShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KQogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpOwomIzQzOwomIzQzOwlpZiAoZnJlcSAhPSAyNTAwMDAwICZhbXA7JmFtcDsgZnJlcSAhPSAxMDAwMDAwMCkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwlyZXR1cm4gcmVnbWFwX2Fzc2lnbl9iaXRzKHByaXYtJmd0O3JlZ21hcCwgUlRMODM4MF9TTUlfR0xCX0NUUkwsCiYjNDM7CQkJCSAgUlRMODM4MF9TTUlfRlJFUV9TRUwsIGZyZXEgPT0gMTAwMDAwMDApOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdikKIHsKIAkvKgpAQCAtNzQ5LDYgJiM0Mzs3NjgsNDAgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KQogCXJldHVybiByZWdtYXBfc2V0X2JpdHMocHJpdi0mZ3Q7cmVnbWFwLCBSVEw4MzgwX1NNSV9HTEJfQ1RSTCwgUlRMODM4MF9TTUlfUEhZX1BBVENIX0RPTkUpOwogfQogCiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpOwomIzQzOwl1MzIgdmFsOwomIzQzOwlpbnQgZXJyOwomIzQzOwomIzQzOwlpZiAoZnJlcSAhPSAxMjUwMDAwICZhbXA7JmFtcDsgZnJlcSAhPSAyNTAwMDAwICZhbXA7JmFtcDsgZnJlcSAhPSA1MDAwMDAwKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CWlmIChwcml2LSZndDtnbG9iYWxfZnJlcSkKJiM0MzsJCXJldHVybiBmcmVxID09IHByaXYtJmd0O2dsb2JhbF9mcmVxID8gMCA6IC1FSU5WQUw7CiYjNDM7CiYjNDM7CXZhbCA9IEZJRUxEX1BSRVAoUlRMODM5MF9TTUlfRlJFUV9TRUwsIGZyZXEgLyAyNTAwMDAwKTsKJiM0MzsJZXJyID0gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtJmd0O3JlZ21hcCwgUlRMODM5MF9TTUlfR0xCX0NUUkwsIFJUTDgzOTBfU01JX0ZSRVFfU0VMLCB2YWwpOwomIzQzOwlpZiAoIWVycikKJiM0MzsJCXByaXYtJmd0O2dsb2JhbF9mcmVxID0gZnJlcTsKJiM0MzsKJiM0MzsJcmV0dXJuIGVycjsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpOwomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gYnVzLSZndDtwcml2OwomIzQzOwl1MzIgbWFzaywgdmFsOwomIzQzOwomIzQzOwlpZiAoZnJlcSAhPSAxMjUwMDAwICZhbXA7JmFtcDsgZnJlcSAhPSAyNTAwMDAwICZhbXA7JmFtcDsgZnJlcSAhPSA1MDAwMDAwKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CW1hc2sgPSBSVEw5MzAwX1NNSV9GUkVRX1NFTChjaGFuLSZndDttZGlvX2J1cyk7CiYjNDM7CXZhbCA9IGZpZWxkX3ByZXAobWFzaywgZnJlcSAvIDI1MDAwMDApOwomIzQzOwomIzQzOwlyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtJmd0O3JlZ21hcCwgUlRMOTMwMF9TTUlfR0xCX0NUUkwsIG1hc2ssIHZhbCk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KQogewogCXUzMiBnbGJfY3RybF9tYXNrID0gMCwgZ2xiX2N0cmxfdmFsID0gMDsKQEAgLTc2OSw2ICYjNDM7ODIyLDIxIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdikKIAlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKQomIzQzO3sKJiM0MzsJc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTsKJiM0MzsJc3RydWN0IG90dG9fZW1kaW9fY2hhbiAqY2hhbiA9IGJ1cy0mZ3Q7cHJpdjsKJiM0MzsJdTMyIG1hc2ssIHZhbDsKJiM0MzsKJiM0MzsJaWYgKGZyZXEgIT0gMTI1MDAwMCAmYW1wOyZhbXA7IGZyZXEgIT0gMjUwMDAwMCAmYW1wOyZhbXA7IGZyZXEgIT0gNTAwMDAwMCkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwltYXNrID0gUlRMOTMxMF9TTUlfRlJFUV9TRUwoY2hhbi0mZ3Q7bWRpb19idXMpOwomIzQzOwl2YWwgPSBmaWVsZF9wcmVwKG1hc2ssIGZyZXEgLyAyNTAwMDAwKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhwcml2LSZndDtyZWdtYXAsIFJUTDkzMTBfU01JX0dMQl9DVFJMMCwgbWFzaywgdmFsKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpCiB7CiAJaW50IGksIGVycjsKQEAgLTgzMSwxNCAmIzQzOzg5OSwxNCBAQCBzdGF0aWMgdm9pZCBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB9CiAKIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LAotCQkJCSBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqbm9kZSkKJiM0MzsJCQkJc3RydWN0IGRldmljZV9ub2RlICpub2RlKQogewogCXN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW47CiAJc3RydWN0IG1paV9idXMgKmJ1czsKLQl1MzIgbWRpb19idXM7CiYjNDM7CXUzMiBtZGlvX2J1cywgZnJlcTsKIAlpbnQgZXJyOwogCi0JZXJyID0gZndub2RlX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsICYjMzQ7cmVnJiMzNDssICZhbXA7bWRpb19idXMpOwomIzQzOwllcnIgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCAmIzM0O3JlZyYjMzQ7LCAmYW1wO21kaW9fYnVzKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgJiMzNDt1bmRlZmluZWQgc21pIGJ1cyBudW1iZXJcbiYjMzQ7KTsKIApAQCAtODY1LDcgJiM0Mzs5MzMsMTQgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYKIAogCXNucHJpbnRmKGJ1cy0mZ3Q7aWQsIE1JSV9CVVNfSURfU0laRSwgJiMzNDslcy0lZCYjMzQ7LCBkZXZfbmFtZShkZXYpLCBtZGlvX2J1cyk7CiAKLQllcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIHRvX29mX25vZGUobm9kZSkpOwomIzQzOwlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgJiMzNDtjbG9jay1mcmVxdWVuY3kmIzM0OywgJmFtcDtmcmVxKSkKJiM0MzsJCWZyZXEgPSAyNTAwMDAwOwomIzQzOwllcnIgPSBwcml2LSZndDtpbmZvLSZndDtzZXRfYnVzX2ZyZXF1ZW5jeShidXMsIGZyZXEpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBlcnIsICYjMzQ7Y2Fubm90IHNldCBmcmVxdWVuY3kgJXUgZm9yIE1ESU8gYnVzICVkXG4mIzM0OywKJiM0MzsJCQkJICAgICBmcmVxLCBtZGlvX2J1cyk7CiYjNDM7CiYjNDM7CWVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbm9kZSk7CiAJaWYgKGVycikKIAkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBlcnIsICYjMzQ7Y2Fubm90IHJlZ2lzdGVyIE1ESU8gYnVzXG4mIzM0Oyk7CiAKQEAgLTEwMjcsNyAmIzQzOzExMDIsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCAmIzM0O2ZhaWxlZCB0byBzZXR1cCBNRElPIGJ1cyBjb250cm9sbGVyXG4mIzM0Oyk7CiAJfQogCi0JZGV2aWNlX2Zvcl9lYWNoX2NoaWxkX25vZGVfc2NvcGVkKGRldiwgY2hpbGQpIHsKJiM0MzsJZm9yX2VhY2hfY2hpbGRfb2Zfbm9kZV9zY29wZWQoZGV2LSZndDtvZl9ub2RlLCBjaGlsZCkgewogCQllcnIgPSBvdHRvX2VtZGlvX3Byb2JlX29uZShkZXYsIHByaXYsIGNoaWxkKTsKIAkJaWYgKGVycikKIAkJCXJldHVybiBlcnI7CkBAIC0xMDUxLDYgJiM0MzsxMTI2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzgwX2luZm8gPSB7CiAJLm51bV9wYWdlcyA9IFJUTDgzODBfTlVNX1BBR0VTLAogCS5udW1fcG9ydHMgPSBSVEw4MzgwX05VTV9QT1JUUywKIAkucG9sbF9jdHJsID0gUlRMODM4MF9TTUlfUE9MTF9DVFJMLAomIzQzOwkuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzgzODBfc2V0X2J1c19mcmVxdWVuY3ksCiAJLnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzgzODBfc2V0dXBfY29udHJvbGxlciwKIAkucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIsCiAJLnJlYWRfYzQ1ID0gb3R0b19lbWRpb184MzgwX3JlYWRfYzQ1LApAQCAtMTA3NSw2ICYjNDM7MTE1MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM5MF9pbmZvID0gewogCS5udW1fcGFnZXMgPSBSVEw4MzkwX05VTV9QQUdFUywKIAkubnVtX3BvcnRzID0gUlRMODM5MF9OVU1fUE9SVFMsCiAJLnBvbGxfY3RybCA9IFJUTDgzOTBfU01JX1BPUlRfUE9MTElOR19DVFJMLAomIzQzOwkuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzgzOTBfc2V0X2J1c19mcmVxdWVuY3ksCiAJLnJlYWRfYzIyID0gb3R0b19lbWRpb184MzkwX3JlYWRfYzIyLAogCS5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2M0NSwKIAkud3JpdGVfYzIyID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2MyMiwKQEAgLTEwOTcsNiAmIzQzOzExNzQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMDBfaW5mbyA9IHsKIAkubnVtX3BvcnRzID0gUlRMOTMwMF9OVU1fUE9SVFMsCiAJLm51bV9wYWdlcyA9IFJUTDkzMDBfTlVNX1BBR0VTLAogCS5wb2xsX2N0cmwgPSBSVEw5MzAwX1NNSV9QT0xMX0NUUkwsCiYjNDM7CS5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fOTMwMF9zZXRfYnVzX2ZyZXF1ZW5jeSwKIAkuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyLAogCS5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2MyMiwKIAkucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jNDUsCkBAIC0xMTIzLDYgJiM0MzsxMjAxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzEwX2luZm8gPSB7CiAJLm51bV9wYWdlcyA9IFJUTDkzMTBfTlVNX1BBR0VTLAogCS5udW1fcG9ydHMgPSBSVEw5MzEwX05VTV9QT1JUUywKIAkucG9sbF9jdHJsID0gUlRMOTMxMF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsCiYjNDM7CS5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fOTMxMF9zZXRfYnVzX2ZyZXF1ZW5jeSwKIAkuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyLAogCS5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMiwKIAkucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jNDUsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwOTAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaGluZ2VzIG9uIHdoZXRoZXIgdGhpcyBwYXRjaCBwcmVzZW50cyBhIGNvbXBlbGxpbmcgY2FzZSBmb3IgZnV6emluZywgc28gSSBuZWVkIHRvIHdlaWdoIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UuIExldCYjMzk7cyBzdGFydCBieSBicmVha2luZyBkb3duIHRoZSBwYXRjaCYjMzk7cyBjb21wb25lbnRzLgoKRmlyc3QsIEkgc2VlIHRoZSBtb2RpZmljYXRpb25zIGludm9sdmUgdHdvIGZpbGVzOiBgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sYCBhbmQgYGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY2AuIFRoZSBZQU1MIGZpbGUgdHlwaWNhbGx5IGluZGljYXRlcyBjaGFuZ2VzIHRvIERldmljZSBUcmVlIGJpbmRpbmdzLCB3aGljaCAqY291bGQqIGludm9sdmUgc3VidGxlIGxvZ2ljIGNoYW5nZXMgaW5mbHVlbmNpbmcgZGV2aWNlIGNvbmZpZ3VyYXRpb24gb3IgZGF0YSBpbnRlcnByZXRhdGlvbiDigJMgd29ydGggbm90aW5nLCBidXQgbm90IG5lY2Vzc2FyaWx5IGEgZnV6emluZyBnb2xkIG1pbmUgb24gaXRzIG93bi4KCk5vdywgdGhlIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBmaWxlIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBkcml2ZXIgZG9lcy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGl0cyBLY29uZmlnIGVudHJ5LiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgZHJpdmVyJiMzOTtzIHJvbGUuIElzIGl0IGEgY29yZSBuZXR3b3JrIGludGVyZmFjZSBkcml2ZXI/IERvZXMgaXQgaW50ZXJhY3Qgd2l0aCBoYXJkd2FyZSBpbiBhIHdheSB0aGF0IGhhbmRsZXMgZXh0ZXJuYWwgZGF0YT8gSXMgaXQgdGFyZ2V0ZWQgYXQgYSBwYXJ0aWN1bGFyIGFyY2hpdGVjdHVyZSBvciBoYXJkd2FyZSBjb21wb25lbnQ/IFRoYXQmIzM5O3MgZ29pbmcgdG8gaW5mb3JtIG1lIHdoZXRoZXIgaXQmIzM5O3Mgd29ydGggdGhlIHRpbWUgdG8gZXZlbiBwcm9iZSB0aGUgc3VyZmFjZSBmb3IgZnV6emluZyBvcHBvcnR1bml0aWVzLiBUaGUgcHJvYmluZy9pbnN0YW50aWF0aW9uIG1ldGhvZCBpcyBhbHNvIGNydWNpYWwgLSBob3cgdGhlIGRyaXZlciBpbml0aWFsaXplcywgcmVjZWl2ZXMgZGF0YSwgYW5kIHNldHMgdXAgY29tbXVuaWNhdGlvbiBjaGFubmVscyBwcm92aWRlcyBncmVhdCBpbmRpY2F0b3JzIGFzIHRvIHdoZXJlIGFuZCBob3cgZnV6emluZyBjYW4gYmUgZWZmZWN0aXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01ESU9fUkVBTFRFS19SVEw5MzAwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpbyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL0tjb25maWc9MTY2PWNvbmZpZyBNRElPX0lQUTgwNjRcbi0tXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTczLVxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnOjE3NDpjb25maWcgTURJT19SRUFMVEVLX1JUTDkzMDBcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy0xNzUtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIFJUTDgzeHgvUlRMOTN4eCBNRElPIGludGVyZmFjZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZT0yMz1vYmotJChDT05GSUdfTURJT19QSUM2NEhQU0MpXHRcdCYjNDM7PSBtZGlvLXBpYzY0aHBzYy5vXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19NRElPX1JFQUxURUtfUlRMOTMwMClcdCYjNDM7PSBtZGlvLXJlYWx0ZWstcnRsOTMwMC5vXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlLTI1LW9iai0kKENPTkZJR19NRElPX1JFR01BUClcdFx0JiM0Mzs9IG1kaW8tcmVnbWFwLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODE3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgTURJT19SRUFMVEVLX1JUTDkzMDAgS2NvbmZpZyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoZSBLY29uZmlnIGZvciB0aGUgTURJT19SRUFMVEVLX1JUTDkzMDAgZHJpdmVyLiBNeSBpbml0aWFsIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBzdXBwb3J0IGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBicm9hZGVyIGJ1aWxkIHN5c3RlbS4gV2hhdCBhcmUgdGhlIGtleSBkZXBlbmRlbmNpZXM/IFdoYXQgb3B0aW9ucyBhcmUgZXhwb3NlZCB0byB0aGUgdXNlciwgYW5kIGhvdyBncmFudWxhciBhcmUgdGhleT8gSeKAmW0gbG9va2luZyBmb3IgdGhlIGVzc2VudGlhbCBrbm9icywgdGhlIG9uZXMgdGhhdCB0cnVseSBtYXR0ZXIuIEZvciBleGFtcGxlLCBhcmUgdGhlcmUgb3B0aW9uYWwgZmVhdHVyZXMgY29udHJvbGxlZCBieSB0cmlzdGF0ZXMgb3IganVzdCBib29scz8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyB0aGlzIGRyaXZlciAtLSB3aGljaCBkZXBlbmRlbmNpZXMgd2lsbCBJIHB1bGwgaW4gYW5kIGlzIHRoaXMgZHJpdmVyIHJlcXVpcmVkIGZvciBvdGhlciBjb3JlIGZ1bmN0aW9uYWxpdGllcz8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWxseSBwcm9ibGVtYXRpYyBkZWZhdWx0cyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gSSYjMzk7bGwgYmUgY2hlY2tpbmcgaWYgdGhlIGRyaXZlciYjMzk7cyBjb25maWd1cmF0aW9uIGlzIGNsZWFuIG9yIGlmIGl0IG5lZWRzIGltcHJvdmVtZW50LiBVbmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZ2l2ZXMgbWUgaW5zaWdodCBpbnRvIHRoZSBkcml2ZXImIzM5O3MgY2FwYWJpbGl0aWVzIGFuZCBpdHMgc3VpdGFiaWxpdHkgZm9yIGRpZmZlcmVudCB1c2UgY2FzZXMuIFVsdGltYXRlbHksIEkgbmVlZCB0byBrbm93IHRoZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgdGhpcyBkcml2ZXIgaW4gbXkgc3lzdGVtIGNvbmZpZ3VyYXRpb24sIGJvdGggaW4gdGVybXMgb2YgY29kZSBmb290cHJpbnQgYW5kIHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBtb2R1bGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNzA6XHRcdGhlbHBcbiAxNzE6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIE1ESU8gaW50ZXJmYWNlIGZvdW5kIGluIHRoZSBuZXR3b3JrXG4gMTcyOlx0XHQgIGludGVyZmFjZSB1bml0cyBvZiB0aGUgSVBRODA2NCBTb0NcbiAxNzM6XHRcbiAxNzQ6XHRjb25maWcgTURJT19SRUFMVEVLX1JUTDkzMDBcbiAxNzU6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcJiMzNDtcbiAxNzY6XHRcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcbiAxNzc6XHRcdGhlbHBcbiAxNzg6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIE1ESU8gaW50ZXJmYWNlIGZvdW5kIGluIHRoZSBSZWFsdGVrXG4gMTc5Olx0XHQgIFJUTDgzeHgvUlRMOTN4eCBmYW1pbHkgb2YgRXRoZXJuZXQgc3dpdGNoZXMgd2l0aCBpbnRlZ3JhdGVkIFNvQy5cbiAxODA6XHRcbiAxODE6XHRjb25maWcgTURJT19SRUdNQVBcbiAxODI6XHRcdHRyaXN0YXRlXG4gMTgzOlx0XHRoZWxwXG4gMTg0Olx0XHQgIFRoaXMgZHJpdmVyIGFsbG93cyB1c2luZyBNRElPIGRldmljZXMgdGhhdCBhcmUgbm90IHNpdHRpbmcgb24gYVxuIDE4NTpcdFx0ICByZWd1bGFyIE1ESU8gYnVzLCBidXQgc3RpbGwgZXhwb3NlcyB0aGUgc3RhbmRhcmQgODAyLjMgcmVnaXN0ZXJcbiAxODY6XHRcdCAgbGF5b3V0LiBJdCYjMzk7cyByZWdtYXAtYmFzZWQgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBvbiBpbnRlZ3JhdGVkLFxuIDE4NzpcdFx0ICBtZW1vcnktbWFwcGVkIFBIWXMsIFNQSSBQSFlzIGFuZCBzbyBvbi4gQSBuZXcgdmlydHVhbCBNRElPIGJ1cyBpc1xuIDE4ODpcdFx0ICBjcmVhdGVkLCBhbmQgaXRzIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBhcmUgbWFwcGVkIHRvIHRoZSB1bmRlcmx5aW5nXG4gMTg5Olx0XHQgIHJlZ21hcC4gVXNlcnMgd2lsbGluZyB0byB1c2UgdGhpcyBkcml2ZXIgbXVzdCBleHBsaWNpdGx5IHNlbGVjdFxuIDE5MDpcdFx0ICBSRUdNQVAuXG4gMTkxOlx0XG4gMTkyOlx0Y29uZmlnIE1ESU9fVEhVTkRFUlxuIDE5MzpcdFx0dHJpc3RhdGUgXCYjMzQ7VGh1bmRlclggU09DcyBNRElPIGJ1c2VzXCYjMzQ7XG4gMTk0Olx0XHRkZXBlbmRzIG9uIDY0QklUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODU2NAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgbWRpby1yZWFsdGVrLXJ0bDkzMDAuYyBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBwcm9iaW5nIG1lY2hhbmlzbS4gRmlyc3QsIEkmIzM5O2xsIGlkZW50aWZ5IHRoZSBidXMgaXQmIzM5O3MgdGllZCB0by4gVGhlbiwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBzdHJpY3RseSBhIHBsYXRmb3JtIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aGF0IFJlYWx0ZWsgTUlQUyBTb0MsIHRoZSBgTUFDSF9SRUFMVEVLX1JUTGAgYXJjaGl0ZWN0dXJlLCBvciBpZiB0aGVyZSYjMzk7cyBzb21lIGRldmljZSB0cmVlIChEVCkgb3ZlcmxheSBjb25maWd1cmF0aW9uIG9yIGFsdGVybmF0aXZlIGFwcHJvYWNoIHRoYXQgYWxsb3dzIGl0IHRvIGJlIGFjY2Vzc2VkIHZpYSBvdGhlciBjb25maWd1cmF0aW9ucy4gRXNzZW50aWFsbHksIEkgbmVlZCB0byBnZXQgdGhlIGJpZyBwaWN0dXJlIG9mIHRoaXMgZHJpdmVyIGFuZCBob3cgaXQmIzM5O3MgaW50ZWdyYXRlZC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSB0aG9yb3VnaCByZXZpZXcgb2YgdGhlIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBmaWxlIGl0c2VsZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvdHRvX2VtZGlvXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjQzLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI0NDpzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjQ1LVx0dTMyIGMyMl9kYXRhO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNTQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MjU1OnN0cnVjdCBvdHRvX2VtZGlvX3ByaXYge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI1NjpcdGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gKmluZm87XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjU3LVx0c3RydWN0IHJlZ21hcCAqcmVnbWFwO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNjctXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MjY4OnN0cnVjdCBvdHRvX2VtZGlvX2luZm8ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI2OS1cdHUzMiBhZGRyX21hcF9iYXNlO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNzMtXHR1MzIgY21kX3dyaXRlO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI3NDpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9yZWdzO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI3NS1cdHU4IG51bV9idXNlcztcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjc5LVx0aW50ICgqc2V0X2J1c19mcmVxdWVuY3kpKHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyODA6XHRpbnQgKCpzZXR1cF9jb250cm9sbGVyKShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yODEtXHRpbnQgKCpyZWFkX2MyMikoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yODYtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Mjg3OnN0cnVjdCBvdHRvX2VtZGlvX2NoYW4ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI4ODpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXY7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjg5LVx0dTggbWRpb19idXM7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI5MS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyOTI6c3RhdGljIGludCBvdHRvX2VtZGlvX3BoeV90b19wb3J0KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjkzLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyOTQ6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Mjk1Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdjtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yOTYtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzA3LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMwODpzdGF0aWMgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqb3R0b19lbWRpb19idXNfdG9fcHJpdihzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTMwOS17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MzEwOlx0c3RydWN0IG90dG9fZW1kaW9fY2hhbiAqY2hhbiA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTMxMS1cbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzE0LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMxNTpzdGF0aWMgaW50IG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LCBpbnQgcG9ydCwgYm9vbCBhY3RpdmUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzE2LXtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzIwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMyMTpzdGF0aWMgaW50IG90dG9fZW1kaW9fcnVuX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMyMjpcdFx0XHQgICAgICBzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyAqY21kX2RhdGEpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzIzLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozMjQ6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMyNTpcdGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gKmluZm8gPSBwcml2LVx1MDAzZWluZm87XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzI2LVx0dTMyIGNtZHN0YXRlO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zNzctXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Mzc4OnN0YXRpYyBpbnQgb3R0b19lbWRpb19yZWFkX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjM3OTpcdFx0XHQgICAgICAgc3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgKmNtZF9kYXRhLCB1MzIgbWFzaywgdTMyICp2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zODAte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjM4MTpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzgyLVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzg0LVx0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZwcml2LVx1MDAzZWxvY2spO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjM4NTpcdHJldCA9IG90dG9fZW1kaW9fcnVuX2NtZChidXMsIGNtZCB8IHByaXYtXHUwMDNlaW5mby1cdTAwM2VjbWRfcmVhZCwgY21kX2RhdGEpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTM4Ni1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTM5Ny1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozOTg6c3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjM5OTpcdFx0XHRcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzICpjbWRfZGF0YSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MDAte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQwMTpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDAyLVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MDQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDA1Olx0cmV0dXJuIG90dG9fZW1kaW9fcnVuX2NtZChidXMsIGNtZCB8IHByaXYtXHUwMDNlaW5mby1cdTAwM2VjbWRfd3JpdGUsIGNtZF9kYXRhKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MDYtfVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQwNy1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MDg6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDA5LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MTA6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQxMTpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQxMi1cdFx0LmMyMl9kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQxNy1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MTg6XHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DMjIsIFx1MDAyNmNtZF9kYXRhLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQxOS1cdFx0XHRcdCAgIFJUTDgzODBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MjEtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDIyOnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQyMy17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDI0Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MjU6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MjYtXHRcdC5jMjJfZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MzItXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDMzOlx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0MyMiwgXHUwMDI2Y21kX2RhdGEpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQzNC19XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDM1LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQzNjpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MzctXHRcdFx0XHQgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQzOC17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDM5Olx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDQwLVx0XHQuYzQ1X2RhdGFcdD0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ0NC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0NDU6XHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DNDUsIFx1MDAyNmNtZF9kYXRhLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ0Ni1cdFx0XHRcdCAgIFJUTDgzODBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NDgtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDQ5OnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NTAtXHRcdFx0XHQgICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ1MS17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDUyOlx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDUzLVx0XHQuYzQ1X2RhdGFcdD0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ1OC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0NTk6XHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcdTAwMjZjbWRfZGF0YSk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDYwLX1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NjEtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDYyOnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ2My17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDY0Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0NjU6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NjYtXHRcdC5jMjJfZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NzEtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDcyOlx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzIyLCBcdTAwMjZjbWRfZGF0YSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NzMtXHRcdFx0XHQgICBSVEw4MzkwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDc1LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ3NjpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM5MF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00Nzcte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ3ODpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDc5Olx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDgwLVx0XHQuYzIyX2RhdGFcdD0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDg3LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ4ODpcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDgzOTBfUEhZX0NUUkxfVFlQRV9DMjIsIFx1MDAyNmNtZF9kYXRhKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00ODktfVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ5MC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0OTE6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDkyLVx0XHRcdFx0ICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00OTMte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ5NDpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ5NS1cdFx0LmM0NV9kYXRhXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00OTktXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTAwOlx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcdTAwMjZjbWRfZGF0YSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MDEtXHRcdFx0XHQgICBSVEw4MzkwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTAzLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUwNDpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM5MF93cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTA1LVx0XHRcdFx0ICAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MDYte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUwNzpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUwOC1cdFx0LmM0NV9kYXRhXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MTQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTE1Olx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0M0NSwgXHUwMDI2Y21kX2RhdGEpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUxNi19XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTE3LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUxODpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MTkte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUyMDpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTIxOlx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTIyLVx0XHQuYzIyX2RhdGFcdD0gRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTI3LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUyODpcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMOTMwMF9QSFlfQ1RSTF9UWVBFX0MyMiwgXHUwMDI2Y21kX2RhdGEsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTI5LVx0XHRcdFx0ICAgUlRMOTMwMF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUzMS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1MzI6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTMzLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1MzQ6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUzNTpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUzNi1cdFx0LmMyMl9kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU0Mi1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NDM6XHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw5MzAwX1BIWV9DVFJMX1RZUEVfQzIyLCBcdTAwMjZjbWRfZGF0YSk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQ0LX1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NDUtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTQ2OnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU0Ny1cdFx0XHRcdCAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQ4LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NDk6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NTAtXHRcdC5jNDVfZGF0YVx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTU0LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU1NTpcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMOTMwMF9QSFlfQ1RSTF9UWVBFX0M0NSwgXHUwMDI2Y21kX2RhdGEsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTU2LVx0XHRcdFx0ICAgUlRMOTMwMF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU1OC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NTk6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU2MC1cdFx0XHRcdCAgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTYxLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NjI6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NjMtXHRcdC5jNDVfZGF0YVx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTY4LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU2OTpcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDkzMDBfUEhZX0NUUkxfVFlQRV9DNDUsIFx1MDAyNmNtZF9kYXRhKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NzAtfVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU3MS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NzI6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTczLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NzQ6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU3NTpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU3Ni1cdFx0LmJyb2FkY2FzdFx0PSBGSUVMRF9QUkVQKFJUTDkzMTBfQkNfUE9SVF9JRCwgcG9ydCksXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU4MC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1ODE6XHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDkzMTBfUEhZX0NUUkxfVFlQRV9DMjIsIFx1MDAyNmNtZF9kYXRhLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU4Mi1cdFx0XHRcdCAgIFJUTDkzMTBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01ODQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTg1OnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU4Ni17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTg3Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1ODg6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01ODktXHRcdC5jMjJfZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDkzMTBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01OTUtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTk2Olx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMOTMxMF9QSFlfQ1RSTF9UWVBFX0MyMiwgXHUwMDI2Y21kX2RhdGEpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU5Ny19XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTk4LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU5OTpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02MDAtXHRcdFx0XHQgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYwMS17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NjAyOlx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjAzLVx0XHQuYnJvYWRjYXN0XHQ9IEZJRUxEX1BSRVAoUlRMOTMxMF9CQ19QT1JUX0lELCBwb3J0KSxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjA3LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjYwODpcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMOTMxMF9QSFlfQ1RSTF9UWVBFX0M0NSwgXHUwMDI2Y21kX2RhdGEsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjA5LVx0XHRcdFx0ICAgUlRMOTMxMF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYxMS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MTI6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYxMy1cdFx0XHRcdCAgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjE0LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MTU6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02MTYtXHRcdC5jNDVfZGF0YVx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjIyLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjYyMzpcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDkzMTBfUEhZX0NUUkxfVFlQRV9DNDUsIFx1MDAyNmNtZF9kYXRhKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02MjQtfVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYyNS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MjY6c3RhdGljIGludCBvdHRvX2VtZGlvX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjI3LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2Mjg6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYyOS1cdGludCByZXQsIHBvcnQ7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYzNy1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2Mzg6XHRwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChidXMsIHBoeV9pZCk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjM5LVx0aWYgKHBvcnQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY1MS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2NTI6c3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY1My1cdFx0XHRcdHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02NTQte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjY1NTpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjU2LVx0aW50IHJldCwgcG9ydDtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjYzLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjY2NDpcdHBvcnQgPSBvdHRvX2VtZGlvX3BoeV90b19wb3J0KGJ1cywgcGh5X2lkKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02NjUtXHRpZiAocG9ydCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjgyLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjY4MzpzdGF0aWMgaW50IG90dG9fZW1kaW9fcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY4NC17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Njg1Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02ODYtXHRpbnQgcmV0LCBwb3J0O1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02ODgtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Njg5Olx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY5MC1cdGlmIChwb3J0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02OTgtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Njk5OnN0YXRpYyBpbnQgb3R0b19lbWRpb193cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MDAtXHRcdFx0XHRpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MDEte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjcwMjpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzAzLVx0aW50IHJldCwgcG9ydDtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MDQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzA1Olx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTcwNi1cdGlmIChwb3J0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MTQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzE1OnN0YXRpYyBpbnQgb3R0b19lbWRpb193cml0ZV9tYXBwaW5nKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYsIHUzMiBiYXNlLCB1MzIgcG9ydCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MTYtXHRcdFx0XHQgICAgdTMyIHZhbHNfcGVyX3JlZywgdTMyIGJpdHNfcGVyX3ZhbCwgdTMyIHZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MjQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzI1OnN0YXRpYyBpbnQgb3R0b19lbWRpb19zZXR1cF90b3BvbG9neShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTcyNi17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzI3Olx0Y29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyAqaW5mbyA9IHByaXYtXHUwMDNlaW5mbztcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MjgtXHR1MzIgcG9ydDtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzMyLVx0XHRpZiAoaW5mby1cdTAwM2VidXNfbWFwX2Jhc2UpIHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3MzM6XHRcdFx0cmV0ID0gb3R0b19lbWRpb193cml0ZV9tYXBwaW5nKHByaXYsIGluZm8tXHUwMDNlYnVzX21hcF9iYXNlLCBwb3J0LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTczNC1cdFx0XHRcdFx0XHQgICAgICAgTUFQX0JVU0VTX1BFUl9SRUcsIE1BUF9CSVRTX1BFUl9CVVMsXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTczOS1cdFx0aWYgKGluZm8tXHUwMDNlYWRkcl9tYXBfYmFzZSkge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjc0MDpcdFx0XHRyZXQgPSBvdHRvX2VtZGlvX3dyaXRlX21hcHBpbmcocHJpdiwgaW5mby1cdTAwM2VhZGRyX21hcF9iYXNlLCBwb3J0LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc0MS1cdFx0XHRcdFx0XHQgICAgICAgTUFQX0FERFJTX1BFUl9SRUcsIE1BUF9CSVRTX1BFUl9BRERSLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NTAtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzUxOnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc1Mi17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzUzOlx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NTQtXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc2MS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3NjI6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc2My17XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc3MC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3NzE6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzcyLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3NzM6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc3NC1cdHUzMiB2YWw7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc4OS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3OTA6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzkxLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3OTI6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjc5MzpcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03OTQtXHR1MzIgbWFzaywgdmFsO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MDQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODA1OnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MDYte1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MjQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODI1OnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgyNi17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODI3Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4Mjg6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODI5LVx0dTMyIG1hc2ssIHZhbDtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODM5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg0MDpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODQxLXtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODU1LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg1NjpzdGF0aWMgaW50IG90dG9fZW1kaW9fbm90aWZ5X3BoeV9hdHRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04NTcte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg1ODpcdGludCBwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChwaHlkZXYtXHUwMDNlbWRpby5idXMsIHBoeWRldi1cdTAwM2VtZGlvLmFkZHIpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg1OTpcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4NjA6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gY2hhbi1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg2MS1cbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODc3LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg3ODpcdHJldHVybiBvdHRvX2VtZGlvX3NldF9wb3J0X3BvbGxpbmcocHJpdiwgcG9ydCwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODc5LX1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04ODAtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODgxOnN0YXRpYyB2b2lkIG90dG9fZW1kaW9fbm90aWZ5X3BoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04ODIte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg4My1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwaHlkZXYtXHUwMDNlbWRpby5idXM7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODg0Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdjtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04ODUtXHRpbnQgcG9ydDtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04ODYtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODg3Olx0cHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYocGh5ZGV2LVx1MDAzZW1kaW8uYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4ODg6XHRwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChwaHlkZXYtXHUwMDNlbWRpby5idXMsIHBoeWRldi1cdTAwM2VtZGlvLmFkZHIpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg4OS1cbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODk2LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg5NzpcdGlmIChvdHRvX2VtZGlvX3NldF9wb3J0X3BvbGxpbmcocHJpdiwgcG9ydCwgZmFsc2UpKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg5OC1cdFx0ZGV2X2VycihidXMtXHUwMDNlcGFyZW50LCBcJiMzNDtmYWlsZWQgdG8gZGlzYWJsZSBwb2xsaW5nIGZvciBwb3J0ICVkXFxuXCYjMzQ7LCBwb3J0KTtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTAwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjkwMTpzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy05MDItXHRcdFx0XHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTAzLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5MDQ6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTkwNS1cdHN0cnVjdCBtaWlfYnVzICpidXM7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTkyMS1cdGJ1cy1cdTAwM2VuYW1lID0gXCYjMzQ7UmVhbHRlayBTd2l0Y2ggTURJTyBCdXNcJiMzNDs7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTIyOlx0YnVzLVx1MDAzZXJlYWRfYzQ1ID0gb3R0b19lbWRpb19yZWFkX2M0NTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5MjM6XHRidXMtXHUwMDNld3JpdGVfYzQ1ID0gb3R0b19lbWRpb193cml0ZV9jNDU7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTI0Olx0YnVzLVx1MDAzZXJlYWQgPSBvdHRvX2VtZGlvX3JlYWRfYzIyO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjkyNTpcdGJ1cy1cdTAwM2V3cml0ZSA9IG90dG9fZW1kaW9fd3JpdGVfYzIyO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTkyNi1cdGJ1cy1cdTAwM2VwYXJlbnQgPSBkZXY7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTI3Olx0YnVzLVx1MDAzZW5vdGlmeV9waHlfYXR0YWNoID0gb3R0b19lbWRpb19ub3RpZnlfcGh5X2F0dGFjaDtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5Mjg6XHRidXMtXHUwMDNlbm90aWZ5X3BoeV9kZXRhY2ggPSBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTkyOS1cbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTQ5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjk1MDpzdGF0aWMgc3RydWN0IGRldmljZV9ub2RlICpvdHRvX2VtZGlvX2dldF9idXNfbm9kZShzdHJ1Y3QgZGV2aWNlX25vZGUgKmRuKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk1MS17XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk2OC0gKi9cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5Njk6c3RhdGljIGludCBvdHRvX2VtZGlvX21hcF9wb3J0cyhzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTcwLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy05NzEtXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRzX2RuLCAqcGh5X2RuLCAqYnVzX2RuLCAqY3RybF9kbjtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5NzI6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTczLVx0c3RydWN0IGRldmljZSAqcGFyZW50ID0gZGV2LVx1MDAzZXBhcmVudDtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTg5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjk5MDpcdFx0YnVzX2RuID0gb3R0b19lbWRpb19nZXRfYnVzX25vZGUocGh5X2RuKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy05OTEtXHRcdGlmICghYnVzX2RuKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDUyLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNTM6c3RhdGljIGludCBvdHRvX2VtZGlvX2luaXRfcG9sbGluZyhzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwNTQte1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDU3LVx0Zm9yIChpbnQgcG9ydCA9IDA7IHBvcnQgXHUwMDNjIHByaXYtXHUwMDNlaW5mby1cdTAwM2VudW1fcG9ydHM7IHBvcnQmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTA1ODpcdFx0ZXJyID0gb3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHByaXYsIHBvcnQsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDU5LVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDY1LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNjY6c3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA2Ny17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA2OC1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNjk6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwNzAtXHRpbnQgZXJyO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDg0LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwODU6XHRlcnIgPSBvdHRvX2VtZGlvX2luaXRfcG9sbGluZyhwcml2KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDg2LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA5MC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDkxOlx0ZXJyID0gb3R0b19lbWRpb19tYXBfcG9ydHMoZGV2KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDkyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA5NC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDk1Olx0ZXJyID0gb3R0b19lbWRpb19zZXR1cF90b3BvbG9neShwcml2KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDk2LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTEwNS1cdGZvcl9lYWNoX2NoaWxkX29mX25vZGVfc2NvcGVkKGRldi1cdTAwM2VvZl9ub2RlLCBjaGlsZCkge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMDY6XHRcdGVyciA9IG90dG9fZW1kaW9fcHJvYmVfb25lKGRldiwgcHJpdiwgY2hpbGQpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExMDctXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExMTMtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTExNDpzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzgzODBfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTE1LVx0LmFkZHJfbWFwX2Jhc2UgPSBSVEw4MzgwX1NNSV9QT1JUMF81X0FERFJfQ1RSTCxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTEyOC1cdC5wb2xsX2N0cmwgPSBSVEw4MzgwX1NNSV9QT0xMX0NUUkwsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEyOTpcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fODM4MF9zZXRfYnVzX2ZyZXF1ZW5jeSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTMwOlx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzgzODBfc2V0dXBfY29udHJvbGxlcixcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTMxOlx0LnJlYWRfYzIyID0gb3R0b19lbWRpb184MzgwX3JlYWRfYzIyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMzI6XHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jNDUsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEzMzpcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzgzODBfd3JpdGVfYzIyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMzQ6XHQud3JpdGVfYzQ1ID0gb3R0b19lbWRpb184MzgwX3dyaXRlX2M0NSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTM1LX07XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTEzNi1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTM3OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM5MF9pbmZvID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExMzgtXHQuY21kX2ZhaWwgPSBSVEw4MzkwX1BIWV9DVFJMX0ZBSUwsXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExNTMtXHQucG9sbF9jdHJsID0gUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE1NDpcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fODM5MF9zZXRfYnVzX2ZyZXF1ZW5jeSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTU1Olx0LnJlYWRfYzIyID0gb3R0b19lbWRpb184MzkwX3JlYWRfYzIyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExNTY6XHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE1NzpcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzIyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExNTg6XHQud3JpdGVfYzQ1ID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2M0NSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTU5LX07XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTE2MC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTYxOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMwMF9pbmZvID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExNjItXHQuYWRkcl9tYXBfYmFzZSA9IFJUTDkzMDBfU01JX1BPUlQwXzVfQUREUl9DVFJMLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTc2LVx0LnBvbGxfY3RybCA9IFJUTDkzMDBfU01JX1BPTExfQ1RSTCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTc3Olx0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb185MzAwX3NldF9idXNfZnJlcXVlbmN5LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExNzg6XHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExNzk6XHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jMjIsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE4MDpcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2M0NSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTgxOlx0LndyaXRlX2MyMiA9IG90dG9fZW1kaW9fOTMwMF93cml0ZV9jMjIsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE4MjpcdC53cml0ZV9jNDUgPSBvdHRvX2VtZGlvXzkzMDBfd3JpdGVfYzQ1LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExODMtfTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTg0LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExODU6c3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzEwX2luZm8gPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTE4Ni1cdC5hZGRyX21hcF9iYXNlID0gUlRMOTMxMF9TTUlfUE9SVF9BRERSX0NUUkwsXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEyMDMtXHQucG9sbF9jdHJsID0gUlRMOTMxMF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTIwNDpcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fOTMxMF9zZXRfYnVzX2ZyZXF1ZW5jeSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMjA1Olx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMTBfc2V0dXBfY29udHJvbGxlcixcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMjA2Olx0LnJlYWRfYzIyID0gb3R0b19lbWRpb185MzEwX3JlYWRfYzIyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEyMDc6XHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jNDUsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTIwODpcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzkzMTBfd3JpdGVfYzIyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEyMDk6XHQud3JpdGVfYzQ1ID0gb3R0b19lbWRpb185MzEwX3dyaXRlX2M0NSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMjEwLX07XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTIxMS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMjEyOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG90dG9fZW1kaW9faWRzW10gPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTIxMzpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtyZWFsdGVrLHJ0bDgzODAtbWRpb1wmIzM0OywgLmRhdGEgPSBcdTAwMjZvdHRvX2VtZGlvXzgzODBfaW5mbyB9LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEyMTQ6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cmVhbHRlayxydGw4MzkxLW1kaW9cJiMzNDssIC5kYXRhID0gXHUwMDI2b3R0b19lbWRpb184MzkwX2luZm8gfSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMjE1Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3JlYWx0ZWsscnRsOTMwMS1tZGlvXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNm90dG9fZW1kaW9fOTMwMF9pbmZvIH0sXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTIxNjpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtyZWFsdGVrLHJ0bDkzMTEtbWRpb1wmIzM0OywgLmRhdGEgPSBcdTAwMjZvdHRvX2VtZGlvXzkzMTBfaW5mbyB9LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEyMTctXHR7fVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEyMTgtfTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMjE5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG90dG9fZW1kaW9faWRzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMjIwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEyMjE6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgb3R0b19lbWRpb19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTIyMjpcdC5wcm9iZSA9IG90dG9fZW1kaW9fcHJvYmUsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTIyMy1cdC5kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTIyNC1cdFx0Lm5hbWUgPSBcJiMzNDttZGlvLXJ0bDkzMDBcJiMzNDssXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTIyNTpcdFx0Lm9mX21hdGNoX3RhYmxlID0gb3R0b19lbWRpb19pZHMsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTIyNi1cdFx0LnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMjI5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEyMzA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihvdHRvX2VtZGlvX2RyaXZlcik7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTIzMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTY0NwoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFJUTDkzMDAgTURJTyBEcml2ZXIgUHJvYmUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgcHJvYmUgZnVuY3Rpb24gYW5kIGhvdyBpdCBoYW5kbGVzIHRoZSByZWdtYXAgYW5kIHBhcmVudCBkZXZpY2Ugc2V0dXAuIEkga25vdyB0aGUgZ2VuZXJhbCBhcmNoaXRlY3R1cmUsIGJ1dCBJIG5lZWQgYSByZWZyZXNoZXIgb24gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIFRpbWUgdG8gZ28gYmFjayBhbmQgY2hlY2sgdGhlIGNvZGUuCgpPa2F5LCBsZXQmIzM5O3MganVtcCBzdHJhaWdodCB0byBsaW5lcyAxMDY1IHRocm91Z2ggMTExNS4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaGVhcnQgb2YgdGhlIHByb2JlIGlzIGxpa2VseSBsb2NhdGVkLCB0aGUgY29yZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGhvdyB0aGUgcmVnbWFwIGlzIGNyZWF0ZWQgYW5kIGluaXRpYWxpemVkLCBob3cgdGhlIHBhcmVudCBkZXZpY2UgaXMgYXNzaWduZWQsIGFuZCBhbnkgc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzIGZvciB0aGlzIFJlYWx0ZWsgc3dpdGNoLiBHb3R0YSBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyBpbiBvcmRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDY1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDU1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEwNjU6XHRcbjEwNjY6XHRzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbjEwNjc6XHR7XG4xMDY4Olx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbjEwNjk6XHRcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXY7XG4xMDcwOlx0XHRpbnQgZXJyO1xuMTA3MTpcdFxuMTA3MjpcdFx0cHJpdiA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpO1xuMTA3MzpcdFx0aWYgKCFwcml2KVxuMTA3NDpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbjEwNzU6XHRcbjEwNzY6XHRcdGVyciA9IGRldm1fbXV0ZXhfaW5pdChkZXYsIFx1MDAyNnByaXYtXHUwMDNlbG9jayk7XG4xMDc3Olx0XHRpZiAoZXJyKVxuMTA3ODpcdFx0XHRyZXR1cm4gZXJyO1xuMTA3OTpcdFxuMTA4MDpcdFx0cHJpdi1cdTAwM2VpbmZvID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG4xMDgxOlx0XHRwcml2LVx1MDAzZXJlZ21hcCA9IHN5c2Nvbl9ub2RlX3RvX3JlZ21hcChkZXYtXHUwMDNlcGFyZW50LVx1MDAzZW9mX25vZGUpO1xuMTA4MjpcdFx0aWYgKElTX0VSUihwcml2LVx1MDAzZXJlZ21hcCkpXG4xMDgzOlx0XHRcdHJldHVybiBQVFJfRVJSKHByaXYtXHUwMDNlcmVnbWFwKTtcbjEwODQ6XHRcbjEwODU6XHRcdGVyciA9IG90dG9fZW1kaW9faW5pdF9wb2xsaW5nKHByaXYpO1xuMTA4NjpcdFx0aWYgKGVycilcbjEwODc6XHRcdFx0cmV0dXJuIGVycjtcbjEwODg6XHRcbjEwODk6XHRcdHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHByaXYpO1xuMTA5MDpcdFxuMTA5MTpcdFx0ZXJyID0gb3R0b19lbWRpb19tYXBfcG9ydHMoZGV2KTtcbjEwOTI6XHRcdGlmIChlcnIpXG4xMDkzOlx0XHRcdHJldHVybiBlcnI7XG4xMDk0Olx0XG4xMDk1Olx0XHRlcnIgPSBvdHRvX2VtZGlvX3NldHVwX3RvcG9sb2d5KHByaXYpO1xuMTA5NjpcdFx0aWYgKGVycilcbjEwOTc6XHRcdFx0cmV0dXJuIGVycjtcbjEwOTg6XHRcbjEwOTk6XHRcdGlmIChwcml2LVx1MDAzZWluZm8tXHUwMDNlc2V0dXBfY29udHJvbGxlcikge1xuMTEwMDpcdFx0XHRlcnIgPSBwcml2LVx1MDAzZWluZm8tXHUwMDNlc2V0dXBfY29udHJvbGxlcihwcml2KTtcbjExMDE6XHRcdFx0aWYgKGVycilcbjExMDI6XHRcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXCYjMzQ7ZmFpbGVkIHRvIHNldHVwIE1ESU8gYnVzIGNvbnRyb2xsZXJcXG5cJiMzNDspO1xuMTEwMzpcdFx0fVxuMTEwNDpcdFxuMTEwNTpcdFx0Zm9yX2VhY2hfY2hpbGRfb2Zfbm9kZV9zY29wZWQoZGV2LVx1MDAzZW9mX25vZGUsIGNoaWxkKSB7XG4xMTA2Olx0XHRcdGVyciA9IG90dG9fZW1kaW9fcHJvYmVfb25lKGRldiwgcHJpdiwgY2hpbGQpO1xuMTEwNzpcdFx0XHRpZiAoZXJyKVxuMTEwODpcdFx0XHRcdHJldHVybiBlcnI7XG4xMTA5Olx0XHR9XG4xMTEwOlx0XG4xMTExOlx0XHRyZXR1cm4gMDtcbjExMTI6XHR9XG4xMTEzOlx0XG4xMTE0Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzgwX2luZm8gPSB7XG4xMTE1Olx0XHQuYWRkcl9tYXBfYmFzZSA9IFJUTDgzODBfU01JX1BPUlQwXzVfQUREUl9DVFJMLFxuMTExNjpcdFx0LmNtZF9mYWlsID0gUlRMODM4MF9QSFlfQ1RSTF9GQUlMLFxuMTExNzpcdFx0LmNtZF9yZWFkID0gUlRMODM4MF9QSFlfQ1RSTF9SRUFELFxuMTExODpcdFx0LmNtZF93cml0ZSA9IFJUTDgzODBfUEhZX0NUUkxfV1JJVEUsXG4xMTE5Olx0XHQuY21kX3JlZ3MgPSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NzYwCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYG90dG9fZW1kaW9fZHJpdmVyYCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBgb3R0b19lbWRpb19kcml2ZXJgIGhhcyBgLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlO2Ag4oCTIHRoYXQmIzM5O3MgdGhlIGZpcnN0IHRoaW5nIHRvIG5vdGUuIEl0JiMzOTtzIHRyaWdnZXJlZCBieSB0aGUgYG90dG9fZW1kaW9faWRzYCBvZiB0aGUgT0YuIFRoaXMgZHJpdmVyIGlzIGZvciB0aG9zZSBSZWFsdGVrIHN3aXRjaGVzOiBSVEw4Mzh4L1JUTDgzOXgvUlRMOTMweC9SVEw5MzF4LiBFc3NlbnRpYWxseSwgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHRoZXNlIE1JUFMtYmFzZWQgT3R0byBhcmNoaXRlY3R1cmUgTUFDSF9SRUFMVEVLX1JUTCBTb0NzLgoKTm93LCBob2xkIG9uLi4uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGBhbWQ2NGAuIFRoYXQmIzM5O3MgYSByZWQgZmxhZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYE1BQ0hfUkVBTFRFS19SVExgIGlzIHN0cmljdGx5IE1JUFMsIG9yIGlmIGl0JiMzOTtzIHBvdGVudGlhbGx5IGNyb3NzLWNvbXBpbGFibGUuIENhbiB0aGlzIGV2ZW4gKmV4aXN0KiBvbiBhbiBhbWQ2NCBzeXN0ZW0sIG9yIGEgc3RhbmRhcmQgUUVNVSBWTSBzZXR1cD8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXJlIGBNQUNIX1JFQUxURUtfUlRMYCBpcyBhY3R1YWxseSBkZWZpbmVkLCBzbyBJIGNhbiB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmFsIGFzc3VtcHRpb25zIGJlaW5nIG1hZGUuIFRoaXMgZmVlbHMgbGlrZSBhbiBhcmNoaXRlY3R1cmFsIG1pc21hdGNoIEkgbmVlZCB0byByZWNvbmNpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01BQ0hfUkVBTFRFS19SVEwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9taXBzL0tjb25maWc9NjgxPWNvbmZpZyBSQUxJTktcbi0tXG5hcmNoL21pcHMvS2NvbmZpZy02OTgtXG5hcmNoL21pcHMvS2NvbmZpZzo2OTk6Y29uZmlnIE1BQ0hfUkVBTFRFS19SVExcbmFyY2gvbWlwcy9LY29uZmlnLTcwMC1cdGJvb2wgXCYjMzQ7UmVhbHRlayBSVEw4Mzh4L1JUTDgzOXggYmFzZWQgbWFjaGluZXNcJiMzNDtcbi0tXG5hcmNoL21pcHMvYm9vdC9kdHMvcmVhbHRlay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmFyY2gvbWlwcy9ib290L2R0cy9yZWFsdGVrL01ha2VmaWxlOjI6ZHRiLSQoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpXHQmIzQzOz0gY2lzY29fc2cyMjAtMjYuZHRiXG5hcmNoL21pcHMvYm9vdC9kdHMvcmVhbHRlay9NYWtlZmlsZTozOmR0Yi0kKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKVx0JiM0Mzs9IGNhbWVvLXJ0bDkzMDJjLTJ4LXJ0bDgyMjQtMnhnZS5kdGJcbi0tXG5hcmNoL21pcHMvZ2VuZXJpYy9NYWtlZmlsZT0xNT1vYmotJChDT05GSUdfVklSVF9CT0FSRF9SQU5DSFUpXHRcdCYjNDM7PSBib2FyZC1yYW5jaHUub1xuYXJjaC9taXBzL2dlbmVyaWMvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpXHRcdCYjNDM7PSBib2FyZC1yZWFsdGVrLm9cbi0tXG5kcml2ZXJzL2dwaW8vS2NvbmZpZz02MjU9Y29uZmlnIEdQSU9fUkVBTFRFS19PVFRPXG5kcml2ZXJzL2dwaW8vS2NvbmZpZy02MjYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIE90dG8gR1BJTyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2dwaW8vS2NvbmZpZzo2Mjc6XHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL2dwaW8vS2NvbmZpZzo2Mjg6XHRkZWZhdWx0IE1BQ0hfUkVBTFRFS19SVExcbmRyaXZlcnMvZ3Bpby9LY29uZmlnLTYyOS1cdHNlbGVjdCBHUElPX0dFTkVSSUNcbi0tXG5kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZz0xMTAzPWNvbmZpZyBJMkNfUlRMOTMwMFxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWctMTEwNC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgUlRMOTMwMCBJMkMgY29udHJvbGxlclwmIzM0O1xuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWc6MTEwNTpcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvaTJjL2J1c3Nlcy9LY29uZmlnLTExMDYtXHRoZWxwXG4tLVxuZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlPTEzMD1vYmotJChDT05GSUdfU0wyOENQTERfSU5UQylcdFx0JiM0Mzs9IGlycS1zbDI4Y3BsZC5vXG5kcml2ZXJzL2lycWNoaXAvTWFrZWZpbGU6MTMxOm9iai0kKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKVx0XHQmIzQzOz0gaXJxLXJlYWx0ZWstcnRsLm9cbmRyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZS0xMzItb2JqLSQoQ09ORklHX1dQQ000NTBfQUlDKVx0XHQmIzQzOz0gaXJxLXdwY200NTAtYWljLm9cbi0tXG5kcml2ZXJzL210ZC9uYW5kL0tjb25maWc9NjQ9Y29uZmlnIE1URF9OQU5EX0VDQ19SRUFMVEVLXG4tLVxuZHJpdmVycy9tdGQvbmFuZC9LY29uZmlnLTY2LSAgICAgICAgZGVwZW5kcyBvbiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IEhBU19ETUFcbmRyaXZlcnMvbXRkL25hbmQvS2NvbmZpZzo2NzogICAgICAgIGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvbXRkL25hbmQvS2NvbmZpZy02OC0gICAgICAgIHNlbGVjdCBNVERfTkFORF9FQ0Ncbi0tXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWc9MTc0PWNvbmZpZyBNRElPX1JFQUxURUtfUlRMOTMwMFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTE3NS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZzoxNzY6XHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTc3LVx0aGVscFxuLS1cbmRyaXZlcnMvc3BpL0tjb25maWc9OTE2PWNvbmZpZyBTUElfUkVBTFRFS19TTkFORFxuZHJpdmVycy9zcGkvS2NvbmZpZy05MTctXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIFNQSS1OQU5EIEZsYXNoIENvbnRyb2xsZXJcJiMzNDtcbmRyaXZlcnMvc3BpL0tjb25maWc6OTE4Olx0ZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy9zcGkvS2NvbmZpZy05MTktXHRzZWxlY3QgUkVHTUFQXG4tLVxuZHJpdmVycy9zcGkvTWFrZWZpbGU9MTMxPW9iai0kKENPTkZJR19TUElfUkI0WFgpXHRcdFx0JiM0Mzs9IHNwaS1yYjR4eC5vXG5kcml2ZXJzL3NwaS9NYWtlZmlsZToxMzI6b2JqLSQoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpXHRcdCYjNDM7PSBzcGktcmVhbHRlay1ydGwub1xuZHJpdmVycy9zcGkvTWFrZWZpbGUtMTMzLW9iai0kKENPTkZJR19TUElfUkVBTFRFS19TTkFORClcdFx0JiM0Mzs9IHNwaS1yZWFsdGVrLXJ0bC1zbmFuZC5vXG4tLVxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnPTExMTM9Y29uZmlnIFJFQUxURUtfT1RUT19XRFRcbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZy0xMTE0LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBPdHRvIE1JUFMgd2F0Y2hkb2cgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnOjExMTU6XHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTExNi1cdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuLS1cbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZy0xMTE4LVx0c2VsZWN0IFJFR01BUF9NTUlPXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc6MTExOTpcdGRlZmF1bHQgTUFDSF9SRUFMVEVLX1JUTFxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnLTExMjAtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NDUzCgkJCQkJCQlvdXRwdXQ6IDE2NgoJCQkJCQkJdGhvdWdodHM6IDg5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGFiaWxpdHkgQW5hbHlzaXM6IFdvcnRoRnV6emluZz1mYWxzZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcsIGFuZCB0aGUgcHJpbWFyeSBnYXRlIGlzIHJlYWNoYWJpbGl0eS4gSSYjMzk7bSB0YXJnZXRpbmcgdGhlIGFtZDY0IGFyY2hpdGVjdHVyZSwgc28gSSBuZWVkIHRvIGFzc2VzcyBpZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBhY3R1YWxseSAqZXhlY3V0YWJsZSogaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuCgpGaXJzdCwgSSBpZGVudGlmaWVkIHNvbWUgbmVnYXRpdmUgY3JpdGVyaWEuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBsb29raW5nIGZvciAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IOKAkyBjb2RlIHRpZWQgdG8gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGVudmlyb25tZW50cyBvciBhcmNoaXRlY3R1cmUtZXhjbHVzaXZlIGNvZGUuCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aGlzIGBtZGlvLXJlYWx0ZWstcnRsOTMwMGAgZHJpdmVyIGlzIGFjdHVhbGx5ICpyZWFjaGFibGUqLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgaXQmIzM5O3MgYW4gTURJTyBjb250cm9sbGVyIGRyaXZlciBmb3IgUmVhbHRlayBSVEw4Mzh4LzkzeHggTUlQUyBTb0NzLCB3aGljaCBpbW1lZGlhdGVseSByYWlzZXMgYSByZWQgZmxhZy4KCkkgZG92ZSBpbnRvIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBpdHNlbGYuIEl04oCZcyBhIHBsYXRmb3JtIGRyaXZlciwgc28gaXTigJlzIGxpbmtlZCB0byBzcGVjaWZpYyBoYXJkd2FyZS4gQ3JpdGljYWxseSwgYHN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlYCBtZWFucyBJIGNhbiYjMzk7dCBldmVuIG1hbnVhbGx5IGZvcmNlIGl0IHRvIGJpbmQuIEl0IHJlbGllcyBvbiBhIHN5c2NvbiBub2RlLCBvYnRhaW5lZCB2aWEgYHN5c2Nvbl9ub2RlX3RvX3JlZ21hcGAsIG1lYW5pbmcgaXRzIHRpZWQgdG8gc3BlY2lmaWMgaGFyZHdhcmUuIEFuZCBpdCYjMzk7cyBmb3IgUmVhbHRlayYjMzk7cyBNSVBTIFNvQyBhcmNoaXRlY3R1cmUuIFRoZSB0YXJnZXQgaXMgYW1kNjQuIFRoZXJlZm9yZSwgaXQmIzM5O3Mgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiBJdCYjMzk7cyBhbiBhcmNoLWV4Y2x1c2l2ZSBNSVBTIFNvQyBkcml2ZXIgdGhhdCBjYW4mIzM5O3QgYmUgdXNlZCBvbiBhbWQ2NCBpbiBhbnkgc3RhbmRhcmQgZW52aXJvbm1lbnQuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSB0cmlhZ2UgZ3VpZGVsaW5lcy4gVGhleSYjMzk7cmUgY3J5c3RhbCBjbGVhcjogJiMzNDtJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGXigKYgaXQgTVVTVCBOT1QgYmUgZnV6emVkLiYjMzQ7IFRoZSBndWlkZWxpbmVzIHNwZWNpZmljYWxseSBtZW50aW9uIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzIGFuZCBhcmNoaXRlY3R1cmUtZXhjbHVzaXZlIGNvZGUgcGF0aHMgYXMgZXhhbXBsZXMuIFRoYXQgaXMgZXhhY3RseSB3aGF0IEkgaGF2ZS4KClNvLCB0aGUgZmlsZXMgYWZmZWN0ZWQgYXJlOiBkb2N1bWVudGF0aW9uIGFuZCB0aGUgZHJpdmVyLiBUaGUgZHJpdmVyLCBgbWRpby1yZWFsdGVrLXJ0bDkzMDAuY2AsIGlzIHRoZSBjcml0aWNhbCBlbGVtZW50LiBJdCYjMzk7cyBmb3IgYSBzcGVjaWZpYyBSZWFsdGVrIE1JUFMgU29DIGFuZCBpcyBub3QgcmVhY2hhYmxlIG9uIGFtZDY0LgoKQmFzZWQgb24gdGhpcywgSSYjMzk7bSBzZXR0aW5nIGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGUgZHJpdmVyIHRhcmdldHMgYSBzcGVjaWZpYyBSZWFsdGVrIE1JUFMgU29DLiBJdCBjYW5ub3QgZXhlY3V0ZSBpbiBhbnkgc3RhbmRhcmQgYW1kNjQgZW52aXJvbm1lbnQuIFRoZSBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgIGFyZSBpcnJlbGV2YW50IGhlcmUuIFRpbWUgdG8gc3VibWl0IHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBEZXZpY2V0cmVlIGJpbmRpbmdzIGRvY3VtZW50YXRpb24gYW5kIGFkZHMgTURJTyBidXMgY2xvY2sgZnJlcXVlbmN5IGNvbmZpZ3VyYXRpb24gc3VwcG9ydCB0byB0aGUgUmVhbHRlayBSVEw4Mzh4L1JUTDgzOXgvUlRMOTMweC9SVEw5MzF4IE1ESU8gY29udHJvbGxlciBkcml2ZXIgKGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYykuIFRoaXMgZHJpdmVyIGlzIGRlc2lnbmVkIHNwZWNpZmljYWxseSBmb3IgUmVhbHRlayBPdHRvIE1JUFMgc3dpdGNoIFNvQ3MgKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKSwgcmVxdWlyZXMgT0Ygc3lzY29uIHBhcmVudCBub2Rlcywgc3VwcHJlc3NlcyBtYW51YWwgZHJpdmVyIGJpbmRpbmcgdmlhIHN5c2ZzLCBhbmQgY2Fubm90IGJlIHByb2JlZCBvciBleGVjdXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCBRRU1VL0dDRSB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIERldmljZXRyZWUgYmluZGluZ3MgZG9jdW1lbnRhdGlvbiBhbmQgYWRkcyBNRElPIGJ1cyBjbG9jayBmcmVxdWVuY3kgY29uZmlndXJhdGlvbiBzdXBwb3J0IHRvIHRoZSBSZWFsdGVrIFJUTDgzOHgvUlRMODM5eC9SVEw5MzB4L1JUTDkzMXggTURJTyBjb250cm9sbGVyIGRyaXZlciAoZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jKS4gVGhpcyBkcml2ZXIgaXMgZGVzaWduZWQgc3BlY2lmaWNhbGx5IGZvciBSZWFsdGVrIE90dG8gTUlQUyBzd2l0Y2ggU29DcyAoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpLCByZXF1aXJlcyBPRiBzeXNjb24gcGFyZW50IG5vZGVzLCBzdXBwcmVzc2VzIG1hbnVhbCBkcml2ZXIgYmluZGluZyB2aWEgc3lzZnMsIGFuZCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIGFtZDY0IFFFTVUvR0NFIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjAyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTowMjoyMy4yMTI1MDU1MzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDExMzc0NjM4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgRGV2aWNldHJlZSBiaW5kaW5ncyBkb2N1bWVudGF0aW9uIGFuZCBhZGRzIE1ESU8gYnVzIGNsb2NrIGZyZXF1ZW5jeSBjb25maWd1cmF0aW9uIHN1cHBvcnQgdG8gdGhlIFJlYWx0ZWsgUlRMODM4eC9SVEw4Mzl4L1JUTDkzMHgvUlRMOTMxeCBNRElPIGNvbnRyb2xsZXIgZHJpdmVyIChkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMpLiBUaGlzIGRyaXZlciBpcyBkZXNpZ25lZCBzcGVjaWZpY2FsbHkgZm9yIFJlYWx0ZWsgT3R0byBNSVBTIHN3aXRjaCBTb0NzIChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTCksIHJlcXVpcmVzIE9GIHN5c2NvbiBwYXJlbnQgbm9kZXMsIHN1cHByZXNzZXMgbWFudWFsIGRyaXZlciBiaW5kaW5nIHZpYSBzeXNmcywgYW5kIGNhbm5vdCBiZSBwcm9iZWQgb3IgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgUUVNVS9HQ0UgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MDI6MjMuMjEyNTEwMzI3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjgyMTQwNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhODdkMDFmMmM4ZjUxNzFhYzU0MGZjZGYxZTQyNWQ0YTQ4OWVkZWQ1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gU2VwIDYgMjE6MDI6MjIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sXFxuaW5kZXggNjdlMGIyM2E4NDcwZS4uODg1MDJkMDE3ZWVkYiAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxcXG5AQCAtNTYsNiArNTYsOSBAQCBwYXR0ZXJuUHJvcGVydGllczpcXG4gICAgICAgcmVnOlxcbiAgICAgICAgIG1heEl0ZW1zOiAxXFxuIFxcbisgICAgICBjbG9jay1mcmVxdWVuY3k6XFxuKyAgICAgICAgZGVmYXVsdDogMjUwMDAwMFxcbitcXG4gICAgIHJlcXVpcmVkOlxcbiAgICAgICAtIHJlZ1xcbiBcXG5AQCAtNzEsNiArNzQsNDMgQEAgcmVxdWlyZWQ6XFxuICAgLSBjb21wYXRpYmxlXFxuICAgLSByZWdcXG4gXFxuK2FsbE9mOlxcbisgIC0gaWY6XFxuKyAgICAgIHByb3BlcnRpZXM6XFxuKyAgICAgICAgY29tcGF0aWJsZTpcXG4rICAgICAgICAgIGNvbnRhaW5zOlxcbisgICAgICAgICAgICBlbnVtOlxcbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw4MzgwLW1kaW9cXG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM4MS1tZGlvXFxuKyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzODItbWRpb1xcbisgICAgdGhlbjpcXG4rICAgICAgcGF0dGVyblByb3BlcnRpZXM6XFxuKyAgICAgICAgJ15tZGlvLWJ1c0BbMC0zXSQnOlxcbisgICAgICAgICAgcHJvcGVydGllczpcXG4rICAgICAgICAgICAgY2xvY2stZnJlcXVlbmN5OlxcbisgICAgICAgICAgICAgIGVudW06IFsyNTAwMDAwLCAxMDAwMDAwMF1cXG4rICAtIGlmOlxcbisgICAgICBwcm9wZXJ0aWVzOlxcbisgICAgICAgIGNvbXBhdGlibGU6XFxuKyAgICAgICAgICBjb250YWluczpcXG4rICAgICAgICAgICAgZW51bTpcXG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM5MS1tZGlvXFxuKyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzOTItbWRpb1xcbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw4MzkzLW1kaW9cXG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMS1tZGlvXFxuKyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDkzMDJiLW1kaW9cXG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMmMtbWRpb1xcbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzAzLW1kaW9cXG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMxMS1tZGlvXFxuKyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDkzMTItbWRpb1xcbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzEzLW1kaW9cXG4rICAgIHRoZW46XFxuKyAgICAgIHBhdHRlcm5Qcm9wZXJ0aWVzOlxcbisgICAgICAgICdebWRpby1idXNAWzAtM10kJzpcXG4rICAgICAgICAgIHByb3BlcnRpZXM6XFxuKyAgICAgICAgICAgIGNsb2NrLWZyZXF1ZW5jeTpcXG4rICAgICAgICAgICAgICBlbnVtOiBbMTI1MDAwMCwgMjUwMDAwMCwgNTAwMDAwMF1cXG4rXFxuIHVuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcXG4gXFxuIGV4YW1wbGVzOlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcXG5pbmRleCAxMWQwNzhlZjk0MWNkLi44ZWRiMGJhMGJjZGQxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY1xcbkBAIC0xMzAsNiArMTMwLDcgQEBcXG4gI2RlZmluZSBSVEw4MzgwX05VTV9QQUdFU1xcdFxcdFxcdDQwOTZcXG4gI2RlZmluZSBSVEw4MzgwX05VTV9QT1JUU1xcdFxcdFxcdDI4XFxuICNkZWZpbmUgUlRMODM4MF9TTUlfR0xCX0NUUkxcXHRcXHRcXHQweGExMDBcXG4rI2RlZmluZSAgIFJUTDgzODBfU01JX0ZSRVFfU0VMXFx0XFx0XFx0QklUKDEpXFxuICNkZWZpbmUgICBSVEw4MzgwX1NNSV9QSFlfUEFUQ0hfRE9ORVxcdFxcdEJJVCgxNSlcXG4gI2RlZmluZSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMFxcdFxcdDB4YTFiOFxcbiAjZGVmaW5lIFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8xXFx0XFx0MHhhMWJjXFxuQEAgLTE2OSwxMiArMTcwLDE1IEBAXFxuICNkZWZpbmUgUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0xPV1xcdFxcdDB4MDNlNFxcbiAjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9ISUdIXFx0XFx0MHgwM2U4XFxuICNkZWZpbmUgUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkxcXHRcXHQweDAzZmNcXG4rI2RlZmluZSBSVEw4MzkwX1NNSV9HTEJfQ1RSTFxcdFxcdFxcdDB4MDNmOFxcbisjZGVmaW5lICAgUlRMODM5MF9TTUlfRlJFUV9TRUxcXHRcXHRcXHRHRU5NQVNLKDYsIDUpXFxuIFxcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX0JVU0VTXFx0XFx0XFx0NFxcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX1BBR0VTXFx0XFx0XFx0NDA5NlxcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX1BPUlRTXFx0XFx0XFx0MjhcXG4gI2RlZmluZSBSVEw5MzAwX1NNSV9HTEJfQ1RSTFxcdFxcdFxcdDB4Y2EwMFxcbiAjZGVmaW5lICAgUlRMOTMwMF9HTEJfQ1RSTF9JTlRGX1NFTChpbnRmKVxcdEJJVCgxNiArIChpbnRmKSlcXG4rI2RlZmluZSAgIFJUTDkzMDBfU01JX0ZSRVFfU0VMKGludGYpXFx0XFx0R0VOTUFTSygoaW50ZikgKiAyICsgOSwgKGludGYpICogMiArIDgpXFxuICNkZWZpbmUgUlRMOTMwMF9TTUlfUE9SVDBfMTVfUE9MTElOR19TRUxcXHQweGNhMDhcXG4gI2RlZmluZSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMFxcdFxcdDB4Y2I3MFxcbiAjZGVmaW5lIFJUTDkzMDBfU01JX0FDQ0VTU19QSFlfQ1RSTF8xXFx0XFx0MHhjYjc0XFxuQEAgLTE5Niw2ICsyMDAsOCBAQFxcbiAjZGVmaW5lIFJUTDkzMTBfTlVNX0JVU0VTXFx0XFx0XFx0NFxcbiAjZGVmaW5lIFJUTDkzMTBfTlVNX1BBR0VTXFx0XFx0XFx0ODE5MlxcbiAjZGVmaW5lIFJUTDkzMTBfTlVNX1BPUlRTXFx0XFx0XFx0NTZcXG4rI2RlZmluZSBSVEw5MzEwX1NNSV9HTEJfQ1RSTDBcXHRcXHRcXHQweDBjYzBcXG4rI2RlZmluZSAgIFJUTDkzMTBfU01JX0ZSRVFfU0VMKGludGYpXFx0XFx0R0VOTUFTSygoaW50ZikgKiAyICsgNSwgKGludGYpICogMiArIDQpXFxuICNkZWZpbmUgUlRMOTMxMF9TTUlfR0xCX0NUUkwxXFx0XFx0XFx0MHgwY2JjXFxuICNkZWZpbmUgICBSVEw5MzEwX1NNSV9HTEJfRk1UX1NFTF9DNDUoaW50ZilcXHRCSVQoKGludGYpICogMiArIDEpXFxuICNkZWZpbmUgUlRMOTMxMF9TTUlfSU5EUlRfQUNDRVNTX0NUUkxfMFxcdFxcdDB4MGMwMFxcbkBAIC0yNTEsNiArMjU3LDcgQEAgc3RydWN0IG90dG9fZW1kaW9fcHJpdiB7XFxuIFxcdHN0cnVjdCByZWdtYXAgKnJlZ21hcDtcXG4gXFx0c3RydWN0IG11dGV4IGxvY2s7IC8qIHByb3RlY3QgSFcgYWNjZXNzICovXFxuIFxcdERFQ0xBUkVfQklUTUFQKHZhbGlkX3BvcnRzLCBNQVhfUE9SVFMpO1xcbitcXHR1MzIgZ2xvYmFsX2ZyZXE7XFxuIFxcdHUxNiBwYWdlW01BWF9QT1JUU107XFxuIFxcdHU4IHNtaV9idXNbTUFYX1BPUlRTXTtcXG4gXFx0dTggc21pX2FkZHJbTUFYX1BPUlRTXTtcXG5AQCAtMjY5LDYgKzI3Niw3IEBAIHN0cnVjdCBvdHRvX2VtZGlvX2luZm8ge1xcbiBcXHR1OCBudW1fcG9ydHM7XFxuIFxcdHUxNiBudW1fcGFnZXM7XFxuIFxcdHUzMiBwb2xsX2N0cmw7XFxuK1xcdGludCAoKnNldF9idXNfZnJlcXVlbmN5KShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSk7XFxuIFxcdGludCAoKnNldHVwX2NvbnRyb2xsZXIpKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpO1xcbiBcXHRpbnQgKCpyZWFkX2MyMikoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpO1xcbiBcXHRpbnQgKCpyZWFkX2M0NSkoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSk7XFxuQEAgLTc0MCw2ICs3NDgsMTcgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3NldHVwX3RvcG9sb2d5KHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSlcXG4re1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbitcXG4rXFx0aWYgKGZyZXEgIT0gMjUwMDAwMCBcXHUwMDI2XFx1MDAyNiBmcmVxICE9IDEwMDAwMDAwKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdHJldHVybiByZWdtYXBfYXNzaWduX2JpdHMocHJpdi1cXHUwMDNlcmVnbWFwLCBSVEw4MzgwX1NNSV9HTEJfQ1RSTCxcXG4rXFx0XFx0XFx0XFx0ICBSVEw4MzgwX1NNSV9GUkVRX1NFTCwgZnJlcSA9PSAxMDAwMDAwMCk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG4ge1xcbiBcXHQvKlxcbkBAIC03NDksNiArNzY4LDQwIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG4gXFx0cmV0dXJuIHJlZ21hcF9zZXRfYml0cyhwcml2LVxcdTAwM2VyZWdtYXAsIFJUTDgzODBfU01JX0dMQl9DVFJMLCBSVEw4MzgwX1NNSV9QSFlfUEFUQ0hfRE9ORSk7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxcbit7XFxuK1xcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuK1xcdHUzMiB2YWw7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRpZiAoZnJlcSAhPSAxMjUwMDAwIFxcdTAwMjZcXHUwMDI2IGZyZXEgIT0gMjUwMDAwMCBcXHUwMDI2XFx1MDAyNiBmcmVxICE9IDUwMDAwMDApXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRpZiAocHJpdi1cXHUwMDNlZ2xvYmFsX2ZyZXEpXFxuK1xcdFxcdHJldHVybiBmcmVxID09IHByaXYtXFx1MDAzZWdsb2JhbF9mcmVxID8gMCA6IC1FSU5WQUw7XFxuK1xcbitcXHR2YWwgPSBGSUVMRF9QUkVQKFJUTDgzOTBfU01JX0ZSRVFfU0VMLCBmcmVxIC8gMjUwMDAwMCk7XFxuK1xcdGVyciA9IHJlZ21hcF91cGRhdGVfYml0cyhwcml2LVxcdTAwM2VyZWdtYXAsIFJUTDgzOTBfU01JX0dMQl9DVFJMLCBSVEw4MzkwX1NNSV9GUkVRX1NFTCwgdmFsKTtcXG4rXFx0aWYgKCFlcnIpXFxuK1xcdFxcdHByaXYtXFx1MDAzZWdsb2JhbF9mcmVxID0gZnJlcTtcXG4rXFxuK1xcdHJldHVybiBlcnI7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxcbit7XFxuK1xcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuK1xcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBidXMtXFx1MDAzZXByaXY7XFxuK1xcdHUzMiBtYXNrLCB2YWw7XFxuK1xcbitcXHRpZiAoZnJlcSAhPSAxMjUwMDAwIFxcdTAwMjZcXHUwMDI2IGZyZXEgIT0gMjUwMDAwMCBcXHUwMDI2XFx1MDAyNiBmcmVxICE9IDUwMDAwMDApXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0bWFzayA9IFJUTDkzMDBfU01JX0ZSRVFfU0VMKGNoYW4tXFx1MDAzZW1kaW9fYnVzKTtcXG4rXFx0dmFsID0gZmllbGRfcHJlcChtYXNrLCBmcmVxIC8gMjUwMDAwMCk7XFxuK1xcbitcXHRyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtXFx1MDAzZXJlZ21hcCwgUlRMOTMwMF9TTUlfR0xCX0NUUkwsIG1hc2ssIHZhbCk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG4ge1xcbiBcXHR1MzIgZ2xiX2N0cmxfbWFzayA9IDAsIGdsYl9jdHJsX3ZhbCA9IDA7XFxuQEAgLTc2OSw2ICs4MjIsMjEgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpXFxuK3tcXG4rXFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG4rXFx0c3RydWN0IG90dG9fZW1kaW9fY2hhbiAqY2hhbiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG4rXFx0dTMyIG1hc2ssIHZhbDtcXG4rXFxuK1xcdGlmIChmcmVxICE9IDEyNTAwMDAgXFx1MDAyNlxcdTAwMjYgZnJlcSAhPSAyNTAwMDAwIFxcdTAwMjZcXHUwMDI2IGZyZXEgIT0gNTAwMDAwMClcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbitcXHRtYXNrID0gUlRMOTMxMF9TTUlfRlJFUV9TRUwoY2hhbi1cXHUwMDNlbWRpb19idXMpO1xcbitcXHR2YWwgPSBmaWVsZF9wcmVwKG1hc2ssIGZyZXEgLyAyNTAwMDAwKTtcXG4rXFxuK1xcdHJldHVybiByZWdtYXBfdXBkYXRlX2JpdHMocHJpdi1cXHUwMDNlcmVnbWFwLCBSVEw5MzEwX1NNSV9HTEJfQ1RSTDAsIG1hc2ssIHZhbCk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG4ge1xcbiBcXHRpbnQgaSwgZXJyO1xcbkBAIC04MzEsMTQgKzg5OSwxNCBAQCBzdGF0aWMgdm9pZCBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LFxcbi1cXHRcXHRcXHRcXHQgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKm5vZGUpXFxuK1xcdFxcdFxcdFxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcXG4ge1xcbiBcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuO1xcbiBcXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xcbi1cXHR1MzIgbWRpb19idXM7XFxuK1xcdHUzMiBtZGlvX2J1cywgZnJlcTtcXG4gXFx0aW50IGVycjtcXG4gXFxuLVxcdGVyciA9IGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcXFwicmVnXFxcIiwgXFx1MDAyNm1kaW9fYnVzKTtcXG4rXFx0ZXJyID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgXFxcInJlZ1xcXCIsIFxcdTAwMjZtZGlvX2J1cyk7XFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCBcXFwidW5kZWZpbmVkIHNtaSBidXMgbnVtYmVyXFxcXG5cXFwiKTtcXG4gXFxuQEAgLTg2NSw3ICs5MzMsMTQgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXZcXG4gXFxuIFxcdHNucHJpbnRmKGJ1cy1cXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXFxcIiVzLSVkXFxcIiwgZGV2X25hbWUoZGV2KSwgbWRpb19idXMpO1xcbiBcXG4tXFx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCB0b19vZl9ub2RlKG5vZGUpKTtcXG4rXFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsIFxcXCJjbG9jay1mcmVxdWVuY3lcXFwiLCBcXHUwMDI2ZnJlcSkpXFxuK1xcdFxcdGZyZXEgPSAyNTAwMDAwO1xcbitcXHRlcnIgPSBwcml2LVxcdTAwM2VpbmZvLVxcdTAwM2VzZXRfYnVzX2ZyZXF1ZW5jeShidXMsIGZyZXEpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXFxcImNhbm5vdCBzZXQgZnJlcXVlbmN5ICV1IGZvciBNRElPIGJ1cyAlZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ICAgICBmcmVxLCBtZGlvX2J1cyk7XFxuK1xcbitcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpO1xcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXFxcImNhbm5vdCByZWdpc3RlciBNRElPIGJ1c1xcXFxuXFxcIik7XFxuIFxcbkBAIC0xMDI3LDcgKzExMDIsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBlcnIsIFxcXCJmYWlsZWQgdG8gc2V0dXAgTURJTyBidXMgY29udHJvbGxlclxcXFxuXFxcIik7XFxuIFxcdH1cXG4gXFxuLVxcdGRldmljZV9mb3JfZWFjaF9jaGlsZF9ub2RlX3Njb3BlZChkZXYsIGNoaWxkKSB7XFxuK1xcdGZvcl9lYWNoX2NoaWxkX29mX25vZGVfc2NvcGVkKGRldi1cXHUwMDNlb2Zfbm9kZSwgY2hpbGQpIHtcXG4gXFx0XFx0ZXJyID0gb3R0b19lbWRpb19wcm9iZV9vbmUoZGV2LCBwcml2LCBjaGlsZCk7XFxuIFxcdFxcdGlmIChlcnIpXFxuIFxcdFxcdFxcdHJldHVybiBlcnI7XFxuQEAgLTEwNTEsNiArMTEyNiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM4MF9pbmZvID0ge1xcbiBcXHQubnVtX3BhZ2VzID0gUlRMODM4MF9OVU1fUEFHRVMsXFxuIFxcdC5udW1fcG9ydHMgPSBSVEw4MzgwX05VTV9QT1JUUyxcXG4gXFx0LnBvbGxfY3RybCA9IFJUTDgzODBfU01JX1BPTExfQ1RSTCxcXG4rXFx0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb184MzgwX3NldF9idXNfZnJlcXVlbmN5LFxcbiBcXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fODM4MF9zZXR1cF9jb250cm9sbGVyLFxcbiBcXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIsXFxuIFxcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM4MF9yZWFkX2M0NSxcXG5AQCAtMTA3NSw2ICsxMTUxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzkwX2luZm8gPSB7XFxuIFxcdC5udW1fcGFnZXMgPSBSVEw4MzkwX05VTV9QQUdFUyxcXG4gXFx0Lm51bV9wb3J0cyA9IFJUTDgzOTBfTlVNX1BPUlRTLFxcbiBcXHQucG9sbF9jdHJsID0gUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsXFxuK1xcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fODM5MF9zZXRfYnVzX2ZyZXF1ZW5jeSxcXG4gXFx0LnJlYWRfYzIyID0gb3R0b19lbWRpb184MzkwX3JlYWRfYzIyLFxcbiBcXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUsXFxuIFxcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzIyLFxcbkBAIC0xMDk3LDYgKzExNzQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMDBfaW5mbyA9IHtcXG4gXFx0Lm51bV9wb3J0cyA9IFJUTDkzMDBfTlVNX1BPUlRTLFxcbiBcXHQubnVtX3BhZ2VzID0gUlRMOTMwMF9OVU1fUEFHRVMsXFxuIFxcdC5wb2xsX2N0cmwgPSBSVEw5MzAwX1NNSV9QT0xMX0NUUkwsXFxuK1xcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fOTMwMF9zZXRfYnVzX2ZyZXF1ZW5jeSxcXG4gXFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcixcXG4gXFx0LnJlYWRfYzIyID0gb3R0b19lbWRpb185MzAwX3JlYWRfYzIyLFxcbiBcXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jNDUsXFxuQEAgLTExMjMsNiArMTIwMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMxMF9pbmZvID0ge1xcbiBcXHQubnVtX3BhZ2VzID0gUlRMOTMxMF9OVU1fUEFHRVMsXFxuIFxcdC5udW1fcG9ydHMgPSBSVEw5MzEwX05VTV9QT1JUUyxcXG4gXFx0LnBvbGxfY3RybCA9IFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19DVFJMLFxcbitcXHQuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzkzMTBfc2V0X2J1c19mcmVxdWVuY3ksXFxuIFxcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb185MzEwX3NldHVwX2NvbnRyb2xsZXIsXFxuIFxcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMixcXG4gXFx0LnJlYWRfYzQ1ID0gb3R0b19lbWRpb185MzEwX3JlYWRfYzQ1LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTowMjoyMy43ODE0MTYwNDhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE5NTQ0ODIzMTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIERldmljZXRyZWUgYmluZGluZ3MgZG9jdW1lbnRhdGlvbiBhbmQgYWRkcyBNRElPIGJ1cyBjbG9jayBmcmVxdWVuY3kgY29uZmlndXJhdGlvbiBzdXBwb3J0IHRvIHRoZSBSZWFsdGVrIFJUTDgzOHgvUlRMODM5eC9SVEw5MzB4L1JUTDkzMXggTURJTyBjb250cm9sbGVyIGRyaXZlciAoZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jKS4gVGhpcyBkcml2ZXIgaXMgZGVzaWduZWQgc3BlY2lmaWNhbGx5IGZvciBSZWFsdGVrIE90dG8gTUlQUyBzd2l0Y2ggU29DcyAoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpLCByZXF1aXJlcyBPRiBzeXNjb24gcGFyZW50IG5vZGVzLCBzdXBwcmVzc2VzIG1hbnVhbCBkcml2ZXIgYmluZGluZyB2aWEgc3lzZnMsIGFuZCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIGFtZDY0IFFFTVUvR0NFIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTg3ZDAxZjJjOGY1MTcxYWM1NDBmY2RmMWU0MjVkNGE0ODllZGVkNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMjE6MDI6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxcbmluZGV4IDY3ZTBiMjNhODQ3MGUuLjg4NTAyZDAxN2VlZGIgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbFxuQEAgLTU2LDYgKzU2LDkgQEAgcGF0dGVyblByb3BlcnRpZXM6XG4gICAgICAgcmVnOlxuICAgICAgICAgbWF4SXRlbXM6IDFcbiBcbisgICAgICBjbG9jay1mcmVxdWVuY3k6XG4rICAgICAgICBkZWZhdWx0OiAyNTAwMDAwXG4rXG4gICAgIHJlcXVpcmVkOlxuICAgICAgIC0gcmVnXG4gXG5AQCAtNzEsNiArNzQsNDMgQEAgcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gcmVnXG4gXG4rYWxsT2Y6XG4rICAtIGlmOlxuKyAgICAgIHByb3BlcnRpZXM6XG4rICAgICAgICBjb21wYXRpYmxlOlxuKyAgICAgICAgICBjb250YWluczpcbisgICAgICAgICAgICBlbnVtOlxuKyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzODAtbWRpb1xuKyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzODEtbWRpb1xuKyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzODItbWRpb1xuKyAgICB0aGVuOlxuKyAgICAgIHBhdHRlcm5Qcm9wZXJ0aWVzOlxuKyAgICAgICAgJ15tZGlvLWJ1c0BbMC0zXSQnOlxuKyAgICAgICAgICBwcm9wZXJ0aWVzOlxuKyAgICAgICAgICAgIGNsb2NrLWZyZXF1ZW5jeTpcbisgICAgICAgICAgICAgIGVudW06IFsyNTAwMDAwLCAxMDAwMDAwMF1cbisgIC0gaWY6XG4rICAgICAgcHJvcGVydGllczpcbisgICAgICAgIGNvbXBhdGlibGU6XG4rICAgICAgICAgIGNvbnRhaW5zOlxuKyAgICAgICAgICAgIGVudW06XG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM5MS1tZGlvXG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM5Mi1tZGlvXG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM5My1tZGlvXG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMS1tZGlvXG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMmItbWRpb1xuKyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDkzMDJjLW1kaW9cbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzAzLW1kaW9cbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzExLW1kaW9cbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzEyLW1kaW9cbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzEzLW1kaW9cbisgICAgdGhlbjpcbisgICAgICBwYXR0ZXJuUHJvcGVydGllczpcbisgICAgICAgICdebWRpby1idXNAWzAtM10kJzpcbisgICAgICAgICAgcHJvcGVydGllczpcbisgICAgICAgICAgICBjbG9jay1mcmVxdWVuY3k6XG4rICAgICAgICAgICAgICBlbnVtOiBbMTI1MDAwMCwgMjUwMDAwMCwgNTAwMDAwMF1cbitcbiB1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXG4gXG4gZXhhbXBsZXM6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jIGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXG5pbmRleCAxMWQwNzhlZjk0MWNkLi44ZWRiMGJhMGJjZGQxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXG4rKysgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcbkBAIC0xMzAsNiArMTMwLDcgQEBcbiAjZGVmaW5lIFJUTDgzODBfTlVNX1BBR0VTXHRcdFx0NDA5NlxuICNkZWZpbmUgUlRMODM4MF9OVU1fUE9SVFNcdFx0XHQyOFxuICNkZWZpbmUgUlRMODM4MF9TTUlfR0xCX0NUUkxcdFx0XHQweGExMDBcbisjZGVmaW5lICAgUlRMODM4MF9TTUlfRlJFUV9TRUxcdFx0XHRCSVQoMSlcbiAjZGVmaW5lICAgUlRMODM4MF9TTUlfUEhZX1BBVENIX0RPTkVcdFx0QklUKDE1KVxuICNkZWZpbmUgUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzBcdFx0MHhhMWI4XG4gI2RlZmluZSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMVx0XHQweGExYmNcbkBAIC0xNjksMTIgKzE3MCwxNSBAQFxuICNkZWZpbmUgUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0xPV1x0XHQweDAzZTRcbiAjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9ISUdIXHRcdDB4MDNlOFxuICNkZWZpbmUgUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkxcdFx0MHgwM2ZjXG4rI2RlZmluZSBSVEw4MzkwX1NNSV9HTEJfQ1RSTFx0XHRcdDB4MDNmOFxuKyNkZWZpbmUgICBSVEw4MzkwX1NNSV9GUkVRX1NFTFx0XHRcdEdFTk1BU0soNiwgNSlcbiBcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX0JVU0VTXHRcdFx0NFxuICNkZWZpbmUgUlRMOTMwMF9OVU1fUEFHRVNcdFx0XHQ0MDk2XG4gI2RlZmluZSBSVEw5MzAwX05VTV9QT1JUU1x0XHRcdDI4XG4gI2RlZmluZSBSVEw5MzAwX1NNSV9HTEJfQ1RSTFx0XHRcdDB4Y2EwMFxuICNkZWZpbmUgICBSVEw5MzAwX0dMQl9DVFJMX0lOVEZfU0VMKGludGYpXHRCSVQoMTYgKyAoaW50ZikpXG4rI2RlZmluZSAgIFJUTDkzMDBfU01JX0ZSRVFfU0VMKGludGYpXHRcdEdFTk1BU0soKGludGYpICogMiArIDksIChpbnRmKSAqIDIgKyA4KVxuICNkZWZpbmUgUlRMOTMwMF9TTUlfUE9SVDBfMTVfUE9MTElOR19TRUxcdDB4Y2EwOFxuICNkZWZpbmUgUlRMOTMwMF9TTUlfQUNDRVNTX1BIWV9DVFJMXzBcdFx0MHhjYjcwXG4gI2RlZmluZSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMVx0XHQweGNiNzRcbkBAIC0xOTYsNiArMjAwLDggQEBcbiAjZGVmaW5lIFJUTDkzMTBfTlVNX0JVU0VTXHRcdFx0NFxuICNkZWZpbmUgUlRMOTMxMF9OVU1fUEFHRVNcdFx0XHQ4MTkyXG4gI2RlZmluZSBSVEw5MzEwX05VTV9QT1JUU1x0XHRcdDU2XG4rI2RlZmluZSBSVEw5MzEwX1NNSV9HTEJfQ1RSTDBcdFx0XHQweDBjYzBcbisjZGVmaW5lICAgUlRMOTMxMF9TTUlfRlJFUV9TRUwoaW50ZilcdFx0R0VOTUFTSygoaW50ZikgKiAyICsgNSwgKGludGYpICogMiArIDQpXG4gI2RlZmluZSBSVEw5MzEwX1NNSV9HTEJfQ1RSTDFcdFx0XHQweDBjYmNcbiAjZGVmaW5lICAgUlRMOTMxMF9TTUlfR0xCX0ZNVF9TRUxfQzQ1KGludGYpXHRCSVQoKGludGYpICogMiArIDEpXG4gI2RlZmluZSBSVEw5MzEwX1NNSV9JTkRSVF9BQ0NFU1NfQ1RSTF8wXHRcdDB4MGMwMFxuQEAgLTI1MSw2ICsyNTcsNyBAQCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2IHtcbiBcdHN0cnVjdCByZWdtYXAgKnJlZ21hcDtcbiBcdHN0cnVjdCBtdXRleCBsb2NrOyAvKiBwcm90ZWN0IEhXIGFjY2VzcyAqL1xuIFx0REVDTEFSRV9CSVRNQVAodmFsaWRfcG9ydHMsIE1BWF9QT1JUUyk7XG4rXHR1MzIgZ2xvYmFsX2ZyZXE7XG4gXHR1MTYgcGFnZVtNQVhfUE9SVFNdO1xuIFx0dTggc21pX2J1c1tNQVhfUE9SVFNdO1xuIFx0dTggc21pX2FkZHJbTUFYX1BPUlRTXTtcbkBAIC0yNjksNiArMjc2LDcgQEAgc3RydWN0IG90dG9fZW1kaW9faW5mbyB7XG4gXHR1OCBudW1fcG9ydHM7XG4gXHR1MTYgbnVtX3BhZ2VzO1xuIFx0dTMyIHBvbGxfY3RybDtcbitcdGludCAoKnNldF9idXNfZnJlcXVlbmN5KShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSk7XG4gXHRpbnQgKCpzZXR1cF9jb250cm9sbGVyKShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KTtcbiBcdGludCAoKnJlYWRfYzIyKShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSk7XG4gXHRpbnQgKCpyZWFkX2M0NSkoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSk7XG5AQCAtNzQwLDYgKzc0OCwxNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fc2V0dXBfdG9wb2xvZ3koc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSlcbit7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuK1xuK1x0aWYgKGZyZXEgIT0gMjUwMDAwMCBcdTAwMjZcdTAwMjYgZnJlcSAhPSAxMDAwMDAwMClcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRyZXR1cm4gcmVnbWFwX2Fzc2lnbl9iaXRzKHByaXYtXHUwMDNlcmVnbWFwLCBSVEw4MzgwX1NNSV9HTEJfQ1RSTCxcbitcdFx0XHRcdCAgUlRMODM4MF9TTUlfRlJFUV9TRUwsIGZyZXEgPT0gMTAwMDAwMDApO1xuK31cbitcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4ge1xuIFx0LypcbkBAIC03NDksNiArNzY4LDQwIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbiBcdHJldHVybiByZWdtYXBfc2V0X2JpdHMocHJpdi1cdTAwM2VyZWdtYXAsIFJUTDgzODBfU01JX0dMQl9DVFJMLCBSVEw4MzgwX1NNSV9QSFlfUEFUQ0hfRE9ORSk7XG4gfVxuIFxuK3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxuK3tcbitcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG4rXHR1MzIgdmFsO1xuK1x0aW50IGVycjtcbitcbitcdGlmIChmcmVxICE9IDEyNTAwMDAgXHUwMDI2XHUwMDI2IGZyZXEgIT0gMjUwMDAwMCBcdTAwMjZcdTAwMjYgZnJlcSAhPSA1MDAwMDAwKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdGlmIChwcml2LVx1MDAzZWdsb2JhbF9mcmVxKVxuK1x0XHRyZXR1cm4gZnJlcSA9PSBwcml2LVx1MDAzZWdsb2JhbF9mcmVxID8gMCA6IC1FSU5WQUw7XG4rXG4rXHR2YWwgPSBGSUVMRF9QUkVQKFJUTDgzOTBfU01JX0ZSRVFfU0VMLCBmcmVxIC8gMjUwMDAwMCk7XG4rXHRlcnIgPSByZWdtYXBfdXBkYXRlX2JpdHMocHJpdi1cdTAwM2VyZWdtYXAsIFJUTDgzOTBfU01JX0dMQl9DVFJMLCBSVEw4MzkwX1NNSV9GUkVRX1NFTCwgdmFsKTtcbitcdGlmICghZXJyKVxuK1x0XHRwcml2LVx1MDAzZWdsb2JhbF9mcmVxID0gZnJlcTtcbitcbitcdHJldHVybiBlcnI7XG4rfVxuK1xuK3N0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxuK3tcbitcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gYnVzLVx1MDAzZXByaXY7XG4rXHR1MzIgbWFzaywgdmFsO1xuK1xuK1x0aWYgKGZyZXEgIT0gMTI1MDAwMCBcdTAwMjZcdTAwMjYgZnJlcSAhPSAyNTAwMDAwIFx1MDAyNlx1MDAyNiBmcmVxICE9IDUwMDAwMDApXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuK1x0bWFzayA9IFJUTDkzMDBfU01JX0ZSRVFfU0VMKGNoYW4tXHUwMDNlbWRpb19idXMpO1xuK1x0dmFsID0gZmllbGRfcHJlcChtYXNrLCBmcmVxIC8gMjUwMDAwMCk7XG4rXG4rXHRyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtXHUwMDNlcmVnbWFwLCBSVEw5MzAwX1NNSV9HTEJfQ1RSTCwgbWFzaywgdmFsKTtcbit9XG4rXG4gc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuIHtcbiBcdHUzMiBnbGJfY3RybF9tYXNrID0gMCwgZ2xiX2N0cmxfdmFsID0gMDtcbkBAIC03NjksNiArODIyLDIxIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSlcbit7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuK1x0c3RydWN0IG90dG9fZW1kaW9fY2hhbiAqY2hhbiA9IGJ1cy1cdTAwM2Vwcml2O1xuK1x0dTMyIG1hc2ssIHZhbDtcbitcbitcdGlmIChmcmVxICE9IDEyNTAwMDAgXHUwMDI2XHUwMDI2IGZyZXEgIT0gMjUwMDAwMCBcdTAwMjZcdTAwMjYgZnJlcSAhPSA1MDAwMDAwKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdG1hc2sgPSBSVEw5MzEwX1NNSV9GUkVRX1NFTChjaGFuLVx1MDAzZW1kaW9fYnVzKTtcbitcdHZhbCA9IGZpZWxkX3ByZXAobWFzaywgZnJlcSAvIDI1MDAwMDApO1xuK1xuK1x0cmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhwcml2LVx1MDAzZXJlZ21hcCwgUlRMOTMxMF9TTUlfR0xCX0NUUkwwLCBtYXNrLCB2YWwpO1xuK31cbitcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4ge1xuIFx0aW50IGksIGVycjtcbkBAIC04MzEsMTQgKzg5OSwxNCBAQCBzdGF0aWMgdm9pZCBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gfVxuIFxuIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LFxuLVx0XHRcdFx0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlKVxuK1x0XHRcdFx0c3RydWN0IGRldmljZV9ub2RlICpub2RlKVxuIHtcbiBcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW47XG4gXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuLVx0dTMyIG1kaW9fYnVzO1xuK1x0dTMyIG1kaW9fYnVzLCBmcmVxO1xuIFx0aW50IGVycjtcbiBcbi1cdGVyciA9IGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcInJlZ1wiLCBcdTAwMjZtZGlvX2J1cyk7XG4rXHRlcnIgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcInJlZ1wiLCBcdTAwMjZtZGlvX2J1cyk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXCJ1bmRlZmluZWQgc21pIGJ1cyBudW1iZXJcXG5cIik7XG4gXG5AQCAtODY1LDcgKzkzMywxNCBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdlxuIFxuIFx0c25wcmludGYoYnVzLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFwiJXMtJWRcIiwgZGV2X25hbWUoZGV2KSwgbWRpb19idXMpO1xuIFxuLVx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCB0b19vZl9ub2RlKG5vZGUpKTtcbitcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcImNsb2NrLWZyZXF1ZW5jeVwiLCBcdTAwMjZmcmVxKSlcbitcdFx0ZnJlcSA9IDI1MDAwMDA7XG4rXHRlcnIgPSBwcml2LVx1MDAzZWluZm8tXHUwMDNlc2V0X2J1c19mcmVxdWVuY3koYnVzLCBmcmVxKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCBcImNhbm5vdCBzZXQgZnJlcXVlbmN5ICV1IGZvciBNRElPIGJ1cyAlZFxcblwiLFxuK1x0XHRcdFx0ICAgICBmcmVxLCBtZGlvX2J1cyk7XG4rXG4rXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpO1xuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBlcnIsIFwiY2Fubm90IHJlZ2lzdGVyIE1ESU8gYnVzXFxuXCIpO1xuIFxuQEAgLTEwMjcsNyArMTEwMiw3IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCBcImZhaWxlZCB0byBzZXR1cCBNRElPIGJ1cyBjb250cm9sbGVyXFxuXCIpO1xuIFx0fVxuIFxuLVx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkX25vZGVfc2NvcGVkKGRldiwgY2hpbGQpIHtcbitcdGZvcl9lYWNoX2NoaWxkX29mX25vZGVfc2NvcGVkKGRldi1cdTAwM2VvZl9ub2RlLCBjaGlsZCkge1xuIFx0XHRlcnIgPSBvdHRvX2VtZGlvX3Byb2JlX29uZShkZXYsIHByaXYsIGNoaWxkKTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRyZXR1cm4gZXJyO1xuQEAgLTEwNTEsNiArMTEyNiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM4MF9pbmZvID0ge1xuIFx0Lm51bV9wYWdlcyA9IFJUTDgzODBfTlVNX1BBR0VTLFxuIFx0Lm51bV9wb3J0cyA9IFJUTDgzODBfTlVNX1BPUlRTLFxuIFx0LnBvbGxfY3RybCA9IFJUTDgzODBfU01JX1BPTExfQ1RSTCxcbitcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fODM4MF9zZXRfYnVzX2ZyZXF1ZW5jeSxcbiBcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIsXG4gXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIsXG4gXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jNDUsXG5AQCAtMTA3NSw2ICsxMTUxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzkwX2luZm8gPSB7XG4gXHQubnVtX3BhZ2VzID0gUlRMODM5MF9OVU1fUEFHRVMsXG4gXHQubnVtX3BvcnRzID0gUlRMODM5MF9OVU1fUE9SVFMsXG4gXHQucG9sbF9jdHJsID0gUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsXG4rXHQuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzgzOTBfc2V0X2J1c19mcmVxdWVuY3ksXG4gXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jMjIsXG4gXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUsXG4gXHQud3JpdGVfYzIyID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2MyMixcbkBAIC0xMDk3LDYgKzExNzQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMDBfaW5mbyA9IHtcbiBcdC5udW1fcG9ydHMgPSBSVEw5MzAwX05VTV9QT1JUUyxcbiBcdC5udW1fcGFnZXMgPSBSVEw5MzAwX05VTV9QQUdFUyxcbiBcdC5wb2xsX2N0cmwgPSBSVEw5MzAwX1NNSV9QT0xMX0NUUkwsXG4rXHQuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzkzMDBfc2V0X2J1c19mcmVxdWVuY3ksXG4gXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyLFxuIFx0LnJlYWRfYzIyID0gb3R0b19lbWRpb185MzAwX3JlYWRfYzIyLFxuIFx0LnJlYWRfYzQ1ID0gb3R0b19lbWRpb185MzAwX3JlYWRfYzQ1LFxuQEAgLTExMjMsNiArMTIwMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMxMF9pbmZvID0ge1xuIFx0Lm51bV9wYWdlcyA9IFJUTDkzMTBfTlVNX1BBR0VTLFxuIFx0Lm51bV9wb3J0cyA9IFJUTDkzMTBfTlVNX1BPUlRTLFxuIFx0LnBvbGxfY3RybCA9IFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19DVFJMLFxuK1x0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb185MzEwX3NldF9idXNfZnJlcXVlbmN5LFxuIFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMTBfc2V0dXBfY29udHJvbGxlcixcbiBcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMixcbiBcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2M0NSxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjAyOjIzLjc4MTQyNjgzOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI4MDkwNjQ1MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGhpbmdlcyBvbiB3aGV0aGVyIHRoaXMgcGF0Y2ggcHJlc2VudHMgYSBjb21wZWxsaW5nIGNhc2UgZm9yIGZ1enppbmcsIHNvIEkgbmVlZCB0byB3ZWlnaCB0aGUgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLiBMZXQncyBzdGFydCBieSBicmVha2luZyBkb3duIHRoZSBwYXRjaCdzIGNvbXBvbmVudHMuXG5cbkZpcnN0LCBJIHNlZSB0aGUgbW9kaWZpY2F0aW9ucyBpbnZvbHZlIHR3byBmaWxlczogYERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbGAgYW5kIGBkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNgLiBUaGUgWUFNTCBmaWxlIHR5cGljYWxseSBpbmRpY2F0ZXMgY2hhbmdlcyB0byBEZXZpY2UgVHJlZSBiaW5kaW5ncywgd2hpY2ggKmNvdWxkKiBpbnZvbHZlIHN1YnRsZSBsb2dpYyBjaGFuZ2VzIGluZmx1ZW5jaW5nIGRldmljZSBjb25maWd1cmF0aW9uIG9yIGRhdGEgaW50ZXJwcmV0YXRpb24g4oCTIHdvcnRoIG5vdGluZywgYnV0IG5vdCBuZWNlc3NhcmlseSBhIGZ1enppbmcgZ29sZCBtaW5lIG9uIGl0cyBvd24uXG5cbk5vdywgdGhlIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBmaWxlIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBkcml2ZXIgZG9lcy4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaXRzIEtjb25maWcgZW50cnkuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBkcml2ZXIncyByb2xlLiBJcyBpdCBhIGNvcmUgbmV0d29yayBpbnRlcmZhY2UgZHJpdmVyPyBEb2VzIGl0IGludGVyYWN0IHdpdGggaGFyZHdhcmUgaW4gYSB3YXkgdGhhdCBoYW5kbGVzIGV4dGVybmFsIGRhdGE/IElzIGl0IHRhcmdldGVkIGF0IGEgcGFydGljdWxhciBhcmNoaXRlY3R1cmUgb3IgaGFyZHdhcmUgY29tcG9uZW50PyBUaGF0J3MgZ29pbmcgdG8gaW5mb3JtIG1lIHdoZXRoZXIgaXQncyB3b3J0aCB0aGUgdGltZSB0byBldmVuIHByb2JlIHRoZSBzdXJmYWNlIGZvciBmdXp6aW5nIG9wcG9ydHVuaXRpZXMuIFRoZSBwcm9iaW5nL2luc3RhbnRpYXRpb24gbWV0aG9kIGlzIGFsc28gY3J1Y2lhbCAtIGhvdyB0aGUgZHJpdmVyIGluaXRpYWxpemVzLCByZWNlaXZlcyBkYXRhLCBhbmQgc2V0cyB1cCBjb21tdW5pY2F0aW9uIGNoYW5uZWxzIHByb3ZpZGVzIGdyZWF0IGluZGljYXRvcnMgYXMgdG8gd2hlcmUgYW5kIGhvdyBmdXp6aW5nIGNhbiBiZSBlZmZlY3RpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwOTAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTowMjoyNi41OTA0OTMwNDRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0NTY3NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTURJT19SRUFMVEVLX1JUTDkzMDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWRpb1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tZGlvL0tjb25maWc9MTY2PWNvbmZpZyBNRElPX0lQUTgwNjRcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy0xNzMtXFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnOjE3NDpjb25maWcgTURJT19SRUFMVEVLX1JUTDkzMDBcXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTc1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFJUTDgzeHgvUlRMOTN4eCBNRElPIGludGVyZmFjZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZT0yMz1vYmotJChDT05GSUdfTURJT19QSUM2NEhQU0MpXFx0XFx0Kz0gbWRpby1waWM2NGhwc2Mub1xcbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX01ESU9fUkVBTFRFS19SVEw5MzAwKVxcdCs9IG1kaW8tcmVhbHRlay1ydGw5MzAwLm9cXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlLTI1LW9iai0kKENPTkZJR19NRElPX1JFR01BUClcXHRcXHQrPSBtZGlvLXJlZ21hcC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjAyOjI2LjYzNzk1NDg1M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwNTk3NTczOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIE1ESU9fUkVBTFRFS19SVEw5MzAwIEtjb25maWcqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhlIEtjb25maWcgZm9yIHRoZSBNRElPX1JFQUxURUtfUlRMOTMwMCBkcml2ZXIuIE15IGluaXRpYWwgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIHN1cHBvcnQgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGJyb2FkZXIgYnVpbGQgc3lzdGVtLiBXaGF0IGFyZSB0aGUga2V5IGRlcGVuZGVuY2llcz8gV2hhdCBvcHRpb25zIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyLCBhbmQgaG93IGdyYW51bGFyIGFyZSB0aGV5PyBJ4oCZbSBsb29raW5nIGZvciB0aGUgZXNzZW50aWFsIGtub2JzLCB0aGUgb25lcyB0aGF0IHRydWx5IG1hdHRlci4gRm9yIGV4YW1wbGUsIGFyZSB0aGVyZSBvcHRpb25hbCBmZWF0dXJlcyBjb250cm9sbGVkIGJ5IHRyaXN0YXRlcyBvciBqdXN0IGJvb2xzPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIHRoaXMgZHJpdmVyIC0tIHdoaWNoIGRlcGVuZGVuY2llcyB3aWxsIEkgcHVsbCBpbiBhbmQgaXMgdGhpcyBkcml2ZXIgcmVxdWlyZWQgZm9yIG90aGVyIGNvcmUgZnVuY3Rpb25hbGl0aWVzPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbGx5IHByb2JsZW1hdGljIGRlZmF1bHRzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBJJ2xsIGJlIGNoZWNraW5nIGlmIHRoZSBkcml2ZXIncyBjb25maWd1cmF0aW9uIGlzIGNsZWFuIG9yIGlmIGl0IG5lZWRzIGltcHJvdmVtZW50LiBVbmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZ2l2ZXMgbWUgaW5zaWdodCBpbnRvIHRoZSBkcml2ZXIncyBjYXBhYmlsaXRpZXMgYW5kIGl0cyBzdWl0YWJpbGl0eSBmb3IgZGlmZmVyZW50IHVzZSBjYXNlcy4gVWx0aW1hdGVseSwgSSBuZWVkIHRvIGtub3cgdGhlIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyB0aGlzIGRyaXZlciBpbiBteSBzeXN0ZW0gY29uZmlndXJhdGlvbiwgYm90aCBpbiB0ZXJtcyBvZiBjb2RlIGZvb3RwcmludCBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIG90aGVyIG1vZHVsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4MTcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTowMjoyOC42OTc3MTUwMzFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9tZGlvL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTcwLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTcwOlxcdFxcdGhlbHBcXG4gMTcxOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIE1ESU8gaW50ZXJmYWNlIGZvdW5kIGluIHRoZSBuZXR3b3JrXFxuIDE3MjpcXHRcXHQgIGludGVyZmFjZSB1bml0cyBvZiB0aGUgSVBRODA2NCBTb0NcXG4gMTczOlxcdFxcbiAxNzQ6XFx0Y29uZmlnIE1ESU9fUkVBTFRFS19SVEw5MzAwXFxuIDE3NTpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBSVEw4M3h4L1JUTDkzeHggTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFxcXCJcXG4gMTc2OlxcdFxcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcXG4gMTc3OlxcdFxcdGhlbHBcXG4gMTc4OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIE1ESU8gaW50ZXJmYWNlIGZvdW5kIGluIHRoZSBSZWFsdGVrXFxuIDE3OTpcXHRcXHQgIFJUTDgzeHgvUlRMOTN4eCBmYW1pbHkgb2YgRXRoZXJuZXQgc3dpdGNoZXMgd2l0aCBpbnRlZ3JhdGVkIFNvQy5cXG4gMTgwOlxcdFxcbiAxODE6XFx0Y29uZmlnIE1ESU9fUkVHTUFQXFxuIDE4MjpcXHRcXHR0cmlzdGF0ZVxcbiAxODM6XFx0XFx0aGVscFxcbiAxODQ6XFx0XFx0ICBUaGlzIGRyaXZlciBhbGxvd3MgdXNpbmcgTURJTyBkZXZpY2VzIHRoYXQgYXJlIG5vdCBzaXR0aW5nIG9uIGFcXG4gMTg1OlxcdFxcdCAgcmVndWxhciBNRElPIGJ1cywgYnV0IHN0aWxsIGV4cG9zZXMgdGhlIHN0YW5kYXJkIDgwMi4zIHJlZ2lzdGVyXFxuIDE4NjpcXHRcXHQgIGxheW91dC4gSXQncyByZWdtYXAtYmFzZWQgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBvbiBpbnRlZ3JhdGVkLFxcbiAxODc6XFx0XFx0ICBtZW1vcnktbWFwcGVkIFBIWXMsIFNQSSBQSFlzIGFuZCBzbyBvbi4gQSBuZXcgdmlydHVhbCBNRElPIGJ1cyBpc1xcbiAxODg6XFx0XFx0ICBjcmVhdGVkLCBhbmQgaXRzIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBhcmUgbWFwcGVkIHRvIHRoZSB1bmRlcmx5aW5nXFxuIDE4OTpcXHRcXHQgIHJlZ21hcC4gVXNlcnMgd2lsbGluZyB0byB1c2UgdGhpcyBkcml2ZXIgbXVzdCBleHBsaWNpdGx5IHNlbGVjdFxcbiAxOTA6XFx0XFx0ICBSRUdNQVAuXFxuIDE5MTpcXHRcXG4gMTkyOlxcdGNvbmZpZyBNRElPX1RIVU5ERVJcXG4gMTkzOlxcdFxcdHRyaXN0YXRlIFxcXCJUaHVuZGVyWCBTT0NzIE1ESU8gYnVzZXNcXFwiXFxuIDE5NDpcXHRcXHRkZXBlbmRzIG9uIDY0QklUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjAyOjI4LjY5Nzc5MDkyMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE5MzAwNTE0OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBwcm9iaW5nIG1lY2hhbmlzbS4gRmlyc3QsIEknbGwgaWRlbnRpZnkgdGhlIGJ1cyBpdCdzIHRpZWQgdG8uIFRoZW4sIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgc3RyaWN0bHkgYSBwbGF0Zm9ybSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhhdCBSZWFsdGVrIE1JUFMgU29DLCB0aGUgYE1BQ0hfUkVBTFRFS19SVExgIGFyY2hpdGVjdHVyZSwgb3IgaWYgdGhlcmUncyBzb21lIGRldmljZSB0cmVlIChEVCkgb3ZlcmxheSBjb25maWd1cmF0aW9uIG9yIGFsdGVybmF0aXZlIGFwcHJvYWNoIHRoYXQgYWxsb3dzIGl0IHRvIGJlIGFjY2Vzc2VkIHZpYSBvdGhlciBjb25maWd1cmF0aW9ucy4gRXNzZW50aWFsbHksIEkgbmVlZCB0byBnZXQgdGhlIGJpZyBwaWN0dXJlIG9mIHRoaXMgZHJpdmVyIGFuZCBob3cgaXQncyBpbnRlZ3JhdGVkLiBMZXQncyBzdGFydCB3aXRoIGEgdGhvcm91Z2ggcmV2aWV3IG9mIHRoZSBgbWRpby1yZWFsdGVrLXJ0bDkzMDAuY2AgZmlsZSBpdHNlbGYuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1NjQsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjAyOjMwLjYyNzg0NDkxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4ODA5NDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm90dG9fZW1kaW9fXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjQzLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyNDQ6c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3Mge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNDUtXFx0dTMyIGMyMl9kYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI1NC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MjU1OnN0cnVjdCBvdHRvX2VtZGlvX3ByaXYge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyNTY6XFx0Y29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyAqaW5mbztcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjU3LVxcdHN0cnVjdCByZWdtYXAgKnJlZ21hcDtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNjctXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI2ODpzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjY5LVxcdHUzMiBhZGRyX21hcF9iYXNlO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI3My1cXHR1MzIgY21kX3dyaXRlO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyNzQ6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX3JlZ3M7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI3NS1cXHR1OCBudW1fYnVzZXM7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjc5LVxcdGludCAoKnNldF9idXNfZnJlcXVlbmN5KShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI4MDpcXHRpbnQgKCpzZXR1cF9jb250cm9sbGVyKShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjgxLVxcdGludCAoKnJlYWRfYzIyKShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjg2LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyODc6c3RydWN0IG90dG9fZW1kaW9fY2hhbiB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI4ODpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yODktXFx0dTggbWRpb19idXM7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjkxLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyOTI6c3RhdGljIGludCBvdHRvX2VtZGlvX3BoeV90b19wb3J0KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI5My17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI5NDpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyOTU6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdjtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjk2LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTMwNy1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MzA4OnN0YXRpYyBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpvdHRvX2VtZGlvX2J1c190b19wcml2KHN0cnVjdCBtaWlfYnVzICpidXMpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTMwOS17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMxMDpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zMTEtXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzE0LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozMTU6c3RhdGljIGludCBvdHRvX2VtZGlvX3NldF9wb3J0X3BvbGxpbmcoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiwgaW50IHBvcnQsIGJvb2wgYWN0aXZlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zMTYte1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTMyMC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MzIxOnN0YXRpYyBpbnQgb3R0b19lbWRpb19ydW5fY21kKHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBjbWQsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMyMjpcXHRcXHRcXHQgICAgICBzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyAqY21kX2RhdGEpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTMyMy17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMyNDpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozMjU6XFx0Y29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyAqaW5mbyA9IHByaXYtXFx1MDAzZWluZm87XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTMyNi1cXHR1MzIgY21kc3RhdGU7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzc3LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozNzg6c3RhdGljIGludCBvdHRvX2VtZGlvX3JlYWRfY21kKHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBjbWQsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjM3OTpcXHRcXHRcXHQgICAgICAgc3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgKmNtZF9kYXRhLCB1MzIgbWFzaywgdTMyICp2YWx1ZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzgwLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MzgxOlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTM4Mi1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTM4NC1cXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZwcml2LVxcdTAwM2Vsb2NrKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Mzg1OlxcdHJldCA9IG90dG9fZW1kaW9fcnVuX2NtZChidXMsIGNtZCB8IHByaXYtXFx1MDAzZWluZm8tXFx1MDAzZWNtZF9yZWFkLCBjbWRfZGF0YSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTM4Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTM5Ny1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Mzk4OnN0YXRpYyBpbnQgb3R0b19lbWRpb193cml0ZV9jbWQoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGNtZCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Mzk5OlxcdFxcdFxcdFxcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzICpjbWRfZGF0YSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDAwLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDAxOlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MDQtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQwNTpcXHRyZXR1cm4gb3R0b19lbWRpb19ydW5fY21kKGJ1cywgY21kIHwgcHJpdi1cXHUwMDNlaW5mby1cXHUwMDNlY21kX3dyaXRlLCBjbWRfZGF0YSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQwNi19XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQwNy1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDA4OnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MDkte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MTA6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDExOlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MTItXFx0XFx0LmMyMl9kYXRhXFx0PSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQxNy1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDE4OlxcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0MyMiwgXFx1MDAyNmNtZF9kYXRhLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MTktXFx0XFx0XFx0XFx0ICAgUlRMODM4MF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDIxLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MjI6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQyMy17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQyNDpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MjU6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQyNi1cXHRcXHQuYzIyX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDMyLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MzM6XFx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0MyMiwgXFx1MDAyNmNtZF9kYXRhKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDM0LX1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDM1LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MzY6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQzNy1cXHRcXHRcXHRcXHQgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00Mzgte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0Mzk6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ0MC1cXHRcXHQuYzQ1X2RhdGFcXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ0NC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDQ1OlxcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0M0NSwgXFx1MDAyNmNtZF9kYXRhLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NDYtXFx0XFx0XFx0XFx0ICAgUlRMODM4MF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDQ4LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0NDk6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NTAtXFx0XFx0XFx0XFx0ICAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDUxLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDUyOlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NTMtXFx0XFx0LmM0NV9kYXRhXFx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NTgtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ1OTpcXHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcXHUwMDI2Y21kX2RhdGEpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NjAtfVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NjEtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ2MjpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM5MF9yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDYzLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDY0OlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ2NTpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDY2LVxcdFxcdC5jMjJfZGF0YVxcdD0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NzEtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ3MjpcXHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDgzOTBfUEhZX0NUUkxfVFlQRV9DMjIsIFxcdTAwMjZjbWRfZGF0YSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDczLVxcdFxcdFxcdFxcdCAgIFJUTDgzOTBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ3NS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDc2OnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00Nzcte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0Nzg6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDc5OlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00ODAtXFx0XFx0LmMyMl9kYXRhXFx0PSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ4Ny1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDg4OlxcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDgzOTBfUEhZX0NUUkxfVFlQRV9DMjIsIFxcdTAwMjZjbWRfZGF0YSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ4OS19XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ5MC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDkxOnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00OTItXFx0XFx0XFx0XFx0ICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDkzLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDk0OlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00OTUtXFx0XFx0LmM0NV9kYXRhXFx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00OTktXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUwMDpcXHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDgzOTBfUEhZX0NUUkxfVFlQRV9DNDUsIFxcdTAwMjZjbWRfZGF0YSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTAxLVxcdFxcdFxcdFxcdCAgIFJUTDgzOTBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUwMy1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTA0OnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTA1LVxcdFxcdFxcdFxcdCAgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUwNi17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUwNzpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTA4LVxcdFxcdC5jNDVfZGF0YVxcdD0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTE0LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1MTU6XFx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0M0NSwgXFx1MDAyNmNtZF9kYXRhKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTE2LX1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTE3LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1MTg6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUxOS17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUyMDpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1MjE6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUyMi1cXHRcXHQuYzIyX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTI3LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1Mjg6XFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw5MzAwX1BIWV9DVFJMX1RZUEVfQzIyLCBcXHUwMDI2Y21kX2RhdGEsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUyOS1cXHRcXHRcXHRcXHQgICBSVEw5MzAwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MzEtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUzMjpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTMzLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTM0OlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUzNTpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTM2LVxcdFxcdC5jMjJfZGF0YVxcdD0gRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NDItXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU0MzpcXHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw5MzAwX1BIWV9DVFJMX1RZUEVfQzIyLCBcXHUwMDI2Y21kX2RhdGEpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NDQtfVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NDUtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU0NjpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQ3LVxcdFxcdFxcdFxcdCAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU0OC17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU0OTpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTUwLVxcdFxcdC5jNDVfZGF0YVxcdD0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTU0LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NTU6XFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw5MzAwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcXHUwMDI2Y21kX2RhdGEsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU1Ni1cXHRcXHRcXHRcXHQgICBSVEw5MzAwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NTgtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU1OTpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF93cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU2MC1cXHRcXHRcXHRcXHQgICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NjEte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NjI6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU2My1cXHRcXHQuYzQ1X2RhdGFcXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU2OC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTY5OlxcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDkzMDBfUEhZX0NUUkxfVFlQRV9DNDUsIFxcdTAwMjZjbWRfZGF0YSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU3MC19XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU3MS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTcyOnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NzMte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NzQ6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTc1OlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NzYtXFx0XFx0LmJyb2FkY2FzdFxcdD0gRklFTERfUFJFUChSVEw5MzEwX0JDX1BPUlRfSUQsIHBvcnQpLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU4MC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTgxOlxcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMOTMxMF9QSFlfQ1RSTF9UWVBFX0MyMiwgXFx1MDAyNmNtZF9kYXRhLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01ODItXFx0XFx0XFx0XFx0ICAgUlRMOTMxMF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTg0LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1ODU6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU4Ni17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU4NzpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1ODg6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU4OS1cXHRcXHQuYzIyX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTk1LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1OTY6XFx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMOTMxMF9QSFlfQ1RSTF9UWVBFX0MyMiwgXFx1MDAyNmNtZF9kYXRhKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTk3LX1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTk4LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1OTk6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYwMC1cXHRcXHRcXHRcXHQgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02MDEte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MDI6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYwMy1cXHRcXHQuYnJvYWRjYXN0XFx0PSBGSUVMRF9QUkVQKFJUTDkzMTBfQkNfUE9SVF9JRCwgcG9ydCksXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjA3LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MDg6XFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw5MzEwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcXHUwMDI2Y21kX2RhdGEsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYwOS1cXHRcXHRcXHRcXHQgICBSVEw5MzEwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02MTEtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjYxMjpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF93cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYxMy1cXHRcXHRcXHRcXHQgICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02MTQte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MTU6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYxNi1cXHRcXHQuYzQ1X2RhdGFcXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYyMi1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NjIzOlxcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDkzMTBfUEhZX0NUUkxfVFlQRV9DNDUsIFxcdTAwMjZjbWRfZGF0YSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYyNC19XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYyNS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NjI2OnN0YXRpYyBpbnQgb3R0b19lbWRpb19yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02Mjcte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2Mjg6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjI5LVxcdGludCByZXQsIHBvcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjM3LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2Mzg6XFx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02MzktXFx0aWYgKHBvcnQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY1MS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NjUyOnN0YXRpYyBpbnQgb3R0b19lbWRpb193cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IHJlZ251bSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjUzLVxcdFxcdFxcdFxcdHUxNiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjU0LXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NjU1OlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY1Ni1cXHRpbnQgcmV0LCBwb3J0O1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY2My1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NjY0OlxcdHBvcnQgPSBvdHRvX2VtZGlvX3BoeV90b19wb3J0KGJ1cywgcGh5X2lkKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjY1LVxcdGlmIChwb3J0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02ODItXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjY4MzpzdGF0aWMgaW50IG90dG9fZW1kaW9fcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02ODQte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2ODU6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjg2LVxcdGludCByZXQsIHBvcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjg4LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2ODk6XFx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02OTAtXFx0aWYgKHBvcnQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY5OC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Njk5OnN0YXRpYyBpbnQgb3R0b19lbWRpb193cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzAwLVxcdFxcdFxcdFxcdGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MDEte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3MDI6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzAzLVxcdGludCByZXQsIHBvcnQ7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTcwNC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzA1OlxcdHBvcnQgPSBvdHRvX2VtZGlvX3BoeV90b19wb3J0KGJ1cywgcGh5X2lkKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzA2LVxcdGlmIChwb3J0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MTQtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjcxNTpzdGF0aWMgaW50IG90dG9fZW1kaW9fd3JpdGVfbWFwcGluZyhzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LCB1MzIgYmFzZSwgdTMyIHBvcnQsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTcxNi1cXHRcXHRcXHRcXHQgICAgdTMyIHZhbHNfcGVyX3JlZywgdTMyIGJpdHNfcGVyX3ZhbCwgdTMyIHZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTcyNC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzI1OnN0YXRpYyBpbnQgb3R0b19lbWRpb19zZXR1cF90b3BvbG9neShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MjYte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3Mjc6XFx0Y29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyAqaW5mbyA9IHByaXYtXFx1MDAzZWluZm87XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTcyOC1cXHR1MzIgcG9ydDtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MzItXFx0XFx0aWYgKGluZm8tXFx1MDAzZWJ1c19tYXBfYmFzZSkge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3MzM6XFx0XFx0XFx0cmV0ID0gb3R0b19lbWRpb193cml0ZV9tYXBwaW5nKHByaXYsIGluZm8tXFx1MDAzZWJ1c19tYXBfYmFzZSwgcG9ydCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzM0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBNQVBfQlVTRVNfUEVSX1JFRywgTUFQX0JJVFNfUEVSX0JVUyxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MzktXFx0XFx0aWYgKGluZm8tXFx1MDAzZWFkZHJfbWFwX2Jhc2UpIHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzQwOlxcdFxcdFxcdHJldCA9IG90dG9fZW1kaW9fd3JpdGVfbWFwcGluZyhwcml2LCBpbmZvLVxcdTAwM2VhZGRyX21hcF9iYXNlLCBwb3J0LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NDEtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIE1BUF9BRERSU19QRVJfUkVHLCBNQVBfQklUU19QRVJfQUREUixcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NTAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjc1MTpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzUyLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzUzOlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc1NC1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NjEtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjc2MjpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc2My17XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzcwLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3NzE6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc3Mi17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjc3MzpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NzQtXFx0dTMyIHZhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03ODktXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjc5MDpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzkxLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzkyOlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjc5MzpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03OTQtXFx0dTMyIG1hc2ssIHZhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MDQtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjgwNTpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgwNi17XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODI0LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4MjU6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgyNi17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjgyNzpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4Mjg6XFx0c3RydWN0IG90dG9fZW1kaW9fY2hhbiAqY2hhbiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODI5LVxcdHUzMiBtYXNrLCB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODM5LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4NDA6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04NDEte1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg1NS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODU2OnN0YXRpYyBpbnQgb3R0b19lbWRpb19ub3RpZnlfcGh5X2F0dGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04NTcte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4NTg6XFx0aW50IHBvcnQgPSBvdHRvX2VtZGlvX3BoeV90b19wb3J0KHBoeWRldi1cXHUwMDNlbWRpby5idXMsIHBoeWRldi1cXHUwMDNlbWRpby5hZGRyKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODU5OlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4NjA6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IGNoYW4tXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg2MS1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04NzctXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg3ODpcXHRyZXR1cm4gb3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHByaXYsIHBvcnQsIHRydWUpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04NzktfVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04ODAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg4MTpzdGF0aWMgdm9pZCBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg4Mi17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg4My1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cztcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODg0OlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg4NS1cXHRpbnQgcG9ydDtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODg2LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4ODc6XFx0cHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYocGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg4ODpcXHRwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLCBwaHlkZXYtXFx1MDAzZW1kaW8uYWRkcik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg4OS1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04OTYtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg5NzpcXHRpZiAob3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHByaXYsIHBvcnQsIGZhbHNlKSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODk4LVxcdFxcdGRldl9lcnIoYnVzLVxcdTAwM2VwYXJlbnQsIFxcXCJmYWlsZWQgdG8gZGlzYWJsZSBwb2xsaW5nIGZvciBwb3J0ICVkXFxcXG5cXFwiLCBwb3J0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy05MDAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjkwMTpzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTAyLVxcdFxcdFxcdFxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTAzLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTA0OlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW47XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTkwNS1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTkyMS1cXHRidXMtXFx1MDAzZW5hbWUgPSBcXFwiUmVhbHRlayBTd2l0Y2ggTURJTyBCdXNcXFwiO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5MjI6XFx0YnVzLVxcdTAwM2VyZWFkX2M0NSA9IG90dG9fZW1kaW9fcmVhZF9jNDU7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjkyMzpcXHRidXMtXFx1MDAzZXdyaXRlX2M0NSA9IG90dG9fZW1kaW9fd3JpdGVfYzQ1O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5MjQ6XFx0YnVzLVxcdTAwM2VyZWFkID0gb3R0b19lbWRpb19yZWFkX2MyMjtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTI1OlxcdGJ1cy1cXHUwMDNld3JpdGUgPSBvdHRvX2VtZGlvX3dyaXRlX2MyMjtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTI2LVxcdGJ1cy1cXHUwMDNlcGFyZW50ID0gZGV2O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5Mjc6XFx0YnVzLVxcdTAwM2Vub3RpZnlfcGh5X2F0dGFjaCA9IG90dG9fZW1kaW9fbm90aWZ5X3BoeV9hdHRhY2g7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjkyODpcXHRidXMtXFx1MDAzZW5vdGlmeV9waHlfZGV0YWNoID0gb3R0b19lbWRpb19ub3RpZnlfcGh5X2RldGFjaDtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTI5LVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk0OS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTUwOnN0YXRpYyBzdHJ1Y3QgZGV2aWNlX25vZGUgKm90dG9fZW1kaW9fZ2V0X2J1c19ub2RlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqZG4pXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk1MS17XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTY4LSAqL1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5Njk6c3RhdGljIGludCBvdHRvX2VtZGlvX21hcF9wb3J0cyhzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk3MC17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk3MS1cXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRzX2RuLCAqcGh5X2RuLCAqYnVzX2RuLCAqY3RybF9kbjtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTcyOlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTczLVxcdHN0cnVjdCBkZXZpY2UgKnBhcmVudCA9IGRldi1cXHUwMDNlcGFyZW50O1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk4OS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTkwOlxcdFxcdGJ1c19kbiA9IG90dG9fZW1kaW9fZ2V0X2J1c19ub2RlKHBoeV9kbik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk5MS1cXHRcXHRpZiAoIWJ1c19kbilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDUyLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDUzOnN0YXRpYyBpbnQgb3R0b19lbWRpb19pbml0X3BvbGxpbmcoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA1NC17XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA1Ny1cXHRmb3IgKGludCBwb3J0ID0gMDsgcG9ydCBcXHUwMDNjIHByaXYtXFx1MDAzZWluZm8tXFx1MDAzZW51bV9wb3J0czsgcG9ydCsrKSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNTg6XFx0XFx0ZXJyID0gb3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHByaXYsIHBvcnQsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA1OS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwNjUtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNjY6c3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwNjcte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDY4LVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNjk6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdjtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA3MC1cXHRpbnQgZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwODQtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwODU6XFx0ZXJyID0gb3R0b19lbWRpb19pbml0X3BvbGxpbmcocHJpdik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwODYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDkwLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDkxOlxcdGVyciA9IG90dG9fZW1kaW9fbWFwX3BvcnRzKGRldik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwOTItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDk0LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDk1OlxcdGVyciA9IG90dG9fZW1kaW9fc2V0dXBfdG9wb2xvZ3kocHJpdik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwOTYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTA1LVxcdGZvcl9lYWNoX2NoaWxkX29mX25vZGVfc2NvcGVkKGRldi1cXHUwMDNlb2Zfbm9kZSwgY2hpbGQpIHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEwNjpcXHRcXHRlcnIgPSBvdHRvX2VtZGlvX3Byb2JlX29uZShkZXYsIHByaXYsIGNoaWxkKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTEwNy1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExMTMtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMTQ6c3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzgwX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExMTUtXFx0LmFkZHJfbWFwX2Jhc2UgPSBSVEw4MzgwX1NNSV9QT1JUMF81X0FERFJfQ1RSTCxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTI4LVxcdC5wb2xsX2N0cmwgPSBSVEw4MzgwX1NNSV9QT0xMX0NUUkwsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMjk6XFx0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb184MzgwX3NldF9idXNfZnJlcXVlbmN5LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTMwOlxcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMzE6XFx0LnJlYWRfYzIyID0gb3R0b19lbWRpb184MzgwX3JlYWRfYzIyLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTMyOlxcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM4MF9yZWFkX2M0NSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEzMzpcXHQud3JpdGVfYzIyID0gb3R0b19lbWRpb184MzgwX3dyaXRlX2MyMixcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEzNDpcXHQud3JpdGVfYzQ1ID0gb3R0b19lbWRpb184MzgwX3dyaXRlX2M0NSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTEzNS19O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTM2LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTM3OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM5MF9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTM4LVxcdC5jbWRfZmFpbCA9IFJUTDgzOTBfUEhZX0NUUkxfRkFJTCxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTUzLVxcdC5wb2xsX2N0cmwgPSBSVEw4MzkwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE1NDpcXHQuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzgzOTBfc2V0X2J1c19mcmVxdWVuY3ksXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExNTU6XFx0LnJlYWRfYzIyID0gb3R0b19lbWRpb184MzkwX3JlYWRfYzIyLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTU2OlxcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2M0NSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE1NzpcXHQud3JpdGVfYzIyID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2MyMixcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE1ODpcXHQud3JpdGVfYzQ1ID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2M0NSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTE1OS19O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTYwLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTYxOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMwMF9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTYyLVxcdC5hZGRyX21hcF9iYXNlID0gUlRMOTMwMF9TTUlfUE9SVDBfNV9BRERSX0NUUkwsXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTE3Ni1cXHQucG9sbF9jdHJsID0gUlRMOTMwMF9TTUlfUE9MTF9DVFJMLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTc3OlxcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fOTMwMF9zZXRfYnVzX2ZyZXF1ZW5jeSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE3ODpcXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTc5OlxcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2MyMixcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE4MDpcXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jNDUsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExODE6XFx0LndyaXRlX2MyMiA9IG90dG9fZW1kaW9fOTMwMF93cml0ZV9jMjIsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExODI6XFx0LndyaXRlX2M0NSA9IG90dG9fZW1kaW9fOTMwMF93cml0ZV9jNDUsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExODMtfTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTE4NC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE4NTpzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMTBfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTE4Ni1cXHQuYWRkcl9tYXBfYmFzZSA9IFJUTDkzMTBfU01JX1BPUlRfQUREUl9DVFJMLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEyMDMtXFx0LnBvbGxfY3RybCA9IFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19DVFJMLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMjA0OlxcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fOTMxMF9zZXRfYnVzX2ZyZXF1ZW5jeSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTIwNTpcXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMjA2OlxcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMixcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTIwNzpcXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jNDUsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEyMDg6XFx0LndyaXRlX2MyMiA9IG90dG9fZW1kaW9fOTMxMF93cml0ZV9jMjIsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEyMDk6XFx0LndyaXRlX2M0NSA9IG90dG9fZW1kaW9fOTMxMF93cml0ZV9jNDUsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEyMTAtfTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTIxMS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTIxMjpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvdHRvX2VtZGlvX2lkc1tdID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMjEzOlxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw4MzgwLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzgzODBfaW5mbyB9LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMjE0OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw4MzkxLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzgzOTBfaW5mbyB9LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMjE1OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw5MzAxLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzkzMDBfaW5mbyB9LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMjE2OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw5MzExLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzkzMTBfaW5mbyB9LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMjE3LVxcdHt9XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEyMTgtfTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTIxOTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvdHRvX2VtZGlvX2lkcyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEyMjAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEyMjE6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgb3R0b19lbWRpb19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEyMjI6XFx0LnByb2JlID0gb3R0b19lbWRpb19wcm9iZSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTIyMy1cXHQuZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMjI0LVxcdFxcdC5uYW1lID0gXFxcIm1kaW8tcnRsOTMwMFxcXCIsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEyMjU6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gb3R0b19lbWRpb19pZHMsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEyMjYtXFx0XFx0LnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEyMjktXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEyMzA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihvdHRvX2VtZGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEyMzEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjAyOjMwLjY3NjY1OTc5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI1MjA2Mjk4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBSVEw5MzAwIE1ESU8gRHJpdmVyIFByb2JlKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgYG1kaW8tcmVhbHRlay1ydGw5MzAwLmNgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBwcm9iZSBmdW5jdGlvbiBhbmQgaG93IGl0IGhhbmRsZXMgdGhlIHJlZ21hcCBhbmQgcGFyZW50IGRldmljZSBzZXR1cC4gSSBrbm93IHRoZSBnZW5lcmFsIGFyY2hpdGVjdHVyZSwgYnV0IEkgbmVlZCBhIHJlZnJlc2hlciBvbiB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gVGltZSB0byBnbyBiYWNrIGFuZCBjaGVjayB0aGUgY29kZS5cblxuT2theSwgbGV0J3MganVtcCBzdHJhaWdodCB0byBsaW5lcyAxMDY1IHRocm91Z2ggMTExNS4gVGhhdCdzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgcHJvYmUgaXMgbGlrZWx5IGxvY2F0ZWQsIHRoZSBjb3JlIGRldmljZSBpbml0aWFsaXphdGlvbi4gSSdsbCBiZSBsb29raW5nIGZvciBob3cgdGhlIHJlZ21hcCBpcyBjcmVhdGVkIGFuZCBpbml0aWFsaXplZCwgaG93IHRoZSBwYXJlbnQgZGV2aWNlIGlzIGFzc2lnbmVkLCBhbmQgYW55IHNwZWNpZmljIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcyBmb3IgdGhpcyBSZWFsdGVrIHN3aXRjaC4gR290dGEgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgaW4gb3JkZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NjQ3LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MDI6MzIuOTI4NzI0OTI0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3MzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMDY1LFxuICBcIkxpbmVDb3VudFwiOiA1NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMDY1OlxcdFxcbjEwNjY6XFx0c3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuMTA2NzpcXHR7XFxuMTA2ODpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbjEwNjk6XFx0XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdjtcXG4xMDcwOlxcdFxcdGludCBlcnI7XFxuMTA3MTpcXHRcXG4xMDcyOlxcdFxcdHByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcXG4xMDczOlxcdFxcdGlmICghcHJpdilcXG4xMDc0OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjEwNzU6XFx0XFxuMTA3NjpcXHRcXHRlcnIgPSBkZXZtX211dGV4X2luaXQoZGV2LCBcXHUwMDI2cHJpdi1cXHUwMDNlbG9jayk7XFxuMTA3NzpcXHRcXHRpZiAoZXJyKVxcbjEwNzg6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4xMDc5OlxcdFxcbjEwODA6XFx0XFx0cHJpdi1cXHUwMDNlaW5mbyA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbjEwODE6XFx0XFx0cHJpdi1cXHUwMDNlcmVnbWFwID0gc3lzY29uX25vZGVfdG9fcmVnbWFwKGRldi1cXHUwMDNlcGFyZW50LVxcdTAwM2VvZl9ub2RlKTtcXG4xMDgyOlxcdFxcdGlmIChJU19FUlIocHJpdi1cXHUwMDNlcmVnbWFwKSlcXG4xMDgzOlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHByaXYtXFx1MDAzZXJlZ21hcCk7XFxuMTA4NDpcXHRcXG4xMDg1OlxcdFxcdGVyciA9IG90dG9fZW1kaW9faW5pdF9wb2xsaW5nKHByaXYpO1xcbjEwODY6XFx0XFx0aWYgKGVycilcXG4xMDg3OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuMTA4ODpcXHRcXG4xMDg5OlxcdFxcdHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHByaXYpO1xcbjEwOTA6XFx0XFxuMTA5MTpcXHRcXHRlcnIgPSBvdHRvX2VtZGlvX21hcF9wb3J0cyhkZXYpO1xcbjEwOTI6XFx0XFx0aWYgKGVycilcXG4xMDkzOlxcdFxcdFxcdHJldHVybiBlcnI7XFxuMTA5NDpcXHRcXG4xMDk1OlxcdFxcdGVyciA9IG90dG9fZW1kaW9fc2V0dXBfdG9wb2xvZ3kocHJpdik7XFxuMTA5NjpcXHRcXHRpZiAoZXJyKVxcbjEwOTc6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4xMDk4OlxcdFxcbjEwOTk6XFx0XFx0aWYgKHByaXYtXFx1MDAzZWluZm8tXFx1MDAzZXNldHVwX2NvbnRyb2xsZXIpIHtcXG4xMTAwOlxcdFxcdFxcdGVyciA9IHByaXYtXFx1MDAzZWluZm8tXFx1MDAzZXNldHVwX2NvbnRyb2xsZXIocHJpdik7XFxuMTEwMTpcXHRcXHRcXHRpZiAoZXJyKVxcbjExMDI6XFx0XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBlcnIsIFxcXCJmYWlsZWQgdG8gc2V0dXAgTURJTyBidXMgY29udHJvbGxlclxcXFxuXFxcIik7XFxuMTEwMzpcXHRcXHR9XFxuMTEwNDpcXHRcXG4xMTA1OlxcdFxcdGZvcl9lYWNoX2NoaWxkX29mX25vZGVfc2NvcGVkKGRldi1cXHUwMDNlb2Zfbm9kZSwgY2hpbGQpIHtcXG4xMTA2OlxcdFxcdFxcdGVyciA9IG90dG9fZW1kaW9fcHJvYmVfb25lKGRldiwgcHJpdiwgY2hpbGQpO1xcbjExMDc6XFx0XFx0XFx0aWYgKGVycilcXG4xMTA4OlxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuMTEwOTpcXHRcXHR9XFxuMTExMDpcXHRcXG4xMTExOlxcdFxcdHJldHVybiAwO1xcbjExMTI6XFx0fVxcbjExMTM6XFx0XFxuMTExNDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzgzODBfaW5mbyA9IHtcXG4xMTE1OlxcdFxcdC5hZGRyX21hcF9iYXNlID0gUlRMODM4MF9TTUlfUE9SVDBfNV9BRERSX0NUUkwsXFxuMTExNjpcXHRcXHQuY21kX2ZhaWwgPSBSVEw4MzgwX1BIWV9DVFJMX0ZBSUwsXFxuMTExNzpcXHRcXHQuY21kX3JlYWQgPSBSVEw4MzgwX1BIWV9DVFJMX1JFQUQsXFxuMTExODpcXHRcXHQuY21kX3dyaXRlID0gUlRMODM4MF9QSFlfQ1RSTF9XUklURSxcXG4xMTE5OlxcdFxcdC5jbWRfcmVncyA9IHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MDI6MzIuOTI4ODI0MTY0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0MjY4ODc1NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgb3R0b19lbWRpb19kcml2ZXJgKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBgb3R0b19lbWRpb19kcml2ZXJgIGhhcyBgLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlO2Ag4oCTIHRoYXQncyB0aGUgZmlyc3QgdGhpbmcgdG8gbm90ZS4gSXQncyB0cmlnZ2VyZWQgYnkgdGhlIGBvdHRvX2VtZGlvX2lkc2Agb2YgdGhlIE9GLiBUaGlzIGRyaXZlciBpcyBmb3IgdGhvc2UgUmVhbHRlayBzd2l0Y2hlczogUlRMODM4eC9SVEw4Mzl4L1JUTDkzMHgvUlRMOTMxeC4gRXNzZW50aWFsbHksIGEgcGxhdGZvcm0gZHJpdmVyIGZvciB0aGVzZSBNSVBTLWJhc2VkIE90dG8gYXJjaGl0ZWN0dXJlIE1BQ0hfUkVBTFRFS19SVEwgU29Dcy5cblxuTm93LCBob2xkIG9uLi4uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGBhbWQ2NGAuIFRoYXQncyBhIHJlZCBmbGFnLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgTUFDSF9SRUFMVEVLX1JUTGAgaXMgc3RyaWN0bHkgTUlQUywgb3IgaWYgaXQncyBwb3RlbnRpYWxseSBjcm9zcy1jb21waWxhYmxlLiBDYW4gdGhpcyBldmVuICpleGlzdCogb24gYW4gYW1kNjQgc3lzdGVtLCBvciBhIHN0YW5kYXJkIFFFTVUgVk0gc2V0dXA/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGVyZSBgTUFDSF9SRUFMVEVLX1JUTGAgaXMgYWN0dWFsbHkgZGVmaW5lZCwgc28gSSBjYW4gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBhc3N1bXB0aW9ucyBiZWluZyBtYWRlLiBUaGlzIGZlZWxzIGxpa2UgYW4gYXJjaGl0ZWN0dXJhbCBtaXNtYXRjaCBJIG5lZWQgdG8gcmVjb25jaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjc2MCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjAyOjM1LjM1NTcxMzkyNloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgyMDQ0NjQzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNQUNIX1JFQUxURUtfUlRMXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbWlwcy9LY29uZmlnPTY4MT1jb25maWcgUkFMSU5LXFxuLS1cXG5hcmNoL21pcHMvS2NvbmZpZy02OTgtXFxuYXJjaC9taXBzL0tjb25maWc6Njk5OmNvbmZpZyBNQUNIX1JFQUxURUtfUlRMXFxuYXJjaC9taXBzL0tjb25maWctNzAwLVxcdGJvb2wgXFxcIlJlYWx0ZWsgUlRMODM4eC9SVEw4Mzl4IGJhc2VkIG1hY2hpbmVzXFxcIlxcbi0tXFxuYXJjaC9taXBzL2Jvb3QvZHRzL3JlYWx0ZWsvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuYXJjaC9taXBzL2Jvb3QvZHRzL3JlYWx0ZWsvTWFrZWZpbGU6MjpkdGItJChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTClcXHQrPSBjaXNjb19zZzIyMC0yNi5kdGJcXG5hcmNoL21pcHMvYm9vdC9kdHMvcmVhbHRlay9NYWtlZmlsZTozOmR0Yi0kKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKVxcdCs9IGNhbWVvLXJ0bDkzMDJjLTJ4LXJ0bDgyMjQtMnhnZS5kdGJcXG4tLVxcbmFyY2gvbWlwcy9nZW5lcmljL01ha2VmaWxlPTE1PW9iai0kKENPTkZJR19WSVJUX0JPQVJEX1JBTkNIVSlcXHRcXHQrPSBib2FyZC1yYW5jaHUub1xcbmFyY2gvbWlwcy9nZW5lcmljL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKVxcdFxcdCs9IGJvYXJkLXJlYWx0ZWsub1xcbi0tXFxuZHJpdmVycy9ncGlvL0tjb25maWc9NjI1PWNvbmZpZyBHUElPX1JFQUxURUtfT1RUT1xcbmRyaXZlcnMvZ3Bpby9LY29uZmlnLTYyNi1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBPdHRvIEdQSU8gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2dwaW8vS2NvbmZpZzo2Mjc6XFx0ZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvZ3Bpby9LY29uZmlnOjYyODpcXHRkZWZhdWx0IE1BQ0hfUkVBTFRFS19SVExcXG5kcml2ZXJzL2dwaW8vS2NvbmZpZy02MjktXFx0c2VsZWN0IEdQSU9fR0VORVJJQ1xcbi0tXFxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWc9MTEwMz1jb25maWcgSTJDX1JUTDkzMDBcXG5kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZy0xMTA0LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFJUTDkzMDAgSTJDIGNvbnRyb2xsZXJcXFwiXFxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWc6MTEwNTpcXHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWctMTEwNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvTWFrZWZpbGU9MTMwPW9iai0kKENPTkZJR19TTDI4Q1BMRF9JTlRDKVxcdFxcdCs9IGlycS1zbDI4Y3BsZC5vXFxuZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlOjEzMTpvYmotJChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTClcXHRcXHQrPSBpcnEtcmVhbHRlay1ydGwub1xcbmRyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZS0xMzItb2JqLSQoQ09ORklHX1dQQ000NTBfQUlDKVxcdFxcdCs9IGlycS13cGNtNDUwLWFpYy5vXFxuLS1cXG5kcml2ZXJzL210ZC9uYW5kL0tjb25maWc9NjQ9Y29uZmlnIE1URF9OQU5EX0VDQ19SRUFMVEVLXFxuLS1cXG5kcml2ZXJzL210ZC9uYW5kL0tjb25maWctNjYtICAgICAgICBkZXBlbmRzIG9uIEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuZHJpdmVycy9tdGQvbmFuZC9LY29uZmlnOjY3OiAgICAgICAgZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvbXRkL25hbmQvS2NvbmZpZy02OC0gICAgICAgIHNlbGVjdCBNVERfTkFORF9FQ0NcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZz0xNzQ9Y29uZmlnIE1ESU9fUkVBTFRFS19SVEw5MzAwXFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTE3NS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBSVEw4M3h4L1JUTDkzeHggTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWc6MTc2OlxcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTc3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvc3BpL0tjb25maWc9OTE2PWNvbmZpZyBTUElfUkVBTFRFS19TTkFORFxcbmRyaXZlcnMvc3BpL0tjb25maWctOTE3LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFNQSS1OQU5EIEZsYXNoIENvbnRyb2xsZXJcXFwiXFxuZHJpdmVycy9zcGkvS2NvbmZpZzo5MTg6XFx0ZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvc3BpL0tjb25maWctOTE5LVxcdHNlbGVjdCBSRUdNQVBcXG4tLVxcbmRyaXZlcnMvc3BpL01ha2VmaWxlPTEzMT1vYmotJChDT05GSUdfU1BJX1JCNFhYKVxcdFxcdFxcdCs9IHNwaS1yYjR4eC5vXFxuZHJpdmVycy9zcGkvTWFrZWZpbGU6MTMyOm9iai0kKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKVxcdFxcdCs9IHNwaS1yZWFsdGVrLXJ0bC5vXFxuZHJpdmVycy9zcGkvTWFrZWZpbGUtMTMzLW9iai0kKENPTkZJR19TUElfUkVBTFRFS19TTkFORClcXHRcXHQrPSBzcGktcmVhbHRlay1ydGwtc25hbmQub1xcbi0tXFxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnPTExMTM9Y29uZmlnIFJFQUxURUtfT1RUT19XRFRcXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTExNC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBPdHRvIE1JUFMgd2F0Y2hkb2cgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc6MTExNTpcXHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnLTExMTYtXFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuLS1cXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTExOC1cXHRzZWxlY3QgUkVHTUFQX01NSU9cXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc6MTExOTpcXHRkZWZhdWx0IE1BQ0hfUkVBTFRFS19SVExcXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTEyMC1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjAyOjM3LjE3NjE2Njk1OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MTUwMDM5MDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoYWJpbGl0eSBBbmFseXNpczogV29ydGhGdXp6aW5nPWZhbHNlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcsIGFuZCB0aGUgcHJpbWFyeSBnYXRlIGlzIHJlYWNoYWJpbGl0eS4gSSdtIHRhcmdldGluZyB0aGUgYW1kNjQgYXJjaGl0ZWN0dXJlLCBzbyBJIG5lZWQgdG8gYXNzZXNzIGlmIHRoZSBtb2RpZmllZCBjb2RlIGlzIGFjdHVhbGx5ICpleGVjdXRhYmxlKiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cblxuRmlyc3QsIEkgaWRlbnRpZmllZCBzb21lIG5lZ2F0aXZlIGNyaXRlcmlhLiBTcGVjaWZpY2FsbHksIEknbSBsb29raW5nIGZvciBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIOKAkyBjb2RlIHRpZWQgdG8gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGVudmlyb25tZW50cyBvciBhcmNoaXRlY3R1cmUtZXhjbHVzaXZlIGNvZGUuXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIHRoaXMgYG1kaW8tcmVhbHRlay1ydGw5MzAwYCBkcml2ZXIgaXMgYWN0dWFsbHkgKnJlYWNoYWJsZSouIE15IGluaXRpYWwgdGhvdWdodCBpcyBpdCdzIGFuIE1ESU8gY29udHJvbGxlciBkcml2ZXIgZm9yIFJlYWx0ZWsgUlRMODM4eC85M3h4IE1JUFMgU29Dcywgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgcmVkIGZsYWcuXG5cbkkgZG92ZSBpbnRvIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBpdHNlbGYuIEl04oCZcyBhIHBsYXRmb3JtIGRyaXZlciwgc28gaXTigJlzIGxpbmtlZCB0byBzcGVjaWZpYyBoYXJkd2FyZS4gQ3JpdGljYWxseSwgYHN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlYCBtZWFucyBJIGNhbid0IGV2ZW4gbWFudWFsbHkgZm9yY2UgaXQgdG8gYmluZC4gSXQgcmVsaWVzIG9uIGEgc3lzY29uIG5vZGUsIG9idGFpbmVkIHZpYSBgc3lzY29uX25vZGVfdG9fcmVnbWFwYCwgbWVhbmluZyBpdHMgdGllZCB0byBzcGVjaWZpYyBoYXJkd2FyZS4gQW5kIGl0J3MgZm9yIFJlYWx0ZWsncyBNSVBTIFNvQyBhcmNoaXRlY3R1cmUuIFRoZSB0YXJnZXQgaXMgYW1kNjQuIFRoZXJlZm9yZSwgaXQncyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIEl0J3MgYW4gYXJjaC1leGNsdXNpdmUgTUlQUyBTb0MgZHJpdmVyIHRoYXQgY2FuJ3QgYmUgdXNlZCBvbiBhbWQ2NCBpbiBhbnkgc3RhbmRhcmQgZW52aXJvbm1lbnQuXG5cbkxldCdzIGRvdWJsZS1jaGVjayB0aGUgdHJpYWdlIGd1aWRlbGluZXMuIFRoZXkncmUgY3J5c3RhbCBjbGVhcjogXCJJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGXigKYgaXQgTVVTVCBOT1QgYmUgZnV6emVkLlwiIFRoZSBndWlkZWxpbmVzIHNwZWNpZmljYWxseSBtZW50aW9uIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzIGFuZCBhcmNoaXRlY3R1cmUtZXhjbHVzaXZlIGNvZGUgcGF0aHMgYXMgZXhhbXBsZXMuIFRoYXQgaXMgZXhhY3RseSB3aGF0IEkgaGF2ZS5cblxuU28sIHRoZSBmaWxlcyBhZmZlY3RlZCBhcmU6IGRvY3VtZW50YXRpb24gYW5kIHRoZSBkcml2ZXIuIFRoZSBkcml2ZXIsIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCwgaXMgdGhlIGNyaXRpY2FsIGVsZW1lbnQuIEl0J3MgZm9yIGEgc3BlY2lmaWMgUmVhbHRlayBNSVBTIFNvQyBhbmQgaXMgbm90IHJlYWNoYWJsZSBvbiBhbWQ2NC5cblxuQmFzZWQgb24gdGhpcywgSSdtIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoZSBkcml2ZXIgdGFyZ2V0cyBhIHNwZWNpZmljIFJlYWx0ZWsgTUlQUyBTb0MuIEl0IGNhbm5vdCBleGVjdXRlIGluIGFueSBzdGFuZGFyZCBhbWQ2NCBlbnZpcm9ubWVudC4gVGhlIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2AgYXJlIGlycmVsZXZhbnQgaGVyZS4gVGltZSB0byBzdWJtaXQgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg0NTMsIk91dHB1dFRva2VucyI6MTY2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjAyOjQzLjMyNjIwODQ0MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgRGV2aWNldHJlZSBiaW5kaW5ncyBkb2N1bWVudGF0aW9uIGFuZCBhZGRzIE1ESU8gYnVzIGNsb2NrIGZyZXF1ZW5jeSBjb25maWd1cmF0aW9uIHN1cHBvcnQgdG8gdGhlIFJlYWx0ZWsgUlRMODM4eC9SVEw4Mzl4L1JUTDkzMHgvUlRMOTMxeCBNRElPIGNvbnRyb2xsZXIgZHJpdmVyIChkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMpLiBUaGlzIGRyaXZlciBpcyBkZXNpZ25lZCBzcGVjaWZpY2FsbHkgZm9yIFJlYWx0ZWsgT3R0byBNSVBTIHN3aXRjaCBTb0NzIChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTCksIHJlcXVpcmVzIE9GIHN5c2NvbiBwYXJlbnQgbm9kZXMsIHN1cHByZXNzZXMgbWFudWFsIGRyaXZlciBiaW5kaW5nIHZpYSBzeXNmcywgYW5kIGNhbm5vdCBiZSBwcm9iZWQgb3IgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgUUVNVS9HQ0UgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBEZXZpY2V0cmVlIGJpbmRpbmdzIGRvY3VtZW50YXRpb24gYW5kIGFkZHMgTURJTyBidXMgY2xvY2sgZnJlcXVlbmN5IGNvbmZpZ3VyYXRpb24gc3VwcG9ydCB0byB0aGUgUmVhbHRlayBSVEw4Mzh4L1JUTDgzOXgvUlRMOTMweC9SVEw5MzF4IE1ESU8gY29udHJvbGxlciBkcml2ZXIgKGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYykuIFRoaXMgZHJpdmVyIGlzIGRlc2lnbmVkIHNwZWNpZmljYWxseSBmb3IgUmVhbHRlayBPdHRvIE1JUFMgc3dpdGNoIFNvQ3MgKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKSwgcmVxdWlyZXMgT0Ygc3lzY29uIHBhcmVudCBub2Rlcywgc3VwcHJlc3NlcyBtYW51YWwgZHJpdmVyIGJpbmRpbmcgdmlhIHN5c2ZzLCBhbmQgY2Fubm90IGJlIHByb2JlZCBvciBleGVjdXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCBRRU1VL0dDRSB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTowMjo0My4zMjYyNDE0NDFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtwk87[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-06 20:23:28 +0000 UTC FinishedAt: 2026-09-06 21:02:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBEZXZpY2V0cmVlIGJpbmRpbmdzIGRvY3VtZW50YXRpb24gYW5kIGFkZHMgTURJTyBidXMgY2xvY2sgZnJlcXVlbmN5IGNvbmZpZ3VyYXRpb24gc3VwcG9ydCB0byB0aGUgUmVhbHRlayBSVEw4Mzh4L1JUTDgzOXgvUlRMOTMweC9SVEw5MzF4IE1ESU8gY29udHJvbGxlciBkcml2ZXIgKGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYykuIFRoaXMgZHJpdmVyIGlzIGRlc2lnbmVkIHNwZWNpZmljYWxseSBmb3IgUmVhbHRlayBPdHRvIE1JUFMgc3dpdGNoIFNvQ3MgKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKSwgcmVxdWlyZXMgT0Ygc3lzY29uIHBhcmVudCBub2Rlcywgc3VwcHJlc3NlcyBtYW51YWwgZHJpdmVyIGJpbmRpbmcgdmlhIHN5c2ZzLCBhbmQgY2Fubm90IGJlIHByb2JlZCBvciBleGVjdXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCBRRU1VL0dDRSB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjAyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTg3ZDAxZjJjOGY1MTcxYWM1NDBmY2RmMWU0MjVkNGE0ODllZGVkNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMjE6MDI6MjIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sXG5pbmRleCA2N2UwYjIzYTg0NzBlLi44ODUwMmQwMTdlZWRiIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxcbkBAIC01Niw2ICYjNDM7NTYsOSBAQCBwYXR0ZXJuUHJvcGVydGllczpcbiAgICAgICByZWc6XG4gICAgICAgICBtYXhJdGVtczogMVxuIFxuJiM0MzsgICAgICBjbG9jay1mcmVxdWVuY3k6XG4mIzQzOyAgICAgICAgZGVmYXVsdDogMjUwMDAwMFxuJiM0MztcbiAgICAgcmVxdWlyZWQ6XG4gICAgICAgLSByZWdcbiBcbkBAIC03MSw2ICYjNDM7NzQsNDMgQEAgcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gcmVnXG4gXG4mIzQzO2FsbE9mOlxuJiM0MzsgIC0gaWY6XG4mIzQzOyAgICAgIHByb3BlcnRpZXM6XG4mIzQzOyAgICAgICAgY29tcGF0aWJsZTpcbiYjNDM7ICAgICAgICAgIGNvbnRhaW5zOlxuJiM0MzsgICAgICAgICAgICBlbnVtOlxuJiM0MzsgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw4MzgwLW1kaW9cbiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM4MS1tZGlvXG4mIzQzOyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzODItbWRpb1xuJiM0MzsgICAgdGhlbjpcbiYjNDM7ICAgICAgcGF0dGVyblByb3BlcnRpZXM6XG4mIzQzOyAgICAgICAgJiMzOTtebWRpby1idXNAWzAtM10kJiMzOTs6XG4mIzQzOyAgICAgICAgICBwcm9wZXJ0aWVzOlxuJiM0MzsgICAgICAgICAgICBjbG9jay1mcmVxdWVuY3k6XG4mIzQzOyAgICAgICAgICAgICAgZW51bTogWzI1MDAwMDAsIDEwMDAwMDAwXVxuJiM0MzsgIC0gaWY6XG4mIzQzOyAgICAgIHByb3BlcnRpZXM6XG4mIzQzOyAgICAgICAgY29tcGF0aWJsZTpcbiYjNDM7ICAgICAgICAgIGNvbnRhaW5zOlxuJiM0MzsgICAgICAgICAgICBlbnVtOlxuJiM0MzsgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw4MzkxLW1kaW9cbiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM5Mi1tZGlvXG4mIzQzOyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzOTMtbWRpb1xuJiM0MzsgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzAxLW1kaW9cbiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMmItbWRpb1xuJiM0MzsgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzAyYy1tZGlvXG4mIzQzOyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDkzMDMtbWRpb1xuJiM0MzsgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzExLW1kaW9cbiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMxMi1tZGlvXG4mIzQzOyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDkzMTMtbWRpb1xuJiM0MzsgICAgdGhlbjpcbiYjNDM7ICAgICAgcGF0dGVyblByb3BlcnRpZXM6XG4mIzQzOyAgICAgICAgJiMzOTtebWRpby1idXNAWzAtM10kJiMzOTs6XG4mIzQzOyAgICAgICAgICBwcm9wZXJ0aWVzOlxuJiM0MzsgICAgICAgICAgICBjbG9jay1mcmVxdWVuY3k6XG4mIzQzOyAgICAgICAgICAgICAgZW51bTogWzEyNTAwMDAsIDI1MDAwMDAsIDUwMDAwMDBdXG4mIzQzO1xuIHVuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbiBcbiBleGFtcGxlczpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcbmluZGV4IDExZDA3OGVmOTQxY2QuLjhlZGIwYmEwYmNkZDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY1xuQEAgLTEzMCw2ICYjNDM7MTMwLDcgQEBcbiAjZGVmaW5lIFJUTDgzODBfTlVNX1BBR0VTXHRcdFx0NDA5NlxuICNkZWZpbmUgUlRMODM4MF9OVU1fUE9SVFNcdFx0XHQyOFxuICNkZWZpbmUgUlRMODM4MF9TTUlfR0xCX0NUUkxcdFx0XHQweGExMDBcbiYjNDM7I2RlZmluZSAgIFJUTDgzODBfU01JX0ZSRVFfU0VMXHRcdFx0QklUKDEpXG4gI2RlZmluZSAgIFJUTDgzODBfU01JX1BIWV9QQVRDSF9ET05FXHRcdEJJVCgxNSlcbiAjZGVmaW5lIFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8wXHRcdDB4YTFiOFxuICNkZWZpbmUgUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzFcdFx0MHhhMWJjXG5AQCAtMTY5LDEyICYjNDM7MTcwLDE1IEBAXG4gI2RlZmluZSBSVEw4MzkwX1BIWVJFR19QT1JUX0NUUkxfTE9XXHRcdDB4MDNlNFxuICNkZWZpbmUgUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0hJR0hcdFx0MHgwM2U4XG4gI2RlZmluZSBSVEw4MzkwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTFx0XHQweDAzZmNcbiYjNDM7I2RlZmluZSBSVEw4MzkwX1NNSV9HTEJfQ1RSTFx0XHRcdDB4MDNmOFxuJiM0MzsjZGVmaW5lICAgUlRMODM5MF9TTUlfRlJFUV9TRUxcdFx0XHRHRU5NQVNLKDYsIDUpXG4gXG4gI2RlZmluZSBSVEw5MzAwX05VTV9CVVNFU1x0XHRcdDRcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX1BBR0VTXHRcdFx0NDA5NlxuICNkZWZpbmUgUlRMOTMwMF9OVU1fUE9SVFNcdFx0XHQyOFxuICNkZWZpbmUgUlRMOTMwMF9TTUlfR0xCX0NUUkxcdFx0XHQweGNhMDBcbiAjZGVmaW5lICAgUlRMOTMwMF9HTEJfQ1RSTF9JTlRGX1NFTChpbnRmKVx0QklUKDE2ICYjNDM7IChpbnRmKSlcbiYjNDM7I2RlZmluZSAgIFJUTDkzMDBfU01JX0ZSRVFfU0VMKGludGYpXHRcdEdFTk1BU0soKGludGYpICogMiAmIzQzOyA5LCAoaW50ZikgKiAyICYjNDM7IDgpXG4gI2RlZmluZSBSVEw5MzAwX1NNSV9QT1JUMF8xNV9QT0xMSU5HX1NFTFx0MHhjYTA4XG4gI2RlZmluZSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMFx0XHQweGNiNzBcbiAjZGVmaW5lIFJUTDkzMDBfU01JX0FDQ0VTU19QSFlfQ1RSTF8xXHRcdDB4Y2I3NFxuQEAgLTE5Niw2ICYjNDM7MjAwLDggQEBcbiAjZGVmaW5lIFJUTDkzMTBfTlVNX0JVU0VTXHRcdFx0NFxuICNkZWZpbmUgUlRMOTMxMF9OVU1fUEFHRVNcdFx0XHQ4MTkyXG4gI2RlZmluZSBSVEw5MzEwX05VTV9QT1JUU1x0XHRcdDU2XG4mIzQzOyNkZWZpbmUgUlRMOTMxMF9TTUlfR0xCX0NUUkwwXHRcdFx0MHgwY2MwXG4mIzQzOyNkZWZpbmUgICBSVEw5MzEwX1NNSV9GUkVRX1NFTChpbnRmKVx0XHRHRU5NQVNLKChpbnRmKSAqIDIgJiM0MzsgNSwgKGludGYpICogMiAmIzQzOyA0KVxuICNkZWZpbmUgUlRMOTMxMF9TTUlfR0xCX0NUUkwxXHRcdFx0MHgwY2JjXG4gI2RlZmluZSAgIFJUTDkzMTBfU01JX0dMQl9GTVRfU0VMX0M0NShpbnRmKVx0QklUKChpbnRmKSAqIDIgJiM0MzsgMSlcbiAjZGVmaW5lIFJUTDkzMTBfU01JX0lORFJUX0FDQ0VTU19DVFJMXzBcdFx0MHgwYzAwXG5AQCAtMjUxLDYgJiM0MzsyNTcsNyBAQCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2IHtcbiBcdHN0cnVjdCByZWdtYXAgKnJlZ21hcDtcbiBcdHN0cnVjdCBtdXRleCBsb2NrOyAvKiBwcm90ZWN0IEhXIGFjY2VzcyAqL1xuIFx0REVDTEFSRV9CSVRNQVAodmFsaWRfcG9ydHMsIE1BWF9QT1JUUyk7XG4mIzQzO1x0dTMyIGdsb2JhbF9mcmVxO1xuIFx0dTE2IHBhZ2VbTUFYX1BPUlRTXTtcbiBcdHU4IHNtaV9idXNbTUFYX1BPUlRTXTtcbiBcdHU4IHNtaV9hZGRyW01BWF9QT1JUU107XG5AQCAtMjY5LDYgJiM0MzsyNzYsNyBAQCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIHtcbiBcdHU4IG51bV9wb3J0cztcbiBcdHUxNiBudW1fcGFnZXM7XG4gXHR1MzIgcG9sbF9jdHJsO1xuJiM0MztcdGludCAoKnNldF9idXNfZnJlcXVlbmN5KShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSk7XG4gXHRpbnQgKCpzZXR1cF9jb250cm9sbGVyKShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KTtcbiBcdGludCAoKnJlYWRfYzIyKShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSk7XG4gXHRpbnQgKCpyZWFkX2M0NSkoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSk7XG5AQCAtNzQwLDYgJiM0Mzs3NDgsMTcgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3NldHVwX3RvcG9sb2d5KHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGZyZXEgIT0gMjUwMDAwMCBcdTAwMjZcdTAwMjYgZnJlcSAhPSAxMDAwMDAwMClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmVnbWFwX2Fzc2lnbl9iaXRzKHByaXYtXHUwMDNlcmVnbWFwLCBSVEw4MzgwX1NNSV9HTEJfQ1RSTCxcbiYjNDM7XHRcdFx0XHQgIFJUTDgzODBfU01JX0ZSRVFfU0VMLCBmcmVxID09IDEwMDAwMDAwKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4ge1xuIFx0LypcbkBAIC03NDksNiAmIzQzOzc2OCw0MCBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gcmVnbWFwX3NldF9iaXRzKHByaXYtXHUwMDNlcmVnbWFwLCBSVEw4MzgwX1NNSV9HTEJfQ1RSTCwgUlRMODM4MF9TTUlfUEhZX1BBVENIX0RPTkUpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuJiM0MztcdHUzMiB2YWw7XG4mIzQzO1x0aW50IGVycjtcbiYjNDM7XG4mIzQzO1x0aWYgKGZyZXEgIT0gMTI1MDAwMCBcdTAwMjZcdTAwMjYgZnJlcSAhPSAyNTAwMDAwIFx1MDAyNlx1MDAyNiBmcmVxICE9IDUwMDAwMDApXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRpZiAocHJpdi1cdTAwM2VnbG9iYWxfZnJlcSlcbiYjNDM7XHRcdHJldHVybiBmcmVxID09IHByaXYtXHUwMDNlZ2xvYmFsX2ZyZXEgPyAwIDogLUVJTlZBTDtcbiYjNDM7XG4mIzQzO1x0dmFsID0gRklFTERfUFJFUChSVEw4MzkwX1NNSV9GUkVRX1NFTCwgZnJlcSAvIDI1MDAwMDApO1xuJiM0MztcdGVyciA9IHJlZ21hcF91cGRhdGVfYml0cyhwcml2LVx1MDAzZXJlZ21hcCwgUlRMODM5MF9TTUlfR0xCX0NUUkwsIFJUTDgzOTBfU01JX0ZSRVFfU0VMLCB2YWwpO1xuJiM0MztcdGlmICghZXJyKVxuJiM0MztcdFx0cHJpdi1cdTAwM2VnbG9iYWxfZnJlcSA9IGZyZXE7XG4mIzQzO1xuJiM0MztcdHJldHVybiBlcnI7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbiYjNDM7XHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gYnVzLVx1MDAzZXByaXY7XG4mIzQzO1x0dTMyIG1hc2ssIHZhbDtcbiYjNDM7XG4mIzQzO1x0aWYgKGZyZXEgIT0gMTI1MDAwMCBcdTAwMjZcdTAwMjYgZnJlcSAhPSAyNTAwMDAwIFx1MDAyNlx1MDAyNiBmcmVxICE9IDUwMDAwMDApXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4mIzQzO1x0bWFzayA9IFJUTDkzMDBfU01JX0ZSRVFfU0VMKGNoYW4tXHUwMDNlbWRpb19idXMpO1xuJiM0MztcdHZhbCA9IGZpZWxkX3ByZXAobWFzaywgZnJlcSAvIDI1MDAwMDApO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtXHUwMDNlcmVnbWFwLCBSVEw5MzAwX1NNSV9HTEJfQ1RSTCwgbWFzaywgdmFsKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4ge1xuIFx0dTMyIGdsYl9jdHJsX21hc2sgPSAwLCBnbGJfY3RybF92YWwgPSAwO1xuQEAgLTc2OSw2ICYjNDM7ODIyLDIxIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuJiM0MztcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBidXMtXHUwMDNlcHJpdjtcbiYjNDM7XHR1MzIgbWFzaywgdmFsO1xuJiM0MztcbiYjNDM7XHRpZiAoZnJlcSAhPSAxMjUwMDAwIFx1MDAyNlx1MDAyNiBmcmVxICE9IDI1MDAwMDAgXHUwMDI2XHUwMDI2IGZyZXEgIT0gNTAwMDAwMClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRtYXNrID0gUlRMOTMxMF9TTUlfRlJFUV9TRUwoY2hhbi1cdTAwM2VtZGlvX2J1cyk7XG4mIzQzO1x0dmFsID0gZmllbGRfcHJlcChtYXNrLCBmcmVxIC8gMjUwMDAwMCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZWdtYXBfdXBkYXRlX2JpdHMocHJpdi1cdTAwM2VyZWdtYXAsIFJUTDkzMTBfU01JX0dMQl9DVFJMMCwgbWFzaywgdmFsKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4ge1xuIFx0aW50IGksIGVycjtcbkBAIC04MzEsMTQgJiM0Mzs4OTksMTQgQEAgc3RhdGljIHZvaWQgb3R0b19lbWRpb19ub3RpZnlfcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIH1cbiBcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdixcbi1cdFx0XHRcdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqbm9kZSlcbiYjNDM7XHRcdFx0XHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXG4ge1xuIFx0c3RydWN0IG90dG9fZW1kaW9fY2hhbiAqY2hhbjtcbiBcdHN0cnVjdCBtaWlfYnVzICpidXM7XG4tXHR1MzIgbWRpb19idXM7XG4mIzQzO1x0dTMyIG1kaW9fYnVzLCBmcmVxO1xuIFx0aW50IGVycjtcbiBcbi1cdGVyciA9IGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcJiMzNDtyZWdcJiMzNDssIFx1MDAyNm1kaW9fYnVzKTtcbiYjNDM7XHRlcnIgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcJiMzNDtyZWdcJiMzNDssIFx1MDAyNm1kaW9fYnVzKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCBcJiMzNDt1bmRlZmluZWQgc21pIGJ1cyBudW1iZXJcXG5cJiMzNDspO1xuIFxuQEAgLTg2NSw3ICYjNDM7OTMzLDE0IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2XG4gXG4gXHRzbnByaW50ZihidXMtXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXCYjMzQ7JXMtJWRcJiMzNDssIGRldl9uYW1lKGRldiksIG1kaW9fYnVzKTtcbiBcbi1cdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgdG9fb2Zfbm9kZShub2RlKSk7XG4mIzQzO1x0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsIFwmIzM0O2Nsb2NrLWZyZXF1ZW5jeVwmIzM0OywgXHUwMDI2ZnJlcSkpXG4mIzQzO1x0XHRmcmVxID0gMjUwMDAwMDtcbiYjNDM7XHRlcnIgPSBwcml2LVx1MDAzZWluZm8tXHUwMDNlc2V0X2J1c19mcmVxdWVuY3koYnVzLCBmcmVxKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBlcnIsIFwmIzM0O2Nhbm5vdCBzZXQgZnJlcXVlbmN5ICV1IGZvciBNRElPIGJ1cyAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgICAgIGZyZXEsIG1kaW9fYnVzKTtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCBcJiMzNDtjYW5ub3QgcmVnaXN0ZXIgTURJTyBidXNcXG5cJiMzNDspO1xuIFxuQEAgLTEwMjcsNyAmIzQzOzExMDIsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXCYjMzQ7ZmFpbGVkIHRvIHNldHVwIE1ESU8gYnVzIGNvbnRyb2xsZXJcXG5cJiMzNDspO1xuIFx0fVxuIFxuLVx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkX25vZGVfc2NvcGVkKGRldiwgY2hpbGQpIHtcbiYjNDM7XHRmb3JfZWFjaF9jaGlsZF9vZl9ub2RlX3Njb3BlZChkZXYtXHUwMDNlb2Zfbm9kZSwgY2hpbGQpIHtcbiBcdFx0ZXJyID0gb3R0b19lbWRpb19wcm9iZV9vbmUoZGV2LCBwcml2LCBjaGlsZCk7XG4gXHRcdGlmIChlcnIpXG4gXHRcdFx0cmV0dXJuIGVycjtcbkBAIC0xMDUxLDYgJiM0MzsxMTI2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzgwX2luZm8gPSB7XG4gXHQubnVtX3BhZ2VzID0gUlRMODM4MF9OVU1fUEFHRVMsXG4gXHQubnVtX3BvcnRzID0gUlRMODM4MF9OVU1fUE9SVFMsXG4gXHQucG9sbF9jdHJsID0gUlRMODM4MF9TTUlfUE9MTF9DVFJMLFxuJiM0MztcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fODM4MF9zZXRfYnVzX2ZyZXF1ZW5jeSxcbiBcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIsXG4gXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIsXG4gXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jNDUsXG5AQCAtMTA3NSw2ICYjNDM7MTE1MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM5MF9pbmZvID0ge1xuIFx0Lm51bV9wYWdlcyA9IFJUTDgzOTBfTlVNX1BBR0VTLFxuIFx0Lm51bV9wb3J0cyA9IFJUTDgzOTBfTlVNX1BPUlRTLFxuIFx0LnBvbGxfY3RybCA9IFJUTDgzOTBfU01JX1BPUlRfUE9MTElOR19DVFJMLFxuJiM0MztcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fODM5MF9zZXRfYnVzX2ZyZXF1ZW5jeSxcbiBcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2MyMixcbiBcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2M0NSxcbiBcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzIyLFxuQEAgLTEwOTcsNiAmIzQzOzExNzQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMDBfaW5mbyA9IHtcbiBcdC5udW1fcG9ydHMgPSBSVEw5MzAwX05VTV9QT1JUUyxcbiBcdC5udW1fcGFnZXMgPSBSVEw5MzAwX05VTV9QQUdFUyxcbiBcdC5wb2xsX2N0cmwgPSBSVEw5MzAwX1NNSV9QT0xMX0NUUkwsXG4mIzQzO1x0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb185MzAwX3NldF9idXNfZnJlcXVlbmN5LFxuIFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcixcbiBcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2MyMixcbiBcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2M0NSxcbkBAIC0xMTIzLDYgJiM0MzsxMjAxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzEwX2luZm8gPSB7XG4gXHQubnVtX3BhZ2VzID0gUlRMOTMxMF9OVU1fUEFHRVMsXG4gXHQubnVtX3BvcnRzID0gUlRMOTMxMF9OVU1fUE9SVFMsXG4gXHQucG9sbF9jdHJsID0gUlRMOTMxMF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsXG4mIzQzO1x0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb185MzEwX3NldF9idXNfZnJlcXVlbmN5LFxuIFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMTBfc2V0dXBfY29udHJvbGxlcixcbiBcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMixcbiBcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2M0NSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTowMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIERldmljZXRyZWUgYmluZGluZ3MgZG9jdW1lbnRhdGlvbiBhbmQgYWRkcyBNRElPIGJ1cyBjbG9jayBmcmVxdWVuY3kgY29uZmlndXJhdGlvbiBzdXBwb3J0IHRvIHRoZSBSZWFsdGVrIFJUTDgzOHgvUlRMODM5eC9SVEw5MzB4L1JUTDkzMXggTURJTyBjb250cm9sbGVyIGRyaXZlciAoZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jKS4gVGhpcyBkcml2ZXIgaXMgZGVzaWduZWQgc3BlY2lmaWNhbGx5IGZvciBSZWFsdGVrIE90dG8gTUlQUyBzd2l0Y2ggU29DcyAoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpLCByZXF1aXJlcyBPRiBzeXNjb24gcGFyZW50IG5vZGVzLCBzdXBwcmVzc2VzIG1hbnVhbCBkcml2ZXIgYmluZGluZyB2aWEgc3lzZnMsIGFuZCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIGFtZDY0IFFFTVUvR0NFIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhODdkMDFmMmM4ZjUxNzFhYzU0MGZjZGYxZTQyNWQ0YTQ4OWVkZWQ1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBTZXAgNiAyMTowMjoyMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbAppbmRleCA2N2UwYjIzYTg0NzBlLi44ODUwMmQwMTdlZWRiIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sCkBAIC01Niw2ICYjNDM7NTYsOSBAQCBwYXR0ZXJuUHJvcGVydGllczoKICAgICAgIHJlZzoKICAgICAgICAgbWF4SXRlbXM6IDEKIAomIzQzOyAgICAgIGNsb2NrLWZyZXF1ZW5jeToKJiM0MzsgICAgICAgIGRlZmF1bHQ6IDI1MDAwMDAKJiM0MzsKICAgICByZXF1aXJlZDoKICAgICAgIC0gcmVnCiAKQEAgLTcxLDYgJiM0Mzs3NCw0MyBAQCByZXF1aXJlZDoKICAgLSBjb21wYXRpYmxlCiAgIC0gcmVnCiAKJiM0MzthbGxPZjoKJiM0MzsgIC0gaWY6CiYjNDM7ICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgIGNvbXBhdGlibGU6CiYjNDM7ICAgICAgICAgIGNvbnRhaW5zOgomIzQzOyAgICAgICAgICAgIGVudW06CiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM4MC1tZGlvCiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM4MS1tZGlvCiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM4Mi1tZGlvCiYjNDM7ICAgIHRoZW46CiYjNDM7ICAgICAgcGF0dGVyblByb3BlcnRpZXM6CiYjNDM7ICAgICAgICAmIzM5O15tZGlvLWJ1c0BbMC0zXSQmIzM5OzoKJiM0MzsgICAgICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgICAgICBjbG9jay1mcmVxdWVuY3k6CiYjNDM7ICAgICAgICAgICAgICBlbnVtOiBbMjUwMDAwMCwgMTAwMDAwMDBdCiYjNDM7ICAtIGlmOgomIzQzOyAgICAgIHByb3BlcnRpZXM6CiYjNDM7ICAgICAgICBjb21wYXRpYmxlOgomIzQzOyAgICAgICAgICBjb250YWluczoKJiM0MzsgICAgICAgICAgICBlbnVtOgomIzQzOyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzOTEtbWRpbwomIzQzOyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzOTItbWRpbwomIzQzOyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzOTMtbWRpbwomIzQzOyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDkzMDEtbWRpbwomIzQzOyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDkzMDJiLW1kaW8KJiM0MzsgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzAyYy1tZGlvCiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMy1tZGlvCiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMxMS1tZGlvCiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMxMi1tZGlvCiYjNDM7ICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMxMy1tZGlvCiYjNDM7ICAgIHRoZW46CiYjNDM7ICAgICAgcGF0dGVyblByb3BlcnRpZXM6CiYjNDM7ICAgICAgICAmIzM5O15tZGlvLWJ1c0BbMC0zXSQmIzM5OzoKJiM0MzsgICAgICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgICAgICBjbG9jay1mcmVxdWVuY3k6CiYjNDM7ICAgICAgICAgICAgICBlbnVtOiBbMTI1MDAwMCwgMjUwMDAwMCwgNTAwMDAwMF0KJiM0MzsKIHVuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2UKIAogZXhhbXBsZXM6CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMKaW5kZXggMTFkMDc4ZWY5NDFjZC4uOGVkYjBiYTBiY2RkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYwpAQCAtMTMwLDYgJiM0MzsxMzAsNyBAQAogI2RlZmluZSBSVEw4MzgwX05VTV9QQUdFUwkJCTQwOTYKICNkZWZpbmUgUlRMODM4MF9OVU1fUE9SVFMJCQkyOAogI2RlZmluZSBSVEw4MzgwX1NNSV9HTEJfQ1RSTAkJCTB4YTEwMAomIzQzOyNkZWZpbmUgICBSVEw4MzgwX1NNSV9GUkVRX1NFTAkJCUJJVCgxKQogI2RlZmluZSAgIFJUTDgzODBfU01JX1BIWV9QQVRDSF9ET05FCQlCSVQoMTUpCiAjZGVmaW5lIFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8wCQkweGExYjgKICNkZWZpbmUgUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzEJCTB4YTFiYwpAQCAtMTY5LDEyICYjNDM7MTcwLDE1IEBACiAjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9MT1cJCTB4MDNlNAogI2RlZmluZSBSVEw4MzkwX1BIWVJFR19QT1JUX0NUUkxfSElHSAkJMHgwM2U4CiAjZGVmaW5lIFJUTDgzOTBfU01JX1BPUlRfUE9MTElOR19DVFJMCQkweDAzZmMKJiM0MzsjZGVmaW5lIFJUTDgzOTBfU01JX0dMQl9DVFJMCQkJMHgwM2Y4CiYjNDM7I2RlZmluZSAgIFJUTDgzOTBfU01JX0ZSRVFfU0VMCQkJR0VOTUFTSyg2LCA1KQogCiAjZGVmaW5lIFJUTDkzMDBfTlVNX0JVU0VTCQkJNAogI2RlZmluZSBSVEw5MzAwX05VTV9QQUdFUwkJCTQwOTYKICNkZWZpbmUgUlRMOTMwMF9OVU1fUE9SVFMJCQkyOAogI2RlZmluZSBSVEw5MzAwX1NNSV9HTEJfQ1RSTAkJCTB4Y2EwMAogI2RlZmluZSAgIFJUTDkzMDBfR0xCX0NUUkxfSU5URl9TRUwoaW50ZikJQklUKDE2ICYjNDM7IChpbnRmKSkKJiM0MzsjZGVmaW5lICAgUlRMOTMwMF9TTUlfRlJFUV9TRUwoaW50ZikJCUdFTk1BU0soKGludGYpICogMiAmIzQzOyA5LCAoaW50ZikgKiAyICYjNDM7IDgpCiAjZGVmaW5lIFJUTDkzMDBfU01JX1BPUlQwXzE1X1BPTExJTkdfU0VMCTB4Y2EwOAogI2RlZmluZSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMAkJMHhjYjcwCiAjZGVmaW5lIFJUTDkzMDBfU01JX0FDQ0VTU19QSFlfQ1RSTF8xCQkweGNiNzQKQEAgLTE5Niw2ICYjNDM7MjAwLDggQEAKICNkZWZpbmUgUlRMOTMxMF9OVU1fQlVTRVMJCQk0CiAjZGVmaW5lIFJUTDkzMTBfTlVNX1BBR0VTCQkJODE5MgogI2RlZmluZSBSVEw5MzEwX05VTV9QT1JUUwkJCTU2CiYjNDM7I2RlZmluZSBSVEw5MzEwX1NNSV9HTEJfQ1RSTDAJCQkweDBjYzAKJiM0MzsjZGVmaW5lICAgUlRMOTMxMF9TTUlfRlJFUV9TRUwoaW50ZikJCUdFTk1BU0soKGludGYpICogMiAmIzQzOyA1LCAoaW50ZikgKiAyICYjNDM7IDQpCiAjZGVmaW5lIFJUTDkzMTBfU01JX0dMQl9DVFJMMQkJCTB4MGNiYwogI2RlZmluZSAgIFJUTDkzMTBfU01JX0dMQl9GTVRfU0VMX0M0NShpbnRmKQlCSVQoKGludGYpICogMiAmIzQzOyAxKQogI2RlZmluZSBSVEw5MzEwX1NNSV9JTkRSVF9BQ0NFU1NfQ1RSTF8wCQkweDBjMDAKQEAgLTI1MSw2ICYjNDM7MjU3LDcgQEAgc3RydWN0IG90dG9fZW1kaW9fcHJpdiB7CiAJc3RydWN0IHJlZ21hcCAqcmVnbWFwOwogCXN0cnVjdCBtdXRleCBsb2NrOyAvKiBwcm90ZWN0IEhXIGFjY2VzcyAqLwogCURFQ0xBUkVfQklUTUFQKHZhbGlkX3BvcnRzLCBNQVhfUE9SVFMpOwomIzQzOwl1MzIgZ2xvYmFsX2ZyZXE7CiAJdTE2IHBhZ2VbTUFYX1BPUlRTXTsKIAl1OCBzbWlfYnVzW01BWF9QT1JUU107CiAJdTggc21pX2FkZHJbTUFYX1BPUlRTXTsKQEAgLTI2OSw2ICYjNDM7Mjc2LDcgQEAgc3RydWN0IG90dG9fZW1kaW9faW5mbyB7CiAJdTggbnVtX3BvcnRzOwogCXUxNiBudW1fcGFnZXM7CiAJdTMyIHBvbGxfY3RybDsKJiM0MzsJaW50ICgqc2V0X2J1c19mcmVxdWVuY3kpKHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKTsKIAlpbnQgKCpzZXR1cF9jb250cm9sbGVyKShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KTsKIAlpbnQgKCpyZWFkX2MyMikoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpOwogCWludCAoKnJlYWRfYzQ1KShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKTsKQEAgLTc0MCw2ICYjNDM7NzQ4LDE3IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19zZXR1cF90b3BvbG9neShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KQogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpOwomIzQzOwomIzQzOwlpZiAoZnJlcSAhPSAyNTAwMDAwICZhbXA7JmFtcDsgZnJlcSAhPSAxMDAwMDAwMCkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwlyZXR1cm4gcmVnbWFwX2Fzc2lnbl9iaXRzKHByaXYtJmd0O3JlZ21hcCwgUlRMODM4MF9TTUlfR0xCX0NUUkwsCiYjNDM7CQkJCSAgUlRMODM4MF9TTUlfRlJFUV9TRUwsIGZyZXEgPT0gMTAwMDAwMDApOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdikKIHsKIAkvKgpAQCAtNzQ5LDYgJiM0Mzs3NjgsNDAgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KQogCXJldHVybiByZWdtYXBfc2V0X2JpdHMocHJpdi0mZ3Q7cmVnbWFwLCBSVEw4MzgwX1NNSV9HTEJfQ1RSTCwgUlRMODM4MF9TTUlfUEhZX1BBVENIX0RPTkUpOwogfQogCiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpOwomIzQzOwl1MzIgdmFsOwomIzQzOwlpbnQgZXJyOwomIzQzOwomIzQzOwlpZiAoZnJlcSAhPSAxMjUwMDAwICZhbXA7JmFtcDsgZnJlcSAhPSAyNTAwMDAwICZhbXA7JmFtcDsgZnJlcSAhPSA1MDAwMDAwKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CWlmIChwcml2LSZndDtnbG9iYWxfZnJlcSkKJiM0MzsJCXJldHVybiBmcmVxID09IHByaXYtJmd0O2dsb2JhbF9mcmVxID8gMCA6IC1FSU5WQUw7CiYjNDM7CiYjNDM7CXZhbCA9IEZJRUxEX1BSRVAoUlRMODM5MF9TTUlfRlJFUV9TRUwsIGZyZXEgLyAyNTAwMDAwKTsKJiM0MzsJZXJyID0gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtJmd0O3JlZ21hcCwgUlRMODM5MF9TTUlfR0xCX0NUUkwsIFJUTDgzOTBfU01JX0ZSRVFfU0VMLCB2YWwpOwomIzQzOwlpZiAoIWVycikKJiM0MzsJCXByaXYtJmd0O2dsb2JhbF9mcmVxID0gZnJlcTsKJiM0MzsKJiM0MzsJcmV0dXJuIGVycjsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpOwomIzQzOwlzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gYnVzLSZndDtwcml2OwomIzQzOwl1MzIgbWFzaywgdmFsOwomIzQzOwomIzQzOwlpZiAoZnJlcSAhPSAxMjUwMDAwICZhbXA7JmFtcDsgZnJlcSAhPSAyNTAwMDAwICZhbXA7JmFtcDsgZnJlcSAhPSA1MDAwMDAwKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CW1hc2sgPSBSVEw5MzAwX1NNSV9GUkVRX1NFTChjaGFuLSZndDttZGlvX2J1cyk7CiYjNDM7CXZhbCA9IGZpZWxkX3ByZXAobWFzaywgZnJlcSAvIDI1MDAwMDApOwomIzQzOwomIzQzOwlyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtJmd0O3JlZ21hcCwgUlRMOTMwMF9TTUlfR0xCX0NUUkwsIG1hc2ssIHZhbCk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KQogewogCXUzMiBnbGJfY3RybF9tYXNrID0gMCwgZ2xiX2N0cmxfdmFsID0gMDsKQEAgLTc2OSw2ICYjNDM7ODIyLDIxIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdikKIAlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKQomIzQzO3sKJiM0MzsJc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTsKJiM0MzsJc3RydWN0IG90dG9fZW1kaW9fY2hhbiAqY2hhbiA9IGJ1cy0mZ3Q7cHJpdjsKJiM0MzsJdTMyIG1hc2ssIHZhbDsKJiM0MzsKJiM0MzsJaWYgKGZyZXEgIT0gMTI1MDAwMCAmYW1wOyZhbXA7IGZyZXEgIT0gMjUwMDAwMCAmYW1wOyZhbXA7IGZyZXEgIT0gNTAwMDAwMCkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwltYXNrID0gUlRMOTMxMF9TTUlfRlJFUV9TRUwoY2hhbi0mZ3Q7bWRpb19idXMpOwomIzQzOwl2YWwgPSBmaWVsZF9wcmVwKG1hc2ssIGZyZXEgLyAyNTAwMDAwKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhwcml2LSZndDtyZWdtYXAsIFJUTDkzMTBfU01JX0dMQl9DVFJMMCwgbWFzaywgdmFsKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpCiB7CiAJaW50IGksIGVycjsKQEAgLTgzMSwxNCAmIzQzOzg5OSwxNCBAQCBzdGF0aWMgdm9pZCBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB9CiAKIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LAotCQkJCSBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqbm9kZSkKJiM0MzsJCQkJc3RydWN0IGRldmljZV9ub2RlICpub2RlKQogewogCXN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW47CiAJc3RydWN0IG1paV9idXMgKmJ1czsKLQl1MzIgbWRpb19idXM7CiYjNDM7CXUzMiBtZGlvX2J1cywgZnJlcTsKIAlpbnQgZXJyOwogCi0JZXJyID0gZndub2RlX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsICYjMzQ7cmVnJiMzNDssICZhbXA7bWRpb19idXMpOwomIzQzOwllcnIgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCAmIzM0O3JlZyYjMzQ7LCAmYW1wO21kaW9fYnVzKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgJiMzNDt1bmRlZmluZWQgc21pIGJ1cyBudW1iZXJcbiYjMzQ7KTsKIApAQCAtODY1LDcgJiM0Mzs5MzMsMTQgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYKIAogCXNucHJpbnRmKGJ1cy0mZ3Q7aWQsIE1JSV9CVVNfSURfU0laRSwgJiMzNDslcy0lZCYjMzQ7LCBkZXZfbmFtZShkZXYpLCBtZGlvX2J1cyk7CiAKLQllcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIHRvX29mX25vZGUobm9kZSkpOwomIzQzOwlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgJiMzNDtjbG9jay1mcmVxdWVuY3kmIzM0OywgJmFtcDtmcmVxKSkKJiM0MzsJCWZyZXEgPSAyNTAwMDAwOwomIzQzOwllcnIgPSBwcml2LSZndDtpbmZvLSZndDtzZXRfYnVzX2ZyZXF1ZW5jeShidXMsIGZyZXEpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBlcnIsICYjMzQ7Y2Fubm90IHNldCBmcmVxdWVuY3kgJXUgZm9yIE1ESU8gYnVzICVkXG4mIzM0OywKJiM0MzsJCQkJICAgICBmcmVxLCBtZGlvX2J1cyk7CiYjNDM7CiYjNDM7CWVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbm9kZSk7CiAJaWYgKGVycikKIAkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBlcnIsICYjMzQ7Y2Fubm90IHJlZ2lzdGVyIE1ESU8gYnVzXG4mIzM0Oyk7CiAKQEAgLTEwMjcsNyAmIzQzOzExMDIsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCAmIzM0O2ZhaWxlZCB0byBzZXR1cCBNRElPIGJ1cyBjb250cm9sbGVyXG4mIzM0Oyk7CiAJfQogCi0JZGV2aWNlX2Zvcl9lYWNoX2NoaWxkX25vZGVfc2NvcGVkKGRldiwgY2hpbGQpIHsKJiM0MzsJZm9yX2VhY2hfY2hpbGRfb2Zfbm9kZV9zY29wZWQoZGV2LSZndDtvZl9ub2RlLCBjaGlsZCkgewogCQllcnIgPSBvdHRvX2VtZGlvX3Byb2JlX29uZShkZXYsIHByaXYsIGNoaWxkKTsKIAkJaWYgKGVycikKIAkJCXJldHVybiBlcnI7CkBAIC0xMDUxLDYgJiM0MzsxMTI2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzgwX2luZm8gPSB7CiAJLm51bV9wYWdlcyA9IFJUTDgzODBfTlVNX1BBR0VTLAogCS5udW1fcG9ydHMgPSBSVEw4MzgwX05VTV9QT1JUUywKIAkucG9sbF9jdHJsID0gUlRMODM4MF9TTUlfUE9MTF9DVFJMLAomIzQzOwkuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzgzODBfc2V0X2J1c19mcmVxdWVuY3ksCiAJLnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzgzODBfc2V0dXBfY29udHJvbGxlciwKIAkucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIsCiAJLnJlYWRfYzQ1ID0gb3R0b19lbWRpb184MzgwX3JlYWRfYzQ1LApAQCAtMTA3NSw2ICYjNDM7MTE1MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM5MF9pbmZvID0gewogCS5udW1fcGFnZXMgPSBSVEw4MzkwX05VTV9QQUdFUywKIAkubnVtX3BvcnRzID0gUlRMODM5MF9OVU1fUE9SVFMsCiAJLnBvbGxfY3RybCA9IFJUTDgzOTBfU01JX1BPUlRfUE9MTElOR19DVFJMLAomIzQzOwkuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzgzOTBfc2V0X2J1c19mcmVxdWVuY3ksCiAJLnJlYWRfYzIyID0gb3R0b19lbWRpb184MzkwX3JlYWRfYzIyLAogCS5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2M0NSwKIAkud3JpdGVfYzIyID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2MyMiwKQEAgLTEwOTcsNiAmIzQzOzExNzQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMDBfaW5mbyA9IHsKIAkubnVtX3BvcnRzID0gUlRMOTMwMF9OVU1fUE9SVFMsCiAJLm51bV9wYWdlcyA9IFJUTDkzMDBfTlVNX1BBR0VTLAogCS5wb2xsX2N0cmwgPSBSVEw5MzAwX1NNSV9QT0xMX0NUUkwsCiYjNDM7CS5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fOTMwMF9zZXRfYnVzX2ZyZXF1ZW5jeSwKIAkuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyLAogCS5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2MyMiwKIAkucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jNDUsCkBAIC0xMTIzLDYgJiM0MzsxMjAxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzEwX2luZm8gPSB7CiAJLm51bV9wYWdlcyA9IFJUTDkzMTBfTlVNX1BBR0VTLAogCS5udW1fcG9ydHMgPSBSVEw5MzEwX05VTV9QT1JUUywKIAkucG9sbF9jdHJsID0gUlRMOTMxMF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsCiYjNDM7CS5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fOTMxMF9zZXRfYnVzX2ZyZXF1ZW5jeSwKIAkuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyLAogCS5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMiwKIAkucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jNDUsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwOTAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaGluZ2VzIG9uIHdoZXRoZXIgdGhpcyBwYXRjaCBwcmVzZW50cyBhIGNvbXBlbGxpbmcgY2FzZSBmb3IgZnV6emluZywgc28gSSBuZWVkIHRvIHdlaWdoIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UuIExldCYjMzk7cyBzdGFydCBieSBicmVha2luZyBkb3duIHRoZSBwYXRjaCYjMzk7cyBjb21wb25lbnRzLgoKRmlyc3QsIEkgc2VlIHRoZSBtb2RpZmljYXRpb25zIGludm9sdmUgdHdvIGZpbGVzOiBgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sYCBhbmQgYGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY2AuIFRoZSBZQU1MIGZpbGUgdHlwaWNhbGx5IGluZGljYXRlcyBjaGFuZ2VzIHRvIERldmljZSBUcmVlIGJpbmRpbmdzLCB3aGljaCAqY291bGQqIGludm9sdmUgc3VidGxlIGxvZ2ljIGNoYW5nZXMgaW5mbHVlbmNpbmcgZGV2aWNlIGNvbmZpZ3VyYXRpb24gb3IgZGF0YSBpbnRlcnByZXRhdGlvbiDigJMgd29ydGggbm90aW5nLCBidXQgbm90IG5lY2Vzc2FyaWx5IGEgZnV6emluZyBnb2xkIG1pbmUgb24gaXRzIG93bi4KCk5vdywgdGhlIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBmaWxlIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBkcml2ZXIgZG9lcy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGl0cyBLY29uZmlnIGVudHJ5LiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgZHJpdmVyJiMzOTtzIHJvbGUuIElzIGl0IGEgY29yZSBuZXR3b3JrIGludGVyZmFjZSBkcml2ZXI/IERvZXMgaXQgaW50ZXJhY3Qgd2l0aCBoYXJkd2FyZSBpbiBhIHdheSB0aGF0IGhhbmRsZXMgZXh0ZXJuYWwgZGF0YT8gSXMgaXQgdGFyZ2V0ZWQgYXQgYSBwYXJ0aWN1bGFyIGFyY2hpdGVjdHVyZSBvciBoYXJkd2FyZSBjb21wb25lbnQ/IFRoYXQmIzM5O3MgZ29pbmcgdG8gaW5mb3JtIG1lIHdoZXRoZXIgaXQmIzM5O3Mgd29ydGggdGhlIHRpbWUgdG8gZXZlbiBwcm9iZSB0aGUgc3VyZmFjZSBmb3IgZnV6emluZyBvcHBvcnR1bml0aWVzLiBUaGUgcHJvYmluZy9pbnN0YW50aWF0aW9uIG1ldGhvZCBpcyBhbHNvIGNydWNpYWwgLSBob3cgdGhlIGRyaXZlciBpbml0aWFsaXplcywgcmVjZWl2ZXMgZGF0YSwgYW5kIHNldHMgdXAgY29tbXVuaWNhdGlvbiBjaGFubmVscyBwcm92aWRlcyBncmVhdCBpbmRpY2F0b3JzIGFzIHRvIHdoZXJlIGFuZCBob3cgZnV6emluZyBjYW4gYmUgZWZmZWN0aXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01ESU9fUkVBTFRFS19SVEw5MzAwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpbyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL0tjb25maWc9MTY2PWNvbmZpZyBNRElPX0lQUTgwNjRcbi0tXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTczLVxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnOjE3NDpjb25maWcgTURJT19SRUFMVEVLX1JUTDkzMDBcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy0xNzUtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIFJUTDgzeHgvUlRMOTN4eCBNRElPIGludGVyZmFjZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZT0yMz1vYmotJChDT05GSUdfTURJT19QSUM2NEhQU0MpXHRcdCYjNDM7PSBtZGlvLXBpYzY0aHBzYy5vXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19NRElPX1JFQUxURUtfUlRMOTMwMClcdCYjNDM7PSBtZGlvLXJlYWx0ZWstcnRsOTMwMC5vXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlLTI1LW9iai0kKENPTkZJR19NRElPX1JFR01BUClcdFx0JiM0Mzs9IG1kaW8tcmVnbWFwLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODE3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgTURJT19SRUFMVEVLX1JUTDkzMDAgS2NvbmZpZyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoZSBLY29uZmlnIGZvciB0aGUgTURJT19SRUFMVEVLX1JUTDkzMDAgZHJpdmVyLiBNeSBpbml0aWFsIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBzdXBwb3J0IGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBicm9hZGVyIGJ1aWxkIHN5c3RlbS4gV2hhdCBhcmUgdGhlIGtleSBkZXBlbmRlbmNpZXM/IFdoYXQgb3B0aW9ucyBhcmUgZXhwb3NlZCB0byB0aGUgdXNlciwgYW5kIGhvdyBncmFudWxhciBhcmUgdGhleT8gSeKAmW0gbG9va2luZyBmb3IgdGhlIGVzc2VudGlhbCBrbm9icywgdGhlIG9uZXMgdGhhdCB0cnVseSBtYXR0ZXIuIEZvciBleGFtcGxlLCBhcmUgdGhlcmUgb3B0aW9uYWwgZmVhdHVyZXMgY29udHJvbGxlZCBieSB0cmlzdGF0ZXMgb3IganVzdCBib29scz8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyB0aGlzIGRyaXZlciAtLSB3aGljaCBkZXBlbmRlbmNpZXMgd2lsbCBJIHB1bGwgaW4gYW5kIGlzIHRoaXMgZHJpdmVyIHJlcXVpcmVkIGZvciBvdGhlciBjb3JlIGZ1bmN0aW9uYWxpdGllcz8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWxseSBwcm9ibGVtYXRpYyBkZWZhdWx0cyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gSSYjMzk7bGwgYmUgY2hlY2tpbmcgaWYgdGhlIGRyaXZlciYjMzk7cyBjb25maWd1cmF0aW9uIGlzIGNsZWFuIG9yIGlmIGl0IG5lZWRzIGltcHJvdmVtZW50LiBVbmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZ2l2ZXMgbWUgaW5zaWdodCBpbnRvIHRoZSBkcml2ZXImIzM5O3MgY2FwYWJpbGl0aWVzIGFuZCBpdHMgc3VpdGFiaWxpdHkgZm9yIGRpZmZlcmVudCB1c2UgY2FzZXMuIFVsdGltYXRlbHksIEkgbmVlZCB0byBrbm93IHRoZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgdGhpcyBkcml2ZXIgaW4gbXkgc3lzdGVtIGNvbmZpZ3VyYXRpb24sIGJvdGggaW4gdGVybXMgb2YgY29kZSBmb290cHJpbnQgYW5kIHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBtb2R1bGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNzA6XHRcdGhlbHBcbiAxNzE6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIE1ESU8gaW50ZXJmYWNlIGZvdW5kIGluIHRoZSBuZXR3b3JrXG4gMTcyOlx0XHQgIGludGVyZmFjZSB1bml0cyBvZiB0aGUgSVBRODA2NCBTb0NcbiAxNzM6XHRcbiAxNzQ6XHRjb25maWcgTURJT19SRUFMVEVLX1JUTDkzMDBcbiAxNzU6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcJiMzNDtcbiAxNzY6XHRcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcbiAxNzc6XHRcdGhlbHBcbiAxNzg6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIE1ESU8gaW50ZXJmYWNlIGZvdW5kIGluIHRoZSBSZWFsdGVrXG4gMTc5Olx0XHQgIFJUTDgzeHgvUlRMOTN4eCBmYW1pbHkgb2YgRXRoZXJuZXQgc3dpdGNoZXMgd2l0aCBpbnRlZ3JhdGVkIFNvQy5cbiAxODA6XHRcbiAxODE6XHRjb25maWcgTURJT19SRUdNQVBcbiAxODI6XHRcdHRyaXN0YXRlXG4gMTgzOlx0XHRoZWxwXG4gMTg0Olx0XHQgIFRoaXMgZHJpdmVyIGFsbG93cyB1c2luZyBNRElPIGRldmljZXMgdGhhdCBhcmUgbm90IHNpdHRpbmcgb24gYVxuIDE4NTpcdFx0ICByZWd1bGFyIE1ESU8gYnVzLCBidXQgc3RpbGwgZXhwb3NlcyB0aGUgc3RhbmRhcmQgODAyLjMgcmVnaXN0ZXJcbiAxODY6XHRcdCAgbGF5b3V0LiBJdCYjMzk7cyByZWdtYXAtYmFzZWQgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBvbiBpbnRlZ3JhdGVkLFxuIDE4NzpcdFx0ICBtZW1vcnktbWFwcGVkIFBIWXMsIFNQSSBQSFlzIGFuZCBzbyBvbi4gQSBuZXcgdmlydHVhbCBNRElPIGJ1cyBpc1xuIDE4ODpcdFx0ICBjcmVhdGVkLCBhbmQgaXRzIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBhcmUgbWFwcGVkIHRvIHRoZSB1bmRlcmx5aW5nXG4gMTg5Olx0XHQgIHJlZ21hcC4gVXNlcnMgd2lsbGluZyB0byB1c2UgdGhpcyBkcml2ZXIgbXVzdCBleHBsaWNpdGx5IHNlbGVjdFxuIDE5MDpcdFx0ICBSRUdNQVAuXG4gMTkxOlx0XG4gMTkyOlx0Y29uZmlnIE1ESU9fVEhVTkRFUlxuIDE5MzpcdFx0dHJpc3RhdGUgXCYjMzQ7VGh1bmRlclggU09DcyBNRElPIGJ1c2VzXCYjMzQ7XG4gMTk0Olx0XHRkZXBlbmRzIG9uIDY0QklUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODU2NAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgbWRpby1yZWFsdGVrLXJ0bDkzMDAuYyBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBwcm9iaW5nIG1lY2hhbmlzbS4gRmlyc3QsIEkmIzM5O2xsIGlkZW50aWZ5IHRoZSBidXMgaXQmIzM5O3MgdGllZCB0by4gVGhlbiwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBzdHJpY3RseSBhIHBsYXRmb3JtIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aGF0IFJlYWx0ZWsgTUlQUyBTb0MsIHRoZSBgTUFDSF9SRUFMVEVLX1JUTGAgYXJjaGl0ZWN0dXJlLCBvciBpZiB0aGVyZSYjMzk7cyBzb21lIGRldmljZSB0cmVlIChEVCkgb3ZlcmxheSBjb25maWd1cmF0aW9uIG9yIGFsdGVybmF0aXZlIGFwcHJvYWNoIHRoYXQgYWxsb3dzIGl0IHRvIGJlIGFjY2Vzc2VkIHZpYSBvdGhlciBjb25maWd1cmF0aW9ucy4gRXNzZW50aWFsbHksIEkgbmVlZCB0byBnZXQgdGhlIGJpZyBwaWN0dXJlIG9mIHRoaXMgZHJpdmVyIGFuZCBob3cgaXQmIzM5O3MgaW50ZWdyYXRlZC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSB0aG9yb3VnaCByZXZpZXcgb2YgdGhlIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBmaWxlIGl0c2VsZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvdHRvX2VtZGlvXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjQzLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI0NDpzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjQ1LVx0dTMyIGMyMl9kYXRhO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNTQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MjU1OnN0cnVjdCBvdHRvX2VtZGlvX3ByaXYge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI1NjpcdGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gKmluZm87XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjU3LVx0c3RydWN0IHJlZ21hcCAqcmVnbWFwO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNjctXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MjY4OnN0cnVjdCBvdHRvX2VtZGlvX2luZm8ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI2OS1cdHUzMiBhZGRyX21hcF9iYXNlO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNzMtXHR1MzIgY21kX3dyaXRlO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI3NDpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9yZWdzO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI3NS1cdHU4IG51bV9idXNlcztcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjc5LVx0aW50ICgqc2V0X2J1c19mcmVxdWVuY3kpKHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyODA6XHRpbnQgKCpzZXR1cF9jb250cm9sbGVyKShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yODEtXHRpbnQgKCpyZWFkX2MyMikoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yODYtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Mjg3OnN0cnVjdCBvdHRvX2VtZGlvX2NoYW4ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI4ODpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXY7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjg5LVx0dTggbWRpb19idXM7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI5MS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyOTI6c3RhdGljIGludCBvdHRvX2VtZGlvX3BoeV90b19wb3J0KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjkzLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyOTQ6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Mjk1Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdjtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yOTYtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzA3LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMwODpzdGF0aWMgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqb3R0b19lbWRpb19idXNfdG9fcHJpdihzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTMwOS17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MzEwOlx0c3RydWN0IG90dG9fZW1kaW9fY2hhbiAqY2hhbiA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTMxMS1cbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzE0LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMxNTpzdGF0aWMgaW50IG90dG9fZW1kaW9fc2V0X3BvcnRfcG9sbGluZyhzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LCBpbnQgcG9ydCwgYm9vbCBhY3RpdmUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzE2LXtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzIwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMyMTpzdGF0aWMgaW50IG90dG9fZW1kaW9fcnVuX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMyMjpcdFx0XHQgICAgICBzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyAqY21kX2RhdGEpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzIzLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozMjQ6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMyNTpcdGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gKmluZm8gPSBwcml2LVx1MDAzZWluZm87XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzI2LVx0dTMyIGNtZHN0YXRlO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zNzctXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Mzc4OnN0YXRpYyBpbnQgb3R0b19lbWRpb19yZWFkX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjM3OTpcdFx0XHQgICAgICAgc3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgKmNtZF9kYXRhLCB1MzIgbWFzaywgdTMyICp2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zODAte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjM4MTpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzgyLVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzg0LVx0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZwcml2LVx1MDAzZWxvY2spO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjM4NTpcdHJldCA9IG90dG9fZW1kaW9fcnVuX2NtZChidXMsIGNtZCB8IHByaXYtXHUwMDNlaW5mby1cdTAwM2VjbWRfcmVhZCwgY21kX2RhdGEpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTM4Ni1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTM5Ny1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozOTg6c3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2NtZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgY21kLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjM5OTpcdFx0XHRcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzICpjbWRfZGF0YSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MDAte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQwMTpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDAyLVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MDQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDA1Olx0cmV0dXJuIG90dG9fZW1kaW9fcnVuX2NtZChidXMsIGNtZCB8IHByaXYtXHUwMDNlaW5mby1cdTAwM2VjbWRfd3JpdGUsIGNtZF9kYXRhKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MDYtfVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQwNy1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MDg6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDA5LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MTA6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQxMTpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQxMi1cdFx0LmMyMl9kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQxNy1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MTg6XHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DMjIsIFx1MDAyNmNtZF9kYXRhLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQxOS1cdFx0XHRcdCAgIFJUTDgzODBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MjEtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDIyOnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQyMy17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDI0Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MjU6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MjYtXHRcdC5jMjJfZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MzItXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDMzOlx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0MyMiwgXHUwMDI2Y21kX2RhdGEpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQzNC19XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDM1LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQzNjpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MzctXHRcdFx0XHQgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQzOC17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDM5Olx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDQwLVx0XHQuYzQ1X2RhdGFcdD0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ0NC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0NDU6XHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDgzODBfUEhZX0NUUkxfVFlQRV9DNDUsIFx1MDAyNmNtZF9kYXRhLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ0Ni1cdFx0XHRcdCAgIFJUTDgzODBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NDgtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDQ5OnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NTAtXHRcdFx0XHQgICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ1MS17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDUyOlx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDUzLVx0XHQuYzQ1X2RhdGFcdD0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ1OC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0NTk6XHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcdTAwMjZjbWRfZGF0YSk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDYwLX1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NjEtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDYyOnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ2My17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDY0Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0NjU6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NjYtXHRcdC5jMjJfZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NzEtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDcyOlx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzIyLCBcdTAwMjZjbWRfZGF0YSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NzMtXHRcdFx0XHQgICBSVEw4MzkwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDc1LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ3NjpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM5MF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00Nzcte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ3ODpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDc5Olx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDgwLVx0XHQuYzIyX2RhdGFcdD0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDg3LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ4ODpcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDgzOTBfUEhZX0NUUkxfVFlQRV9DMjIsIFx1MDAyNmNtZF9kYXRhKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00ODktfVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ5MC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0OTE6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDkyLVx0XHRcdFx0ICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00OTMte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ5NDpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ5NS1cdFx0LmM0NV9kYXRhXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00OTktXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTAwOlx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw4MzkwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcdTAwMjZjbWRfZGF0YSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MDEtXHRcdFx0XHQgICBSVEw4MzkwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTAzLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUwNDpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM5MF93cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTA1LVx0XHRcdFx0ICAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MDYte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUwNzpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUwOC1cdFx0LmM0NV9kYXRhXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MTQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTE1Olx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0M0NSwgXHUwMDI2Y21kX2RhdGEpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUxNi19XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTE3LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUxODpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MTkte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUyMDpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTIxOlx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTIyLVx0XHQuYzIyX2RhdGFcdD0gRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTI3LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUyODpcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMOTMwMF9QSFlfQ1RSTF9UWVBFX0MyMiwgXHUwMDI2Y21kX2RhdGEsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTI5LVx0XHRcdFx0ICAgUlRMOTMwMF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUzMS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1MzI6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTMzLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1MzQ6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUzNTpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUzNi1cdFx0LmMyMl9kYXRhXHQ9IEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU0Mi1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NDM6XHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw5MzAwX1BIWV9DVFJMX1RZUEVfQzIyLCBcdTAwMjZjbWRfZGF0YSk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQ0LX1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NDUtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTQ2OnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU0Ny1cdFx0XHRcdCAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQ4LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NDk6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NTAtXHRcdC5jNDVfZGF0YVx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTU0LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU1NTpcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMOTMwMF9QSFlfQ1RSTF9UWVBFX0M0NSwgXHUwMDI2Y21kX2RhdGEsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTU2LVx0XHRcdFx0ICAgUlRMOTMwMF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU1OC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NTk6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU2MC1cdFx0XHRcdCAgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTYxLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NjI6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NjMtXHRcdC5jNDVfZGF0YVx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTY4LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU2OTpcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDkzMDBfUEhZX0NUUkxfVFlQRV9DNDUsIFx1MDAyNmNtZF9kYXRhKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NzAtfVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU3MS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NzI6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTczLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NzQ6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU3NTpcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU3Ni1cdFx0LmJyb2FkY2FzdFx0PSBGSUVMRF9QUkVQKFJUTDkzMTBfQkNfUE9SVF9JRCwgcG9ydCksXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU4MC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1ODE6XHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDkzMTBfUEhZX0NUUkxfVFlQRV9DMjIsIFx1MDAyNmNtZF9kYXRhLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU4Mi1cdFx0XHRcdCAgIFJUTDkzMTBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01ODQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTg1OnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU4Ni17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTg3Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1ODg6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01ODktXHRcdC5jMjJfZGF0YVx0PSBGSUVMRF9QUkVQKFJUTDkzMTBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01OTUtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTk2Olx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMOTMxMF9QSFlfQ1RSTF9UWVBFX0MyMiwgXHUwMDI2Y21kX2RhdGEpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU5Ny19XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTk4LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU5OTpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02MDAtXHRcdFx0XHQgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYwMS17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NjAyOlx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjAzLVx0XHQuYnJvYWRjYXN0XHQ9IEZJRUxEX1BSRVAoUlRMOTMxMF9CQ19QT1JUX0lELCBwb3J0KSxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjA3LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjYwODpcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMOTMxMF9QSFlfQ1RSTF9UWVBFX0M0NSwgXHUwMDI2Y21kX2RhdGEsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjA5LVx0XHRcdFx0ICAgUlRMOTMxMF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYxMS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MTI6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYxMy1cdFx0XHRcdCAgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjE0LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MTU6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02MTYtXHRcdC5jNDVfZGF0YVx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjIyLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjYyMzpcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDkzMTBfUEhZX0NUUkxfVFlQRV9DNDUsIFx1MDAyNmNtZF9kYXRhKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02MjQtfVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYyNS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MjY6c3RhdGljIGludCBvdHRvX2VtZGlvX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjI3LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2Mjg6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYyOS1cdGludCByZXQsIHBvcnQ7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYzNy1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2Mzg6XHRwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChidXMsIHBoeV9pZCk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjM5LVx0aWYgKHBvcnQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY1MS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2NTI6c3RhdGljIGludCBvdHRvX2VtZGlvX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY1My1cdFx0XHRcdHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02NTQte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjY1NTpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjU2LVx0aW50IHJldCwgcG9ydDtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjYzLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjY2NDpcdHBvcnQgPSBvdHRvX2VtZGlvX3BoeV90b19wb3J0KGJ1cywgcGh5X2lkKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02NjUtXHRpZiAocG9ydCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjgyLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjY4MzpzdGF0aWMgaW50IG90dG9fZW1kaW9fcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY4NC17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Njg1Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02ODYtXHRpbnQgcmV0LCBwb3J0O1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02ODgtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Njg5Olx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY5MC1cdGlmIChwb3J0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02OTgtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Njk5OnN0YXRpYyBpbnQgb3R0b19lbWRpb193cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MDAtXHRcdFx0XHRpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MDEte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjcwMjpcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzAzLVx0aW50IHJldCwgcG9ydDtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MDQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzA1Olx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTcwNi1cdGlmIChwb3J0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MTQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzE1OnN0YXRpYyBpbnQgb3R0b19lbWRpb193cml0ZV9tYXBwaW5nKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYsIHUzMiBiYXNlLCB1MzIgcG9ydCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MTYtXHRcdFx0XHQgICAgdTMyIHZhbHNfcGVyX3JlZywgdTMyIGJpdHNfcGVyX3ZhbCwgdTMyIHZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MjQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzI1OnN0YXRpYyBpbnQgb3R0b19lbWRpb19zZXR1cF90b3BvbG9neShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTcyNi17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzI3Olx0Y29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyAqaW5mbyA9IHByaXYtXHUwMDNlaW5mbztcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MjgtXHR1MzIgcG9ydDtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzMyLVx0XHRpZiAoaW5mby1cdTAwM2VidXNfbWFwX2Jhc2UpIHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3MzM6XHRcdFx0cmV0ID0gb3R0b19lbWRpb193cml0ZV9tYXBwaW5nKHByaXYsIGluZm8tXHUwMDNlYnVzX21hcF9iYXNlLCBwb3J0LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTczNC1cdFx0XHRcdFx0XHQgICAgICAgTUFQX0JVU0VTX1BFUl9SRUcsIE1BUF9CSVRTX1BFUl9CVVMsXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTczOS1cdFx0aWYgKGluZm8tXHUwMDNlYWRkcl9tYXBfYmFzZSkge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjc0MDpcdFx0XHRyZXQgPSBvdHRvX2VtZGlvX3dyaXRlX21hcHBpbmcocHJpdiwgaW5mby1cdTAwM2VhZGRyX21hcF9iYXNlLCBwb3J0LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc0MS1cdFx0XHRcdFx0XHQgICAgICAgTUFQX0FERFJTX1BFUl9SRUcsIE1BUF9CSVRTX1BFUl9BRERSLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NTAtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzUxOnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc1Mi17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzUzOlx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NTQtXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc2MS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3NjI6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc2My17XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc3MC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3NzE6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzcyLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3NzM6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc3NC1cdHUzMiB2YWw7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc4OS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3OTA6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzkxLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3OTI6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjc5MzpcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03OTQtXHR1MzIgbWFzaywgdmFsO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MDQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODA1OnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MDYte1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MjQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODI1OnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgyNi17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODI3Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4Mjg6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODI5LVx0dTMyIG1hc2ssIHZhbDtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODM5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg0MDpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODQxLXtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODU1LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg1NjpzdGF0aWMgaW50IG90dG9fZW1kaW9fbm90aWZ5X3BoeV9hdHRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04NTcte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg1ODpcdGludCBwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChwaHlkZXYtXHUwMDNlbWRpby5idXMsIHBoeWRldi1cdTAwM2VtZGlvLmFkZHIpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg1OTpcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4NjA6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gY2hhbi1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg2MS1cbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODc3LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg3ODpcdHJldHVybiBvdHRvX2VtZGlvX3NldF9wb3J0X3BvbGxpbmcocHJpdiwgcG9ydCwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODc5LX1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04ODAtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODgxOnN0YXRpYyB2b2lkIG90dG9fZW1kaW9fbm90aWZ5X3BoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04ODIte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg4My1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwaHlkZXYtXHUwMDNlbWRpby5idXM7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODg0Olx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdjtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04ODUtXHRpbnQgcG9ydDtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04ODYtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODg3Olx0cHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYocGh5ZGV2LVx1MDAzZW1kaW8uYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4ODg6XHRwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChwaHlkZXYtXHUwMDNlbWRpby5idXMsIHBoeWRldi1cdTAwM2VtZGlvLmFkZHIpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg4OS1cbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODk2LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg5NzpcdGlmIChvdHRvX2VtZGlvX3NldF9wb3J0X3BvbGxpbmcocHJpdiwgcG9ydCwgZmFsc2UpKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg5OC1cdFx0ZGV2X2VycihidXMtXHUwMDNlcGFyZW50LCBcJiMzNDtmYWlsZWQgdG8gZGlzYWJsZSBwb2xsaW5nIGZvciBwb3J0ICVkXFxuXCYjMzQ7LCBwb3J0KTtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTAwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjkwMTpzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy05MDItXHRcdFx0XHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTAzLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5MDQ6XHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTkwNS1cdHN0cnVjdCBtaWlfYnVzICpidXM7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTkyMS1cdGJ1cy1cdTAwM2VuYW1lID0gXCYjMzQ7UmVhbHRlayBTd2l0Y2ggTURJTyBCdXNcJiMzNDs7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTIyOlx0YnVzLVx1MDAzZXJlYWRfYzQ1ID0gb3R0b19lbWRpb19yZWFkX2M0NTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5MjM6XHRidXMtXHUwMDNld3JpdGVfYzQ1ID0gb3R0b19lbWRpb193cml0ZV9jNDU7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTI0Olx0YnVzLVx1MDAzZXJlYWQgPSBvdHRvX2VtZGlvX3JlYWRfYzIyO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjkyNTpcdGJ1cy1cdTAwM2V3cml0ZSA9IG90dG9fZW1kaW9fd3JpdGVfYzIyO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTkyNi1cdGJ1cy1cdTAwM2VwYXJlbnQgPSBkZXY7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTI3Olx0YnVzLVx1MDAzZW5vdGlmeV9waHlfYXR0YWNoID0gb3R0b19lbWRpb19ub3RpZnlfcGh5X2F0dGFjaDtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5Mjg6XHRidXMtXHUwMDNlbm90aWZ5X3BoeV9kZXRhY2ggPSBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTkyOS1cbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTQ5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjk1MDpzdGF0aWMgc3RydWN0IGRldmljZV9ub2RlICpvdHRvX2VtZGlvX2dldF9idXNfbm9kZShzdHJ1Y3QgZGV2aWNlX25vZGUgKmRuKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk1MS17XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk2OC0gKi9cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5Njk6c3RhdGljIGludCBvdHRvX2VtZGlvX21hcF9wb3J0cyhzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTcwLXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy05NzEtXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRzX2RuLCAqcGh5X2RuLCAqYnVzX2RuLCAqY3RybF9kbjtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5NzI6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTczLVx0c3RydWN0IGRldmljZSAqcGFyZW50ID0gZGV2LVx1MDAzZXBhcmVudDtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTg5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjk5MDpcdFx0YnVzX2RuID0gb3R0b19lbWRpb19nZXRfYnVzX25vZGUocGh5X2RuKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy05OTEtXHRcdGlmICghYnVzX2RuKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDUyLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNTM6c3RhdGljIGludCBvdHRvX2VtZGlvX2luaXRfcG9sbGluZyhzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwNTQte1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDU3LVx0Zm9yIChpbnQgcG9ydCA9IDA7IHBvcnQgXHUwMDNjIHByaXYtXHUwMDNlaW5mby1cdTAwM2VudW1fcG9ydHM7IHBvcnQmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTA1ODpcdFx0ZXJyID0gb3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHByaXYsIHBvcnQsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDU5LVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDY1LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNjY6c3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA2Ny17XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA2OC1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNjk6XHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwNzAtXHRpbnQgZXJyO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDg0LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwODU6XHRlcnIgPSBvdHRvX2VtZGlvX2luaXRfcG9sbGluZyhwcml2KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDg2LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA5MC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDkxOlx0ZXJyID0gb3R0b19lbWRpb19tYXBfcG9ydHMoZGV2KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDkyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA5NC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDk1Olx0ZXJyID0gb3R0b19lbWRpb19zZXR1cF90b3BvbG9neShwcml2KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDk2LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTEwNS1cdGZvcl9lYWNoX2NoaWxkX29mX25vZGVfc2NvcGVkKGRldi1cdTAwM2VvZl9ub2RlLCBjaGlsZCkge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMDY6XHRcdGVyciA9IG90dG9fZW1kaW9fcHJvYmVfb25lKGRldiwgcHJpdiwgY2hpbGQpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExMDctXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExMTMtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTExNDpzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzgzODBfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTE1LVx0LmFkZHJfbWFwX2Jhc2UgPSBSVEw4MzgwX1NNSV9QT1JUMF81X0FERFJfQ1RSTCxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTEyOC1cdC5wb2xsX2N0cmwgPSBSVEw4MzgwX1NNSV9QT0xMX0NUUkwsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEyOTpcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fODM4MF9zZXRfYnVzX2ZyZXF1ZW5jeSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTMwOlx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzgzODBfc2V0dXBfY29udHJvbGxlcixcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTMxOlx0LnJlYWRfYzIyID0gb3R0b19lbWRpb184MzgwX3JlYWRfYzIyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMzI6XHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jNDUsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEzMzpcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzgzODBfd3JpdGVfYzIyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMzQ6XHQud3JpdGVfYzQ1ID0gb3R0b19lbWRpb184MzgwX3dyaXRlX2M0NSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTM1LX07XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTEzNi1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTM3OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM5MF9pbmZvID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExMzgtXHQuY21kX2ZhaWwgPSBSVEw4MzkwX1BIWV9DVFJMX0ZBSUwsXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExNTMtXHQucG9sbF9jdHJsID0gUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE1NDpcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fODM5MF9zZXRfYnVzX2ZyZXF1ZW5jeSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTU1Olx0LnJlYWRfYzIyID0gb3R0b19lbWRpb184MzkwX3JlYWRfYzIyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExNTY6XHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE1NzpcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzIyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExNTg6XHQud3JpdGVfYzQ1ID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2M0NSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTU5LX07XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTE2MC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTYxOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMwMF9pbmZvID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExNjItXHQuYWRkcl9tYXBfYmFzZSA9IFJUTDkzMDBfU01JX1BPUlQwXzVfQUREUl9DVFJMLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTc2LVx0LnBvbGxfY3RybCA9IFJUTDkzMDBfU01JX1BPTExfQ1RSTCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTc3Olx0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb185MzAwX3NldF9idXNfZnJlcXVlbmN5LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExNzg6XHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExNzk6XHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jMjIsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE4MDpcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2M0NSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTgxOlx0LndyaXRlX2MyMiA9IG90dG9fZW1kaW9fOTMwMF93cml0ZV9jMjIsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE4MjpcdC53cml0ZV9jNDUgPSBvdHRvX2VtZGlvXzkzMDBfd3JpdGVfYzQ1LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExODMtfTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTg0LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExODU6c3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb185MzEwX2luZm8gPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTE4Ni1cdC5hZGRyX21hcF9iYXNlID0gUlRMOTMxMF9TTUlfUE9SVF9BRERSX0NUUkwsXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEyMDMtXHQucG9sbF9jdHJsID0gUlRMOTMxMF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTIwNDpcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fOTMxMF9zZXRfYnVzX2ZyZXF1ZW5jeSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMjA1Olx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMTBfc2V0dXBfY29udHJvbGxlcixcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMjA2Olx0LnJlYWRfYzIyID0gb3R0b19lbWRpb185MzEwX3JlYWRfYzIyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEyMDc6XHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jNDUsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTIwODpcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzkzMTBfd3JpdGVfYzIyLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEyMDk6XHQud3JpdGVfYzQ1ID0gb3R0b19lbWRpb185MzEwX3dyaXRlX2M0NSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMjEwLX07XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTIxMS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMjEyOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG90dG9fZW1kaW9faWRzW10gPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTIxMzpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtyZWFsdGVrLHJ0bDgzODAtbWRpb1wmIzM0OywgLmRhdGEgPSBcdTAwMjZvdHRvX2VtZGlvXzgzODBfaW5mbyB9LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEyMTQ6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cmVhbHRlayxydGw4MzkxLW1kaW9cJiMzNDssIC5kYXRhID0gXHUwMDI2b3R0b19lbWRpb184MzkwX2luZm8gfSxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMjE1Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3JlYWx0ZWsscnRsOTMwMS1tZGlvXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNm90dG9fZW1kaW9fOTMwMF9pbmZvIH0sXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTIxNjpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtyZWFsdGVrLHJ0bDkzMTEtbWRpb1wmIzM0OywgLmRhdGEgPSBcdTAwMjZvdHRvX2VtZGlvXzkzMTBfaW5mbyB9LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEyMTctXHR7fVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEyMTgtfTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMjE5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG90dG9fZW1kaW9faWRzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMjIwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEyMjE6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgb3R0b19lbWRpb19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTIyMjpcdC5wcm9iZSA9IG90dG9fZW1kaW9fcHJvYmUsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTIyMy1cdC5kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTIyNC1cdFx0Lm5hbWUgPSBcJiMzNDttZGlvLXJ0bDkzMDBcJiMzNDssXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTIyNTpcdFx0Lm9mX21hdGNoX3RhYmxlID0gb3R0b19lbWRpb19pZHMsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTIyNi1cdFx0LnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMjI5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEyMzA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihvdHRvX2VtZGlvX2RyaXZlcik7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTIzMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTY0NwoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFJUTDkzMDAgTURJTyBEcml2ZXIgUHJvYmUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgcHJvYmUgZnVuY3Rpb24gYW5kIGhvdyBpdCBoYW5kbGVzIHRoZSByZWdtYXAgYW5kIHBhcmVudCBkZXZpY2Ugc2V0dXAuIEkga25vdyB0aGUgZ2VuZXJhbCBhcmNoaXRlY3R1cmUsIGJ1dCBJIG5lZWQgYSByZWZyZXNoZXIgb24gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIFRpbWUgdG8gZ28gYmFjayBhbmQgY2hlY2sgdGhlIGNvZGUuCgpPa2F5LCBsZXQmIzM5O3MganVtcCBzdHJhaWdodCB0byBsaW5lcyAxMDY1IHRocm91Z2ggMTExNS4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaGVhcnQgb2YgdGhlIHByb2JlIGlzIGxpa2VseSBsb2NhdGVkLCB0aGUgY29yZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGhvdyB0aGUgcmVnbWFwIGlzIGNyZWF0ZWQgYW5kIGluaXRpYWxpemVkLCBob3cgdGhlIHBhcmVudCBkZXZpY2UgaXMgYXNzaWduZWQsIGFuZCBhbnkgc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzIGZvciB0aGlzIFJlYWx0ZWsgc3dpdGNoLiBHb3R0YSBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyBpbiBvcmRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDY1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDU1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEwNjU6XHRcbjEwNjY6XHRzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbjEwNjc6XHR7XG4xMDY4Olx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbjEwNjk6XHRcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXY7XG4xMDcwOlx0XHRpbnQgZXJyO1xuMTA3MTpcdFxuMTA3MjpcdFx0cHJpdiA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpO1xuMTA3MzpcdFx0aWYgKCFwcml2KVxuMTA3NDpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbjEwNzU6XHRcbjEwNzY6XHRcdGVyciA9IGRldm1fbXV0ZXhfaW5pdChkZXYsIFx1MDAyNnByaXYtXHUwMDNlbG9jayk7XG4xMDc3Olx0XHRpZiAoZXJyKVxuMTA3ODpcdFx0XHRyZXR1cm4gZXJyO1xuMTA3OTpcdFxuMTA4MDpcdFx0cHJpdi1cdTAwM2VpbmZvID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG4xMDgxOlx0XHRwcml2LVx1MDAzZXJlZ21hcCA9IHN5c2Nvbl9ub2RlX3RvX3JlZ21hcChkZXYtXHUwMDNlcGFyZW50LVx1MDAzZW9mX25vZGUpO1xuMTA4MjpcdFx0aWYgKElTX0VSUihwcml2LVx1MDAzZXJlZ21hcCkpXG4xMDgzOlx0XHRcdHJldHVybiBQVFJfRVJSKHByaXYtXHUwMDNlcmVnbWFwKTtcbjEwODQ6XHRcbjEwODU6XHRcdGVyciA9IG90dG9fZW1kaW9faW5pdF9wb2xsaW5nKHByaXYpO1xuMTA4NjpcdFx0aWYgKGVycilcbjEwODc6XHRcdFx0cmV0dXJuIGVycjtcbjEwODg6XHRcbjEwODk6XHRcdHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHByaXYpO1xuMTA5MDpcdFxuMTA5MTpcdFx0ZXJyID0gb3R0b19lbWRpb19tYXBfcG9ydHMoZGV2KTtcbjEwOTI6XHRcdGlmIChlcnIpXG4xMDkzOlx0XHRcdHJldHVybiBlcnI7XG4xMDk0Olx0XG4xMDk1Olx0XHRlcnIgPSBvdHRvX2VtZGlvX3NldHVwX3RvcG9sb2d5KHByaXYpO1xuMTA5NjpcdFx0aWYgKGVycilcbjEwOTc6XHRcdFx0cmV0dXJuIGVycjtcbjEwOTg6XHRcbjEwOTk6XHRcdGlmIChwcml2LVx1MDAzZWluZm8tXHUwMDNlc2V0dXBfY29udHJvbGxlcikge1xuMTEwMDpcdFx0XHRlcnIgPSBwcml2LVx1MDAzZWluZm8tXHUwMDNlc2V0dXBfY29udHJvbGxlcihwcml2KTtcbjExMDE6XHRcdFx0aWYgKGVycilcbjExMDI6XHRcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXCYjMzQ7ZmFpbGVkIHRvIHNldHVwIE1ESU8gYnVzIGNvbnRyb2xsZXJcXG5cJiMzNDspO1xuMTEwMzpcdFx0fVxuMTEwNDpcdFxuMTEwNTpcdFx0Zm9yX2VhY2hfY2hpbGRfb2Zfbm9kZV9zY29wZWQoZGV2LVx1MDAzZW9mX25vZGUsIGNoaWxkKSB7XG4xMTA2Olx0XHRcdGVyciA9IG90dG9fZW1kaW9fcHJvYmVfb25lKGRldiwgcHJpdiwgY2hpbGQpO1xuMTEwNzpcdFx0XHRpZiAoZXJyKVxuMTEwODpcdFx0XHRcdHJldHVybiBlcnI7XG4xMTA5Olx0XHR9XG4xMTEwOlx0XG4xMTExOlx0XHRyZXR1cm4gMDtcbjExMTI6XHR9XG4xMTEzOlx0XG4xMTE0Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzgwX2luZm8gPSB7XG4xMTE1Olx0XHQuYWRkcl9tYXBfYmFzZSA9IFJUTDgzODBfU01JX1BPUlQwXzVfQUREUl9DVFJMLFxuMTExNjpcdFx0LmNtZF9mYWlsID0gUlRMODM4MF9QSFlfQ1RSTF9GQUlMLFxuMTExNzpcdFx0LmNtZF9yZWFkID0gUlRMODM4MF9QSFlfQ1RSTF9SRUFELFxuMTExODpcdFx0LmNtZF93cml0ZSA9IFJUTDgzODBfUEhZX0NUUkxfV1JJVEUsXG4xMTE5Olx0XHQuY21kX3JlZ3MgPSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NzYwCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYG90dG9fZW1kaW9fZHJpdmVyYCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBgb3R0b19lbWRpb19kcml2ZXJgIGhhcyBgLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlO2Ag4oCTIHRoYXQmIzM5O3MgdGhlIGZpcnN0IHRoaW5nIHRvIG5vdGUuIEl0JiMzOTtzIHRyaWdnZXJlZCBieSB0aGUgYG90dG9fZW1kaW9faWRzYCBvZiB0aGUgT0YuIFRoaXMgZHJpdmVyIGlzIGZvciB0aG9zZSBSZWFsdGVrIHN3aXRjaGVzOiBSVEw4Mzh4L1JUTDgzOXgvUlRMOTMweC9SVEw5MzF4LiBFc3NlbnRpYWxseSwgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHRoZXNlIE1JUFMtYmFzZWQgT3R0byBhcmNoaXRlY3R1cmUgTUFDSF9SRUFMVEVLX1JUTCBTb0NzLgoKTm93LCBob2xkIG9uLi4uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGBhbWQ2NGAuIFRoYXQmIzM5O3MgYSByZWQgZmxhZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYE1BQ0hfUkVBTFRFS19SVExgIGlzIHN0cmljdGx5IE1JUFMsIG9yIGlmIGl0JiMzOTtzIHBvdGVudGlhbGx5IGNyb3NzLWNvbXBpbGFibGUuIENhbiB0aGlzIGV2ZW4gKmV4aXN0KiBvbiBhbiBhbWQ2NCBzeXN0ZW0sIG9yIGEgc3RhbmRhcmQgUUVNVSBWTSBzZXR1cD8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXJlIGBNQUNIX1JFQUxURUtfUlRMYCBpcyBhY3R1YWxseSBkZWZpbmVkLCBzbyBJIGNhbiB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmFsIGFzc3VtcHRpb25zIGJlaW5nIG1hZGUuIFRoaXMgZmVlbHMgbGlrZSBhbiBhcmNoaXRlY3R1cmFsIG1pc21hdGNoIEkgbmVlZCB0byByZWNvbmNpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01BQ0hfUkVBTFRFS19SVEwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9taXBzL0tjb25maWc9NjgxPWNvbmZpZyBSQUxJTktcbi0tXG5hcmNoL21pcHMvS2NvbmZpZy02OTgtXG5hcmNoL21pcHMvS2NvbmZpZzo2OTk6Y29uZmlnIE1BQ0hfUkVBTFRFS19SVExcbmFyY2gvbWlwcy9LY29uZmlnLTcwMC1cdGJvb2wgXCYjMzQ7UmVhbHRlayBSVEw4Mzh4L1JUTDgzOXggYmFzZWQgbWFjaGluZXNcJiMzNDtcbi0tXG5hcmNoL21pcHMvYm9vdC9kdHMvcmVhbHRlay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmFyY2gvbWlwcy9ib290L2R0cy9yZWFsdGVrL01ha2VmaWxlOjI6ZHRiLSQoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpXHQmIzQzOz0gY2lzY29fc2cyMjAtMjYuZHRiXG5hcmNoL21pcHMvYm9vdC9kdHMvcmVhbHRlay9NYWtlZmlsZTozOmR0Yi0kKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKVx0JiM0Mzs9IGNhbWVvLXJ0bDkzMDJjLTJ4LXJ0bDgyMjQtMnhnZS5kdGJcbi0tXG5hcmNoL21pcHMvZ2VuZXJpYy9NYWtlZmlsZT0xNT1vYmotJChDT05GSUdfVklSVF9CT0FSRF9SQU5DSFUpXHRcdCYjNDM7PSBib2FyZC1yYW5jaHUub1xuYXJjaC9taXBzL2dlbmVyaWMvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpXHRcdCYjNDM7PSBib2FyZC1yZWFsdGVrLm9cbi0tXG5kcml2ZXJzL2dwaW8vS2NvbmZpZz02MjU9Y29uZmlnIEdQSU9fUkVBTFRFS19PVFRPXG5kcml2ZXJzL2dwaW8vS2NvbmZpZy02MjYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIE90dG8gR1BJTyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2dwaW8vS2NvbmZpZzo2Mjc6XHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL2dwaW8vS2NvbmZpZzo2Mjg6XHRkZWZhdWx0IE1BQ0hfUkVBTFRFS19SVExcbmRyaXZlcnMvZ3Bpby9LY29uZmlnLTYyOS1cdHNlbGVjdCBHUElPX0dFTkVSSUNcbi0tXG5kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZz0xMTAzPWNvbmZpZyBJMkNfUlRMOTMwMFxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWctMTEwNC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgUlRMOTMwMCBJMkMgY29udHJvbGxlclwmIzM0O1xuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWc6MTEwNTpcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvaTJjL2J1c3Nlcy9LY29uZmlnLTExMDYtXHRoZWxwXG4tLVxuZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlPTEzMD1vYmotJChDT05GSUdfU0wyOENQTERfSU5UQylcdFx0JiM0Mzs9IGlycS1zbDI4Y3BsZC5vXG5kcml2ZXJzL2lycWNoaXAvTWFrZWZpbGU6MTMxOm9iai0kKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKVx0XHQmIzQzOz0gaXJxLXJlYWx0ZWstcnRsLm9cbmRyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZS0xMzItb2JqLSQoQ09ORklHX1dQQ000NTBfQUlDKVx0XHQmIzQzOz0gaXJxLXdwY200NTAtYWljLm9cbi0tXG5kcml2ZXJzL210ZC9uYW5kL0tjb25maWc9NjQ9Y29uZmlnIE1URF9OQU5EX0VDQ19SRUFMVEVLXG4tLVxuZHJpdmVycy9tdGQvbmFuZC9LY29uZmlnLTY2LSAgICAgICAgZGVwZW5kcyBvbiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IEhBU19ETUFcbmRyaXZlcnMvbXRkL25hbmQvS2NvbmZpZzo2NzogICAgICAgIGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvbXRkL25hbmQvS2NvbmZpZy02OC0gICAgICAgIHNlbGVjdCBNVERfTkFORF9FQ0Ncbi0tXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWc9MTc0PWNvbmZpZyBNRElPX1JFQUxURUtfUlRMOTMwMFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTE3NS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgUlRMODN4eC9SVEw5M3h4IE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZzoxNzY6XHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTc3LVx0aGVscFxuLS1cbmRyaXZlcnMvc3BpL0tjb25maWc9OTE2PWNvbmZpZyBTUElfUkVBTFRFS19TTkFORFxuZHJpdmVycy9zcGkvS2NvbmZpZy05MTctXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIFNQSS1OQU5EIEZsYXNoIENvbnRyb2xsZXJcJiMzNDtcbmRyaXZlcnMvc3BpL0tjb25maWc6OTE4Olx0ZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy9zcGkvS2NvbmZpZy05MTktXHRzZWxlY3QgUkVHTUFQXG4tLVxuZHJpdmVycy9zcGkvTWFrZWZpbGU9MTMxPW9iai0kKENPTkZJR19TUElfUkI0WFgpXHRcdFx0JiM0Mzs9IHNwaS1yYjR4eC5vXG5kcml2ZXJzL3NwaS9NYWtlZmlsZToxMzI6b2JqLSQoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpXHRcdCYjNDM7PSBzcGktcmVhbHRlay1ydGwub1xuZHJpdmVycy9zcGkvTWFrZWZpbGUtMTMzLW9iai0kKENPTkZJR19TUElfUkVBTFRFS19TTkFORClcdFx0JiM0Mzs9IHNwaS1yZWFsdGVrLXJ0bC1zbmFuZC5vXG4tLVxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnPTExMTM9Y29uZmlnIFJFQUxURUtfT1RUT19XRFRcbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZy0xMTE0LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBPdHRvIE1JUFMgd2F0Y2hkb2cgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnOjExMTU6XHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTExNi1cdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuLS1cbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZy0xMTE4LVx0c2VsZWN0IFJFR01BUF9NTUlPXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc6MTExOTpcdGRlZmF1bHQgTUFDSF9SRUFMVEVLX1JUTFxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnLTExMjAtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NDUzCgkJCQkJCQlvdXRwdXQ6IDE2NgoJCQkJCQkJdGhvdWdodHM6IDg5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGFiaWxpdHkgQW5hbHlzaXM6IFdvcnRoRnV6emluZz1mYWxzZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcsIGFuZCB0aGUgcHJpbWFyeSBnYXRlIGlzIHJlYWNoYWJpbGl0eS4gSSYjMzk7bSB0YXJnZXRpbmcgdGhlIGFtZDY0IGFyY2hpdGVjdHVyZSwgc28gSSBuZWVkIHRvIGFzc2VzcyBpZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBhY3R1YWxseSAqZXhlY3V0YWJsZSogaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuCgpGaXJzdCwgSSBpZGVudGlmaWVkIHNvbWUgbmVnYXRpdmUgY3JpdGVyaWEuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBsb29raW5nIGZvciAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IOKAkyBjb2RlIHRpZWQgdG8gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGVudmlyb25tZW50cyBvciBhcmNoaXRlY3R1cmUtZXhjbHVzaXZlIGNvZGUuCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aGlzIGBtZGlvLXJlYWx0ZWstcnRsOTMwMGAgZHJpdmVyIGlzIGFjdHVhbGx5ICpyZWFjaGFibGUqLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgaXQmIzM5O3MgYW4gTURJTyBjb250cm9sbGVyIGRyaXZlciBmb3IgUmVhbHRlayBSVEw4Mzh4LzkzeHggTUlQUyBTb0NzLCB3aGljaCBpbW1lZGlhdGVseSByYWlzZXMgYSByZWQgZmxhZy4KCkkgZG92ZSBpbnRvIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBpdHNlbGYuIEl04oCZcyBhIHBsYXRmb3JtIGRyaXZlciwgc28gaXTigJlzIGxpbmtlZCB0byBzcGVjaWZpYyBoYXJkd2FyZS4gQ3JpdGljYWxseSwgYHN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlYCBtZWFucyBJIGNhbiYjMzk7dCBldmVuIG1hbnVhbGx5IGZvcmNlIGl0IHRvIGJpbmQuIEl0IHJlbGllcyBvbiBhIHN5c2NvbiBub2RlLCBvYnRhaW5lZCB2aWEgYHN5c2Nvbl9ub2RlX3RvX3JlZ21hcGAsIG1lYW5pbmcgaXRzIHRpZWQgdG8gc3BlY2lmaWMgaGFyZHdhcmUuIEFuZCBpdCYjMzk7cyBmb3IgUmVhbHRlayYjMzk7cyBNSVBTIFNvQyBhcmNoaXRlY3R1cmUuIFRoZSB0YXJnZXQgaXMgYW1kNjQuIFRoZXJlZm9yZSwgaXQmIzM5O3Mgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiBJdCYjMzk7cyBhbiBhcmNoLWV4Y2x1c2l2ZSBNSVBTIFNvQyBkcml2ZXIgdGhhdCBjYW4mIzM5O3QgYmUgdXNlZCBvbiBhbWQ2NCBpbiBhbnkgc3RhbmRhcmQgZW52aXJvbm1lbnQuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSB0cmlhZ2UgZ3VpZGVsaW5lcy4gVGhleSYjMzk7cmUgY3J5c3RhbCBjbGVhcjogJiMzNDtJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGXigKYgaXQgTVVTVCBOT1QgYmUgZnV6emVkLiYjMzQ7IFRoZSBndWlkZWxpbmVzIHNwZWNpZmljYWxseSBtZW50aW9uIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzIGFuZCBhcmNoaXRlY3R1cmUtZXhjbHVzaXZlIGNvZGUgcGF0aHMgYXMgZXhhbXBsZXMuIFRoYXQgaXMgZXhhY3RseSB3aGF0IEkgaGF2ZS4KClNvLCB0aGUgZmlsZXMgYWZmZWN0ZWQgYXJlOiBkb2N1bWVudGF0aW9uIGFuZCB0aGUgZHJpdmVyLiBUaGUgZHJpdmVyLCBgbWRpby1yZWFsdGVrLXJ0bDkzMDAuY2AsIGlzIHRoZSBjcml0aWNhbCBlbGVtZW50LiBJdCYjMzk7cyBmb3IgYSBzcGVjaWZpYyBSZWFsdGVrIE1JUFMgU29DIGFuZCBpcyBub3QgcmVhY2hhYmxlIG9uIGFtZDY0LgoKQmFzZWQgb24gdGhpcywgSSYjMzk7bSBzZXR0aW5nIGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGUgZHJpdmVyIHRhcmdldHMgYSBzcGVjaWZpYyBSZWFsdGVrIE1JUFMgU29DLiBJdCBjYW5ub3QgZXhlY3V0ZSBpbiBhbnkgc3RhbmRhcmQgYW1kNjQgZW52aXJvbm1lbnQuIFRoZSBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgIGFyZSBpcnJlbGV2YW50IGhlcmUuIFRpbWUgdG8gc3VibWl0IHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBEZXZpY2V0cmVlIGJpbmRpbmdzIGRvY3VtZW50YXRpb24gYW5kIGFkZHMgTURJTyBidXMgY2xvY2sgZnJlcXVlbmN5IGNvbmZpZ3VyYXRpb24gc3VwcG9ydCB0byB0aGUgUmVhbHRlayBSVEw4Mzh4L1JUTDgzOXgvUlRMOTMweC9SVEw5MzF4IE1ESU8gY29udHJvbGxlciBkcml2ZXIgKGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYykuIFRoaXMgZHJpdmVyIGlzIGRlc2lnbmVkIHNwZWNpZmljYWxseSBmb3IgUmVhbHRlayBPdHRvIE1JUFMgc3dpdGNoIFNvQ3MgKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKSwgcmVxdWlyZXMgT0Ygc3lzY29uIHBhcmVudCBub2Rlcywgc3VwcHJlc3NlcyBtYW51YWwgZHJpdmVyIGJpbmRpbmcgdmlhIHN5c2ZzLCBhbmQgY2Fubm90IGJlIHByb2JlZCBvciBleGVjdXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCBRRU1VL0dDRSB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIERldmljZXRyZWUgYmluZGluZ3MgZG9jdW1lbnRhdGlvbiBhbmQgYWRkcyBNRElPIGJ1cyBjbG9jayBmcmVxdWVuY3kgY29uZmlndXJhdGlvbiBzdXBwb3J0IHRvIHRoZSBSZWFsdGVrIFJUTDgzOHgvUlRMODM5eC9SVEw5MzB4L1JUTDkzMXggTURJTyBjb250cm9sbGVyIGRyaXZlciAoZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jKS4gVGhpcyBkcml2ZXIgaXMgZGVzaWduZWQgc3BlY2lmaWNhbGx5IGZvciBSZWFsdGVrIE90dG8gTUlQUyBzd2l0Y2ggU29DcyAoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpLCByZXF1aXJlcyBPRiBzeXNjb24gcGFyZW50IG5vZGVzLCBzdXBwcmVzc2VzIG1hbnVhbCBkcml2ZXIgYmluZGluZyB2aWEgc3lzZnMsIGFuZCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIGFtZDY0IFFFTVUvR0NFIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjAyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTowMjoyMy4yMTI1MDU1MzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDExMzc0NjM4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgRGV2aWNldHJlZSBiaW5kaW5ncyBkb2N1bWVudGF0aW9uIGFuZCBhZGRzIE1ESU8gYnVzIGNsb2NrIGZyZXF1ZW5jeSBjb25maWd1cmF0aW9uIHN1cHBvcnQgdG8gdGhlIFJlYWx0ZWsgUlRMODM4eC9SVEw4Mzl4L1JUTDkzMHgvUlRMOTMxeCBNRElPIGNvbnRyb2xsZXIgZHJpdmVyIChkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMpLiBUaGlzIGRyaXZlciBpcyBkZXNpZ25lZCBzcGVjaWZpY2FsbHkgZm9yIFJlYWx0ZWsgT3R0byBNSVBTIHN3aXRjaCBTb0NzIChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTCksIHJlcXVpcmVzIE9GIHN5c2NvbiBwYXJlbnQgbm9kZXMsIHN1cHByZXNzZXMgbWFudWFsIGRyaXZlciBiaW5kaW5nIHZpYSBzeXNmcywgYW5kIGNhbm5vdCBiZSBwcm9iZWQgb3IgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgUUVNVS9HQ0UgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MDI6MjMuMjEyNTEwMzI3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjgyMTQwNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhODdkMDFmMmM4ZjUxNzFhYzU0MGZjZGYxZTQyNWQ0YTQ4OWVkZWQ1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gU2VwIDYgMjE6MDI6MjIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZWFsdGVrLHJ0bDkzMDEtbWRpby55YW1sXFxuaW5kZXggNjdlMGIyM2E4NDcwZS4uODg1MDJkMDE3ZWVkYiAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxcXG5AQCAtNTYsNiArNTYsOSBAQCBwYXR0ZXJuUHJvcGVydGllczpcXG4gICAgICAgcmVnOlxcbiAgICAgICAgIG1heEl0ZW1zOiAxXFxuIFxcbisgICAgICBjbG9jay1mcmVxdWVuY3k6XFxuKyAgICAgICAgZGVmYXVsdDogMjUwMDAwMFxcbitcXG4gICAgIHJlcXVpcmVkOlxcbiAgICAgICAtIHJlZ1xcbiBcXG5AQCAtNzEsNiArNzQsNDMgQEAgcmVxdWlyZWQ6XFxuICAgLSBjb21wYXRpYmxlXFxuICAgLSByZWdcXG4gXFxuK2FsbE9mOlxcbisgIC0gaWY6XFxuKyAgICAgIHByb3BlcnRpZXM6XFxuKyAgICAgICAgY29tcGF0aWJsZTpcXG4rICAgICAgICAgIGNvbnRhaW5zOlxcbisgICAgICAgICAgICBlbnVtOlxcbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw4MzgwLW1kaW9cXG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM4MS1tZGlvXFxuKyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzODItbWRpb1xcbisgICAgdGhlbjpcXG4rICAgICAgcGF0dGVyblByb3BlcnRpZXM6XFxuKyAgICAgICAgJ15tZGlvLWJ1c0BbMC0zXSQnOlxcbisgICAgICAgICAgcHJvcGVydGllczpcXG4rICAgICAgICAgICAgY2xvY2stZnJlcXVlbmN5OlxcbisgICAgICAgICAgICAgIGVudW06IFsyNTAwMDAwLCAxMDAwMDAwMF1cXG4rICAtIGlmOlxcbisgICAgICBwcm9wZXJ0aWVzOlxcbisgICAgICAgIGNvbXBhdGlibGU6XFxuKyAgICAgICAgICBjb250YWluczpcXG4rICAgICAgICAgICAgZW51bTpcXG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM5MS1tZGlvXFxuKyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzOTItbWRpb1xcbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw4MzkzLW1kaW9cXG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMS1tZGlvXFxuKyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDkzMDJiLW1kaW9cXG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMmMtbWRpb1xcbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzAzLW1kaW9cXG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMxMS1tZGlvXFxuKyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDkzMTItbWRpb1xcbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzEzLW1kaW9cXG4rICAgIHRoZW46XFxuKyAgICAgIHBhdHRlcm5Qcm9wZXJ0aWVzOlxcbisgICAgICAgICdebWRpby1idXNAWzAtM10kJzpcXG4rICAgICAgICAgIHByb3BlcnRpZXM6XFxuKyAgICAgICAgICAgIGNsb2NrLWZyZXF1ZW5jeTpcXG4rICAgICAgICAgICAgICBlbnVtOiBbMTI1MDAwMCwgMjUwMDAwMCwgNTAwMDAwMF1cXG4rXFxuIHVuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcXG4gXFxuIGV4YW1wbGVzOlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcXG5pbmRleCAxMWQwNzhlZjk0MWNkLi44ZWRiMGJhMGJjZGQxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY1xcbkBAIC0xMzAsNiArMTMwLDcgQEBcXG4gI2RlZmluZSBSVEw4MzgwX05VTV9QQUdFU1xcdFxcdFxcdDQwOTZcXG4gI2RlZmluZSBSVEw4MzgwX05VTV9QT1JUU1xcdFxcdFxcdDI4XFxuICNkZWZpbmUgUlRMODM4MF9TTUlfR0xCX0NUUkxcXHRcXHRcXHQweGExMDBcXG4rI2RlZmluZSAgIFJUTDgzODBfU01JX0ZSRVFfU0VMXFx0XFx0XFx0QklUKDEpXFxuICNkZWZpbmUgICBSVEw4MzgwX1NNSV9QSFlfUEFUQ0hfRE9ORVxcdFxcdEJJVCgxNSlcXG4gI2RlZmluZSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMFxcdFxcdDB4YTFiOFxcbiAjZGVmaW5lIFJUTDgzODBfU01JX0FDQ0VTU19QSFlfQ1RSTF8xXFx0XFx0MHhhMWJjXFxuQEAgLTE2OSwxMiArMTcwLDE1IEBAXFxuICNkZWZpbmUgUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0xPV1xcdFxcdDB4MDNlNFxcbiAjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9ISUdIXFx0XFx0MHgwM2U4XFxuICNkZWZpbmUgUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkxcXHRcXHQweDAzZmNcXG4rI2RlZmluZSBSVEw4MzkwX1NNSV9HTEJfQ1RSTFxcdFxcdFxcdDB4MDNmOFxcbisjZGVmaW5lICAgUlRMODM5MF9TTUlfRlJFUV9TRUxcXHRcXHRcXHRHRU5NQVNLKDYsIDUpXFxuIFxcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX0JVU0VTXFx0XFx0XFx0NFxcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX1BBR0VTXFx0XFx0XFx0NDA5NlxcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX1BPUlRTXFx0XFx0XFx0MjhcXG4gI2RlZmluZSBSVEw5MzAwX1NNSV9HTEJfQ1RSTFxcdFxcdFxcdDB4Y2EwMFxcbiAjZGVmaW5lICAgUlRMOTMwMF9HTEJfQ1RSTF9JTlRGX1NFTChpbnRmKVxcdEJJVCgxNiArIChpbnRmKSlcXG4rI2RlZmluZSAgIFJUTDkzMDBfU01JX0ZSRVFfU0VMKGludGYpXFx0XFx0R0VOTUFTSygoaW50ZikgKiAyICsgOSwgKGludGYpICogMiArIDgpXFxuICNkZWZpbmUgUlRMOTMwMF9TTUlfUE9SVDBfMTVfUE9MTElOR19TRUxcXHQweGNhMDhcXG4gI2RlZmluZSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMFxcdFxcdDB4Y2I3MFxcbiAjZGVmaW5lIFJUTDkzMDBfU01JX0FDQ0VTU19QSFlfQ1RSTF8xXFx0XFx0MHhjYjc0XFxuQEAgLTE5Niw2ICsyMDAsOCBAQFxcbiAjZGVmaW5lIFJUTDkzMTBfTlVNX0JVU0VTXFx0XFx0XFx0NFxcbiAjZGVmaW5lIFJUTDkzMTBfTlVNX1BBR0VTXFx0XFx0XFx0ODE5MlxcbiAjZGVmaW5lIFJUTDkzMTBfTlVNX1BPUlRTXFx0XFx0XFx0NTZcXG4rI2RlZmluZSBSVEw5MzEwX1NNSV9HTEJfQ1RSTDBcXHRcXHRcXHQweDBjYzBcXG4rI2RlZmluZSAgIFJUTDkzMTBfU01JX0ZSRVFfU0VMKGludGYpXFx0XFx0R0VOTUFTSygoaW50ZikgKiAyICsgNSwgKGludGYpICogMiArIDQpXFxuICNkZWZpbmUgUlRMOTMxMF9TTUlfR0xCX0NUUkwxXFx0XFx0XFx0MHgwY2JjXFxuICNkZWZpbmUgICBSVEw5MzEwX1NNSV9HTEJfRk1UX1NFTF9DNDUoaW50ZilcXHRCSVQoKGludGYpICogMiArIDEpXFxuICNkZWZpbmUgUlRMOTMxMF9TTUlfSU5EUlRfQUNDRVNTX0NUUkxfMFxcdFxcdDB4MGMwMFxcbkBAIC0yNTEsNiArMjU3LDcgQEAgc3RydWN0IG90dG9fZW1kaW9fcHJpdiB7XFxuIFxcdHN0cnVjdCByZWdtYXAgKnJlZ21hcDtcXG4gXFx0c3RydWN0IG11dGV4IGxvY2s7IC8qIHByb3RlY3QgSFcgYWNjZXNzICovXFxuIFxcdERFQ0xBUkVfQklUTUFQKHZhbGlkX3BvcnRzLCBNQVhfUE9SVFMpO1xcbitcXHR1MzIgZ2xvYmFsX2ZyZXE7XFxuIFxcdHUxNiBwYWdlW01BWF9QT1JUU107XFxuIFxcdHU4IHNtaV9idXNbTUFYX1BPUlRTXTtcXG4gXFx0dTggc21pX2FkZHJbTUFYX1BPUlRTXTtcXG5AQCAtMjY5LDYgKzI3Niw3IEBAIHN0cnVjdCBvdHRvX2VtZGlvX2luZm8ge1xcbiBcXHR1OCBudW1fcG9ydHM7XFxuIFxcdHUxNiBudW1fcGFnZXM7XFxuIFxcdHUzMiBwb2xsX2N0cmw7XFxuK1xcdGludCAoKnNldF9idXNfZnJlcXVlbmN5KShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSk7XFxuIFxcdGludCAoKnNldHVwX2NvbnRyb2xsZXIpKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpO1xcbiBcXHRpbnQgKCpyZWFkX2MyMikoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpO1xcbiBcXHRpbnQgKCpyZWFkX2M0NSkoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSk7XFxuQEAgLTc0MCw2ICs3NDgsMTcgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3NldHVwX3RvcG9sb2d5KHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSlcXG4re1xcbitcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbitcXG4rXFx0aWYgKGZyZXEgIT0gMjUwMDAwMCBcXHUwMDI2XFx1MDAyNiBmcmVxICE9IDEwMDAwMDAwKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdHJldHVybiByZWdtYXBfYXNzaWduX2JpdHMocHJpdi1cXHUwMDNlcmVnbWFwLCBSVEw4MzgwX1NNSV9HTEJfQ1RSTCxcXG4rXFx0XFx0XFx0XFx0ICBSVEw4MzgwX1NNSV9GUkVRX1NFTCwgZnJlcSA9PSAxMDAwMDAwMCk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG4ge1xcbiBcXHQvKlxcbkBAIC03NDksNiArNzY4LDQwIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG4gXFx0cmV0dXJuIHJlZ21hcF9zZXRfYml0cyhwcml2LVxcdTAwM2VyZWdtYXAsIFJUTDgzODBfU01JX0dMQl9DVFJMLCBSVEw4MzgwX1NNSV9QSFlfUEFUQ0hfRE9ORSk7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxcbit7XFxuK1xcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuK1xcdHUzMiB2YWw7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRpZiAoZnJlcSAhPSAxMjUwMDAwIFxcdTAwMjZcXHUwMDI2IGZyZXEgIT0gMjUwMDAwMCBcXHUwMDI2XFx1MDAyNiBmcmVxICE9IDUwMDAwMDApXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRpZiAocHJpdi1cXHUwMDNlZ2xvYmFsX2ZyZXEpXFxuK1xcdFxcdHJldHVybiBmcmVxID09IHByaXYtXFx1MDAzZWdsb2JhbF9mcmVxID8gMCA6IC1FSU5WQUw7XFxuK1xcbitcXHR2YWwgPSBGSUVMRF9QUkVQKFJUTDgzOTBfU01JX0ZSRVFfU0VMLCBmcmVxIC8gMjUwMDAwMCk7XFxuK1xcdGVyciA9IHJlZ21hcF91cGRhdGVfYml0cyhwcml2LVxcdTAwM2VyZWdtYXAsIFJUTDgzOTBfU01JX0dMQl9DVFJMLCBSVEw4MzkwX1NNSV9GUkVRX1NFTCwgdmFsKTtcXG4rXFx0aWYgKCFlcnIpXFxuK1xcdFxcdHByaXYtXFx1MDAzZWdsb2JhbF9mcmVxID0gZnJlcTtcXG4rXFxuK1xcdHJldHVybiBlcnI7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxcbit7XFxuK1xcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuK1xcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBidXMtXFx1MDAzZXByaXY7XFxuK1xcdHUzMiBtYXNrLCB2YWw7XFxuK1xcbitcXHRpZiAoZnJlcSAhPSAxMjUwMDAwIFxcdTAwMjZcXHUwMDI2IGZyZXEgIT0gMjUwMDAwMCBcXHUwMDI2XFx1MDAyNiBmcmVxICE9IDUwMDAwMDApXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0bWFzayA9IFJUTDkzMDBfU01JX0ZSRVFfU0VMKGNoYW4tXFx1MDAzZW1kaW9fYnVzKTtcXG4rXFx0dmFsID0gZmllbGRfcHJlcChtYXNrLCBmcmVxIC8gMjUwMDAwMCk7XFxuK1xcbitcXHRyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtXFx1MDAzZXJlZ21hcCwgUlRMOTMwMF9TTUlfR0xCX0NUUkwsIG1hc2ssIHZhbCk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG4ge1xcbiBcXHR1MzIgZ2xiX2N0cmxfbWFzayA9IDAsIGdsYl9jdHJsX3ZhbCA9IDA7XFxuQEAgLTc2OSw2ICs4MjIsMjEgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpXFxuK3tcXG4rXFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG4rXFx0c3RydWN0IG90dG9fZW1kaW9fY2hhbiAqY2hhbiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG4rXFx0dTMyIG1hc2ssIHZhbDtcXG4rXFxuK1xcdGlmIChmcmVxICE9IDEyNTAwMDAgXFx1MDAyNlxcdTAwMjYgZnJlcSAhPSAyNTAwMDAwIFxcdTAwMjZcXHUwMDI2IGZyZXEgIT0gNTAwMDAwMClcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbitcXHRtYXNrID0gUlRMOTMxMF9TTUlfRlJFUV9TRUwoY2hhbi1cXHUwMDNlbWRpb19idXMpO1xcbitcXHR2YWwgPSBmaWVsZF9wcmVwKG1hc2ssIGZyZXEgLyAyNTAwMDAwKTtcXG4rXFxuK1xcdHJldHVybiByZWdtYXBfdXBkYXRlX2JpdHMocHJpdi1cXHUwMDNlcmVnbWFwLCBSVEw5MzEwX1NNSV9HTEJfQ1RSTDAsIG1hc2ssIHZhbCk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG4ge1xcbiBcXHRpbnQgaSwgZXJyO1xcbkBAIC04MzEsMTQgKzg5OSwxNCBAQCBzdGF0aWMgdm9pZCBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LFxcbi1cXHRcXHRcXHRcXHQgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKm5vZGUpXFxuK1xcdFxcdFxcdFxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcXG4ge1xcbiBcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuO1xcbiBcXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xcbi1cXHR1MzIgbWRpb19idXM7XFxuK1xcdHUzMiBtZGlvX2J1cywgZnJlcTtcXG4gXFx0aW50IGVycjtcXG4gXFxuLVxcdGVyciA9IGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcXFwicmVnXFxcIiwgXFx1MDAyNm1kaW9fYnVzKTtcXG4rXFx0ZXJyID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgXFxcInJlZ1xcXCIsIFxcdTAwMjZtZGlvX2J1cyk7XFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCBcXFwidW5kZWZpbmVkIHNtaSBidXMgbnVtYmVyXFxcXG5cXFwiKTtcXG4gXFxuQEAgLTg2NSw3ICs5MzMsMTQgQEAgc3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXZcXG4gXFxuIFxcdHNucHJpbnRmKGJ1cy1cXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXFxcIiVzLSVkXFxcIiwgZGV2X25hbWUoZGV2KSwgbWRpb19idXMpO1xcbiBcXG4tXFx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCB0b19vZl9ub2RlKG5vZGUpKTtcXG4rXFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsIFxcXCJjbG9jay1mcmVxdWVuY3lcXFwiLCBcXHUwMDI2ZnJlcSkpXFxuK1xcdFxcdGZyZXEgPSAyNTAwMDAwO1xcbitcXHRlcnIgPSBwcml2LVxcdTAwM2VpbmZvLVxcdTAwM2VzZXRfYnVzX2ZyZXF1ZW5jeShidXMsIGZyZXEpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXFxcImNhbm5vdCBzZXQgZnJlcXVlbmN5ICV1IGZvciBNRElPIGJ1cyAlZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ICAgICBmcmVxLCBtZGlvX2J1cyk7XFxuK1xcbitcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpO1xcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXFxcImNhbm5vdCByZWdpc3RlciBNRElPIGJ1c1xcXFxuXFxcIik7XFxuIFxcbkBAIC0xMDI3LDcgKzExMDIsNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBlcnIsIFxcXCJmYWlsZWQgdG8gc2V0dXAgTURJTyBidXMgY29udHJvbGxlclxcXFxuXFxcIik7XFxuIFxcdH1cXG4gXFxuLVxcdGRldmljZV9mb3JfZWFjaF9jaGlsZF9ub2RlX3Njb3BlZChkZXYsIGNoaWxkKSB7XFxuK1xcdGZvcl9lYWNoX2NoaWxkX29mX25vZGVfc2NvcGVkKGRldi1cXHUwMDNlb2Zfbm9kZSwgY2hpbGQpIHtcXG4gXFx0XFx0ZXJyID0gb3R0b19lbWRpb19wcm9iZV9vbmUoZGV2LCBwcml2LCBjaGlsZCk7XFxuIFxcdFxcdGlmIChlcnIpXFxuIFxcdFxcdFxcdHJldHVybiBlcnI7XFxuQEAgLTEwNTEsNiArMTEyNiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM4MF9pbmZvID0ge1xcbiBcXHQubnVtX3BhZ2VzID0gUlRMODM4MF9OVU1fUEFHRVMsXFxuIFxcdC5udW1fcG9ydHMgPSBSVEw4MzgwX05VTV9QT1JUUyxcXG4gXFx0LnBvbGxfY3RybCA9IFJUTDgzODBfU01JX1BPTExfQ1RSTCxcXG4rXFx0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb184MzgwX3NldF9idXNfZnJlcXVlbmN5LFxcbiBcXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fODM4MF9zZXR1cF9jb250cm9sbGVyLFxcbiBcXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIsXFxuIFxcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM4MF9yZWFkX2M0NSxcXG5AQCAtMTA3NSw2ICsxMTUxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzkwX2luZm8gPSB7XFxuIFxcdC5udW1fcGFnZXMgPSBSVEw4MzkwX05VTV9QQUdFUyxcXG4gXFx0Lm51bV9wb3J0cyA9IFJUTDgzOTBfTlVNX1BPUlRTLFxcbiBcXHQucG9sbF9jdHJsID0gUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsXFxuK1xcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fODM5MF9zZXRfYnVzX2ZyZXF1ZW5jeSxcXG4gXFx0LnJlYWRfYzIyID0gb3R0b19lbWRpb184MzkwX3JlYWRfYzIyLFxcbiBcXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUsXFxuIFxcdC53cml0ZV9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfd3JpdGVfYzIyLFxcbkBAIC0xMDk3LDYgKzExNzQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMDBfaW5mbyA9IHtcXG4gXFx0Lm51bV9wb3J0cyA9IFJUTDkzMDBfTlVNX1BPUlRTLFxcbiBcXHQubnVtX3BhZ2VzID0gUlRMOTMwMF9OVU1fUEFHRVMsXFxuIFxcdC5wb2xsX2N0cmwgPSBSVEw5MzAwX1NNSV9QT0xMX0NUUkwsXFxuK1xcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fOTMwMF9zZXRfYnVzX2ZyZXF1ZW5jeSxcXG4gXFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcixcXG4gXFx0LnJlYWRfYzIyID0gb3R0b19lbWRpb185MzAwX3JlYWRfYzIyLFxcbiBcXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jNDUsXFxuQEAgLTExMjMsNiArMTIwMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMxMF9pbmZvID0ge1xcbiBcXHQubnVtX3BhZ2VzID0gUlRMOTMxMF9OVU1fUEFHRVMsXFxuIFxcdC5udW1fcG9ydHMgPSBSVEw5MzEwX05VTV9QT1JUUyxcXG4gXFx0LnBvbGxfY3RybCA9IFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19DVFJMLFxcbitcXHQuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzkzMTBfc2V0X2J1c19mcmVxdWVuY3ksXFxuIFxcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb185MzEwX3NldHVwX2NvbnRyb2xsZXIsXFxuIFxcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMixcXG4gXFx0LnJlYWRfYzQ1ID0gb3R0b19lbWRpb185MzEwX3JlYWRfYzQ1LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTowMjoyMy43ODE0MTYwNDhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE5NTQ0ODIzMTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIERldmljZXRyZWUgYmluZGluZ3MgZG9jdW1lbnRhdGlvbiBhbmQgYWRkcyBNRElPIGJ1cyBjbG9jayBmcmVxdWVuY3kgY29uZmlndXJhdGlvbiBzdXBwb3J0IHRvIHRoZSBSZWFsdGVrIFJUTDgzOHgvUlRMODM5eC9SVEw5MzB4L1JUTDkzMXggTURJTyBjb250cm9sbGVyIGRyaXZlciAoZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jKS4gVGhpcyBkcml2ZXIgaXMgZGVzaWduZWQgc3BlY2lmaWNhbGx5IGZvciBSZWFsdGVrIE90dG8gTUlQUyBzd2l0Y2ggU29DcyAoQ09ORklHX01BQ0hfUkVBTFRFS19SVEwpLCByZXF1aXJlcyBPRiBzeXNjb24gcGFyZW50IG5vZGVzLCBzdXBwcmVzc2VzIG1hbnVhbCBkcml2ZXIgYmluZGluZyB2aWEgc3lzZnMsIGFuZCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIGFtZDY0IFFFTVUvR0NFIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTg3ZDAxZjJjOGY1MTcxYWM1NDBmY2RmMWU0MjVkNGE0ODllZGVkNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMjE6MDI6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxcbmluZGV4IDY3ZTBiMjNhODQ3MGUuLjg4NTAyZDAxN2VlZGIgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlYWx0ZWsscnRsOTMwMS1tZGlvLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbFxuQEAgLTU2LDYgKzU2LDkgQEAgcGF0dGVyblByb3BlcnRpZXM6XG4gICAgICAgcmVnOlxuICAgICAgICAgbWF4SXRlbXM6IDFcbiBcbisgICAgICBjbG9jay1mcmVxdWVuY3k6XG4rICAgICAgICBkZWZhdWx0OiAyNTAwMDAwXG4rXG4gICAgIHJlcXVpcmVkOlxuICAgICAgIC0gcmVnXG4gXG5AQCAtNzEsNiArNzQsNDMgQEAgcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gcmVnXG4gXG4rYWxsT2Y6XG4rICAtIGlmOlxuKyAgICAgIHByb3BlcnRpZXM6XG4rICAgICAgICBjb21wYXRpYmxlOlxuKyAgICAgICAgICBjb250YWluczpcbisgICAgICAgICAgICBlbnVtOlxuKyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzODAtbWRpb1xuKyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzODEtbWRpb1xuKyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDgzODItbWRpb1xuKyAgICB0aGVuOlxuKyAgICAgIHBhdHRlcm5Qcm9wZXJ0aWVzOlxuKyAgICAgICAgJ15tZGlvLWJ1c0BbMC0zXSQnOlxuKyAgICAgICAgICBwcm9wZXJ0aWVzOlxuKyAgICAgICAgICAgIGNsb2NrLWZyZXF1ZW5jeTpcbisgICAgICAgICAgICAgIGVudW06IFsyNTAwMDAwLCAxMDAwMDAwMF1cbisgIC0gaWY6XG4rICAgICAgcHJvcGVydGllczpcbisgICAgICAgIGNvbXBhdGlibGU6XG4rICAgICAgICAgIGNvbnRhaW5zOlxuKyAgICAgICAgICAgIGVudW06XG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM5MS1tZGlvXG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM5Mi1tZGlvXG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsODM5My1tZGlvXG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMS1tZGlvXG4rICAgICAgICAgICAgICAtIHJlYWx0ZWsscnRsOTMwMmItbWRpb1xuKyAgICAgICAgICAgICAgLSByZWFsdGVrLHJ0bDkzMDJjLW1kaW9cbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzAzLW1kaW9cbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzExLW1kaW9cbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzEyLW1kaW9cbisgICAgICAgICAgICAgIC0gcmVhbHRlayxydGw5MzEzLW1kaW9cbisgICAgdGhlbjpcbisgICAgICBwYXR0ZXJuUHJvcGVydGllczpcbisgICAgICAgICdebWRpby1idXNAWzAtM10kJzpcbisgICAgICAgICAgcHJvcGVydGllczpcbisgICAgICAgICAgICBjbG9jay1mcmVxdWVuY3k6XG4rICAgICAgICAgICAgICBlbnVtOiBbMTI1MDAwMCwgMjUwMDAwMCwgNTAwMDAwMF1cbitcbiB1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXG4gXG4gZXhhbXBsZXM6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jIGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXG5pbmRleCAxMWQwNzhlZjk0MWNkLi44ZWRiMGJhMGJjZGQxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jXG4rKysgYi9kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNcbkBAIC0xMzAsNiArMTMwLDcgQEBcbiAjZGVmaW5lIFJUTDgzODBfTlVNX1BBR0VTXHRcdFx0NDA5NlxuICNkZWZpbmUgUlRMODM4MF9OVU1fUE9SVFNcdFx0XHQyOFxuICNkZWZpbmUgUlRMODM4MF9TTUlfR0xCX0NUUkxcdFx0XHQweGExMDBcbisjZGVmaW5lICAgUlRMODM4MF9TTUlfRlJFUV9TRUxcdFx0XHRCSVQoMSlcbiAjZGVmaW5lICAgUlRMODM4MF9TTUlfUEhZX1BBVENIX0RPTkVcdFx0QklUKDE1KVxuICNkZWZpbmUgUlRMODM4MF9TTUlfQUNDRVNTX1BIWV9DVFJMXzBcdFx0MHhhMWI4XG4gI2RlZmluZSBSVEw4MzgwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMVx0XHQweGExYmNcbkBAIC0xNjksMTIgKzE3MCwxNSBAQFxuICNkZWZpbmUgUlRMODM5MF9QSFlSRUdfUE9SVF9DVFJMX0xPV1x0XHQweDAzZTRcbiAjZGVmaW5lIFJUTDgzOTBfUEhZUkVHX1BPUlRfQ1RSTF9ISUdIXHRcdDB4MDNlOFxuICNkZWZpbmUgUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkxcdFx0MHgwM2ZjXG4rI2RlZmluZSBSVEw4MzkwX1NNSV9HTEJfQ1RSTFx0XHRcdDB4MDNmOFxuKyNkZWZpbmUgICBSVEw4MzkwX1NNSV9GUkVRX1NFTFx0XHRcdEdFTk1BU0soNiwgNSlcbiBcbiAjZGVmaW5lIFJUTDkzMDBfTlVNX0JVU0VTXHRcdFx0NFxuICNkZWZpbmUgUlRMOTMwMF9OVU1fUEFHRVNcdFx0XHQ0MDk2XG4gI2RlZmluZSBSVEw5MzAwX05VTV9QT1JUU1x0XHRcdDI4XG4gI2RlZmluZSBSVEw5MzAwX1NNSV9HTEJfQ1RSTFx0XHRcdDB4Y2EwMFxuICNkZWZpbmUgICBSVEw5MzAwX0dMQl9DVFJMX0lOVEZfU0VMKGludGYpXHRCSVQoMTYgKyAoaW50ZikpXG4rI2RlZmluZSAgIFJUTDkzMDBfU01JX0ZSRVFfU0VMKGludGYpXHRcdEdFTk1BU0soKGludGYpICogMiArIDksIChpbnRmKSAqIDIgKyA4KVxuICNkZWZpbmUgUlRMOTMwMF9TTUlfUE9SVDBfMTVfUE9MTElOR19TRUxcdDB4Y2EwOFxuICNkZWZpbmUgUlRMOTMwMF9TTUlfQUNDRVNTX1BIWV9DVFJMXzBcdFx0MHhjYjcwXG4gI2RlZmluZSBSVEw5MzAwX1NNSV9BQ0NFU1NfUEhZX0NUUkxfMVx0XHQweGNiNzRcbkBAIC0xOTYsNiArMjAwLDggQEBcbiAjZGVmaW5lIFJUTDkzMTBfTlVNX0JVU0VTXHRcdFx0NFxuICNkZWZpbmUgUlRMOTMxMF9OVU1fUEFHRVNcdFx0XHQ4MTkyXG4gI2RlZmluZSBSVEw5MzEwX05VTV9QT1JUU1x0XHRcdDU2XG4rI2RlZmluZSBSVEw5MzEwX1NNSV9HTEJfQ1RSTDBcdFx0XHQweDBjYzBcbisjZGVmaW5lICAgUlRMOTMxMF9TTUlfRlJFUV9TRUwoaW50ZilcdFx0R0VOTUFTSygoaW50ZikgKiAyICsgNSwgKGludGYpICogMiArIDQpXG4gI2RlZmluZSBSVEw5MzEwX1NNSV9HTEJfQ1RSTDFcdFx0XHQweDBjYmNcbiAjZGVmaW5lICAgUlRMOTMxMF9TTUlfR0xCX0ZNVF9TRUxfQzQ1KGludGYpXHRCSVQoKGludGYpICogMiArIDEpXG4gI2RlZmluZSBSVEw5MzEwX1NNSV9JTkRSVF9BQ0NFU1NfQ1RSTF8wXHRcdDB4MGMwMFxuQEAgLTI1MSw2ICsyNTcsNyBAQCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2IHtcbiBcdHN0cnVjdCByZWdtYXAgKnJlZ21hcDtcbiBcdHN0cnVjdCBtdXRleCBsb2NrOyAvKiBwcm90ZWN0IEhXIGFjY2VzcyAqL1xuIFx0REVDTEFSRV9CSVRNQVAodmFsaWRfcG9ydHMsIE1BWF9QT1JUUyk7XG4rXHR1MzIgZ2xvYmFsX2ZyZXE7XG4gXHR1MTYgcGFnZVtNQVhfUE9SVFNdO1xuIFx0dTggc21pX2J1c1tNQVhfUE9SVFNdO1xuIFx0dTggc21pX2FkZHJbTUFYX1BPUlRTXTtcbkBAIC0yNjksNiArMjc2LDcgQEAgc3RydWN0IG90dG9fZW1kaW9faW5mbyB7XG4gXHR1OCBudW1fcG9ydHM7XG4gXHR1MTYgbnVtX3BhZ2VzO1xuIFx0dTMyIHBvbGxfY3RybDtcbitcdGludCAoKnNldF9idXNfZnJlcXVlbmN5KShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSk7XG4gXHRpbnQgKCpzZXR1cF9jb250cm9sbGVyKShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KTtcbiBcdGludCAoKnJlYWRfYzIyKShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSk7XG4gXHRpbnQgKCpyZWFkX2M0NSkoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSk7XG5AQCAtNzQwLDYgKzc0OCwxNyBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fc2V0dXBfdG9wb2xvZ3koc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSlcbit7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuK1xuK1x0aWYgKGZyZXEgIT0gMjUwMDAwMCBcdTAwMjZcdTAwMjYgZnJlcSAhPSAxMDAwMDAwMClcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRyZXR1cm4gcmVnbWFwX2Fzc2lnbl9iaXRzKHByaXYtXHUwMDNlcmVnbWFwLCBSVEw4MzgwX1NNSV9HTEJfQ1RSTCxcbitcdFx0XHRcdCAgUlRMODM4MF9TTUlfRlJFUV9TRUwsIGZyZXEgPT0gMTAwMDAwMDApO1xuK31cbitcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4ge1xuIFx0LypcbkBAIC03NDksNiArNzY4LDQwIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbiBcdHJldHVybiByZWdtYXBfc2V0X2JpdHMocHJpdi1cdTAwM2VyZWdtYXAsIFJUTDgzODBfU01JX0dMQl9DVFJMLCBSVEw4MzgwX1NNSV9QSFlfUEFUQ0hfRE9ORSk7XG4gfVxuIFxuK3N0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxuK3tcbitcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG4rXHR1MzIgdmFsO1xuK1x0aW50IGVycjtcbitcbitcdGlmIChmcmVxICE9IDEyNTAwMDAgXHUwMDI2XHUwMDI2IGZyZXEgIT0gMjUwMDAwMCBcdTAwMjZcdTAwMjYgZnJlcSAhPSA1MDAwMDAwKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdGlmIChwcml2LVx1MDAzZWdsb2JhbF9mcmVxKVxuK1x0XHRyZXR1cm4gZnJlcSA9PSBwcml2LVx1MDAzZWdsb2JhbF9mcmVxID8gMCA6IC1FSU5WQUw7XG4rXG4rXHR2YWwgPSBGSUVMRF9QUkVQKFJUTDgzOTBfU01JX0ZSRVFfU0VMLCBmcmVxIC8gMjUwMDAwMCk7XG4rXHRlcnIgPSByZWdtYXBfdXBkYXRlX2JpdHMocHJpdi1cdTAwM2VyZWdtYXAsIFJUTDgzOTBfU01JX0dMQl9DVFJMLCBSVEw4MzkwX1NNSV9GUkVRX1NFTCwgdmFsKTtcbitcdGlmICghZXJyKVxuK1x0XHRwcml2LVx1MDAzZWdsb2JhbF9mcmVxID0gZnJlcTtcbitcbitcdHJldHVybiBlcnI7XG4rfVxuK1xuK3N0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldF9idXNfZnJlcXVlbmN5KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBmcmVxKVxuK3tcbitcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gYnVzLVx1MDAzZXByaXY7XG4rXHR1MzIgbWFzaywgdmFsO1xuK1xuK1x0aWYgKGZyZXEgIT0gMTI1MDAwMCBcdTAwMjZcdTAwMjYgZnJlcSAhPSAyNTAwMDAwIFx1MDAyNlx1MDAyNiBmcmVxICE9IDUwMDAwMDApXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuK1x0bWFzayA9IFJUTDkzMDBfU01JX0ZSRVFfU0VMKGNoYW4tXHUwMDNlbWRpb19idXMpO1xuK1x0dmFsID0gZmllbGRfcHJlcChtYXNrLCBmcmVxIC8gMjUwMDAwMCk7XG4rXG4rXHRyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtXHUwMDNlcmVnbWFwLCBSVEw5MzAwX1NNSV9HTEJfQ1RSTCwgbWFzaywgdmFsKTtcbit9XG4rXG4gc3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxuIHtcbiBcdHUzMiBnbGJfY3RybF9tYXNrID0gMCwgZ2xiX2N0cmxfdmFsID0gMDtcbkBAIC03NjksNiArODIyLDIxIEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb185MzAwX3NldHVwX2NvbnRyb2xsZXIoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSlcbit7XG4rXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xuK1x0c3RydWN0IG90dG9fZW1kaW9fY2hhbiAqY2hhbiA9IGJ1cy1cdTAwM2Vwcml2O1xuK1x0dTMyIG1hc2ssIHZhbDtcbitcbitcdGlmIChmcmVxICE9IDEyNTAwMDAgXHUwMDI2XHUwMDI2IGZyZXEgIT0gMjUwMDAwMCBcdTAwMjZcdTAwMjYgZnJlcSAhPSA1MDAwMDAwKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdG1hc2sgPSBSVEw5MzEwX1NNSV9GUkVRX1NFTChjaGFuLVx1MDAzZW1kaW9fYnVzKTtcbitcdHZhbCA9IGZpZWxkX3ByZXAobWFzaywgZnJlcSAvIDI1MDAwMDApO1xuK1xuK1x0cmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhwcml2LVx1MDAzZXJlZ21hcCwgUlRMOTMxMF9TTUlfR0xCX0NUUkwwLCBtYXNrLCB2YWwpO1xuK31cbitcbiBzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXG4ge1xuIFx0aW50IGksIGVycjtcbkBAIC04MzEsMTQgKzg5OSwxNCBAQCBzdGF0aWMgdm9pZCBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gfVxuIFxuIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LFxuLVx0XHRcdFx0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlKVxuK1x0XHRcdFx0c3RydWN0IGRldmljZV9ub2RlICpub2RlKVxuIHtcbiBcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW47XG4gXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuLVx0dTMyIG1kaW9fYnVzO1xuK1x0dTMyIG1kaW9fYnVzLCBmcmVxO1xuIFx0aW50IGVycjtcbiBcbi1cdGVyciA9IGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcInJlZ1wiLCBcdTAwMjZtZGlvX2J1cyk7XG4rXHRlcnIgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcInJlZ1wiLCBcdTAwMjZtZGlvX2J1cyk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXCJ1bmRlZmluZWQgc21pIGJ1cyBudW1iZXJcXG5cIik7XG4gXG5AQCAtODY1LDcgKzkzMywxNCBAQCBzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdlxuIFxuIFx0c25wcmludGYoYnVzLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFwiJXMtJWRcIiwgZGV2X25hbWUoZGV2KSwgbWRpb19idXMpO1xuIFxuLVx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCB0b19vZl9ub2RlKG5vZGUpKTtcbitcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCBcImNsb2NrLWZyZXF1ZW5jeVwiLCBcdTAwMjZmcmVxKSlcbitcdFx0ZnJlcSA9IDI1MDAwMDA7XG4rXHRlcnIgPSBwcml2LVx1MDAzZWluZm8tXHUwMDNlc2V0X2J1c19mcmVxdWVuY3koYnVzLCBmcmVxKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCBcImNhbm5vdCBzZXQgZnJlcXVlbmN5ICV1IGZvciBNRElPIGJ1cyAlZFxcblwiLFxuK1x0XHRcdFx0ICAgICBmcmVxLCBtZGlvX2J1cyk7XG4rXG4rXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpO1xuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBlcnIsIFwiY2Fubm90IHJlZ2lzdGVyIE1ESU8gYnVzXFxuXCIpO1xuIFxuQEAgLTEwMjcsNyArMTEwMiw3IEBAIHN0YXRpYyBpbnQgb3R0b19lbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCBcImZhaWxlZCB0byBzZXR1cCBNRElPIGJ1cyBjb250cm9sbGVyXFxuXCIpO1xuIFx0fVxuIFxuLVx0ZGV2aWNlX2Zvcl9lYWNoX2NoaWxkX25vZGVfc2NvcGVkKGRldiwgY2hpbGQpIHtcbitcdGZvcl9lYWNoX2NoaWxkX29mX25vZGVfc2NvcGVkKGRldi1cdTAwM2VvZl9ub2RlLCBjaGlsZCkge1xuIFx0XHRlcnIgPSBvdHRvX2VtZGlvX3Byb2JlX29uZShkZXYsIHByaXYsIGNoaWxkKTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRyZXR1cm4gZXJyO1xuQEAgLTEwNTEsNiArMTEyNiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM4MF9pbmZvID0ge1xuIFx0Lm51bV9wYWdlcyA9IFJUTDgzODBfTlVNX1BBR0VTLFxuIFx0Lm51bV9wb3J0cyA9IFJUTDgzODBfTlVNX1BPUlRTLFxuIFx0LnBvbGxfY3RybCA9IFJUTDgzODBfU01JX1BPTExfQ1RSTCxcbitcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fODM4MF9zZXRfYnVzX2ZyZXF1ZW5jeSxcbiBcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIsXG4gXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jMjIsXG4gXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzODBfcmVhZF9jNDUsXG5AQCAtMTA3NSw2ICsxMTUxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzkwX2luZm8gPSB7XG4gXHQubnVtX3BhZ2VzID0gUlRMODM5MF9OVU1fUEFHRVMsXG4gXHQubnVtX3BvcnRzID0gUlRMODM5MF9OVU1fUE9SVFMsXG4gXHQucG9sbF9jdHJsID0gUlRMODM5MF9TTUlfUE9SVF9QT0xMSU5HX0NUUkwsXG4rXHQuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzgzOTBfc2V0X2J1c19mcmVxdWVuY3ksXG4gXHQucmVhZF9jMjIgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jMjIsXG4gXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzgzOTBfcmVhZF9jNDUsXG4gXHQud3JpdGVfYzIyID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2MyMixcbkBAIC0xMDk3LDYgKzExNzQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMDBfaW5mbyA9IHtcbiBcdC5udW1fcG9ydHMgPSBSVEw5MzAwX05VTV9QT1JUUyxcbiBcdC5udW1fcGFnZXMgPSBSVEw5MzAwX05VTV9QQUdFUyxcbiBcdC5wb2xsX2N0cmwgPSBSVEw5MzAwX1NNSV9QT0xMX0NUUkwsXG4rXHQuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzkzMDBfc2V0X2J1c19mcmVxdWVuY3ksXG4gXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyLFxuIFx0LnJlYWRfYzIyID0gb3R0b19lbWRpb185MzAwX3JlYWRfYzIyLFxuIFx0LnJlYWRfYzQ1ID0gb3R0b19lbWRpb185MzAwX3JlYWRfYzQ1LFxuQEAgLTExMjMsNiArMTIwMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMxMF9pbmZvID0ge1xuIFx0Lm51bV9wYWdlcyA9IFJUTDkzMTBfTlVNX1BBR0VTLFxuIFx0Lm51bV9wb3J0cyA9IFJUTDkzMTBfTlVNX1BPUlRTLFxuIFx0LnBvbGxfY3RybCA9IFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19DVFJMLFxuK1x0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb185MzEwX3NldF9idXNfZnJlcXVlbmN5LFxuIFx0LnNldHVwX2NvbnRyb2xsZXIgPSBvdHRvX2VtZGlvXzkzMTBfc2V0dXBfY29udHJvbGxlcixcbiBcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMixcbiBcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2M0NSxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjAyOjIzLjc4MTQyNjgzOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI4MDkwNjQ1MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGhpbmdlcyBvbiB3aGV0aGVyIHRoaXMgcGF0Y2ggcHJlc2VudHMgYSBjb21wZWxsaW5nIGNhc2UgZm9yIGZ1enppbmcsIHNvIEkgbmVlZCB0byB3ZWlnaCB0aGUgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLiBMZXQncyBzdGFydCBieSBicmVha2luZyBkb3duIHRoZSBwYXRjaCdzIGNvbXBvbmVudHMuXG5cbkZpcnN0LCBJIHNlZSB0aGUgbW9kaWZpY2F0aW9ucyBpbnZvbHZlIHR3byBmaWxlczogYERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVhbHRlayxydGw5MzAxLW1kaW8ueWFtbGAgYW5kIGBkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmNgLiBUaGUgWUFNTCBmaWxlIHR5cGljYWxseSBpbmRpY2F0ZXMgY2hhbmdlcyB0byBEZXZpY2UgVHJlZSBiaW5kaW5ncywgd2hpY2ggKmNvdWxkKiBpbnZvbHZlIHN1YnRsZSBsb2dpYyBjaGFuZ2VzIGluZmx1ZW5jaW5nIGRldmljZSBjb25maWd1cmF0aW9uIG9yIGRhdGEgaW50ZXJwcmV0YXRpb24g4oCTIHdvcnRoIG5vdGluZywgYnV0IG5vdCBuZWNlc3NhcmlseSBhIGZ1enppbmcgZ29sZCBtaW5lIG9uIGl0cyBvd24uXG5cbk5vdywgdGhlIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBmaWxlIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBkcml2ZXIgZG9lcy4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaXRzIEtjb25maWcgZW50cnkuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBkcml2ZXIncyByb2xlLiBJcyBpdCBhIGNvcmUgbmV0d29yayBpbnRlcmZhY2UgZHJpdmVyPyBEb2VzIGl0IGludGVyYWN0IHdpdGggaGFyZHdhcmUgaW4gYSB3YXkgdGhhdCBoYW5kbGVzIGV4dGVybmFsIGRhdGE/IElzIGl0IHRhcmdldGVkIGF0IGEgcGFydGljdWxhciBhcmNoaXRlY3R1cmUgb3IgaGFyZHdhcmUgY29tcG9uZW50PyBUaGF0J3MgZ29pbmcgdG8gaW5mb3JtIG1lIHdoZXRoZXIgaXQncyB3b3J0aCB0aGUgdGltZSB0byBldmVuIHByb2JlIHRoZSBzdXJmYWNlIGZvciBmdXp6aW5nIG9wcG9ydHVuaXRpZXMuIFRoZSBwcm9iaW5nL2luc3RhbnRpYXRpb24gbWV0aG9kIGlzIGFsc28gY3J1Y2lhbCAtIGhvdyB0aGUgZHJpdmVyIGluaXRpYWxpemVzLCByZWNlaXZlcyBkYXRhLCBhbmQgc2V0cyB1cCBjb21tdW5pY2F0aW9uIGNoYW5uZWxzIHByb3ZpZGVzIGdyZWF0IGluZGljYXRvcnMgYXMgdG8gd2hlcmUgYW5kIGhvdyBmdXp6aW5nIGNhbiBiZSBlZmZlY3RpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwOTAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTowMjoyNi41OTA0OTMwNDRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0NTY3NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTURJT19SRUFMVEVLX1JUTDkzMDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWRpb1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tZGlvL0tjb25maWc9MTY2PWNvbmZpZyBNRElPX0lQUTgwNjRcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy0xNzMtXFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnOjE3NDpjb25maWcgTURJT19SRUFMVEVLX1JUTDkzMDBcXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTc1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFJUTDgzeHgvUlRMOTN4eCBNRElPIGludGVyZmFjZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZT0yMz1vYmotJChDT05GSUdfTURJT19QSUM2NEhQU0MpXFx0XFx0Kz0gbWRpby1waWM2NGhwc2Mub1xcbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX01ESU9fUkVBTFRFS19SVEw5MzAwKVxcdCs9IG1kaW8tcmVhbHRlay1ydGw5MzAwLm9cXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlLTI1LW9iai0kKENPTkZJR19NRElPX1JFR01BUClcXHRcXHQrPSBtZGlvLXJlZ21hcC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjAyOjI2LjYzNzk1NDg1M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwNTk3NTczOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIE1ESU9fUkVBTFRFS19SVEw5MzAwIEtjb25maWcqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhlIEtjb25maWcgZm9yIHRoZSBNRElPX1JFQUxURUtfUlRMOTMwMCBkcml2ZXIuIE15IGluaXRpYWwgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIHN1cHBvcnQgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGJyb2FkZXIgYnVpbGQgc3lzdGVtLiBXaGF0IGFyZSB0aGUga2V5IGRlcGVuZGVuY2llcz8gV2hhdCBvcHRpb25zIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyLCBhbmQgaG93IGdyYW51bGFyIGFyZSB0aGV5PyBJ4oCZbSBsb29raW5nIGZvciB0aGUgZXNzZW50aWFsIGtub2JzLCB0aGUgb25lcyB0aGF0IHRydWx5IG1hdHRlci4gRm9yIGV4YW1wbGUsIGFyZSB0aGVyZSBvcHRpb25hbCBmZWF0dXJlcyBjb250cm9sbGVkIGJ5IHRyaXN0YXRlcyBvciBqdXN0IGJvb2xzPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIHRoaXMgZHJpdmVyIC0tIHdoaWNoIGRlcGVuZGVuY2llcyB3aWxsIEkgcHVsbCBpbiBhbmQgaXMgdGhpcyBkcml2ZXIgcmVxdWlyZWQgZm9yIG90aGVyIGNvcmUgZnVuY3Rpb25hbGl0aWVzPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbGx5IHByb2JsZW1hdGljIGRlZmF1bHRzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBJJ2xsIGJlIGNoZWNraW5nIGlmIHRoZSBkcml2ZXIncyBjb25maWd1cmF0aW9uIGlzIGNsZWFuIG9yIGlmIGl0IG5lZWRzIGltcHJvdmVtZW50LiBVbmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZ2l2ZXMgbWUgaW5zaWdodCBpbnRvIHRoZSBkcml2ZXIncyBjYXBhYmlsaXRpZXMgYW5kIGl0cyBzdWl0YWJpbGl0eSBmb3IgZGlmZmVyZW50IHVzZSBjYXNlcy4gVWx0aW1hdGVseSwgSSBuZWVkIHRvIGtub3cgdGhlIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyB0aGlzIGRyaXZlciBpbiBteSBzeXN0ZW0gY29uZmlndXJhdGlvbiwgYm90aCBpbiB0ZXJtcyBvZiBjb2RlIGZvb3RwcmludCBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIG90aGVyIG1vZHVsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4MTcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTowMjoyOC42OTc3MTUwMzFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9tZGlvL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTcwLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTcwOlxcdFxcdGhlbHBcXG4gMTcxOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIE1ESU8gaW50ZXJmYWNlIGZvdW5kIGluIHRoZSBuZXR3b3JrXFxuIDE3MjpcXHRcXHQgIGludGVyZmFjZSB1bml0cyBvZiB0aGUgSVBRODA2NCBTb0NcXG4gMTczOlxcdFxcbiAxNzQ6XFx0Y29uZmlnIE1ESU9fUkVBTFRFS19SVEw5MzAwXFxuIDE3NTpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBSVEw4M3h4L1JUTDkzeHggTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFxcXCJcXG4gMTc2OlxcdFxcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcXG4gMTc3OlxcdFxcdGhlbHBcXG4gMTc4OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIE1ESU8gaW50ZXJmYWNlIGZvdW5kIGluIHRoZSBSZWFsdGVrXFxuIDE3OTpcXHRcXHQgIFJUTDgzeHgvUlRMOTN4eCBmYW1pbHkgb2YgRXRoZXJuZXQgc3dpdGNoZXMgd2l0aCBpbnRlZ3JhdGVkIFNvQy5cXG4gMTgwOlxcdFxcbiAxODE6XFx0Y29uZmlnIE1ESU9fUkVHTUFQXFxuIDE4MjpcXHRcXHR0cmlzdGF0ZVxcbiAxODM6XFx0XFx0aGVscFxcbiAxODQ6XFx0XFx0ICBUaGlzIGRyaXZlciBhbGxvd3MgdXNpbmcgTURJTyBkZXZpY2VzIHRoYXQgYXJlIG5vdCBzaXR0aW5nIG9uIGFcXG4gMTg1OlxcdFxcdCAgcmVndWxhciBNRElPIGJ1cywgYnV0IHN0aWxsIGV4cG9zZXMgdGhlIHN0YW5kYXJkIDgwMi4zIHJlZ2lzdGVyXFxuIDE4NjpcXHRcXHQgIGxheW91dC4gSXQncyByZWdtYXAtYmFzZWQgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBvbiBpbnRlZ3JhdGVkLFxcbiAxODc6XFx0XFx0ICBtZW1vcnktbWFwcGVkIFBIWXMsIFNQSSBQSFlzIGFuZCBzbyBvbi4gQSBuZXcgdmlydHVhbCBNRElPIGJ1cyBpc1xcbiAxODg6XFx0XFx0ICBjcmVhdGVkLCBhbmQgaXRzIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBhcmUgbWFwcGVkIHRvIHRoZSB1bmRlcmx5aW5nXFxuIDE4OTpcXHRcXHQgIHJlZ21hcC4gVXNlcnMgd2lsbGluZyB0byB1c2UgdGhpcyBkcml2ZXIgbXVzdCBleHBsaWNpdGx5IHNlbGVjdFxcbiAxOTA6XFx0XFx0ICBSRUdNQVAuXFxuIDE5MTpcXHRcXG4gMTkyOlxcdGNvbmZpZyBNRElPX1RIVU5ERVJcXG4gMTkzOlxcdFxcdHRyaXN0YXRlIFxcXCJUaHVuZGVyWCBTT0NzIE1ESU8gYnVzZXNcXFwiXFxuIDE5NDpcXHRcXHRkZXBlbmRzIG9uIDY0QklUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjAyOjI4LjY5Nzc5MDkyMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE5MzAwNTE0OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBwcm9iaW5nIG1lY2hhbmlzbS4gRmlyc3QsIEknbGwgaWRlbnRpZnkgdGhlIGJ1cyBpdCdzIHRpZWQgdG8uIFRoZW4sIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgc3RyaWN0bHkgYSBwbGF0Zm9ybSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhhdCBSZWFsdGVrIE1JUFMgU29DLCB0aGUgYE1BQ0hfUkVBTFRFS19SVExgIGFyY2hpdGVjdHVyZSwgb3IgaWYgdGhlcmUncyBzb21lIGRldmljZSB0cmVlIChEVCkgb3ZlcmxheSBjb25maWd1cmF0aW9uIG9yIGFsdGVybmF0aXZlIGFwcHJvYWNoIHRoYXQgYWxsb3dzIGl0IHRvIGJlIGFjY2Vzc2VkIHZpYSBvdGhlciBjb25maWd1cmF0aW9ucy4gRXNzZW50aWFsbHksIEkgbmVlZCB0byBnZXQgdGhlIGJpZyBwaWN0dXJlIG9mIHRoaXMgZHJpdmVyIGFuZCBob3cgaXQncyBpbnRlZ3JhdGVkLiBMZXQncyBzdGFydCB3aXRoIGEgdGhvcm91Z2ggcmV2aWV3IG9mIHRoZSBgbWRpby1yZWFsdGVrLXJ0bDkzMDAuY2AgZmlsZSBpdHNlbGYuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1NjQsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjAyOjMwLjYyNzg0NDkxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4ODA5NDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm90dG9fZW1kaW9fXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjQzLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyNDQ6c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3Mge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNDUtXFx0dTMyIGMyMl9kYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI1NC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MjU1OnN0cnVjdCBvdHRvX2VtZGlvX3ByaXYge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyNTY6XFx0Y29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyAqaW5mbztcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjU3LVxcdHN0cnVjdCByZWdtYXAgKnJlZ21hcDtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yNjctXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI2ODpzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjY5LVxcdHUzMiBhZGRyX21hcF9iYXNlO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI3My1cXHR1MzIgY21kX3dyaXRlO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyNzQ6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX3JlZ3M7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI3NS1cXHR1OCBudW1fYnVzZXM7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjc5LVxcdGludCAoKnNldF9idXNfZnJlcXVlbmN5KShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI4MDpcXHRpbnQgKCpzZXR1cF9jb250cm9sbGVyKShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjgxLVxcdGludCAoKnJlYWRfYzIyKShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjg2LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyODc6c3RydWN0IG90dG9fZW1kaW9fY2hhbiB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI4ODpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0yODktXFx0dTggbWRpb19idXM7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjkxLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyOTI6c3RhdGljIGludCBvdHRvX2VtZGlvX3BoeV90b19wb3J0KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTI5My17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjI5NDpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoyOTU6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdjtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMjk2LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTMwNy1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MzA4OnN0YXRpYyBzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpvdHRvX2VtZGlvX2J1c190b19wcml2KHN0cnVjdCBtaWlfYnVzICpidXMpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTMwOS17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMxMDpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zMTEtXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzE0LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozMTU6c3RhdGljIGludCBvdHRvX2VtZGlvX3NldF9wb3J0X3BvbGxpbmcoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiwgaW50IHBvcnQsIGJvb2wgYWN0aXZlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0zMTYte1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTMyMC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MzIxOnN0YXRpYyBpbnQgb3R0b19lbWRpb19ydW5fY21kKHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBjbWQsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMyMjpcXHRcXHRcXHQgICAgICBzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyAqY21kX2RhdGEpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTMyMy17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjMyNDpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozMjU6XFx0Y29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyAqaW5mbyA9IHByaXYtXFx1MDAzZWluZm87XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTMyNi1cXHR1MzIgY21kc3RhdGU7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzc3LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzozNzg6c3RhdGljIGludCBvdHRvX2VtZGlvX3JlYWRfY21kKHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiBjbWQsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjM3OTpcXHRcXHRcXHQgICAgICAgc3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgKmNtZF9kYXRhLCB1MzIgbWFzaywgdTMyICp2YWx1ZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMzgwLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MzgxOlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTM4Mi1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTM4NC1cXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZwcml2LVxcdTAwM2Vsb2NrKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Mzg1OlxcdHJldCA9IG90dG9fZW1kaW9fcnVuX2NtZChidXMsIGNtZCB8IHByaXYtXFx1MDAzZWluZm8tXFx1MDAzZWNtZF9yZWFkLCBjbWRfZGF0YSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTM4Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTM5Ny1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Mzk4OnN0YXRpYyBpbnQgb3R0b19lbWRpb193cml0ZV9jbWQoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGNtZCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Mzk5OlxcdFxcdFxcdFxcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzICpjbWRfZGF0YSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDAwLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDAxOlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MDQtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQwNTpcXHRyZXR1cm4gb3R0b19lbWRpb19ydW5fY21kKGJ1cywgY21kIHwgcHJpdi1cXHUwMDNlaW5mby1cXHUwMDNlY21kX3dyaXRlLCBjbWRfZGF0YSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQwNi19XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQwNy1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDA4OnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzgwX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MDkte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MTA6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDExOlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MTItXFx0XFx0LmMyMl9kYXRhXFx0PSBGSUVMRF9QUkVQKFJUTDgzODBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQxNy1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDE4OlxcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0MyMiwgXFx1MDAyNmNtZF9kYXRhLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00MTktXFx0XFx0XFx0XFx0ICAgUlRMODM4MF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDIxLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MjI6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQyMy17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQyNDpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MjU6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQyNi1cXHRcXHQuYzIyX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMODM4MF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDMyLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MzM6XFx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0MyMiwgXFx1MDAyNmNtZF9kYXRhKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDM0LX1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDM1LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0MzY6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQzNy1cXHRcXHRcXHRcXHQgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00Mzgte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0Mzk6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ0MC1cXHRcXHQuYzQ1X2RhdGFcXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ0NC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDQ1OlxcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMODM4MF9QSFlfQ1RSTF9UWVBFX0M0NSwgXFx1MDAyNmNtZF9kYXRhLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NDYtXFx0XFx0XFx0XFx0ICAgUlRMODM4MF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDQ4LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0NDk6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzODBfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NTAtXFx0XFx0XFx0XFx0ICAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDUxLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDUyOlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NTMtXFx0XFx0LmM0NV9kYXRhXFx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NTgtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ1OTpcXHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw4MzgwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcXHUwMDI2Y21kX2RhdGEpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NjAtfVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NjEtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ2MjpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM5MF9yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDYzLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDY0OlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ2NTpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDY2LVxcdFxcdC5jMjJfZGF0YVxcdD0gRklFTERfUFJFUChSVEw4MzkwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00NzEtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjQ3MjpcXHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDgzOTBfUEhZX0NUUkxfVFlQRV9DMjIsIFxcdTAwMjZjbWRfZGF0YSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDczLVxcdFxcdFxcdFxcdCAgIFJUTDgzOTBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ3NS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDc2OnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00Nzcte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo0Nzg6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDc5OlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00ODAtXFx0XFx0LmMyMl9kYXRhXFx0PSBGSUVMRF9QUkVQKFJUTDgzOTBfUEhZX0NUUkxfUkVHX0FERFIsIHJlZ251bSkgfFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ4Ny1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDg4OlxcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDgzOTBfUEhZX0NUUkxfVFlQRV9DMjIsIFxcdTAwMjZjbWRfZGF0YSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ4OS19XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTQ5MC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDkxOnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00OTItXFx0XFx0XFx0XFx0ICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTMyICp2YWx1ZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNDkzLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NDk0OlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00OTUtXFx0XFx0LmM0NV9kYXRhXFx0PSBGSUVMRF9QUkVQKFBIWV9DVFJMX01NRF9ERVZBRCwgZGV2X2FkZHIpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy00OTktXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUwMDpcXHRyZXR1cm4gb3R0b19lbWRpb19yZWFkX2NtZChidXMsIFJUTDgzOTBfUEhZX0NUUkxfVFlQRV9DNDUsIFxcdTAwMjZjbWRfZGF0YSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTAxLVxcdFxcdFxcdFxcdCAgIFJUTDgzOTBfUEhZX0NUUkxfREFUQSwgdmFsdWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUwMy1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTA0OnN0YXRpYyBpbnQgb3R0b19lbWRpb184MzkwX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTA1LVxcdFxcdFxcdFxcdCAgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUwNi17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUwNzpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTA4LVxcdFxcdC5jNDVfZGF0YVxcdD0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTE0LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1MTU6XFx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMODM5MF9QSFlfQ1RSTF9UWVBFX0M0NSwgXFx1MDAyNmNtZF9kYXRhKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTE2LX1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTE3LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1MTg6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUxOS17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUyMDpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1MjE6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUyMi1cXHRcXHQuYzIyX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMOTMwMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTI3LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1Mjg6XFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw5MzAwX1BIWV9DVFJMX1RZUEVfQzIyLCBcXHUwMDI2Y21kX2RhdGEsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTUyOS1cXHRcXHRcXHRcXHQgICBSVEw5MzAwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01MzEtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUzMjpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUxNiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTMzLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTM0OlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjUzNTpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTM2LVxcdFxcdC5jMjJfZGF0YVxcdD0gRklFTERfUFJFUChSVEw5MzAwX1BIWV9DVFJMX1JFR19BRERSLCByZWdudW0pIHxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NDItXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU0MzpcXHRyZXR1cm4gb3R0b19lbWRpb193cml0ZV9jbWQoYnVzLCBSVEw5MzAwX1BIWV9DVFJMX1RZUEVfQzIyLCBcXHUwMDI2Y21kX2RhdGEpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NDQtfVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NDUtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU0NjpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQ3LVxcdFxcdFxcdFxcdCAgICBpbnQgZGV2X2FkZHIsIGludCByZWdudW0sIHUzMiAqdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU0OC17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU0OTpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jbWRfcmVncyBjbWRfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTUwLVxcdFxcdC5jNDVfZGF0YVxcdD0gRklFTERfUFJFUChQSFlfQ1RSTF9NTURfREVWQUQsIGRldl9hZGRyKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTU0LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NTU6XFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw5MzAwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcXHUwMDI2Y21kX2RhdGEsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU1Ni1cXHRcXHRcXHRcXHQgICBSVEw5MzAwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NTgtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU1OTpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF93cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU2MC1cXHRcXHRcXHRcXHQgICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NjEte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NjI6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU2My1cXHRcXHQuYzQ1X2RhdGFcXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU2OC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTY5OlxcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDkzMDBfUEhZX0NUUkxfVFlQRV9DNDUsIFxcdTAwMjZjbWRfZGF0YSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU3MC19XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU3MS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTcyOnN0YXRpYyBpbnQgb3R0b19lbWRpb185MzEwX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NzMte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NzQ6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTc1OlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NtZF9yZWdzIGNtZF9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01NzYtXFx0XFx0LmJyb2FkY2FzdFxcdD0gRklFTERfUFJFUChSVEw5MzEwX0JDX1BPUlRfSUQsIHBvcnQpLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU4MC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NTgxOlxcdHJldHVybiBvdHRvX2VtZGlvX3JlYWRfY21kKGJ1cywgUlRMOTMxMF9QSFlfQ1RSTF9UWVBFX0MyMiwgXFx1MDAyNmNtZF9kYXRhLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy01ODItXFx0XFx0XFx0XFx0ICAgUlRMOTMxMF9QSFlfQ1RSTF9EQVRBLCB2YWx1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTg0LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1ODU6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU4Ni17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU4NzpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1ODg6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTU4OS1cXHRcXHQuYzIyX2RhdGFcXHQ9IEZJRUxEX1BSRVAoUlRMOTMxMF9QSFlfQ1RSTF9SRUdfQUREUiwgcmVnbnVtKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTk1LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1OTY6XFx0cmV0dXJuIG90dG9fZW1kaW9fd3JpdGVfY21kKGJ1cywgUlRMOTMxMF9QSFlfQ1RSTF9UWVBFX0MyMiwgXFx1MDAyNmNtZF9kYXRhKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTk3LX1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTk4LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1OTk6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYwMC1cXHRcXHRcXHRcXHQgICAgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtLCB1MzIgKnZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02MDEte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MDI6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYwMy1cXHRcXHQuYnJvYWRjYXN0XFx0PSBGSUVMRF9QUkVQKFJUTDkzMTBfQkNfUE9SVF9JRCwgcG9ydCksXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjA3LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MDg6XFx0cmV0dXJuIG90dG9fZW1kaW9fcmVhZF9jbWQoYnVzLCBSVEw5MzEwX1BIWV9DVFJMX1RZUEVfQzQ1LCBcXHUwMDI2Y21kX2RhdGEsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYwOS1cXHRcXHRcXHRcXHQgICBSVEw5MzEwX1BIWV9DVFJMX0RBVEEsIHZhbHVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02MTEtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjYxMjpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMxMF93cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYxMy1cXHRcXHRcXHRcXHQgICAgIGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02MTQte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2MTU6XFx0c3RydWN0IG90dG9fZW1kaW9fY21kX3JlZ3MgY21kX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYxNi1cXHRcXHQuYzQ1X2RhdGFcXHQ9IEZJRUxEX1BSRVAoUEhZX0NUUkxfTU1EX0RFVkFELCBkZXZfYWRkcikgfFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYyMi1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NjIzOlxcdHJldHVybiBvdHRvX2VtZGlvX3dyaXRlX2NtZChidXMsIFJUTDkzMTBfUEhZX0NUUkxfVFlQRV9DNDUsIFxcdTAwMjZjbWRfZGF0YSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYyNC19XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTYyNS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NjI2OnN0YXRpYyBpbnQgb3R0b19lbWRpb19yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02Mjcte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2Mjg6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjI5LVxcdGludCByZXQsIHBvcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjM3LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2Mzg6XFx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02MzktXFx0aWYgKHBvcnQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY1MS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NjUyOnN0YXRpYyBpbnQgb3R0b19lbWRpb193cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IHJlZ251bSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjUzLVxcdFxcdFxcdFxcdHUxNiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjU0LXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NjU1OlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY1Ni1cXHRpbnQgcmV0LCBwb3J0O1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY2My1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NjY0OlxcdHBvcnQgPSBvdHRvX2VtZGlvX3BoeV90b19wb3J0KGJ1cywgcGh5X2lkKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjY1LVxcdGlmIChwb3J0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02ODItXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjY4MzpzdGF0aWMgaW50IG90dG9fZW1kaW9fcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IGRldl9hZGRyLCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02ODQte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2ODU6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjg2LVxcdGludCByZXQsIHBvcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNjg4LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo2ODk6XFx0cG9ydCA9IG90dG9fZW1kaW9fcGh5X3RvX3BvcnQoYnVzLCBwaHlfaWQpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy02OTAtXFx0aWYgKHBvcnQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTY5OC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6Njk5OnN0YXRpYyBpbnQgb3R0b19lbWRpb193cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzAwLVxcdFxcdFxcdFxcdGludCBkZXZfYWRkciwgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MDEte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3MDI6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzAzLVxcdGludCByZXQsIHBvcnQ7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTcwNC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzA1OlxcdHBvcnQgPSBvdHRvX2VtZGlvX3BoeV90b19wb3J0KGJ1cywgcGh5X2lkKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzA2LVxcdGlmIChwb3J0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MTQtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjcxNTpzdGF0aWMgaW50IG90dG9fZW1kaW9fd3JpdGVfbWFwcGluZyhzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2LCB1MzIgYmFzZSwgdTMyIHBvcnQsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTcxNi1cXHRcXHRcXHRcXHQgICAgdTMyIHZhbHNfcGVyX3JlZywgdTMyIGJpdHNfcGVyX3ZhbCwgdTMyIHZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTcyNC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzI1OnN0YXRpYyBpbnQgb3R0b19lbWRpb19zZXR1cF90b3BvbG9neShzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MjYte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3Mjc6XFx0Y29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyAqaW5mbyA9IHByaXYtXFx1MDAzZWluZm87XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTcyOC1cXHR1MzIgcG9ydDtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MzItXFx0XFx0aWYgKGluZm8tXFx1MDAzZWJ1c19tYXBfYmFzZSkge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3MzM6XFx0XFx0XFx0cmV0ID0gb3R0b19lbWRpb193cml0ZV9tYXBwaW5nKHByaXYsIGluZm8tXFx1MDAzZWJ1c19tYXBfYmFzZSwgcG9ydCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzM0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBNQVBfQlVTRVNfUEVSX1JFRywgTUFQX0JJVFNfUEVSX0JVUyxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03MzktXFx0XFx0aWYgKGluZm8tXFx1MDAzZWFkZHJfbWFwX2Jhc2UpIHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzQwOlxcdFxcdFxcdHJldCA9IG90dG9fZW1kaW9fd3JpdGVfbWFwcGluZyhwcml2LCBpbmZvLVxcdTAwM2VhZGRyX21hcF9iYXNlLCBwb3J0LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NDEtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIE1BUF9BRERSU19QRVJfUkVHLCBNQVBfQklUU19QRVJfQUREUixcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NTAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjc1MTpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzUyLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzUzOlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc1NC1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NjEtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjc2MjpzdGF0aWMgaW50IG90dG9fZW1kaW9fODM4MF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc2My17XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzcwLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo3NzE6c3RhdGljIGludCBvdHRvX2VtZGlvXzgzOTBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTc3Mi17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjc3MzpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03NzQtXFx0dTMyIHZhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03ODktXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjc5MDpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXRfYnVzX2ZyZXF1ZW5jeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCB1MzIgZnJlcSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNzkxLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6NzkyOlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBvdHRvX2VtZGlvX2J1c190b19wcml2KGJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjc5MzpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19jaGFuICpjaGFuID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy03OTQtXFx0dTMyIG1hc2ssIHZhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04MDQtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjgwNTpzdGF0aWMgaW50IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyKHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgwNi17XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODI0LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4MjU6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfc2V0X2J1c19mcmVxdWVuY3koc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIGZyZXEpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTgyNi17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjgyNzpcXHRzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2ID0gb3R0b19lbWRpb19idXNfdG9fcHJpdihidXMpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4Mjg6XFx0c3RydWN0IG90dG9fZW1kaW9fY2hhbiAqY2hhbiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODI5LVxcdHUzMiBtYXNrLCB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODM5LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4NDA6c3RhdGljIGludCBvdHRvX2VtZGlvXzkzMTBfc2V0dXBfY29udHJvbGxlcihzdHJ1Y3Qgb3R0b19lbWRpb19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04NDEte1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg1NS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODU2OnN0YXRpYyBpbnQgb3R0b19lbWRpb19ub3RpZnlfcGh5X2F0dGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04NTcte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4NTg6XFx0aW50IHBvcnQgPSBvdHRvX2VtZGlvX3BoeV90b19wb3J0KHBoeWRldi1cXHUwMDNlbWRpby5idXMsIHBoeWRldi1cXHUwMDNlbWRpby5hZGRyKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODU5OlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW4gPSBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4NjA6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdiA9IGNoYW4tXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg2MS1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04NzctXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg3ODpcXHRyZXR1cm4gb3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHByaXYsIHBvcnQsIHRydWUpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04NzktfVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04ODAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg4MTpzdGF0aWMgdm9pZCBvdHRvX2VtZGlvX25vdGlmeV9waHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg4Mi17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg4My1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cztcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6ODg0OlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg4NS1cXHRpbnQgcG9ydDtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODg2LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo4ODc6XFx0cHJpdiA9IG90dG9fZW1kaW9fYnVzX3RvX3ByaXYocGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg4ODpcXHRwb3J0ID0gb3R0b19lbWRpb19waHlfdG9fcG9ydChwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLCBwaHlkZXYtXFx1MDAzZW1kaW8uYWRkcik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTg4OS1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy04OTYtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjg5NzpcXHRpZiAob3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHByaXYsIHBvcnQsIGZhbHNlKSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtODk4LVxcdFxcdGRldl9lcnIoYnVzLVxcdTAwM2VwYXJlbnQsIFxcXCJmYWlsZWQgdG8gZGlzYWJsZSBwb2xsaW5nIGZvciBwb3J0ICVkXFxcXG5cXFwiLCBwb3J0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy05MDAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjkwMTpzdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTAyLVxcdFxcdFxcdFxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTAzLXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTA0OlxcdHN0cnVjdCBvdHRvX2VtZGlvX2NoYW4gKmNoYW47XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTkwNS1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTkyMS1cXHRidXMtXFx1MDAzZW5hbWUgPSBcXFwiUmVhbHRlayBTd2l0Y2ggTURJTyBCdXNcXFwiO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5MjI6XFx0YnVzLVxcdTAwM2VyZWFkX2M0NSA9IG90dG9fZW1kaW9fcmVhZF9jNDU7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjkyMzpcXHRidXMtXFx1MDAzZXdyaXRlX2M0NSA9IG90dG9fZW1kaW9fd3JpdGVfYzQ1O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5MjQ6XFx0YnVzLVxcdTAwM2VyZWFkID0gb3R0b19lbWRpb19yZWFkX2MyMjtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTI1OlxcdGJ1cy1cXHUwMDNld3JpdGUgPSBvdHRvX2VtZGlvX3dyaXRlX2MyMjtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTI2LVxcdGJ1cy1cXHUwMDNlcGFyZW50ID0gZGV2O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5Mjc6XFx0YnVzLVxcdTAwM2Vub3RpZnlfcGh5X2F0dGFjaCA9IG90dG9fZW1kaW9fbm90aWZ5X3BoeV9hdHRhY2g7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjkyODpcXHRidXMtXFx1MDAzZW5vdGlmeV9waHlfZGV0YWNoID0gb3R0b19lbWRpb19ub3RpZnlfcGh5X2RldGFjaDtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTI5LVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk0OS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTUwOnN0YXRpYyBzdHJ1Y3QgZGV2aWNlX25vZGUgKm90dG9fZW1kaW9fZ2V0X2J1c19ub2RlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqZG4pXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk1MS17XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTY4LSAqL1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo5Njk6c3RhdGljIGludCBvdHRvX2VtZGlvX21hcF9wb3J0cyhzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk3MC17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk3MS1cXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRzX2RuLCAqcGh5X2RuLCAqYnVzX2RuLCAqY3RybF9kbjtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTcyOlxcdHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtOTczLVxcdHN0cnVjdCBkZXZpY2UgKnBhcmVudCA9IGRldi1cXHUwMDNlcGFyZW50O1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk4OS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6OTkwOlxcdFxcdGJ1c19kbiA9IG90dG9fZW1kaW9fZ2V0X2J1c19ub2RlKHBoeV9kbik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTk5MS1cXHRcXHRpZiAoIWJ1c19kbilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDUyLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDUzOnN0YXRpYyBpbnQgb3R0b19lbWRpb19pbml0X3BvbGxpbmcoc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA1NC17XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA1Ny1cXHRmb3IgKGludCBwb3J0ID0gMDsgcG9ydCBcXHUwMDNjIHByaXYtXFx1MDAzZWluZm8tXFx1MDAzZW51bV9wb3J0czsgcG9ydCsrKSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNTg6XFx0XFx0ZXJyID0gb3R0b19lbWRpb19zZXRfcG9ydF9wb2xsaW5nKHByaXYsIHBvcnQsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA1OS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwNjUtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNjY6c3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwNjcte1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDY4LVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwNjk6XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdjtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTA3MC1cXHRpbnQgZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwODQtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEwODU6XFx0ZXJyID0gb3R0b19lbWRpb19pbml0X3BvbGxpbmcocHJpdik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwODYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDkwLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDkxOlxcdGVyciA9IG90dG9fZW1kaW9fbWFwX3BvcnRzKGRldik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwOTItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMDk0LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMDk1OlxcdGVyciA9IG90dG9fZW1kaW9fc2V0dXBfdG9wb2xvZ3kocHJpdik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEwOTYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTA1LVxcdGZvcl9lYWNoX2NoaWxkX29mX25vZGVfc2NvcGVkKGRldi1cXHUwMDNlb2Zfbm9kZSwgY2hpbGQpIHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEwNjpcXHRcXHRlcnIgPSBvdHRvX2VtZGlvX3Byb2JlX29uZShkZXYsIHByaXYsIGNoaWxkKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTEwNy1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExMTMtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMTQ6c3RhdGljIGNvbnN0IHN0cnVjdCBvdHRvX2VtZGlvX2luZm8gb3R0b19lbWRpb184MzgwX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExMTUtXFx0LmFkZHJfbWFwX2Jhc2UgPSBSVEw4MzgwX1NNSV9QT1JUMF81X0FERFJfQ1RSTCxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTI4LVxcdC5wb2xsX2N0cmwgPSBSVEw4MzgwX1NNSV9QT0xMX0NUUkwsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMjk6XFx0LnNldF9idXNfZnJlcXVlbmN5ID0gb3R0b19lbWRpb184MzgwX3NldF9idXNfZnJlcXVlbmN5LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTMwOlxcdC5zZXR1cF9jb250cm9sbGVyID0gb3R0b19lbWRpb184MzgwX3NldHVwX2NvbnRyb2xsZXIsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExMzE6XFx0LnJlYWRfYzIyID0gb3R0b19lbWRpb184MzgwX3JlYWRfYzIyLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTMyOlxcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM4MF9yZWFkX2M0NSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEzMzpcXHQud3JpdGVfYzIyID0gb3R0b19lbWRpb184MzgwX3dyaXRlX2MyMixcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTEzNDpcXHQud3JpdGVfYzQ1ID0gb3R0b19lbWRpb184MzgwX3dyaXRlX2M0NSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTEzNS19O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTM2LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTM3OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fODM5MF9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTM4LVxcdC5jbWRfZmFpbCA9IFJUTDgzOTBfUEhZX0NUUkxfRkFJTCxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTUzLVxcdC5wb2xsX2N0cmwgPSBSVEw4MzkwX1NNSV9QT1JUX1BPTExJTkdfQ1RSTCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE1NDpcXHQuc2V0X2J1c19mcmVxdWVuY3kgPSBvdHRvX2VtZGlvXzgzOTBfc2V0X2J1c19mcmVxdWVuY3ksXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExNTU6XFx0LnJlYWRfYzIyID0gb3R0b19lbWRpb184MzkwX3JlYWRfYzIyLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTU2OlxcdC5yZWFkX2M0NSA9IG90dG9fZW1kaW9fODM5MF9yZWFkX2M0NSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE1NzpcXHQud3JpdGVfYzIyID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2MyMixcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE1ODpcXHQud3JpdGVfYzQ1ID0gb3R0b19lbWRpb184MzkwX3dyaXRlX2M0NSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTE1OS19O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTYwLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTYxOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3R0b19lbWRpb19pbmZvIG90dG9fZW1kaW9fOTMwMF9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMTYyLVxcdC5hZGRyX21hcF9iYXNlID0gUlRMOTMwMF9TTUlfUE9SVDBfNV9BRERSX0NUUkwsXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTE3Ni1cXHQucG9sbF9jdHJsID0gUlRMOTMwMF9TTUlfUE9MTF9DVFJMLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTc3OlxcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fOTMwMF9zZXRfYnVzX2ZyZXF1ZW5jeSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE3ODpcXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMwMF9zZXR1cF9jb250cm9sbGVyLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMTc5OlxcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMwMF9yZWFkX2MyMixcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE4MDpcXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMDBfcmVhZF9jNDUsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExODE6XFx0LndyaXRlX2MyMiA9IG90dG9fZW1kaW9fOTMwMF93cml0ZV9jMjIsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjExODI6XFx0LndyaXRlX2M0NSA9IG90dG9fZW1kaW9fOTMwMF93cml0ZV9jNDUsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTExODMtfTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTE4NC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTE4NTpzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzkzMTBfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTE4Ni1cXHQuYWRkcl9tYXBfYmFzZSA9IFJUTDkzMTBfU01JX1BPUlRfQUREUl9DVFJMLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEyMDMtXFx0LnBvbGxfY3RybCA9IFJUTDkzMTBfU01JX1BPUlRfUE9MTElOR19DVFJMLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMjA0OlxcdC5zZXRfYnVzX2ZyZXF1ZW5jeSA9IG90dG9fZW1kaW9fOTMxMF9zZXRfYnVzX2ZyZXF1ZW5jeSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTIwNTpcXHQuc2V0dXBfY29udHJvbGxlciA9IG90dG9fZW1kaW9fOTMxMF9zZXR1cF9jb250cm9sbGVyLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMjA2OlxcdC5yZWFkX2MyMiA9IG90dG9fZW1kaW9fOTMxMF9yZWFkX2MyMixcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTIwNzpcXHQucmVhZF9jNDUgPSBvdHRvX2VtZGlvXzkzMTBfcmVhZF9jNDUsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEyMDg6XFx0LndyaXRlX2MyMiA9IG90dG9fZW1kaW9fOTMxMF93cml0ZV9jMjIsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEyMDk6XFx0LndyaXRlX2M0NSA9IG90dG9fZW1kaW9fOTMxMF93cml0ZV9jNDUsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEyMTAtfTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTIxMS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTIxMjpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvdHRvX2VtZGlvX2lkc1tdID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMjEzOlxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw4MzgwLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzgzODBfaW5mbyB9LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMjE0OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw4MzkxLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzgzOTBfaW5mbyB9LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMjE1OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw5MzAxLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzkzMDBfaW5mbyB9LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzoxMjE2OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw5MzExLW1kaW9cXFwiLCAuZGF0YSA9IFxcdTAwMjZvdHRvX2VtZGlvXzkzMTBfaW5mbyB9LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMjE3LVxcdHt9XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEyMTgtfTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmM6MTIxOTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvdHRvX2VtZGlvX2lkcyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEyMjAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEyMjE6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgb3R0b19lbWRpb19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEyMjI6XFx0LnByb2JlID0gb3R0b19lbWRpb19wcm9iZSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtMTIyMy1cXHQuZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYy0xMjI0LVxcdFxcdC5uYW1lID0gXFxcIm1kaW8tcnRsOTMwMFxcXCIsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEyMjU6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gb3R0b19lbWRpb19pZHMsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEyMjYtXFx0XFx0LnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEyMjktXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjEyMzA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihvdHRvX2VtZGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jLTEyMzEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjAyOjMwLjY3NjY1OTc5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI1MjA2Mjk4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBSVEw5MzAwIE1ESU8gRHJpdmVyIFByb2JlKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgYG1kaW8tcmVhbHRlay1ydGw5MzAwLmNgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBwcm9iZSBmdW5jdGlvbiBhbmQgaG93IGl0IGhhbmRsZXMgdGhlIHJlZ21hcCBhbmQgcGFyZW50IGRldmljZSBzZXR1cC4gSSBrbm93IHRoZSBnZW5lcmFsIGFyY2hpdGVjdHVyZSwgYnV0IEkgbmVlZCBhIHJlZnJlc2hlciBvbiB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gVGltZSB0byBnbyBiYWNrIGFuZCBjaGVjayB0aGUgY29kZS5cblxuT2theSwgbGV0J3MganVtcCBzdHJhaWdodCB0byBsaW5lcyAxMDY1IHRocm91Z2ggMTExNS4gVGhhdCdzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgcHJvYmUgaXMgbGlrZWx5IGxvY2F0ZWQsIHRoZSBjb3JlIGRldmljZSBpbml0aWFsaXphdGlvbi4gSSdsbCBiZSBsb29raW5nIGZvciBob3cgdGhlIHJlZ21hcCBpcyBjcmVhdGVkIGFuZCBpbml0aWFsaXplZCwgaG93IHRoZSBwYXJlbnQgZGV2aWNlIGlzIGFzc2lnbmVkLCBhbmQgYW55IHNwZWNpZmljIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcyBmb3IgdGhpcyBSZWFsdGVrIHN3aXRjaC4gR290dGEgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgaW4gb3JkZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NjQ3LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MDI6MzIuOTI4NzI0OTI0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3MzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMDY1LFxuICBcIkxpbmVDb3VudFwiOiA1NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMDY1OlxcdFxcbjEwNjY6XFx0c3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuMTA2NzpcXHR7XFxuMTA2ODpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbjEwNjk6XFx0XFx0c3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdjtcXG4xMDcwOlxcdFxcdGludCBlcnI7XFxuMTA3MTpcXHRcXG4xMDcyOlxcdFxcdHByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcXG4xMDczOlxcdFxcdGlmICghcHJpdilcXG4xMDc0OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjEwNzU6XFx0XFxuMTA3NjpcXHRcXHRlcnIgPSBkZXZtX211dGV4X2luaXQoZGV2LCBcXHUwMDI2cHJpdi1cXHUwMDNlbG9jayk7XFxuMTA3NzpcXHRcXHRpZiAoZXJyKVxcbjEwNzg6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4xMDc5OlxcdFxcbjEwODA6XFx0XFx0cHJpdi1cXHUwMDNlaW5mbyA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbjEwODE6XFx0XFx0cHJpdi1cXHUwMDNlcmVnbWFwID0gc3lzY29uX25vZGVfdG9fcmVnbWFwKGRldi1cXHUwMDNlcGFyZW50LVxcdTAwM2VvZl9ub2RlKTtcXG4xMDgyOlxcdFxcdGlmIChJU19FUlIocHJpdi1cXHUwMDNlcmVnbWFwKSlcXG4xMDgzOlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHByaXYtXFx1MDAzZXJlZ21hcCk7XFxuMTA4NDpcXHRcXG4xMDg1OlxcdFxcdGVyciA9IG90dG9fZW1kaW9faW5pdF9wb2xsaW5nKHByaXYpO1xcbjEwODY6XFx0XFx0aWYgKGVycilcXG4xMDg3OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuMTA4ODpcXHRcXG4xMDg5OlxcdFxcdHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHByaXYpO1xcbjEwOTA6XFx0XFxuMTA5MTpcXHRcXHRlcnIgPSBvdHRvX2VtZGlvX21hcF9wb3J0cyhkZXYpO1xcbjEwOTI6XFx0XFx0aWYgKGVycilcXG4xMDkzOlxcdFxcdFxcdHJldHVybiBlcnI7XFxuMTA5NDpcXHRcXG4xMDk1OlxcdFxcdGVyciA9IG90dG9fZW1kaW9fc2V0dXBfdG9wb2xvZ3kocHJpdik7XFxuMTA5NjpcXHRcXHRpZiAoZXJyKVxcbjEwOTc6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4xMDk4OlxcdFxcbjEwOTk6XFx0XFx0aWYgKHByaXYtXFx1MDAzZWluZm8tXFx1MDAzZXNldHVwX2NvbnRyb2xsZXIpIHtcXG4xMTAwOlxcdFxcdFxcdGVyciA9IHByaXYtXFx1MDAzZWluZm8tXFx1MDAzZXNldHVwX2NvbnRyb2xsZXIocHJpdik7XFxuMTEwMTpcXHRcXHRcXHRpZiAoZXJyKVxcbjExMDI6XFx0XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBlcnIsIFxcXCJmYWlsZWQgdG8gc2V0dXAgTURJTyBidXMgY29udHJvbGxlclxcXFxuXFxcIik7XFxuMTEwMzpcXHRcXHR9XFxuMTEwNDpcXHRcXG4xMTA1OlxcdFxcdGZvcl9lYWNoX2NoaWxkX29mX25vZGVfc2NvcGVkKGRldi1cXHUwMDNlb2Zfbm9kZSwgY2hpbGQpIHtcXG4xMTA2OlxcdFxcdFxcdGVyciA9IG90dG9fZW1kaW9fcHJvYmVfb25lKGRldiwgcHJpdiwgY2hpbGQpO1xcbjExMDc6XFx0XFx0XFx0aWYgKGVycilcXG4xMTA4OlxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuMTEwOTpcXHRcXHR9XFxuMTExMDpcXHRcXG4xMTExOlxcdFxcdHJldHVybiAwO1xcbjExMTI6XFx0fVxcbjExMTM6XFx0XFxuMTExNDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG90dG9fZW1kaW9faW5mbyBvdHRvX2VtZGlvXzgzODBfaW5mbyA9IHtcXG4xMTE1OlxcdFxcdC5hZGRyX21hcF9iYXNlID0gUlRMODM4MF9TTUlfUE9SVDBfNV9BRERSX0NUUkwsXFxuMTExNjpcXHRcXHQuY21kX2ZhaWwgPSBSVEw4MzgwX1BIWV9DVFJMX0ZBSUwsXFxuMTExNzpcXHRcXHQuY21kX3JlYWQgPSBSVEw4MzgwX1BIWV9DVFJMX1JFQUQsXFxuMTExODpcXHRcXHQuY21kX3dyaXRlID0gUlRMODM4MF9QSFlfQ1RSTF9XUklURSxcXG4xMTE5OlxcdFxcdC5jbWRfcmVncyA9IHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MDI6MzIuOTI4ODI0MTY0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0MjY4ODc1NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgb3R0b19lbWRpb19kcml2ZXJgKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBgb3R0b19lbWRpb19kcml2ZXJgIGhhcyBgLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlO2Ag4oCTIHRoYXQncyB0aGUgZmlyc3QgdGhpbmcgdG8gbm90ZS4gSXQncyB0cmlnZ2VyZWQgYnkgdGhlIGBvdHRvX2VtZGlvX2lkc2Agb2YgdGhlIE9GLiBUaGlzIGRyaXZlciBpcyBmb3IgdGhvc2UgUmVhbHRlayBzd2l0Y2hlczogUlRMODM4eC9SVEw4Mzl4L1JUTDkzMHgvUlRMOTMxeC4gRXNzZW50aWFsbHksIGEgcGxhdGZvcm0gZHJpdmVyIGZvciB0aGVzZSBNSVBTLWJhc2VkIE90dG8gYXJjaGl0ZWN0dXJlIE1BQ0hfUkVBTFRFS19SVEwgU29Dcy5cblxuTm93LCBob2xkIG9uLi4uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGBhbWQ2NGAuIFRoYXQncyBhIHJlZCBmbGFnLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgTUFDSF9SRUFMVEVLX1JUTGAgaXMgc3RyaWN0bHkgTUlQUywgb3IgaWYgaXQncyBwb3RlbnRpYWxseSBjcm9zcy1jb21waWxhYmxlLiBDYW4gdGhpcyBldmVuICpleGlzdCogb24gYW4gYW1kNjQgc3lzdGVtLCBvciBhIHN0YW5kYXJkIFFFTVUgVk0gc2V0dXA/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGVyZSBgTUFDSF9SRUFMVEVLX1JUTGAgaXMgYWN0dWFsbHkgZGVmaW5lZCwgc28gSSBjYW4gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBhc3N1bXB0aW9ucyBiZWluZyBtYWRlLiBUaGlzIGZlZWxzIGxpa2UgYW4gYXJjaGl0ZWN0dXJhbCBtaXNtYXRjaCBJIG5lZWQgdG8gcmVjb25jaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjc2MCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjAyOjM1LjM1NTcxMzkyNloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgyMDQ0NjQzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNQUNIX1JFQUxURUtfUlRMXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbWlwcy9LY29uZmlnPTY4MT1jb25maWcgUkFMSU5LXFxuLS1cXG5hcmNoL21pcHMvS2NvbmZpZy02OTgtXFxuYXJjaC9taXBzL0tjb25maWc6Njk5OmNvbmZpZyBNQUNIX1JFQUxURUtfUlRMXFxuYXJjaC9taXBzL0tjb25maWctNzAwLVxcdGJvb2wgXFxcIlJlYWx0ZWsgUlRMODM4eC9SVEw4Mzl4IGJhc2VkIG1hY2hpbmVzXFxcIlxcbi0tXFxuYXJjaC9taXBzL2Jvb3QvZHRzL3JlYWx0ZWsvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuYXJjaC9taXBzL2Jvb3QvZHRzL3JlYWx0ZWsvTWFrZWZpbGU6MjpkdGItJChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTClcXHQrPSBjaXNjb19zZzIyMC0yNi5kdGJcXG5hcmNoL21pcHMvYm9vdC9kdHMvcmVhbHRlay9NYWtlZmlsZTozOmR0Yi0kKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKVxcdCs9IGNhbWVvLXJ0bDkzMDJjLTJ4LXJ0bDgyMjQtMnhnZS5kdGJcXG4tLVxcbmFyY2gvbWlwcy9nZW5lcmljL01ha2VmaWxlPTE1PW9iai0kKENPTkZJR19WSVJUX0JPQVJEX1JBTkNIVSlcXHRcXHQrPSBib2FyZC1yYW5jaHUub1xcbmFyY2gvbWlwcy9nZW5lcmljL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKVxcdFxcdCs9IGJvYXJkLXJlYWx0ZWsub1xcbi0tXFxuZHJpdmVycy9ncGlvL0tjb25maWc9NjI1PWNvbmZpZyBHUElPX1JFQUxURUtfT1RUT1xcbmRyaXZlcnMvZ3Bpby9LY29uZmlnLTYyNi1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBPdHRvIEdQSU8gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2dwaW8vS2NvbmZpZzo2Mjc6XFx0ZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvZ3Bpby9LY29uZmlnOjYyODpcXHRkZWZhdWx0IE1BQ0hfUkVBTFRFS19SVExcXG5kcml2ZXJzL2dwaW8vS2NvbmZpZy02MjktXFx0c2VsZWN0IEdQSU9fR0VORVJJQ1xcbi0tXFxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWc9MTEwMz1jb25maWcgSTJDX1JUTDkzMDBcXG5kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZy0xMTA0LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFJUTDkzMDAgSTJDIGNvbnRyb2xsZXJcXFwiXFxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWc6MTEwNTpcXHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWctMTEwNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvTWFrZWZpbGU9MTMwPW9iai0kKENPTkZJR19TTDI4Q1BMRF9JTlRDKVxcdFxcdCs9IGlycS1zbDI4Y3BsZC5vXFxuZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlOjEzMTpvYmotJChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTClcXHRcXHQrPSBpcnEtcmVhbHRlay1ydGwub1xcbmRyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZS0xMzItb2JqLSQoQ09ORklHX1dQQ000NTBfQUlDKVxcdFxcdCs9IGlycS13cGNtNDUwLWFpYy5vXFxuLS1cXG5kcml2ZXJzL210ZC9uYW5kL0tjb25maWc9NjQ9Y29uZmlnIE1URF9OQU5EX0VDQ19SRUFMVEVLXFxuLS1cXG5kcml2ZXJzL210ZC9uYW5kL0tjb25maWctNjYtICAgICAgICBkZXBlbmRzIG9uIEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuZHJpdmVycy9tdGQvbmFuZC9LY29uZmlnOjY3OiAgICAgICAgZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvbXRkL25hbmQvS2NvbmZpZy02OC0gICAgICAgIHNlbGVjdCBNVERfTkFORF9FQ0NcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZz0xNzQ9Y29uZmlnIE1ESU9fUkVBTFRFS19SVEw5MzAwXFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTE3NS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBSVEw4M3h4L1JUTDkzeHggTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWc6MTc2OlxcdGRlcGVuZHMgb24gTUFDSF9SRUFMVEVLX1JUTCB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTc3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvc3BpL0tjb25maWc9OTE2PWNvbmZpZyBTUElfUkVBTFRFS19TTkFORFxcbmRyaXZlcnMvc3BpL0tjb25maWctOTE3LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFNQSS1OQU5EIEZsYXNoIENvbnRyb2xsZXJcXFwiXFxuZHJpdmVycy9zcGkvS2NvbmZpZzo5MTg6XFx0ZGVwZW5kcyBvbiBNQUNIX1JFQUxURUtfUlRMIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvc3BpL0tjb25maWctOTE5LVxcdHNlbGVjdCBSRUdNQVBcXG4tLVxcbmRyaXZlcnMvc3BpL01ha2VmaWxlPTEzMT1vYmotJChDT05GSUdfU1BJX1JCNFhYKVxcdFxcdFxcdCs9IHNwaS1yYjR4eC5vXFxuZHJpdmVycy9zcGkvTWFrZWZpbGU6MTMyOm9iai0kKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKVxcdFxcdCs9IHNwaS1yZWFsdGVrLXJ0bC5vXFxuZHJpdmVycy9zcGkvTWFrZWZpbGUtMTMzLW9iai0kKENPTkZJR19TUElfUkVBTFRFS19TTkFORClcXHRcXHQrPSBzcGktcmVhbHRlay1ydGwtc25hbmQub1xcbi0tXFxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnPTExMTM9Y29uZmlnIFJFQUxURUtfT1RUT19XRFRcXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTExNC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBPdHRvIE1JUFMgd2F0Y2hkb2cgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc6MTExNTpcXHRkZXBlbmRzIG9uIE1BQ0hfUkVBTFRFS19SVEwgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnLTExMTYtXFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuLS1cXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTExOC1cXHRzZWxlY3QgUkVHTUFQX01NSU9cXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc6MTExOTpcXHRkZWZhdWx0IE1BQ0hfUkVBTFRFS19SVExcXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTEyMC1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjAyOjM3LjE3NjE2Njk1OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MTUwMDM5MDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoYWJpbGl0eSBBbmFseXNpczogV29ydGhGdXp6aW5nPWZhbHNlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcsIGFuZCB0aGUgcHJpbWFyeSBnYXRlIGlzIHJlYWNoYWJpbGl0eS4gSSdtIHRhcmdldGluZyB0aGUgYW1kNjQgYXJjaGl0ZWN0dXJlLCBzbyBJIG5lZWQgdG8gYXNzZXNzIGlmIHRoZSBtb2RpZmllZCBjb2RlIGlzIGFjdHVhbGx5ICpleGVjdXRhYmxlKiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cblxuRmlyc3QsIEkgaWRlbnRpZmllZCBzb21lIG5lZ2F0aXZlIGNyaXRlcmlhLiBTcGVjaWZpY2FsbHksIEknbSBsb29raW5nIGZvciBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIOKAkyBjb2RlIHRpZWQgdG8gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGVudmlyb25tZW50cyBvciBhcmNoaXRlY3R1cmUtZXhjbHVzaXZlIGNvZGUuXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIHRoaXMgYG1kaW8tcmVhbHRlay1ydGw5MzAwYCBkcml2ZXIgaXMgYWN0dWFsbHkgKnJlYWNoYWJsZSouIE15IGluaXRpYWwgdGhvdWdodCBpcyBpdCdzIGFuIE1ESU8gY29udHJvbGxlciBkcml2ZXIgZm9yIFJlYWx0ZWsgUlRMODM4eC85M3h4IE1JUFMgU29Dcywgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgcmVkIGZsYWcuXG5cbkkgZG92ZSBpbnRvIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCBpdHNlbGYuIEl04oCZcyBhIHBsYXRmb3JtIGRyaXZlciwgc28gaXTigJlzIGxpbmtlZCB0byBzcGVjaWZpYyBoYXJkd2FyZS4gQ3JpdGljYWxseSwgYHN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlYCBtZWFucyBJIGNhbid0IGV2ZW4gbWFudWFsbHkgZm9yY2UgaXQgdG8gYmluZC4gSXQgcmVsaWVzIG9uIGEgc3lzY29uIG5vZGUsIG9idGFpbmVkIHZpYSBgc3lzY29uX25vZGVfdG9fcmVnbWFwYCwgbWVhbmluZyBpdHMgdGllZCB0byBzcGVjaWZpYyBoYXJkd2FyZS4gQW5kIGl0J3MgZm9yIFJlYWx0ZWsncyBNSVBTIFNvQyBhcmNoaXRlY3R1cmUuIFRoZSB0YXJnZXQgaXMgYW1kNjQuIFRoZXJlZm9yZSwgaXQncyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIEl0J3MgYW4gYXJjaC1leGNsdXNpdmUgTUlQUyBTb0MgZHJpdmVyIHRoYXQgY2FuJ3QgYmUgdXNlZCBvbiBhbWQ2NCBpbiBhbnkgc3RhbmRhcmQgZW52aXJvbm1lbnQuXG5cbkxldCdzIGRvdWJsZS1jaGVjayB0aGUgdHJpYWdlIGd1aWRlbGluZXMuIFRoZXkncmUgY3J5c3RhbCBjbGVhcjogXCJJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGXigKYgaXQgTVVTVCBOT1QgYmUgZnV6emVkLlwiIFRoZSBndWlkZWxpbmVzIHNwZWNpZmljYWxseSBtZW50aW9uIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzIGFuZCBhcmNoaXRlY3R1cmUtZXhjbHVzaXZlIGNvZGUgcGF0aHMgYXMgZXhhbXBsZXMuIFRoYXQgaXMgZXhhY3RseSB3aGF0IEkgaGF2ZS5cblxuU28sIHRoZSBmaWxlcyBhZmZlY3RlZCBhcmU6IGRvY3VtZW50YXRpb24gYW5kIHRoZSBkcml2ZXIuIFRoZSBkcml2ZXIsIGBtZGlvLXJlYWx0ZWstcnRsOTMwMC5jYCwgaXMgdGhlIGNyaXRpY2FsIGVsZW1lbnQuIEl0J3MgZm9yIGEgc3BlY2lmaWMgUmVhbHRlayBNSVBTIFNvQyBhbmQgaXMgbm90IHJlYWNoYWJsZSBvbiBhbWQ2NC5cblxuQmFzZWQgb24gdGhpcywgSSdtIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoZSBkcml2ZXIgdGFyZ2V0cyBhIHNwZWNpZmljIFJlYWx0ZWsgTUlQUyBTb0MuIEl0IGNhbm5vdCBleGVjdXRlIGluIGFueSBzdGFuZGFyZCBhbWQ2NCBlbnZpcm9ubWVudC4gVGhlIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2AgYXJlIGlycmVsZXZhbnQgaGVyZS4gVGltZSB0byBzdWJtaXQgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg0NTMsIk91dHB1dFRva2VucyI6MTY2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjAyOjQzLjMyNjIwODQ0MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgRGV2aWNldHJlZSBiaW5kaW5ncyBkb2N1bWVudGF0aW9uIGFuZCBhZGRzIE1ESU8gYnVzIGNsb2NrIGZyZXF1ZW5jeSBjb25maWd1cmF0aW9uIHN1cHBvcnQgdG8gdGhlIFJlYWx0ZWsgUlRMODM4eC9SVEw4Mzl4L1JUTDkzMHgvUlRMOTMxeCBNRElPIGNvbnRyb2xsZXIgZHJpdmVyIChkcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMpLiBUaGlzIGRyaXZlciBpcyBkZXNpZ25lZCBzcGVjaWZpY2FsbHkgZm9yIFJlYWx0ZWsgT3R0byBNSVBTIHN3aXRjaCBTb0NzIChDT05GSUdfTUFDSF9SRUFMVEVLX1JUTCksIHJlcXVpcmVzIE9GIHN5c2NvbiBwYXJlbnQgbm9kZXMsIHN1cHByZXNzZXMgbWFudWFsIGRyaXZlciBiaW5kaW5nIHZpYSBzeXNmcywgYW5kIGNhbm5vdCBiZSBwcm9iZWQgb3IgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgUUVNVS9HQ0UgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBEZXZpY2V0cmVlIGJpbmRpbmdzIGRvY3VtZW50YXRpb24gYW5kIGFkZHMgTURJTyBidXMgY2xvY2sgZnJlcXVlbmN5IGNvbmZpZ3VyYXRpb24gc3VwcG9ydCB0byB0aGUgUmVhbHRlayBSVEw4Mzh4L1JUTDgzOXgvUlRMOTMweC9SVEw5MzF4IE1ESU8gY29udHJvbGxlciBkcml2ZXIgKGRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYykuIFRoaXMgZHJpdmVyIGlzIGRlc2lnbmVkIHNwZWNpZmljYWxseSBmb3IgUmVhbHRlayBPdHRvIE1JUFMgc3dpdGNoIFNvQ3MgKENPTkZJR19NQUNIX1JFQUxURUtfUlRMKSwgcmVxdWlyZXMgT0Ygc3lzY29uIHBhcmVudCBub2Rlcywgc3VwcHJlc3NlcyBtYW51YWwgZHJpdmVyIGJpbmRpbmcgdmlhIHN5c2ZzLCBhbmQgY2Fubm90IGJlIHByb2JlZCBvciBleGVjdXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCBRRU1VL0dDRSB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTowMjo0My4zMjYyNDE0NDFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtwk87[1] Phase: Running StartedAt: 2026-09-06 21:02:53 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtwk87[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-06 21:02:53 +0000 UTC FinishedAt: 2026-09-06 21:02:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}