<?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>74725</bug_id>
          
          <creation_ts>2011-12-16 09:42:41 -0800</creation_ts>
          <short_desc>Implement block-scoped const</short_desc>
          <delta_ts>2015-11-30 11:00:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>31813</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>74509</dependson>
    
    <dependson>74718</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Andy Wingo">wingo</reporter>
          <assigned_to name="Andy Wingo">wingo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>emanuele.aina</cc>
    
    <cc>eric</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>m.goleb+bugzilla</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>522790</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-12-16 09:42:41 -0800</bug_when>
    <thetext>This is related to bug 31813, but isn&apos;t quite yet baked, as it doesn&apos;t do the temporal dead zone dance.  Also it is lacking a test suite, and relies on the flags and options from bug 74510.  But still, it&apos;s probably good to get early feedback on this approach.

Also I was getting a bit paranoid, having this patch only on my hard drive and not in the cloud-tubes :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522791</commentid>
    <comment_count>1</comment_count>
      <attachid>119625</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-12-16 09:46:13 -0800</bug_when>
    <thetext>Created attachment 119625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525464</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-21 12:25:50 -0800</bug_when>
    <thetext>I would strongly encourage you to engage with the various JSC folks on #webkit in order to get your set of JSC patches reviewed as quickly as possible. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525476</commentid>
    <comment_count>3</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-12-21 12:39:06 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; I would strongly encourage you to engage with the various JSC folks on #webkit in order to get your set of JSC patches reviewed as quickly as possible. :)

OOI discussion of the implementation is taking place on these bugs - recent feedback on the design has been provided on Bug#74718.  But yes - #webkit is the place to be. :o)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525485</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-21 12:45:29 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; I would strongly encourage you to engage with the various JSC folks on #webkit in order to get your set of JSC patches reviewed as quickly as possible. :)
&gt; 
&gt; OOI discussion of the implementation is taking place on these bugs - recent feedback on the design has been provided on Bug#74718.  But yes - #webkit is the place to be. :o)

Great!  The first couple bugs of wingo&apos;s I ran into had no CC&apos;s.  Seeing further bugs I see he&apos;s engaged you all in this process.  Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537982</commentid>
    <comment_count>5</comment_count>
      <attachid>122962</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-01-18 10:39:01 -0800</bug_when>
    <thetext>Created attachment 122962
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945605</commentid>
    <comment_count>6</comment_count>
      <attachid>122962</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-31 11:34:48 -0700</bug_when>
    <thetext>Comment on attachment 122962
Patch

This looks abandoned and in need of a massive rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144752</commentid>
    <comment_count>7</comment_count>
    <who name="Emanuele Aina">emanuele.aina</who>
    <bug_when>2015-11-30 07:00:40 -0800</bug_when>
    <thetext>Now that bug 31813 has been closed, is this bug (and bug 74509) still useful?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144831</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-11-30 10:59:25 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Now that bug 31813 has been closed, is this bug (and bug 74509) still useful?

Nope. This is already implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144834</commentid>
    <comment_count>9</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-11-30 11:00:28 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 31813 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119625</attachid>
            <date>2011-12-16 09:46:13 -0800</date>
            <delta_ts>2012-01-18 10:38:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74725-20111216184611.patch</filename>
            <type>text/plain</type>
            <size>26255</size>
            <attacher name="Andy Wingo">wingo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyOTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YjU2ZjEzYmJlMGMxMzJlZjkwOWYzNjk3NjI3M2FhYjUzYzYxOWJhLi41YzFlMDJhYzM4NDcwNGI0
