<?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>75793</bug_id>
          
          <creation_ts>2012-01-08 01:52:11 -0800</creation_ts>
          <short_desc>[meta] DOMWindow::m_securityOrigin must die!</short_desc>
          <delta_ts>2012-08-21 09:58:10 -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>
          <dependson>27640</dependson>
    
    <dependson>75794</dependson>
    
    <dependson>75795</dependson>
    
    <dependson>75796</dependson>
    
    <dependson>75797</dependson>
    
    <dependson>75838</dependson>
    
    <dependson>77537</dependson>
    
    <dependson>93016</dependson>
    
    <dependson>93025</dependson>
    
    <dependson>93038</dependson>
    
    <dependson>93041</dependson>
    
    <dependson>93049</dependson>
    
    <dependson>93072</dependson>
    
    <dependson>93079</dependson>
    
    <dependson>93140</dependson>
    
    <dependson>93307</dependson>
    
    <dependson>93323</dependson>
    
    <dependson>93382</dependson>
    
    <dependson>93407</dependson>
    
    <dependson>93660</dependson>
    
    <dependson>93666</dependson>
    
    <dependson>93987</dependson>
    
    <dependson>93989</dependson>
    
    <dependson>93990</dependson>
    
    <dependson>93991</dependson>
    
    <dependson>93993</dependson>
    
    <dependson>94052</dependson>
          <blocked>93095</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>531736</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-08 01:52:11 -0800</bug_when>
    <thetext>[meta] DOMWindow::m_securityOrigin must die</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531737</commentid>
    <comment_count>1</comment_count>
      <attachid>121574</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-08 01:53:02 -0800</bug_when>
    <thetext>Created attachment 121574
crazy large proof-of-concept</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531738</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-08 01:55:17 -0800</bug_when>
    <thetext>It&apos;s crazy that DOMWindow has its own secret version of m_securityOrigin.  We should only have one canonical place to store that state (which is the SecurityContext base class).

Unfortunately, removing this state triggers a massive yak shave to move a lot of bindings code away from using DOMWindow as a context object and towards using ScriptExecutionContext, which is the right thing anyway.

I&apos;ll post the real patches on separate bugs that block this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685593</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-02 11:09:22 -0700</bug_when>
    <thetext>I&apos;m going to try this again.  I&apos;m going to take a somewhat long path to make this happen, but hopefully I&apos;ll improve a bunch of things about the bindings along the way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695320</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-14 13:18:22 -0700</bug_when>
    <thetext>As of &lt;http://trac.webkit.org/changeset/125592&gt;, DOMWindow::m_securityOrigin is now dead.  I&apos;m going to use this meta bug to various related cleanup patches now that we&apos;re &quot;over the hump.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695342</commentid>
    <comment_count>5</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-08-14 13:43:20 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; As of &lt;http://trac.webkit.org/changeset/125592&gt;, DOMWindow::m_securityOrigin is now dead.  I&apos;m going to use this meta bug to various related cleanup patches now that we&apos;re &quot;over the hump.&quot;

Whoa.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121574</attachid>
            <date>2012-01-08 01:53:02 -0800</date>
            <delta_ts>2012-08-02 11:14:24 -0700</delta_ts>
            <desc>crazy large proof-of-concept</desc>
            <filename>bug-75793-20120108015301.patch</filename>
            <type>text/plain</type>
            <size>65037</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNDM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMSBAQAorMjAxMi0wMS0wOCAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFttZXRhXSBET01XaW5kb3c6Om1f
