<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>122920</bug_id>
          
          <creation_ts>2013-10-16 15:49:42 -0700</creation_ts>
          <short_desc>Remove Qt sandbox process code</short_desc>
          <delta_ts>2013-10-16 17:01:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>940553</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-16 15:49:42 -0700</bug_when>
    <thetext>Remove Qt sandbox process code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940554</commentid>
    <comment_count>1</comment_count>
      <attachid>214398</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-16 15:54:28 -0700</bug_when>
    <thetext>Created attachment 214398
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940559</commentid>
    <comment_count>2</comment_count>
      <attachid>214398</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-10-16 16:04:22 -0700</bug_when>
    <thetext>Comment on attachment 214398
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940591</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-16 17:01:32 -0700</bug_when>
    <thetext>Committed r157538: &lt;http://trac.webkit.org/changeset/157538&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214398</attachid>
            <date>2013-10-16 15:54:28 -0700</date>
            <delta_ts>2013-10-16 16:04:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122920-20131016155427.patch</filename>
            <type>text/plain</type>
            <size>33647</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTViOWY3NDM0ZjAzMWEx
YjQyMGMyNzdiMzMzNGIzYWIxMmVmZGQwZi4uNTNjNzEwYmFlOGNiMzNjN2MyYjdhOTZiYmQ5NTdk
MGQ3ZTQyZjdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTEwLTE2ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFF0IHNh
bmRib3ggcHJvY2VzcyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjI5MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGNvZGUgd2FzIG9ubHkgdXNlZCBieSB0aGUgUXQgcG9ydCwgYW5kIHRo
ZSBvdGhlciBMaW51eC1iYXNlZCBwb3J0cyBhcmUgdXNpbmcgdGhlIHNlY2NvbXAgYmFzZWQgc2Fu
ZGJveC4KKworICAgICAgICAqIFNoYXJlZC9saW51eC9TYW5kYm94UHJvY2Vzcy9TYW5kYm94RW52
aXJvbm1lbnRMaW51eC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogU2hhcmVkL2xpbnV4L1NhbmRi
b3hQcm9jZXNzL1NhbmRib3hFbnZpcm9ubWVudExpbnV4Lmg6IFJlbW92ZWQuCisKIDIwMTMtMTAt
MTUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEZsZXNoIG91
dCB0aGUgRGF0YWJhc2VQcm9jZXNzIChhbmQgbGF1bmNoIGl0ISkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TYW5kYm94UHJvY2Vzcy9TYW5kYm94RW52aXJvbm1lbnRM
aW51eC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGludXgvU2FuZGJveFByb2Nlc3MvU2Fu
ZGJveEVudmlyb25tZW50TGludXguY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
YzE1OTMwMDgwOGQ1ODZlNWFmYjA2MGU1ZDYxNjUwYzFiYmRlYzdlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51
eC9TYW5kYm94UHJvY2Vzcy9TYW5kYm94RW52aXJvbm1lbnRMaW51eC5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw4MTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5
IG9mIFN6ZWdlZAotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlbmF0YSBIb2RvdmFuIDxyZW5pQGlu
Zi51LXN6ZWdlZC5odT4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
LSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJTYW5kYm94
RW52aXJvbm1lbnRMaW51eC5oIgotCi0jaW5jbHVkZSA8ZGlyZW50Lmg+Ci0jaW5jbHVkZSA8ZGxm
Y24uaD4KLSNpbmNsdWRlIDxlcnIuaD4KLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPGZj
bnRsLmg+Ci0jaW5jbHVkZSA8Z3JwLmg+Ci0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8
bGluay5oPgotI2luY2x1ZGUgPHB3ZC5oPgotI2luY2x1ZGUgPHNjaGVkLmg+Ci0jaW5jbHVkZSA8
c2lnbmFsLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNs
dWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxzeXMvY2FwYWJpbGl0eS5oPgotI2luY2x1ZGUgPHN5
cy9tb3VudC5oPgotI2luY2x1ZGUgPHN5cy9wcmN0bC5oPgotI2luY2x1ZGUgPHN5cy9yZXNvdXJj
ZS5oPgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2lu
Y2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci0jaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSNpbmNsdWRlIDxz
eXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvd2FpdC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgot
I2luY2x1ZGUgPHV0aW1lLmg+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi1zdGF0aWMgY29uc3QgdW5z
aWduZWQgbWF4aW11bVBhdGhMZW5ndGggPSA1MTI7Ci1zdGF0aWMgY2hhciBzYW5kYm94RGlyZWN0
b3J5W21heGltdW1QYXRoTGVuZ3RoXTsKLXN0YXRpYyB1aWRfdCBzYW5kYm94VXNlclVJRDsKLXN0
YXRpYyB1aWRfdCBzYW5kYm94VXNlckdJRDsKLQotc3RhdGljIGlubGluZSB2b2lkIHN0cmxjcHko
Y2hhciAqZGVzdGluYXRpb24sIGNvbnN0IGNoYXIqIHNvdXJjZSwgaW50IG1heExlbmd0aCkKLXsK
LSAgICBkZXN0aW5hdGlvblswXSA9ICdcMCc7Ci0gICAgc3RybmNhdChkZXN0aW5hdGlvbiwgc291
cmNlLCBtYXhMZW5ndGggLSAxKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIHN0cmxjYXQoY2hh
ciogZGVzdGluYXRpb24sIGNvbnN0IGNoYXIqIHNvdXJjZSwgaW50IG1heExlbmd0aCkKLXsKLSAg
ICBzdHJuY2F0KGRlc3RpbmF0aW9uLCBzb3VyY2UsIG1heExlbmd0aCAtIDEgLSBzdHJubGVuKGRl
c3RpbmF0aW9uLCBtYXhMZW5ndGggLSAxKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBhcHBl
bmREaXJlY3RvcnlDb21wb25lbnQoY2hhciogZnVsbFBhdGgsIGNvbnN0IGNoYXIqIGRpcmVjdG9y
eVBhdGgsIGNvbnN0IGNoYXIqIGZpbGVOYW1lKQotewotICAgIHN0cmxjcHkoZnVsbFBhdGgsIGRp
cmVjdG9yeVBhdGgsIG1heGltdW1QYXRoTGVuZ3RoKTsKLSAgICBzdHJsY2F0KGZ1bGxQYXRoLCBm
aWxlTmFtZSwgbWF4aW11bVBhdGhMZW5ndGgpOwotfQotCi0vLyBUaGlzIGZ1bmN0aW9uIHJ1bnMg
aW4gYSBjbG9uZWQgcHJvY2VzcyBhbmQgaXQgaXMgd2FpdGluZyBmb3IgYSByZXF1ZXN0IG1lc3Nh
Z2UKLS8vIGZyb20gV2ViUHJvY2VzcyB0byBwZXJmb3JtIHRoZSBjaHJvb3QoKS4gSWYgdGhlIG9w
ZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bCB0aGUgZnVuY3Rpb24KLS8vIG5ldmVyIHJldHVybnMuIFNv
IHRoaXMgZnVuY3Rpb24gaGFzIG5vIHJldHVybiB2YWx1ZS4KLXN0YXRpYyB2b2lkIGxhdW5jaENo
YW5nZVJvb3RIZWxwZXIoaW50IGhlbHBlclNvY2tldCwgaW50IHdlYlByb2Nlc3NTb2NrZXQpCi17
Ci0gICAgLy8gV2UgbmVlZCB0byByZXN0cmljdCB0aGUgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBv
dXIgcHJvY2VzcyB0byBhdm9pZCBvcGVuaW5nCi0gICAgLy8gYSBmaWxlIGJ5IG1pc3Rha2UuIEhv
d2V2ZXIsIENBUF9TWVNfUkVTT1VSQ0UgY2FwYWJpbGl0eSBzaG91bGQgYmUgZHJvcHBlZAotICAg
IC8vIG90aGVyd2lzZSBpdCB3b24ndCB3b3JrLgotICAgIHN0cnVjdCBybGltaXQgcmVzdHJpY3Rl
ZFJlc291cmNlID0geyAwLCAwIH07Ci0gICAgaWYgKHNldHJsaW1pdChSTElNSVRfTk9GSUxFLCAm
cmVzdHJpY3RlZFJlc291cmNlKSA9PSAtMSkgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkhl
bHBlciBjb3VsZG4ndCBzZXQgdGhlIHJlc291cmNlIGxpbWl0OiAlcy5cbiIsIHN0cmVycm9yKGVy
cm5vKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoY2xvc2Uod2ViUHJvY2Vz
c1NvY2tldCkgPT0gLTEpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gY2xv
c2Ugc29ja2V0ICVkOiAlcy5cbiIsIHdlYlByb2Nlc3NTb2NrZXQsIHN0cmVycm9yKGVycm5vKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjaGFyIG1lc3NhZ2U7Ci0gICAgLy8gV2Ug
ZXhwZWN0IGEgJ0MnIChDaHJvb3RNZSkgbWVzc2FnZSBmcm9tIHRoZSBXZWJQcm9jZXNzLgotICAg
IGlmIChyZWFkKGhlbHBlclNvY2tldCwgJm1lc3NhZ2UsIDEpICE9IDEpIHsKLSAgICAgICAgZnBy
aW50ZihzdGRlcnIsICJGYWlsZWQgdG8gcmVhZCBtZXNzYWdlIGZyb20gdGhlIHdlYiBwcm9jZXNz
OiAlcyAlZC5cbiIsIHN0cmVycm9yKGVycm5vKSwgZXJybm8pOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKG1lc3NhZ2UgIT0gTVNHX0NIUk9PVE1FKSB7Ci0gICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiV3JvbmcgbWVzc2FnZSByZWNpZXZlZDogJXguXG4iLCBtZXNzYWdlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHN0cnVjdCBzdGF0IHNhbmRib3hEaXJlY3RvcnlJ
bmZvOwotICAgIGlmIChsc3RhdChzYW5kYm94RGlyZWN0b3J5LCAmc2FuZGJveERpcmVjdG9yeUlu
Zm8pID09IC0xKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiU2FuZGJveCBkaXJlY3Rvcnkg
KCVzKSBpcyBub3QgYXZhaWxhYmxlOiAlcy5cbiIsIHNhbmRib3hEaXJlY3RvcnksIHN0cmVycm9y
KGVycm5vKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIVNfSVNESVIoc2Fu
ZGJveERpcmVjdG9yeUluZm8uc3RfbW9kZSkpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIl
cyBpcyBub3QgYSBkaXJlY3RvcnkhXG4iLCBzYW5kYm94RGlyZWN0b3J5KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChjaHJvb3Qoc2FuZGJveERpcmVjdG9yeSkgPT0gLTEpIHsK
LSAgICAgICAgZnByaW50ZihzdGRlcnIsICJDaHJvb3RpbmcgZmFpbGVkOiAlcy5cbiIsIHN0cmVy
cm9yKGVycm5vKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBDaHJvb3Qgb25s
eSBjaGFuZ2VzIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgY2FsbGluZyBwcm9jZXNzIGJ1dCBk
b2Vzbid0IGNoYW5nZQotICAgIC8vIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LiBUaGVy
ZWZvcmUsIGlmIHdlIGRvbid0IGRvIGl0IG1hbnVhbGx5IGEgbWFsaWNpb3VzIHVzZXIKLSAgICAv
LyBjb3VsZCBicmVhayBvdXQgdGhlIGphaWwgd2l0aCByZWxhdGl2ZSBwYXRocy4KLSAgICBpZiAo
Y2hkaXIoIi8iKSA9PSAtMSkgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvdWxkbid0IGNo
YW5nZSB0aGUgd29ya2luZyBkaXJlY3RvcnkgdG8gLy46ICVzXG4iLCBzdHJlcnJvcihlcnJubykp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gU2VuZGluZyBhY2tub3dsZWRnZW1l
bnQgdG8gdGhlIFdlYlByb2Nlc3MgdGhhdCB0aGUgc2FuZGJveGluZyB3YXMgc3VjY2Vzc2Z1bGwu
Ci0gICAgbWVzc2FnZSA9IE1TR19DSFJPT1RFRDsKLSAgICBpZiAod3JpdGUoaGVscGVyU29ja2V0
LCAmbWVzc2FnZSwgMSkgIT0gMSkgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvdWxkbid0
IHNlbmQgYWNrbm93bGVkZ2VtZW50IHRvIFdlYlByb2Nlc3M6ICVzLlxuIiwgc3RyZXJyb3IoZXJy
bm8pKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBleGl0KEVYSVRfU1VDQ0VTUyk7Ci19
Ci0KLXN0YXRpYyBib29sIHNldEVudmlyb25tZW50VmFyaWFibGVzRm9yQ2hhbmdlUm9vdEhlbHBl
cihwaWRfdCBwaWQsIGludCBoZWxwZXJTb2NrZXQsIGludCB3ZWJQcm9jZXNzU29ja2V0KQotewot
ICAgIGNvbnN0IGludCBkZXNjcmlwdG9yU2l6ZSA9IDMyOwotICAgIGNoYXIgc29ja2V0RGVzY3Jp
cHRvcltkZXNjcmlwdG9yU2l6ZV07Ci0gICAgY2hhciBzYW5kYm94SGVscGVyUElEW2Rlc2NyaXB0
b3JTaXplXTsKLQotICAgIGludCBsZW5ndGggPSBzbnByaW50ZihzYW5kYm94SGVscGVyUElELCBz
aXplb2Yoc2FuZGJveEhlbHBlclBJRCksICIldSIsIHBpZCk7Ci0gICAgaWYgKGxlbmd0aCA8IDAg
fHwgbGVuZ3RoID49IHNpemVvZihzYW5kYm94SGVscGVyUElEKSkgewotICAgICAgICBmcHJpbnRm
KHN0ZGVyciwgIkZhaWxlZCB0byBjb252ZXJ0IHRoZSBzYW5kYm94IGhlbHBlciBQSUQgdG8gYSBz
dHJpbmcuXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChzZXRl
bnYoU0FOREJPWF9IRUxQRVJfUElELCBzYW5kYm94SGVscGVyUElELCAxKSA9PSAtMSkgewotICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvdWxkbid0IHNldCB0aGUgU0JYX0hFTFBFUl9QSUQgZW52
aXJvbm1lbnQgdmFyaWFibGU6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgbGVuZ3RoID0gc25wcmludGYoc29ja2V0RGVzY3JpcHRv
ciwgc2l6ZW9mKHNvY2tldERlc2NyaXB0b3IpLCAiJXUiLCB3ZWJQcm9jZXNzU29ja2V0KTsKLSAg
ICBpZiAobGVuZ3RoIDwgMCB8fCBsZW5ndGggPj0gc2l6ZW9mKHNvY2tldERlc2NyaXB0b3IpKSB7
Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGNvbnZlcnQgdGhlIHNhbmRib3gg
aGVscGVyIGZpbGUgZGVzY3JpcHRvciB0byBhIHN0cmluZy5cbiIpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKHNldGVudihTQU5EQk9YX0RFU0NSSVBUT1IsIHNvY2tl
dERlc2NyaXB0b3IsIDEpID09IC0xKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVk
IHRvIHN0b3JlIHRoZSBoZWxwZXIncyBmaWxlIGRlc2NyaXB0b3IgaW50byBhbiBlbnZpcm9ubWVu
dCB2YXJpYWJsZTogJXMuXG4iLCBzdHJlcnJvcihlcnJubykpOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotCi0gICAgaWYgKGNsb3NlKGhlbHBlclNvY2tldCkgPT0gLTEpIHsKLSAgICAg
ICAgZnByaW50ZihzdGRlcnIsICJDbG9zaW5nIG9mICVkIGZhaWxlZDogJXMuXG4iLCBoZWxwZXJT
b2NrZXQsIHN0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJvb2wgcHJlcGFyZUFuZFN0YXJ0Q2hhbmdl
Um9vdEhlbHBlcigpCi17Ci0gICAgaW50IHNvY2tldFBhaXJbMl07Ci0gICAgaWYgKHNvY2tldHBh
aXIoQUZfVU5JWCwgU09DS19TVFJFQU0sIDAsIHNvY2tldFBhaXIpID09IC0xKSB7Ci0gICAgICAg
IGZwcmludGYoc3RkZXJyLCAiQ291bGRuJ3QgY3JlYXRlIHNvY2tldHBhaXI6ICVzXG4iLCBzdHJl
cnJvcihlcnJubykpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcGlkX3Qg
cGlkID0gc3lzY2FsbChTWVNfY2xvbmUsIENMT05FX0ZTIHwgU0lHQ0hMRCwgMCwgMCwgMCk7Ci0g
ICAgaWYgKHBpZCA9PSAtMSkgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNsb25lIGZhaWxl
ZDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gICAgaWYgKCFwaWQpIHsKLSAgICAgICAgLy8gQ2hpbGQgcHJvY2Vzczogd2Ugc3RhcnQgdGhl
IGNocm9vdCBoZWxwZXIgd2hpY2ggd2FpdHMgZm9yIHRoZSAiQ2hyb290TWUiCi0gICAgICAgIC8v
IG1lc3NhZ2UgZnJvbSB0aGUgV2ViUHJvY2Vzcy4gSWYgd2UgYXJlIHN1Y2Nlc3NlZCwgdGhlbiB3
ZSB3b24ndCByZXR1cm4uCi0gICAgICAgIGxhdW5jaENoYW5nZVJvb3RIZWxwZXIoc29ja2V0UGFp
clswXSwgc29ja2V0UGFpclsxXSk7Ci0gICAgICAgIC8vIFdlIHJlYWNoIHRoaXMgcGFydCBvbmx5
IGlmIGxhdW5jaENocm9vdEhlbHBlcigpIGZhaWxlZCwgaW5zdGVhZCBpdCBzaG91bGQgaGF2ZSBl
eGl0ZWQuCi0gICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLQotICAgIC8vIFBhcmVudCBwcm9jZXNzOiBleHBvcnRzIHRoZSBwaWQgb2YgdGhl
IGhlbHBlciBhbmQgdGhlIHNvY2tldCBpZCBzbyB0aGUKLSAgICAvLyBoZWxwZXIgYW5kIHRoZSBX
ZWJQcm9jZXNzIGNhbiBjb21tdW5pY2F0ZS4KLSAgICByZXR1cm4gc2V0RW52aXJvbm1lbnRWYXJp
YWJsZXNGb3JDaGFuZ2VSb290SGVscGVyKHBpZCwgc29ja2V0UGFpclswXSwgc29ja2V0UGFpclsx
XSk7Ci19Ci0KLS8vIFNldHRpbmcgbGludXggY2FwYWJpbGl0aWVzIChwZXJtaXR0ZWQsIGVmZmVj
dGl2ZSBhbmQgaW5oZXJpdGFibGUpIGZvciB0aGUgY3VycmVudCBwcm9jZXNzLgotLy8gUGVybWl0
dGVkIHNldCBpbmRpY2F0ZXMgdGhlIGNhcGFiaWxpdGllcyB3aGF0IGNvdWxkIGJlIHNldCBmb3Ig
dGhlIHByb2Nlc3MuCi0vLyBFZmZlY3RpdmUgc2V0IGlzIGEgc3Vic2V0IG9mIHBlcm1pdHRlZCBz
ZXQsIHRoZXkgYXJlIGFjdHVhbGx5IGVmZmVjdGl2ZS4KLS8vIEluaGVyaXRhYmxlIHNldCBpbmRp
Y2F0ZXMgdGhlIGNhcGFiaWxpdGllcyB3aGF0IHRoZSBjaGlsZHJlbiB3aWxsIGluaGVyaXQgZnJv
bSB0aGUgY3VycmVudCBwcm9jZXNzLgotc3RhdGljIGJvb2wgc2V0Q2FwYWJpbGl0aWVzKGNhcF92
YWx1ZV90KiBjYXBhYmlsaXR5TGlzdCwgaW50IGxlbmd0aCkKLXsKLSAgICAvLyBDYXBhYmlsaXRp
ZXMgc2hvdWxkIGJlIGluaXRpYWxpemVkIHdpdGhvdXQgZmxhZ3MuCi0gICAgY2FwX3QgY2FwYWJp
bGl0aWVzID0gY2FwX2luaXQoKTsKLSAgICBpZiAoIWNhcGFiaWxpdGllcykgewotICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBpbml0aWFsaXplIHByb2Nlc3MgY2FwYWJpbGl0aWVz
OiAlcy5cbiIsIHN0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICBpZiAoY2FwX2NsZWFyKGNhcGFiaWxpdGllcykgPT0gLTEpIHsKLSAgICAgICAgZnBy
aW50ZihzdGRlcnIsICJGYWlsZWQgdG8gY2xlYXIgcHJvY2VzcyBjYXBhYmlsaXRpZXM6ICVzLlxu
Iiwgc3RyZXJyb3IoZXJybm8pKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IGlmIChjYXBhYmlsaXR5TGlzdCAmJiBsZW5ndGgpIHsKLSAgICAgICAgaWYgKGNhcF9zZXRfZmxh
ZyhjYXBhYmlsaXRpZXMsIENBUF9FRkZFQ1RJVkUsIGxlbmd0aCwgY2FwYWJpbGl0eUxpc3QsIENB
UF9TRVQpID09IC0xCi0gICAgICAgICAgICB8fCBjYXBfc2V0X2ZsYWcoY2FwYWJpbGl0aWVzLCBD
QVBfSU5IRVJJVEFCTEUsIGxlbmd0aCwgY2FwYWJpbGl0eUxpc3QsIENBUF9TRVQpID09IC0xCi0g
ICAgICAgICAgICB8fCBjYXBfc2V0X2ZsYWcoY2FwYWJpbGl0aWVzLCBDQVBfUEVSTUlUVEVELCBs
ZW5ndGgsIGNhcGFiaWxpdHlMaXN0LCBDQVBfU0VUKSA9PSAtMSkgewotICAgICAgICAgICAgZnBy
aW50ZihzdGRlcnIsICJGYWlsZWQgdG8gc2V0IHByb2Nlc3MgY2FwYWJpbGl0eSBmbGFnczogJXMu
XG4iLCBzdHJlcnJvcihlcnJubykpOwotICAgICAgICAgICAgY2FwX2ZyZWUoY2FwYWJpbGl0aWVz
KTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlm
IChjYXBfc2V0X3Byb2MoY2FwYWJpbGl0aWVzKSA9PSAtMSkgewotICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIkZhaWxlZCB0byBzZXQgcHJvY2VzcyBjYXBhYmlsaXRpZXM6ICVzLlxuIiwgc3RyZXJy
b3IoZXJybm8pKTsKLSAgICAgICAgY2FwX2ZyZWUoY2FwYWJpbGl0aWVzKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGNhcF9mcmVlKGNhcGFiaWxpdGllcyk7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBib29sIGRyb3BQcml2aWxlZ2VzKCkKLXsKLSAgICAvLyBX
ZSBiZWNvbWUgZXhwbGljaXRlbHkgbm9uIGR1bXBhYmxlLgotICAgIGlmIChwcmN0bChQUl9TRVRf
RFVNUEFCTEUsIDAsIDAsIDAsIDApID09IC0xKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAi
U2V0dGluZyBkdW1wYWJsZSBpcyBmYWlsZWQ6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKHNldHJlc2dpZChzYW5kYm94VXNl
ckdJRCwgc2FuZGJveFVzZXJHSUQsIHNhbmRib3hVc2VyR0lEKSA9PSAtMSkgewotICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBmYWxsYmFjayB0byBncm91cDogJWQuXG4iLCBzYW5k
Ym94VXNlckdJRCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoc2V0
cmVzdWlkKHNhbmRib3hVc2VyVUlELCBzYW5kYm94VXNlclVJRCwgc2FuZGJveFVzZXJVSUQpID09
IC0xKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGZhbGxiYWNrIHRvIHVz
ZXI6ICVkLlxuIiwgc2FuZGJveFVzZXJVSUQpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotCi0gICAgLy8gRHJvcCBhbGwgY2FwYWJpbGl0aWVzLiBBZ2Fpbiwgc2V0dWlkKCkgbm9ybWFs
bHkgdGFrZXMgY2FyZSBvZiB0aGlzIGlmIHdlIGhhZCBldWlkIDAuCi0gICAgcmV0dXJuIHNldENh
cGFiaWxpdGllcygwLCAwKTsKLX0KLQotc3RhdGljIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBjaGFy
KiBwYXRoKQotewotICAgIHN0cnVjdCBzdGF0IGZpbGVTdGF0OwotICAgIGlmIChsc3RhdChwYXRo
LCAmZmlsZVN0YXQpID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyA9PSBFTk9FTlQpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0
aWMgbW9kZV90IGRpcmVjdG9yeVBlcm1pc3Npb25zKGNvbnN0IGNoYXIqIGRpcmVjdG9yeSkKLXsK
LSAgICBzdHJ1Y3Qgc3RhdCBmaWxlU3RhdDsKLSAgICBpZiAobHN0YXQoZGlyZWN0b3J5LCAmZmls
ZVN0YXQpID09IC0xKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIG9idGFp
biBpbmZvcm1hdGlvbiBhYm91dCBkaXJlY3RvcnkgKCVzKTogJXNcbiIsIGRpcmVjdG9yeSwgc3Ry
ZXJyb3IoZXJybm8pKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4g
ZmlsZVN0YXQuc3RfbW9kZTsKLX0KLQotc3RhdGljIGJvb2wgY3JlYXRlRGlyZWN0b3J5KGNoYXIq
IHBhdGhUb0NyZWF0ZSwgY29uc3QgY2hhciogbmV4dERpcmVjdG9yeVRvQ3JlYXRlKQotewotICAg
IHN0cmxjYXQocGF0aFRvQ3JlYXRlLCBuZXh0RGlyZWN0b3J5VG9DcmVhdGUsIG1heGltdW1QYXRo
TGVuZ3RoKTsKLQotICAgIGNoYXIgcGF0aFRvQ3JlYXRlSW5TYW5kYm94W21heGltdW1QYXRoTGVu
Z3RoXTsKLSAgICBhcHBlbmREaXJlY3RvcnlDb21wb25lbnQocGF0aFRvQ3JlYXRlSW5TYW5kYm94
LCBzYW5kYm94RGlyZWN0b3J5LCBwYXRoVG9DcmVhdGUpOwotCi0gICAgbW9kZV90IG1vZGUgPSBk
aXJlY3RvcnlQZXJtaXNzaW9ucyhwYXRoVG9DcmVhdGUpOwotICAgIGlmIChta2RpcihwYXRoVG9D
cmVhdGVJblNhbmRib3gsIG1vZGUpID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSBFRVhJ
U1QpIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ3JlYXRpb24gb2YgJXMgZmFpbGVk
OiAlc1xuIiwgcGF0aFRvQ3JlYXRlSW5TYW5kYm94LCBzdHJlcnJvcihlcnJubykpOwotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RydWN0IHN0YXQg
ZmlsZUluZm87Ci0gICAgaWYgKGxzdGF0KHBhdGhUb0NyZWF0ZSwgJmZpbGVJbmZvKSA9PSAtMSkg
ewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvdWxkbid0IG9idGFpbiBpbmZvcm1hdGlvbiBh
Ym91dCBkaXJlY3RvcnkgKCVzKTogJXNcbiIsIHBhdGhUb0NyZWF0ZSwgc3RyZXJyb3IoZXJybm8p
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAoZmlsZUluZm8uc3RfdWlk
ID09IGdldHVpZCgpKSB7Ci0gICAgICAgIGlmIChjaG93bihwYXRoVG9DcmVhdGVJblNhbmRib3gs
IHNhbmRib3hVc2VyVUlELCBzYW5kYm94VXNlckdJRCkgPT0gLTEpIHsKLSAgICAgICAgICAgIGZw
cmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGFzc2lnbiB0aGUgb3duZXJzaGlwIG9mICVzIHRvIHRo
ZSBzYW5kYm94IHVzZXI6ICVzLlxuIiwgcGF0aFRvQ3JlYXRlSW5TYW5kYm94LCBzdHJlcnJvcihl
cnJubykpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAg
IGlmIChjaG1vZChwYXRoVG9DcmVhdGVJblNhbmRib3gsIGZpbGVJbmZvLnN0X21vZGUpID09IC0x
KSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIHNldCB0aGUgcGVybWlzc2lv
bnMgb2YgJXM6ICVzLlxuIiwgcGF0aFRvQ3JlYXRlSW5TYW5kYm94LCBzdHJlcnJvcihlcnJubykp
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi0v
LyBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBkaXJlY3RvcnkgY2hhaW4gd2l0aCB0aGUgZ2l2ZW4g
cGF0aC4KLS8vIEZpcnN0LCBpdCBzcGxpdHMgdXAgdGhlIHBhdGggYnkgJy8nLXMgYW5kIHdhbGtz
IHRocm91Z2ggdGhlIGNodW5rcyBmcm9tIHRoZSBiYXNlIGRpcmVjdG9yeS4KLS8vIEl0IGNoZWNr
cyB0aGUgZXhpc3RhbmNlIG9mIHRoZSBhY3R1YWwgcGF0aCBhbmQgY3JlYXRlcyBpdCBpZiBpdCBk
b2Vzbid0IGV4aXN0IHlldC4KLXN0YXRpYyBib29sIGNyZWF0ZURpcmVjdG9yeUNoYWluKGNvbnN0
IGNoYXIqIHBhdGgpCi17Ci0gICAgY2hhciBmdWxsUGF0aEluU2FuZGJveFttYXhpbXVtUGF0aExl
bmd0aF07Ci0gICAgYXBwZW5kRGlyZWN0b3J5Q29tcG9uZW50KGZ1bGxQYXRoSW5TYW5kYm94LCBz
YW5kYm94RGlyZWN0b3J5LCBwYXRoKTsKLQotICAgIGlmIChmaWxlRXhpc3RzKGZ1bGxQYXRoSW5T
YW5kYm94KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjaGFyIGFscmVhZHlDcmVhdGVk
UGF0aFttYXhpbXVtUGF0aExlbmd0aF07Ci0gICAgYWxyZWFkeUNyZWF0ZWRQYXRoWzBdID0gJ1ww
JzsKLSAgICAvLyBzdGFydFBvcyBpcyAocGF0aCArIDEpIGJlY2F1c2Ugd2Ugc2tpcCB0aGUgZmly
c3QgJy8nLgotICAgIGNvbnN0IGNoYXIqIHN0YXJ0UG9zID0gcGF0aCArIDE7Ci0gICAgY29uc3Qg
Y2hhciogZW5kUG9zOwotICAgIHdoaWxlICgoZW5kUG9zID0gc3RyY2hyKHN0YXJ0UG9zLCAnLycp
KSkgewotICAgICAgICBjaGFyIG5leHREaXJlY3RvcnlUb0NyZWF0ZVttYXhpbXVtUGF0aExlbmd0
aF07Ci0gICAgICAgIHN0cmxjcHkobmV4dERpcmVjdG9yeVRvQ3JlYXRlLCBzdGFydFBvcyAtIDEs
IHN0cm5sZW4oc3RhcnRQb3MgLSAxLCBlbmRQb3MgLSBzdGFydFBvcyArIDEpICsgMSk7Ci0KLSAg
ICAgICAgaWYgKCFjcmVhdGVEaXJlY3RvcnkoYWxyZWFkeUNyZWF0ZWRQYXRoLCBuZXh0RGlyZWN0
b3J5VG9DcmVhdGUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBzdGFydFBv
cyA9IGVuZFBvcyArIDE7Ci0gICAgfQotICAgIC8vIENyZWF0ZSB0aGUgbGFzdCBkaXJlY3Rvcnkg
b2YgdGhlIGRpcmVjdG9yeSBwYXRoLgotICAgIGFscmVhZHlDcmVhdGVkUGF0aFswXSA9ICdcMCc7
Ci0gICAgcmV0dXJuIGNyZWF0ZURpcmVjdG9yeShhbHJlYWR5Q3JlYXRlZFBhdGgsIHBhdGgpOwot
fQotCi1zdGF0aWMgYm9vbCBjcmVhdGVEZXZpY2VGaWxlcygpCi17Ci0gICAgY29uc3QgY2hhciog
ZGV2RGlyZWN0b3J5ID0gIi9kZXYiOwotICAgIGlmICghY3JlYXRlRGlyZWN0b3J5Q2hhaW4oZGV2
RGlyZWN0b3J5KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgY29uc3QgY2hhciogZGV2
aWNlc1syXSA9IHsgIi9kZXYvcmFuZG9tIiwgIi9kZXYvdXJhbmRvbSIgfTsKLSAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IHNpemVvZihkZXZpY2VzKSAvIHNpemVvZihkZXZpY2VzWzBdKTsgKytpKSB7
Ci0gICAgICAgIHN0cnVjdCBzdGF0IHN0YXR1czsKLSAgICAgICAgaWYgKGxzdGF0KGRldmljZXNb
aV0sICZzdGF0dXMpKSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBz
dGF0IGRldmljZSBmaWxlICglcyk6ICVzXG4iLCBkZXZpY2VzW2ldLCBzdHJlcnJvcihlcnJubykp
OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGRldl90IGRl
diA9IHN0YXR1cy5zdF9yZGV2OwotCi0gICAgICAgIC8vIEJvdGggbmVlZGVkIGRldmljZSBmaWxl
cyAoL2Rldi9yYW5kb20gYW5kIC9kZXYvdXJhbmRvbSkgYXJlIGNoYXJhY3RlciBtX2RldmljZXMg
YW5kIHRoZWlyIHBlcm1pc3Npb25zIHNob3VsZCBiZTogcnctcnctcnctLgotICAgICAgICBjaGFy
IGRldmljZVttYXhpbXVtUGF0aExlbmd0aF07Ci0gICAgICAgIGFwcGVuZERpcmVjdG9yeUNvbXBv
bmVudChkZXZpY2UsIHNhbmRib3hEaXJlY3RvcnksIGRldmljZXNbaV0pOwotCi0gICAgICAgIGlm
IChta25vZChkZXZpY2UsIFNfSUZDSFIgfCBTX0lSVVNSIHwgU19JV1VTUiB8IFNfSVJHUlAgfCBT
X0lXR1JQIHwgU19JUk9USCB8IFNfSVdPVEgsIG1ha2VkZXYobWFqb3IoZGV2KSwgbWlub3IoZGV2
KSkpID09IC0xKSB7Ci0gICAgICAgICAgICBpZiAoZXJybm8gIT0gRUVYSVNUKSB7Ci0gICAgICAg
ICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDb3VsZG4ndCBjcmVhdGUgZGV2aWNlIGZpbGUgJXM6
ICVzXG4iLCBkZXZpY2UsIHN0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVl
OwotfQotCi1zdGF0aWMgYm9vbCBtb3VudEZpbGVTeXN0ZW1zKCkKLXsKLSAgICBjb25zdCBjaGFy
KiBwcm9jUGF0aCA9ICIvcHJvYyI7Ci0gICAgaWYgKCFjcmVhdGVEaXJlY3RvcnlDaGFpbihwcm9j
UGF0aCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjaGFyIHByb2NQYXRoSW5TYW5kYm94
W21heGltdW1QYXRoTGVuZ3RoXTsKLSAgICBhcHBlbmREaXJlY3RvcnlDb21wb25lbnQocHJvY1Bh
dGhJblNhbmRib3gsIHNhbmRib3hEaXJlY3RvcnksIHByb2NQYXRoKTsKLQotICAgIGlmIChtb3Vu
dChwcm9jUGF0aCwgcHJvY1BhdGhJblNhbmRib3gsICJwcm9jIiwgMCwgMCkgPT0gLTEpIHsKLSAg
ICAgICAgaWYgKGVycm5vICE9IEVCVVNZKSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
IkZhaWxlZCB0byBtb3VudCAnJXMnOiAlc1xuIiwgcHJvY1BhdGgsIHN0cmVycm9yKGVycm5vKSk7
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBjb25z
dCBjaGFyKiBzaGFyZWRNZW1vcnlQYXRoID0gIi9ydW4vc2htIjsKLSAgICBpZiAoIWNyZWF0ZURp
cmVjdG9yeUNoYWluKHNoYXJlZE1lbW9yeVBhdGgpKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJy
LCAiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgZm9yIC9ydW4vc2htIGluIHRoZSBzYW5kYm94
OiAlcy5cbiIsIHN0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gICAgY2hhciBzaGFyZWRNZW1vcnlQYXRoSW5TYW5kYm94W21heGltdW1QYXRoTGVuZ3RoXTsK
LSAgICBhcHBlbmREaXJlY3RvcnlDb21wb25lbnQoc2hhcmVkTWVtb3J5UGF0aEluU2FuZGJveCwg
c2FuZGJveERpcmVjdG9yeSwgc2hhcmVkTWVtb3J5UGF0aCk7Ci0KLSAgICBpZiAobW91bnQoc2hh
cmVkTWVtb3J5UGF0aCwgc2hhcmVkTWVtb3J5UGF0aEluU2FuZGJveCwgInRtcGZzIiwgMCwgMCkg
PT0gLTEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9IEVCVVNZKSB7Ci0gICAgICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgIkZhaWxlZCB0byBtb3VudCAnJXMnOiAlcy5cbiIsIHNoYXJlZE1lbW9yeVBh
dGgsIHN0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBib29sIGxpbmtGaWxlKGNv
bnN0IGNoYXIqIHNvdXJjZUZpbGUsIGNvbnN0IGNoYXIqIHRhcmdldEZpbGUpCi17Ci0gICAgY2hh
ciBvbGRQYXRoW21heGltdW1QYXRoTGVuZ3RoXTsKLSAgICBjaGFyIHRhcmdldFBhdGhbbWF4aW11
bVBhdGhMZW5ndGhdOwotICAgIHN0cmxjcHkob2xkUGF0aCwgc291cmNlRmlsZSwgbWF4aW11bVBh
dGhMZW5ndGgpOwotICAgIHN0cmxjcHkodGFyZ2V0UGF0aCwgdGFyZ2V0RmlsZSwgbWF4aW11bVBh
dGhMZW5ndGgpOwotCi0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgc3RydWN0IHN0YXQgZmls
ZUluZm87Ci0gICAgICAgIGlmIChsc3RhdChvbGRQYXRoLCAmZmlsZUluZm8pID09IC0xKSB7Ci0g
ICAgICAgICAgICBpZiAoZXJybm8gIT0gRU5PRU5UKSB7Ci0gICAgICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICJDb3VsZG4ndCBvYnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgJXM6ICVzXG4iLCBv
bGRQYXRoLCBzdHJlcnJvcihlcnJubykpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIElmIHRoZSBvcmlnaW5hbCBmaWxlIGRvZXNu
J3QgZXhpc3QgKGUuZy4gZGFuZ2xpbmcgbGlua3MpIHRoZW4gd2UgY2FuIGlnbm9yZSBpdAotICAg
ICAgICAgICAgLy8gaW4gdGhlIHNhbmRib3ggdG9vLgotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3QgY2hhciogZW5kT2ZCYXNlRGlyZWN0b3J5SW5Tb3Vy
Y2UgPSBzdHJyY2hyKG9sZFBhdGgsICcvJyk7Ci0gICAgICAgIGlmICghZW5kT2ZCYXNlRGlyZWN0
b3J5SW5Tb3VyY2UpIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW52YWxpZCBzb3Vy
Y2U6ICVzLlxuIiwgb2xkUGF0aCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLQotICAgICAgICBjaGFyIGJhc2VEaXJlY3RvcnlPZlNvdXJjZVttYXhpbXVtUGF0aExlbmd0
aF07Ci0gICAgICAgIC8vIFRvIGRldGVybWluZSB0aGUgbGVuZ3RoIG9mIHRoZSBiYXNlIGRpcmVj
dG9yeSB3ZSBoYXZlIHRvIGNvbnNpZGVyIHRoZSB0YWlsaW5nCi0gICAgICAgIC8vIHNsYXNoICgr
MSkgYW5kIGFkZGluZyBwbHVzIG9uZSBiZWNhdXNlIHN0cmxjcHkoKSBjb3BpZXMgKG1heExlbmd0
aCAtIDEpIGNoYXJhY3RlcnMKLSAgICAgICAgLy8gZnJvbSB0aGUgc291cmNlLgotICAgICAgICBz
dHJsY3B5KGJhc2VEaXJlY3RvcnlPZlNvdXJjZSwgb2xkUGF0aCwgZW5kT2ZCYXNlRGlyZWN0b3J5
SW5Tb3VyY2UgLSBvbGRQYXRoICsgMik7Ci0KLSAgICAgICAgaWYgKCFjcmVhdGVEaXJlY3RvcnlD
aGFpbihiYXNlRGlyZWN0b3J5T2ZTb3VyY2UpKSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIkNyZWF0aW5nICVzIGZhaWxlZDogJXMuXG4iLCBiYXNlRGlyZWN0b3J5T2ZTb3VyY2UsIHN0
cmVycm9yKGVycm5vKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAobGluayhvbGRQYXRoLCB0YXJnZXRQYXRoKSA9PSAtMSkgewotICAgICAgICAg
ICAgaWYgKGVycm5vICE9IEVFWElTVCAmJiBlcnJubyAhPSBFTk9FTlQpIHsKLSAgICAgICAgICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIkxpbmtpbmcgJXMgZmFpbGVkOiAlcy5cbiIsIG9sZFBhdGgs
IHN0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSGFuZGxlIHN5bWxpbmtzLiBXZSBkb24n
dCB3YW50IHRvIGhhdmUgZGFuZ2xpbmcgbGlua3MgaW4gdGhlIHNhbmRib3guIFNvIHdlIGhhdmUg
dG8KLSAgICAgICAgLy8gZm9sbG93IHRoZW0gYW5kIHB1dCB0aGUgd2hvbGUgbGluayBjaGFpbiBp
bnRvIHRoZSBzYW5kYm94LgotICAgICAgICBpZiAoKGZpbGVJbmZvLnN0X21vZGUgJiBTX0lGTVQp
ICE9IFNfSUZMTkspCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjaGFyIHN5bWxpbmtU
YXJnZXRbbWF4aW11bVBhdGhMZW5ndGhdOwotICAgICAgICBpbnQgbGVuZ3RoT2ZUaGVMaW5rID0g
cmVhZGxpbmsob2xkUGF0aCwgc3ltbGlua1RhcmdldCwgc2l6ZW9mKHN5bWxpbmtUYXJnZXQpIC0g
MSk7Ci0gICAgICAgIGlmIChsZW5ndGhPZlRoZUxpbmsgPiAwKQotICAgICAgICAgICAgc3ltbGlu
a1RhcmdldFtsZW5ndGhPZlRoZUxpbmtdID0gJ1wwJzsKLQotICAgICAgICBjaGFyIHN5bWxpbmtU
YXJnZXRJblJlYWxXb3JsZFttYXhpbXVtUGF0aExlbmd0aF07Ci0gICAgICAgIGNoYXIgc3ltbGlu
a1RhcmdldEluU2FuZGJveFttYXhpbXVtUGF0aExlbmd0aF07Ci0KLSAgICAgICAgLy8gTWFraW5n
IGRpZmZlcmVuY2UgYmV0d2VlbiByZWxhdGl2ZSBhbmQgYWJzb2x1dGUgcGF0aHMuCi0gICAgICAg
IC8vIElmIHRoZSBzeW1saW5rcyB0YXJnZXQgc3RhcnRzIHdpdGggJy8nIHRoZW4gd2UgaGF2ZSBu
b3RoaW5nIHRvIGRvIHdpdGggaXQuCi0gICAgICAgIC8vIE90aGVyd2lzZSBpdCdzIGEgcmVsYXRp
dmUgcGF0aCBhbmQgd2UgaGF2ZSB0byBjb25jYXRlbmF0ZSBpdCB0byB0aGUgY3VycmVudAotICAg
ICAgICAvLyBwYXRoIHRvIG9idGFpbiB0aGUgdGFyZ2V0LgotICAgICAgICBpZiAoc3ltbGlua1Rh
cmdldFswXSA9PSAnLycpIHsKLSAgICAgICAgICAgIHN0cmxjcHkoc3ltbGlua1RhcmdldEluUmVh
bFdvcmxkLCBzeW1saW5rVGFyZ2V0LCBtYXhpbXVtUGF0aExlbmd0aCk7Ci0gICAgICAgICAgICBh
cHBlbmREaXJlY3RvcnlDb21wb25lbnQoc3ltbGlua1RhcmdldEluU2FuZGJveCwgc2FuZGJveERp
cmVjdG9yeSwgc3ltbGlua1RhcmdldCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBh
cHBlbmREaXJlY3RvcnlDb21wb25lbnQoc3ltbGlua1RhcmdldEluUmVhbFdvcmxkLCBiYXNlRGly
ZWN0b3J5T2ZTb3VyY2UsIHN5bWxpbmtUYXJnZXQpOwotICAgICAgICAgICAgYXBwZW5kRGlyZWN0
b3J5Q29tcG9uZW50KHN5bWxpbmtUYXJnZXRJblNhbmRib3gsIHNhbmRib3hEaXJlY3RvcnksIHN5
bWxpbmtUYXJnZXRJblJlYWxXb3JsZCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJbml0aWFs
aXplIG9sZFBhdGggYW5kIHRhcmdldFBhdGggdmFyaWFibGVzIGZvciB0aGUgbmV4dCBsb29wIG9m
IHdoaWxlLgotICAgICAgICBvbGRQYXRoWzBdID0gJ1wwJzsKLSAgICAgICAgdGFyZ2V0UGF0aFsw
XSA9ICdcMCc7Ci0gICAgICAgIHN0cmxjYXQob2xkUGF0aCwgc3ltbGlua1RhcmdldEluUmVhbFdv
cmxkLCBtYXhpbXVtUGF0aExlbmd0aCk7Ci0gICAgICAgIHN0cmxjYXQodGFyZ2V0UGF0aCwgc3lt
bGlua1RhcmdldEluU2FuZGJveCwgbWF4aW11bVBhdGhMZW5ndGgpOwotICAgIH0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotLy8gVGhpcyBmdW5jdGlvbiBleHRlbmRzIHRoZSBzdGFuZGFyZCBsaW5r
IGZ1bmN0aW9uIGJ5IGxpbmtpbmcgZGlyZWN0b3JpZXMgYW5kIGFsbCB0aGVpciBjb250ZW50cwot
Ly8gYW5kIHN1YmRpcmVjdG9yaWVzIHJlY3Vyc2l2ZWx5Lgotc3RhdGljIGJvb2wgbGlua0RpcmVj
dG9yeShjb25zdCBjaGFyKiBzb3VyY2VEaXJlY3RvcnlQYXRoLCBjb25zdCBjaGFyKiB0YXJnZXRE
aXJlY3RvcnlQYXRoKQotewotICAgIGlmICghY3JlYXRlRGlyZWN0b3J5Q2hhaW4oc291cmNlRGly
ZWN0b3J5UGF0aCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBESVIqIGRpcmVjdG9yeSA9
IG9wZW5kaXIoc291cmNlRGlyZWN0b3J5UGF0aCk7Ci0gICAgaWYgKCFkaXJlY3RvcnkpIHsKLSAg
ICAgICAgZnByaW50ZihzdGRlcnIsICJDb3VsZG4ndCBvcGVuIGRpcmVjdG9yeSAlczogJXNcbiIs
IHNvdXJjZURpcmVjdG9yeVBhdGgsIHN0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0KLSAgICB3aGlsZSAoc3RydWN0IGRpcmVudCAqZGlyZWN0b3J5SW5mbyA9
IHJlYWRkaXIoZGlyZWN0b3J5KSkgewotICAgICAgICBjaGFyKiBmaWxlTmFtZSA9IGRpcmVjdG9y
eUluZm8tPmRfbmFtZTsKLSAgICAgICAgLy8gV2UgbXVzdCBub3QgbGluayAnLicgYW5kICIuLiIg
aW50byB0aGUgc2FuZGJveC4KLSAgICAgICAgaWYgKCFzdHJjbXAoZmlsZU5hbWUsICIuIikgfHwg
IXN0cmNtcChmaWxlTmFtZSwgIi4uIikpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
Y2hhciBzb3VyY2VGaWxlW21heGltdW1QYXRoTGVuZ3RoXTsKLSAgICAgICAgY2hhciB0YXJnZXRG
aWxlW21heGltdW1QYXRoTGVuZ3RoXTsKLSAgICAgICAgYXBwZW5kRGlyZWN0b3J5Q29tcG9uZW50
KHNvdXJjZUZpbGUsIHNvdXJjZURpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKLSAgICAgICAgYXBw
ZW5kRGlyZWN0b3J5Q29tcG9uZW50KHRhcmdldEZpbGUsIHRhcmdldERpcmVjdG9yeVBhdGgsIGZp
bGVOYW1lKTsKLQotICAgICAgICBib29sIHJldHVyblZhbHVlOwotICAgICAgICBpZiAoZGlyZWN0
b3J5SW5mby0+ZF90eXBlID09IERUX0RJUikgewotICAgICAgICAgICAgc3RybmNhdChzb3VyY2VG
aWxlLCAiLyIsIDEpOwotICAgICAgICAgICAgc3RybmNhdCh0YXJnZXRGaWxlLCAiLyIsIDEpOwot
ICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBsaW5rRGlyZWN0b3J5KHNvdXJjZUZpbGUsIHRhcmdl
dEZpbGUpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gbGlua0Zp
bGUoc291cmNlRmlsZSwgdGFyZ2V0RmlsZSk7Ci0gICAgICAgIGlmICghcmV0dXJuVmFsdWUpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gUmVzdG9yZSB0aGUgb3Jp
Z2luYWwgbW9kaWZpY2F0aW9uIHRpbWUgb2YgdGhlIGRpcmVjdG9yaWVzIGJlY2F1c2UKLSAgICAv
LyBpdCBjb3VsZCBoYXZlIG1lYW5pbmcgZS5nLiBpbiB0aGUgaGFzaCBnZW5lcmF0aW9uIG9mIGNh
Y2hlIGZpbGVzLgotICAgIHN0cnVjdCBzdGF0IGZpbGVTdGF0OwotICAgIGlmIChsc3RhdChzb3Vy
Y2VEaXJlY3RvcnlQYXRoLCAmZmlsZVN0YXQpID09IC0xKSB7Ci0gICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiRmFpbGVkIHRvIG9idGFpbiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGlyZWN0b3J5ICcl
cyc6ICVzXG4iLCBzb3VyY2VEaXJlY3RvcnlQYXRoLCBzdHJlcnJvcihlcnJubykpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHN0cnVjdCB1dGltYnVmIHRpbWVzOwotICAgIHRp
bWVzLmFjdGltZSA9IGZpbGVTdGF0LnN0X2F0aW1lOwotICAgIHRpbWVzLm1vZHRpbWUgPSBmaWxl
U3RhdC5zdF9tdGltZTsKLSAgICBpZiAodXRpbWUodGFyZ2V0RGlyZWN0b3J5UGF0aCwgJnRpbWVz
KSA9PSAtMSkgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvdWxkbid0IHNldCBiYWNrIHRo
ZSBsYXN0IG1vZGlmaWNhdGlvbiB0aW1lIG9mICclcyc6ICVzXG4iLCB0YXJnZXREaXJlY3RvcnlQ
YXRoLCBzdHJlcnJvcihlcnJubykpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
IHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9vbCBjb2xsZWN0UnVuVGltZURlcGVuZGVuY2ll
cygpCi17Ci0gICAgLy8gVGhlIGxpc3Qgb2YgZW1waXJpY2FsbHkgZ2F0aGVyZWQgbGlicmFyeSBk
ZXBlbmRlbmNpZXMuCi0gICAgY29uc3QgY2hhciogcnVudGltZURlcGVuZGVuY2llc1tdID0gewot
ICAgICAgICAibGlibnNzX2Rucy5zbyIsCi0gICAgICAgICJsaWJyZXNvbHYuc28iLAotICAgICAg
ICAibGlic3NsLnNvIiwKLSAgICAgICAgImxpYmNyeXB0by5zbyIKLSAgICB9OwotCi0gICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBzaXplb2YocnVudGltZURlcGVuZGVuY2llcykgLyBzaXplb2YocnVu
dGltZURlcGVuZGVuY2llc1swXSk7ICsraSkgewotICAgICAgICAvLyBUbyBvYnRhaW4gdGhlIHBh
dGggb2YgdGhlIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIHdlIG9wZW4gdGhlbSB3aXRoIGRsb3Blbi4K
LSAgICAgICAgLy8gV2l0aCB0aGUgaGFuZGxlIHN1cHBsaWVkIGJ5IGRsb3BlbiB3ZSBjYW4gb2J0
YWluIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkeW5hbWljYWxseQotICAgICAgICAvLyBsaW5rZWQg
bGlicmFyaWVzLCBzbyB0aGUgcGF0aCB3aGVyZSBhcmUgdGhleSBpbnN0YWxsZWQuCi0gICAgICAg
IHZvaWQqIGhhbmRsZSA9IGRsb3BlbihydW50aW1lRGVwZW5kZW5jaWVzW2ldLCBSVExEX0xBWlkp
OwotICAgICAgICBpZiAoIWhhbmRsZSkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJD
b3VsZG4ndCBnZXQgdGhlIGhhbmRsZXIgb2YgJXM6ICVzXG4iLCBydW50aW1lRGVwZW5kZW5jaWVz
W2ldLCBkbGVycm9yKCkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0K
LSAgICAgICAgc3RydWN0IGxpbmtfbWFwKiBsaW5rTWFwOwotICAgICAgICBpZiAoZGxpbmZvKGhh
bmRsZSwgUlRMRF9ESV9MSU5LTUFQLCAmbGlua01hcCkgPT0gLTEpIHsKLSAgICAgICAgICAgIGZw
cmludGYoc3RkZXJyLCAiQ291bGRuJ3QgZ2V0IGluZm9ybWF0aW9uIGFib3V0ICVzOiAlc1xuIiwg
cnVudGltZURlcGVuZGVuY2llc1tpXSwgZGxlcnJvcigpKTsKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghbGlua01hcCkgewotICAgICAgICAgICAg
ZnByaW50ZihzdGRlcnIsICJDb3VsZG4ndCBnZXQgdGhlIGxpbmttYXAgb2YgJXM6ICVzLlxuIiwg
cnVudGltZURlcGVuZGVuY2llc1tpXSwgc3RyZXJyb3IoZXJybm8pKTsKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGNoYXIgcGF0aE9mVGhlTGlicmFyeUlu
U2FuZGJveFttYXhpbXVtUGF0aExlbmd0aF07Ci0gICAgICAgIGFwcGVuZERpcmVjdG9yeUNvbXBv
bmVudChwYXRoT2ZUaGVMaWJyYXJ5SW5TYW5kYm94LCBzYW5kYm94RGlyZWN0b3J5LCBsaW5rTWFw
LT5sX25hbWUpOwotICAgICAgICBpZiAoIWxpbmtGaWxlKGxpbmtNYXAtPmxfbmFtZSwgcGF0aE9m
VGhlTGlicmFyeUluU2FuZGJveCkpIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiTGlu
a2luZyBydW50aW1lIGRlcGVuZGVuY3k6ICVzIGZhaWxlZDogJXNcbiIsIGxpbmtNYXAtPmxfbmFt
ZSwgc3RyZXJyb3IoZXJybm8pKTsKLSAgICAgICAgICAgIGRsY2xvc2UoaGFuZGxlKTsKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBkbGNsb3NlKGhhbmRsZSk7
Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9vbCBzZXR1cFhhdXRob3Jp
dHlGb3JOb2JvZHlVc2VyKCkKLXsKLSAgICAvLyBUbyBiZSBhYmxlIHVzZSBYIGluc2lkZSB0aGUg
c2FuZGJveCBhbiAuWGF1dGhvcml0eSBmaWxlIG11c3QgYmUgZXhpc3QgaW5zaWRlIGl0LAotICAg
IC8vIG93bmVkIGJ5IHRoZSBzYW5kYm94dXNlci4gRnVydGhlcm1vcmUsIFhBVVRIT1JJVFkgZW52
aXJvbm1lbnQgdmFyaWFibGUgbXVzdCBwb2ludCB0byBpdC4KLSAgICBjaGFyIGJ1ZmZlcltCVUZT
SVpdOwotICAgIHNpemVfdCBzaXplOwotICAgIHN0cnVjdCBwYXNzd2QqIHJlYWxVc2VyID0gZ2V0
cHd1aWQoZ2V0dWlkKCkpOwotICAgIGlmICghcmVhbFVzZXIpIHsKLSAgICAgICAgZnByaW50Zihz
dGRlcnIsICJDb3VsZG4ndCBvYnRhaW4gdGhlIGN1cnJlbnQgdXNlcjogJXNcbiIsIHN0cmVycm9y
KGVycm5vKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBjaGFyIHhhdXRo
b3JpdHlPZlJlYWxVc2VyW21heGltdW1QYXRoTGVuZ3RoXTsKLSAgICBjaGFyIHhhdXRob3JpdHlJ
blNhbmRib3hbbWF4aW11bVBhdGhMZW5ndGhdOwotICAgIGFwcGVuZERpcmVjdG9yeUNvbXBvbmVu
dCh4YXV0aG9yaXR5T2ZSZWFsVXNlciwgcmVhbFVzZXItPnB3X2RpciwgIi8uWGF1dGhvcml0eSIp
OwotICAgIGFwcGVuZERpcmVjdG9yeUNvbXBvbmVudCh4YXV0aG9yaXR5SW5TYW5kYm94LCBzYW5k
Ym94RGlyZWN0b3J5LCB4YXV0aG9yaXR5T2ZSZWFsVXNlcik7Ci0KLSAgICBGSUxFKiBzb3VyY2Ug
PSBmb3Blbih4YXV0aG9yaXR5T2ZSZWFsVXNlciwgInJiIik7Ci0gICAgaWYgKCFzb3VyY2UpIHsK
LSAgICAgICAgZnByaW50ZihzdGRlcnIsICJDb3VsZG4ndCBvcGVuICVzOiAlc1xuIiwgeGF1dGhv
cml0eU9mUmVhbFVzZXIsIHN0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0KLSAgICBGSUxFKiBkZXN0ID0gZm9wZW4oeGF1dGhvcml0eUluU2FuZGJveCwgIndi
Iik7Ci0gICAgaWYgKCFkZXN0KSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ291bGRuJ3Qg
b3BlbiAlczogJXNcbiIsIHhhdXRob3JpdHlJblNhbmRib3gsIHN0cmVycm9yKGVycm5vKSk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBXZSBjb3B5IHRoZSAuWGF1dGhv
cml0eSBmaWxlIG9mIHRoZSByZWFsIHVzZXIgKGluc3RlYWQgb2YgbGlua2luZykgYmVjYXVzZSAn
bm9ib2R5JyB1c2VyCi0gICAgLy8gc2hvdWxkIG93biBpdCBidXQgd2UgZG9uJ3Qgd2FudCB0byBj
aGFuZ2UgdGhlIHBlcm1pc3Npb25zIG9mIHRoZSBvcmlnaW5hbCBmaWxlLgotICAgIHdoaWxlICgo
c2l6ZSA9IGZyZWFkKGJ1ZmZlciwgMSwgQlVGU0laLCBzb3VyY2UpKSkgewotICAgICAgICBpZiAo
ZndyaXRlKGJ1ZmZlciwgMSwgc2l6ZSwgZGVzdCkgIT0gc2l6ZSkgewotICAgICAgICAgICAgZnBy
aW50ZihzdGRlcnIsICJGYWlsZWQgdG8gY29weSAuWGF1dGhvcml0eSB0byB0aGUgc2FuZGJveDog
JXMuXG4iLCBzdHJlcnJvcihlcnJubykpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGZjbG9zZShzb3VyY2UpKSB7Ci0gICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiQ2xvc2luZyB0aGUgLlhhdXRob3JpdHkgZmlsZSBvZiB0aGUgcmVhbCB1c2Vy
IGZhaWxlZDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0KLSAgICBpZiAoZmNsb3NlKGRlc3QpKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJy
LCAiQ2xvc2luZyB0aGUgLlhhdXRob3JpdHkgZmlsZSBvZiB0aGUgc2FuZGJveCB1c2VyIGZhaWxl
ZDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICBpZiAoY2hvd24oeGF1dGhvcml0eUluU2FuZGJveCwgc2FuZGJveFVzZXJVSUQsIHNh
bmRib3hVc2VyR0lEKSA9PSAtMSkgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNob3duaW5n
IC5YYXV0aG9yaXR5ICglcykgZmFpbGVkOiAlcy5cbiIsIHhhdXRob3JpdHlJblNhbmRib3gsIHN0
cmVycm9yKGVycm5vKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAo
c2V0ZW52KCJYQVVUSE9SSVRZIiwgeGF1dGhvcml0eUluU2FuZGJveCwgMSkgPT0gLTEpIHsKLSAg
ICAgICAgZnByaW50ZihzdGRlcnIsICJDb3VsZG4ndCBzZXQgdGhlIFhBVVRIT1JJVFkgZW52cmlv
bm1lbnQgdmFyaWFibGU6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9vbCBpbml0aWFs
aXplU2FuZGJveCgpCi17Ci0gICAgLy8gQ3JlYXRlIHRoZSBzYW5kYm94IGRpcmVjdG9yeS4gV2Ug
b25seSBuZWVkIHRvIGVudGVyIGl0LCBzbwotICAgIC8vIHRoZSBleGVjdXRhYmxlIHBlcm1pc3Np
b24gaXMgbmVlZGVkIG9ubHkuCi0gICAgaWYgKG1rZGlyKHNhbmRib3hEaXJlY3RvcnksIFNfSUZE
SVIgfCBTX0lYVVNSIHwgU19JWE9USCkgPT0gLTEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9IEVF
WElTVCkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDb3VsZG4ndCBjcmVhdGUgdGhl
IHNhbmRib3ggZGlyZWN0b3J5OiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghY3JlYXRlRGV2aWNl
RmlsZXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFtb3VudEZpbGVTeXN0
ZW1zKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEhhcmQgbGluayBjYWNoZSBh
bmQgZm9udCBkaXJlY3RvcmllcyBpbnRvIHRoZSBzYW5kYm94IGVudmlyb25tZW50LgotICAgIHN0
cnVjdCBwYXNzd2QqIHVzZXJJbmZvID0gZ2V0cHd1aWQoZ2V0dWlkKCkpOwotICAgIGNvbnN0IGNo
YXIqIGhvbWUgPSB1c2VySW5mby0+cHdfZGlyOwotCi0gICAgY2hhciBsb2NhbERpcmVjdG9yeVtt
YXhpbXVtUGF0aExlbmd0aF07Ci0gICAgY2hhciBjYWNoZURpcmVjdG9yeVttYXhpbXVtUGF0aExl
bmd0aF07Ci0gICAgY2hhciBmb250RGlyZWN0b3J5W21heGltdW1QYXRoTGVuZ3RoXTsKLQotICAg
IGFwcGVuZERpcmVjdG9yeUNvbXBvbmVudChsb2NhbERpcmVjdG9yeSwgaG9tZSwgIi8ubG9jYWwv
c2hhcmUvIik7Ci0gICAgYXBwZW5kRGlyZWN0b3J5Q29tcG9uZW50KGNhY2hlRGlyZWN0b3J5LCBo
b21lLCAiLy5jYWNoZS8iKTsKLSAgICBhcHBlbmREaXJlY3RvcnlDb21wb25lbnQoZm9udERpcmVj
dG9yeSwgaG9tZSwgIi8uZm9udGNvbmZpZy8iKTsKLQotICAgIGNvbnN0IGNoYXIqIGxpbmtlZERp
cmVjdG9yaWVzW10gPSB7Ci0gICAgICAgIGNhY2hlRGlyZWN0b3J5LAotICAgICAgICBmb250RGly
ZWN0b3J5LAotICAgICAgICBsb2NhbERpcmVjdG9yeSwKLSAgICAgICAgIi9ldGMvZm9udHMvIiwK
LSAgICAgICAgIi9ldGMvc3NsL2NlcnRzLyIsCi0gICAgICAgICIvdmFyL2NhY2hlL2ZvbnRjb25m
aWcvIiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvIgotICAgIH07Ci0KLSAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IHNpemVvZihsaW5rZWREaXJlY3RvcmllcykgLyBzaXplb2YobGlua2VkRGly
ZWN0b3JpZXNbMF0pOyArK2kpIHsKLSAgICAgICAgY2hhciBsaW5rZWREaXJlY3RvcnlJblNhbmRi
b3hbbWF4aW11bVBhdGhMZW5ndGhdOwotICAgICAgICBhcHBlbmREaXJlY3RvcnlDb21wb25lbnQo
bGlua2VkRGlyZWN0b3J5SW5TYW5kYm94LCBzYW5kYm94RGlyZWN0b3J5LCBsaW5rZWREaXJlY3Rv
cmllc1tpXSk7Ci0KLSAgICAgICAgaWYgKCFsaW5rRGlyZWN0b3J5KGxpbmtlZERpcmVjdG9yaWVz
W2ldLCBsaW5rZWREaXJlY3RvcnlJblNhbmRib3gpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLQotICAgIGlmICghc2V0dXBYYXV0aG9yaXR5Rm9yTm9ib2R5VXNlcigpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gY29sbGVjdFJ1blRpbWVEZXBlbmRlbmNp
ZXMoKTsKLX0KLQotc3RhdGljIGJvb2wgcmVzdHJpY3RDYXBhYmlsaXRpZXMoKQotewotICAgIC8v
IENhcGFiaWxpdGllcyB3ZSBuZWVkLgotICAgIC8vIENBUF9TWVNfQURNSU4gY2FwYWJpbHR5IGlz
IGFkZGVkIGJlY2F1c2UgY2xvbmluZyB3aXRoIENMT05FX05FV1BJRCBmbGFnIGxhdGVyIHdpbGwg
bmVlZCBpdC4KLSAgICBjYXBfdmFsdWVfdCBjYXBhYmlsaXR5TGlzdFtdID0geyBDQVBfU0VUVUlE
LCBDQVBfU0VUR0lELCBDQVBfU1lTX0FETUlOLCBDQVBfU1lTX0NIUk9PVH07Ci0KLSAgICAvLyBS
ZWR1Y2UgY2FwYWJpbGl0aWVzIHRvIHdoYXQgd2UgbmVlZC4KLSAgICAvLyBBbHRob3VnaCB3ZSBz
dGlsbCBoYXZlIHJvb3QgZXVpZCBhbmQgd2Uga2VlcCByb290IGVxdWl2YWxlbnQgY2FwYWJpbGl0
aWVzLAotICAgIC8vIHdlIHJlbW92ZWQgKD0gZGlkbid0IGFkZCkgQ0FQX1NZU19SRVNTT1VSQ0Ug
Y2FwYWJpbGl0ZXMgYW5kIHRoaXMgcmVzdWx0ZWQgdGhhdAotICAgIC8vIHRoZSBzZXRybGltaXQg
ZnVuY3Rpb24gd2l0aCBSTElNSVRfTk9GSUxFIHdpbGwgYmUgZWZmZWN0aXZlIGxhdGVyLgotICAg
IGlmICghc2V0Q2FwYWJpbGl0aWVzKGNhcGFiaWxpdHlMaXN0LCBzaXplb2YoY2FwYWJpbGl0eUxp
c3QpIC8gc2l6ZW9mKGNhcGFiaWxpdHlMaXN0WzBdKSkpIHsKLSAgICAgICAgZnByaW50ZihzdGRl
cnIsICJDb3VsZCBub3QgYWRqdXN0IHByb2Nlc3MgY2FwYWJpbGl0aWVzOiAlcy5cbiIsIHN0cmVy
cm9yKGVycm5vKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLXN0YXRpYyBib29sIG1vdmVUb05ld1BJRE5hbWVzcGFjZSgpCi17Ci0gICAgLy8g
Q0xPTkVfTkVXUElEIGFuZCBDTE9ORV9GUyBzaG91bGQgYmUgaW4gdGhhdCBvcmRlci4KLSAgICAv
LyBXZSBjYW4ndCBzaGFyZSBmaWxlc3lzdGVtcyBhY2Nyb3NzIG5hbWVzcGFjZXMuCi0gICAgaW50
IHN0YXR1czsKLSAgICBwaWRfdCBleHBlY3RlZFBJRDsKLSAgICBwaWRfdCBwaWQgPSBzeXNjYWxs
KFNZU19jbG9uZSwgQ0xPTkVfTkVXUElEIHwgU0lHQ0hMRCwgMCwgMCwgMCk7Ci0KLSAgICBpZiAo
cGlkID09IC0xKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ2xvbmluZyBpcyBmYWlsZWQ6
ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIGlmICghcGlkKSB7Ci0gICAgICAgIC8vIENoaWxkIHNob3VsZCBydW4gd2l0aCBwaWQgbnVt
YmVyIDEgaW4gdGhlIG5ldyBuYW1lc3BhY2UuCi0gICAgICAgIGlmIChnZXRwaWQoKSAhPSAxKSB7
Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvdWxkbid0IGNyZWF0ZSBhIG5ldyBQSUQg
bmFtZXNwYWNlLlxuIik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgLy8gV2UgYXJlIHdhaXRpbmcgZm9yIG91
ciBjaGlsZCAoV2ViUHJvY2VzcykuCi0gICAgLy8gSWYgdGhpcyB3YWl0IGlzIHN1Y2Nlc3NmdWwg
aXQgbWVhbnMgdGhhdCBvdXIgY2hpbGQgaXMgdGVybWluYXRlZC4KLSAgICBleHBlY3RlZFBJRCA9
IHdhaXRwaWQocGlkLCAmc3RhdHVzLCAwKTsKLSAgICBpZiAoZXhwZWN0ZWRQSUQgIT0gcGlkKSB7
Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiUHJvY2VzcyB3aXRoIFBJRCAlZCB0ZXJtaW5hdGVk
IGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkIG9uZSB3aXRoIFBJRCAlZDogJXMuXG4iLCBleHBlY3Rl
ZFBJRCwgcGlkLCBzdHJlcnJvcihlcnJubykpOwotICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7
Ci0gICAgfQotICAgIGlmIChXSUZFWElURUQoc3RhdHVzKSkKLSAgICAgICAgZXhpdChXRVhJVFNU
QVRVUyhzdGF0dXMpKTsKLSAgICBleGl0KEVYSVRfU1VDQ0VTUyk7Ci19Ci0KLXN0YXRpYyBib29s
IHJ1bihpbnQgYXJnYywgY2hhciAqY29uc3QgYXJndltdKQotewotICAgIHN0cnVjdCBwYXNzd2Qq
IHVzZXJJbmZvID0gZ2V0cHd1aWQoZ2V0dWlkKCkpOwotICAgIGlmICghdXNlckluZm8pIHsKLSAg
ICAgICAgZnByaW50ZihzdGRlcnIsICJDb3VsZG4ndCBnZXQgdGhlIGN1cnJlbnQgdXNlcjogJXMu
XG4iLCBzdHJlcnJvcihlcnJubykpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
IGFwcGVuZERpcmVjdG9yeUNvbXBvbmVudChzYW5kYm94RGlyZWN0b3J5LCB1c2VySW5mby0+cHdf
ZGlyLCAiLy53azItc2FuZGJveCIpOwotCi0gICAgLy8gQ3VycmVudGx5IHdlIHVzZSAnbm9ib2R5
JyB1c2VyIGFzIHRoZSBzYW5kYm94IHVzZXIgYW5kIGZhbGwgYmFjayB0byB0aGUgcmVhbCB1c2Vy
Ci0gICAgLy8gaWYgd2UgZmFpbGVkIHRvIGdldCBpdCAod2UgY291bGQgZXh0ZW5kIHRoaXMgaW4g
dGhlIGZ1dHVyZSB3aXRoIGEgc3BlY2lmaWMgcmVzdHJpY3RlZCB1c2VyKS4KLSAgICBpZiAoc3Ry
dWN0IHBhc3N3ZCogbm9ib2R5VXNlciA9IGdldHB3bmFtKCJub2JvZHkiKSkgewotICAgICAgICBz
YW5kYm94VXNlclVJRCA9IG5vYm9keVVzZXItPnB3X3VpZDsKLSAgICAgICAgc2FuZGJveFVzZXJH
SUQgPSBub2JvZHlVc2VyLT5wd19naWQ7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc2FuZGJveFVz
ZXJVSUQgPSBnZXR1aWQoKTsKLSAgICAgICAgc2FuZGJveFVzZXJHSUQgPSBnZXRnaWQoKTsKLSAg
ICB9Ci0KLSAgICAvLyBXZSBzaG91bGQgaGF2ZSB0aHJlZSBwYXJhbWV0ZXJzOgotICAgIC8vIHBh
dGhfb2ZfdGhpc19iaW5hcnkgcGF0aF9vZl90aGVfd2VicHJvY2VzcyBzb2NrZXRfdG9fY29tbXVu
aWNhdGVfd2l0aF91aXByb2Nlc3MKLSAgICBpZiAoYXJnYyAhPSAzKSB7Ci0gICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiU3RhcnRpbmcgU2FuZGJveFByb2Nlc3MgcmVxdWlyZXMgMyBwYXJhbWV0ZXJz
IVxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBTYW5kYm94UHJv
Y2VzcyBzaG91bGQgYmUgcnVuIHdpdGggc3VpZCBmbGFnIC4uLgotICAgIGlmIChnZXRldWlkKCkp
IHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJUaGUgc2FuZGJveCBpcyBub3Qgc2V0ZXVpZCBy
b290LlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyAuLi4gYnV0
IG5vdCBhcyByb290IChub3Qgd2l0aCBzdWRvKS4KLSAgICBpZiAoIWdldHVpZCgpKSB7Ci0gICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiVGhlIHNhbmRib3ggaXMgbm90IGRlc2lnbmVkIHRvIGJlIHJ1
biBieSByb290LlxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAo
IWluaXRpYWxpemVTYW5kYm94KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICgh
cmVzdHJpY3RDYXBhYmlsaXRpZXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8g
V2UgbW92ZSBvdXJzZWxmIGFuZCBvdXIgY2hpbGRyZW4gaW50byBhIG5ldyBQSUQgbmFtZXNwYWNl
LAotICAgIC8vIHdoZXJlIHByb2Nlc3MgSURzIHN0YXJ0IGZyb20gMCBhZ2Fpbi4KLSAgICBpZiAo
IW1vdmVUb05ld1BJRE5hbWVzcGFjZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAv
LyBTdGFydGluZyBhIGhlbHBlciB3aGF0IHdpbGwgd2FpdGluZyBmb3IgdGhlICJjaHJvb3RtZSIg
bWVzc2FnZSBmcm9tIFdlYlByb2Nlc3MuCi0gICAgaWYgKCFwcmVwYXJlQW5kU3RhcnRDaGFuZ2VS
b290SGVscGVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIFdlIGRvbid0IG5l
ZWQgYW55IHNwZWNpYWwgcHJpdmlsZWdlcyBhbnltb3JlLgotICAgIGlmICghZHJvcFByaXZpbGVn
ZXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gU2FuaXR5IGNoZWNrOiBpZiBv
dXIgZWZmZWN0aXZlIG9yIHJlYWwgdWlkL2dpZCBpcyBzdGlsbCAwIChyb290KSBvcgotICAgIC8v
IHdlIGNhbiBzZXQgYW55IG9mIHRoZW0gdG8gMCwgdGhlbiB0aGUgZHJvcHBpbmcgb2YgcHJpdmls
ZWdlcyBpcyBmYWlsZWQuCi0gICAgLy8gV2UgZW5zdXJlIGhlcmUgdGhhdCB3ZSBjYW5ub3Qgc2V0
IHJvb3QgaWQgYWZ0ZXIgaGVyZS4KLSAgICBpZiAoIWdldGV1aWQoKSB8fCAhZ2V0ZWdpZCgpIHx8
ICFzZXR1aWQoMCkgfHwgIXNldGdpZCgwKSkgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkRy
b3BwaW5nIHByaXZpbGVnZXMgZmFpbGVkIVxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0KLSAgICAvLyBTdGFydCB0aGUgV2ViUHJvY2Vzcy4KLSAgICBpZiAoZXhlY2woYXJndlsx
XSwgYXJndlsxXSwgYXJndlsyXSwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oMCkpID09IC0xKSB7
Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ291bGRuJ3Qgc3RhcnQgV2ViUHJvY2VzczogJXNc
biIsIHN0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyICpjb25zdCBhcmd2W10p
Ci17Ci0gICAgcmV0dXJuIHJ1bihhcmdjLCBhcmd2KSA/IDAgOiAxOwotfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NhbmRib3hQcm9jZXNzL1NhbmRib3hFbnZpcm9u
bWVudExpbnV4LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGludXgvU2FuZGJveFByb2Nlc3Mv
U2FuZGJveEVudmlyb25tZW50TGludXguaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YzNhYWYxYmNmNWE4ZjU5MGMwNjQ4ODkxNWRmOTcyMmU4MzI0ZDFkZi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGlu
dXgvU2FuZGJveFByb2Nlc3MvU2FuZGJveEVudmlyb25tZW50TGludXguaAorKysgL2Rldi9udWxs
CkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBv
ZiBTemVnZWQKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZW5hdGEgSG9kb3ZhbiA8cmVuaUBpbmYu
dS1zemVnZWQuaHU+Ci0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0g
KgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFNhbmRib3hFbnZp
cm9ubWVudExpbnV4X2gKLSNkZWZpbmUgU2FuZGJveEVudmlyb25tZW50TGludXhfaAotCi0jZGVm
aW5lIFNBTkRCT1hfREVTQ1JJUFRPUiAiU0FOREJPWF9ERVNDUklQVE9SIgotI2RlZmluZSBTQU5E
Qk9YX0hFTFBFUl9QSUQgIlNBTkRCT1hfSEVMUEVSX1BJRCIKLQotI2RlZmluZSBNU0dfQ0hST09U
TUUgJ0MnCi0jZGVmaW5lIE1TR19DSFJPT1RFRCAnTycKLQotI2VuZGlmIC8vIFNhbmRib3hFbnZp
cm9ubWVudExpbnV4X2gKLQo=
</data>
<flag name="review"
          id="236935"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>