From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH 02/18] xen/arm: Implement PSCI system suspend call (virtual interface) Date: Mon, 12 Nov 2018 20:29:11 +0000 Message-ID: References: <1542022244-22977-1-git-send-email-mirela.simonovic@aggios.com> <1542022244-22977-3-git-send-email-mirela.simonovic@aggios.com> <1c5ca0ad-ee3d-2936-b57d-0ded1415176d@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gMIpi-0005AK-FP for xen-devel@lists.xenproject.org; Mon, 12 Nov 2018 20:29:18 +0000 In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Mirela Simonovic Cc: Tim Deegan , Stefano Stabellini , Xen Devel , Davorin Mista , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Saeed Nowshadi , Wei Liu , Jan Beulich , xen-devel , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org T24gMTEvMTIvMTggNDozNSBQTSwgTWlyZWxhIFNpbW9ub3ZpYyB3cm90ZToKPiBIaSBKdWxpZW4s Cj4gCj4gVGhhbmtzIGZvciB5b3VyIGZlZWRiYWNrLCBJJ2xsIG5lZWQgdG8gYW5zd2VyIGluIGl0 ZXJhdGlvbnMuCj4gCj4gT24gTW9uLCBOb3YgMTIsIDIwMTggYXQgNDoyNyBQTSBKdWxpZW4gR3Jh bGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPiB3cm90ZToKPj4KPj4gSGkgTWlyZWxhLAo+Pgo+PiBP biAxMS8xMi8xOCAxMTozMCBBTSwgTWlyZWxhIFNpbW9ub3ZpYyB3cm90ZToKPj4+IFRoZSBpbXBs ZW1lbnRhdGlvbiBjb25zaXN0cyBvZjoKPj4+IC1BZGRpbmcgUFNDSSBzeXN0ZW0gc3VzcGVuZCBj YWxsIGFzIG5ldyBQU0NJIGZ1bmN0aW9uCj4+PiAtVHJhcHBpbmcgUFNDSSBzeXN0ZW1fc3VzcGVu ZCBIVkMKPj4+IC1JbXBsZW1lbnRpbmcgUFNDSSBzeXN0ZW0gc3VzcGVuZCBjYWxsICh2aXJ0dWFs IGludGVyZmFjZSB0aGF0IGFsbG93cwo+Pj4gICAgZ3Vlc3RzIHRvIHN1c3BlbmQgdGhlbXNlbHZl cykKPj4+Cj4+PiBUaGUgUFNDSSBzeXN0ZW0gc3VzcGVuZCBzaG91bGQgYmUgY2FsbGVkIGJ5IGEg Z3Vlc3QgZnJvbSBpdHMgYm9vdAo+Pj4gVkNQVS4gTm9uLWJvb3QgVkNQVXMgb2YgdGhlIGd1ZXN0 IHNob3VsZCBiZSBob3QtdW5wbHVnZ2VkIHVzaW5nIFBTQ0kKPj4+IENQVV9PRkYgY2FsbCBwcmlv ciB0byBpc3N1aW5nIFBTQ0kgc3lzdGVtIHN1c3BlbmQuIEludGVycnVwdHMgdGhhdAo+Pj4gYXJl IGxlZnQgZW5hYmxlZCBieSB0aGUgZ3Vlc3QgYXJlIGFzc3VtZWQgdG8gYmUgaXRzIHdha2UtdXAg aW50ZXJydXB0cy4KPj4+IFRoZXJlZm9yZSwgYSB3YWtlLXVwIGludGVycnVwdCB0cmlnZ2VycyB0 aGUgcmVzdW1lIG9mIHRoZSBndWVzdC4gR3Vlc3QKPj4+IHNob3VsZCByZXN1bWUgcmVnYXJkbGVz cyBvZiB0aGUgc3RhdGUgb2YgWGVuIChzdXNwZW5kZWQgb3Igbm90KS4KPj4+Cj4+PiBXaGVuIGEg Z3Vlc3QgY2FsbHMgUFNDSSBzeXN0ZW0gc3VzcGVuZCB0aGUgcmVzcGVjdGl2ZSBkb21haW4gd2ls bCBiZQo+Pj4gc3VzcGVuZGVkIGlmIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Ogo+ Pj4gMSkgR2l2ZW4gcmVzdW1lIGVudHJ5IHBvaW50IGlzIG5vdCBpbnZhbGlkCj4+PiAyKSBPdGhl ciAoaWYgYW55KSBWQ1BVcyBvZiB0aGUgY2FsbGluZyBndWVzdCBhcmUgaG90LXVucGx1Z2dlZAo+ Pj4KPj4+IElmIHRoZSBjb25kaXRpb25zIGFib3ZlIGFyZSBtZXQgdGhlIGNhbGxpbmcgZG9tYWlu IGlzIGxhYmVsZWQgYXMKPj4+IHN1c3BlbmRlZCBhbmQgdGhlIGNhbGxpbmcgVkNQVSBpcyBibG9j a2VkLiBJZiBub3RoaW5nIGVsc2Ugd291bGRuJ3QKPj4+IGJlIGRvbmUgdGhlIHN1c3BlbmRlZCBk b21haW4gd291bGQgcmVzdW1lIGZyb20gdGhlIHBsYWNlIHdoZXJlIGl0Cj4+PiBjYWxsZWQgUFND SSBzeXN0ZW0gc3VzcGVuZC4gVGhpcyBpcyBleHBlY3RlZCBpZiBwcm9jZXNzaW5nIG9mIHRoZSBQ U0NJCj4+PiBzeXN0ZW0gc3VzcGVuZCBjYWxsIGZhaWxzLiBIb3dldmVyLCBpbiB0aGUgY2FzZSBv ZiBzdWNjZXNzIHRoZSBjYWxsaW5nCj4+PiBndWVzdCBzaG91bGQgcmVzdW1lIChjb250aW51ZSBl eGVjdXRpb24gYWZ0ZXIgdGhlIHdha2UtdXApIGZyb20gdGhlIGVudHJ5Cj4+PiBwb2ludCB3aGlj aCBpcyBnaXZlbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgb2YgdGhlIFBTQ0kgc3lzdGVtIHN1c3Bl bmQKPj4+IGNhbGwuIEluIGFkZGl0aW9uIHRvIHRoZSBlbnRyeSBwb2ludCwgdGhlIGd1ZXN0IGV4 cGVjdHMgdG8gc3RhcnQgd2l0aGluCj4+PiB0aGUgZW52aXJvbm1lbnQgd2hvc2Ugc3RhdGUgbWF0 Y2hlcyB0aGUgc3RhdGUgYWZ0ZXIgcmVzZXQuIFRoaXMgbWVhbnMKPj4+IHRoYXQgdGhlIGd1ZXN0 IHNob3VsZCBmaW5kIHJlc2V0IHJlZ2lzdGVyIHZhbHVlcywgTU1VIGRpc2FibGVkLCBldGMuCj4+ PiBUaGVyZWJ5LCB0aGUgY29udGV4dCBvZiBWQ1BVIHNob3VsZCBiZSAncmVzZXQnIChhcyBpZiB0 aGUgc3lzdGVtIGlzCj4+PiBjb21taW5nIG91dCBvZiByZXNldCksIHRoZSBwcm9ncmFtIGNvdW50 ZXIgc2hvdWxkIGNvbnRhaW4gZW50cnkgcG9pbnQsCj4+PiB3aGljaCBpcyAxc3QgYXJndW1lbnQs IGFuZCByMC94MCBzaG91bGQgY29udGFpbiBjb250ZXh0IElEIHdoaWNoIGlzIDJuZAo+Pj4gYXJn dW1lbnQgb2YgUFNDSSBzeXN0ZW0gc3VzcGVuZCBjYWxsLiBUaGUgY29udGV4dCBvZiBWQ1BVIGlz IHNldAo+Pj4gYWNjb3JkaW5nbHkgd2hlbiB0aGUgUFNDSSBzeXN0ZW0gc3VzcGVuZCBpcyBwcm9j ZXNzZWQsIHNvIHRoYXQgbm90aGluZwo+Pj4gbmVlZHMgdG8gYmUgZG9uZSBvbiByZXN1bWUvd2Fr ZS11cCBwYXRoLiBIb3dldmVyLCBpbiBvcmRlciB0byBlbnN1cmUgdGhhdAo+Pj4gdGhpcyBjb250 ZXh0IGRvZXNuJ3QgZ2V0IG92ZXJ3cml0dGVuIGJ5IHRoZSBzY2hlZHVsZXIgd2hlbiBzY2hlZHVs aW5nIG91dAo+Pj4gdGhpcyBWQ1BVICh3b3VsZCBub3JtYWxseSBoYXBwZW4gYWZ0ZXIgdGhlIGNh bGxpbmcgQ1BVIGlzIGJsb2NrZWQpLCB3ZSBuZWVkCj4+PiB0byBjaGVjayB3aGV0aGVyIHRvIHJl dHVybiBlYXJseSBmcm9tIGN0eHRfc3dpdGNoX2Zyb20oKS4KPj4+Cj4+PiBUaGVyZSBhcmUgdmFy aWFibGVzIGluIGRvbWFpbiBzdHJ1Y3R1cmUgdG8ga2VlcCB0cmFjayBvZiBkb21haW4gc2h1dGRv d24uCj4+PiBPbmUgb2YgZXhpc3Rpbmcgc2h1dGRvd24gcmVhc29uIGlzICdzdXNwZW5kJyB3aGlj aCB0aGlzIHBhdGNoIGlzIHVzaW5nIHRvCj4+PiB0cmFjayB0aGUgc3VzcGVuZCBzdGF0ZSBvZiBh IGRvbWFpbi4gVGhvc2UgdmFyaWFibGVzIGFyZSB1c2VkIHRvIGRldGVybWluZQo+Pj4gd2hldGhl ciB0byBlYXJseSByZXR1cm4gZnJvbSBjdHh0X3N3aXRjaF9mcm9tKCkgb3Igbm90Lgo+Pj4KPj4+ IEEgc3VzcGVuZGVkIGRvbWFpbiB3aWxsIHJlc3VtZSBhZnRlciB0aGUgWGVuIHJlY2VpdmVzIGFu IGludGVycnVwdCB3aGljaCBpcwo+Pj4gdGFyZ2V0ZWQgdG8gdGhlIGRvbWFpbiwgdW5ibG9ja3Mg dGhlIGRvbWFpbidzIFZDUFUsIGFuZCBzY2hlZHVsZXMgaXQgaW4uCj4+PiBXaGVuIHRoZSBWQ1BV IGlzIHNjaGVkdWxlZCBpbiwgdGhlIFZDUFUgY29udGV4dCBpcyBhbHJlYWR5IHJlc2V0LCBhbmQK Pj4+IGNvbnRhaW5zIHRoZSByaWdodCByZXN1bWUgZW50cnkgcG9pbnQgaW4gcHJvZ3JhbSBjb3Vu dGVyIHRoYXQgd2lsbCBiZQo+Pj4gcmVzdG9yZWQgaW4gY3R4dF9zd2l0Y2hfdG8oKS4gVGhlIG9u bHkgdGhpbmcgdGhhdCBuZWVkcyB0byBiZSBkb25lIGF0IHRoaXMKPj4+IHBvaW50IGlzIHRvIGNs ZWFyIHRoZSB2YXJpYWJsZXMgdGhhdCBtYXJrZWQgdGhlIGRvbWFpbiBzdGF0ZSBhcyBzdXNwZW5k ZWQuCj4+Pgo+Pj4gU2lnbmVkLW9mZi1ieTogTWlyZWxhIFNpbW9ub3ZpYyA8bWlyZWxhLnNpbW9u b3ZpY0BhZ2dpb3MuY29tPgo+Pj4gU2lnbmVkLW9mZi1ieTogU2FlZWQgTm93c2hhZGkgPHNhZWVk Lm5vd3NoYWRpQHhpbGlueC5jb20+Cj4+Pgo+Pj4gLS0tCj4+PiBDaGFuZ2VzIGluIHYyOgo+Pj4K Pj4+IC1GaXggcHJpbnQgdG8gY29tcGlsZSBmb3IgYXJtMzIgYW5kIHRvIGFsaWduIHdpdGggWGVu IGNvZGluZyBzdHlsZQo+Pj4gLS0tCj4+PiAgICB4ZW4vYXJjaC9hcm0vTWFrZWZpbGUgICAgICAg ICAgICB8ICAgMSArCj4+PiAgICB4ZW4vYXJjaC9hcm0vZG9tYWluLmMgICAgICAgICAgICB8ICAx MyArKysKPj4+ICAgIHhlbi9hcmNoL2FybS9zdXNwZW5kLmMgICAgICAgICAgIHwgMTY2ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4gICAgeGVuL2FyY2gvYXJtL3Zw c2NpLmMgICAgICAgICAgICAgfCAgMTkgKysrKysKPj4+ICAgIHhlbi9pbmNsdWRlL2FzbS1hcm0v cGVyZmNfZGVmbi5oIHwgICAxICsKPj4+ICAgIHhlbi9pbmNsdWRlL2FzbS1hcm0vcHNjaS5oICAg ICAgIHwgICAyICsKPj4+ICAgIHhlbi9pbmNsdWRlL2FzbS1hcm0vc3VzcGVuZC5oICAgIHwgIDE2 ICsrKysKPj4+ICAgIHhlbi9pbmNsdWRlL3hlbi9zY2hlZC5oICAgICAgICAgIHwgICAxICsKPj4+ ICAgIDggZmlsZXMgY2hhbmdlZCwgMjE5IGluc2VydGlvbnMoKykKPj4+ICAgIGNyZWF0ZSBtb2Rl IDEwMDY0NCB4ZW4vYXJjaC9hcm0vc3VzcGVuZC5jCj4+PiAgICBjcmVhdGUgbW9kZSAxMDA2NDQg eGVuL2luY2x1ZGUvYXNtLWFybS9zdXNwZW5kLmgKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gvYXJtL01ha2VmaWxlIGIveGVuL2FyY2gvYXJtL01ha2VmaWxlCj4+PiBpbmRleCAyM2M1ZDlh ZGJjLi43NDRiMWE0ZGM4IDEwMDY0NAo+Pj4gLS0tIGEveGVuL2FyY2gvYXJtL01ha2VmaWxlCj4+ PiArKysgYi94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKPj4+IEBAIC00Myw2ICs0Myw3IEBAIG9iai15 ICs9IHNldHVwLm8KPj4+ICAgIG9iai15ICs9IHNodXRkb3duLm8KPj4+ICAgIG9iai15ICs9IHNt cC5vCj4+PiAgICBvYmoteSArPSBzbXBib290Lm8KPj4+ICtvYmoteSArPSBzdXNwZW5kLm8KPj4+ ICAgIG9iai15ICs9IHN5c2N0bC5vCj4+PiAgICBvYmoteSArPSB0aW1lLm8KPj4+ICAgIG9iai15 ICs9IHRyYXBzLm8KPj4+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZG9tYWluLmMgYi94ZW4v YXJjaC9hcm0vZG9tYWluLmMKPj4+IGluZGV4IGU1OTRiNDhkODEuLjdmODEwNTQ2NWMgMTAwNjQ0 Cj4+PiAtLS0gYS94ZW4vYXJjaC9hcm0vZG9tYWluLmMKPj4+ICsrKyBiL3hlbi9hcmNoL2FybS9k b21haW4uYwo+Pj4gQEAgLTk3LDYgKzk3LDExIEBAIHN0YXRpYyB2b2lkIGN0eHRfc3dpdGNoX2Zy b20oc3RydWN0IHZjcHUgKnApCj4+PiAgICAgICAgaWYgKCBpc19pZGxlX3ZjcHUocCkgKQo+Pj4g ICAgICAgICAgICByZXR1cm47Cj4+Pgo+Pj4gKyAgICAvKiBWQ1BVJ3MgY29udGV4dCBzaG91bGQg bm90IGJlIHNhdmVkIGlmIGl0cyBkb21haW4gaXMgc3VzcGVuZGVkICovCj4+PiArICAgIGlmICgg cC0+ZG9tYWluLT5pc19zaHV0X2Rvd24gJiYKPj4+ICsgICAgICAgIChwLT5kb21haW4tPnNodXRk b3duX2NvZGUgPT0gU0hVVERPV05fc3VzcGVuZCkgKQo+Pj4gKyAgICAgICAgcmV0dXJuOwo+PiBT SFVURE9XTl9zdXNwZW5kIGlzIHVzZWQgaW4gWGVuIGZvciBvdGhlciBwdXJwb3NlIChzZWUKPj4g U0NIRURPUF9zaHV0ZG93bikuIFRoZSBvdGhlciB1c2VyIG9mIHRoYXQgY29kZSByZWxpZXMgb24g YWxsIHRoZSBzdGF0ZQo+PiB0byBiZSBzYXZlZCBvbiBzdXNwZW5kLgo+Pgo+IAo+IFdlIGp1c3Qg bmVlZCBhIGZsYWcgdG8gbWFyayBhIGRvbWFpbiBhcyBzdXNwZW5kZWQsIGFuZCBJIGRvIGJlbGll dmUKPiBTSFVURE9XTl9zdXNwZW5kIGlzIG5vdCB1c2VkIGFueXdoZXJlIGVsc2UuCj4gTGV0J3Mg Y29tZSBiYWNrIG9uIHRoaXMuCgpTZWUgQW5kcmV3J3MgY29tbWVudCBoZXJlLgoKPiAKPj4gSG93 ZXZlciwgd2hhdCBpcyB0aGUgaXNzdWUgd2l0aCBzYXZpbmcgYWxsIHRoZSByZWdpc3RlcnMgaGVy ZT8KPj4KPiAKPiBXZSBuZWVkIHRvIHNhdmUgYXJndW1lbnRzIHRoYXQgYXJlIHByb3ZpZGVkIGJ5 IGEgZ3Vlc3Qgd2l0aCBzeXN0ZW0KPiBzdXNwZW5kIFBTQ0kgY2FsbC4gVGhlc2UgYXJndW1lbnRz IGFyZSB0aGUgZW50cnkgcG9pbnQgdGhhdCBuZWVkcyB0bwo+IGJlIHNhdmVkIGluIHByb2dyYW0g Y291bnRlciBhbmQgY29udGV4dCBJRCB0aGF0IG5lZWRzIHRvIGJlIHNhdmVkIGluCj4geDAvcjAu IFdlIGRvbid0IGhhdmUgdGhlc2UgYXJndW1lbnRzIGhlcmUuIENvbnRleHQgc3dpdGNoIGhhcHBl bnMKPiBhZnRlciBwcm9jZXNzaW5nIHRoZSBzeXN0ZW0gc3VzcGVuZCBQU0NJIGNhbGwsIHNvIGl0 J3MgdG9vIGxhdGUuCgpJdCBkb2VzIG5vdCBmZWVsIHJpZ2h0IHRvIG1vZGlmeSBjdHh0X3N3aXRj aHtmcm9tLHRvfSBmb3IgCnN1c3BlbmQvcmVzdW1lLiBJZiB5b3Ugd2FudCB0byByZXNldCB0aGUg dkNQVSBzdGF0ZSBiZWZvcmUgYmxvY2tpbmcgdGhlIAp2Q1BVLCB0aGVuIHlvdSBzaG91bGQgaW5z dGVhZAoKQW5vdGhlciB3YXkgd291bGQgYmUgdG8gcmVzZXQgdGhlIHZDUFUgb25jZSB5b3UgcmVj ZWl2ZSB0aGUgaW50ZXJydXB0LgoKPj4+ICsKPj4+ICAgICAgICBwMm1fc2F2ZV9zdGF0ZShwKTsK Pj4+Cj4+PiAgICAgICAgLyogQ1AgMTUgKi8KPj4+IEBAIC0xODEsNiArMTg2LDE0IEBAIHN0YXRp YyB2b2lkIGN0eHRfc3dpdGNoX3RvKHN0cnVjdCB2Y3B1ICpuKQo+Pj4gICAgICAgIGlmICggaXNf aWRsZV92Y3B1KG4pICkKPj4+ICAgICAgICAgICAgcmV0dXJuOwo+Pj4KPj4+ICsgICAgLyogSWYg dGhlIGRvbWFpbiB3YXMgc3VzcGVuZGVkLCBpdCBpcyByZXN1bWluZyBub3cgKi8KPj4+ICsgICAg aWYgKCBuLT5kb21haW4tPmlzX3NodXRfZG93biAmJgo+Pj4gKyAgICAgICAgKG4tPmRvbWFpbi0+ c2h1dGRvd25fY29kZSA9PSBTSFVURE9XTl9zdXNwZW5kKSApCj4+PiArICAgIHsKPj4+ICsgICAg ICAgIG4tPmRvbWFpbi0+aXNfc2h1dF9kb3duID0gMDsKPj4+ICsgICAgICAgIG4tPmRvbWFpbi0+ c2h1dGRvd25fY29kZSA9IFNIVVRET1dOX0NPREVfSU5WQUxJRDsKPj4+ICsgICAgfQo+Pgo+PiBU aGlzIGxvb2tzIGxpa2UgYSBoYWNrLiBXaHkgbm90IGNhbGxpbmcgZG9tYWluX3Jlc3VtZSB3aGVu IHJlY2VpdmluZyB0aGUKPj4gaW50ZXJydXB0Pwo+Pgo+IAo+IEdvb2QgcG9pbnQsIEkgbmVlZCB0 byBkb3VibGUgY2hlY2sgYW5kIGNvbWUgYmFjayBvbiB0aGlzLgoKSXQgbG9va3MgbGlrZSBkb21h aW5fcmVzdW1lIG1heSBub3QgYmUgdGhlIHJpZ2h0IHNvbHV0aW9uIChzZWUgQW5kcmV3J3MgCmNv bW1lbnQpLiBBbm90aGVyIHNvbHV0aW9uIHdvdWxkIGJlIHRvIHVzZSBkb21haW5fcGF1c2UvZG9t YWluX3VucGF1c2UuCgo+IAo+Pj4gKwo+Pj4gICAgICAgIHAybV9yZXN0b3JlX3N0YXRlKG4pOwo+ Pj4KPj4+ICAgICAgICB2cGlkciA9IFJFQURfU1lTUkVHMzIoTUlEUl9FTDEpOwo+Pj4gZGlmZiAt LWdpdCBhL3hlbi9hcmNoL2FybS9zdXNwZW5kLmMgYi94ZW4vYXJjaC9hcm0vc3VzcGVuZC5jCj4+ PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4gaW5kZXggMDAwMDAwMDAwMC4uOWVlYTkyMTRlMQo+ Pj4gLS0tIC9kZXYvbnVsbAo+Pj4gKysrIGIveGVuL2FyY2gvYXJtL3N1c3BlbmQuYwo+Pgo+PiBJ IHdvdWxkIHByZWZlciBpZiB3ZSBkb24ndCBtaXggZ3Vlc3QgYW5kIGhvc3Qgc3VzcGVuZCBpbiB0 aGUgc2FtZSBmaWxlLgo+IAo+IFN1cmUsIHdlIGNhbiBtb3ZlIGd1ZXN0IHN1c3BlbmQgY29kZSBp bnRvIGFuIGFub3RoZXIgZmlsZSwgZS5nLgo+IHhlbi9hcmNoL2FybS92c3VzcGVuZC5jCgpEbyB3 ZSByZWFsbHkgbmVlZCBhIHNlcGFyYXRlIGZpbGU/IFRoZSBjb2RlIGRvZXMgbm90IGxvb2sgdG9v IGJpZy4KCj4gCj4+Cj4+PiBAQCAtMCwwICsxLDE2NiBAQAo+Pgo+PiBNaXNzaW5nIGNvcHlyaWdo dCBoZWFkZXJzIGhlcmUuCj4gCj4gVGhhbmtzCj4gCj4+Cj4+PiArI2luY2x1ZGUgPHhlbi9zY2hl ZC5oPgo+Pj4gKyNpbmNsdWRlIDxhc20vY3B1ZmVhdHVyZS5oPgo+Pj4gKyNpbmNsdWRlIDxhc20v ZXZlbnQuaD4KPj4+ICsjaW5jbHVkZSA8YXNtL3BzY2kuaD4KPj4+ICsKPj4+ICsvKiBSZXNldCB2 YWx1ZXMgb2YgVkNQVSBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgcmVnaXN0ZXJzICovCj4+Cj4+IFRl Y2huaWNhbGx5IHRoaXMgaXMgbm90IHJlcXVpcmVzIGFzIG1vc3Qgb2YgdGhlIHJlZ2lzdGVycyBh cmUgdW5rbm93bi4gSQo+PiB1bmRlcnN0YW5kIHRoaXMgaGVscHMgZm9yIGRlYnVnZ2luZyBhbiBP Uy4KPj4KPj4gSSB3b3VsZCBpbnRyb2R1Y2UgaXQgaW4gYSBzZXBhcmF0ZSBwYXRjaCBhbmQgZGly ZWN0bHkgaW4KPj4gYXJjaF9zZXRfaW5mb19ndWVzdCBhcyBJIHdvdWxkIGxpa2UgdGhlIGJlaGF2 aW9yIHRvIGJlIHRoZSBzYW1lCj4+IGV2ZXJ5d2hlcmUgd2UgbmVlZCB0byByZXNldCBhIHZDUFUu Cj4gCj4gSSBhZ3JlZS4gUGxlYXNlIGp1c3QgY29uc2lkZXIgdGhhdCByZXNldHRpbmcgYSB2Q1BV IGNvbnRleHQgaXMgZG9uZSBpbgo+IDIgc2NlbmFyaW9zOiBvbmUgd2hlcmUgYSB2Q1BVIGlzIGp1 c3QgY3JlYXRlZCwgYW5kIGFub3RoZXIgb25lIHdoZW4KPiB0aGUgdkNQVSBhbHJlYWR5IGV4aXN0 cyBidXQgdGhlIGNvbnRleHQgaGFzIHRvIGJlIGNsZWFyZWQuIENvdWxkIHlvdQo+IHBsZWFzZSBw cm92aWRlIHNvbWUgZ3VpZGFuY2Ugb24gaG93IHRvIGRvIHRoaXMsIGJlY2F1c2Ugd2Ugc3RydWdn bGVkCj4gZm9yIGEgd2hpbGUgYW5kIGRpZG4ndCByZWFsbHkgZmluZCBhIG5pY2Ugd2F5PwoKV2h5 IGRvIHlvdSB0aGluayB0aGUgMiBzY2VuYXJpb3MgcmVxdWlyZXMgZGlmZmVyZW50IHBhdGg/IElu IGJvdGggY2FzZSAKdGhlIENQVSBpcyBvZmYgYW5kIHNob3VsZCBiZSByZXNldC4gSXQgaXMganVz dCB0aGUgY3VycmVudCBQU0NJIENQVSBvbiAKdG9vayBzb21lIHNob3J0Y3V0IHRoYXQgbGlrZWx5 IG5lZWRzIHRvIGJlIGZpeGVkLgoKPiAKPj4KPj4+ICtzdGF0aWMgdm9pZCB2Y3B1X2FyY2hfcmVz ZXQoc3RydWN0IHZjcHUgKnYpCj4+PiArewo+Pj4gKyAgICB2LT5hcmNoLnR0YnIwID0gMDsKPj4+ ICsgICAgdi0+YXJjaC50dGJyMSA9IDA7Cj4+PiArICAgIHYtPmFyY2gudHRiY3IgPSAwOwo+Pj4g Kwo+Pj4gKyAgICB2LT5hcmNoLmNzc2VsciA9IDA7Cj4+PiArICAgIHYtPmFyY2guY3BhY3IgPSAw Owo+Pj4gKyAgICB2LT5hcmNoLmNvbnRleHRpZHIgPSAwOwo+Pj4gKyAgICB2LT5hcmNoLnRwaWRy X2VsMCA9IDA7Cj4+PiArICAgIHYtPmFyY2gudHBpZHJyb19lbDAgPSAwOwo+Pj4gKyAgICB2LT5h cmNoLnRwaWRyX2VsMSA9IDA7Cj4+PiArICAgIHYtPmFyY2gudmJhciA9IDA7Cj4+PiArICAgIGlm ICggaXNfMzJiaXRfZG9tYWluKHYtPmRvbWFpbikgKQo+Pgo+PiBUaGlzIGlzIG5vdCBuZWNlc3Nh cnkKPj4KPj4+ICsgICAgICAgIHYtPmFyY2guZGFjciA9IDA7Cj4+PiArICAgIHYtPmFyY2gucGFy ID0gMDsKPj4+ICsjaWYgZGVmaW5lZChDT05GSUdfQVJNXzMyKQo+Pj4gKyAgICB2LT5hcmNoLm1h aXIwID0gMDsKPj4+ICsgICAgdi0+YXJjaC5tYWlyMSA9IDA7Cj4+PiArICAgIHYtPmFyY2guYW1h aXIwID0gMDsKPj4+ICsgICAgdi0+YXJjaC5hbWFpcjEgPSAwOwo+Pj4gKyNlbHNlCj4+PiArICAg IHYtPmFyY2gubWFpciA9IDA7Cj4+PiArICAgIHYtPmFyY2guYW1haXIgPSAwOwo+Pj4gKyNlbmRp Zgo+Pj4gKyAgICAvKiBGYXVsdCBTdGF0dXMgKi8KPj4+ICsjaWYgZGVmaW5lZChDT05GSUdfQVJN XzMyKQo+Pj4gKyAgICB2LT5hcmNoLmRmYXIgPSAwOwo+Pj4gKyAgICB2LT5hcmNoLmlmYXIgPSAw Owo+Pj4gKyAgICB2LT5hcmNoLmRmc3IgPSAwOwo+Pj4gKyNlbGlmIGRlZmluZWQoQ09ORklHX0FS TV82NCkKPj4+ICsgICAgdi0+YXJjaC5mYXIgPSAwOwo+Pj4gKyAgICB2LT5hcmNoLmVzciA9IDA7 Cj4+PiArI2VuZGlmCj4+PiArCj4+PiArICAgIGlmICggaXNfMzJiaXRfZG9tYWluKHYtPmRvbWFp bikgKQo+Pgo+PiBTYW1lIGhlcmUuCj4+Cj4+PiArICAgICAgICB2LT5hcmNoLmlmc3IgID0gMDsK Pj4+ICsgICAgdi0+YXJjaC5hZnNyMCA9IDA7Cj4+PiArICAgIHYtPmFyY2guYWZzcjEgPSAwOwo+ Pj4gKwo+Pj4gKyNpZmRlZiBDT05GSUdfQVJNXzMyCj4+PiArICAgIHYtPmFyY2guam9zY3IgPSAw Owo+Pj4gKyAgICB2LT5hcmNoLmptY3IgPSAwOwo+Pj4gKyNlbmRpZgo+Pj4gKwo+Pj4gKyAgICBp ZiAoIGlzXzMyYml0X2RvbWFpbih2LT5kb21haW4pICYmIGNwdV9oYXNfdGh1bWJlZSApCj4+Cj4+ IFNhbWUgaGVyZS4KPj4KPj4+ICsgICAgewo+Pj4gKyAgICAgICAgdi0+YXJjaC50ZWVjciA9IDA7 Cj4+PiArICAgICAgICB2LT5hcmNoLnRlZWhiciA9IDA7Cj4+PiArICAgIH0KPj4+ICt9Cj4+PiAr Cj4+PiArLyoKPj4+ICsgKiBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIGNvbnRleHQgb2YgY3VycmVu dCBWQ1BVIHRvIHRoZSBzdGF0ZSB3aGljaCBpcyBleHBlY3RlZAo+Pj4gKyAqIGJ5IHRoZSBndWVz dCBvbiByZXN1bWUuIFRoZSBleHBlY3RlZCBWQ1BVIHN0YXRlIGlzOgo+Pj4gKyAqIDEpIHBjIHRv IGNvbnRhaW4gcmVzdW1lIGVudHJ5IHBvaW50ICgxc3QgYXJndW1lbnQgb2YgUFNDSSBTWVNURU1f U1VTUEVORCkKPj4+ICsgKiAyKSByMC94MCB0byBjb250YWluIGNvbnRleHQgSUQgKDJuZCBhcmd1 bWVudCBvZiBQU0NJIFNZU1RFTV9TVVNQRU5EKQo+Pj4gKyAqIDMpIEFsbCBvdGhlciBnZW5lcmFs IHB1cnBvc2UgYW5kIHN5c3RlbSByZWdpc3RlcnMgc2hvdWxkIGhhdmUgcmVzZXQgdmFsdWVzCj4+ PiArICoKPj4+ICsgKiBOb3RlOiB0aGlzIGZ1bmN0aW9uIGhhcyB0byByZXR1cm4gdm9pZCBiZWNh dXNlIGl0IGhhcyB0byBhbHdheXMgc3VjY2VlZC4gSW4KPj4+ICsgKiBvdGhlciB3b3JkcywgdGhp cyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB2aXJ0dWFsIFBTQ0kgU1lTVEVNX1NVU1BFTkQKPj4+ ICsgKiBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggY2FuIHJldHVybiBvbmx5IGEgbGltaXRlZCBudW1i ZXIgb2YgcG9zc2libGUgZXJyb3JzLAo+Pj4gKyAqIG5vbmUgb2Ygd2hpY2ggY291bGQgcmVwcmVz ZW50IHRoZSBmYWN0IHRoYXQgYW4gZXJyb3Igb2NjdXJyZWQgd2hlbiBwcmVwYXJpbmcKPj4+ICsg KiB0aGUgZG9tYWluIGZvciBzdXNwZW5kLgo+Pj4gKyAqIENvbnNlcXVlbnRseSwgZHluYW1pYyBt ZW1vcnkgYWxsb2NhdGlvbiBjYW5ub3QgYmUgZG9uZSB3aXRoaW4gdGhpcyBmdW5jdGlvbiwKPj4+ ICsgKiBiZWNhdXNlIGlmIG1hbGxvYyBmYWlscyB0aGUgZXJyb3IgaGFzIG5vd2hlcmUgdG8gcHJv cGFnYXRlLgo+Pgo+PiBZb3UgY291bGQgY3Jhc2ggdGhlIGRvbWFpbiBpZiB5b3UgYXJlIG5vdCBh YmxlIHRvIHJlc3VtZSBpdC4gSW4gdGhlCj4+IGN1cnJlbnQgY29udGV4dC4uLgo+Pgo+Pj4gKyAq Lwo+Pj4gK3N0YXRpYyB2b2lkIHZjcHVfc3VzcGVuZChyZWdpc3Rlcl90IGVwb2ludCwgcmVnaXN0 ZXJfdCBjaWQpCj4+PiArewo+Pj4gKyAgICAvKiBTdGF0aWMgYWxsb2NhdGlvbiBiZWNhdXNlIGR5 bmFtaWMgd291bGQgbmVlZCBhIG5vbi12b2lkIHJldHVybiAqLwo+Pj4gKyAgICBzdGF0aWMgc3Ry dWN0IHZjcHVfZ3Vlc3RfY29udGV4dCBjdHh0Owo+Pgo+PiAuLi4gdGhpcyBpcyBub3QgcmlnaHQu IFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBjb25jdXJyZW50bHksIHNvIGEKPj4gbG90IG9m IGZ1bm55IHRoaW5ncyBjYW4gaGFwcGVuIChpLmUgY29ycnVwdGlvbikuCj4+Cj4+IFRoZSB2Q1BV IGNvbnRleHQgZG9lcyBub3QgbG9vayB0b28gYmlnLiBTbyBJIHdvdWxkIGp1c3QgYWxsb2NhdGUg aXQgb24KPj4gdGhlIHN0YWNrIGRpcmVjdGx5Lgo+Pgo+IAo+IEFncmVlZCwgJ3N0YXRpYycgc2hv dWxkIGJlIHJlbW92ZWQgdG8gYWRkcmVzcyBhbGwgdGhlc2UgaXNzdWVzLgo+IAo+Pj4gKyAgICBz dHJ1Y3QgdmNwdSAqdiA9IGN1cnJlbnQ7Cj4+PiArCj4+PiArICAgIC8qIE1ha2Ugc3VyZSB0aGF0 IFZDUFUgZ3Vlc3QgcmVncyBhcmUgemVyb2llZCAqLwo+Pgo+PiBzL3plcm9pZWQvemVyb2VkLwo+ IAo+IFRoYW5rcwo+IAo+Pgo+Pj4gKyAgICBtZW1zZXQoJmN0eHQsIDAsIHNpemVvZihjdHh0KSk7 Cj4+PiArCj4+PiArICAgIC8qIFNldCBub24temVybyB2YWx1ZXMgdG8gdGhlIHJlZ2lzdGVycyBw cmlvciB0byBjb3B5aW5nICovCj4+PiArICAgIGN0eHQudXNlcl9yZWdzLnBjNjQgPSAodTY0KWVw b2ludDsKPj4+ICsKPj4+ICsgICAgaWYgKCBpc18zMmJpdF9kb21haW4oY3VycmVudC0+ZG9tYWlu KSApCj4+PiArICAgIHsKPj4+ICsgICAgICAgIGN0eHQudXNlcl9yZWdzLnIwX3VzciA9IGNpZDsK Pj4+ICsgICAgICAgIGN0eHQudXNlcl9yZWdzLmNwc3IgPSBQU1JfR1VFU1QzMl9JTklUOwo+Pj4g Kwo+Pj4gKyAgICAgICAgLyogVGh1bWIgc2V0IGlzIGFsbG93ZWQgb25seSBmb3IgMzItYml0IGRv bWFpbiAqLwo+Pj4gKyAgICAgICAgaWYgKCBlcG9pbnQgJiAxICkKPj4+ICsgICAgICAgIHsKPj4+ ICsgICAgICAgICAgICBjdHh0LnVzZXJfcmVncy5jcHNyIHw9IFBTUl9USFVNQjsKPj4+ICsgICAg ICAgICAgICBjdHh0LnVzZXJfcmVncy5wYzY0ICY9IH4odTY0KTE7Cj4+PiArICAgICAgICB9Cj4+ PiArICAgIH0KPj4+ICsjaWZkZWYgQ09ORklHX0FSTV82NAo+Pj4gKyAgICBlbHNlCj4+PiArICAg IHsKPj4+ICsgICAgICAgIGN0eHQudXNlcl9yZWdzLngwID0gY2lkOwo+Pj4gKyAgICAgICAgY3R4 dC51c2VyX3JlZ3MuY3BzciA9IFBTUl9HVUVTVDY0X0lOSVQ7Cj4+PiArICAgIH0KPj4+ICsjZW5k aWYKPj4+ICsgICAgY3R4dC5zY3RsciA9IFNDVExSX0dVRVNUX0lOSVQ7Cj4+PiArICAgIGN0eHQu ZmxhZ3MgPSBWR0NGX29ubGluZTsKPj4+ICsKPj4+ICsgICAgLyogUmVzZXQgYXJjaGl0ZWN0dXJl IHNwZWNpZmljIHJlZ2lzdGVycyAqLwo+Pj4gKyAgICB2Y3B1X2FyY2hfcmVzZXQodik7ID4gKwo+ Pj4gKyAgICAvKiBJbml0aWFsaXplIFZDUFUgcmVnaXN0ZXJzICovCj4+PiArICAgIF9hcmNoX3Nl dF9pbmZvX2d1ZXN0KHYsICZjdHh0KTsKPj4KPj4gQUZBSUNULCB0aGlzIGlzIGV4cGVjdGVkIHRv IGJlIGNhbGxlZCB3aXRoIHRoZSBkb21haW4gbG9jayB0YWtlbiBhcyB0aGlzCj4+IGNhbiBiZSBj YWxsZWQgYnkgdmFyaW91cyBwYXRoLgo+Pgo+PiBBbHNvLCBtb3N0IG9mIHRoZSBmdW5jdGlvbiBp cyB0aGUgc2FtZSBhcyBDUFVfb24uIFNvIEkgd291bGQgbGlrZSB0byBzZWUKPj4gdGhlIGNvZGUg ZmFjdG9yZWQgaW4gdGhlIHNlcGFyYXRlIGZ1bmN0aW9uIGFuZCB1c2VkIGluIGJvdGggcGxhY2Uu Cj4+Cj4gCj4gSSBhZ3JlZSwgYnV0IHRoZSAyIHNjZW5hcmlvcyAoVkNQVSBhbGxvY2F0aW9uIHZl cnN1cyBjbGVhcmluZyBWQ1BVCj4gY29udGV4dCkgbWFkZSBpdCBhIGJpdCBkaWZmaWN1bHQgdG8g c2hhcmUuIFBsZWFzZSBsZXQgbWUga25vdyBpZiB5b3UKPiBoYXZlIHNvbWUgYWRkaXRpb25hbCBo aW50IG9uIGhvdyB0byBleGFjdGx5IHN0cnVjdHVyZSB0aGUgY29kZS4KClNlZSBhYm92ZS4gSSB3 b3VsZCBiZSBpbnRlcmVzdGVkIHRvIGtub3cgd2h5IHlvdSB0aGluayB0aGV5IGFyZSBkaWZmZXJl bnQuCgo+IAo+Pj4gK30KPj4+ICsKPj4+ICtpbnQzMl90IGRvbWFpbl9zdXNwZW5kKHJlZ2lzdGVy X3QgZXBvaW50LCByZWdpc3Rlcl90IGNpZCkKPj4+ICt7Cj4+PiArICAgIHN0cnVjdCB2Y3B1ICp2 Owo+Pj4gKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gY3VycmVudC0+ZG9tYWluOwo+Pj4gKyAgICBi b29sIGlzX3RodW1iID0gZXBvaW50ICYgMTsKPj4+ICsKPj4+ICsgICAgZHByaW50ayhYRU5MT0df REVCVUcsCj4+PiArICAgICAgICAgICAgIkRvbSVkIHN1c3BlbmQ6IGVwb2ludD0weCUiUFJJcmVn aXN0ZXIiLCBjaWQ9MHglIlBSSXJlZ2lzdGVyIlxuIiwKPj4+ICsgICAgICAgICAgICBkLT5kb21h aW5faWQsIGVwb2ludCwgY2lkKTsKPj4+ICsKPj4+ICsgICAgLyogVEhVTUIgc2V0IGlzIG5vdCBh bGxvd2VkIHdpdGggNjQtYml0IGRvbWFpbiAqLwo+Pj4gKyAgICBpZiAoIGlzXzY0Yml0X2RvbWFp bihkKSAmJiBpc190aHVtYiApCj4+PiArICAgICAgICByZXR1cm4gUFNDSV9JTlZBTElEX0FERFJF U1M7Cj4+PiArCj4+PiArICAgIC8qIEVuc3VyZSB0aGF0IGFsbCBDUFVzIG90aGVyIHRoYW4gdGhl IGNhbGxpbmcgb25lIGFyZSBvZmZsaW5lICovCj4+PiArICAgIGZvcl9lYWNoX3ZjcHUgKCBkLCB2 ICkKPj4+ICsgICAgewo+Pj4gKyAgICAgICAgaWYgKCB2ICE9IGN1cnJlbnQgJiYgaXNfdmNwdV9v bmxpbmUodikgKQo+Pj4gKyAgICAgICAgICAgIHJldHVybiBQU0NJX0RFTklFRDsKPj4+ICsgICAg fQo+Pgo+PiBXaGF0IGRvZXMgcHJldmVudCBhIHZDUFUgdG8gbm90IGNvbWUgb25saW5lIHdoaWxl IGRvaW5nIHRoZSBsb29wPwo+IAo+IEFzIHlvdSBzdWdnZXN0ZWQgcHJvYmFibHkgbm90aGluZyBp ZiB0aGVyZSBpcyBhIGJ1ZyBpbiB0aGUgZ3Vlc3QsCj4gd2hpY2ggd2Ugd2FudCB0byBjaGVjayBm b3IuIElzIHRoZSBkb21haW5fbG9jayByaWdodCB0aGluZyB0byB1c2UKPiBoZXJlPwoKVGhlIGRv bWFpbl9sb2NrIGlzIHByb2JhYmx5IHRoZSBiZXN0IHNvbHV0aW9uIGhlcmUuIFlvdSB3YW50IENQ VV9PTiBhbmQgClNZU1RFTV9PRkYgdG8gcmFjZS4gU28gQ1BVX09OIG1heSBuZWVkIHNvbWUgbW9k aWZpY2F0aW9uIGFzIHdlbGwuCgo+IAo+Pgo+Pj4gKwo+Pj4gKyAgICAvKgo+Pj4gKyAgICAgKiBQ cmVwYXJlIHRoZSBjYWxsaW5nIFZDUFUgZm9yIHN1c3BlbmQgKHJlc2V0IGl0cyBjb250ZXh0LCBz YXZlIGVudHJ5IHBvaW50Cj4+PiArICAgICAqIGludG8gcGMgYW5kIGNvbnRleHQgSUQgaW50byBy MC94MCBhcyBzcGVjaWZpZWQgYnkgUFNDSSBTWVNURU1fU1VTUEVORCkKPj4+ICsgICAgICovCj4+ PiArICAgIHZjcHVfc3VzcGVuZChlcG9pbnQsIGNpZCk7Cj4+PiArCj4+PiArICAgIC8qCj4+PiAr ICAgICAqIFNldCB0aGUgZG9tYWluIHN0YXRlIHRvIHN1c3BlbmRlZCAod2lsbCBiZSBjbGVhcmVk IHdoZW4gdGhlIGRvbWFpbgo+Pj4gKyAgICAgKiByZXN1bWVzLCBpLmUuIFZDUFUgb2YgdGhpcyBk b21haW4gZ2V0cyBzY2hlZHVsZWQgaW4pLgo+Pj4gKyAgICAgKi8KPj4+ICsgICAgZC0+aXNfc2h1 dF9kb3duID0gMTsKPj4+ICsgICAgZC0+c2h1dGRvd25fY29kZSA9IFNIVVRET1dOX3N1c3BlbmQ7 Cj4+Cj4+IElmIHlvdSBsb29rIGF0IHRoZSBvdGhlciB1c2FnZSwgeW91IHdpbGwgbm90aWNlIHRo YXQgdGhleSBhcmUgcHJvdGVjdGVkCj4+IHdpdGggYSBsb2NrLiBXaHkgaXMgaXQgbm90IG5lY2Vz c2FyeSBoZXJlPwo+Pgo+IAo+IEkgdGhpbmsgaXQgaXMgbmVjZXNzYXJ5IGhlcmUgdG9vCj4gCj4+ IEkgYW0gYWxzbyBub3QgZW50aXJlbHkgc3VyZSB3aHkgd2UgY291bGQgbm90IHJlLXVzZSBjb2Rl IHRoYXQgYWxyZWFkeQo+PiBleGlzdCBpbiBjb21tb24gY29kZS4gU3VyZWx5IHN1c3BlbmQvcmVz dW1lIHNob3VsZCB3b3JrIGluIGEgc2ltaWxhciB3YXk/Cj4+Cj4gCj4gQ291bGQgeW91IHBsZWFz ZSBiZSBtb3JlIHNwZWNpZmljICh3aGljaCBjb21tb24gY29kZSkKCllvdSBjYW4gaWdub3JlIHRo aXMgZm9yIG5vdyBhcyBzaHV0ZG93bl9jb2RlIG1heSBub3QgYmUgdGhlIHJpZ2h0IApzb2x1dGlv biBoZXJlLgoKQ2hlZXJzLAoKCi0tIApKdWxpZW4gR3JhbGwKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRl dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFp bG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=