c2VjdXJpdHlPcmlnaW4gbXVzdCBkaWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc1NzkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyB3YXkgdG9vIGxhcmdlIHRvIGxhbmQsIG9mIGNv
dXJzZSwgYnV0IGl0J3MgYQorICAgICAgICBwcm9vZi1vZi1jb25jZXB0IGZvciBhbiBhcHByb2Fj
aCB0byByZW1vdmluZworICAgICAgICBET01XaW5kb3c6Om1fc2VjdXJpdHlPcmlnaW4uCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdTZWN1cml0eS5oOgorICAgICAgICAoV2Vi
Q29yZTo6QmluZGluZ1NlY3VyaXR5OjpCaW5kaW5nU2VjdXJpdHkpOgorICAgICAgICAoV2ViQ29y
ZTo6OjpjYW5BY2Nlc3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ojo6Y2FuQWNjZXNzRnJh
bWUpOgorICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvQmluZGluZ1NlY3VyaXR5QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nU2VjdXJpdHlCYXNlOjpjYW5BY2Nlc3MpOgorICAg
ICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvQmluZGluZ1NlY3VyaXR5QmFzZS5oOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjphY3RpdmVD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmZpcnN0Q29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjphbGxvd0FjY2Vzc1RvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjphbGxvd0FjY2Vz
c1RvTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjphbGxvd0FjY2Vzc1RvRnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6YWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnNldExvY2F0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2cpOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUG9z
dE1lc3NhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmFsbG93c0FjY2Vzc0Zyb20pOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjphbGxvd3NBY2Nlc3NGcm9tTm9FcnJvck1l
c3NhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6c2V0SHJlZik6CisgICAgICAgIChXZWJDb3JlOjpK
U0xvY2F0aW9uOjpzZXRQcm90b2NvbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpz
ZXRIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OnNldEhvc3RuYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OnNldFBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6
SlNMb2NhdGlvbjo6c2V0UGF0aG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6
c2V0U2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OnNldEhhc2gpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6cmVwbGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpK
U0xvY2F0aW9uOjpyZWxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6YXNzaWdu
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG06CisgICAg
ICAgIChTaG91bGRTa2lwVHlwZUluSW1wbGVtZW50YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG06CisgICAgICAgICgpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVQ
YXJhbWV0ZXJzQ2hlY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtOgorICAgICAgICAoR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOERPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hl
bGw6OnNldExvY2F0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5k
b3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmxvY2F0aW9uQWNj
ZXNzb3JTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OnNob3dNb2RhbERp
YWxvZ0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpvcGVuQ2FsbGJh
Y2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246Omhhc2hBY2Nlc3NvclNldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpob3N0QWNjZXNzb3JTZXR0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6VjhMb2NhdGlvbjo6aG9zdG5hbWVBY2Nlc3NvclNldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpWOExvY2F0aW9uOjpocmVmQWNjZXNzb3JTZXR0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhMb2NhdGlvbjo6cGF0aG5hbWVBY2Nlc3NvclNldHRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpWOExvY2F0aW9uOjpwb3J0QWNjZXNzb3JTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhM
b2NhdGlvbjo6cHJvdG9jb2xBY2Nlc3NvclNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOExv
Y2F0aW9uOjpzZWFyY2hBY2Nlc3NvclNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0
aW9uOjpyZWxvYWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZXBs
YWNlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6YXNzaWduQ2FsbGJh
Y2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L3NwZWNpYWxpemF0aW9uL1Y4QmluZGluZ1N0YXRl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ojo6YWN0aXZlQ29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjo6OmZpcnN0Q29udGV4dCk6CisgICAgICAgICogYmluZGluZ3Mvdjgvc3BlY2lhbGl6YXRp
b24vVjhCaW5kaW5nU3RhdGUuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6YXNEb2N1bWVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
V3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjpiZWdpbik6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpzZXRPcGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6Om9wZW4p
OgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdp
bmRvdzo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpzZXRMb2NhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6aXNJbnNlY3VyZVNjcmlwdEFjY2Vz
cyk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3c6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93
OjpzaG93TW9kYWxEaWFsb2cpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAg
ICogcGFnZS9Mb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0SHJl
Zik6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0UHJvdG9jb2wpOgorICAgICAgICAo
V2ViQ29yZTo6TG9jYXRpb246OnNldEhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246
OnNldEhvc3RuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQb3J0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQYXRobmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMb2NhdGlvbjo6c2V0U2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRI
YXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjphc3NpZ24pOgorICAgICAgICAoV2Vi
Q29yZTo6TG9jYXRpb246OnJlcGxhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnJl
bG9hZCk6CisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5oOgorCiAyMDEyLTAxLTA3ICBBbmRyZWFz
IEtsaW5nICA8YXdlc29tZWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBBdHRlbXB0IHRvIHJl
Z2VuZXJhdGUgYmluZGluZ3Mgb24gdGhlIFdpbmRvd3MgYm90LgpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ2VuZXJpYy9CaW5kaW5nU2VjdXJpdHkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdTZWN1cml0eS5oCShyZXZpc2lvbiAx
MDQzOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdTZWN1cml0
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCwzNSArNjQsMzAgQEAgcHVibGljOgogICAgIHN0YXRp
YyBib29sIHNob3VsZEFsbG93TmF2aWdhdGlvbihTdGF0ZTxCaW5kaW5nPiosIEZyYW1lKik7CiAK
IHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQmluZGluZ1NlY3VyaXR5KCkge30KKyAgICBCaW5kaW5n
U2VjdXJpdHkoKSB7fQogICAgIH5CaW5kaW5nU2VjdXJpdHkoKTsKIAotICAgIC8vIENoZWNrIGlm
IHRoZSBjdXJyZW50IERPTVdpbmRvdydzIHNlY3VyaXR5IGNvbnRleHQgY2FuIGFjY2VzcyB0aGUg
dGFyZ2V0Ci0gICAgLy8gRE9NV2luZG93LiAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXBvcnQg
ZXJyb3JzLCBzbyBtb3N0IGNhbGxlcnMgc2hvdWxkCi0gICAgLy8gdXNlIGNhbkFjY2Vzc0ZyYW1l
IGluc3RlYWQuCi0gICAgc3RhdGljIGJvb2wgY2FuQWNjZXNzV2luZG93KFN0YXRlPEJpbmRpbmc+
KiwgRE9NV2luZG93KiB0YXJnZXQpOworICAgIC8vIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmVw
b3J0IGVycm9ycywgc28gbW9zdCBjYWxsZXJzIHNob3VsZCB1c2UKKyAgICAvLyBjYW5BY2Nlc3NG
cmFtZSBpbnN0ZWFkLgorICAgIHN0YXRpYyBib29sIGNhbkFjY2Vzc0NvbnRleHQoU3RhdGU8Qmlu
ZGluZz4qLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiB9OwogCiAvLyBJbXBsZW1lbnRhdGlv
bnMgb2YgdGVtcGxhdGVkIG1ldGhvZHMgbXVzdCBiZSBpbiB0aGlzIGZpbGUuCiAKIHRlbXBsYXRl
IDxjbGFzcyBCaW5kaW5nPgotYm9vbCBCaW5kaW5nU2VjdXJpdHk8QmluZGluZz46OmNhbkFjY2Vz
c1dpbmRvdyhTdGF0ZTxCaW5kaW5nPiogc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERPTVdpbmRvdyogdGFyZ2V0V2luZG93KQorYm9vbCBCaW5k
aW5nU2VjdXJpdHk8QmluZGluZz46OmNhbkFjY2Vzc0NvbnRleHQoU3RhdGU8QmluZGluZz4qIHN0
YXRlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiB0YXJnZXRDb250ZXh0KQogewotICAgIERPTVdp
bmRvdyogYWN0aXZlV2luZG93ID0gc3RhdGUtPmFjdGl2ZVdpbmRvdygpOwotICAgIHJldHVybiBj
YW5BY2Nlc3MoYWN0aXZlV2luZG93LCB0YXJnZXRXaW5kb3cpOworICAgIHJldHVybiBjYW5BY2Nl
c3Moc3RhdGUtPmFjdGl2ZUNvbnRleHQoKSwgdGFyZ2V0Q29udGV4dCk7CiB9CiAKIHRlbXBsYXRl
IDxjbGFzcyBCaW5kaW5nPgotYm9vbCBCaW5kaW5nU2VjdXJpdHk8QmluZGluZz46OmNhbkFjY2Vz
c0ZyYW1lKFN0YXRlPEJpbmRpbmc+KiBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGcmFtZSogdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVwb3J0RXJyb3IpCitib29sIEJpbmRpbmdT
ZWN1cml0eTxCaW5kaW5nPjo6Y2FuQWNjZXNzRnJhbWUoU3RhdGU8QmluZGluZz4qIHN0YXRlLCBG
cmFtZSogdGFyZ2V0LCBib29sIHJlcG9ydEVycm9yKQogewogICAgIC8vIFRoZSBzdWJqZWN0IGlz
IGRldGFjaGVkIGZyb20gYSBmcmFtZSwgZGVueSBhY2Nlc3Nlcy4KICAgICBpZiAoIXRhcmdldCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFjYW5BY2Nlc3NXaW5kb3coc3RhdGUs
IGdldERPTVdpbmRvdyh0YXJnZXQpKSkgeworICAgIGlmICghY2FuQWNjZXNzQ29udGV4dChzdGF0
ZSwgdGFyZ2V0LT5kb2N1bWVudCgpKSkgewogICAgICAgICBpZiAocmVwb3J0RXJyb3IpCiAgICAg
ICAgICAgICBzdGF0ZS0+aW1tZWRpYXRlbHlSZXBvcnRVbnNhZmVBY2Nlc3NUbyh0YXJnZXQpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5l
cmljL0JpbmRpbmdTZWN1cml0eUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2dlbmVyaWMvQmluZGluZ1NlY3VyaXR5QmFzZS5jcHAJKHJldmlzaW9uIDEwNDM5
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQmluZGluZ1NlY3VyaXR5QmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDI3ICs0OCwyNCBAQCBGcmFtZSogQmluZGluZ1Nl
Y3VyaXR5QmFzZTo6Z2V0RnJhbWUoTm9kCiAgICAgcmV0dXJuIG5vZGUtPmRvY3VtZW50KCktPmZy
YW1lKCk7CiB9CiAKLWJvb2wgQmluZGluZ1NlY3VyaXR5QmFzZTo6Y2FuQWNjZXNzKERPTVdpbmRv
dyogYWN0aXZlV2luZG93LCBET01XaW5kb3cqIHRhcmdldFdpbmRvdykKK2Jvb2wgQmluZGluZ1Nl
Y3VyaXR5QmFzZTo6Y2FuQWNjZXNzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGFjdGl2ZUNvbnRl
eHQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHRhcmdldENvbnRleHQpCiB7Ci0gICAgQVNTRVJU
KHRhcmdldFdpbmRvdyk7Ci0gICAgaWYgKGFjdGl2ZVdpbmRvdyA9PSB0YXJnZXRXaW5kb3cpCisg
ICAgQVNTRVJUKHRhcmdldENvbnRleHQpOworICAgIGlmIChhY3RpdmVDb250ZXh0ID09IHRhcmdl
dENvbnRleHQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKCFhY3RpdmVXaW5kb3cp
CisgICAgaWYgKCFhY3RpdmVDb250ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBT
ZWN1cml0eU9yaWdpbiogYWN0aXZlU2VjdXJpdHlPcmlnaW4gPSBhY3RpdmVXaW5kb3ctPnNlY3Vy
aXR5T3JpZ2luKCk7Ci0gICAgU2VjdXJpdHlPcmlnaW4qIHRhcmdldFNlY3VyaXR5T3JpZ2luID0g
dGFyZ2V0V2luZG93LT5zZWN1cml0eU9yaWdpbigpOworICAgIFNlY3VyaXR5T3JpZ2luKiBhY3Rp
dmVTZWN1cml0eU9yaWdpbiA9IGFjdGl2ZUNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCk7CisgICAg
U2VjdXJpdHlPcmlnaW4qIHRhcmdldFNlY3VyaXR5T3JpZ2luID0gdGFyZ2V0Q29udGV4dC0+c2Vj
dXJpdHlPcmlnaW4oKTsKIAogICAgIC8vIFdlIGhhdmUgc2VlbiBjcmFzaGVzIHdlcmUgdGhlIHNl
Y3VyaXR5IG9yaWdpbiBvZiB0aGUgdGFyZ2V0IGhhcyBub3QgYmVlbgogICAgIC8vIGluaXRpYWxp
emVkLiBEZWZlbmQgYWdhaW5zdCB0aGF0LgogICAgIGlmICghdGFyZ2V0U2VjdXJpdHlPcmlnaW4p
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChhY3RpdmVTZWN1cml0eU9yaWdpbi0+
Y2FuQWNjZXNzKHRhcmdldFNlY3VyaXR5T3JpZ2luKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGFjdGl2ZVNlY3VyaXR5T3JpZ2luLT5jYW5B
Y2Nlc3ModGFyZ2V0U2VjdXJpdHlPcmlnaW4pOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdTZWN1cml0eUJhc2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdTZWN1cml0eUJhc2UuaAkocmV2
aXNpb24gMTA0Mzk3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9CaW5kaW5n
U2VjdXJpdHlCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgRE9NV2luZG93OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBOb2RlOwor
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3Ig
QmluZGluZ1NlY3VyaXR5IHRoYXQgZGVwZW5kIG9uIFdlYkNvcmUgY2xhc3NlcywgYW5kCiAvLyB0
aHVzIHNob3VsZCBub3QgYmUgaW1wbGVtZW50ZWQgaW4gQmluZGluZ1NlY3VyaXR5LmgsIHdoaWNo
IGNvbnRhaW5zIHRlbXBsYXRlCkBAIC00NCw3ICs0NSw3IEBAIGNsYXNzIEJpbmRpbmdTZWN1cml0
eUJhc2UgewogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBET01XaW5kb3cqIGdldERPTVdpbmRvdyhG
cmFtZSopOwogICAgIHN0YXRpYyBGcmFtZSogZ2V0RnJhbWUoTm9kZSopOwotICAgIHN0YXRpYyBi
b29sIGNhbkFjY2VzcyhET01XaW5kb3cqIGFjdGl2ZSwgRE9NV2luZG93KiB0YXJnZXQpOworICAg
IHN0YXRpYyBib29sIGNhbkFjY2VzcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBhY3RpdmVDb250
ZXh0LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiB0YXJnZXRDb250ZXh0KTsKIH07CiAKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkocmV2aXNp
b24gMTA0Mzk3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjA2LDM1ICsyMDYsNDIgQEAgdm9pZCBzZXRET01FeGNlcHRp
b24oRXhlY1N0YXRlKiBleGVjLCBFeAogCiAjdW5kZWYgVFJZX1RPX0NSRUFURV9FWENFUFRJT04K
IAotRE9NV2luZG93KiBhY3RpdmVET01XaW5kb3coRXhlY1N0YXRlKiBleGVjKQorU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogYWN0aXZlQ29udGV4dChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0
dXJuIGFzSlNET01XaW5kb3coZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+aW1wbCgpOwor
ICAgIHJldHVybiBhc0pTRE9NV2luZG93KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPmlt
cGwoKS0+ZG9jdW1lbnQoKTsKIH0KIAotRE9NV2luZG93KiBmaXJzdERPTVdpbmRvdyhFeGVjU3Rh
dGUqIGV4ZWMpCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBmaXJzdENvbnRleHQoRXhlY1N0YXRl
KiBleGVjKQogewotICAgIHJldHVybiBhc0pTRE9NV2luZG93KGV4ZWMtPmR5bmFtaWNHbG9iYWxP
YmplY3QoKSktPmltcGwoKTsKKyAgICByZXR1cm4gYXNKU0RPTVdpbmRvdyhleGVjLT5keW5hbWlj
R2xvYmFsT2JqZWN0KCkpLT5pbXBsKCktPmRvY3VtZW50KCk7CiB9CiAKLWJvb2wgY2hlY2tOb2Rl
U2VjdXJpdHkoRXhlY1N0YXRlKiBleGVjLCBOb2RlKiBub2RlKQorYm9vbCBhbGxvd0FjY2Vzc1Rv
Q29udGV4dChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogdGFy
Z2V0Q29udGV4dCkKIHsKLSAgICByZXR1cm4gbm9kZSAmJiBhbGxvd3NBY2Nlc3NGcm9tRnJhbWUo
ZXhlYywgbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSk7CisgICAgcmV0dXJuIGFjdGl2ZUNvbnRl
eHQoZXhlYyktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzcyh0YXJnZXRDb250ZXh0KCktPnNl
Y3VyaXR5T3JpZ2luKCkpOwogfQogCi1ib29sIGFsbG93c0FjY2Vzc0Zyb21GcmFtZShFeGVjU3Rh
dGUqIGV4ZWMsIEZyYW1lKiBmcmFtZSkKK2Jvb2wgYWxsb3dBY2Nlc3NUb0NvbnRleHQoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHRhcmdldENvbnRleHQsIFN0
cmluZyYgbWVzc2FnZSkKIHsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IHRvSlNET01XaW5kb3coZnJhbWUsIGN1cnJlbnRX
b3JsZChleGVjKSk7Ci0gICAgcmV0dXJuIHdpbmRvdyAmJiB3aW5kb3ctPmFsbG93c0FjY2Vzc0Zy
b20oZXhlYyk7CisgICAgaWYgKGFsbG93QWNjZXNzVG9Db250ZXh0KGV4ZWMsIHRhcmdldENvbnRl
eHQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBtZXNzYWdlID0gY3Jvc3NEb21haW5BY2Nl
c3NFcnJvck1lc3NhZ2UoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLWJvb2wgYWxsb3dzQWNjZXNzRnJvbUZyYW1lKEV4ZWNTdGF0ZSogZXhlYywg
RnJhbWUqIGZyYW1lLCBTdHJpbmcmIG1lc3NhZ2UpCitib29sIGFsbG93QWNjZXNzVG9Ob2RlKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBOb2RlKiBub2RlKQogewotICAgIGlmICghZnJhbWUpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gdG9KU0RPTVdpbmRv
dyhmcmFtZSwgY3VycmVudFdvcmxkKGV4ZWMpKTsKLSAgICByZXR1cm4gd2luZG93ICYmIHdpbmRv
dy0+YWxsb3dzQWNjZXNzRnJvbShleGVjLCBtZXNzYWdlKTsKKyAgICByZXR1cm4gYWxsb3dBY2Nl
c3NUb0NvbnRleHQoZXhlYywgbm9kZS0+ZG9jdW1lbnQoKSk7Cit9CisKK2Jvb2wgYWxsb3dBY2Nl
c3NUb0ZyYW1lKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBGcmFtZSogZnJhbWUpCit7CisgICAgcmV0
dXJuIGZyYW1lICYmIGFsbG93QWNjZXNzVG9Db250ZXh0KGV4ZWMsIGZyYW1lLT5kb2N1bWVudCgp
KTsKK30KKworYm9vbCBhbGxvd0FjY2Vzc1RvRE9NV2luZG93KEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBET01XaW5kb3cqIHdpbmRvdykKK3sKKyAgICByZXR1cm4gd2luZG93ICYmIGFsbG93QWNjZXNz
VG9Db250ZXh0KGV4ZWMsIHdpbmRvdy0+ZG9jdW1lbnQoKSk7CiB9CiAKIHZvaWQgcHJpbnRFcnJv
ck1lc3NhZ2VGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKQEAg
LTI0NCwxMiArMjUxLDYgQEAgdm9pZCBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKEZyYW1lKiBm
cgogICAgIGZyYW1lLT5kb21XaW5kb3coKS0+cHJpbnRFcnJvck1lc3NhZ2UobWVzc2FnZSk7CiB9
CiAKLS8vIEZJWE1FOiBXZSBzaG91bGQgcmVtb3ZlIG9yIGF0IGxlYXN0IGRlcHJlY2F0ZSB0aGlz
IGZ1bmN0aW9uLiBDYWxsZXJzIGNhbiB1c2UgZmlyc3RET01XaW5kb3cgZGlyZWN0bHkuCi1GcmFt
ZSogdG9EeW5hbWljRnJhbWUoRXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBmaXJzdERP
TVdpbmRvdyhleGVjKS0+ZnJhbWUoKTsKLX0KLQogSlNWYWx1ZSBvYmplY3RUb1N0cmluZ0Z1bmN0
aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKQogewogICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAwLCBwcm9wZXJ0eU5hbWUsIG9iamVjdFByb3RvRnVuY1Rv
U3RyaW5nKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5o
CShyZXZpc2lvbiAxMDQzOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjgwLDIyICsyODAsMTkgQEAgZW51bSBQYXJhbWV0
ZXJNaXNzaW5nUG9saWN5IHsKICAgICAvLyBWYWxpZGF0ZXMgdGhhdCB0aGUgcGFzc2VkIG9iamVj
dCBpcyBhIHNlcXVlbmNlIHR5cGUgcGVyIHNlY3Rpb24gNC4xLjEzIG9mIHRoZSBXZWJJREwgc3Bl
Yy4KICAgICBKU0M6OkpTT2JqZWN0KiB0b0pTU2VxdWVuY2UoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUsIHVuc2lnbmVkJik7CiAKLSAgICBib29sIGNoZWNrTm9kZVNlY3VyaXR5KEpTQzo6
RXhlY1N0YXRlKiwgTm9kZSopOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGFjdGl2ZUNv
bnRleHQoSlNDOjpFeGVjU3RhdGUqKTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBmaXJz
dENvbnRleHQoSlNDOjpFeGVjU3RhdGUqKTsKIAotICAgIC8vIEhlbHBlcnMgZm9yIFdpbmRvdywg
SGlzdG9yeSwgYW5kIExvY2F0aW9uIGNsYXNzZXMgdG8gaW1wbGVtZW50IGNyb3NzLWRvbWFpbiBw
b2xpY3kuCi0gICAgLy8gQmVzaWRlcyB0aGUgY3Jvc3MtZG9tYWluIGNoZWNrLCB0aGV5IG5lZWQg
bm9uLWNhY2hpbmcgdmVyc2lvbnMgb2Ygc3RhdGljRnVuY3Rpb25HZXR0ZXIgZm9yCi0gICAgLy8g
YmVjYXVzZSB3ZSBkbyBub3Qgd2FudCBjdXJyZW50IHByb3BlcnR5IHZhbHVlcyBpbnZvbHZlZCBh
dCBhbGwuCi0gICAgLy8gRklYTUU6IFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgbmFtZWQgZnJh
bWVBbGxvd3NBY2Nlc3NGcm9tLCBiZWNhdXNlIHRoZSBhY2Nlc3MgaXMgKnRvKiB0aGUgZnJhbWUu
Ci0gICAgYm9vbCBhbGxvd3NBY2Nlc3NGcm9tRnJhbWUoSlNDOjpFeGVjU3RhdGUqLCBGcmFtZSop
OwotICAgIGJvb2wgYWxsb3dzQWNjZXNzRnJvbUZyYW1lKEpTQzo6RXhlY1N0YXRlKiwgRnJhbWUq
LCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIERPTVdpbmRvdyogYWN0aXZlRE9NV2luZG93KEpTQzo6
RXhlY1N0YXRlKik7Ci0gICAgRE9NV2luZG93KiBmaXJzdERPTVdpbmRvdyhKU0M6OkV4ZWNTdGF0
ZSopOworICAgIGJvb2wgYWxsb3dBY2Nlc3NUb0NvbnRleHQoSlNDOjpFeGVjU3RhdGUqLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgYm9vbCBhbGxvd0FjY2Vzc1RvQ29udGV4dChKU0M6
OkV4ZWNTdGF0ZSosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBTdHJpbmcmIG1lc3NhZ2UpOwor
CisgICAgYm9vbCBhbGxvd0FjY2Vzc1RvTm9kZShKU0M6OkV4ZWNTdGF0ZSosIE5vZGUqKTsKKyAg
ICBib29sIGFsbG93QWNjZXNzVG9GcmFtZShKU0M6OkV4ZWNTdGF0ZSosIEZyYW1lKik7CisgICAg
Ym9vbCBhbGxvd0FjY2Vzc1RvRE9NV2luZG93KEpTQzo6RXhlY1N0YXRlKiwgRE9NV2luZG93Kik7
CiAKICAgICB2b2lkIHByaW50RXJyb3JNZXNzYWdlRm9yRnJhbWUoRnJhbWUqLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOwogICAgIEpTQzo6SlNWYWx1ZSBvYmplY3RUb1N0cmluZ0Z1bmN0aW9uR2V0
dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSk7CiAKLSAgICBGcmFtZSogdG9EeW5hbWljRnJhbWUoSlNDOjpFeGVjU3Rh
dGUqKTsKLQogICAgIGlubGluZSBKU0M6OkpTVmFsdWUganNTdHJpbmcoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFN0cmluZyYgcykKICAgICB7CiAgICAgICAgIFN0cmluZ0ltcGwqIHN0cmlu
Z0ltcGwgPSBzLmltcGwoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDEwNDM5NykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDUwLDcgKzQ1MCw3IEBAIHZvaWQgSlNET01XaW5kb3c6OnNldExvY2F0aW9uKEV4ZWNTdGF0ZSoK
ICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgLy8gVG8gYXZvaWQgYnJlYWtpbmcg
b2xkIHdpZGdldHMsIG1ha2UgInZhciBsb2NhdGlvbiA9IiBpbiBhIHRvcC1sZXZlbCBmcmFtZSBj
cmVhdGUKICAgICAvLyBhIHByb3BlcnR5IG5hbWVkICJsb2NhdGlvbiIgaW5zdGVhZCBvZiBwZXJm
b3JtaW5nIGEgbmF2aWdhdGlvbiAoPHJkYXI6Ly9wcm9ibGVtLzU2ODgwMzk+KS4KLSAgICBpZiAo
RnJhbWUqIGFjdGl2ZUZyYW1lID0gYWN0aXZlRE9NV2luZG93KGV4ZWMpLT5mcmFtZSgpKSB7Cisg
ICAgaWYgKEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFjdGl2ZUNvbnRleHQoZXhlYyktPmFzRG9jdW1l
bnQoKS0+ZnJhbWUoKSkgewogICAgICAgICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gYWN0aXZl
RnJhbWUtPnNldHRpbmdzKCkpIHsKICAgICAgICAgICAgIGlmIChzZXR0aW5ncy0+dXNlc0Rhc2hi
b2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSAmJiAhYWN0aXZlRnJhbWUtPnRyZWUoKS0+
cGFyZW50KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoYWxsb3dzQWNjZXNzRnJvbShleGVjKSkK
QEAgLTQ2NSw3ICs0NjUsNyBAQCB2b2lkIEpTRE9NV2luZG93OjpzZXRMb2NhdGlvbihFeGVjU3Rh
dGUqCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpbXBsKCktPnNldExvY2F0aW9uKHVzdHJpbmdUb1N0cmluZyhsb2NhdGlvblN0cmluZyksIGFj
dGl2ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOworICAgIGltcGwoKS0+
c2V0TG9jYXRpb24odXN0cmluZ1RvU3RyaW5nKGxvY2F0aW9uU3RyaW5nKSwgYWN0aXZlQ29udGV4
dChleGVjKSwgZmlyc3RDb250ZXh0KGV4ZWMpKTsKIH0KIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6
ZXZlbnQoRXhlY1N0YXRlKiBleGVjKSBjb25zdApAQCAtNTE4LDcgKzUxOCw3IEBAIEpTVmFsdWUg
SlNET01XaW5kb3c6Om9wZW4oRXhlY1N0YXRlKiBleGUKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgUmVmUHRyPERPTVdp
bmRvdz4gb3BlbmVkV2luZG93ID0gaW1wbCgpLT5vcGVuKHVybFN0cmluZywgZnJhbWVOYW1lLCB3
aW5kb3dGZWF0dXJlc1N0cmluZywgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRv
dyhleGVjKSk7CisgICAgUmVmUHRyPERPTVdpbmRvdz4gb3BlbmVkV2luZG93ID0gaW1wbCgpLT5v
cGVuKHVybFN0cmluZywgZnJhbWVOYW1lLCB3aW5kb3dGZWF0dXJlc1N0cmluZywgYWN0aXZlQ29u
dGV4dChleGVjKSwgZmlyc3RDb250ZXh0KGV4ZWMpKTsKICAgICBpZiAoIW9wZW5lZFdpbmRvdykK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgcmV0dXJuIHRvSlMoZXhlYywgb3Bl
bmVkV2luZG93LmdldCgpKTsKQEAgLTU3Nyw3ICs1NzcsNyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93
OjpzaG93TW9kYWxEaWFsb2coRXhlCiAKICAgICBEaWFsb2dIYW5kbGVyIGhhbmRsZXIoZXhlYyk7
CiAKLSAgICBpbXBsKCktPnNob3dNb2RhbERpYWxvZyh1cmxTdHJpbmcsIGRpYWxvZ0ZlYXR1cmVz
U3RyaW5nLCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9NV2luZG93KGV4ZWMpLCBzZXRV
cERpYWxvZywgJmhhbmRsZXIpOworICAgIGltcGwoKS0+c2hvd01vZGFsRGlhbG9nKHVybFN0cmlu
ZywgZGlhbG9nRmVhdHVyZXNTdHJpbmcsIGFjdGl2ZUNvbnRleHQoZXhlYyksIGZpcnN0Q29udGV4
dChleGVjKSwgc2V0VXBEaWFsb2csICZoYW5kbGVyKTsKIAogICAgIHJldHVybiBoYW5kbGVyLnJl
dHVyblZhbHVlKCk7CiB9CkBAIC02MTUsNyArNjE1LDcgQEAgc3RhdGljIEpTVmFsdWUgaGFuZGxl
UG9zdE1lc3NhZ2UoRE9NV2luZAogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwtPnBvc3RNZXNzYWdlKG1lc3NhZ2UucmVs
ZWFzZSgpLCAmbWVzc2FnZVBvcnRzLCB0YXJnZXRPcmlnaW4sIGFjdGl2ZURPTVdpbmRvdyhleGVj
KSwgZWMpOworICAgIGltcGwtPnBvc3RNZXNzYWdlKG1lc3NhZ2UucmVsZWFzZSgpLCAmbWVzc2Fn
ZVBvcnRzLCB0YXJnZXRPcmlnaW4sIGFjdGl2ZUNvbnRleHQoZXhlYyksIGVjKTsKICAgICBzZXRE
T01FeGNlcHRpb24oZXhlYywgZWMpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmgJKHJl
dmlzaW9uIDEwNDM5NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE3ICszNiw5IEBAIGlubGluZSBjb25zdCBK
U0RPTVdpbmRvdyogYXNKU0RPTVdpbmRvdygKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
SlNET01XaW5kb3cqPihnbG9iYWxPYmplY3QpOwogfQogCi1pbmxpbmUgYm9vbCBKU0RPTVdpbmRv
d0Jhc2U6OmFsbG93c0FjY2Vzc0Zyb20oY29uc3QgSlNHbG9iYWxPYmplY3QqIG90aGVyKSBjb25z
dAotewotICAgIGlmIChhbGxvd3NBY2Nlc3NGcm9tUHJpdmF0ZShvdGhlcikpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIHByaW50RXJyb3JNZXNzYWdlKGNyb3NzRG9tYWluQWNjZXNzRXJyb3JN
ZXNzYWdlKG90aGVyKSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBpbmxpbmUgYm9vbCBKU0RP
TVdpbmRvd0Jhc2U6OmFsbG93c0FjY2Vzc0Zyb20oSlNDOjpFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CiB7Ci0gICAgaWYgKGFsbG93c0FjY2Vzc0Zyb21Qcml2YXRlKGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSkpCisgICAgaWYgKGFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgaW1wbCgpKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcHJpbnRFcnJvck1lc3NhZ2UoY3Jvc3NEb21haW5B
Y2Nlc3NFcnJvck1lc3NhZ2UoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7CiAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtNTQsMzAgKzQ2LDE2IEBAIGlubGluZSBib29sIEpTRE9NV2luZG93QmFz
ZTo6YWxsb3dzQWNjZXMKICAgICAKIGlubGluZSBib29sIEpTRE9NV2luZG93QmFzZTo6YWxsb3dz
QWNjZXNzRnJvbU5vRXJyb3JNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiBleGVjKSBjb25zdAogewot
ICAgIHJldHVybiBhbGxvd3NBY2Nlc3NGcm9tUHJpdmF0ZShleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpOworICAgIHJldHVybiBhbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGltcGwoKSkp
OwogfQogICAgIAogaW5saW5lIGJvb2wgSlNET01XaW5kb3dCYXNlOjphbGxvd3NBY2Nlc3NGcm9t
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBTdHJpbmcmIG1lc3NhZ2UpIGNvbnN0CiB7Ci0gICAgaWYg
KGFsbG93c0FjY2Vzc0Zyb21Qcml2YXRlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpCisg
ICAgaWYgKGFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgaW1wbCgpKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgbWVzc2FnZSA9IGNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQotICAgIAot
QUxXQVlTX0lOTElORSBib29sIEpTRE9NV2luZG93QmFzZTo6YWxsb3dzQWNjZXNzRnJvbVByaXZh
dGUoY29uc3QgSlNHbG9iYWxPYmplY3QqIG90aGVyKSBjb25zdAotewotICAgIGNvbnN0IEpTRE9N
V2luZG93KiBvcmlnaW5XaW5kb3cgPSBhc0pTRE9NV2luZG93KG90aGVyKTsKLSAgICBjb25zdCBK
U0RPTVdpbmRvdyogdGFyZ2V0V2luZG93ID0gbV9zaGVsbC0+d2luZG93KCk7Ci0KLSAgICBpZiAo
b3JpZ2luV2luZG93ID09IHRhcmdldFdpbmRvdykKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICBjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luU2VjdXJpdHlPcmlnaW4gPSBvcmlnaW5XaW5k
b3ctPmltcGwoKS0+c2VjdXJpdHlPcmlnaW4oKTsKLSAgICBjb25zdCBTZWN1cml0eU9yaWdpbiog
dGFyZ2V0U2VjdXJpdHlPcmlnaW4gPSB0YXJnZXRXaW5kb3ctPmltcGwoKS0+c2VjdXJpdHlPcmln
aW4oKTsKLQotICAgIHJldHVybiBvcmlnaW5TZWN1cml0eU9yaWdpbi0+Y2FuQWNjZXNzKHRhcmdl
dFNlY3VyaXR5T3JpZ2luKTsKLX0KIAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMTA0Mzk3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIEpTTG9jYXRpb246OnNldEhyZWYoRXhlY1N0YXRl
KiBleGVjCiAgICAgVVN0cmluZyBocmVmID0gdmFsdWUudG9TdHJpbmcoZXhlYyk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLT5zZXRI
cmVmKHVzdHJpbmdUb1N0cmluZyhocmVmKSwgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERP
TVdpbmRvdyhleGVjKSk7CisgICAgaW1wbCgpLT5zZXRIcmVmKHVzdHJpbmdUb1N0cmluZyhocmVm
KSwgYWN0aXZlQ29udGV4dChleGVjKSwgZmlyc3RDb250ZXh0KGV4ZWMpKTsKIH0KIAogdm9pZCBK
U0xvY2F0aW9uOjpzZXRQcm90b2NvbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCkBA
IC0xOTEsNyArMTkxLDcgQEAgdm9pZCBKU0xvY2F0aW9uOjpzZXRQcm90b2NvbChFeGVjU3RhdGUq
IAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwoKS0+c2V0UHJvdG9jb2wodXN0cmluZ1RvU3Ry
aW5nKHByb3RvY29sKSwgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVj
KSwgZWMpOworICAgIGltcGwoKS0+c2V0UHJvdG9jb2wodXN0cmluZ1RvU3RyaW5nKHByb3RvY29s
KSwgYWN0aXZlQ29udGV4dChleGVjKSwgZmlyc3RDb250ZXh0KGV4ZWMpLCBlYyk7CiAgICAgc2V0
RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKIH0KIApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgSlNM
b2NhdGlvbjo6c2V0SG9zdChFeGVjU3RhdGUqIGV4ZWMKICAgICBVU3RyaW5nIGhvc3QgPSB2YWx1
ZS50b1N0cmluZyhleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBpbXBsKCktPnNldEhvc3QodXN0cmluZ1RvU3RyaW5nKGhvc3QpLCBhY3Rp
dmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9NV2luZG93KGV4ZWMpKTsKKyAgICBpbXBsKCktPnNl
dEhvc3QodXN0cmluZ1RvU3RyaW5nKGhvc3QpLCBhY3RpdmVDb250ZXh0KGV4ZWMpLCBmaXJzdENv
bnRleHQoZXhlYykpOwogfQogCiB2b2lkIEpTTG9jYXRpb246OnNldEhvc3RuYW1lKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIEpTTG9jYXRp
b246OnNldEhvc3RuYW1lKEV4ZWNTdGF0ZSogCiAgICAgVVN0cmluZyBob3N0bmFtZSA9IHZhbHVl
LnRvU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuOwotICAgIGltcGwoKS0+c2V0SG9zdG5hbWUodXN0cmluZ1RvU3RyaW5nKGhvc3RuYW1l
KSwgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVjKSk7CisgICAgaW1w
bCgpLT5zZXRIb3N0bmFtZSh1c3RyaW5nVG9TdHJpbmcoaG9zdG5hbWUpLCBhY3RpdmVDb250ZXh0
KGV4ZWMpLCBmaXJzdENvbnRleHQoZXhlYykpOwogfQogCiB2b2lkIEpTTG9jYXRpb246OnNldFBv
cnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQpAQCAtMjE2LDcgKzIxNiw3IEBAIHZv
aWQgSlNMb2NhdGlvbjo6c2V0UG9ydChFeGVjU3RhdGUqIGV4ZWMKICAgICBVU3RyaW5nIHBvcnQg
PSB2YWx1ZS50b1N0cmluZyhleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybjsKLSAgICBpbXBsKCktPnNldFBvcnQodXN0cmluZ1RvU3RyaW5nKHBvcnQp
LCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9NV2luZG93KGV4ZWMpKTsKKyAgICBpbXBs
KCktPnNldFBvcnQodXN0cmluZ1RvU3RyaW5nKHBvcnQpLCBhY3RpdmVDb250ZXh0KGV4ZWMpLCBm
aXJzdENvbnRleHQoZXhlYykpOwogfQogCiB2b2lkIEpTTG9jYXRpb246OnNldFBhdGhuYW1lKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIEpT
TG9jYXRpb246OnNldFBhdGhuYW1lKEV4ZWNTdGF0ZSogCiAgICAgVVN0cmluZyBwYXRobmFtZSA9
IHZhbHVlLnRvU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIGltcGwoKS0+c2V0UGF0aG5hbWUodXN0cmluZ1RvU3RyaW5nKHBh
dGhuYW1lKSwgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVjKSk7Cisg
ICAgaW1wbCgpLT5zZXRQYXRobmFtZSh1c3RyaW5nVG9TdHJpbmcocGF0aG5hbWUpLCBhY3RpdmVD
b250ZXh0KGV4ZWMpLCBmaXJzdENvbnRleHQoZXhlYykpOwogfQogCiB2b2lkIEpTTG9jYXRpb246
OnNldFNlYXJjaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCkBAIC0yMzIsNyArMjMy
LDcgQEAgdm9pZCBKU0xvY2F0aW9uOjpzZXRTZWFyY2goRXhlY1N0YXRlKiBleAogICAgIFVTdHJp
bmcgcGF0aG5hbWUgPSB2YWx1ZS50b1N0cmluZyhleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsKCktPnNldFNlYXJjaCh1c3RyaW5n
VG9TdHJpbmcocGF0aG5hbWUpLCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9NV2luZG93
KGV4ZWMpKTsKKyAgICBpbXBsKCktPnNldFNlYXJjaCh1c3RyaW5nVG9TdHJpbmcocGF0aG5hbWUp
LCBhY3RpdmVDb250ZXh0KGV4ZWMpLCBmaXJzdENvbnRleHQoZXhlYykpOwogfQogCiB2b2lkIEpT
TG9jYXRpb246OnNldEhhc2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQpAQCAtMjQw
LDcgKzI0MCw3IEBAIHZvaWQgSlNMb2NhdGlvbjo6c2V0SGFzaChFeGVjU3RhdGUqIGV4ZWMKICAg
ICBVU3RyaW5nIGhhc2ggPSB2YWx1ZS50b1N0cmluZyhleGVjKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsKCktPnNldEhhc2godXN0cmlu
Z1RvU3RyaW5nKGhhc2gpLCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9NV2luZG93KGV4
ZWMpKTsKKyAgICBpbXBsKCktPnNldEhhc2godXN0cmluZ1RvU3RyaW5nKGhhc2gpLCBhY3RpdmVD
b250ZXh0KGV4ZWMpLCBmaXJzdENvbnRleHQoZXhlYykpOwogfQogCiBKU1ZhbHVlIEpTTG9jYXRp
b246OnJlcGxhY2UoRXhlY1N0YXRlKiBleGVjKQpAQCAtMjQ4LDEzICsyNDgsMTMgQEAgSlNWYWx1
ZSBKU0xvY2F0aW9uOjpyZXBsYWNlKEV4ZWNTdGF0ZSogZQogICAgIFVTdHJpbmcgdXJsU3RyaW5n
ID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBpbXBsKCktPnJl
cGxhY2UodXN0cmluZ1RvU3RyaW5nKHVybFN0cmluZyksIGFjdGl2ZURPTVdpbmRvdyhleGVjKSwg
Zmlyc3RET01XaW5kb3coZXhlYykpOworICAgIGltcGwoKS0+cmVwbGFjZSh1c3RyaW5nVG9TdHJp
bmcodXJsU3RyaW5nKSwgYWN0aXZlQ29udGV4dChleGVjKSwgZmlyc3RDb250ZXh0KGV4ZWMpKTsK
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAogSlNWYWx1ZSBKU0xvY2F0aW9uOjpyZWxv
YWQoRXhlY1N0YXRlKiBleGVjKQogewotICAgIGltcGwoKS0+cmVsb2FkKGFjdGl2ZURPTVdpbmRv
dyhleGVjKSk7CisgICAgaW1wbCgpLT5yZWxvYWQoYWN0aXZlQ29udGV4dChleGVjKSk7CiAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBKU1ZhbHVlIEpT
TG9jYXRpb246OmFzc2lnbihFeGVjU3RhdGUqIGV4CiAgICAgVVN0cmluZyB1cmxTdHJpbmcgPSBl
eGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIGltcGwoKS0+YXNzaWdu
KHVzdHJpbmdUb1N0cmluZyh1cmxTdHJpbmcpLCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0
RE9NV2luZG93KGV4ZWMpKTsKKyAgICBpbXBsKCktPmFzc2lnbih1c3RyaW5nVG9TdHJpbmcodXJs
U3RyaW5nKSwgYWN0aXZlQ29udGV4dChleGVjKSwgZmlyc3RDb250ZXh0KGV4ZWMpKTsKICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yQ1BQLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbQkocmV2aXNpb24gMTA0Mzk3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ1BQLnBtCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDEsNyArMjAxLDYgQEAgc3ViIFNob3VsZFNraXBUeXBlSW5JbXBs
ZW1lbnRhdGlvbgogCiAgICAgcmV0dXJuIDEgaWYgJHR5cGVJbmZvLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Bcmd1bWVudEhhbmRsaW5nIn0KICAgICAgICAgICAgICBv
ciAkdHlwZUluZm8tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldHRl
ciJ9Ci0gICAgICAgICAgICAgb3IgJHR5cGVJbmZvLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJOZWVkc1VzZXJHZXN0dXJlQ2hlY2sifQogICAgICAgICAgICAgIG9yICR0eXBlSW5m
by0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ1BQQ3VzdG9tIn07CiAKICAgICAj
IEZJWE1FOiBXZSBkb24ndCBnZW5lcmF0ZSBiaW5kaW5ncyBmb3IgU1ZHIHJlbGF0ZWQgaW50ZXJm
YWNlcyB5ZXQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckdPYmplY3QucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQkocmV2aXNpb24gMTA0Mzk3KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQkod29ya2lu
ZyBjb3B5KQpAQCAtNzY5LDE0ICs3NjksNiBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbiB7CiAgICAg
ICAgIHB1c2goQGNhbGxJbXBsUGFyYW1zLCAkcGFyYW1OYW1lKTsKICAgICB9CiAKLSAgICAjIE5v
dCBxdWl0ZSBzdXJlIHdoYXQgdG8gZG8gd2l0aCB0aGlzIHlldCwgYnV0IHdlIG5lZWQgdG8gdGFr
ZSBpbnRvCi0gICAgIyBhY2NvdW50IHRoZSBkaWZmZXJlbmNlIGluIHBhcmFtZXRlcnMgYmV0d2Vl
biB0aGUgSURMIGZpbGUgYW5kIHRoZQotICAgICMgYWN0dWFsIGltcGxlbWVudGF0aW9uLgotICAg
IGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5lZWRzVXNl
ckdlc3R1cmVDaGVjayJ9KSB7Ci0gICAgICAgICRmdW5jdGlvblNpZyAuPSAiLCBnYm9vbGVhbiBp
c1VzZXJHZXN0dXJlIjsKLSAgICAgICAgcHVzaChAY2FsbEltcGxQYXJhbXMsICJmYWxzZSIpOwot
ICAgIH0KLQogICAgIGlmICgkcmV0dXJuVHlwZSBuZSAidm9pZCIgJiYgJHJldHVyblZhbHVlSXNH
RE9NVHlwZSAmJiAkZnVuY3Rpb25TaWdUeXBlIG5lICJET01PYmplY3QiKSB7CiAgICAgICAgIGlm
ICgkZnVuY3Rpb25TaWdUeXBlIG5lICJFdmVudFRhcmdldCIpIHsKICAgICAgICAgICAgICRpbXBs
SW5jbHVkZXN7IndlYmtpdC9XZWJLaXRET00ke2Z1bmN0aW9uU2lnVHlwZX1Qcml2YXRlLmgifSA9
IDE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTA0Mzk3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTI0NDQsMTIg
KzI0NDQsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICBteSAkY2FsbFdpdGgg
PSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn07
CiAgICAgaWYgKCRjYWxsV2l0aCBhbmQgISRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3IifSkgewogICAgICAgICBteSAkY2FsbFdpdGhBcmcgPSAi
Q09NUElMRV9BU1NFUlQoZmFsc2UpIjsKLSAgICAgICAgaWYgKCRjYWxsV2l0aCBlcSAiRHluYW1p
Y0ZyYW1lIikgewotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEZyYW1lKiBk
eW5hbWljRnJhbWUgPSB0b0R5bmFtaWNGcmFtZShleGVjKTtcbiIpOwotICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIGlmICghZHluYW1pY0ZyYW1lKVxuIik7Ci0gICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7XG4iKTsKLSAgICAgICAgICAgICRjYWxsV2l0aEFyZyA9ICJkeW5hbWljRnJh
bWUiOwotICAgICAgICB9IGVsc2lmICgkY2FsbFdpdGggZXEgIlNjcmlwdFN0YXRlIikgeworICAg
ICAgICBpZiAoJGNhbGxXaXRoIGVxICJTY3JpcHRTdGF0ZSIpIHsKICAgICAgICAgICAgICRjYWxs
V2l0aEFyZyA9ICJleGVjIjsKICAgICAgICAgfSBlbHNpZiAoJGNhbGxXaXRoIGVxICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0IikgewogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBzdGF0aWNfY2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTtcbiIpOwpAQCAtMjU3MiwxMyArMjU2Nyw2IEBAIHN1YiBHZW5lcmF0ZVBh
cmFtZXRlcnNDaGVjawogICAgICAgICAkcGFyYW1JbmRleCsrOwogICAgIH0KIAotICAgIGlmICgk
ZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5lZWRzVXNlckdlc3R1
cmVDaGVjayJ9KSB7Ci0gICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAiLCAiIGlmICRwYXJhbUlu
ZGV4OwotICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gIlNjcmlwdENvbnRyb2xsZXI6OnByb2Nl
c3NpbmdVc2VyR2VzdHVyZSgpIjsKLSAgICAgICAgJHBhcmFtSW5kZXgrKzsKLSAgICAgICAgJGlt
cGxJbmNsdWRlc3siU2NyaXB0Q29udHJvbGxlci5oIn0gPSAxOwotICAgIH0KLQogICAgIHJldHVy
biAoJGZ1bmN0aW9uU3RyaW5nLCAkcGFyYW1JbmRleCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCShyZXZpc2lv
biAxMDQzOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQkod29ya2luZyBjb3B5KQpAQCAtMzI0NywxMyArMzI0Nyw2IEBAIHN1YiBHZW5lcmF0
ZUZ1bmN0aW9uQ2FsbFN0cmluZygpCiAgICAgICAgICRpbmRleCArPSAyOwogICAgIH0KIAotICAg
IGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5lZWRzVXNl
ckdlc3R1cmVDaGVjayJ9KSB7Ci0gICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAiLCAiIGlmICRp
bmRleDsKLSAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICJTY3JpcHRDb250cm9sbGVyOjpwcm9j
ZXNzaW5nVXNlckdlc3R1cmUoKSI7Ci0gICAgICAgICRpbmRleCsrOwotICAgICAgICBBZGRUb0lt
cGxJbmNsdWRlcygiU2NyaXB0Q29udHJvbGxlci5oIik7Ci0gICAgfQotCiAgICAgaWYgKEB7JGZ1
bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfSkgewogICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0g
IiwgIiBpZiAkaW5kZXg7CiAgICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAiZWMiOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAko
cmV2aXNpb24gMTA0Mzk3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RPYmouaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMTEgKzEwMSw2IEBAIG1vZHVsZSB0
ZXN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9v
bGVhbiB1c2VDYXB0dXJlKTsKIAogICAgICAgICAvLyAnQ2FsbFdpdGgnIGV4dGVuZGVkIGF0dHJp
YnV0ZQotICAgICAgICBbQ2FsbFdpdGg9RHluYW1pY0ZyYW1lXSB2b2lkIHdpdGhEeW5hbWljRnJh
bWUoKTsKLSAgICAgICAgW0NhbGxXaXRoPUR5bmFtaWNGcmFtZV0gdm9pZCB3aXRoRHluYW1pY0Zy
YW1lQW5kQXJnKGluIGxvbmcgaW50QXJnKTsKLSAgICAgICAgW0NhbGxXaXRoPUR5bmFtaWNGcmFt
ZV0gdm9pZCB3aXRoRHluYW1pY0ZyYW1lQW5kT3B0aW9uYWxBcmcoaW4gbG9uZyBpbnRBcmcsIGlu
IFtPcHRpb25hbF0gbG9uZyBvcHRpb25hbEFyZyk7Ci0gICAgICAgIFtOZWVkc1VzZXJHZXN0dXJl
Q2hlY2ssIENhbGxXaXRoPUR5bmFtaWNGcmFtZV0gdm9pZCB3aXRoRHluYW1pY0ZyYW1lQW5kVXNl
ckdlc3R1cmUoaW4gbG9uZyBpbnRBcmcpOwotICAgICAgICBbTmVlZHNVc2VyR2VzdHVyZUNoZWNr
LCBDYWxsV2l0aD1EeW5hbWljRnJhbWVdIHZvaWQgd2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0
dXJlQVNBRChpbiBsb25nIGludEFyZywgaW4gW09wdGlvbmFsXSBsb25nIG9wdGlvbmFsQXJnKTsK
ICAgICAgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSB2b2lkIHdpdGhTY3JpcHRTdGF0ZVZvaWQo
KTsKICAgICAgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBUZXN0T2JqIHdpdGhTY3JpcHRTdGF0
ZU9iaigpOwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIHZvaWQgd2l0aFNjcmlwdFN0
YXRlVm9pZEV4Y2VwdGlvbigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVdpbmRvd1NoZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTVdpbmRvd1NoZWxsLmNwcAkocmV2aXNpb24gMTA0Mzk3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYz
Miw3ICs2MzIsNyBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhET01XaW5kb3dTaGVsbDo6CiB2
b2lkIFY4RE9NV2luZG93U2hlbGw6OnNldExvY2F0aW9uKERPTVdpbmRvdyogd2luZG93LCBjb25z
dCBTdHJpbmcmIGxvY2F0aW9uU3RyaW5nKQogewogICAgIFN0YXRlPFY4QmluZGluZz4qIHN0YXRl
ID0gVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKTsKLSAgICB3aW5kb3ctPnNldExvY2F0aW9uKGxvY2F0
aW9uU3RyaW5nLCBzdGF0ZS0+YWN0aXZlV2luZG93KCksIHN0YXRlLT5maXJzdFdpbmRvdygpKTsK
KyAgICB3aW5kb3ctPnNldExvY2F0aW9uKGxvY2F0aW9uU3RyaW5nLCBzdGF0ZS0+YWN0aXZlQ29u
dGV4dCgpLCBzdGF0ZS0+Zmlyc3RDb250ZXh0KCkpOwogfQogCiB9IC8vIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2lu
ZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gMTA0Mzk3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg3
LDE1ICsxODcsMTcgQEAgdm9pZCBWOERPTVdpbmRvdzo6bG9jYXRpb25BY2Nlc3NvclNldHRlcgog
ICAgIERPTVdpbmRvdyogaW1wID0gVjhET01XaW5kb3c6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OwogICAgIFN0YXRlPFY4QmluZGluZz4qIHN0YXRlID0gVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKTsK
IAotICAgIERPTVdpbmRvdyogYWN0aXZlV2luZG93ID0gc3RhdGUtPmFjdGl2ZVdpbmRvdygpOwot
ICAgIGlmICghYWN0aXZlV2luZG93KQotICAgICAgcmV0dXJuOwotCi0gICAgRE9NV2luZG93KiBm
aXJzdFdpbmRvdyA9IHN0YXRlLT5maXJzdFdpbmRvdygpOwotICAgIGlmICghZmlyc3RXaW5kb3cp
Ci0gICAgICByZXR1cm47CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogYWN0aXZlQ29udGV4
dCA9IHN0YXRlLT5hY3RpdmVDb250ZXh0KCk7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGJy
YW5jaCAoYWN0aXZlQ29udGV4dCBzaG91bGRuJ3QgZXZlciBiZSAwKS4KKyAgICBpZiAoIWFjdGl2
ZUNvbnRleHQpCisgICAgICAgIHJldHVybjsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGZpcnN0Q29udGV4dCA9IHN0YXRlLT5maXJzdENvbnRleHQoKTsKKyAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoaXMgYnJhbmNoIChmaXJzdENvbnRleHQgc2hvdWxkbid0IGV2ZXIgYmUgMCkuCisgICAg
aWYgKCFmaXJzdENvbnRleHQpCisgICAgICAgIHJldHVybjsKIAotICAgIGltcC0+c2V0TG9jYXRp
b24odG9XZWJDb3JlU3RyaW5nKHZhbHVlKSwgYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdyk7Cisg
ICAgaW1wLT5zZXRMb2NhdGlvbih0b1dlYkNvcmVTdHJpbmcodmFsdWUpLCBhY3RpdmVDb250ZXh0
LCBmaXJzdENvbnRleHQpOwogfQogCiB2b2lkIFY4RE9NV2luZG93OjpvcGVuZXJBY2Nlc3NvclNl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBAIC00MjksOCArNDMxLDggQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpzaG93TQogCiAgICAgVjhCaW5kaW5nU3Rh
dGUqIHN0YXRlID0gVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKTsKIAotICAgIERPTVdpbmRvdyogYWN0
aXZlV2luZG93ID0gc3RhdGUtPmFjdGl2ZVdpbmRvdygpOwotICAgIERPTVdpbmRvdyogZmlyc3RX
aW5kb3cgPSBzdGF0ZS0+Zmlyc3RXaW5kb3coKTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBhY3RpdmVDb250ZXh0ID0gc3RhdGUtPmFjdGl2ZUNvbnRleHQoKTsKKyAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBmaXJzdENvbnRleHQgPSBzdGF0ZS0+Zmlyc3RDb250ZXh0KCk7CiAKICAg
ICAvLyBGSVhNRTogSGFuZGxlIGV4Y2VwdGlvbnMgcHJvcGVybHkuCiAgICAgU3RyaW5nIHVybFN0
cmluZyA9IHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsT3JVbmRlZmluZWRDaGVjayhhcmdzWzBdKTsK
QEAgLTQzOCw3ICs0NDAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnNo
b3dNCiAKICAgICBEaWFsb2dIYW5kbGVyIGhhbmRsZXIoYXJnc1sxXSk7CiAKLSAgICBpbXBsLT5z
aG93TW9kYWxEaWFsb2codXJsU3RyaW5nLCBkaWFsb2dGZWF0dXJlc1N0cmluZywgYWN0aXZlV2lu
ZG93LCBmaXJzdFdpbmRvdywgc2V0VXBEaWFsb2csICZoYW5kbGVyKTsKKyAgICBpbXBsLT5zaG93
TW9kYWxEaWFsb2codXJsU3RyaW5nLCBkaWFsb2dGZWF0dXJlc1N0cmluZywgYWN0aXZlQ29udGV4
dCwgZmlyc3RDb250ZXh0LCBzZXRVcERpYWxvZywgJmhhbmRsZXIpOwogCiAgICAgcmV0dXJuIGhh
bmRsZXIucmV0dXJuVmFsdWUoKTsKIH0KQEAgLTQ1MCwxNSArNDUyLDE1IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6b3BlbkMKIAogICAgIFY4QmluZGluZ1N0YXRlKiBzdGF0
ZSA9IFY4QmluZGluZ1N0YXRlOjpPbmx5KCk7CiAKLSAgICBET01XaW5kb3cqIGFjdGl2ZVdpbmRv
dyA9IHN0YXRlLT5hY3RpdmVXaW5kb3coKTsKLSAgICBET01XaW5kb3cqIGZpcnN0V2luZG93ID0g
c3RhdGUtPmZpcnN0V2luZG93KCk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogYWN0aXZl
Q29udGV4dCA9IHN0YXRlLT5hY3RpdmVDb250ZXh0KCk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogZmlyc3RDb250ZXh0ID0gc3RhdGUtPmZpcnN0Q29udGV4dCgpOwogCiAgICAgLy8gRklY
TUU6IEhhbmRsZSBleGNlcHRpb25zIHByb3Blcmx5LgogICAgIFN0cmluZyB1cmxTdHJpbmcgPSB0
b1dlYkNvcmVTdHJpbmdXaXRoTnVsbE9yVW5kZWZpbmVkQ2hlY2soYXJnc1swXSk7CiAgICAgQXRv
bWljU3RyaW5nIGZyYW1lTmFtZSA9IChhcmdzWzFdLT5Jc1VuZGVmaW5lZCgpIHx8IGFyZ3NbMV0t
PklzTnVsbCgpKSA/ICJfYmxhbmsiIDogQXRvbWljU3RyaW5nKHRvV2ViQ29yZVN0cmluZyhhcmdz
WzFdKSk7CiAgICAgU3RyaW5nIHdpbmRvd0ZlYXR1cmVzU3RyaW5nID0gdG9XZWJDb3JlU3RyaW5n
V2l0aE51bGxPclVuZGVmaW5lZENoZWNrKGFyZ3NbMl0pOwogCi0gICAgUmVmUHRyPERPTVdpbmRv
dz4gb3BlbmVkV2luZG93ID0gaW1wbC0+b3Blbih1cmxTdHJpbmcsIGZyYW1lTmFtZSwgd2luZG93
RmVhdHVyZXNTdHJpbmcsIGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3cpOworICAgIFJlZlB0cjxE
T01XaW5kb3c+IG9wZW5lZFdpbmRvdyA9IGltcGwtPm9wZW4odXJsU3RyaW5nLCBmcmFtZU5hbWUs
IHdpbmRvd0ZlYXR1cmVzU3RyaW5nLCBhY3RpdmVDb250ZXh0LCBmaXJzdENvbnRleHQpOwogICAg
IGlmICghb3BlbmVkV2luZG93KQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAg
IHJldHVybiB0b1Y4KG9wZW5lZFdpbmRvdy5yZWxlYXNlKCkpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAko
cmV2aXNpb24gMTA0Mzk3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
TG9jYXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQg
VjhMb2NhdGlvbjo6aGFzaEFjY2Vzc29yU2V0dGVyKHY4OjoKICAgICAvLyBGSVhNRTogSGFuZGxl
IGV4Y2VwdGlvbnMgY29ycmVjdGx5LgogICAgIFN0cmluZyBoYXNoID0gdG9XZWJDb3JlU3RyaW5n
KHZhbHVlKTsKIAotICAgIGltcGwtPnNldEhhc2goaGFzaCwgc3RhdGUtPmFjdGl2ZVdpbmRvdygp
LCBzdGF0ZS0+Zmlyc3RXaW5kb3coKSk7CisgICAgaW1wbC0+c2V0SGFzaChoYXNoLCBzdGF0ZS0+
YWN0aXZlQ29udGV4dCgpLCBzdGF0ZS0+Zmlyc3RDb250ZXh0KCkpOwogfQogCiB2b2lkIFY4TG9j
YXRpb246Omhvc3RBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBA
IC02OCw3ICs2OCw3IEBAIHZvaWQgVjhMb2NhdGlvbjo6aG9zdEFjY2Vzc29yU2V0dGVyKHY4OjoK
ICAgICAvLyBGSVhNRTogSGFuZGxlIGV4Y2VwdGlvbnMgY29ycmVjdGx5LgogICAgIFN0cmluZyBo
b3N0ID0gdG9XZWJDb3JlU3RyaW5nKHZhbHVlKTsKIAotICAgIGltcGwtPnNldEhvc3QoaG9zdCwg
c3RhdGUtPmFjdGl2ZVdpbmRvdygpLCBzdGF0ZS0+Zmlyc3RXaW5kb3coKSk7CisgICAgaW1wbC0+
c2V0SG9zdChob3N0LCBzdGF0ZS0+YWN0aXZlQ29udGV4dCgpLCBzdGF0ZS0+Zmlyc3RDb250ZXh0
KCkpOwogfQogCiB2b2lkIFY4TG9jYXRpb246Omhvc3RuYW1lQWNjZXNzb3JTZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAtODAsNyArODAsNyBAQCB2b2lkIFY4TG9jYXRpb246
Omhvc3RuYW1lQWNjZXNzb3JTZXR0ZXIoCiAgICAgLy8gRklYTUU6IEhhbmRsZSBleGNlcHRpb25z
IGNvcnJlY3RseS4KICAgICBTdHJpbmcgaG9zdG5hbWUgPSB0b1dlYkNvcmVTdHJpbmcodmFsdWUp
OwogCi0gICAgaW1wbC0+c2V0SG9zdG5hbWUoaG9zdG5hbWUsIHN0YXRlLT5hY3RpdmVXaW5kb3co
KSwgc3RhdGUtPmZpcnN0V2luZG93KCkpOworICAgIGltcGwtPnNldEhvc3RuYW1lKGhvc3RuYW1l
LCBzdGF0ZS0+YWN0aXZlQ29udGV4dCgpLCBzdGF0ZS0+Zmlyc3RDb250ZXh0KCkpOwogfQogCiB2
b2lkIFY4TG9jYXRpb246OmhyZWZBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgVjhMb2NhdGlvbjo6aHJlZkFjY2Vzc29yU2V0
dGVyKHY4OjoKICAgICAvLyBGSVhNRTogSGFuZGxlIGV4Y2VwdGlvbnMgY29ycmVjdGx5LgogICAg
IFN0cmluZyBocmVmID0gdG9XZWJDb3JlU3RyaW5nKHZhbHVlKTsKIAotICAgIGltcGwtPnNldEhy
ZWYoaHJlZiwgc3RhdGUtPmFjdGl2ZVdpbmRvdygpLCBzdGF0ZS0+Zmlyc3RXaW5kb3coKSk7Cisg
ICAgaW1wbC0+c2V0SHJlZihocmVmLCBzdGF0ZS0+YWN0aXZlQ29udGV4dCgpLCBzdGF0ZS0+Zmly
c3RDb250ZXh0KCkpOwogfQogCiB2b2lkIFY4TG9jYXRpb246OnBhdGhuYW1lQWNjZXNzb3JTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQg
VjhMb2NhdGlvbjo6cGF0aG5hbWVBY2Nlc3NvclNldHRlcigKICAgICAvLyBGSVhNRTogSGFuZGxl
IGV4Y2VwdGlvbnMgY29ycmVjdGx5LgogICAgIFN0cmluZyBwYXRobmFtZSA9IHRvV2ViQ29yZVN0
cmluZyh2YWx1ZSk7CiAKLSAgICBpbXBsLT5zZXRQYXRobmFtZShwYXRobmFtZSwgc3RhdGUtPmFj
dGl2ZVdpbmRvdygpLCBzdGF0ZS0+Zmlyc3RXaW5kb3coKSk7CisgICAgaW1wbC0+c2V0UGF0aG5h
bWUocGF0aG5hbWUsIHN0YXRlLT5hY3RpdmVDb250ZXh0KCksIHN0YXRlLT5maXJzdENvbnRleHQo
KSk7CiB9CiAKIHZvaWQgVjhMb2NhdGlvbjo6cG9ydEFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIFY4TG9jYXRpb246OnBv
cnRBY2Nlc3NvclNldHRlcih2ODo6CiAgICAgLy8gRklYTUU6IEhhbmRsZSBleGNlcHRpb25zIGNv
cnJlY3RseS4KICAgICBTdHJpbmcgcG9ydCA9IHRvV2ViQ29yZVN0cmluZyh2YWx1ZSk7CiAKLSAg
ICBpbXBsLT5zZXRQb3J0KHBvcnQsIHN0YXRlLT5hY3RpdmVXaW5kb3coKSwgc3RhdGUtPmZpcnN0
V2luZG93KCkpOworICAgIGltcGwtPnNldFBvcnQocG9ydCwgc3RhdGUtPmFjdGl2ZUNvbnRleHQo
KSwgc3RhdGUtPmZpcnN0Q29udGV4dCgpKTsKIH0KIAogdm9pZCBWOExvY2F0aW9uOjpwcm90b2Nv
bEFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKQEAgLTEyOSw3ICsx
MjksNyBAQCB2b2lkIFY4TG9jYXRpb246OnByb3RvY29sQWNjZXNzb3JTZXR0ZXIoCiAgICAgU3Ry
aW5nIHByb3RvY29sID0gdG9XZWJDb3JlU3RyaW5nKHZhbHVlKTsKIAogICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIGltcGwtPnNldFByb3RvY29sKHByb3RvY29sLCBzdGF0ZS0+YWN0aXZl
V2luZG93KCksIHN0YXRlLT5maXJzdFdpbmRvdygpLCBlYyk7CisgICAgaW1wbC0+c2V0UHJvdG9j
b2wocHJvdG9jb2wsIHN0YXRlLT5hY3RpdmVDb250ZXh0KCksIHN0YXRlLT5maXJzdENvbnRleHQo
KSwgZWMpOwogICAgIGlmIChVTkxJS0VMWShlYykpCiAgICAgICAgIFY4UHJveHk6OnNldERPTUV4
Y2VwdGlvbihlYyk7CiB9CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBWOExvY2F0aW9uOjpzZWFy
Y2hBY2Nlc3NvclNldHRlcih2OAogICAgIC8vIEZJWE1FOiBIYW5kbGUgZXhjZXB0aW9ucyBjb3Jy
ZWN0bHkuCiAgICAgU3RyaW5nIHNlYXJjaCA9IHRvV2ViQ29yZVN0cmluZyh2YWx1ZSk7CiAKLSAg
ICBpbXBsLT5zZXRTZWFyY2goc2VhcmNoLCBzdGF0ZS0+YWN0aXZlV2luZG93KCksIHN0YXRlLT5m
aXJzdFdpbmRvdygpKTsKKyAgICBpbXBsLT5zZXRTZWFyY2goc2VhcmNoLCBzdGF0ZS0+YWN0aXZl
Q29udGV4dCgpLCBzdGF0ZS0+Zmlyc3RDb250ZXh0KCkpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhMb2NhdGlvbjo6cmVsb2FkQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBAIC0yMDcsNyArMjA3LDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZAogICAgIExvY2F0aW9u
KiBpbXBsID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgU3RhdGU8
VjhCaW5kaW5nPiogc3RhdGUgPSBWOEJpbmRpbmdTdGF0ZTo6T25seSgpOwogCi0gICAgaW1wbC0+
cmVsb2FkKHN0YXRlLT5hY3RpdmVXaW5kb3coKSk7CisgICAgaW1wbC0+cmVsb2FkKHN0YXRlLT5h
Y3RpdmVDb250ZXh0KCkpOwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKQEAgLTIy
MCw3ICsyMjAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVwbGFjCiAg
ICAgLy8gRklYTUU6IEhhbmRsZSBleGNlcHRpb25zIGNvcnJlY3RseS4KICAgICBTdHJpbmcgdXJs
U3RyaW5nID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwogCi0gICAgaW1wbC0+cmVwbGFjZSh1
cmxTdHJpbmcsIHN0YXRlLT5hY3RpdmVXaW5kb3coKSwgc3RhdGUtPmZpcnN0V2luZG93KCkpOwor
ICAgIGltcGwtPnJlcGxhY2UodXJsU3RyaW5nLCBzdGF0ZS0+YWN0aXZlQ29udGV4dCgpLCBzdGF0
ZS0+Zmlyc3RDb250ZXh0KCkpOwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKQEAg
LTIzMyw3ICsyMzMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6YXNzaWdu
CiAgICAgLy8gRklYTUU6IEhhbmRsZSBleGNlcHRpb25zIGNvcnJlY3RseS4KICAgICBTdHJpbmcg
dXJsU3RyaW5nID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwogCi0gICAgaW1wbC0+YXNzaWdu
KHVybFN0cmluZywgc3RhdGUtPmFjdGl2ZVdpbmRvdygpLCBzdGF0ZS0+Zmlyc3RXaW5kb3coKSk7
CisgICAgaW1wbC0+YXNzaWduKHVybFN0cmluZywgc3RhdGUtPmFjdGl2ZUNvbnRleHQoKSwgc3Rh
dGUtPmZpcnN0Q29udGV4dCgpKTsKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9zcGVjaWFsaXphdGlvbi9WOEJpbmRpbmdT
dGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgvc3BlY2lh
bGl6YXRpb24vVjhCaW5kaW5nU3RhdGUuY3BwCShyZXZpc2lvbiAxMDQzOTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9zcGVjaWFsaXphdGlvbi9WOEJpbmRpbmdTdGF0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJWOEJpbmRpbmdTdGF0ZS5o
IgogCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTQ0LDcgKzQ1LDcgQEAgU3RhdGU8VjhCaW5kaW5nPiogU3Rh
dGU8VjhCaW5kaW5nPjo6T25seQogICAgIHJldHVybiAmZ2xvYmFsVjhCaW5kaW5nU3RhdGU7CiB9
CiAKLURPTVdpbmRvdyogU3RhdGU8VjhCaW5kaW5nPjo6YWN0aXZlV2luZG93KCkKK1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIFN0YXRlPFY4QmluZGluZz46OmFjdGl2ZUNvbnRleHQoKQogewogICAg
IHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gYWN0aXZlQ29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRD
YWxsaW5nKCk7CiAgICAgaWYgKGFjdGl2ZUNvbnRleHQuSXNFbXB0eSgpKSB7CkBAIC01MiwxMiAr
NTMsMTIgQEAgRE9NV2luZG93KiBTdGF0ZTxWOEJpbmRpbmc+OjphY3RpdmVXaW5kbwogICAgICAg
ICAvLyBiZSB0aGUgYWN0aXZlQ29udGV4dC4KICAgICAgICAgYWN0aXZlQ29udGV4dCA9IHY4OjpD
b250ZXh0OjpHZXRDdXJyZW50KCk7CiAgICAgfQotICAgIHJldHVybiBWOFByb3h5OjpyZXRyaWV2
ZVdpbmRvdyhhY3RpdmVDb250ZXh0KTsKKyAgICByZXR1cm4gVjhQcm94eTo6cmV0cmlldmVXaW5k
b3coYWN0aXZlQ29udGV4dCktPmRvY3VtZW50KCk7CiB9CiAKLURPTVdpbmRvdyogU3RhdGU8VjhC
aW5kaW5nPjo6Zmlyc3RXaW5kb3coKQorU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogU3RhdGU8VjhC
aW5kaW5nPjo6Zmlyc3RDb250ZXh0KCkKIHsKLSAgICByZXR1cm4gVjhQcm94eTo6cmV0cmlldmVX
aW5kb3codjg6OkNvbnRleHQ6OkdldEVudGVyZWQoKSk7CisgICAgcmV0dXJuIFY4UHJveHk6OnJl
dHJpZXZlV2luZG93KHY4OjpDb250ZXh0OjpHZXRFbnRlcmVkKCkpLT5kb2N1bWVudCgpOwogfQog
CiBGcmFtZSogU3RhdGU8VjhCaW5kaW5nPjo6YWN0aXZlRnJhbWUoKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvdjgvc3BlY2lhbGl6YXRpb24vVjhCaW5kaW5nU3RhdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9zcGVjaWFsaXphdGlvbi9WOEJpbmRp
bmdTdGF0ZS5oCShyZXZpc2lvbiAxMDQzOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9zcGVjaWFsaXphdGlvbi9WOEJpbmRpbmdTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2
ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOworY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKIAogLy8gU2luZ2xldG9uIGltcGxlbWVudGF0aW9uIG9mIFN0
YXRlPFY4QmluZGluZz4uICBVc2VzIFY4J3MgZ2xvYmFsIGRhdGEKIC8vIHN0cnVjdHVyZXMgdG8g
cmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IHJlbGV2YW50IGV4ZWN1dGlvbiBzdGF0ZS4KQEAgLTQ5
LDggKzUwLDggQEAgcHVibGljOgogICAgIC8vIFJlcG9ydHMgYW4gZXJyb3IgbWVzc2FnZSAod2l0
aG91dCBkZWxheSkgaWYgdGhlIHNlY3VyaXR5IGNoZWNrIGZhaWxzLgogICAgIHN0YXRpYyB2b2lk
IGltbWVkaWF0ZWx5UmVwb3J0VW5zYWZlQWNjZXNzVG8oRnJhbWUqKTsKIAotICAgIERPTVdpbmRv
dyogYWN0aXZlV2luZG93KCk7Ci0gICAgRE9NV2luZG93KiBmaXJzdFdpbmRvdygpOworICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGFjdGl2ZUNvbnRleHQoKTsKKyAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBmaXJzdENvbnRleHQoKTsKIAogICAgIEZyYW1lKiBhY3RpdmVGcmFtZSgpOwog
ICAgIEZyYW1lKiBmaXJzdEZyYW1lKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNp
b24gMTA0Mzk3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExMzQsNiArMTEzNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzQXJndW1l
bnRzKGNvbnN0IFN0cmluZyYgZmVhdHVyZXMsIHZvaWQqIGRhdGEsIEFyZ3VtZW50c0NhbGxiYWNr
KTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0RvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHZpcnR1YWwgRG9jdW1lbnQqIGFzRG9jdW1lbnQoKSBPVkVSUklERSB7IHJldHVybiB0
aGlzOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5
UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdl
ID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHJldmlzaW9uIDEwNDM5NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDYgKzQ2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEb2N1bWVudDsK
IGNsYXNzIERPTVRpbWVyOwogY2xhc3MgRXZlbnRMaXN0ZW5lcjsKIGNsYXNzIEV2ZW50UXVldWU7
CkBAIC03MSw2ICs3Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNEb2N1bWVudCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzV29ya2VyQ29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2aXJ0dWFsIERvY3VtZW50KiBhc0Rv
Y3VtZW50KCkgeyByZXR1cm4gMDsgfQorCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICB2
aXJ0dWFsIGJvb2wgYWxsb3dEYXRhYmFzZUFjY2VzcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGF0YWJhc2VFeGNlZWRlZFF1b3RhKGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCShyZXZpc2lvbiAxMDQz
OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDEsNyArMTQxLDYgQEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6YmVnaW4oY29u
c3QgS1VSTCYgdQogICAgIH0KIAogICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5zZXRVUkwoZG9j
dW1lbnQtPnVybCgpKTsKLSAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+c2V0U2VjdXJpdHlPcmln
aW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpOwogCiAgICAgbV9mcmFtZS0+bG9hZGVyKCkt
PmRpZEJlZ2luRG9jdW1lbnQoZGlzcGF0Y2gpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDEwNDM5NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0OCwxMCArOTQ4LDggQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6c2V0T3BlbmVyKEZyYW1lKiBvcGVuZQogICAgICAgICBvcGVuZXItPmxv
YWRlcigpLT5tX29wZW5lZEZyYW1lcy5hZGQobV9mcmFtZSk7CiAgICAgbV9vcGVuZXIgPSBvcGVu
ZXI7CiAKLSAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKSkgeworICAgIGlmIChtX2ZyYW1lLT5k
b2N1bWVudCgpKQogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pbml0U2VjdXJpdHlDb250
ZXh0KCk7Ci0gICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5zZXRTZWN1cml0eU9yaWdpbiht
X2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsKLSAgICB9CiB9CiAKIC8vIEZJ
WE1FOiBUaGlzIGRvZXMgbm90IGJlbG9uZyBpbiBGcmFtZUxvYWRlciEKQEAgLTIwNTMsNyArMjA1
MSw2IEBAIHZvaWQgRnJhbWVMb2FkZXI6Om9wZW4oQ2FjaGVkRnJhbWVCYXNlJiAKICAgICBtX2Zy
YW1lLT5zZXREb2N1bWVudChkb2N1bWVudCk7CiAgICAgbV9mcmFtZS0+c2V0RE9NV2luZG93KGNh
Y2hlZEZyYW1lLmRvbVdpbmRvdygpKTsKICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+c2V0VVJM
KGRvY3VtZW50LT51cmwoKSk7Ci0gICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPnNldFNlY3VyaXR5
T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKTsKIAogICAgIHVwZGF0ZUZpcnN0UGFy
dHlGb3JDb29raWVzKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlz
aW9uIDEwNDM5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDY1LDExICs0NjUsNiBAQCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlMaXN0PiBE
T01XaW5kb3c6Om1hCiAgICAgcmV0dXJuIGRvY3VtZW50KCkgPyBkb2N1bWVudCgpLT5tZWRpYVF1
ZXJ5TWF0Y2hlcigpLT5tYXRjaE1lZGlhKG1lZGlhKSA6IDA7CiB9CiAKLXZvaWQgRE9NV2luZG93
OjpzZXRTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCi17Ci0g
ICAgbV9zZWN1cml0eU9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luOwotfQotCiB2b2lkIERPTVdpbmRv
dzo6ZnJhbWVEZXN0cm95ZWQoKQogewogICAgIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcjo6ZnJh
bWVEZXN0cm95ZWQoKTsKQEAgLTk1NCw3ICs5NDksNyBAQCB2b2lkIERPTVdpbmRvdzo6Y2xvc2Uo
U2NyaXB0RXhlY3V0aW9uQ29uCiAKICAgICBpZiAoY29udGV4dCkgewogICAgICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgICAgICBGcmFtZSogYWN0aXZlRnJhbWUgPSBzdGF0aWNfY2Fz
dDxEb2N1bWVudCo+KGNvbnRleHQpLT5mcmFtZSgpOworICAgICAgICBGcmFtZSogYWN0aXZlRnJh
bWUgPSBjb250ZXh0LT5hc0RvY3VtZW50KCktPmZyYW1lKCk7CiAgICAgICAgIGlmICghYWN0aXZl
RnJhbWUpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE2ODUsMTkgKzE2ODAsMTkgQEAgRXZl
bnRUYXJnZXREYXRhKiBET01XaW5kb3c6OmVuc3VyZUV2ZW50VAogICAgIHJldHVybiAmbV9ldmVu
dFRhcmdldERhdGE7CiB9CiAKLXZvaWQgRE9NV2luZG93OjpzZXRMb2NhdGlvbihjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgRE9NV2luZG93KiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyogZmlyc3RX
aW5kb3csIFNldExvY2F0aW9uTG9ja2luZyBsb2NraW5nKQordm9pZCBET01XaW5kb3c6OnNldExv
Y2F0aW9uKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBh
Y3RpdmVDb250ZXh0LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBmaXJzdENvbnRleHQsIFNldExv
Y2F0aW9uTG9ja2luZyBsb2NraW5nKQogewogICAgIGlmICghaXNDdXJyZW50bHlEaXNwbGF5ZWRJ
bkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFj
dGl2ZVdpbmRvdy0+ZnJhbWUoKTsKKyAgICBGcmFtZSogYWN0aXZlRnJhbWUgPSBhY3RpdmVDb250
ZXh0LT5hc0RvY3VtZW50KCktPmZyYW1lKCk7CiAgICAgaWYgKCFhY3RpdmVGcmFtZSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFhY3RpdmVGcmFtZS0+bG9hZGVyKCktPnNob3VsZEFsbG93
TmF2aWdhdGlvbihtX2ZyYW1lKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRnJhbWUqIGZpcnN0
RnJhbWUgPSBmaXJzdFdpbmRvdy0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZmlyc3RGcmFtZSA9IGZp
cnN0Q29udGV4dC0+YXNEb2N1bWVudCgpLT5mcmFtZSgpOwogICAgIGlmICghZmlyc3RGcmFtZSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzA1LDExICsxNzAwLDExIEBAIHZvaWQgRE9NV2luZG93
OjpzZXRMb2NhdGlvbihjb25zdCBTdHJpbmcKICAgICBpZiAoY29tcGxldGVkVVJMLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNJbnNlY3VyZVNjcmlwdEFjY2VzcyhhY3Rp
dmVXaW5kb3csIGNvbXBsZXRlZFVSTCkpCisgICAgaWYgKCFpc0luc2VjdXJlU2NyaXB0QWNjZXNz
KGFjdGl2ZUNvbnRleHQsIGNvbXBsZXRlZFVSTCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8v
IFdlIHdhbnQgYSBuZXcgaGlzdG9yeSBpdGVtIGlmIHdlIGFyZSBwcm9jZXNzaW5nIGEgdXNlciBn
ZXN0dXJlLgotICAgIG1fZnJhbWUtPm5hdmlnYXRpb25TY2hlZHVsZXIoKS0+c2NoZWR1bGVMb2Nh
dGlvbkNoYW5nZShhY3RpdmVGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwKKyAg
ICBtX2ZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2Uo
YWN0aXZlQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwKICAgICAgICAgY29tcGxldGVkVVJMLCBh
Y3RpdmVGcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSwKICAgICAgICAgbG9ja2lu
ZyAhPSBMb2NrSGlzdG9yeUJhc2VkT25HZXN0dXJlU3RhdGUgfHwgIVNjcmlwdENvbnRyb2xsZXI6
OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpLAogICAgICAgICBsb2NraW5nICE9IExvY2tIaXN0b3J5
QmFzZWRPbkdlc3R1cmVTdGF0ZSk7CkBAIC0xNzMwLDE5ICsxNzI1LDE5IEBAIHZvaWQgRE9NV2lu
ZG93OjpwcmludEVycm9yTWVzc2FnZShjb25zdCAKICAgICBjb25zb2xlKCktPmFkZE1lc3NhZ2Uo
SlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3Nh
Z2UsIDEsIFN0cmluZygpKTsKIH0KIAotU3RyaW5nIERPTVdpbmRvdzo6Y3Jvc3NEb21haW5BY2Nl
c3NFcnJvck1lc3NhZ2UoRE9NV2luZG93KiBhY3RpdmVXaW5kb3cpCitTdHJpbmcgRE9NV2luZG93
Ojpjcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBh
Y3RpdmVDb250ZXh0KQogewotICAgIGNvbnN0IEtVUkwmIGFjdGl2ZVdpbmRvd1VSTCA9IGFjdGl2
ZVdpbmRvdy0+dXJsKCk7Ci0gICAgaWYgKGFjdGl2ZVdpbmRvd1VSTC5pc051bGwoKSkKKyAgICBj
b25zdCBLVVJMJiBhY3RpdmVVUkwgPSBhY3RpdmVDb250ZXh0LT51cmwoKTsKKyAgICBpZiAoYWN0
aXZlVVJMLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICAvLyBGSVhN
RTogVGhpcyBlcnJvciBtZXNzYWdlIHNob3VsZCBjb250YWluIG1vcmUgc3BlY2lmaWNzIG9mIHdo
eSB0aGUgc2FtZSBvcmlnaW4gY2hlY2sgaGFzIGZhaWxlZC4KICAgICAvLyBQZXJoYXBzIHdlIHNo
b3VsZCBpbnZvbHZlIHRoZSBzZWN1cml0eSBvcmlnaW4gb2JqZWN0IGluIGNvbXBvc2luZyBpdC4K
ICAgICAvLyBGSVhNRTogVGhpcyBtZXNzYWdlLCBhbmQgb3RoZXIgY29uc29sZSBtZXNzYWdlcywg
aGF2ZSBleHRyYSBuZXdsaW5lcy4gU2hvdWxkIHJlbW92ZSB0aGVtLgotICAgIHJldHVybiAiVW5z
YWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgIiArIG1fdXJs
LnN0cmluZygpICsgIiBmcm9tIGZyYW1lIHdpdGggVVJMICIgKyBhY3RpdmVXaW5kb3dVUkwuc3Ry
aW5nKCkgKyAiLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guXG4iOwor
ICAgIHJldHVybiAiVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0
aCBVUkwgIiArIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXJsKCkuc3RyaW5nKCkgKyAiIGZy
b20gZnJhbWUgd2l0aCBVUkwgIiArIGFjdGl2ZVVSTC5zdHJpbmcoKSArICIuIERvbWFpbnMsIHBy
b3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC5cbiI7CiB9CiAKLWJvb2wgRE9NV2luZG93Ojpp
c0luc2VjdXJlU2NyaXB0QWNjZXNzKERPTVdpbmRvdyogYWN0aXZlV2luZG93LCBjb25zdCBTdHJp
bmcmIHVybFN0cmluZykKK2Jvb2wgRE9NV2luZG93Ojppc0luc2VjdXJlU2NyaXB0QWNjZXNzKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGFjdGl2ZUNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nKQogewogICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQodXJsU3RyaW5nKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTc1MiwyNCArMTc0NywyMiBAQCBib29sIERPTVdpbmRvdzo6
aXNJbnNlY3VyZVNjcmlwdEFjY2VzcyhECiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNoZWNr
IGlmIHdlJ3JlIGFibGUgdG8gZGlzY29ubmVjdCBET01XaW5kb3cgZnJvbQogICAgIC8vIEZyYW1l
IG9uIG5hdmlnYXRpb246IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MjA1NAogICAgIGlmIChpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkgewotICAgICAgICAv
LyBGSVhNRTogSXMgdGhlcmUgc29tZSB3YXkgdG8gZWxpbWluYXRlIHRoZSBuZWVkIGZvciBhIHNl
cGFyYXRlICJhY3RpdmVXaW5kb3cgPT0gdGhpcyIgY2hlY2s/Ci0gICAgICAgIGlmIChhY3RpdmVX
aW5kb3cgPT0gdGhpcykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgICAgICAvLyBG
SVhNRTogVGhlIG5hbWUgY2FuQWNjZXNzIHNlZW1zIHRvIGJlIGEgcm91bmRhYm91dCB3YXkgdG8g
YXNrICJjYW4gZXhlY3V0ZSBzY3JpcHQiLgogICAgICAgICAvLyBDYW4gd2UgbmFtZSB0aGUgU2Vj
dXJpdHlPcmlnaW4gZnVuY3Rpb24gYmV0dGVyIHRvIG1ha2UgdGhpcyBtb3JlIGNsZWFyPwotICAg
ICAgICBpZiAoYWN0aXZlV2luZG93LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3Moc2VjdXJp
dHlPcmlnaW4oKSkpCisgICAgICAgIGlmIChhY3RpdmVDb250ZXh0LT5zZWN1cml0eU9yaWdpbigp
LT5jYW5BY2Nlc3Moc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBwcmludEVycm9yTWVzc2Fn
ZShjcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShhY3RpdmVXaW5kb3cpKTsKKyAgICBwcmlu
dEVycm9yTWVzc2FnZShjcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShhY3RpdmVDb250ZXh0
KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIEZyYW1lKiBET01XaW5kb3c6OmNyZWF0ZVdpbmRv
dyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUs
IGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZWF0dXJlcywKLSAgICBET01XaW5kb3cqIGFj
dGl2ZVdpbmRvdywgRnJhbWUqIGZpcnN0RnJhbWUsIEZyYW1lKiBvcGVuZXJGcmFtZSwgUHJlcGFy
ZURpYWxvZ0Z1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkKiBmdW5jdGlvbkNvbnRleHQpCisgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogYWN0aXZlQ29udGV4dCwgRnJhbWUqIGZpcnN0RnJhbWUsIEZy
YW1lKiBvcGVuZXJGcmFtZSwgUHJlcGFyZURpYWxvZ0Z1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkKiBm
dW5jdGlvbkNvbnRleHQpCiB7Ci0gICAgRnJhbWUqIGFjdGl2ZUZyYW1lID0gYWN0aXZlV2luZG93
LT5mcmFtZSgpOworICAgIEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFjdGl2ZUNvbnRleHQtPmFzRG9j
dW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBpZiAoIWFjdGl2ZUZyYW1lKQorICAgICAgICByZXR1cm4g
MDsKIAogICAgIC8vIEZvciB3aGF0ZXZlciByZWFzb24sIEZpcmVmb3ggdXNlcyB0aGUgZmlyc3Qg
ZnJhbWUgdG8gZGV0ZXJtaW5lIHRoZSBvdXRnb2luZ1JlZmVycmVyLiBXZSByZXBsaWNhdGUgdGhh
dCBiZWhhdmlvciBoZXJlLgogICAgIFN0cmluZyByZWZlcnJlciA9IGZpcnN0RnJhbWUtPmxvYWRl
cigpLT5vdXRnb2luZ1JlZmVycmVyKCk7CkBAIC0xNzc3LDcgKzE3NzAsNyBAQCBGcmFtZSogRE9N
V2luZG93OjpjcmVhdGVXaW5kb3coY29uc3QgU3RyCiAgICAgS1VSTCBjb21wbGV0ZWRVUkwgPSB1
cmxTdHJpbmcuaXNFbXB0eSgpID8gS1VSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkp
IDogZmlyc3RGcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsU3RyaW5nKTsKICAgICBS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChjb21wbGV0ZWRVUkwsIHJlZmVycmVyKTsKICAgICBGcmFt
ZUxvYWRlcjo6YWRkSFRUUE9yaWdpbklmTmVlZGVkKHJlcXVlc3QsIGZpcnN0RnJhbWUtPmxvYWRl
cigpLT5vdXRnb2luZ09yaWdpbigpKTsKLSAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lUmVxdWVz
dChhY3RpdmVXaW5kb3ctPnNlY3VyaXR5T3JpZ2luKCksIHJlcXVlc3QsIGZyYW1lTmFtZSk7Cisg
ICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZVJlcXVlc3QoYWN0aXZlQ29udGV4dC0+c2VjdXJpdHlP
cmlnaW4oKSwgcmVxdWVzdCwgZnJhbWVOYW1lKTsKIAogICAgIC8vIFdlIHBhc3MgdGhlIG9wZW5l
ciBmcmFtZSBmb3IgdGhlIGxvb2t1cEZyYW1lIGluIGNhc2UgdGhlIGFjdGl2ZSBmcmFtZSBpcyBk
aWZmZXJlbnQgZnJvbQogICAgIC8vIHRoZSBvcGVuZXIgZnJhbWUsIGFuZCB0aGUgbmFtZSByZWZl
cmVuY2VzIGEgZnJhbWUgcmVsYXRpdmUgdG8gdGhlIG9wZW5lciBmcmFtZS4KQEAgLTE3ODksMzUg
KzE3ODIsMzUgQEAgRnJhbWUqIERPTVdpbmRvdzo6Y3JlYXRlV2luZG93KGNvbnN0IFN0cgogICAg
IG5ld0ZyYW1lLT5sb2FkZXIoKS0+c2V0T3BlbmVyKG9wZW5lckZyYW1lKTsKICAgICBuZXdGcmFt
ZS0+cGFnZSgpLT5zZXRPcGVuZWRCeURPTSgpOwogCi0gICAgaWYgKG5ld0ZyYW1lLT5kb21XaW5k
b3coKS0+aXNJbnNlY3VyZVNjcmlwdEFjY2VzcyhhY3RpdmVXaW5kb3csIGNvbXBsZXRlZFVSTCkp
CisgICAgaWYgKG5ld0ZyYW1lLT5kb21XaW5kb3coKS0+aXNJbnNlY3VyZVNjcmlwdEFjY2Vzcyhh
Y3RpdmVDb250ZXh0LCBjb21wbGV0ZWRVUkwpKQogICAgICAgICByZXR1cm4gbmV3RnJhbWU7CiAK
ICAgICBpZiAoZnVuY3Rpb24pCiAgICAgICAgIGZ1bmN0aW9uKG5ld0ZyYW1lLT5kb21XaW5kb3co
KSwgZnVuY3Rpb25Db250ZXh0KTsKIAogICAgIGlmIChjcmVhdGVkKQotICAgICAgICBuZXdGcmFt
ZS0+bG9hZGVyKCktPmNoYW5nZUxvY2F0aW9uKGFjdGl2ZVdpbmRvdy0+c2VjdXJpdHlPcmlnaW4o
KSwgY29tcGxldGVkVVJMLCByZWZlcnJlciwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgbmV3RnJh
bWUtPmxvYWRlcigpLT5jaGFuZ2VMb2NhdGlvbihhY3RpdmVDb250ZXh0LT5zZWN1cml0eU9yaWdp
bigpLCBjb21wbGV0ZWRVUkwsIHJlZmVycmVyLCBmYWxzZSwgZmFsc2UpOwogICAgIGVsc2UgaWYg
KCF1cmxTdHJpbmcuaXNFbXB0eSgpKSB7CiAgICAgICAgIGJvb2wgbG9ja0hpc3RvcnkgPSAhU2Ny
aXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7Ci0gICAgICAgIG5ld0ZyYW1l
LT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoYWN0aXZlV2lu
ZG93LT5zZWN1cml0eU9yaWdpbigpLCBjb21wbGV0ZWRVUkwuc3RyaW5nKCksIHJlZmVycmVyLCBs
b2NrSGlzdG9yeSwgZmFsc2UpOworICAgICAgICBuZXdGcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxl
cigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKGFjdGl2ZUNvbnRleHQtPnNlY3VyaXR5T3JpZ2lu
KCksIGNvbXBsZXRlZFVSTC5zdHJpbmcoKSwgcmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBmYWxzZSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIG5ld0ZyYW1lOwogfQogCiBQYXNzUmVmUHRyPERPTVdpbmRv
dz4gRE9NV2luZG93OjpvcGVuKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9taWNT
dHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgU3RyaW5nJiB3aW5kb3dGZWF0dXJlc1N0cmluZywKLSAg
ICBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93KiBmaXJzdFdpbmRvdykKKyAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBhY3RpdmVDb250ZXh0LCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBmaXJzdENvbnRleHQpCiB7CiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJh
bWUoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgRnJhbWUqIGFjdGl2ZUZyYW1lID0gYWN0aXZl
V2luZG93LT5mcmFtZSgpOworICAgIEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFjdGl2ZUNvbnRleHQt
PmFzRG9jdW1lbnQoKS0+ZnJhbWUoKTsKICAgICBpZiAoIWFjdGl2ZUZyYW1lKQogICAgICAgICBy
ZXR1cm4gMDsKLSAgICBGcmFtZSogZmlyc3RGcmFtZSA9IGZpcnN0V2luZG93LT5mcmFtZSgpOwor
ICAgIEZyYW1lKiBmaXJzdEZyYW1lID0gZmlyc3RDb250ZXh0LT5hc0RvY3VtZW50KCktPmZyYW1l
KCk7CiAgICAgaWYgKCFmaXJzdEZyYW1lKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmICgh
Zmlyc3RXaW5kb3ctPmFsbG93UG9wVXAoKSkgeworICAgIGlmICghZmlyc3RDb250ZXh0LT5hc0Rv
Y3VtZW50KCktPmRvbVdpbmRvdygpLT5hbGxvd1BvcFVwKCkpIHsKICAgICAgICAgLy8gQmVjYXVz
ZSBGcmFtZVRyZWU6OmZpbmQoKSByZXR1cm5zIHRydWUgZm9yIGVtcHR5IHN0cmluZ3MsIHdlIG11
c3QgY2hlY2sgZm9yIGVtcHR5IGZyYW1lIG5hbWVzLgogICAgICAgICAvLyBPdGhlcndpc2UsIGls
bGVnaXRpbWF0ZSB3aW5kb3cub3BlbigpIGNhbGxzIHdpdGggbm8gbmFtZSB3aWxsIHBhc3Mgcmln
aHQgdGhyb3VnaCB0aGUgcG9wdXAgYmxvY2tlci4KICAgICAgICAgaWYgKGZyYW1lTmFtZS5pc0Vt
cHR5KCkgfHwgIW1fZnJhbWUtPnRyZWUoKS0+ZmluZChmcmFtZU5hbWUpKQpAQCAtMTg0MSw3ICsx
ODM0LDcgQEAgUGFzc1JlZlB0cjxET01XaW5kb3c+IERPTVdpbmRvdzo6b3BlbihjbwogCiAgICAg
ICAgIEtVUkwgY29tcGxldGVkVVJMID0gZmlyc3RGcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVV
UkwodXJsU3RyaW5nKTsKIAotICAgICAgICBpZiAodGFyZ2V0RnJhbWUtPmRvbVdpbmRvdygpLT5p
c0luc2VjdXJlU2NyaXB0QWNjZXNzKGFjdGl2ZVdpbmRvdywgY29tcGxldGVkVVJMKSkKKyAgICAg
ICAgaWYgKHRhcmdldEZyYW1lLT5kb21XaW5kb3coKS0+aXNJbnNlY3VyZVNjcmlwdEFjY2Vzcyhh
Y3RpdmVDb250ZXh0LCBjb21wbGV0ZWRVUkwpKQogICAgICAgICAgICAgcmV0dXJuIHRhcmdldEZy
YW1lLT5kb21XaW5kb3coKTsKIAogICAgICAgICBpZiAodXJsU3RyaW5nLmlzRW1wdHkoKSkKQEAg
LTE4NjksMjcgKzE4NjIsMjkgQEAgUGFzc1JlZlB0cjxET01XaW5kb3c+IERPTVdpbmRvdzo6b3Bl
bihjbwogICAgIHdpbmRvd0ZlYXR1cmVzLmhlaWdodCA9IHdpbmRvd1JlY3QuaGVpZ2h0KCk7CiAg
ICAgd2luZG93RmVhdHVyZXMud2lkdGggPSB3aW5kb3dSZWN0LndpZHRoKCk7CiAKLSAgICBGcmFt
ZSogcmVzdWx0ID0gY3JlYXRlV2luZG93KHVybFN0cmluZywgZnJhbWVOYW1lLCB3aW5kb3dGZWF0
dXJlcywgYWN0aXZlV2luZG93LCBmaXJzdEZyYW1lLCBtX2ZyYW1lKTsKKyAgICBGcmFtZSogcmVz
dWx0ID0gY3JlYXRlV2luZG93KHVybFN0cmluZywgZnJhbWVOYW1lLCB3aW5kb3dGZWF0dXJlcywg
YWN0aXZlQ29udGV4dCwgZmlyc3RGcmFtZSwgbV9mcmFtZSk7CiAgICAgcmV0dXJuIHJlc3VsdCA/
IHJlc3VsdC0+ZG9tV2luZG93KCkgOiAwOwogfQogCiB2b2lkIERPTVdpbmRvdzo6c2hvd01vZGFs
RGlhbG9nKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRpYWxvZ0ZlYXR1
cmVzU3RyaW5nLAotICAgIERPTVdpbmRvdyogYWN0aXZlV2luZG93LCBET01XaW5kb3cqIGZpcnN0
V2luZG93LCBQcmVwYXJlRGlhbG9nRnVuY3Rpb24gZnVuY3Rpb24sIHZvaWQqIGZ1bmN0aW9uQ29u
dGV4dCkKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBhY3RpdmVDb250ZXh0LCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBmaXJzdENvbnRleHQsIFByZXBhcmVEaWFsb2dGdW5jdGlvbiBmdW5j
dGlvbiwgdm9pZCogZnVuY3Rpb25Db250ZXh0KQogewogICAgIGlmICghaXNDdXJyZW50bHlEaXNw
bGF5ZWRJbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBGcmFtZSogYWN0aXZlRnJhbWUg
PSBhY3RpdmVXaW5kb3ctPmZyYW1lKCk7CisKKyAgICBGcmFtZSogYWN0aXZlRnJhbWUgPSBhY3Rp
dmVDb250ZXh0LT5hc0RvY3VtZW50KCktPmZyYW1lKCk7CiAgICAgaWYgKCFhY3RpdmVGcmFtZSkK
ICAgICAgICAgcmV0dXJuOwotICAgIEZyYW1lKiBmaXJzdEZyYW1lID0gZmlyc3RXaW5kb3ctPmZy
YW1lKCk7CisKKyAgICBGcmFtZSogZmlyc3RGcmFtZSA9IGZpcnN0Q29udGV4dC0+YXNEb2N1bWVu
dCgpLT5mcmFtZSgpOwogICAgIGlmICghZmlyc3RGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKCFjYW5TaG93TW9kYWxEaWFsb2dOb3cobV9mcmFtZSkgfHwgIWZpcnN0V2luZG93LT5h
bGxvd1BvcFVwKCkpCisgICAgaWYgKCFjYW5TaG93TW9kYWxEaWFsb2dOb3cobV9mcmFtZSkgfHwg
IWZpcnN0Q29udGV4dC0+YXNEb2N1bWVudCgpLT5kb21XaW5kb3coKS0+YWxsb3dQb3BVcCgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBGcmFtZSogZGlhbG9nRnJhbWUgPSBjcmVhdGVXaW5kb3co
dXJsU3RyaW5nLCBlbXB0eUF0b20sIFdpbmRvd0ZlYXR1cmVzKGRpYWxvZ0ZlYXR1cmVzU3RyaW5n
LCBzY3JlZW5BdmFpbGFibGVSZWN0KG1fZnJhbWUtPnZpZXcoKSkpLAotICAgICAgICBhY3RpdmVX
aW5kb3csIGZpcnN0RnJhbWUsIG1fZnJhbWUsIGZ1bmN0aW9uLCBmdW5jdGlvbkNvbnRleHQpOwor
ICAgICAgICBhY3RpdmVDb250ZXh0LCBmaXJzdEZyYW1lLCBtX2ZyYW1lLCBmdW5jdGlvbiwgZnVu
Y3Rpb25Db250ZXh0KTsKICAgICBpZiAoIWRpYWxvZ0ZyYW1lKQogICAgICAgICByZXR1cm47CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkocmV2aXNpb24gMTA0Mzk3KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUG9zdE1lc3NhZ2VUaW1lcjsKICAgICBj
bGFzcyBTY2hlZHVsZWRBY3Rpb247CiAgICAgY2xhc3MgU2NyZWVuOwotICAgIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwogICAgIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKICAgICBjbGFzcyBT
dG9yYWdlOwogICAgIGNsYXNzIFN0b3JhZ2VJbmZvOwpAQCAtMTAxLDkgKzEwMCw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBQYXNzUmVmUHRyPE1lZGlhUXVlcnlMaXN0PiBtYXRj
aE1lZGlhKGNvbnN0IFN0cmluZyYpOwogCi0gICAgICAgIHZvaWQgc2V0U2VjdXJpdHlPcmlnaW4o
U2VjdXJpdHlPcmlnaW4qKTsKLSAgICAgICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2lu
KCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbi5nZXQoKTsgfQotCiAgICAgICAgIHZv
aWQgc2V0VVJMKGNvbnN0IEtVUkwmIHVybCkgeyBtX3VybCA9IHVybDsgfQogICAgICAgICBLVVJM
IHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAKQEAgLTEzNyw3ICsxMzMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE5hdmlnYXRvciogY2xpZW50SW5mb3JtYXRpb24oKSBj
b25zdCB7IHJldHVybiBuYXZpZ2F0b3IoKTsgfQogCiAgICAgICAgIExvY2F0aW9uKiBsb2NhdGlv
bigpIGNvbnN0OwotICAgICAgICB2b2lkIHNldExvY2F0aW9uKGNvbnN0IFN0cmluZyYgbG9jYXRp
b24sIERPTVdpbmRvdyogYWN0aXZlV2luZG93LCBET01XaW5kb3cqIGZpcnN0V2luZG93LAorICAg
ICAgICB2b2lkIHNldExvY2F0aW9uKGNvbnN0IFN0cmluZyYgbG9jYXRpb24sIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGFjdGl2ZUNvbnRleHQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGZpcnN0
Q29udGV4dCwKICAgICAgICAgICAgIFNldExvY2F0aW9uTG9ja2luZyA9IExvY2tIaXN0b3J5QmFz
ZWRPbkdlc3R1cmVTdGF0ZSk7CiAKICAgICAgICAgRE9NU2VsZWN0aW9uKiBnZXRTZWxlY3Rpb24o
KTsKQEAgLTE1MSwxMSArMTQ3LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9p
ZCBzdG9wKCk7CiAKICAgICAgICAgUGFzc1JlZlB0cjxET01XaW5kb3c+IG9wZW4oY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBTdHJp
bmcmIHdpbmRvd0ZlYXR1cmVzU3RyaW5nLAotICAgICAgICAgICAgRE9NV2luZG93KiBhY3RpdmVX
aW5kb3csIERPTVdpbmRvdyogZmlyc3RXaW5kb3cpOworICAgICAgICAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogYWN0aXZlQ29udGV4dCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZmlyc3RD
b250ZXh0KTsKIAogICAgICAgICB0eXBlZGVmIHZvaWQgKCpQcmVwYXJlRGlhbG9nRnVuY3Rpb24p
KERPTVdpbmRvdyosIHZvaWQqIGNvbnRleHQpOwogICAgICAgICB2b2lkIHNob3dNb2RhbERpYWxv
Zyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBkaWFsb2dGZWF0dXJlc1N0
cmluZywKLSAgICAgICAgICAgIERPTVdpbmRvdyogYWN0aXZlV2luZG93LCBET01XaW5kb3cqIGZp
cnN0V2luZG93LCBQcmVwYXJlRGlhbG9nRnVuY3Rpb24sIHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7
CisgICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBhY3RpdmVDb250ZXh0LCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBmaXJzdENvbnRleHQsIFByZXBhcmVEaWFsb2dGdW5jdGlvbiwg
dm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIAogICAgICAgICB2b2lkIGFsZXJ0KGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7CiAgICAgICAgIGJvb2wgY29uZmlybShjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
OwpAQCAtMjI5LDcgKzIyNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ29uc29s
ZSogY29uc29sZSgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgcHJpbnRFcnJvck1lc3NhZ2UoY29u
c3QgU3RyaW5nJik7Ci0gICAgICAgIFN0cmluZyBjcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2Fn
ZShET01XaW5kb3cqIGFjdGl2ZVdpbmRvdyk7CisgICAgICAgIFN0cmluZyBjcm9zc0RvbWFpbkFj
Y2Vzc0Vycm9yTWVzc2FnZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBhY3RpdmVDb250ZXh0KTsK
IAogICAgICAgICB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKICAgICAgICAgdm9pZCByZXNldEdlb2xv
Y2F0aW9uKCk7CkBAIC00MzMsMTEgKzQyOSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKIAog
ICAgICAgICBzdGF0aWMgRnJhbWUqIGNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZywgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiwK
LSAgICAgICAgICAgIERPTVdpbmRvdyogYWN0aXZlV2luZG93LCBGcmFtZSogZmlyc3RGcmFtZSwg
RnJhbWUqIG9wZW5lckZyYW1lLAorICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
YWN0aXZlQ29udGV4dCwgRnJhbWUqIGZpcnN0RnJhbWUsIEZyYW1lKiBvcGVuZXJGcmFtZSwKICAg
ICAgICAgICAgIFByZXBhcmVEaWFsb2dGdW5jdGlvbiA9IDAsIHZvaWQqIGZ1bmN0aW9uQ29udGV4
dCA9IDApOwotICAgICAgICBib29sIGlzSW5zZWN1cmVTY3JpcHRBY2Nlc3MoRE9NV2luZG93KiBh
Y3RpdmVXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKKyAgICAgICAgYm9vbCBpc0lu
c2VjdXJlU2NyaXB0QWNjZXNzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGFjdGl2ZUNvbnRleHQs
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKIAotICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IG1fc2VjdXJpdHlPcmlnaW47CiAgICAgICAgIEtVUkwgbV91cmw7CiAKICAgICAgICAgYm9v
bCBtX3Nob3VsZFByaW50V2hlbkZpbmlzaGVkTG9hZGluZzsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvTG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9j
YXRpb24uY3BwCShyZXZpc2lvbiAxMDQzOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDE0ICsxMzMsMTQgQEAgU3RyaW5nIExvY2F0
aW9uOjpoYXNoKCkgY29uc3QKICAgICByZXR1cm4gZnJhZ21lbnRJZGVudGlmaWVyLmlzRW1wdHko
KSA/IGVtcHR5U3RyaW5nKCkgOiAiIyIgKyBmcmFnbWVudElkZW50aWZpZXI7CiB9CiAKLXZvaWQg
TG9jYXRpb246OnNldEhyZWYoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIERPTVdpbmRvdyogYWN0
aXZlV2luZG93LCBET01XaW5kb3cqIGZpcnN0V2luZG93KQordm9pZCBMb2NhdGlvbjo6c2V0SHJl
Zihjb25zdCBTdHJpbmcmIHVybFN0cmluZywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogYWN0aXZl
Q29udGV4dCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZmlyc3RDb250ZXh0KQogewogICAgIGlm
ICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5z
ZXRMb2NhdGlvbih1cmxTdHJpbmcsIGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3cpOworICAgIG1f
ZnJhbWUtPmRvbVdpbmRvdygpLT5zZXRMb2NhdGlvbih1cmxTdHJpbmcsIGFjdGl2ZUNvbnRleHQs
IGZpcnN0Q29udGV4dCk7CiB9CiAKLXZvaWQgTG9jYXRpb246OnNldFByb3RvY29sKGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wsIERPTVdpbmRvdyogYWN0aXZlV2luZG93LCBET01XaW5kb3cqIGZpcnN0
V2luZG93LCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgTG9jYXRpb246OnNldFByb3RvY29sKGNv
bnN0IFN0cmluZyYgcHJvdG9jb2wsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGFjdGl2ZUNvbnRl
eHQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGZpcnN0Q29udGV4dCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47CkBAIC0xNDksMjggKzE0
OSwyOCBAQCB2b2lkIExvY2F0aW9uOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmCiAgICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2ZyYW1lLT5k
b21XaW5kb3coKS0+c2V0TG9jYXRpb24odXJsLnN0cmluZygpLCBhY3RpdmVXaW5kb3csIGZpcnN0
V2luZG93KTsKKyAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+c2V0TG9jYXRpb24odXJsLnN0cmlu
ZygpLCBhY3RpdmVDb250ZXh0LCBmaXJzdENvbnRleHQpOwogfQogCi12b2lkIExvY2F0aW9uOjpz
ZXRIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCwgRE9NV2luZG93KiBhY3RpdmVXaW5kb3csIERPTVdp
bmRvdyogZmlyc3RXaW5kb3cpCit2b2lkIExvY2F0aW9uOjpzZXRIb3N0KGNvbnN0IFN0cmluZyYg
aG9zdCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogYWN0aXZlQ29udGV4dCwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogZmlyc3RDb250ZXh0KQogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAg
cmV0dXJuOwogICAgIEtVUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAg
dXJsLnNldEhvc3RBbmRQb3J0KGhvc3QpOwotICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5zZXRM
b2NhdGlvbih1cmwuc3RyaW5nKCksIGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3cpOworICAgIG1f
ZnJhbWUtPmRvbVdpbmRvdygpLT5zZXRMb2NhdGlvbih1cmwuc3RyaW5nKCksIGFjdGl2ZUNvbnRl
eHQsIGZpcnN0Q29udGV4dCk7CiB9CiAKLXZvaWQgTG9jYXRpb246OnNldEhvc3RuYW1lKGNvbnN0
IFN0cmluZyYgaG9zdG5hbWUsIERPTVdpbmRvdyogYWN0aXZlV2luZG93LCBET01XaW5kb3cqIGZp
cnN0V2luZG93KQordm9pZCBMb2NhdGlvbjo6c2V0SG9zdG5hbWUoY29uc3QgU3RyaW5nJiBob3N0
bmFtZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogYWN0aXZlQ29udGV4dCwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogZmlyc3RDb250ZXh0KQogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAg
cmV0dXJuOwogICAgIEtVUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAg
dXJsLnNldEhvc3QoaG9zdG5hbWUpOwotICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5zZXRMb2Nh
dGlvbih1cmwuc3RyaW5nKCksIGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3cpOworICAgIG1fZnJh
bWUtPmRvbVdpbmRvdygpLT5zZXRMb2NhdGlvbih1cmwuc3RyaW5nKCksIGFjdGl2ZUNvbnRleHQs
IGZpcnN0Q29udGV4dCk7CiB9CiAKLXZvaWQgTG9jYXRpb246OnNldFBvcnQoY29uc3QgU3RyaW5n
JiBwb3J0U3RyaW5nLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93KiBmaXJzdFdp
bmRvdykKK3ZvaWQgTG9jYXRpb246OnNldFBvcnQoY29uc3QgU3RyaW5nJiBwb3J0U3RyaW5nLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBhY3RpdmVDb250ZXh0LCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBmaXJzdENvbnRleHQpCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47
CkBAIC0xODAsMjggKzE4MCwyOCBAQCB2b2lkIExvY2F0aW9uOjpzZXRQb3J0KGNvbnN0IFN0cmlu
ZyYgcG9yCiAgICAgICAgIHVybC5yZW1vdmVQb3J0KCk7CiAgICAgZWxzZQogICAgICAgICB1cmwu
c2V0UG9ydChwb3J0KTsKLSAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+c2V0TG9jYXRpb24odXJs
LnN0cmluZygpLCBhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93KTsKKyAgICBtX2ZyYW1lLT5kb21X
aW5kb3coKS0+c2V0TG9jYXRpb24odXJsLnN0cmluZygpLCBhY3RpdmVDb250ZXh0LCBmaXJzdENv
bnRleHQpOwogfQogCi12b2lkIExvY2F0aW9uOjpzZXRQYXRobmFtZShjb25zdCBTdHJpbmcmIHBh
dGhuYW1lLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93KiBmaXJzdFdpbmRvdykK
K3ZvaWQgTG9jYXRpb246OnNldFBhdGhuYW1lKGNvbnN0IFN0cmluZyYgcGF0aG5hbWUsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGFjdGl2ZUNvbnRleHQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGZpcnN0Q29udGV4dCkKIHsKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAg
ICBLVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRQYXRo
KHBhdGhuYW1lKTsKLSAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+c2V0TG9jYXRpb24odXJsLnN0
cmluZygpLCBhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93KTsKKyAgICBtX2ZyYW1lLT5kb21XaW5k
b3coKS0+c2V0TG9jYXRpb24odXJsLnN0cmluZygpLCBhY3RpdmVDb250ZXh0LCBmaXJzdENvbnRl
eHQpOwogfQogCi12b2lkIExvY2F0aW9uOjpzZXRTZWFyY2goY29uc3QgU3RyaW5nJiBzZWFyY2gs
IERPTVdpbmRvdyogYWN0aXZlV2luZG93LCBET01XaW5kb3cqIGZpcnN0V2luZG93KQordm9pZCBM
b2NhdGlvbjo6c2V0U2VhcmNoKGNvbnN0IFN0cmluZyYgc2VhcmNoLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBhY3RpdmVDb250ZXh0LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBmaXJzdENvbnRl
eHQpCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgS1VSTCB1cmwg
PSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICB1cmwuc2V0UXVlcnkoc2VhcmNoKTsK
LSAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+c2V0TG9jYXRpb24odXJsLnN0cmluZygpLCBhY3Rp
dmVXaW5kb3csIGZpcnN0V2luZG93KTsKKyAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+c2V0TG9j
YXRpb24odXJsLnN0cmluZygpLCBhY3RpdmVDb250ZXh0LCBmaXJzdENvbnRleHQpOwogfQogCi12
b2lkIExvY2F0aW9uOjpzZXRIYXNoKGNvbnN0IFN0cmluZyYgaGFzaCwgRE9NV2luZG93KiBhY3Rp
dmVXaW5kb3csIERPTVdpbmRvdyogZmlyc3RXaW5kb3cpCit2b2lkIExvY2F0aW9uOjpzZXRIYXNo
KGNvbnN0IFN0cmluZyYgaGFzaCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogYWN0aXZlQ29udGV4
dCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZmlyc3RDb250ZXh0KQogewogICAgIGlmICghbV9m
cmFtZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjE2LDI0ICsyMTYsMjQgQEAgdm9pZCBMb2NhdGlv
bjo6c2V0SGFzaChjb25zdCBTdHJpbmcmIGhhcwogICAgIC8vIGNhc2VzIHdoZXJlIGZyYWdtZW50
IGlkZW50aWZpZXJzIGFyZSBpZ25vcmVkIG9yIGludmFsaWQuIAogICAgIGlmIChlcXVhbElnbm9y
aW5nTnVsbGl0eShvbGRGcmFnbWVudElkZW50aWZpZXIsIHVybC5mcmFnbWVudElkZW50aWZpZXIo
KSkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+c2V0TG9jYXRp
b24odXJsLnN0cmluZygpLCBhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93KTsKKyAgICBtX2ZyYW1l
LT5kb21XaW5kb3coKS0+c2V0TG9jYXRpb24odXJsLnN0cmluZygpLCBhY3RpdmVDb250ZXh0LCBm
aXJzdENvbnRleHQpOwogfQogCi12b2lkIExvY2F0aW9uOjphc3NpZ24oY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcsIERPTVdpbmRvdyogYWN0aXZlV2luZG93LCBET01XaW5kb3cqIGZpcnN0V2luZG93
KQordm9pZCBMb2NhdGlvbjo6YXNzaWduKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBhY3RpdmVDb250ZXh0LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBm
aXJzdENvbnRleHQpCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9mcmFtZS0+ZG9tV2luZG93KCktPnNldExvY2F0aW9uKHVybFN0cmluZywgYWN0aXZlV2luZG93
LCBmaXJzdFdpbmRvdyk7CisgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPnNldExvY2F0aW9uKHVy
bFN0cmluZywgYWN0aXZlQ29udGV4dCwgZmlyc3RDb250ZXh0KTsKIH0KIAotdm9pZCBMb2NhdGlv
bjo6cmVwbGFjZShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgRE9NV2luZG93KiBhY3RpdmVXaW5k
b3csIERPTVdpbmRvdyogZmlyc3RXaW5kb3cpCit2b2lkIExvY2F0aW9uOjpyZXBsYWNlKGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBhY3RpdmVDb250ZXh0
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBmaXJzdENvbnRleHQpCiB7CiAgICAgaWYgKCFtX2Zy
YW1lKQogICAgICAgICByZXR1cm47Ci0gICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPnNldExvY2F0
aW9uKHVybFN0cmluZywgYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgTG9ja0hpc3RvcnlBbmRC
YWNrRm9yd2FyZExpc3QpOworICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5zZXRMb2NhdGlvbih1
cmxTdHJpbmcsIGFjdGl2ZUNvbnRleHQsIGZpcnN0Q29udGV4dCwgTG9ja0hpc3RvcnlBbmRCYWNr
Rm9yd2FyZExpc3QpOwogfQogCi12b2lkIExvY2F0aW9uOjpyZWxvYWQoRE9NV2luZG93KiBhY3Rp
dmVXaW5kb3cpCit2b2lkIExvY2F0aW9uOjpyZWxvYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
YWN0aXZlQ29udGV4dCkKIHsKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAg
LTI0MSw4ICsyNDEsOCBAQCB2b2lkIExvY2F0aW9uOjpyZWxvYWQoRE9NV2luZG93KiBhY3RpdmVX
CiAgICAgLy8gV2UgYWxsb3cgb25lIHBhZ2UgdG8gY2hhbmdlIHRoZSBsb2NhdGlvbiBvZiBhbm90
aGVyLiBXaHkgYmxvY2sgYXR0ZW1wdHMgdG8gcmVsb2FkPwogICAgIC8vIE90aGVyIGxvY2F0aW9u
IG9wZXJhdGlvbnMgc2ltcGx5IGJsb2NrIHVzZSBvZiBKYXZhU2NyaXB0IFVSTHMgY3Jvc3Mgb3Jp
Z2luLgogICAgIERPTVdpbmRvdyogdGFyZ2V0V2luZG93ID0gbV9mcmFtZS0+ZG9tV2luZG93KCk7
Ci0gICAgaWYgKCFhY3RpdmVXaW5kb3ctPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzcyh0YXJn
ZXRXaW5kb3ctPnNlY3VyaXR5T3JpZ2luKCkpKSB7Ci0gICAgICAgIHRhcmdldFdpbmRvdy0+cHJp
bnRFcnJvck1lc3NhZ2UodGFyZ2V0V2luZG93LT5jcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2Fn
ZShhY3RpdmVXaW5kb3cpKTsKKyAgICBpZiAoIWFjdGl2ZUNvbnRleHQtPnNlY3VyaXR5T3JpZ2lu
KCktPmNhbkFjY2VzcyhtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgewor
ICAgICAgICB0YXJnZXRXaW5kb3ctPnByaW50RXJyb3JNZXNzYWdlKHRhcmdldFdpbmRvdy0+Y3Jv
c3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoYWN0aXZlQ29udGV4dCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChtX2ZyYW1lLT5kb2N1bWVu
dCgpLT51cmwoKSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5oCShyZXZpc2lvbiAxMDQzOTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDkgKzM2LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBET01XaW5kb3c7CiBj
bGFzcyBGcmFtZTsKIGNsYXNzIEtVUkw7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owog
CiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCkBAIC00NiwyNiArNDYsMjYgQEAgY2xhc3Mg
TG9jYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxMb2NhdAogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPExvY2F0aW9uPiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgTG9jYXRpb24oZnJhbWUpKTsgfQogCi0gICAgdm9pZCBzZXRIcmVmKGNvbnN0IFN0cmlu
ZyYsIERPTVdpbmRvdyogYWN0aXZlV2luZG93LCBET01XaW5kb3cqIGZpcnN0V2luZG93KTsKKyAg
ICB2b2lkIHNldEhyZWYoY29uc3QgU3RyaW5nJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogYWN0
aXZlQ29udGV4dCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZmlyc3RDb250ZXh0KTsKICAgICBT
dHJpbmcgaHJlZigpIGNvbnN0OwogCi0gICAgdm9pZCBhc3NpZ24oY29uc3QgU3RyaW5nJiwgRE9N
V2luZG93KiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyogZmlyc3RXaW5kb3cpOwotICAgIHZvaWQg
cmVwbGFjZShjb25zdCBTdHJpbmcmLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93
KiBmaXJzdFdpbmRvdyk7Ci0gICAgdm9pZCByZWxvYWQoRE9NV2luZG93KiBhY3RpdmVXaW5kb3cp
OworICAgIHZvaWQgYXNzaWduKGNvbnN0IFN0cmluZyYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGFjdGl2ZUNvbnRleHQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGZpcnN0Q29udGV4dCk7Cisg
ICAgdm9pZCByZXBsYWNlKGNvbnN0IFN0cmluZyYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGFj
dGl2ZUNvbnRleHQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGZpcnN0Q29udGV4dCk7CisgICAg
dm9pZCByZWxvYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogYWN0aXZlQ29udGV4dCk7CiAKLSAg
ICB2b2lkIHNldFByb3RvY29sKGNvbnN0IFN0cmluZyYsIERPTVdpbmRvdyogYWN0aXZlV2luZG93
LCBET01XaW5kb3cqIGZpcnN0V2luZG93LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXRQ
cm90b2NvbChjb25zdCBTdHJpbmcmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBhY3RpdmVDb250
ZXh0LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBmaXJzdENvbnRleHQsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICBTdHJpbmcgcHJvdG9jb2woKSBjb25zdDsKLSAgICB2b2lkIHNldEhvc3QoY29uc3Qg
U3RyaW5nJiwgRE9NV2luZG93KiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyogZmlyc3RXaW5kb3cp
OyAKKyAgICB2b2lkIHNldEhvc3QoY29uc3QgU3RyaW5nJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogYWN0aXZlQ29udGV4dCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZmlyc3RDb250ZXh0KTsg
CiAgICAgU3RyaW5nIGhvc3QoKSBjb25zdDsKLSAgICB2b2lkIHNldEhvc3RuYW1lKGNvbnN0IFN0
cmluZyYsIERPTVdpbmRvdyogYWN0aXZlV2luZG93LCBET01XaW5kb3cqIGZpcnN0V2luZG93KTsg
CisgICAgdm9pZCBzZXRIb3N0bmFtZShjb25zdCBTdHJpbmcmLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBhY3RpdmVDb250ZXh0LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBmaXJzdENvbnRleHQp
OyAKICAgICBTdHJpbmcgaG9zdG5hbWUoKSBjb25zdDsKLSAgICB2b2lkIHNldFBvcnQoY29uc3Qg
U3RyaW5nJiwgRE9NV2luZG93KiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyogZmlyc3RXaW5kb3cp
OyAKKyAgICB2b2lkIHNldFBvcnQoY29uc3QgU3RyaW5nJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogYWN0aXZlQ29udGV4dCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZmlyc3RDb250ZXh0KTsg
CiAgICAgU3RyaW5nIHBvcnQoKSBjb25zdDsKLSAgICB2b2lkIHNldFBhdGhuYW1lKGNvbnN0IFN0
cmluZyYsIERPTVdpbmRvdyogYWN0aXZlV2luZG93LCBET01XaW5kb3cqIGZpcnN0V2luZG93KTsg
CisgICAgdm9pZCBzZXRQYXRobmFtZShjb25zdCBTdHJpbmcmLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBhY3RpdmVDb250ZXh0LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBmaXJzdENvbnRleHQp
OyAKICAgICBTdHJpbmcgcGF0aG5hbWUoKSBjb25zdDsKLSAgICB2b2lkIHNldFNlYXJjaChjb25z
dCBTdHJpbmcmLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93KiBmaXJzdFdpbmRv
dyk7IAorICAgIHZvaWQgc2V0U2VhcmNoKGNvbnN0IFN0cmluZyYsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGFjdGl2ZUNvbnRleHQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGZpcnN0Q29udGV4
dCk7IAogICAgIFN0cmluZyBzZWFyY2goKSBjb25zdDsKLSAgICB2b2lkIHNldEhhc2goY29uc3Qg
U3RyaW5nJiwgRE9NV2luZG93KiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyogZmlyc3RXaW5kb3cp
OyAKKyAgICB2b2lkIHNldEhhc2goY29uc3QgU3RyaW5nJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogYWN0aXZlQ29udGV4dCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZmlyc3RDb250ZXh0KTsg
CiAgICAgU3RyaW5nIGhhc2goKSBjb25zdDsKICAgICBTdHJpbmcgb3JpZ2luKCkgY29uc3Q7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>