ZmY0MTA1MWY5MDk4YTM3M2I2YTc3NDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw2NSBAQAogMjAxMS0xMi0xNiAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CiAK
KyAgICAgICAgSW1wbGVtZW50IGJsb2NrLXNjb3BlZCBjb25zdCBpbiBzdHJpY3QgbW9kZSAtLWhh
cm1vbnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0
NzI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBw
YXJzZXIvTm9kZXMuaCAoSlNDOjpDb25zdERlY2xOb2RlOjpoYXNCbG9ja1Njb3BlKTogQSBjb25z
dGRlY2wKKyAgICAgICAgaXMgYW4gaW5pdGlhbGl6ZXIgZm9yIGEgY29uc3QgdmFyaWFibGUuICBB
ZGQgYSBiaXQgdG8gaW5kaWNhdGUKKyAgICAgICAgdGhhdCB0aGUgZGVjbCBpcyBpbiBzdHJpY3Qg
bW9kZSwgd2hpY2ggd2lsbCByZXN1bHQgaW4gdGhlCisgICAgICAgIGluaXRpYWxpemF0aW9uIG9m
IGEgYmxvY2stc2NvcGVkIGJpbmRpbmcgaW5zdGVhZCBvZiBhbiBlcnJvci4KKyAgICAgICAgKEpT
Qzo6QmxvY2tTY29wZU5vZGUpOiBOZXcgbm9kZSwgZGVzY2VuZGluZyBmcm9tIFNjb3BlTm9kZS4K
KyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpDb25z
dERlY2xOb2RlOjpDb25zdERlY2xOb2RlKTogQWRkIHRoZSBpc0Jsb2NrU2NvcGUgYml0LgorICAg
ICAgICAoSlNDOjpCbG9ja1Njb3BlTm9kZTo6QmxvY2tTY29wZU5vZGUpOiBDb25zdHJ1Y3RvciBm
b3IgbmV3IG5vZGUuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6Cisg
ICAgICAgIChKU0M6OkNvbnN0RGVjbE5vZGU6OmVtaXRDb2RlU2luZ2xlKTogRm9yIGJsb2NrLXNj
b3BlZCBiaW5kaW5ncywKKyAgICAgICAgZG8gYW4gZW1pdEluaXRpYWxpemVCbG9ja1Njb3BlZExv
Y2FsLgorICAgICAgICAoSlNDOjpCbG9ja1Njb3BlTm9kZTo6ZW1pdEJ5dGVjb2RlKTogQ3JlYXRl
IGFuZCBwdXNoIGEgc2NvcGUKKyAgICAgICAgdGVtcGxhdGUuCisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpjcmVhdGVCbG9ja1Njb3BlKTogUmVuYW1lIGZy
b20KKyAgICAgICAgY3JlYXRlRXhjZXB0aW9uU2NvcGUuCisgICAgICAgIChKU0M6OkludGVycHJl
dGVyOjpwcml2YXRlRXhlY3V0ZSk6IEFkYXB0IHRvIHRoZSByZW5hbWUuCisgICAgICAgICogcGFy
c2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6Ojo6cGFyc2VJbm5lcik6IFN1cHBvcnQgdGhl
IGNvbGxlY3Rpb24gb2YgYmxvY2stc2NvcGVkCisgICAgICAgIGJpbmRpbmdzLCBieSBhdHRhY2hp
bmcgdGhlbSB0byB0aGUgY29udGV4dC4gIExlYXZpbmcgYSBibG9jayBzY29wZQorICAgICAgICBv
ciBsZWF2aW5nIHRoZSB0b3BsZXZlbCBzY29wZSAoYXMgaGVyZSwgaW4gcGFyc2VJbm5lcikgd2ls
bAorICAgICAgICBjb2xsZWN0IHRoZSBibG9jay1zY29wZWQgYmluZGluZ3MgaW50byBhIHNldC4K
KyAgICAgICAgKEpTQzo6OjpwYXJzZVZhckRlY2xhcmF0aW9uTGlzdCk6IENoZWNrIGZvciBjb25m
bGljdGluZworICAgICAgICBibG9jay1zY29wZWQgYmluZGluZ3MuCisgICAgICAgIChKU0M6Ojo6
cGFyc2VDb25zdERlY2xhcmF0aW9uTGlzdCk6IEluIHN0cmljdCBtb2RlLCB3aGVuIHRoZQorICAg
ICAgICBoYXJtb255IGZsYWcgaXMgb24sIHBhcnNlIGJsb2NrLXNjb3BlZCBiaW5kaW5ncywgd2l0
aAorICAgICAgICBpbml0aWFsaXplcnMuCisgICAgICAgIChKU0M6Ojo6cGFyc2VUcnlTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlQmxvY2tTdGF0ZW1lbnQpOgorICAgICAgICAoSlND
Ojo6OnBhcnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUZ1bmN0aW9uRGVj
bGFyYXRpb24pOiBNb3JlIGFkYXB0YXRpb25zIHRvIGRldGVjdAorICAgICAgICBpbmNvbXBhdGli
bGUgYmluZGluZ3MgKGkuZS4gInZhciBmb287IGNvbnN0IGZvbzsiKS4KKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpoYXNDb25mbGljdGluZ0RlY2xhcmF0
aW9uSW5CbG9jayk6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJhdGlvbkNvdW50KToKKyAg
ICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVWYXJpYWJsZSk6CisgICAgICAgIChKU0M6OlNjb3Bl
OjpkZWNsYXJlQmxvY2tTY29wZWRWYXJpYWJsZSk6CisgICAgICAgIChKU0M6OlNjb3BlOjpjb2xs
ZWN0QmxvY2tTY29wZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmhvaXN0TGV4
aWNhbHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmRlY2xhcmVWYXJpYWJsZSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjo6ZGVjbGFyZUJsb2NrU2NvcGVkVmFyaWFibGUpOiBBIGZldyBoZWxwZXJz
IHRvCisgICAgICAgIGNvbGxlY3QgYmxvY2stc2NvcGVkIHZhcmlhYmxlcywgYW5kIGRldGVjdCBj
b25mbGljdCB3aXRoCisgICAgICAgIGZ1bmN0aW9uLWhvaXN0ZWQgdmFyaWFibGVzLgorICAgICAg
ICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZUJsb2NrU2NvcGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphcHBlbmRDb25zdERlY2wp
OiBBZGQgY29uc3RydWN0b3JzIGZvciB0aGUgbmV3CisgICAgICAgIEJsb2NrU2NvcGUgbm9kZSwg
YW5kIHRoZSBpc0Jsb2NrU2NvcGUgYml0IG9uIGNvbnN0ZGVjbHMuCisgICAgICAgICogcGFyc2Vy
L1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQmxv
Y2tTY29wZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmFwcGVuZENvbnN0RGVjbCk6
IEFkZCBzdHVicyBmb3IgbmV3IEFTVAorICAgICAgICBub2Rlcy4KKworMjAxMS0xMi0xNiAgQW5k
eSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CisKICAgICAgICAgUmVtb3ZlIHRoZSBgdmFsdWUn
IGFyZ3VtZW50IHRvIG9wX3B1c2hfbmV3X3Njb3BlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDcxOAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggN2E2ZDkzNTE4YTIxOTRk
NjIyNDcyMjVjMWVhNzc0NmMwOGViZmI3Ni4uNDkzMGM5YWQ1NjhkNzM0ZTZmODI5MDk4YzQ1MmRm
Zjg0ODc4MjY5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMTI5NSw2ICsxMjk1LDE0IEBAIFJlZ2lzdGVySUQqIENv
bW1hTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzCiAKIFJlZ2lzdGVySUQqIENvbnN0RGVjbE5vZGU6OmVtaXRDb2RlU2luZ2xlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpCiB7CisjaWYgRU5BQkxFKEhBUk1PTlkpCisgICAg
aWYgKGhhc0Jsb2NrU2NvcGUoKSkgeworICAgICAgICBBU1NFUlQobV9pbml0KTsKKyAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1faW5pdCk7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0SW5pdGlhbGl6ZUJsb2NrU2NvcGVkTG9jYWwobV9pZGVudCwg
dmFsdWUuZ2V0KCkpOworICAgIH0KKyNlbmRpZgorCiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBk
b2VzIG5vdCBtYXRjaCB0aGUgYmVoYXZpb3Igb2YgY29uc3QgaW4gRmlyZWZveC4KICAgICBpZiAo
UmVnaXN0ZXJJRCogbG9jYWwgPSBnZW5lcmF0b3IuY29uc3RSZWdpc3RlckZvcihtX2lkZW50KSkg
ewogICAgICAgICBpZiAoIW1faW5pdCkKQEAgLTIwNjQsNiArMjA3MiwzMCBAQCBSZWdpc3RlcklE
KiBGdW5jdGlvbkJvZHlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZQogICAgIHJldHVybiAwOwogfQogCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gQmxvY2tTY29wZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworUmVnaXN0ZXJJRCogQmxvY2tTY29wZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKK3sKKyAgICAvLyBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOwor
ICAgIAorICAgIEpTU3RhdGljU2NvcGVPYmplY3QqIHNjb3BlVGVtcGxhdGUgPSBKU1N0YXRpY1Nj
b3BlT2JqZWN0OjpjcmVhdGUoZ2VuZXJhdG9yLnNjb3BlQ2hhaW4oKS0+Z2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCkpOworICAgIGNvbnN0IFZhclN0YWNrJiB2YXJzID0gdmFyU3RhY2soKTsKKyAg
ICBmb3IgKHNpemVfdCBuID0gMDsgbiA8IHZhcnMuc2l6ZSgpOyBuKyspIHsKKyAgICAgICAgLyog
RklYTUUgQVRUUklCVVRFUyAqLworICAgICAgICAvLyB2YXJzW25dLnNlY29uZCAmIERlY2xhcmF0
aW9uU3RhY2tzOjpJc0NvbnN0YW50CisgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSBEb250
RGVsZXRlOworICAgICAgICBpZiAodmFyc1tuXS5zZWNvbmQgJiBEZWNsYXJhdGlvblN0YWNrczo6
SXNDb25zdGFudCkKKyAgICAgICAgICAgIGF0dHJpYnV0ZXMgfD0gUmVhZE9ubHk7CisgICAgICAg
IHNjb3BlVGVtcGxhdGUtPmFkZFZhcmlhYmxlKCp2YXJzW25dLmZpcnN0LCBhdHRyaWJ1dGVzKTsK
KyAgICB9CisgICAgCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOworICAgIGdlbmVyYXRvci5lbWl0UHVzaEJsb2NrU2NvcGUoc2NvcGUuZ2V0
KCksIHNjb3BlVGVtcGxhdGUpOyAvLyBzY29wZSBtdXN0IGJlIHByb3RlY3RlZCB1bnRpbCBwb3Bw
ZWQKKyAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmlnbm9y
ZWRSZXN1bHQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRQb3BCbG9ja1Njb3BlKCk7CisgICAgcmV0
dXJuIDA7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jRGVjbE5v
ZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFJlZ2lzdGVySUQqIEZ1bmNE
ZWNsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCmluZGV4IDVhNzZiYTA4MTI2YjJmYTY1Mzk5MDY2NWQ1N2RjY2JlODc1NDM4
ZTEuLjBlMWRjYzdkZjFlOWNjZDFiZmE2YzViMDc2N2JiYWY5MzYzNDM1OTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMTQw
NSw3ICsxNDA1LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OmRlYnVnKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2sKIH0KICAgICAKICNpZiBFTkFC
TEUoSU5URVJQUkVURVIpCi1ORVZFUl9JTkxJTkUgU2NvcGVDaGFpbk5vZGUqIEludGVycHJldGVy
OjpjcmVhdGVFeGNlcHRpb25TY29wZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1
Y3Rpb24qIHZQQykKK05FVkVSX0lOTElORSBTY29wZUNoYWluTm9kZSogSW50ZXJwcmV0ZXI6OmNy
ZWF0ZUJsb2NrU2NvcGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiB2
UEMpCiB7CiAgICAgaW50IGRzdCA9IHZQQ1sxXS51Lm9wZXJhbmQ7CiAgICAgaW50IHRlbXBsID0g
dlBDWzJdLnUub3BlcmFuZDsKQEAgLTQ4NzQsNyArNDg3NCw3IEBAIHNraXBfaWRfY3VzdG9tX3Nl
bGY6CiAgICAgICAgICAgIHNjb3BlIG9iamVjdCBpcyB0aGVuIHB1c2hlZCBvbnRvIHRoZSBTY29w
ZUNoYWluLiBUaGUgc2NvcGUgb2JqZWN0IGlzCiAgICAgICAgICAgIHRoZW4gc3RvcmVkIGluIGRz
dCBmb3IgR0MuCiAgICAgICAgICAqLwotICAgICAgICBjYWxsRnJhbWUtPnNldFNjb3BlQ2hhaW4o
Y3JlYXRlRXhjZXB0aW9uU2NvcGUoY2FsbEZyYW1lLCB2UEMpKTsKKyAgICAgICAgY2FsbEZyYW1l
LT5zZXRTY29wZUNoYWluKGNyZWF0ZUJsb2NrU2NvcGUoY2FsbEZyYW1lLCB2UEMpKTsKIAogICAg
ICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9wdXNoX25ld19zY29wZSk7CiAgICAgICAgIE5F
WFRfSU5TVFJVQ1RJT04oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmgKaW5kZXggM2M5Y2JiZGVkODNkYzc2ODM4NDY1ZWMzMDk3ZGQwM2MzY2Nl
MzY3OS4uZjI3OTJjYjNmYjRjZTc2NzZjMzg0MTk0NjA5NWE1ZDBiMDc0YjMzYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTE1Myw3
ICsxNTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgcmVz
b2x2ZUJhc2UoQ2FsbEZyYW1lKiwgSW5zdHJ1Y3Rpb24qIHZQQyk7CiAgICAgICAgIE5FVkVSX0lO
TElORSBib29sIHJlc29sdmVCYXNlQW5kUHJvcGVydHkoQ2FsbEZyYW1lKiwgSW5zdHJ1Y3Rpb24q
LCBKU1ZhbHVlJiBleGNlcHRpb25WYWx1ZSk7CiAgICAgICAgIE5FVkVSX0lOTElORSBib29sIHJl
c29sdmVUaGlzQW5kUHJvcGVydHkoQ2FsbEZyYW1lKiwgSW5zdHJ1Y3Rpb24qLCBKU1ZhbHVlJiBl
eGNlcHRpb25WYWx1ZSk7Ci0gICAgICAgIE5FVkVSX0lOTElORSBTY29wZUNoYWluTm9kZSogY3Jl
YXRlRXhjZXB0aW9uU2NvcGUoQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIHZQQyk7Cisg
ICAgICAgIE5FVkVSX0lOTElORSBTY29wZUNoYWluTm9kZSogY3JlYXRlQmxvY2tTY29wZShDYWxs
RnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogdlBDKTsKIAogICAgICAgICB2b2lkIHRyeUNhY2hl
R2V0QnlJRChDYWxsRnJhbWUqLCBDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiosIEpTVmFsdWUgYmFz
ZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xv
dCYpOwogICAgICAgICB2b2lkIHVuY2FjaGVHZXRCeUlEKENvZGVCbG9jayosIEluc3RydWN0aW9u
KiB2UEMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWls
ZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCAy
ZTgxYzI1NDY2ZDlkMTY4MjVjYTI2NGFmNDMxYzQ3MjdiYjYxMDNkLi5kODNlMzQ3NDE5ODBmMzZh
NWE4Y2Y1NTU4ZjdlYjg3ZTc2YTM0YmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0FTVEJ1aWxkZXIuaApAQCAtOTksNiArOTksNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBFbGVt
ZW50Tm9kZSogRWxlbWVudExpc3Q7CiAgICAgdHlwZWRlZiBBcmd1bWVudExpc3ROb2RlKiBBcmd1
bWVudHNMaXN0OwogICAgIHR5cGVkZWYgUGFyYW1ldGVyTm9kZSogRm9ybWFsUGFyYW1ldGVyTGlz
dDsKKyAgICB0eXBlZGVmIEJsb2NrU2NvcGVOb2RlKiBCbG9ja1Njb3BlOwogICAgIHR5cGVkZWYg
RnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5OwogICAgIHR5cGVkZWYgU3RhdGVtZW50Tm9k
ZSogU3RhdGVtZW50OwogICAgIHR5cGVkZWYgQ2xhdXNlTGlzdE5vZGUqIENsYXVzZUxpc3Q7CkBA
IC0yNjcsNiArMjY4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uQm9keU5v
ZGU6OmNyZWF0ZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGluU3RyaWN0Q29udGV4dCk7CiAg
ICAgfQogICAgIAorICAgIEJsb2NrU2NvcGVOb2RlKiBjcmVhdGVCbG9ja1Njb3BlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIEpTQzo6U291cmNlRWxlbWVudHMqIGNo
aWxkcmVuLCBEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2sqIHZhclN0YWNrLCBJZGVudGlmaWVy
U2V0JiBjYXB0dXJlZFZhcmlhYmxlcykKKyAgICB7CisgICAgICAgIGluY0NvbnN0YW50cygpOwor
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJsb2NrU2NvcGVOb2RlKGxpbmVOdW1i
ZXIsIGNoaWxkcmVuLCB2YXJTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMpOworICAgIH0KKyAgICAK
ICAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclBy
b3BlcnR5KGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgY29uc3QgSWRl
bnRpZmllciogbmFtZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1zLCBGdW5jdGlvbkJvZHlOb2RlKiBi
b2R5LCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExp
bmUsIGludCBib2R5RW5kTGluZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChuYW1lKTsKQEAgLTQ3
OSw5ICs0ODYsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0g
ICAgQ29uc3REZWNsTm9kZSogYXBwZW5kQ29uc3REZWNsKGludCBsaW5lTnVtYmVyLCBDb25zdERl
Y2xOb2RlKiB0YWlsLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBFeHByZXNzaW9uTm9kZSogaW5p
dGlhbGl6ZXIpCisgICAgQ29uc3REZWNsTm9kZSogYXBwZW5kQ29uc3REZWNsKGludCBsaW5lTnVt
YmVyLCBDb25zdERlY2xOb2RlKiB0YWlsLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBFeHByZXNz
aW9uTm9kZSogaW5pdGlhbGl6ZXIsIGJvb2wgaGFzQmxvY2tTY29wZSkKICAgICB7Ci0gICAgICAg
IENvbnN0RGVjbE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb25zdERlY2xOb2Rl
KGxpbmVOdW1iZXIsICpuYW1lLCBpbml0aWFsaXplcik7CisgICAgICAgIENvbnN0RGVjbE5vZGUq
IHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb25zdERlY2xOb2RlKGxpbmVOdW1iZXIsICpu
YW1lLCBpbml0aWFsaXplciwgaGFzQmxvY2tTY29wZSk7CiAgICAgICAgIGlmICh0YWlsKQogICAg
ICAgICAgICAgdGFpbC0+bV9uZXh0ID0gcmVzdWx0OwogICAgICAgICByZXR1cm4gcmVzdWx0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3Jz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRl
eCAwYjAyOWIyZmZhODk3MmVmNTljMjRhODkzMDY1NTVmM2UwYjE0MTcyLi4zMmUzNmRlYzg5YTkz
ODQ3ZjEyYTJiNmQyZjhhNzJjMjZiYThiZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtODUxLDkgKzg1MSwxMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIENvbnN0RGVjbE5vZGU6OkNvbnN0
RGVjbE5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNz
aW9uTm9kZSogaW5pdCkKKyAgICBpbmxpbmUgQ29uc3REZWNsTm9kZTo6Q29uc3REZWNsTm9kZShp
bnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiBp
bml0LCBib29sIGhhc0Jsb2NrU2NvcGVfKQogICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVO
dW1iZXIpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKKyNpZiBFTkFCTEUoSEFSTU9OWSkKKyAg
ICAgICAgLCBtX2hhc0Jsb2NrU2NvcGUoaGFzQmxvY2tTY29wZV8pCisjZW5kaWYKICAgICAgICAg
LCBtX25leHQoMCkKICAgICAgICAgLCBtX2luaXQoaW5pdCkKICAgICB7CkBAIC04NzYsNiArODc5
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKKyAgICBpbmxpbmUgQmxvY2tT
Y29wZU5vZGU6OkJsb2NrU2NvcGVOb2RlKGludCBsaW5lTnVtYmVyLCBTb3VyY2VFbGVtZW50cyog
Y2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJp
YWJsZXMpCisgICAgICAgIDogU2NvcGVOb2RlKGxpbmVOdW1iZXIsIGNoaWxkcmVuLCB2YXJTdGFj
aywgMCwgY2FwdHVyZWRWYXJpYWJsZXMpCisgICAgeworICAgIH0KKwogICAgIGlubGluZSBGb3JJ
bk5vZGU6OkZvckluTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogbCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUq
IHN0YXRlbWVudCkKICAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCiAgICAgICAg
ICwgbV9pZGVudChnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAyMWI1ODIzNmZlYWFkZDE0MmNjMDdm
ZTFmZTEyMWU1YTNkMTc3NzdhLi5lZjJhNDMwNmMzMmE4NTgxYTExMzIyNDY5N2E4YzQ3ZjMzM2M5
MGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC04OCw3ICs4OCwxMyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFN0cmluZ0ltcGw+
LCBJZGVudGlmaWVyUmVwSGFzaD4gSWRlbnRpZmllclNldDsKIAogICAgIG5hbWVzcGFjZSBEZWNs
YXJhdGlvblN0YWNrcyB7Ci0gICAgICAgIGVudW0gVmFyQXR0cnMgeyBJc0NvbnN0YW50ID0gMSwg
SGFzSW5pdGlhbGl6ZXIgPSAyIH07CisgICAgICAgIGVudW0gVmFyQXR0cnMgeworICAgICAgICAg
ICAgSXNDb25zdGFudCA9IDEsCisgICAgICAgICAgICBIYXNJbml0aWFsaXplciA9IDIsCisjaWYg
RU5BQkxFKEhBUk1PTlkpCisgICAgICAgICAgICBJc0Jsb2NrU2NvcGVkID0gNAorI2VuZGlmCisg
ICAgICAgIH07CiAgICAgICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6cGFpcjxjb25zdCBJZGVudGlm
aWVyKiwgdW5zaWduZWQ+ID4gVmFyU3RhY2s7CiAgICAgICAgIHR5cGVkZWYgVmVjdG9yPEZ1bmN0
aW9uQm9keU5vZGUqPiBGdW5jdGlvblN0YWNrOwogICAgIH0KQEAgLTExMDMsMTYgKzExMDksMjIg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3MgQ29uc3REZWNsTm9kZSA6IHB1Ymxp
YyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBDb25zdERlY2xOb2RlKGlu
dCwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIENvbnN0RGVj
bE5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBib29sKTsKIAog
ICAgICAgICBib29sIGhhc0luaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gbV9pbml0OyB9CiAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50KCkgeyByZXR1cm4gbV9pZGVudDsgfQorI2lm
IEVOQUJMRShIQVJNT05ZKQorICAgICAgICBib29sIGhhc0Jsb2NrU2NvcGUoKSBjb25zdCB7IHJl
dHVybiBtX2hhc0Jsb2NrU2NvcGU7IH0KKyNlbmRpZgogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApOwogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlU2luZ2xl
KEJ5dGVjb2RlR2VuZXJhdG9yJik7CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVu
dDsKKyNpZiBFTkFCTEUoSEFSTU9OWSkKKyAgICAgICAgYm9vbCBtX2hhc0Jsb2NrU2NvcGU7Cisj
ZW5kaWYKIAogICAgIHB1YmxpYzoKICAgICAgICAgQ29uc3REZWNsTm9kZSogbV9uZXh0OwpAQCAt
MTQxMyw2ICsxNDI1LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPd25QdHI8U2NvcGVO
b2RlRGF0YT4gbV9kYXRhOwogICAgIH07CiAKKyAgICBjbGFzcyBCbG9ja1Njb3BlTm9kZSA6IHB1
YmxpYyBTY29wZU5vZGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgQmxvY2tTY29wZU5vZGUoaW50
LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgSWRlbnRpZmllclNldCYpOworCisgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKTsKKyAgICB9OworCiAgICAgY2xhc3MgQ29kZU5vZGUgOiBwdWJsaWMgU2Nv
cGVOb2RlLCBwdWJsaWMgUGFyc2VyQXJlbmFSZWZDb3VudGVkIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIENvZGVOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgYm9vbCBpblN0cmljdENvbnRleHQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDdmYjI4NWE2YmM1ZGY3
OTMzNmM2ZGVjM2UzYTdiNTYxMTZjZGNmMWEuLjdhMDQxZDg2ZTY2ZjExNWVjOGExNWU3ZTNjZTI4
NTQxODliNGE2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAg
LTk1LDYgKzk1LDExIEBAIFVTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoKQog
ICAgIGlmICghc291cmNlRWxlbWVudHMgfHwgIWNvbnN1bWUoRU9GVE9LKSkKICAgICAgICAgcGFy
c2VFcnJvciA9IG1fZXJyb3JNZXNzYWdlOwogCisjaWYgRU5BQkxFKEhBUk1PTlkpCisgICAgaWYg
KGNvbnRleHQudmFyRGVjbGFyYXRpb25zKCkpCisgICAgICAgIHNjb3BlLT5jb2xsZWN0QmxvY2tT
Y29wZWRWYXJpYWJsZXMoY29udGV4dC52YXJEZWNsYXJhdGlvbnMoKS0+ZGF0YSk7CisjZW5kaWYK
KwogICAgIElkZW50aWZpZXJTZXQgY2FwdHVyZWRWYXJpYWJsZXM7CiAgICAgc2NvcGUtPmdldENh
cHR1cmVkVmFyaWFibGVzKGNhcHR1cmVkVmFyaWFibGVzKTsKICAgICBDb2RlRmVhdHVyZXMgZmVh
dHVyZXMgPSBjb250ZXh0LmZlYXR1cmVzKCk7CkBAIC0yNTUsNyArMjYwLDggQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VWYXJEZWNsYXJhdGkKICAgICAgICAgbGFzdElkZW50ID0gbmFtZTsKICAgICAgICAgbmV4dCgp
OwogICAgICAgICBib29sIGhhc0luaXRpYWxpemVyID0gbWF0Y2goRVFVQUwpOwotICAgICAgICBm
YWlsSWZGYWxzZUlmU3RyaWN0V2l0aE5hbWVBbmRNZXNzYWdlKGRlY2xhcmVWYXJpYWJsZShuYW1l
KSwgIkNhbm5vdCBkZWNsYXJlIGEgdmFyaWFibGUgbmFtZWQiLCBuYW1lLT5pbXBsKCksICJpbiBz
dHJpY3QgbW9kZS4iKTsKKyAgICAgICAgaWYgKCFkZWNsYXJlVmFyaWFibGUobmFtZSkpCisgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgY29udGV4dC5hZGRWYXIobmFtZSwgKGhhc0luaXRp
YWxpemVyIHx8ICghbV9hbGxvd3NJbiAmJiBtYXRjaChJTlRPS0VOKSkpID8gRGVjbGFyYXRpb25T
dGFja3M6Okhhc0luaXRpYWxpemVyIDogMCk7CiAgICAgICAgIGlmIChoYXNJbml0aWFsaXplcikg
ewogICAgICAgICAgICAgaW50IHZhckRpdm90ID0gdG9rZW5TdGFydCgpICsgMTsKQEAgLTI4MCw3
ICsyODYsMTEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJEZWNsYXJhdGkKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDb25zdERlY2xMaXN0
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbnN0RGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVy
JiBjb250ZXh0KQogeworI2lmIEVOQUJMRShIQVJNT05ZKQorICAgIGZhaWxJZkZhbHNlSWZTdHJp
Y3QoT3B0aW9uczo6aGFybW9ueUJsb2NrU2NvcGluZyk7CisjZWxzZQogICAgIGZhaWxJZlRydWUo
c3RyaWN0TW9kZSgpKTsKKyNlbmRpZgogICAgIFRyZWVDb25zdERlY2xMaXN0IGNvbnN0RGVjbHMg
PSAwOwogICAgIFRyZWVDb25zdERlY2xMaXN0IHRhaWwgPSAwOwogICAgIGRvIHsKQEAgLTI4OSwx
NCArMjk5LDI5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNvbnN0RGVjbExp
c3QgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ29uc3REZWNsCiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXIqIG5hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgbmV4dCgpOwogICAg
ICAgICBib29sIGhhc0luaXRpYWxpemVyID0gbWF0Y2goRVFVQUwpOwotICAgICAgICBkZWNsYXJl
VmFyaWFibGUobmFtZSk7Ci0gICAgICAgIGNvbnRleHQuYWRkVmFyKG5hbWUsIERlY2xhcmF0aW9u
U3RhY2tzOjpJc0NvbnN0YW50IHwgKGhhc0luaXRpYWxpemVyID8gRGVjbGFyYXRpb25TdGFja3M6
Okhhc0luaXRpYWxpemVyIDogMCkpOworICAgICAgICBpbnQgYXR0cnMgPSBEZWNsYXJhdGlvblN0
YWNrczo6SXNDb25zdGFudCB8IChoYXNJbml0aWFsaXplciA/IERlY2xhcmF0aW9uU3RhY2tzOjpI
YXNJbml0aWFsaXplciA6IDApOworI2lmIEVOQUJMRShIQVJNT05ZKQorICAgICAgICBpZiAoc3Ry
aWN0TW9kZSgpKSB7CisgICAgICAgICAgICBmYWlsSWZGYWxzZVdpdGhOYW1lQW5kTWVzc2FnZSho
YXNJbml0aWFsaXplciwgIk1pc3NpbmcgaW5pdGlhbGl6ZXIgZm9yIGNvbnN0IiwgbmFtZS0+aW1w
bCgpLCAiaW4gc3RyaWN0IG1vZGUuIik7CisgICAgICAgICAgICBhdHRycyB8PSBEZWNsYXJhdGlv
blN0YWNrczo6SXNCbG9ja1Njb3BlZDsKKyAgICAgICAgICAgIGlmICghZGVjbGFyZUJsb2NrU2Nv
cGVkVmFyaWFibGUobmFtZSwgYXR0cnMpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICAgICAgLy8gV2Ugd2lsbCBjb250ZXh0LmFkZFZhcigpIGFmdGVyIHBhcnNpbmcgdGhlIGZ1
bmN0aW9uLgorICAgICAgICB9IGVsc2UgeworI2VuZGlmCisgICAgICAgICAgICBpZiAoIWRlY2xh
cmVWYXJpYWJsZShuYW1lKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAg
IGNvbnRleHQuYWRkVmFyKG5hbWUsIGF0dHJzKTsKKyNpZiBFTkFCTEUoSEFSTU9OWSkKKyAgICAg
ICAgfQorI2VuZGlmCisKICAgICAgICAgVHJlZUV4cHJlc3Npb24gaW5pdGlhbGl6ZXIgPSAwOwog
ICAgICAgICBpZiAoaGFzSW5pdGlhbGl6ZXIpIHsKICAgICAgICAgICAgIG5leHQoVHJlZUJ1aWxk
ZXI6OkRvbnRCdWlsZFN0cmluZ3MpOyAvLyBjb25zdW1lICc9JwogICAgICAgICAgICAgaW5pdGlh
bGl6ZXIgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICB9Ci0g
ICAgICAgIHRhaWwgPSBjb250ZXh0LmFwcGVuZENvbnN0RGVjbChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCB0YWlsLCBuYW1lLCBpbml0aWFsaXplcik7CisgICAgICAgIHRhaWwgPSBjb250ZXh0
LmFwcGVuZENvbnN0RGVjbChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0YWlsLCBuYW1lLCBp
bml0aWFsaXplciwgc3RyaWN0TW9kZSgpKTsKICAgICAgICAgaWYgKCFjb25zdERlY2xzKQogICAg
ICAgICAgICAgY29uc3REZWNscyA9IHRhaWw7CiAgICAgfSB3aGlsZSAobWF0Y2goQ09NTUEpKTsK
QEAgLTYyMyw3ICs2NDgsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0
ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVHJ5U3RhdGVtZW50KAogICAgICAgICBpZGVu
dCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIEF1dG9Q
b3BTY29wZVJlZiBjYXRjaFNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKLSAgICAgICAgZmFpbElm
RmFsc2VJZlN0cmljdFdpdGhOYW1lQW5kTWVzc2FnZShkZWNsYXJlVmFyaWFibGUoaWRlbnQpLCAi
Q2Fubm90IGRlY2xhcmUgYSB2YXJpYWJsZSBuYW1lZCIsIGlkZW50LT5pbXBsKCksICJpbiBzdHJp
Y3QgbW9kZSIpOworICAgICAgICBpZiAoIWRlY2xhcmVWYXJpYWJsZShpZGVudCkpCisgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgY2F0Y2hTY29wZS0+cHJldmVudE5ld0RlY2xzKCk7CiAg
ICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7CiAgICAgICAgIG1hdGNoT3JGYWlsKE9Q
RU5CUkFDRSk7CkBAIC02NjcsMTAgKzY5MywzMyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQmxvY2tTdGF0ZW1lbgog
ICAgICAgICBuZXh0KCk7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJsb2NrU3RhdGVt
ZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIDAsIHN0YXJ0LCBtX2xhc3RMaW5lKTsKICAg
ICB9Ci0gICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN1YnRyZWUgPSBwYXJzZVNvdXJjZUVsZW1lbnRz
PERvbnRDaGVja0ZvclN0cmljdE1vZGU+KGNvbnRleHQpOwotICAgIGZhaWxJZkZhbHNlKHN1YnRy
ZWUpOwotICAgIG1hdGNoT3JGYWlsKENMT1NFQlJBQ0UpOwotICAgIG5leHQoKTsKKworICAgIFRy
ZWVTb3VyY2VFbGVtZW50cyBzdWJ0cmVlID0gMDsKKyNpZiBFTkFCTEUoSEFSTU9OWSkKKyAgICBp
ZiAoc3RyaWN0TW9kZSgpICYmIE9wdGlvbnM6Omhhcm1vbnlCbG9ja1Njb3BpbmcpIHsKKyAgICAg
ICAgQXV0b1BvcFNjb3BlUmVmIGJsb2NrU2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOworICAgICAg
ICBzdWJ0cmVlID0gcGFyc2VTb3VyY2VFbGVtZW50czxEb250Q2hlY2tGb3JTdHJpY3RNb2RlPihj
b250ZXh0KTsKKyAgICAgICAgZmFpbElmRmFsc2Uoc3VidHJlZSk7CisgICAgICAgIG1hdGNoT3JG
YWlsKENMT1NFQlJBQ0UpOworICAgICAgICBuZXh0KCk7CisgICAgICAgIGlmICghaG9pc3RMZXhp
Y2FscyhUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKSkgeworICAgICAgICAgICAg
RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrIHZhclN0YWNrOworICAgICAgICAgICAgSWRlbnRp
ZmllclNldCBjYXB0dXJlZFZhcmlhYmxlczsKKyAgICAgICAgICAgIGlmIChUcmVlQnVpbGRlcjo6
Q3JlYXRlc0FTVCkKKyAgICAgICAgICAgICAgICBjdXJyZW50U2NvcGUoKS0+Y29sbGVjdEJsb2Nr
U2NvcGVkVmFyaWFibGVzKHZhclN0YWNrKTsKKyAgICAgICAgICAgIGlmIChUcmVlQnVpbGRlcjo6
TmVlZHNGcmVlVmFyaWFibGVJbmZvKQorICAgICAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT5n
ZXRDYXB0dXJlZFZhcmlhYmxlcyhjYXB0dXJlZFZhcmlhYmxlcyk7CisgICAgICAgICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVCbG9ja1Njb3BlKGNvbnN0X2Nhc3Q8SlNHbG9iYWxEYXRhKj4obV9n
bG9iYWxEYXRhKSwgbV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3VidHJlZSwgJnZhclN0YWNr
LCBjYXB0dXJlZFZhcmlhYmxlcyk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKworICAgIGlm
ICghc3VidHJlZSkgeworICAgICAgICBzdWJ0cmVlID0gcGFyc2VTb3VyY2VFbGVtZW50czxEb250
Q2hlY2tGb3JTdHJpY3RNb2RlPihjb250ZXh0KTsKKyAgICAgICAgZmFpbElmRmFsc2Uoc3VidHJl
ZSk7CisgICAgICAgIG1hdGNoT3JGYWlsKENMT1NFQlJBQ0UpOworICAgICAgICBuZXh0KCk7Cisg
ICAgfQogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJsb2NrU3RhdGVtZW50KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIHN1YnRyZWUsIHN0YXJ0LCBtX2xhc3RMaW5lKTsKIH0KIApAQCAtNzgw
LDggKzgyOSw4IEBAIHRlbXBsYXRlIDxGdW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMs
IGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIGNsYXNzCiAgICAgICAgIG5hbWUgPSBtX3Rv
a2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgZmFpbElmVHJ1ZVdpdGhNZXNzYWdlKCpuYW1lID09
IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvLCAiQ2Fubm90IG5h
bWUgYSBmdW5jdGlvbiBfX3Byb3RvX18iKTsKICAgICAgICAgbmV4dCgpOwotICAgICAgICBpZiAo
IW5hbWVJc0luQ29udGFpbmluZ1Njb3BlKQotICAgICAgICAgICAgZmFpbElmRmFsc2VJZlN0cmlj
dChmdW5jdGlvblNjb3BlLT5kZWNsYXJlVmFyaWFibGUobmFtZSkpOworICAgICAgICBpZiAoIW5h
bWVJc0luQ29udGFpbmluZ1Njb3BlICYmICFkZWNsYXJlVmFyaWFibGUgKG5hbWUpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0gZWxzZSBpZiAocmVxdWlyZW1lbnRzID09IEZ1bmN0
aW9uTmVlZHNOYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY29uc3VtZU9yRmFpbChP
UEVOUEFSRU4pOwpAQCAtODU4LDcgKzkwNyw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xhCiAg
ICAgaW50IGJvZHlTdGFydExpbmUgPSAwOwogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9u
SW5mbzxGdW5jdGlvbk5lZWRzTmFtZSwgdHJ1ZT4oY29udGV4dCwgbmFtZSwgcGFyYW1ldGVycywg
Ym9keSwgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSkpOwogICAg
IGZhaWxJZkZhbHNlKG5hbWUpOwotICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoZGVjbGFyZVZhcmlh
YmxlKG5hbWUpKTsKKyAgICBpZiAoIWRlY2xhcmVWYXJpYWJsZShuYW1lKSkKKyAgICAgICAgcmV0
dXJuIDA7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgbmFtZSwgYm9keSwgcGFyYW1ldGVycywgb3BlbkJyYWNlUG9z
LCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYTJjOTcxOWQwZDVkYWI3NzJhNWFmMWZk
ZjE1MWU1ZmVmNTU3NzgwMC4uNWUxNWZkYTIyYjliNjE3YzdmOWNmZjFkMmEyNWU3NzA0MDBlODg4
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yMDAsMTQgKzIwMCwz
NyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIGJvb2wgaXNGdW5jdGlvbigpIHsgcmV0dXJuIG1faXNG
dW5jdGlvbjsgfQogICAgIGJvb2wgaXNGdW5jdGlvbkJvdW5kYXJ5KCkgeyByZXR1cm4gbV9pc0Z1
bmN0aW9uQm91bmRhcnk7IH0KIAotICAgIGJvb2wgZGVjbGFyZVZhcmlhYmxlKGNvbnN0IElkZW50
aWZpZXIqIGlkZW50KQorICAgIGJvb2wgaGFzQ29uZmxpY3RpbmdEZWNsYXJhdGlvbkluQmxvY2so
Y29uc3QgSWRlbnRpZmllciAqaWRlbnQsIGJvb2wgaGFzQmxvY2tTY29wZSkKKyAgICB7CisjaWYg
RU5BQkxFKEhBUk1PTlkpCisgICAgICAgIGlmICghbV9kZWNsYXJlZFZhcmlhYmxlcy5jb250YWlu
cyhpZGVudC0+dXN0cmluZygpLmltcGwoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGlmIChoYXNCbG9ja1Njb3BlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ibG9ja1Njb3BlZFZhcmlhYmxlcy5zaXplKCk7
ICsraSkKKyAgICAgICAgICAgIGlmIChtX2Jsb2NrU2NvcGVkVmFyaWFibGVzW2ldLmZpcnN0ID09
IGlkZW50KQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFs
c2U7CisjZWxzZQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICB9CisKKyAgICBz
aXplX3QgZGVjbGFyYXRpb25Db3VudCgpIHsgcmV0dXJuIG1fZGVjbGFyZWRWYXJpYWJsZXMuc2l6
ZSgpOyB9CisKKyAgICB2b2lkIGRlY2xhcmVWYXJpYWJsZShjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCkKICAgICB7Ci0gICAgICAgIGJvb2wgaXNWYWxpZFN0cmljdE1vZGUgPSBtX2dsb2JhbERhdGEt
PnByb3BlcnR5TmFtZXMtPmV2YWwgIT0gKmlkZW50ICYmIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlO
YW1lcy0+YXJndW1lbnRzICE9ICppZGVudDsKLSAgICAgICAgbV9pc1ZhbGlkU3RyaWN0TW9kZSA9
IG1faXNWYWxpZFN0cmljdE1vZGUgJiYgaXNWYWxpZFN0cmljdE1vZGU7CiAgICAgICAgIG1fZGVj
bGFyZWRWYXJpYWJsZXMuYWRkKGlkZW50LT51c3RyaW5nKCkuaW1wbCgpKTsKLSAgICAgICAgcmV0
dXJuIGlzVmFsaWRTdHJpY3RNb2RlOwogICAgIH0KIAorI2lmIEVOQUJMRShIQVJNT05ZKQorICAg
IHZvaWQgZGVjbGFyZUJsb2NrU2NvcGVkVmFyaWFibGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQs
IHVuc2lnbmVkIGF0dHJzKQorICAgIHsKKyAgICAgICAgZGVjbGFyZVZhcmlhYmxlKGlkZW50KTsK
KyAgICAgICAgbV9ibG9ja1Njb3BlZFZhcmlhYmxlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaWRl
bnQsIGF0dHJzKSk7CisgICAgfQorI2VuZGlmCisKICAgICB2b2lkIGRlY2xhcmVXcml0ZShjb25z
dCBJZGVudGlmaWVyKiBpZGVudCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3N0cmljdE1vZGUp
OwpAQCAtMjk2LDYgKzMxOSwxNSBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICB2ZWN0b3Iuc2hy
aW5rVG9GaXQoKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoSEFSTU9OWSkKKyAgICB2b2lkIGNvbGxl
Y3RCbG9ja1Njb3BlZFZhcmlhYmxlcyhEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2smIHZhclN0
YWNrKQorICAgIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Jsb2NrU2NvcGVk
VmFyaWFibGVzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgdmFyU3RhY2suYXBwZW5kKG1fYmxv
Y2tTY29wZWRWYXJpYWJsZXNbaV0pOworICAgICAgICBtX2Jsb2NrU2NvcGVkVmFyaWFibGVzLmNs
ZWFyKCk7CisgICAgfQorI2VuZGlmCisKICAgICB2b2lkIHNhdmVGdW5jdGlvbkluZm8oU291cmNl
UHJvdmlkZXJDYWNoZUl0ZW0qIGluZm8pCiAgICAgewogICAgICAgICBBU1NFUlQobV9pc0Z1bmN0
aW9uKTsKQEAgLTMzOSw2ICszNzEsOSBAQCBwcml2YXRlOgogICAgIElkZW50aWZpZXJTZXQgbV91
c2VkVmFyaWFibGVzOwogICAgIElkZW50aWZpZXJTZXQgbV9jbG9zZWRWYXJpYWJsZXM7CiAgICAg
SWRlbnRpZmllclNldCBtX3dyaXR0ZW5WYXJpYWJsZXM7CisjaWYgRU5BQkxFKEhBUk1PTlkpCisg
ICAgRGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrIG1fYmxvY2tTY29wZWRWYXJpYWJsZXM7Cisj
ZW5kaWYKIH07CiAKIHR5cGVkZWYgVmVjdG9yPFNjb3BlLCAxMD4gU2NvcGVTdGFjazsKQEAgLTQ1
NSwxNyArNDkwLDQ3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBwb3BTY29wZUludGVybmFs
KHNjb3BlLCBzaG91bGRUcmFja0Nsb3NlZFZhcmlhYmxlcyk7CiAgICAgfQogICAgIAorI2lmIEVO
QUJMRShIQVJNT05ZKQorICAgIGJvb2wgaG9pc3RMZXhpY2Fscyhib29sIHNob3VsZFRyYWNrQ2xv
c2VkVmFyaWFibGVzKQorICAgIHsKKyAgICAgICAgLy8gQXZvaWQgY3JlYXRpbmcgYSBuZXN0ZWQg
c2NvcGUgaWYgdGhlcmUgYXJlIG5vIGNsb3NlZC1vdmVyIGxleGljYWxzLgorICAgICAgICBBU1NF
UlQobV9zY29wZVN0YWNrLnNpemUoKSA+PSAyKTsKKyAgICAgICAgU2NvcGVSZWYgY3VycmVudCA9
IGN1cnJlbnRTY29wZSgpOworICAgICAgICByZXR1cm4gIWN1cnJlbnQtPmRlY2xhcmF0aW9uQ291
bnQoKTsKKyAgICB9CisjZW5kaWYKKyAgICAKICAgICBib29sIGRlY2xhcmVWYXJpYWJsZShjb25z
dCBJZGVudGlmaWVyKiBpZGVudCkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGkgPSBtX3Njb3Bl
U3RhY2suc2l6ZSgpIC0gMTsKKyAgICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0V2l0aE5hbWVBbmRN
ZXNzYWdlKG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqaWRlbnQKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IG1fZ2xvYmFsRGF0YS0+
cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICppZGVudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgZGVjbGFyZSBhIHZhcmlhYmxlIG5hbWVk
ICIsIGlkZW50LT5pbXBsKCksICIgaW4gc3RyaWN0IG1vZGUuIik7CisgICAgICAgIHVuc2lnbmVk
IGkgPSBtX3Njb3BlU3RhY2suc2l6ZSgpOworICAgICAgICBBU1NFUlQoaSk7CisgICAgICAgIGRv
IHsKKyAgICAgICAgICAgIC8vIENoZWNrIGZvciBkdXBsaWNhdGUgYmxvY2stc2NvcGVkIGJpbmRp
bmdzLCBob2lzdGluZyBgdmFyJworICAgICAgICAgICAgLy8gZGVjbGFyYXRpb25zIHRvIHRoZSBu
ZWFyZXN0IGZ1bmN0aW9uIG9yIHRvIHRoZSB0b3AgbGV2ZWwuCisgICAgICAgICAgICBmYWlsSWZU
cnVlV2l0aE5hbWVBbmRNZXNzYWdlKG1fc2NvcGVTdGFja1stLWldLmhhc0NvbmZsaWN0aW5nRGVj
bGFyYXRpb25JbkJsb2NrKGlkZW50LCBmYWxzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJEdXBsaWNhdGUgYmluZGluZyBmb3IgYmxvY2stc2NvcGVkIHZhcmlh
YmxlICIsIGlkZW50LT5pbXBsKCksICIuIik7CisgICAgICAgIH0gd2hpbGUgKGkgJiYgIW1fc2Nv
cGVTdGFja1tpXS5pc0Z1bmN0aW9uQm91bmRhcnkoKSk7CiAgICAgICAgIEFTU0VSVChpIDwgbV9z
Y29wZVN0YWNrLnNpemUoKSk7Ci0gICAgICAgIHdoaWxlICghbV9zY29wZVN0YWNrW2ldLmFsbG93
c05ld0RlY2xzKCkpIHsKLSAgICAgICAgICAgIGktLTsKLSAgICAgICAgICAgIEFTU0VSVChpIDwg
bV9zY29wZVN0YWNrLnNpemUoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fc2NvcGVT
dGFja1tpXS5kZWNsYXJlVmFyaWFibGUoaWRlbnQpOworICAgICAgICBtX3Njb3BlU3RhY2tbaV0u
ZGVjbGFyZVZhcmlhYmxlKGlkZW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
IAorI2lmIEVOQUJMRShIQVJNT05ZKQorICAgIGJvb2wgZGVjbGFyZUJsb2NrU2NvcGVkVmFyaWFi
bGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQsIHVuc2lnbmVkIGF0dHJzKQorICAgIHsKKyAgICAg
ICAgZmFpbElmVHJ1ZVdpdGhOYW1lQW5kTWVzc2FnZShtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFt
ZXMtPmV2YWwgPT0gKmlkZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fHwgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0gKmlkZW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgZGVjbGFyZSBhIHZhcmlh
YmxlIG5hbWVkICIsIGlkZW50LT5pbXBsKCksICIgaW4gc3RyaWN0IG1vZGUuIik7CisgICAgICAg
IGZhaWxJZlRydWVXaXRoTmFtZUFuZE1lc3NhZ2UoY3VycmVudFNjb3BlKCktPmhhc0NvbmZsaWN0
aW5nRGVjbGFyYXRpb25JbkJsb2NrKGlkZW50LCB0cnVlKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiRHVwbGljYXRlIGJpbmRpbmcgZm9yIGJsb2NrLXNjb3BlZCB2YXJp
YWJsZSAiLCBpZGVudC0+aW1wbCgpLCAiLiIpOworICAgICAgICBjdXJyZW50U2NvcGUoKS0+ZGVj
bGFyZUJsb2NrU2NvcGVkVmFyaWFibGUoaWRlbnQsIGF0dHJzKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorI2VuZGlmCisgICAgCiAgICAgdm9pZCBkZWNsYXJlV3JpdGUoY29uc3QgSWRl
bnRpZmllciogaWRlbnQpCiAgICAgewogICAgICAgICBpZiAoIW1fc3ludGF4QWxyZWFkeVZhbGlk
YXRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hl
Y2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5k
ZXggMjcwYzgyMzg1M2M5YjEzOTc1ZmNhOTgyYTljMDVhNTBmZGNiMGY4Ny4uZWI4NDhjOTFhYmJh
N2M0MmY1MGUwN2MzNTViNmZlM2Q5N2I1YTVhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTEwNiw2ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAg
dHlwZWRlZiBpbnQgQXJndW1lbnRzTGlzdDsKICAgICB0eXBlZGVmIGludCBGb3JtYWxQYXJhbWV0
ZXJMaXN0OwogICAgIHR5cGVkZWYgaW50IEZ1bmN0aW9uQm9keTsKKyAgICB0eXBlZGVmIGludCBC
bG9ja1Njb3BlOwogICAgIHR5cGVkZWYgaW50IFN0YXRlbWVudDsKICAgICB0eXBlZGVmIGludCBD
bGF1c2VMaXN0OwogICAgIHR5cGVkZWYgaW50IENsYXVzZTsKQEAgLTE1MSw2ICsxNTIsNyBAQCBw
dWJsaWM6CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXNzaWduUmVzb2x2ZShpbnQsIGNvbnN0
IElkZW50aWZpZXImLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gQXNzaWdubWVudEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4
cHIoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CiAgICAgaW50IGNyZWF0ZUZ1bmN0aW9uQm9keShpbnQs
IGJvb2wpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQmxvY2tTY29wZShKU0dsb2JhbERh
dGEqLCBpbnQsIFNvdXJjZUVsZW1lbnRzLCBEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2sgKiwg
SWRlbnRpZmllclNldCYpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlQXJndW1lbnRzKCkg
eyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoaW50KSB7IHJldHVybiAxOyB9
CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50c0xpc3QoaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KQEAg
LTIwMiw3ICsyMDQsNyBAQCBwdWJsaWM6CiAgICAgaW50IGNyZWF0ZVRocm93U3RhdGVtZW50KGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRl
RGVidWdnZXIoaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVDb25z
dFN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgYXBw
ZW5kQ29uc3REZWNsKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJldHVybiAx
OyB9CisgICAgaW50IGFwcGVuZENvbnN0RGVjbChpbnQsIGludCwgY29uc3QgSWRlbnRpZmllcios
IGludCwgYm9vbCkgeyByZXR1cm4gMTsgfQogICAgIHRlbXBsYXRlIDxib29sIHN0cmljdD4gUHJv
cGVydHkgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShpbnQsIFByb3BlcnR5Tm9kZTo6VHlw
ZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwg
aW50KQogICAgIHsKICAgICAgICAgQVNTRVJUKG5hbWUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122962</attachid>
            <date>2012-01-18 10:39:01 -0800</date>
            <delta_ts>2013-10-31 11:34:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74725-20120118193859.patch</filename>
            <type>text/plain</type>
            <size>25680</size>
            <attacher name="Andy Wingo">wingo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MjQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZDIyYWRlYzRlZmM5NTdhOWU3NmIxZDc3YjY5NGZlY2U4OGVmZWUzLi4zNzVhY2Y3YWM0NzA3ZDg5
