From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Petazzoni Subject: Re: [PATCH 1/8] ARM: support for Moschip MCS814x SoCs Date: Mon, 16 Jul 2012 14:29:41 +0200 Message-ID: <20120716142941.666d928c@skate> References: <1342363754-30808-1-git-send-email-florian@openwrt.org> <1342363754-30808-2-git-send-email-florian@openwrt.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1342363754-30808-2-git-send-email-florian@openwrt.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Florian Fainelli Cc: olof@lixom.net, devicetree-discuss@lists.ozlabs.org, arnd@arndb.de, linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org SGVsbG8gRmxvcmlhbiwKCkxlIFN1biwgMTUgSnVsIDIwMTIgMTY6NDk6MDcgKzAyMDAsCkZsb3Jp YW4gRmFpbmVsbGkgPGZsb3JpYW5Ab3BlbndydC5vcmc+IGEgw6ljcml0IDoKCj4gZGlmZiAtLWdp dCBhL2FyY2gvYXJtL21hY2gtbWNzODE0eC9NYWtlZmlsZS5ib290IGIvYXJjaC9hcm0vbWFjaC1t Y3M4MTR4L01ha2VmaWxlLmJvb3QKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAw MDAuLjQxNGRiOGIKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvYXJjaC9hcm0vbWFjaC1tY3M4MTR4 L01ha2VmaWxlLmJvb3QKPiBAQCAtMCwwICsxLDMgQEAKPiArICAgIHpyZWxhZGRyLXkgOj0gMHgw MDAwODAwMAo+ICsgcGFyYW1zX3BoeXMteSA6PSAweDAwMDAwMDA4Cj4gKyBpbml0cmRfcGh5cy15 IDo9IDB4MDA0MDAwMDAKCnBhcmFtc19waHlzLXkgYW5kIGluaXRyZF9waHlzLXkgYXJlIHVzZWxl c3MgZm9yIERULWJhc2VkIHBsYXRmb3JtcywgaWYKSSdtIGNvcnJlY3QuCgo+IGRpZmYgLS1naXQg YS9hcmNoL2FybS9tYWNoLW1jczgxNHgvY2xvY2suYyBiL2FyY2gvYXJtL21hY2gtbWNzODE0eC9j bG9jay5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5lYjMwYWUyCj4g LS0tIC9kZXYvbnVsbAo+ICsrKyBiL2FyY2gvYXJtL21hY2gtbWNzODE0eC9jbG9jay5jCj4gQEAg LTAsMCArMSwyNzEgQEAKPiArLyoKPiArICogTW9zY2hpcCBNQ1M4MTR4IGNsb2NrIHJvdXRpbmVz Cj4gKyAqCj4gKyAqIENvcHlyaWdodCAoQykgMjAxMiwgRmxvcmlhbiBGYWluZWxsaSA8Zmxvcmlh bkBvcGVud3J0Lm9yZz4KPiArICoKPiArICogTGljZW5zZWQgdW5kZXIgR1BMdjIKPiArICovCj4g KyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KPiAr I2luY2x1ZGUgPGxpbnV4L2V4cG9ydC5oPgo+ICsjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4K PiArI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgo+ICsjaW5jbHVkZSA8bGludXgvaW8uaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L2Nsa2Rldi5oPgo+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4gKwo+ICsj aW5jbHVkZSA8bWFjaC9tY3M4MTR4Lmg+Cj4gKwo+ICsjaW5jbHVkZSAiY29tbW9uLmgiCj4gKwo+ ICsjZGVmaW5lIEtIWgkxMDAwCj4gKyNkZWZpbmUgTUhaCShLSFogKiBLSFopCj4gKwo+ICtzdHJ1 Y3QgY2xrX29wcyB7Cj4gKwl1bnNpZ25lZCBsb25nICgqZ2V0X3JhdGUpKHN0cnVjdCBjbGsgKmNs ayk7Cj4gKwlpbnQgKCpzZXRfcmF0ZSkoc3RydWN0IGNsayAqY2xrLCB1bnNpZ25lZCBsb25nIHJh dGUpOwo+ICsJc3RydWN0IGNsayAqKCpnZXRfcGFyZW50KShzdHJ1Y3QgY2xrICpjbGspOwo+ICsJ aW50ICgqZW5hYmxlKShzdHJ1Y3QgY2xrICpjbGssIGludCBlbmFibGUpOwo+ICt9Owo+ICsKPiAr c3RydWN0IGNsayB7Cj4gKwlzdHJ1Y3QgY2xrICpwYXJlbnQ7CQkvKiBwYXJlbnQgY2xrICovCj4g Kwl1bnNpZ25lZCBsb25nIHJhdGU7CQkvKiBjbG9jayByYXRlIGluIEh6ICovCj4gKwl1bnNpZ25l ZCBsb25nIGRpdmlkZXI7CQkvKiBjbG9jayBkaXZpZGVyICovCj4gKwl1MzIgdXNlY291bnQ7CQkJ LyogcmVmZXJlbmNlIGNvdW50ICovCj4gKwlzdHJ1Y3QgY2xrX29wcyAqb3BzOwkJLyogY2xvY2sg b3BlcmF0aW9uICovCj4gKwl1MzIgZW5hYmxlX3JlZzsJCQkvKiBjbG9jayBlbmFibGUgcmVnaXN0 ZXIgKi8KPiArCXUzMiBlbmFibGVfbWFzazsJCS8qIGNsb2NrIGVuYWJsZSBtYXNrICovCj4gK307 Cj4gKwo+ICtzdGF0aWMgdW5zaWduZWQgbG9uZyBjbGtfZGl2aWRlX3BhcmVudChzdHJ1Y3QgY2xr ICpjbGspCj4gK3sKPiArCWlmIChjbGstPnBhcmVudCAmJiBjbGstPmRpdmlkZXIpCj4gKwkJcmV0 dXJuIGNsa19nZXRfcmF0ZShjbGstPnBhcmVudCkgLyBjbGstPmRpdmlkZXI7Cj4gKwllbHNlCj4g KwkJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgY2xrX2xvY2FsX29ub2ZmX2VuYWJs ZShzdHJ1Y3QgY2xrICpjbGssIGludCBlbmFibGUpCj4gK3sKPiArCXUzMiB0bXA7Cj4gKwo+ICsJ Lyogbm8gZW5hYmxlX3JlZyBtZWFucyB0aGUgY2xvY2sgaXMgYWx3YXlzIGVuYWJsZWQgKi8KPiAr CWlmICghY2xrLT5lbmFibGVfcmVnKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCXRtcCA9IF9fcmF3 X3JlYWRsKG1jczgxNHhfc3lzZGJnX2Jhc2UgKyBjbGstPmVuYWJsZV9yZWcpOwo+ICsJaWYgKCFl bmFibGUpCj4gKwkJdG1wICY9IH5jbGstPmVuYWJsZV9tYXNrOwo+ICsJZWxzZQo+ICsJCXRtcCB8 PSBjbGstPmVuYWJsZV9tYXNrOwo+ICsKPiArCV9fcmF3X3dyaXRlbCh0bXAsIG1jczgxNHhfc3lz ZGJnX2Jhc2UgKyBjbGstPmVuYWJsZV9yZWcpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgc3RydWN0IGNsa19vcHMgZGVmYXVsdF9jbGtfb3BzID0gewo+ICsJLmdldF9yYXRl CT0gY2xrX2RpdmlkZV9wYXJlbnQsCj4gKwkuZW5hYmxlCQk9IGNsa19sb2NhbF9vbm9mZl9lbmFi bGUsCj4gK307Cj4gKwo+ICtzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGNsb2Nrc19sb2NrKTsKPiAr Cj4gK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIGNwdV9mcmVxX3RhYmxlW10gPSB7Cj4gKwkx NzUwMDAsCj4gKwkzMDAwMDAsCj4gKwkxMjUwMDAsCj4gKwkxMzc1MDAsCj4gKwkyMTI1MDAsCj4g KwkyNTAwMDAsCj4gKwkxNjI1MDAsCj4gKwkxODc1MDAsCj4gKwkxNjI1MDAsCj4gKwkxNTAwMDAs Cj4gKwkyMjUwMDAsCj4gKwkyMzc1MDAsCj4gKwkyMDAwMDAsCj4gKwkyNjI1MDAsCj4gKwkyNzUw MDAsCj4gKwkyODc1MDAKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgY2xrIGNsa19jcHU7Cj4g Kwo+ICsvKiBTeXN0ZW0gY2xvY2sgaXMgZml4ZWQgYXQgNTBNaHogKi8KPiArc3RhdGljIHN0cnVj dCBjbGsgY2xrX3N5cyA9IHsKPiArCS5yYXRlCT0gNTAgKiBNSFosCj4gK307Cj4gKwo+ICtzdGF0 aWMgc3RydWN0IGNsayBjbGtfc2RyYW07Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGNsayBjbGtfdGlt ZXIwID0gewo+ICsJLnBhcmVudAk9ICZjbGtfc2RyYW0sCj4gKwkuZGl2aWRlciA9IDIsCj4gKwku b3BzCT0gJmRlZmF1bHRfY2xrX29wcywKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgY2xrIGNs a190aW1lcjFfMiA9IHsKPiArCS5wYXJlbnQJPSAmY2xrX3N5cywKPiArfTsKPiArCj4gKy8qIFdh dGNoZG9nIGNsb2NrIGlzIHN5c3RlbSBjbG9jayAvIDEyOCAqLwo+ICtzdGF0aWMgc3RydWN0IGNs ayBjbGtfd2R0ID0gewo+ICsJLnBhcmVudAk9ICZjbGtfc3lzLAo+ICsJLmRpdmlkZXIgPSAxMjgs Cj4gKwkub3BzCT0gJmRlZmF1bHRfY2xrX29wcywKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3Qg Y2xrIGNsa19lbWFjID0gewo+ICsJLm9wcwkJPSAmZGVmYXVsdF9jbGtfb3BzLAo+ICsJLmVuYWJs ZV9yZWcJPSBTWVNEQkdfU1lTQ1RMLAo+ICsJLmVuYWJsZV9tYXNrCT0gU1lTQ1RMX0VNQUMsCj4g K307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGNsayBjbGtfZXBoeSA9IHsKPiArCS5vcHMJCT0gJmRl ZmF1bHRfY2xrX29wcywKPiArCS5lbmFibGVfcmVnCT0gU1lTREJHX1BMTF9DVEwsCj4gKwkuZW5h YmxlX21hc2sJPSB+U1lTQ1RMX0VQSFksCS8qIGFjdGl2ZSBsb3cgKi8KPiArfTsKPiArCj4gK3N0 YXRpYyBzdHJ1Y3QgY2xrIGNsa19jaXBoZXIgPSB7Cj4gKwkub3BzCQk9ICZkZWZhdWx0X2Nsa19v cHMsCj4gKwkuZW5hYmxlX3JlZwk9IFNZU0RCR19TWVNDVEwsCj4gKwkuZW5hYmxlX21hc2sJPSBT WVNDVExfQ0lQSEVSLAo+ICt9Owo+ICsKPiArI2RlZmluZSBDTEsoX2RldiwgX2NvbiwgX2NsaykJ XAo+ICt7IC5kZXZfaWQgPSAoX2RldiksIC5jb25faWQgPSAoX2NvbiksIC5jbGsgPSAoX2Nsaykg fSwKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgY2xrX2xvb2t1cCBtY3M4MTR4X2NoaXBfY2xrc1tdID0g ewo+ICsJQ0xLKCJjcHUiLCBOVUxMLCAmY2xrX2NwdSkKPiArCUNMSygic3lzIiwgTlVMTCwgJmNs a19zeXMpCj4gKwlDTEsoInNkcmFtIiwgTlVMTCwgJmNsa19zZHJhbSkKPiArCS8qIDMyLWJpdHMg dGltZXIwICovCj4gKwlDTEsoInRpbWVyMCIsIE5VTEwsICZjbGtfdGltZXIwKQo+ICsJLyogMTYt Yml0cyB0aW1lcjEgKi8KPiArCUNMSygidGltZXIxIiwgTlVMTCwgJmNsa190aW1lcjFfMikKPiAr CS8qIDY0LWJpdHMgdGltZXIyLCBzYW1lIGFzIHRpbWVyIDEgKi8KPiArCUNMSygidGltZXIyIiwg TlVMTCwgJmNsa190aW1lcjFfMikKPiArCUNMSyhOVUxMLCAid2R0IiwgJmNsa193ZHQpCj4gKwlD TEsoTlVMTCwgImVtYWMiLCAmY2xrX2VtYWMpCj4gKwlDTEsoTlVMTCwgImVwaHkiLCAmY2xrX2Vw aHkpCj4gKwlDTEsoTlVMTCwgImNpcGhlciIsICZjbGtfY2lwaGVyKQo+ICt9Owo+ICsKPiArc3Rh dGljIHZvaWQgbG9jYWxfY2xrX2Rpc2FibGUoc3RydWN0IGNsayAqY2xrKQo+ICt7Cj4gKwlXQVJO X09OKCFjbGstPnVzZWNvdW50KTsKPiArCj4gKwlpZiAoY2xrLT51c2Vjb3VudCA+IDApIHsKPiAr CQljbGstPnVzZWNvdW50LS07Cj4gKwo+ICsJCWlmICgoY2xrLT51c2Vjb3VudCA9PSAwKSAmJiAo Y2xrLT5vcHMtPmVuYWJsZSkpCj4gKwkJCWNsay0+b3BzLT5lbmFibGUoY2xrLCAwKTsKPiArCj4g KwkJaWYgKGNsay0+cGFyZW50KQo+ICsJCQlsb2NhbF9jbGtfZGlzYWJsZShjbGstPnBhcmVudCk7 Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbG9jYWxfY2xrX2VuYWJsZShzdHJ1Y3QgY2xr ICpjbGspCj4gK3sKPiArCWludCByZXQgPSAwOwo+ICsKPiArCWlmIChjbGstPnBhcmVudCkKPiAr CQlyZXQgPSBsb2NhbF9jbGtfZW5hYmxlKGNsay0+cGFyZW50KTsKPiArCj4gKwlpZiAocmV0KQo+ ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJaWYgKChjbGstPnVzZWNvdW50ID09IDApICYmIChjbGst Pm9wcy0+ZW5hYmxlKSkKPiArCQlyZXQgPSBjbGstPm9wcy0+ZW5hYmxlKGNsaywgMSk7Cj4gKwo+ ICsJaWYgKCFyZXQpCj4gKwkJY2xrLT51c2Vjb3VudCsrOwo+ICsJZWxzZSBpZiAoY2xrLT5wYXJl bnQgJiYgY2xrLT5wYXJlbnQtPm9wcy0+ZW5hYmxlKQo+ICsJCWxvY2FsX2Nsa19kaXNhYmxlKGNs ay0+cGFyZW50KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtpbnQgY2xrX2VuYWJs ZShzdHJ1Y3QgY2xrICpjbGspCj4gK3sKPiArCWludCByZXQ7Cj4gKwl1bnNpZ25lZCBsb25nIGZs YWdzOwo+ICsKPiArCXNwaW5fbG9ja19pcnFzYXZlKCZjbG9ja3NfbG9jaywgZmxhZ3MpOwo+ICsJ cmV0ID0gbG9jYWxfY2xrX2VuYWJsZShjbGspOwo+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm Y2xvY2tzX2xvY2ssIGZsYWdzKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gK0VYUE9SVF9T WU1CT0woY2xrX2VuYWJsZSk7Cj4gKwo+ICt2b2lkIGNsa19kaXNhYmxlKHN0cnVjdCBjbGsgKmNs aykKPiArewo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPiArCj4gKwlzcGluX2xvY2tfaXJxc2F2 ZSgmY2xvY2tzX2xvY2ssIGZsYWdzKTsKPiArCWxvY2FsX2Nsa19kaXNhYmxlKGNsayk7Cj4gKwlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZjbG9ja3NfbG9jaywgZmxhZ3MpOwo+ICt9Cj4gK0VYUE9S VF9TWU1CT0woY2xrX2Rpc2FibGUpOwo+ICsKPiArdW5zaWduZWQgbG9uZyBjbGtfZ2V0X3JhdGUo c3RydWN0IGNsayAqY2xrKQo+ICt7Cj4gKwlpZiAodW5saWtlbHkoSVNfRVJSX09SX05VTEwoY2xr KSkpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJaWYgKGNsay0+cmF0ZSkKPiArCQlyZXR1cm4gY2xr LT5yYXRlOwo+ICsKPiArCWlmIChjbGstPm9wcyAmJiBjbGstPm9wcy0+Z2V0X3JhdGUpCj4gKwkJ cmV0dXJuIGNsay0+b3BzLT5nZXRfcmF0ZShjbGspOwo+ICsKPiArCXJldHVybiBjbGtfZ2V0X3Jh dGUoY2xrLT5wYXJlbnQpOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woY2xrX2dldF9yYXRlKTsKPiAr Cj4gK3N0cnVjdCBjbGsgKmNsa19nZXRfcGFyZW50KHN0cnVjdCBjbGsgKmNsaykKPiArewo+ICsJ dW5zaWduZWQgbG9uZyBmbGFnczsKPiArCj4gKwlpZiAodW5saWtlbHkoSVNfRVJSX09SX05VTEwo Y2xrKSkpCj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwo+ICsJaWYgKCFjbGstPm9wcyB8fCAhY2xrLT5v cHMtPmdldF9wYXJlbnQpCj4gKwkJcmV0dXJuIGNsay0+cGFyZW50Owo+ICsKPiArCXNwaW5fbG9j a19pcnFzYXZlKCZjbG9ja3NfbG9jaywgZmxhZ3MpOwo+ICsJY2xrLT5wYXJlbnQgPSBjbGstPm9w cy0+Z2V0X3BhcmVudChjbGspOwo+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2xvY2tzX2xv Y2ssIGZsYWdzKTsKPiArCj4gKwlyZXR1cm4gY2xrLT5wYXJlbnQ7Cj4gK30KPiArRVhQT1JUX1NZ TUJPTChjbGtfZ2V0X3BhcmVudCk7CgpZb3Ugc2hvdWxkIHJhdGhlciB1c2UgdGhlIG5ldyBjbG9j ayBmcmFtZXdvcmsgaW5zdGVhZCBvZiBwcm92aWRpbmcgeW91cgpvd24gaW1wbGVtZW50YXRpb24g b2YgdGhlIGNsa18qKCkgQVBJLiBBbmQgdGhlcmVmb3JlIHlvdXIgY2xvY2sgZHJpdmVyCnNob3Vs ZCBiZSBpbiBkcml2ZXJzL2Nsay8gaW5zdGVhZC4KCj4gK3N0cnVjdCBjcHVfbW9kZSB7Cj4gKwlj b25zdCBjaGFyICpuYW1lOwo+ICsJaW50IGdwaW9fc3RhcnQ7Cj4gKwlpbnQgZ3Bpb19lbmQ7Cj4g K307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNwdV9tb2RlIGNwdV9tb2Rlc1tdID0gewo+ ICsJewo+ICsJCS5uYW1lCQk9ICJJMlMiLAo+ICsJCS5ncGlvX3N0YXJ0CT0gNCwKPiArCQkuZ3Bp b19lbmQJPSA4LAo+ICsJfSwKPiArCXsKPiArCQkubmFtZQkJPSAiVUFSVCIsCj4gKwkJLmdwaW9f c3RhcnQJPSA0LAo+ICsJCS5ncGlvX2VuZAk9IDksCj4gKwl9LAo+ICsJewo+ICsJCS5uYW1lCQk9 ICJFeHRlcm5hbCBNSUkiLAo+ICsJCS5ncGlvX3N0YXJ0CT0gMCwKPiArCQkuZ3Bpb19lbmQJPSAx NiwKPiArCX0sCj4gKwl7Cj4gKwkJLm5hbWUJCT0gIk5vcm1hbCIsCj4gKwkJLmdwaW9fc3RhcnQJ PSAtMSwKPiArCQkuZ3Bpb19lbmQJPSAtMSwKPiArCX0sCj4gK307Cj4gKwo+ICt2b2lkIF9faW5p dCBtY3M4MTR4X2luaXRfbWFjaGluZSh2b2lkKQo+ICt7Cj4gKwl1MzIgYnMyLCBjcHVfbW9kZTsK PiArCWludCBncGlvOwo+ICsKPiArCWJzMiA9IF9fcmF3X3JlYWRsKG1jczgxNHhfc3lzZGJnX2Jh c2UgKyBTWVNEQkdfQlMyKTsKPiArCWNwdV9tb2RlID0gKGJzMiA+PiBDUFVfTU9ERV9TSElGVCkg JiBDUFVfTU9ERV9NQVNLOwo+ICsKPiArCXByX2luZm8oIkNQVSBtb2RlOiAlc1xuIiwgY3B1X21v ZGVzW2NwdV9tb2RlXS5uYW1lKTsKPiArCj4gKwkvKiByZXF1ZXN0IHRoZSBncGlvcyBzaW5jZSB0 aGUgcGlucyBhcmUgbXV4ZWQgZm9yIGZ1bmN0aW9ubmFsaXR5ICovCj4gKwlmb3IgKGdwaW8gPSBj cHVfbW9kZXNbY3B1X21vZGVdLmdwaW9fc3RhcnQ7Cj4gKwkJZ3BpbyA9PSBjcHVfbW9kZXNbY3B1 X21vZGVdLmdwaW9fZW5kOyBncGlvKyspIHsKPiArCQlpZiAoZ3BpbyAhPSAtMSkKPiArCQkJZ3Bp b19yZXF1ZXN0KGdwaW8sIGNwdV9tb2Rlc1tjcHVfbW9kZV0ubmFtZSk7CgpJIGFtIG5vdCBzdXJl IGhlcmUsIGJ1dCBzaG91bGRuJ3QgdGhpcyBiZSBkb25lIHdpdGggdGhlIHBpbmN0cmwKc3Vic3lz dGVtIGluc3RlYWQ/Cgo+ICt2b2lkIF9faW5pdCBtY3M4MTR4X21hcF9pbyh2b2lkKQo+ICt7Cj4g Kwlpb3RhYmxlX2luaXQobWNzODE0eF9pb19kZXNjLCBBUlJBWV9TSVpFKG1jczgxNHhfaW9fZGVz YykpOwo+ICsKPiArCW1jczgxNHhfc3lzZGJnX2Jhc2UgPSBpb3JlbWFwKE1DUzgxNFhfSU9fU1RB UlQgKyBNQ1M4MTRYX1NZU0RCRywKPiArCQkJCQlNQ1M4MTRYX1NZU0RCR19TSVpFKTsKPiArCWlm ICghbWNzODE0eF9zeXNkYmdfYmFzZSkKPiArCQlwYW5pYygidW5hYmxlIHRvIHJlbWFwIHN5c2Ri ZyBiYXNlIik7CgpBbnkgcmVhc29uIHRvIGhhdmUgYSBzdGF0aWMgbWFwcGluZyBpbml0aWFsaXpl ZCB3aXRoIGlvdGFibGVfaW5pdCgpIGFuZAp0aGVuIGEgZHluYW1pYyBtYXBwaW5nIGluaXRpYWxp emVkIHdpdGggaW9yZW1hcCgpID8gSSB0aG91Z2h0IHRoYXQKaW9yZW1hcCgpIHdhc24ndCByZWFk eSBhdCB0aGUgLT5tYXBfaW8oKSB0aW1lLCBhbmQgaXQgd2FzIHRoZXJlZm9yZSB0aGUKcmVhc29u IHdlIGhhZCBzdGF0aWMgbWFwcGluZ3MuCgo+IGRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW1j czgxNHgvaW5jbHVkZS9tYWNoL2VudHJ5LW1hY3JvLlMgYi9hcmNoL2FybS9tYWNoLW1jczgxNHgv aW5jbHVkZS9tYWNoL2VudHJ5LW1hY3JvLlMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4 IDAwMDAwMDAuLmNiYWQ1NjYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvYXJjaC9hcm0vbWFjaC1t Y3M4MTR4L2luY2x1ZGUvbWFjaC9lbnRyeS1tYWNyby5TCj4gQEAgLTAsMCArMSwyOSBAQAo+ICsj aW5jbHVkZSA8bWFjaC9tY3M4MTR4Lmg+Cj4gKyAgICAgICAgICAgICAgICAubWFjcm8gIGRpc2Fi bGVfZmlxCj4gKyAgICAgICAgICAgICAgICAuZW5kbQo+ICsKPiArCQkubWFjcm8gYXJjaF9yZXRf dG9fdXNlciwgdG1wMSwgdG1wMgo+ICsJCS5lbmRtCj4gKwo+ICsJCS5tYWNybyAgZ2V0X2lycW5y X3ByZWFtYmxlLCBiYXNlLCB0bXAKPiArCQlsZHIJXGJhc2UsID1tY3M4MTR4X2ludGNfYmFzZUAg YmFzZSB2aXJ0dWFsIGFkZHJlc3Mgb2YgSU5UQwo+ICsJCWxkcglcYmFzZSwgW1xiYXNlXQo+ICsJ CS5lbmRtCj4gKwo+ICsJCS5tYWNybyAgZ2V0X2lycW5yX2FuZF9iYXNlLCBpcnFuciwgaXJxc3Rh dCwgYmFzZSwgdG1wCj4gKwkJbW92CVx0bXAsICNNQ1M4MTRYX0lSUV9TVFMwCSBAIGxvYWQgdG1w IHdpdGggU1RTMCByZWdpc3RlciBvZmZzZXQKPiArCQlsZHIJXGlycXN0YXQsIFtcYmFzZSwgXHRt cF0JIEAgbG9hZCB2YWx1ZSBhdCBiYXNlICsgdG1wCj4gKwkJdHN0CVxpcnFzdGF0LCBcaXJxc3Rh dCAgICAgICBAIHRlc3QgaWYgbm8gYWN0aXZlIElSUSdzCj4gKwkJYmVxCTEwMDJmICAgICAgICAg ICAgICAgICAgICBAIGlmIG5vIGFjdGl2ZSBpcnFzIHJldHVybiB3aXRoIHN0YXR1cyAwCj4gKwkJ bW92CVxpcnFuciwgIzAgICAgICAgICAgICAgICBAIHN0YXJ0IGZyb20gaXJxIHplcm8KPiArCQlt b3YJXHRtcCwgICAjMSAgICAgICAgICAgICAgIEAgdGhlIG1hc2sgaW5pdGlhbGx5IDEKPiArMTAw MToKPiArCQl0c3QgICAgIFxpcnFzdGF0LCBcdG1wICAgICAgICAgICBAIGFuZCB3aXRoIG1hc2sK PiArCQlhZGRlcSAgIFxpcnFuciwgXGlycW5yLCAjMSAgICAgICBAIGlmICB6ZXJvIHRoZW4gYWRk IG9uZSB0byBucgo+ICsJCW1vdmVxICAgXHRtcCwgICBcdG1wLCBsc2wgIzEgICAgIEAgc2hpZnQg bWFzayBvbmUgdG8gbGVmdAo+ICsJCWJlcSAgICAgMTAwMWIgICAgICAgICAgICAgICAgICAgIEAg aWYgIHplcm8gdGhlbiBsb29wIGFnYWluCj4gKwkJbW92ICAgICBcaXJxc3RhdCwgXHRtcCAgICAg ICAgICAgQCBzYXZlIHRoZSByZXR1cm4gbWFzawo+ICsJCW1vdglcdG1wLCAjTUNTODE0WF9JUlFf U1RTMCAgQCBsb2FkIHRtcCB3aXRoIElDUiBvZmZzZXQKPiArCQlzdHIgICAgIFxpcnFzdGF0LCAg W1xiYXNlLCBcdG1wXSBAIGNsZWFyIGlycSB3aXRoIHNlbGVjdGVkIG1hc2sKPiArMTAwMjoKPiAr ICAgICAgICAgICAgICAgIC5lbmRtCgpIdW0sIHlvdSBzaG91bGQgaW5zdGVhZCB1c2UgdGhlIE1V TFRJX0lSUV9IQU5ETEVSIGZlYXR1cmUgc28gdGhhdCB0aGlzCmNhbiBiZSB3cml0dGVuIGluIEMu Cgo+IGRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW1jczgxNHgvaW5jbHVkZS9tYWNoL2hhcmR3 YXJlLmggYi9hcmNoL2FybS9tYWNoLW1jczgxNHgvaW5jbHVkZS9tYWNoL2hhcmR3YXJlLmgKPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjUyOWY2NDgKPiAtLS0gL2Rldi9u dWxsCj4gKysrIGIvYXJjaC9hcm0vbWFjaC1tY3M4MTR4L2luY2x1ZGUvbWFjaC9oYXJkd2FyZS5o Cj4gQEAgLTAsMCArMSwxNiBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMDMgQXJ0ZWMg RGVzaWduIEx0ZC4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKPiArICog cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCj4gKyAqCj4gKyAqLwo+ ICsKPiArI2lmbmRlZiBfX0FTTV9BUkNIX0hBUkRXQVJFX0gKPiArI2RlZmluZSBfX0FTTV9BUkNI X0hBUkRXQVJFX0gKClRoaXMgI2RlZmluZSBuYW1lIG5vIGxvbmdlciBsb29rcyBjb25zaXN0ZW50 IHdpdGggd2hlcmUgdGhlIGZpbGUgaXMKbG9jYXRlZC4KCj4gKyNpbmNsdWRlICJtY3M4MTR4Lmgi Cj4gKwo+ICsjZW5kaWYKPiArCj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtbWNzODE0eC9p bmNsdWRlL21hY2gvaXJxcy5oIGIvYXJjaC9hcm0vbWFjaC1tY3M4MTR4L2luY2x1ZGUvbWFjaC9p cnFzLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjc4MDIxZDEKPiAt LS0gL2Rldi9udWxsCj4gKysrIGIvYXJjaC9hcm0vbWFjaC1tY3M4MTR4L2luY2x1ZGUvbWFjaC9p cnFzLmgKPiBAQCAtMCwwICsxLDIyIEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykgMjAwMyBB cnRlYyBEZXNpZ24gTHRkLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwo+ ICsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiArICoKPiAr ICovCj4gKwo+ICsjaWZuZGVmIF9fQVNNX0FSQ0hfSVJRU19ICj4gKyNkZWZpbmUgX19BU01fQVJD SF9JUlFTX0gKPiArCj4gKyNkZWZpbmUgRklRX1NUQVJUCTAKPiArCj4gKyNkZWZpbmUgTlJfSVJR UwkJMzIKCkkgdGhpbmsgdGhpcyBzaG91bGRuJ3QgYmUgbmVlZGVkIGlmIHlvdSB1c2UgU1BBUlNF X0lSUSBzdXBwb3J0LgoKPiArI2RlZmluZSBJUlFfUENJX0lOVEEgICAgICAgICAgICAyMgo+ICsj ZGVmaW5lIElSUV9QQ0lfSU5UQiAgICAgICAgICAgIDIzCj4gKyNkZWZpbmUgSVJRX1BDSV9JTlRD ICAgICAgICAgICAgMjQKPiArI2RlZmluZSBJUlFfUENJX0lOVEQgICAgICAgICAgICAyNgoKQW5k IHRoZXNlIHByb2JhYmx5IGJlbG9uZyB0byB0aGUgRFQgc29tZWhvdz8KCj4gZGlmZiAtLWdpdCBh L2FyY2gvYXJtL21hY2gtbWNzODE0eC90aW1lci5jIGIvYXJjaC9hcm0vbWFjaC1tY3M4MTR4L3Rp bWVyLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmU4NDA4ZTQKPiAt LS0gL2Rldi9udWxsCj4gKysrIGIvYXJjaC9hcm0vbWFjaC1tY3M4MTR4L3RpbWVyLmMKPiBAQCAt MCwwICsxLDEzMyBAQAo+ICsvKgo+ICsgKiBNb3NjaGlwIE1DUzgxNHggdGltZXIgcm91dGluZXMK PiArICoKPiArICogQ29weXJpZ2h0IChDKSAyMDEyLCBGbG9yaWFuIEZhaW5lbGxpIDxmbG9yaWFu QG9wZW53cnQub3JnPgo+ICsgKgo+ICsgKiBMaWNlbnNlZCB1bmRlciBHUEx2Mgo+ICsgKi8KPiAr I2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+ICsjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+ Cj4gKyNpbmNsdWRlIDxsaW51eC90aW1lLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC90aW1leC5oPgo+ ICsjaW5jbHVkZSA8bGludXgvaXJxLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L2Nsay5oPgo+ICsjaW5jbHVkZSA8bGludXgvaW8uaD4KPiArI2luY2x1ZGUg PGxpbnV4L29mLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9vZl9hZGRyZXNzLmg+Cj4gKwo+ICsjaW5j bHVkZSA8YXNtL21hY2gvdGltZS5oPgo+ICsjaW5jbHVkZSA8bWFjaC9tY3M4MTR4Lmg+Cj4gKwo+ ICsvKiBUaW1lciBibG9jayByZWdpc3RlcnMgKi8KPiArI2RlZmluZSBUSU1FUl9WQUwJMHgwMAo+ ICsjZGVmaW5lIFRJTUVSX0NUTAkweDA0Cj4gKwo+ICtzdGF0aWMgdTMyIGxhc3RfcmVsb2FkOwo+ ICtzdGF0aWMgdTMyIHRpbWVyX2NvcnJlY3Q7Cj4gK3N0YXRpYyB1MzIgY2xvY2tfcmF0ZTsKPiAr c3RhdGljIHUzMiB0aW1lcl9yZWxvYWRfdmFsdWU7Cj4gK3N0YXRpYyB2b2lkIF9faW9tZW0gKm1j czgxNHhfdGltZXJfYmFzZTsKPiArCj4gK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0aWNr czJ1c2Vjcyh1MzIgeCkKPiArewo+ICsJcmV0dXJuIHggLyAoY2xvY2tfcmF0ZSAvIDEwMDAwMDAp Owo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBSZXR1cm5zIG51bWJlciBvZiBtcyBzaW5jZSBsYXN0IGNs b2NrIGludGVycnVwdC4gIE5vdGUgdGhhdCBpbnRlcnJ1cHRzCj4gKyAqIHdpbGwgaGF2ZSBiZWVu IGRpc2FibGVkIGJ5IGRvX2dldHRpbWVvZmZzZXQoKQo+ICsgKi8KPiArc3RhdGljIHVuc2lnbmVk IGxvbmcgbWNzODE0eF9nZXR0aW1lb2Zmc2V0KHZvaWQpCj4gK3sKPiArCXUzMiB0aWNrcyA9IF9f cmF3X3JlYWRsKG1jczgxNHhfdGltZXJfYmFzZSArIFRJTUVSX1ZBTCk7Cj4gKwo+ICsJaWYgKHRp Y2tzIDwgbGFzdF9yZWxvYWQpCj4gKwkJcmV0dXJuIHRpY2tzMnVzZWNzKHRpY2tzICsgKHUzMiko MHhmZmZmZmZmZiAtIGxhc3RfcmVsb2FkKSk7Cj4gKwllbHNlCj4gKwkJcmV0dXJuIHRpY2tzMnVz ZWNzKHRpY2tzIC0gbGFzdF9yZWxvYWQpOwo+ICt9Cj4gKwo+ICsKPiArc3RhdGljIGlycXJldHVy bl90IG1jczgxNHhfdGltZXJfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pZCkKPiArewo+ ICsJdTMyIGNvdW50ID0gX19yYXdfcmVhZGwobWNzODE0eF90aW1lcl9iYXNlICsgVElNRVJfVkFM KTsKPiArCj4gKwkvKiB0YWtlIGludG8gYWNjb3VudCBkZWxheSB1cCB0byB0aGlzIG1vbWVudCAq Lwo+ICsJbGFzdF9yZWxvYWQgPSBjb3VudCArIHRpbWVyX2NvcnJlY3QgKyB0aW1lcl9yZWxvYWRf dmFsdWU7Cj4gKwo+ICsJaWYgKGxhc3RfcmVsb2FkIDwgdGltZXJfcmVsb2FkX3ZhbHVlKQo+ICsJ CWxhc3RfcmVsb2FkID0gdGltZXJfcmVsb2FkX3ZhbHVlOwo+ICsJZWxzZSBpZiAodGltZXJfY29y cmVjdCA9PSAwKQo+ICsJCXRpbWVyX2NvcnJlY3QgPSBfX3Jhd19yZWFkbChtY3M4MTR4X3RpbWVy X2Jhc2UgKyBUSU1FUl9WQUwpIC0KPiArCQkJCQljb3VudDsKPiArCj4gKwlfX3Jhd193cml0ZWwo bGFzdF9yZWxvYWQsIG1jczgxNHhfdGltZXJfYmFzZSArIFRJTUVSX1ZBTCk7Cj4gKwo+ICsJdGlt ZXJfdGljaygpOwo+ICsKPiArCXJldHVybiBJUlFfSEFORExFRDsKPiArfQo+ICsKPiArc3RhdGlj IHN0cnVjdCBpcnFhY3Rpb24gbWNzODE0eF90aW1lcl9pcnEgPSB7Cj4gKwkubmFtZQkJPSAibWNz ODE0eC10aW1lciIsCj4gKwkuZmxhZ3MJCT0gSVJRRl9ESVNBQkxFRCB8IElSUUZfVElNRVIgfCBJ UlFGX0lSUVBPTEwsCj4gKwkuaGFuZGxlcgk9IG1jczgxNHhfdGltZXJfaW50ZXJydXB0LAo+ICt9 Owo+ICsKPiArc3RhdGljIHN0cnVjdCBvZl9kZXZpY2VfaWQgbWNzODE0eF90aW1lcl9pZHNbXSA9 IHsKPiArCXsgLmNvbXBhdGlibGUgPSAibW9zY2hpcCxtY3M4MTR4LXRpbWVyIiB9LAo+ICsJeyAv KiBzZW50aW5lbCAqLyB9LAo+ICt9Owo+ICsKPiArc3RhdGljIHZvaWQgX19pbml0IG1jczgxNHhf b2ZfdGltZXJfaW5pdCh2b2lkKQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wOwo+ICsJ Y29uc3QgdW5zaWduZWQgaW50ICppbnRzcGVjOwo+ICsKPiArCW5wID0gb2ZfZmluZF9tYXRjaGlu Z19ub2RlKE5VTEwsIG1jczgxNHhfdGltZXJfaWRzKTsKPiArCWlmICghbnApCj4gKwkJcGFuaWMo InVuYWJsZSB0byBmaW5kIGNvbXBhdGlibGUgdGltZXIgbm9kZSBpbiBkdGIiKTsKPiArCj4gKwlt Y3M4MTR4X3RpbWVyX2Jhc2UgPSBvZl9pb21hcChucCwgMCk7Cj4gKwlpZiAoIW1jczgxNHhfdGlt ZXJfYmFzZSkKPiArCQlwYW5pYygidW5hYmxlIHRvIHJlbWFwIHRpbWVyIGNwdSByZWdpc3RlcnMi KTsKPiArCj4gKwlpbnRzcGVjID0gb2ZfZ2V0X3Byb3BlcnR5KG5wLCAiaW50ZXJydXB0cyIsIE5V TEwpOwo+ICsJaWYgKCFpbnRzcGVjKQo+ICsJCXBhbmljKCJubyBpbnRlcnJ1cHRzIHByb3BlcnR5 IGZvciB0aW1lciIpOwo+ICsKPiArCW1jczgxNHhfdGltZXJfaXJxLmlycSA9IGJlMzJfdG9fY3B1 cChpbnRzcGVjKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgX19pbml0IG1jczgxNHhfdGltZXJf aW5pdCh2b2lkKQo+ICt7Cj4gKwlzdHJ1Y3QgY2xrICpjbGs7Cj4gKwo+ICsJY2xrID0gY2xrX2dl dF9zeXMoInRpbWVyMCIsIE5VTEwpOwo+ICsJaWYgKElTX0VSUl9PUl9OVUxMKGNsaykpCj4gKwkJ cGFuaWMoInVuYWJsZSB0byBnZXQgdGltZXIwIGNsb2NrIik7Cj4gKwo+ICsJY2xvY2tfcmF0ZSA9 IGNsa19nZXRfcmF0ZShjbGspOwo+ICsJY2xrX3B1dChjbGspOwo+ICsKPiArCW1jczgxNHhfb2Zf dGltZXJfaW5pdCgpOwo+ICsKPiArCXByX2luZm8oIlRpbWVyIGZyZXF1ZW5jeTogJWQgKGtIeilc biIsIGNsb2NrX3JhdGUgLyAxMDAwKTsKPiArCj4gKwl0aW1lcl9yZWxvYWRfdmFsdWUgPSAweGZm ZmZmZmZmIC0gKGNsb2NrX3JhdGUgLyBIWik7Cj4gKwo+ICsJLyogZGlzYWJsZSB0aW1lciAqLwo+ ICsJX19yYXdfd3JpdGVsKDAsIG1jczgxNHhfdGltZXJfYmFzZSArIFRJTUVSX0NUTCk7Cj4gKwlf X3Jhd193cml0ZWwodGltZXJfcmVsb2FkX3ZhbHVlLCBtY3M4MTR4X3RpbWVyX2Jhc2UgKyBUSU1F Ul9WQUwpOwo+ICsJbGFzdF9yZWxvYWQgPSB0aW1lcl9yZWxvYWRfdmFsdWU7Cj4gKwo+ICsJc2V0 dXBfaXJxKG1jczgxNHhfdGltZXJfaXJxLmlycSwgJm1jczgxNHhfdGltZXJfaXJxKTsKPiArCS8q IGVuYWJsZSB0aW1lciwgc3RvcCB0aW1lciBpbiBkZWJ1ZyBtb2RlICovCj4gKwlfX3Jhd193cml0 ZWwoMHgwMywgbWNzODE0eF90aW1lcl9iYXNlICsgVElNRVJfQ1RMKTsKPiArfQo+ICsKPiArc3Ry dWN0IHN5c190aW1lciBtY3M4MTR4X3RpbWVyID0gewo+ICsJLmluaXQJPSBtY3M4MTR4X3RpbWVy X2luaXQsCj4gKwkub2Zmc2V0CT0gbWNzODE0eF9nZXR0aW1lb2Zmc2V0LAo+ICt9OwoKSSBhbSBz dXJwcmlzZWQgdGhhdCB0aGlzIGRvZXNuJ3QgdXNlIHRoZSBjbG9ja3NvdXJjZSBhbmQgY2xvY2tl dmVudHMKaW5mcmFzdHJ1Y3R1cmUuIEl0IHByb2JhYmx5IHNob3VsZCwgYW5kIGJlIGltcGxlbWVu dGVkIGluCmRyaXZlcnMvY2xvY2tzb3VyY2UvLgoKVGhvbWFzCi0tIApUaG9tYXMgUGV0YXp6b25p LCBGcmVlIEVsZWN0cm9ucwpLZXJuZWwsIGRyaXZlcnMsIHJlYWwtdGltZSBhbmQgZW1iZWRkZWQg TGludXgKZGV2ZWxvcG1lbnQsIGNvbnN1bHRpbmcsIHRyYWluaW5nIGFuZCBzdXBwb3J0LgpodHRw Oi8vZnJlZS1lbGVjdHJvbnMuY29tCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2Vy bmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1h bi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==