YTE4M2JlYmFiZGU0ZThjOWFkZjZlYmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw2NSBAQAogMjAxMS0xMi0xNiAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CiAK
KyAgICAgICAgSW1wbGVtZW50IGJsb2NrLXNjb3BlZCBjb25zdCBpbiBzdHJpY3QgbW9kZSAtLWhh
cm1vbnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0
NzI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBw
YXJzZXIvTm9kZXMuaCAoSlNDOjpDb25zdERlY2xOb2RlOjpoYXNCbG9ja1Njb3BlKTogQSBjb25z
dGRlY2wKKyAgICAgICAgaXMgYW4gaW5pdGlhbGl6ZXIgZm9yIGEgY29uc3QgdmFyaWFibGUuICBB
ZGQgYSBiaXQgdG8gaW5kaWNhdGUKKyAgICAgICAgdGhhdCB0aGUgZGVjbCBpcyBpbiBzdHJpY3Qg
bW9kZSwgd2hpY2ggd2lsbCByZXN1bHQgaW4gdGhlCisgICAgICAgIGluaXRpYWxpemF0aW9uIG9m
IGEgYmxvY2stc2NvcGVkIGJpbmRpbmcgaW5zdGVhZCBvZiBhbiBlcnJvci4KKyAgICAgICAgKEpT
Qzo6QmxvY2tTY29wZU5vZGUpOiBOZXcgbm9kZSwgZGVzY2VuZGluZyBmcm9tIFNjb3BlTm9kZS4K
KyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpDb25z
dERlY2xOb2RlOjpDb25zdERlY2xOb2RlKTogQWRkIHRoZSBpc0Jsb2NrU2NvcGUgYml0LgorICAg
ICAgICAoSlNDOjpCbG9ja1Njb3BlTm9kZTo6QmxvY2tTY29wZU5vZGUpOiBDb25zdHJ1Y3RvciBm
b3IgbmV3IG5vZGUuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6Cisg
ICAgICAgIChKU0M6OkNvbnN0RGVjbE5vZGU6OmVtaXRDb2RlU2luZ2xlKTogRm9yIGJsb2NrLXNj
b3BlZCBiaW5kaW5ncywKKyAgICAgICAgdXNlIHRoZSBub3JtYWwgdmFyaWFibGUgcmVzb2x1dGlv
biBzdHJhdGVneS4KKyAgICAgICAgKEpTQzo6QmxvY2tTY29wZU5vZGU6OmVtaXRCeXRlY29kZSk6
IENyZWF0ZSBhbmQgcHVzaCBhIHNjb3BlCisgICAgICAgIHRlbXBsYXRlLgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Y3JlYXRlQmxvY2tTY29wZSk6IFJl
bmFtZSBmcm9tCisgICAgICAgIGNyZWF0ZUV4Y2VwdGlvblNjb3BlLgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOiBBZGFwdCB0byB0aGUgcmVuYW1lLgorICAgICAg
ICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjo6OnBhcnNlSW5uZXIpOiBTdXBw
b3J0IHRoZSBjb2xsZWN0aW9uIG9mIGJsb2NrLXNjb3BlZAorICAgICAgICBiaW5kaW5ncywgYnkg
YXR0YWNoaW5nIHRoZW0gdG8gdGhlIGNvbnRleHQuICBMZWF2aW5nIGEgYmxvY2sgc2NvcGUKKyAg
ICAgICAgb3IgbGVhdmluZyB0aGUgdG9wbGV2ZWwgc2NvcGUgKGFzIGhlcmUsIGluIHBhcnNlSW5u
ZXIpIHdpbGwKKyAgICAgICAgY29sbGVjdCB0aGUgYmxvY2stc2NvcGVkIGJpbmRpbmdzIGludG8g
YSBzZXQuCisgICAgICAgIChKU0M6Ojo6cGFyc2VWYXJEZWNsYXJhdGlvbkxpc3QpOiBDaGVjayBm
b3IgY29uZmxpY3RpbmcKKyAgICAgICAgYmxvY2stc2NvcGVkIGJpbmRpbmdzLgorICAgICAgICAo
SlNDOjo6OnBhcnNlQ29uc3REZWNsYXJhdGlvbkxpc3QpOiBJbiBzdHJpY3QgbW9kZSwgd2hlbiB0
aGUKKyAgICAgICAgaGFybW9ueSBmbGFnIGlzIG9uLCBwYXJzZSBibG9jay1zY29wZWQgYmluZGlu
Z3MsIHdpdGgKKyAgICAgICAgaW5pdGlhbGl6ZXJzLgorICAgICAgICAoSlNDOjo6OnBhcnNlVHJ5
U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUJsb2NrU3RhdGVtZW50KToKKyAgICAg
ICAgKEpTQzo6OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VGdW5j
dGlvbkRlY2xhcmF0aW9uKTogTW9yZSBhZGFwdGF0aW9ucyB0byBkZXRlY3QKKyAgICAgICAgaW5j
b21wYXRpYmxlIGJpbmRpbmdzIChpLmUuICJ2YXIgZm9vOyBjb25zdCBmb287IikuCisgICAgICAg
ICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6aGFzQ29uZmxpY3RpbmdE
ZWNsYXJhdGlvbkluQmxvY2spOgorICAgICAgICAoSlNDOjpTY29wZTo6ZGVjbGFyYXRpb25Db3Vu
dCk6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlVmFyaWFibGUpOgorICAgICAgICAoSlND
OjpTY29wZTo6ZGVjbGFyZUJsb2NrU2NvcGVkVmFyaWFibGUpOgorICAgICAgICAoSlNDOjpTY29w
ZTo6Y29sbGVjdEJsb2NrU2NvcGVkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpo
b2lzdExleGljYWxzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpkZWNsYXJlVmFyaWFibGUpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI6OmRlY2xhcmVCbG9ja1Njb3BlZFZhcmlhYmxlKTogQSBmZXcg
aGVscGVycyB0bworICAgICAgICBjb2xsZWN0IGJsb2NrLXNjb3BlZCB2YXJpYWJsZXMsIGFuZCBk
ZXRlY3QgY29uZmxpY3Qgd2l0aAorICAgICAgICBmdW5jdGlvbi1ob2lzdGVkIHZhcmlhYmxlcy4K
KyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpjcmVhdGVCbG9ja1Njb3BlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YXBwZW5kQ29u
c3REZWNsKTogQWRkIGNvbnN0cnVjdG9ycyBmb3IgdGhlIG5ldworICAgICAgICBCbG9ja1Njb3Bl
IG5vZGUsIGFuZCB0aGUgaXNCbG9ja1Njb3BlIGJpdCBvbiBjb25zdGRlY2xzLgorICAgICAgICAq
IHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNy
ZWF0ZUJsb2NrU2NvcGUpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjphcHBlbmRDb25z
dERlY2wpOiBBZGQgc3R1YnMgZm9yIG5ldyBBU1QKKyAgICAgICAgbm9kZXMuCisKKzIwMTEtMTIt
MTYgIEFuZHkgV2luZ28gIDx3aW5nb0BpZ2FsaWEuY29tPgorCiAgICAgICAgIFJlbW92ZSB0aGUg
YHZhbHVlJyBhcmd1bWVudCB0byBvcF9wdXNoX25ld19zY29wZQogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ3MTgKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDliMGJlZDQ2
NzFhNDY3MGViNWMzMTE2NTBiNzQ3NmI4OWQyNjk2NjYuLjA4NDFkODM1N2Q2MWM2NjNhMjBjYWY4
OWEzODlhOTczMmJlNjJlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTEyODksNiArMTI4OSwxNSBAQCBSZWdpc3Rl
cklEKiBDb21tYU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkcwogCiBSZWdpc3RlcklEKiBDb25zdERlY2xOb2RlOjplbWl0Q29kZVNp
bmdsZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogeworICAgIGlmIChoYXNCbG9ja1Nj
b3BlKCkpIHsKKyAgICAgICAgUmVzb2x2ZVJlc3VsdCBsb2NhdGlvbiA9IGdlbmVyYXRvci5yZXNv
bHZlKG1faWRlbnQpOworICAgICAgICBBU1NFUlQobG9jYXRpb24uaXNCbG9jaygpKTsKKyAgICAg
ICAgQVNTRVJUKG1faW5pdCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdl
bmVyYXRvci5lbWl0Tm9kZShtX2luaXQpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRp
Y1Zhcihsb2NhdGlvbiwgdmFsdWUuZ2V0KCkpOworICAgICAgICByZXR1cm4gdmFsdWUuZ2V0KCk7
CisgICAgfQorCiAgICAgUmVzb2x2ZVJlc3VsdCBsb2NhdGlvbiA9IGdlbmVyYXRvci5yZXNvbHZl
Q29uc3REZWNsKG1faWRlbnQpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBkb2VzIG5vdCBt
YXRjaCB0aGUgYmVoYXZpb3Igb2YgY29uc3QgaW4gRmlyZWZveC4KQEAgLTIwNDksNiArMjA1OCwz
MCBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkJvZHlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogICAgIHJldHVybiAwOwogfQogCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQmxvY2tTY29wZU5vZGUgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworUmVnaXN0ZXJJRCogQmxvY2tTY29wZU5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKK3sKKyAgICAvLyBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCkpOworICAgIAorICAgIEpTU3RhdGljU2NvcGVPYmplY3QqIHNjb3BlVGVtcGxh
dGUgPSBKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUoZ2VuZXJhdG9yLnNjb3BlQ2hhaW4oKS0+
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpOworICAgIGNvbnN0IFZhclN0YWNrJiB2YXJzID0g
dmFyU3RhY2soKTsKKyAgICBmb3IgKHNpemVfdCBuID0gMDsgbiA8IHZhcnMuc2l6ZSgpOyBuKysp
IHsKKyAgICAgICAgLyogRklYTUUgQVRUUklCVVRFUyAqLworICAgICAgICAvLyB2YXJzW25dLnNl
Y29uZCAmIERlY2xhcmF0aW9uU3RhY2tzOjpJc0NvbnN0YW50CisgICAgICAgIHVuc2lnbmVkIGF0
dHJpYnV0ZXMgPSBEb250RGVsZXRlOworICAgICAgICBpZiAodmFyc1tuXS5zZWNvbmQgJiBEZWNs
YXJhdGlvblN0YWNrczo6SXNDb25zdGFudCkKKyAgICAgICAgICAgIGF0dHJpYnV0ZXMgfD0gUmVh
ZE9ubHk7CisgICAgICAgIHNjb3BlVGVtcGxhdGUtPmFkZFZhcmlhYmxlKCp2YXJzW25dLmZpcnN0
LCBhdHRyaWJ1dGVzKTsKKyAgICB9CisgICAgCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3Bl
ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgIGdlbmVyYXRvci5lbWl0UHVzaEJsb2Nr
U2NvcGUoc2NvcGUuZ2V0KCksIHNjb3BlVGVtcGxhdGUpOyAvLyBzY29wZSBtdXN0IGJlIHByb3Rl
Y3RlZCB1bnRpbCBwb3BwZWQKKyAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwg
Z2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRQb3BCbG9ja1Nj
b3BlKCk7CisgICAgcmV0dXJuIDA7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBGdW5jRGVjbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFJl
Z2lzdGVySUQqIEZ1bmNEZWNsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDNjNzg1ZTY5MzQ2NzMwNzZmNjIwOGU4
N2QwMDZkZjYyYWQ4N2FjODYuLjkzNjVjN2JhY2I4OTRjMTlhYTBiMDM5MDA2YThhMDgyOWI5OTU0
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcApAQCAtMTQzNiw3ICsxNDM2LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0
ZXI6OmRlYnVnKENhbGxGcmFtZSogY2FsbEZyYW1lLCBEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2sKIH0K
ICAgICAKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCi1ORVZFUl9JTkxJTkUgU2NvcGVDaGFpbk5v
ZGUqIEludGVycHJldGVyOjpjcmVhdGVFeGNlcHRpb25TY29wZShDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHZQQykKK05FVkVSX0lOTElORSBTY29wZUNoYWluTm9kZSog
SW50ZXJwcmV0ZXI6OmNyZWF0ZUJsb2NrU2NvcGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0
IEluc3RydWN0aW9uKiB2UEMpCiB7CiAgICAgaW50IGRzdCA9IHZQQ1sxXS51Lm9wZXJhbmQ7CiAg
ICAgaW50IHRlbXBsID0gdlBDWzJdLnUub3BlcmFuZDsKQEAgLTQ5MTEsNyArNDkxMSw3IEBAIHNr
aXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgICAgIHNjb3BlIG9iamVjdCBpcyB0aGVuIHB1c2hl
ZCBvbnRvIHRoZSBTY29wZUNoYWluLiBUaGUgc2NvcGUgb2JqZWN0IGlzCiAgICAgICAgICAgIHRo
ZW4gc3RvcmVkIGluIGRzdCBmb3IgR0MuCiAgICAgICAgICAqLwotICAgICAgICBjYWxsRnJhbWUt
PnNldFNjb3BlQ2hhaW4oY3JlYXRlRXhjZXB0aW9uU2NvcGUoY2FsbEZyYW1lLCB2UEMpKTsKKyAg
ICAgICAgY2FsbEZyYW1lLT5zZXRTY29wZUNoYWluKGNyZWF0ZUJsb2NrU2NvcGUoY2FsbEZyYW1l
LCB2UEMpKTsKIAogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9wdXNoX25ld19zY29w
ZSk7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggNmRmZDMzMWY4ZmNlYTk4MjhmZTdh
YjlhZjYxNWFhZTU5OWZiNDMyMS4uOGMxOTE4ODNiZGQ5MmFiZjBjMzU3NmQ1N2YwMWZkYmMxMjkz
NjRjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmgKQEAgLTE2MCw3ICsxNjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTkVWRVJf
SU5MSU5FIHZvaWQgcmVzb2x2ZUJhc2UoQ2FsbEZyYW1lKiwgSW5zdHJ1Y3Rpb24qIHZQQyk7CiAg
ICAgICAgIE5FVkVSX0lOTElORSBib29sIHJlc29sdmVCYXNlQW5kUHJvcGVydHkoQ2FsbEZyYW1l
KiwgSW5zdHJ1Y3Rpb24qLCBKU1ZhbHVlJiBleGNlcHRpb25WYWx1ZSk7CiAgICAgICAgIE5FVkVS
X0lOTElORSBib29sIHJlc29sdmVUaGlzQW5kUHJvcGVydHkoQ2FsbEZyYW1lKiwgSW5zdHJ1Y3Rp
b24qLCBKU1ZhbHVlJiBleGNlcHRpb25WYWx1ZSk7Ci0gICAgICAgIE5FVkVSX0lOTElORSBTY29w
ZUNoYWluTm9kZSogY3JlYXRlRXhjZXB0aW9uU2NvcGUoQ2FsbEZyYW1lKiwgY29uc3QgSW5zdHJ1
Y3Rpb24qIHZQQyk7CisgICAgICAgIE5FVkVSX0lOTElORSBTY29wZUNoYWluTm9kZSogY3JlYXRl
QmxvY2tTY29wZShDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogdlBDKTsKIAogICAgICAg
ICB2b2lkIHRyeUNhY2hlR2V0QnlJRChDYWxsRnJhbWUqLCBDb2RlQmxvY2sqLCBJbnN0cnVjdGlv
biosIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNv
bnN0IFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2b2lkIHVuY2FjaGVHZXRCeUlEKENvZGVCbG9j
ayosIEluc3RydWN0aW9uKiB2UEMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1
aWxkZXIuaAppbmRleCAyZTgxYzI1NDY2ZDlkMTY4MjVjYTI2NGFmNDMxYzQ3MjdiYjYxMDNkLi5k
ODNlMzQ3NDE5ODBmMzZhNWE4Y2Y1NTU4ZjdlYjg3ZTc2YTM0YmIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtOTksNiArOTksNyBAQCBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBFbGVtZW50Tm9kZSogRWxlbWVudExpc3Q7CiAgICAgdHlwZWRlZiBBcmd1bWVu
dExpc3ROb2RlKiBBcmd1bWVudHNMaXN0OwogICAgIHR5cGVkZWYgUGFyYW1ldGVyTm9kZSogRm9y
bWFsUGFyYW1ldGVyTGlzdDsKKyAgICB0eXBlZGVmIEJsb2NrU2NvcGVOb2RlKiBCbG9ja1Njb3Bl
OwogICAgIHR5cGVkZWYgRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5OwogICAgIHR5cGVk
ZWYgU3RhdGVtZW50Tm9kZSogU3RhdGVtZW50OwogICAgIHR5cGVkZWYgQ2xhdXNlTGlzdE5vZGUq
IENsYXVzZUxpc3Q7CkBAIC0yNjcsNiArMjY4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGluU3Ry
aWN0Q29udGV4dCk7CiAgICAgfQogICAgIAorICAgIEJsb2NrU2NvcGVOb2RlKiBjcmVhdGVCbG9j
a1Njb3BlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIEpTQzo6U291
cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2sqIHZhclN0
YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcykKKyAgICB7CisgICAgICAgIGlu
Y0NvbnN0YW50cygpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJsb2NrU2Nv
cGVOb2RlKGxpbmVOdW1iZXIsIGNoaWxkcmVuLCB2YXJTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMp
OworICAgIH0KKyAgICAKICAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVH
ZXR0ZXJPclNldHRlclByb3BlcnR5KGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5vZGU6OlR5cGUg
dHlwZSwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1zLCBGdW5j
dGlvbkJvZHlOb2RlKiBib2R5LCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywg
aW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5kTGluZSkKICAgICB7CiAgICAgICAgIEFTU0VS
VChuYW1lKTsKQEAgLTQ3OSw5ICs0ODYsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCi0gICAgQ29uc3REZWNsTm9kZSogYXBwZW5kQ29uc3REZWNsKGludCBsaW5l
TnVtYmVyLCBDb25zdERlY2xOb2RlKiB0YWlsLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBFeHBy
ZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIpCisgICAgQ29uc3REZWNsTm9kZSogYXBwZW5kQ29uc3RE
ZWNsKGludCBsaW5lTnVtYmVyLCBDb25zdERlY2xOb2RlKiB0YWlsLCBjb25zdCBJZGVudGlmaWVy
KiBuYW1lLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIsIGJvb2wgaGFzQmxvY2tTY29wZSkK
ICAgICB7Ci0gICAgICAgIENvbnN0RGVjbE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRh
KSBDb25zdERlY2xOb2RlKGxpbmVOdW1iZXIsICpuYW1lLCBpbml0aWFsaXplcik7CisgICAgICAg
IENvbnN0RGVjbE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb25zdERlY2xOb2Rl
KGxpbmVOdW1iZXIsICpuYW1lLCBpbml0aWFsaXplciwgaGFzQmxvY2tTY29wZSk7CiAgICAgICAg
IGlmICh0YWlsKQogICAgICAgICAgICAgdGFpbC0+bV9uZXh0ID0gcmVzdWx0OwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25z
dHJ1Y3RvcnMuaAppbmRleCAwYjAyOWIyZmZhODk3MmVmNTljMjRhODkzMDY1NTVmM2UwYjE0MTcy
Li4xZGJmMjViMzIwNjI1ZWUyNTkzY2ZkZWFkZmY2YWRkMGVhYTVmNjE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtODUxLDkgKzg1
MSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIENvbnN0
RGVjbE5vZGU6OkNvbnN0RGVjbE5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBFeHByZXNzaW9uTm9kZSogaW5pdCkKKyAgICBpbmxpbmUgQ29uc3REZWNsTm9kZTo6
Q29uc3REZWNsTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4
cHJlc3Npb25Ob2RlKiBpbml0LCBib29sIGhhc0Jsb2NrU2NvcGVfKQogICAgICAgICA6IEV4cHJl
c3Npb25Ob2RlKGxpbmVOdW1iZXIpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKKyAgICAgICAg
LCBtX2hhc0Jsb2NrU2NvcGUoaGFzQmxvY2tTY29wZV8pCiAgICAgICAgICwgbV9uZXh0KDApCiAg
ICAgICAgICwgbV9pbml0KGluaXQpCiAgICAgewpAQCAtODc2LDYgKzg3NywxMSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICB7CiAgICAgfQogCisgICAgaW5saW5lIEJsb2NrU2NvcGVOb2RlOjpCbG9j
a1Njb3BlTm9kZShpbnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJT
dGFjayogdmFyU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzKQorICAgICAg
ICA6IFNjb3BlTm9kZShsaW5lTnVtYmVyLCBjaGlsZHJlbiwgdmFyU3RhY2ssIDAsIGNhcHR1cmVk
VmFyaWFibGVzKQorICAgIHsKKyAgICB9CisKICAgICBpbmxpbmUgRm9ySW5Ob2RlOjpGb3JJbk5v
ZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGwsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCiAg
ICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQogICAgICAgICAsIG1faWRlbnQoZ2xv
YmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmgKaW5kZXggZjU5NDMzNzRhZDVjOGY0NmMwZmY0ODAxNTdhNTFlOWExNzhl
MzdlYy4uNzE5YjQ1ZjQ5NDcxYzc2NmU1N2QxNzM5YjZlOTVmMWJiNTVlZDNkMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtODgsNyArODgsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJl
cEhhc2g+IElkZW50aWZpZXJTZXQ7CiAKICAgICBuYW1lc3BhY2UgRGVjbGFyYXRpb25TdGFja3Mg
ewotICAgICAgICBlbnVtIFZhckF0dHJzIHsgSXNDb25zdGFudCA9IDEsIEhhc0luaXRpYWxpemVy
ID0gMiB9OworICAgICAgICBlbnVtIFZhckF0dHJzIHsKKyAgICAgICAgICAgIElzQ29uc3RhbnQg
PSAxLAorICAgICAgICAgICAgSGFzSW5pdGlhbGl6ZXIgPSAyLAorICAgICAgICAgICAgSXNCbG9j
a1Njb3BlZCA9IDQKKyAgICAgICAgfTsKICAgICAgICAgdHlwZWRlZiBWZWN0b3I8c3RkOjpwYWly
PGNvbnN0IElkZW50aWZpZXIqLCB1bnNpZ25lZD4gPiBWYXJTdGFjazsKICAgICAgICAgdHlwZWRl
ZiBWZWN0b3I8RnVuY3Rpb25Cb2R5Tm9kZSo+IEZ1bmN0aW9uU3RhY2s7CiAgICAgfQpAQCAtMTEw
MywxNiArMTEwNywxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBDb25zdERl
Y2xOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENv
bnN0RGVjbE5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAg
ICAgICAgQ29uc3REZWNsTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9k
ZSosIGJvb2wpOwogCiAgICAgICAgIGJvb2wgaGFzSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVy
biBtX2luaXQ7IH0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQoKSB7IHJldHVybiBt
X2lkZW50OyB9CisgICAgICAgIGJvb2wgaGFzQmxvY2tTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzQmxvY2tTY29wZTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwog
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlU2luZ2xlKEJ5dGVjb2RlR2VuZXJh
dG9yJik7CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKKyAgICAgICAgYm9v
bCBtX2hhc0Jsb2NrU2NvcGU7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIENvbnN0RGVjbE5vZGUq
IG1fbmV4dDsKQEAgLTE0MTMsNiArMTQxOSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
T3duUHRyPFNjb3BlTm9kZURhdGE+IG1fZGF0YTsKICAgICB9OwogCisgICAgY2xhc3MgQmxvY2tT
Y29wZU5vZGUgOiBwdWJsaWMgU2NvcGVOb2RlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEJsb2Nr
U2NvcGVOb2RlKGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIElkZW50aWZpZXJTZXQm
KTsKKworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgfTsKKwogICAgIGNsYXNzIENvZGVOb2Rl
IDogcHVibGljIFNjb3BlTm9kZSwgcHVibGljIFBhcnNlckFyZW5hUmVmQ291bnRlZCB7CiAgICAg
cHVibGljOgogICAgICAgICBDb2RlTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGJvb2wgaW5TdHJp
Y3RDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA1
YzJmMDM4M2ZhMDZmZTdkMjYxMGE4OTIyMjAwODM3MGFkOTJkMjBiLi5mZDE2NTJkZGFkYjk1MDM0
MTMzM2FkYjRiMDVhNDEzYTAyNmE2NjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCkBAIC05NCw2ICs5NCw5IEBAIFVTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIoKQogICAgIGlmICghc291cmNlRWxlbWVudHMgfHwgIWNvbnN1bWUoRU9GVE9LKSkK
ICAgICAgICAgcGFyc2VFcnJvciA9IG1fZXJyb3JNZXNzYWdlOwogCisgICAgaWYgKGNvbnRleHQu
dmFyRGVjbGFyYXRpb25zKCkpCisgICAgICAgIHNjb3BlLT5jb2xsZWN0QmxvY2tTY29wZWRWYXJp
YWJsZXMoY29udGV4dC52YXJEZWNsYXJhdGlvbnMoKS0+ZGF0YSk7CisKICAgICBJZGVudGlmaWVy
U2V0IGNhcHR1cmVkVmFyaWFibGVzOwogICAgIHNjb3BlLT5nZXRDYXB0dXJlZFZhcmlhYmxlcyhj
YXB0dXJlZFZhcmlhYmxlcyk7CiAgICAgQ29kZUZlYXR1cmVzIGZlYXR1cmVzID0gY29udGV4dC5m
ZWF0dXJlcygpOwpAQCAtMjU0LDcgKzI1Nyw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyRGVjbGFyYXRpCiAg
ICAgICAgIGxhc3RJZGVudCA9IG5hbWU7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgYm9vbCBo
YXNJbml0aWFsaXplciA9IG1hdGNoKEVRVUFMKTsKLSAgICAgICAgZmFpbElmRmFsc2VJZlN0cmlj
dFdpdGhOYW1lQW5kTWVzc2FnZShkZWNsYXJlVmFyaWFibGUobmFtZSksICJDYW5ub3QgZGVjbGFy
ZSBhIHZhcmlhYmxlIG5hbWVkIiwgbmFtZS0+aW1wbCgpLCAiaW4gc3RyaWN0IG1vZGUuIik7Cisg
ICAgICAgIGlmICghZGVjbGFyZVZhcmlhYmxlKG5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIDA7
CiAgICAgICAgIGNvbnRleHQuYWRkVmFyKG5hbWUsIChoYXNJbml0aWFsaXplciB8fCAoIW1fYWxs
b3dzSW4gJiYgbWF0Y2goSU5UT0tFTikpKSA/IERlY2xhcmF0aW9uU3RhY2tzOjpIYXNJbml0aWFs
aXplciA6IDApOwogICAgICAgICBpZiAoaGFzSW5pdGlhbGl6ZXIpIHsKICAgICAgICAgICAgIGlu
dCB2YXJEaXZvdCA9IHRva2VuU3RhcnQoKSArIDE7CkBAIC0yNzksNyArMjgzLDYgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VWYXJEZWNsYXJhdGkKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDb25zdERlY2xMaXN0IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUNvbnN0RGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewotICAg
IGZhaWxJZlRydWUoc3RyaWN0TW9kZSgpKTsKICAgICBUcmVlQ29uc3REZWNsTGlzdCBjb25zdERl
Y2xzID0gMDsKICAgICBUcmVlQ29uc3REZWNsTGlzdCB0YWlsID0gMDsKICAgICBkbyB7CkBAIC0y
ODgsMTQgKzI5MSwyNSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDb25zdERl
Y2xMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbnN0RGVjbAogICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyKiBuYW1lID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIG5leHQoKTsK
ICAgICAgICAgYm9vbCBoYXNJbml0aWFsaXplciA9IG1hdGNoKEVRVUFMKTsKLSAgICAgICAgZGVj
bGFyZVZhcmlhYmxlKG5hbWUpOwotICAgICAgICBjb250ZXh0LmFkZFZhcihuYW1lLCBEZWNsYXJh
dGlvblN0YWNrczo6SXNDb25zdGFudCB8IChoYXNJbml0aWFsaXplciA/IERlY2xhcmF0aW9uU3Rh
Y2tzOjpIYXNJbml0aWFsaXplciA6IDApKTsKKyAgICAgICAgaW50IGF0dHJzID0gRGVjbGFyYXRp
b25TdGFja3M6OklzQ29uc3RhbnQgfCAoaGFzSW5pdGlhbGl6ZXIgPyBEZWNsYXJhdGlvblN0YWNr
czo6SGFzSW5pdGlhbGl6ZXIgOiAwKTsKKyAgICAgICAgaWYgKHN0cmljdE1vZGUoKSkgeworICAg
ICAgICAgICAgZmFpbElmRmFsc2VXaXRoTmFtZUFuZE1lc3NhZ2UoaGFzSW5pdGlhbGl6ZXIsICJN
aXNzaW5nIGluaXRpYWxpemVyIGZvciBjb25zdCIsIG5hbWUtPmltcGwoKSwgImluIHN0cmljdCBt
b2RlLiIpOworICAgICAgICAgICAgYXR0cnMgfD0gRGVjbGFyYXRpb25TdGFja3M6OklzQmxvY2tT
Y29wZWQ7CisgICAgICAgICAgICBpZiAoIWRlY2xhcmVCbG9ja1Njb3BlZFZhcmlhYmxlKG5hbWUs
IGF0dHJzKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIC8vIFdlIHdp
bGwgY29udGV4dC5hZGRWYXIoKSBhZnRlciBwYXJzaW5nIHRoZSBmdW5jdGlvbi4KKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGlmICghZGVjbGFyZVZhcmlhYmxlKG5hbWUpKQorICAgICAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgY29udGV4dC5hZGRWYXIobmFtZSwgYXR0
cnMpOworICAgICAgICB9CisKICAgICAgICAgVHJlZUV4cHJlc3Npb24gaW5pdGlhbGl6ZXIgPSAw
OwogICAgICAgICBpZiAoaGFzSW5pdGlhbGl6ZXIpIHsKICAgICAgICAgICAgIG5leHQoVHJlZUJ1
aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3MpOyAvLyBjb25zdW1lICc9JwogICAgICAgICAgICAgaW5p
dGlhbGl6ZXIgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICB9
Ci0gICAgICAgIHRhaWwgPSBjb250ZXh0LmFwcGVuZENvbnN0RGVjbChtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCB0YWlsLCBuYW1lLCBpbml0aWFsaXplcik7CisgICAgICAgIHRhaWwgPSBjb250
ZXh0LmFwcGVuZENvbnN0RGVjbChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0YWlsLCBuYW1l
LCBpbml0aWFsaXplciwgc3RyaWN0TW9kZSgpKTsKICAgICAgICAgaWYgKCFjb25zdERlY2xzKQog
ICAgICAgICAgICAgY29uc3REZWNscyA9IHRhaWw7CiAgICAgfSB3aGlsZSAobWF0Y2goQ09NTUEp
KTsKQEAgLTYyMiw3ICs2MzYsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVHJ5U3RhdGVtZW50KAogICAgICAgICBp
ZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIEF1
dG9Qb3BTY29wZVJlZiBjYXRjaFNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKLSAgICAgICAgZmFp
bElmRmFsc2VJZlN0cmljdFdpdGhOYW1lQW5kTWVzc2FnZShkZWNsYXJlVmFyaWFibGUoaWRlbnQp
LCAiQ2Fubm90IGRlY2xhcmUgYSB2YXJpYWJsZSBuYW1lZCIsIGlkZW50LT5pbXBsKCksICJpbiBz
dHJpY3QgbW9kZSIpOworICAgICAgICBpZiAoIWRlY2xhcmVWYXJpYWJsZShpZGVudCkpCisgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgY2F0Y2hTY29wZS0+cHJldmVudE5ld0RlY2xzKCk7
CiAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7CiAgICAgICAgIG1hdGNoT3JGYWls
KE9QRU5CUkFDRSk7CkBAIC02NjYsMTAgKzY4MSwzMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQmxvY2tTdGF0ZW1l
bgogICAgICAgICBuZXh0KCk7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJsb2NrU3Rh
dGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIDAsIHN0YXJ0LCBtX2xhc3RMaW5lKTsK
ICAgICB9Ci0gICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN1YnRyZWUgPSBwYXJzZVNvdXJjZUVsZW1l
bnRzPERvbnRDaGVja0ZvclN0cmljdE1vZGU+KGNvbnRleHQpOwotICAgIGZhaWxJZkZhbHNlKHN1
YnRyZWUpOwotICAgIG1hdGNoT3JGYWlsKENMT1NFQlJBQ0UpOwotICAgIG5leHQoKTsKKworICAg
IFRyZWVTb3VyY2VFbGVtZW50cyBzdWJ0cmVlID0gMDsKKyAgICBpZiAoc3RyaWN0TW9kZSgpKSB7
CisgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBibG9ja1Njb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsK
KyAgICAgICAgc3VidHJlZSA9IHBhcnNlU291cmNlRWxlbWVudHM8RG9udENoZWNrRm9yU3RyaWN0
TW9kZT4oY29udGV4dCk7CisgICAgICAgIGZhaWxJZkZhbHNlKHN1YnRyZWUpOworICAgICAgICBt
YXRjaE9yRmFpbChDTE9TRUJSQUNFKTsKKyAgICAgICAgbmV4dCgpOworICAgICAgICBpZiAoIWhv
aXN0TGV4aWNhbHMoVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbykpIHsKKyAgICAg
ICAgICAgIERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjayB2YXJTdGFjazsKKyAgICAgICAgICAg
IElkZW50aWZpZXJTZXQgY2FwdHVyZWRWYXJpYWJsZXM7CisgICAgICAgICAgICBpZiAoVHJlZUJ1
aWxkZXI6OkNyZWF0ZXNBU1QpCisgICAgICAgICAgICAgICAgY3VycmVudFNjb3BlKCktPmNvbGxl
Y3RCbG9ja1Njb3BlZFZhcmlhYmxlcyh2YXJTdGFjayk7CisgICAgICAgICAgICBpZiAoVHJlZUJ1
aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbykKKyAgICAgICAgICAgICAgICBjdXJyZW50U2Nv
cGUoKS0+Z2V0Q2FwdHVyZWRWYXJpYWJsZXMoY2FwdHVyZWRWYXJpYWJsZXMpOworICAgICAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQmxvY2tTY29wZShjb25zdF9jYXN0PEpTR2xvYmFsRGF0
YSo+KG1fZ2xvYmFsRGF0YSksIG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHN1YnRyZWUsICZ2
YXJTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYg
KCFzdWJ0cmVlKSB7CisgICAgICAgIHN1YnRyZWUgPSBwYXJzZVNvdXJjZUVsZW1lbnRzPERvbnRD
aGVja0ZvclN0cmljdE1vZGU+KGNvbnRleHQpOworICAgICAgICBmYWlsSWZGYWxzZShzdWJ0cmVl
KTsKKyAgICAgICAgbWF0Y2hPckZhaWwoQ0xPU0VCUkFDRSk7CisgICAgICAgIG5leHQoKTsKKyAg
ICB9CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQobV9sZXhlci0+bGFz
dExpbmVOdW1iZXIoKSwgc3VidHJlZSwgc3RhcnQsIG1fbGFzdExpbmUpOwogfQogCkBAIC03Nzks
OCArODE1LDggQEAgdGVtcGxhdGUgPEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywg
Ym9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgY2xhc3MKICAgICAgICAgbmFtZSA9IG1fdG9r
ZW4ubV9kYXRhLmlkZW50OwogICAgICAgICBmYWlsSWZUcnVlV2l0aE1lc3NhZ2UoKm5hbWUgPT0g
bV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8sICJDYW5ub3QgbmFt
ZSBhIGZ1bmN0aW9uIF9fcHJvdG9fXyIpOwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIGlmICgh
bmFtZUlzSW5Db250YWluaW5nU2NvcGUpCi0gICAgICAgICAgICBmYWlsSWZGYWxzZUlmU3RyaWN0
KGZ1bmN0aW9uU2NvcGUtPmRlY2xhcmVWYXJpYWJsZShuYW1lKSk7CisgICAgICAgIGlmICghbmFt
ZUlzSW5Db250YWluaW5nU2NvcGUgJiYgIWRlY2xhcmVWYXJpYWJsZSAobmFtZSkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSBlbHNlIGlmIChyZXF1aXJlbWVudHMgPT0gRnVuY3Rp
b25OZWVkc05hbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjb25zdW1lT3JGYWlsKE9Q
RU5QQVJFTik7CkBAIC04NTcsNyArODkzLDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGEKICAg
ICBpbnQgYm9keVN0YXJ0TGluZSA9IDA7CiAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25J
bmZvPEZ1bmN0aW9uTmVlZHNOYW1lLCB0cnVlPihjb250ZXh0LCBuYW1lLCBwYXJhbWV0ZXJzLCBi
b2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpKSk7CiAgICAg
ZmFpbElmRmFsc2UobmFtZSk7Ci0gICAgZmFpbElmRmFsc2VJZlN0cmljdChkZWNsYXJlVmFyaWFi
bGUobmFtZSkpOworICAgIGlmICghZGVjbGFyZVZhcmlhYmxlKG5hbWUpKQorICAgICAgICByZXR1
cm4gMDsKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jRGVjbFN0YXRlbWVudChtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpLCBuYW1lLCBib2R5LCBwYXJhbWV0ZXJzLCBvcGVuQnJhY2VQb3Ms
IGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBmNjlkMjVmNDYzOGI3MWU2ODNhNzRiNWFj
ZWU5MmNiN2U3NjVmNGFhLi5jMDBhMTg2NDc3NTc3ZDgyNzEzZmYyMzliYjk2N2ViMTY4MWIzYjM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTIwMCwxMiArMjAwLDI5
IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgYm9vbCBpc0Z1bmN0aW9uKCkgeyByZXR1cm4gbV9pc0Z1
bmN0aW9uOyB9CiAgICAgYm9vbCBpc0Z1bmN0aW9uQm91bmRhcnkoKSB7IHJldHVybiBtX2lzRnVu
Y3Rpb25Cb3VuZGFyeTsgfQogCi0gICAgYm9vbCBkZWNsYXJlVmFyaWFibGUoY29uc3QgSWRlbnRp
ZmllciogaWRlbnQpCisgICAgYm9vbCBoYXNDb25mbGljdGluZ0RlY2xhcmF0aW9uSW5CbG9jayhj
b25zdCBJZGVudGlmaWVyICppZGVudCwgYm9vbCBoYXNCbG9ja1Njb3BlKQorICAgIHsKKyAgICAg
ICAgaWYgKCFtX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKGlkZW50LT51c3RyaW5nKCkuaW1w
bCgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGhhc0Jsb2NrU2Nv
cGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX2Jsb2NrU2NvcGVkVmFyaWFibGVzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgaWYg
KG1fYmxvY2tTY29wZWRWYXJpYWJsZXNbaV0uZmlyc3QgPT0gaWRlbnQpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzaXpl
X3QgZGVjbGFyYXRpb25Db3VudCgpIHsgcmV0dXJuIG1fZGVjbGFyZWRWYXJpYWJsZXMuc2l6ZSgp
OyB9CisKKyAgICB2b2lkIGRlY2xhcmVWYXJpYWJsZShjb25zdCBJZGVudGlmaWVyKiBpZGVudCkK
ICAgICB7Ci0gICAgICAgIGJvb2wgaXNWYWxpZFN0cmljdE1vZGUgPSBtX2dsb2JhbERhdGEtPnBy
b3BlcnR5TmFtZXMtPmV2YWwgIT0gKmlkZW50ICYmIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1l
cy0+YXJndW1lbnRzICE9ICppZGVudDsKLSAgICAgICAgbV9pc1ZhbGlkU3RyaWN0TW9kZSA9IG1f
aXNWYWxpZFN0cmljdE1vZGUgJiYgaXNWYWxpZFN0cmljdE1vZGU7CiAgICAgICAgIG1fZGVjbGFy
ZWRWYXJpYWJsZXMuYWRkKGlkZW50LT51c3RyaW5nKCkuaW1wbCgpKTsKLSAgICAgICAgcmV0dXJu
IGlzVmFsaWRTdHJpY3RNb2RlOworICAgIH0KKworICAgIHZvaWQgZGVjbGFyZUJsb2NrU2NvcGVk
VmFyaWFibGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQsIHVuc2lnbmVkIGF0dHJzKQorICAgIHsK
KyAgICAgICAgZGVjbGFyZVZhcmlhYmxlKGlkZW50KTsKKyAgICAgICAgbV9ibG9ja1Njb3BlZFZh
cmlhYmxlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaWRlbnQsIGF0dHJzKSk7CiAgICAgfQogCiAg
ICAgdm9pZCBkZWNsYXJlV3JpdGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQpCkBAIC0yOTYsNiAr
MzEzLDEzIEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgIHZlY3Rvci5zaHJpbmtUb0ZpdCgpOwog
ICAgIH0KIAorICAgIHZvaWQgY29sbGVjdEJsb2NrU2NvcGVkVmFyaWFibGVzKERlY2xhcmF0aW9u
U3RhY2tzOjpWYXJTdGFjayYgdmFyU3RhY2spCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fYmxvY2tTY29wZWRWYXJpYWJsZXMuc2l6ZSgpOyArK2kpCisgICAgICAgICAg
ICB2YXJTdGFjay5hcHBlbmQobV9ibG9ja1Njb3BlZFZhcmlhYmxlc1tpXSk7CisgICAgICAgIG1f
YmxvY2tTY29wZWRWYXJpYWJsZXMuY2xlYXIoKTsKKyAgICB9CisKICAgICB2b2lkIHNhdmVGdW5j
dGlvbkluZm8oU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0qIGluZm8pCiAgICAgewogICAgICAgICBB
U1NFUlQobV9pc0Z1bmN0aW9uKTsKQEAgLTMzOSw2ICszNjMsNyBAQCBwcml2YXRlOgogICAgIElk
ZW50aWZpZXJTZXQgbV91c2VkVmFyaWFibGVzOwogICAgIElkZW50aWZpZXJTZXQgbV9jbG9zZWRW
YXJpYWJsZXM7CiAgICAgSWRlbnRpZmllclNldCBtX3dyaXR0ZW5WYXJpYWJsZXM7CisgICAgRGVj
bGFyYXRpb25TdGFja3M6OlZhclN0YWNrIG1fYmxvY2tTY29wZWRWYXJpYWJsZXM7CiB9OwogCiB0
eXBlZGVmIFZlY3RvcjxTY29wZSwgMTA+IFNjb3BlU3RhY2s7CkBAIC00NTUsMTUgKzQ4MCw0MSBA
QCBwcml2YXRlOgogICAgICAgICByZXR1cm4gcG9wU2NvcGVJbnRlcm5hbChzY29wZSwgc2hvdWxk
VHJhY2tDbG9zZWRWYXJpYWJsZXMpOwogICAgIH0KICAgICAKKyAgICBib29sIGhvaXN0TGV4aWNh
bHMoYm9vbCBzaG91bGRUcmFja0Nsb3NlZFZhcmlhYmxlcykKKyAgICB7CisgICAgICAgIC8vIEF2
b2lkIGNyZWF0aW5nIGEgbmVzdGVkIHNjb3BlIGlmIHRoZXJlIGFyZSBubyBjbG9zZWQtb3ZlciBs
ZXhpY2Fscy4KKyAgICAgICAgQVNTRVJUKG1fc2NvcGVTdGFjay5zaXplKCkgPj0gMik7CisgICAg
ICAgIFNjb3BlUmVmIGN1cnJlbnQgPSBjdXJyZW50U2NvcGUoKTsKKyAgICAgICAgcmV0dXJuICFj
dXJyZW50LT5kZWNsYXJhdGlvbkNvdW50KCk7CisgICAgfQorICAgIAogICAgIGJvb2wgZGVjbGFy
ZVZhcmlhYmxlKGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQogICAgIHsKLSAgICAgICAgdW5zaWdu
ZWQgaSA9IG1fc2NvcGVTdGFjay5zaXplKCkgLSAxOworICAgICAgICBmYWlsSWZUcnVlSWZTdHJp
Y3RXaXRoTmFtZUFuZE1lc3NhZ2UobV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09
ICppZGVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwg
bV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0gKmlkZW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBkZWNsYXJlIGEg
dmFyaWFibGUgbmFtZWQgIiwgaWRlbnQtPmltcGwoKSwgIiBpbiBzdHJpY3QgbW9kZS4iKTsKKyAg
ICAgICAgdW5zaWduZWQgaSA9IG1fc2NvcGVTdGFjay5zaXplKCk7CisgICAgICAgIEFTU0VSVChp
KTsKKyAgICAgICAgZG8geworICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGR1cGxpY2F0ZSBibG9j
ay1zY29wZWQgYmluZGluZ3MsIGhvaXN0aW5nIGB2YXInCisgICAgICAgICAgICAvLyBkZWNsYXJh
dGlvbnMgdG8gdGhlIG5lYXJlc3QgZnVuY3Rpb24gb3IgdG8gdGhlIHRvcCBsZXZlbC4KKyAgICAg
ICAgICAgIGZhaWxJZlRydWVXaXRoTmFtZUFuZE1lc3NhZ2UobV9zY29wZVN0YWNrWy0taV0uaGFz
Q29uZmxpY3RpbmdEZWNsYXJhdGlvbkluQmxvY2soaWRlbnQsIGZhbHNlKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkR1cGxpY2F0ZSBiaW5kaW5nIGZvciBibG9j
ay1zY29wZWQgdmFyaWFibGUgIiwgaWRlbnQtPmltcGwoKSwgIi4iKTsKKyAgICAgICAgfSB3aGls
ZSAoaSAmJiAhbV9zY29wZVN0YWNrW2ldLmlzRnVuY3Rpb25Cb3VuZGFyeSgpKTsKICAgICAgICAg
QVNTRVJUKGkgPCBtX3Njb3BlU3RhY2suc2l6ZSgpKTsKLSAgICAgICAgd2hpbGUgKCFtX3Njb3Bl
U3RhY2tbaV0uYWxsb3dzTmV3RGVjbHMoKSkgewotICAgICAgICAgICAgaS0tOwotICAgICAgICAg
ICAgQVNTRVJUKGkgPCBtX3Njb3BlU3RhY2suc2l6ZSgpKTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gbV9zY29wZVN0YWNrW2ldLmRlY2xhcmVWYXJpYWJsZShpZGVudCk7CisgICAgICAgIG1f
c2NvcGVTdGFja1tpXS5kZWNsYXJlVmFyaWFibGUoaWRlbnQpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBkZWNsYXJlQmxvY2tTY29wZWRWYXJpYWJsZShjb25z
dCBJZGVudGlmaWVyKiBpZGVudCwgdW5zaWduZWQgYXR0cnMpCisgICAgeworICAgICAgICBmYWls
SWZUcnVlV2l0aE5hbWVBbmRNZXNzYWdlKG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+ZXZh
bCA9PSAqaWRlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBtX2ds
b2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqaWRlbnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBkZWNsYXJlIGEgdmFyaWFibGUgbmFt
ZWQgIiwgaWRlbnQtPmltcGwoKSwgIiBpbiBzdHJpY3QgbW9kZS4iKTsKKyAgICAgICAgZmFpbElm
VHJ1ZVdpdGhOYW1lQW5kTWVzc2FnZShjdXJyZW50U2NvcGUoKS0+aGFzQ29uZmxpY3RpbmdEZWNs
YXJhdGlvbkluQmxvY2soaWRlbnQsIHRydWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJEdXBsaWNhdGUgYmluZGluZyBmb3IgYmxvY2stc2NvcGVkIHZhcmlhYmxlICIs
IGlkZW50LT5pbXBsKCksICIuIik7CisgICAgICAgIGN1cnJlbnRTY29wZSgpLT5kZWNsYXJlQmxv
Y2tTY29wZWRWYXJpYWJsZShpZGVudCwgYXR0cnMpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgICAgCiAgICAgdm9pZCBkZWNsYXJlV3JpdGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDI3
MGM4MjM4NTNjOWIxMzk3NWZjYTk4MmE5YzA1YTUwZmRjYjBmODcuLmViODQ4YzkxYWJiYTdjNDJm
NTBlMDdjMzU1YjZmZTNkOTdiNWE1YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xMDYsNiArMTA2LDcgQEAgcHVibGljOgogICAgIHR5cGVk
ZWYgaW50IEFyZ3VtZW50c0xpc3Q7CiAgICAgdHlwZWRlZiBpbnQgRm9ybWFsUGFyYW1ldGVyTGlz
dDsKICAgICB0eXBlZGVmIGludCBGdW5jdGlvbkJvZHk7CisgICAgdHlwZWRlZiBpbnQgQmxvY2tT
Y29wZTsKICAgICB0eXBlZGVmIGludCBTdGF0ZW1lbnQ7CiAgICAgdHlwZWRlZiBpbnQgQ2xhdXNl
TGlzdDsKICAgICB0eXBlZGVmIGludCBDbGF1c2U7CkBAIC0xNTEsNiArMTUyLDcgQEAgcHVibGlj
OgogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFzc2lnblJlc29sdmUoaW50LCBjb25zdCBJZGVu
dGlmaWVyJiwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFz
c2lnbm1lbnRFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGlu
dCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIGludCBjcmVhdGVGdW5jdGlvbkJvZHkoaW50LCBib29s
KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUJsb2NrU2NvcGUoSlNHbG9iYWxEYXRhKiwg
aW50LCBTb3VyY2VFbGVtZW50cywgRGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrICosIElkZW50
aWZpZXJTZXQmKSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0
dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlQXJndW1lbnRzKGludCkgeyByZXR1cm4gMTsgfQogICAg
IGludCBjcmVhdGVBcmd1bWVudHNMaXN0KGludCwgaW50KSB7IHJldHVybiAxOyB9CkBAIC0yMDIs
NyArMjA0LDcgQEAgcHVibGljOgogICAgIGludCBjcmVhdGVUaHJvd1N0YXRlbWVudChpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZURlYnVn
Z2VyKGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlQ29uc3RTdGF0
ZW1lbnQoaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGFwcGVuZENv
bnN0RGVjbChpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciosIGludCkgeyByZXR1cm4gMTsgfQor
ICAgIGludCBhcHBlbmRDb25zdERlY2woaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQs
IGJvb2wpIHsgcmV0dXJuIDE7IH0KICAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFByb3BlcnR5
IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlw
ZSwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChuYW1lKTsK
</data>
<flag name="review"
          id="123893"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>