<?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>151753</bug_id>
          
          <creation_ts>2015-12-02 10:21:02 -0800</creation_ts>
          <short_desc>Modern IDB: Get rid of IDBExceptionCode</short_desc>
          <delta_ts>2015-12-02 11:13:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>Safari 9</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>
          
          <blocked>149117</blocked>
    
    <blocked>150882</blocked>
    
    <blocked>151752</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1145601</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-12-02 10:21:02 -0800</bug_when>
    <thetext>Modern IDB: Get rid of IDBExceptionCode

We can just keep using IDBDatabaseException</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145603</commentid>
    <comment_count>1</comment_count>
      <attachid>266452</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-12-02 10:24:45 -0800</bug_when>
    <thetext>Created attachment 266452
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145631</commentid>
    <comment_count>2</comment_count>
      <attachid>266452</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-02 11:13:16 -0800</bug_when>
    <thetext>Comment on attachment 266452
Patch v1

Clearing flags on attachment: 266452

Committed r192948: &lt;http://trac.webkit.org/changeset/192948&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145632</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-02 11:13:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266452</attachid>
            <date>2015-12-02 10:24:45 -0800</date>
            <delta_ts>2015-12-02 11:13:16 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>42277</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkMzMzNWMxLi5kNDgxNGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzgg
QEAKKzIwMTUtMTItMDIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIE1vZGVybiBJREI6IEdldCByaWQgb2YgSURCRXhjZXB0aW9uQ29kZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTc1MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoTm8gY2hh
bmdlIGluIGJlaGF2aW9yKS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJJbmRleEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJJbmRleDo6
Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJJbmRleDo6ZG9Db3VudCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkluZGV4OjpnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpJREJJbmRleDo6ZG9HZXQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ2xpZW50OjpJREJJbmRleDo6Z2V0S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVu
dDo6SURCSW5kZXg6OmRvR2V0S2V5KToKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDbGllbnQ6OklEQk9iamVjdFN0b3JlOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xp
ZW50OjpJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ2xpZW50OjpJREJPYmplY3RTdG9yZTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q2xpZW50OjpJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ2xpZW50OjpJREJPYmplY3RTdG9yZTo6aW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q2xpZW50OjpJREJPYmplY3RTdG9yZTo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ2xpZW50OjpJREJPYmplY3RTdG9yZTo6Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q2xpZW50OjpJREJPYmplY3RTdG9yZTo6ZG9Db3VudCk6CisgICAgICAgIAorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJDbGllbnQ6OklEQk9wZW5EQlJlcXVlc3Q6OmZpcmVFcnJvckFmdGVyVmVy
c2lvbkNoYW5nZUFib3J0KToKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGll
bnQ6OklEQlRyYW5zYWN0aW9uOjphYm9ydE9uU2VydmVyQW5kQ2FuY2VsUmVxdWVzdHMpOgorICAg
ICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SW5kZXhWYWx1ZVN0b3JlOjphZGRS
ZWNvcmQpOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5SURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVt
b3J5SURCQmFja2luZ1N0b3JlOjpiZWdpblRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjphYm9ydFRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpjb21taXRU
cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tp
bmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpNZW1vcnlJREJCYWNraW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpjbGVhck9iamVjdFN0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tp
bmdTdG9yZTo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1v
cnlJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhSZWNv
cmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6
OmdldENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2lu
Z1N0b3JlOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5
SURCQmFja2luZ1N0b3JlOjppdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6TWVtb3J5SW5kZXg6OnB1dEluZGV4S2V5KToKKyAgICAgICAgCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6OmRlbGV0ZUlu
ZGV4KToKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2U6OmhhbmRsZU9wZW5EYXRhYmFzZU9wZXJhdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVB1dE9yQWRkKToKKyAgICAg
ICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkVycm9yOjpJREJFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJFcnJvcjo6bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJFcnJvcjo6bWVzc2FnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjppZGJFcnJvck5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6aWRiRXJyb3JEZXNjcmlwdGlvbik6IERlbGV0ZWQuCisgICAgICAgIAorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oOgorICAgICAgICAoV2ViQ29yZTo6SURC
RXJyb3I6OmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRXJyb3I6OmlzTnVsbCk6CisKIDIw
MTUtMTItMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEdp
dmUgYSBtb3JlIGRldGFpbGVkIG1lc3NhZ2UgZm9yIFR5cGVFcnJvcnMgdGhhdCByZXN1bHQgZnJv
bSBFbmZvcmNlUmFuZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCSW5kZXhJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJJbmRleEltcGwuY3BwCmluZGV4IDVjYjk5ODIuLjJmNmRjZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJJbmRl
eEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJJbmRleEltcGwuY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgUmVmUHRyPFdlYkNvcmU6OklEQlJl
cXVlc3Q+IElEQkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b24KICAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKGNvbnRleHQpOwogICAgIFJlZlB0
cjxJREJLZXk+IGlkYktleSA9IHNjcmlwdFZhbHVlVG9JREJLZXkoJnJlcXVlc3RTdGF0ZSwga2V5
KTsKICAgICBpZiAoIWlkYktleSB8fCBpZGJLZXktPnR5cGUoKSA9PSBLZXlUeXBlOjpJbnZhbGlk
KSB7Ci0gICAgICAgIGVjID0gc3RhdGljX2Nhc3Q8RXhjZXB0aW9uQ29kZT4oSURCRXhjZXB0aW9u
Q29kZTo6RGF0YUVycm9yKTsKKyAgICAgICAgZWMgPSBzdGF0aWNfY2FzdDxFeGNlcHRpb25Db2Rl
PihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCkBAIC0xNzcsMTMgKzE3NywxMyBAQCBSZWZQdHI8V2ViQ29yZTo6SURCUmVx
dWVzdD4gSURCSW5kZXg6OmRvQ291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
YwogICAgIH0KIAogICAgIGlmIChyYW5nZS5pc051bGwpIHsKLSAgICAgICAgZWMgPSBzdGF0aWNf
Y2FzdDxFeGNlcHRpb25Db2RlPihJREJFeGNlcHRpb25Db2RlOjpEYXRhRXJyb3IpOworICAgICAg
ICBlYyA9IHN0YXRpY19jYXN0PEV4Y2VwdGlvbkNvZGU+KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpE
YXRhRXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBhdXRvJiB0
cmFuc2FjdGlvbiA9IG1fb2JqZWN0U3RvcmUtPm1vZGVyblRyYW5zYWN0aW9uKCk7CiAgICAgaWYg
KCF0cmFuc2FjdGlvbi5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGVjID0gc3RhdGljX2Nhc3Q8RXhj
ZXB0aW9uQ29kZT4oSURCRXhjZXB0aW9uQ29kZTo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yKTsK
KyAgICAgICAgZWMgPSBzdGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCkBAIC0yNDcsNyArMjQ3LDcgQEAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+
IElEQkluZGV4OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QKICAg
ICBET01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKGNvbnRleHQpOwogICAgIFJlZlB0cjxJREJL
ZXk+IGlkYktleSA9IHNjcmlwdFZhbHVlVG9JREJLZXkoJnJlcXVlc3RTdGF0ZSwga2V5KTsKICAg
ICBpZiAoIWlkYktleSB8fCBpZGJLZXktPnR5cGUoKSA9PSBLZXlUeXBlOjpJbnZhbGlkKSB7Ci0g
ICAgICAgIGVjID0gc3RhdGljX2Nhc3Q8RXhjZXB0aW9uQ29kZT4oSURCRXhjZXB0aW9uQ29kZTo6
RGF0YUVycm9yKTsKKyAgICAgICAgZWMgPSBzdGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCkBAIC0yNjIsMTMgKzI2MiwxMyBAQCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4g
SURCSW5kZXg6OmRvR2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbgogICAg
IH0KIAogICAgIGlmIChyYW5nZS5pc051bGwpIHsKLSAgICAgICAgZWMgPSBzdGF0aWNfY2FzdDxF
eGNlcHRpb25Db2RlPihJREJFeGNlcHRpb25Db2RlOjpEYXRhRXJyb3IpOworICAgICAgICBlYyA9
IHN0YXRpY19jYXN0PEV4Y2VwdGlvbkNvZGU+KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJy
b3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBhdXRvJiB0cmFuc2Fj
dGlvbiA9IG1fb2JqZWN0U3RvcmUtPm1vZGVyblRyYW5zYWN0aW9uKCk7CiAgICAgaWYgKCF0cmFu
c2FjdGlvbi5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGVjID0gc3RhdGljX2Nhc3Q8RXhjZXB0aW9u
Q29kZT4oSURCRXhjZXB0aW9uQ29kZTo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yKTsKKyAgICAg
ICAgZWMgPSBzdGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCkBAIC0yOTksNyArMjk5LDcgQEAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQklu
ZGV4OjpnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY28KICAgICBET01S
ZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKGNvbnRleHQpOwogICAgIFJlZlB0cjxJREJLZXk+IGlk
YktleSA9IHNjcmlwdFZhbHVlVG9JREJLZXkoJnJlcXVlc3RTdGF0ZSwga2V5KTsKICAgICBpZiAo
IWlkYktleSB8fCBpZGJLZXktPnR5cGUoKSA9PSBLZXlUeXBlOjpJbnZhbGlkKSB7Ci0gICAgICAg
IGVjID0gc3RhdGljX2Nhc3Q8RXhjZXB0aW9uQ29kZT4oSURCRXhjZXB0aW9uQ29kZTo6RGF0YUVy
cm9yKTsKKyAgICAgICAgZWMgPSBzdGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6RGF0YUVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
CkBAIC0zMTQsMTMgKzMxNCwxMyBAQCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCSW5k
ZXg6OmRvR2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsCiAgICAgfQogCiAg
ICAgaWYgKHJhbmdlLmlzTnVsbCkgewotICAgICAgICBlYyA9IHN0YXRpY19jYXN0PEV4Y2VwdGlv
bkNvZGU+KElEQkV4Y2VwdGlvbkNvZGU6OkRhdGFFcnJvcik7CisgICAgICAgIGVjID0gc3RhdGlj
X2Nhc3Q8RXhjZXB0aW9uQ29kZT4oSURCRGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcik7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGF1dG8mIHRyYW5zYWN0aW9uID0g
bV9vYmplY3RTdG9yZS0+bW9kZXJuVHJhbnNhY3Rpb24oKTsKICAgICBpZiAoIXRyYW5zYWN0aW9u
LmlzQWN0aXZlKCkpIHsKLSAgICAgICAgZWMgPSBzdGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJ
REJFeGNlcHRpb25Db2RlOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3IpOworICAgICAgICBlYyA9
IHN0YXRpY19jYXN0PEV4Y2VwdGlvbkNvZGU+KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2Fj
dGlvbkluYWN0aXZlRXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmpl
Y3RTdG9yZUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L0lEQk9iamVjdFN0b3JlSW1wbC5jcHAKaW5kZXggNGM3ZjcxMS4uNjBiYWU0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3Jl
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
Qk9iamVjdFN0b3JlSW1wbC5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBSZWZQdHI8V2ViQ29yZTo6
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LAogICAgIH0KIAogICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgewot
ICAgICAgICBlYyA9IHN0YXRpY19jYXN0PEV4Y2VwdGlvbkNvZGU+KElEQkV4Y2VwdGlvbkNvZGU6
OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcik7CisgICAgICAgIGVjID0gc3RhdGljX2Nhc3Q8RXhj
ZXB0aW9uQ29kZT4oSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJv
cik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTY0LDcgKzE2NCw3IEBA
IFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0
ZShjb250ZXh0KTsKICAgICBSZWZQdHI8SURCS2V5PiBpZGJLZXkgPSBzY3JpcHRWYWx1ZVRvSURC
S2V5KCZyZXF1ZXN0U3RhdGUsIGtleSk7CiAgICAgaWYgKCFpZGJLZXkgfHwgaWRiS2V5LT50eXBl
KCkgPT0gS2V5VHlwZTo6SW52YWxpZCkgewotICAgICAgICBlYyA9IHN0YXRpY19jYXN0PEV4Y2Vw
dGlvbkNvZGU+KElEQkV4Y2VwdGlvbkNvZGU6OkRhdGFFcnJvcik7CisgICAgICAgIGVjID0gc3Rh
dGljX2Nhc3Q8RXhjZXB0aW9uQ29kZT4oSURCRGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcik7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTgyLDcgKzE4Miw3IEBAIFJl
ZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgfQogCiAgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5p
c0FjdGl2ZSgpKSB7Ci0gICAgICAgIGVjID0gc3RhdGljX2Nhc3Q8RXhjZXB0aW9uQ29kZT4oSURC
RXhjZXB0aW9uQ29kZTo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yKTsKKyAgICAgICAgZWMgPSBz
dGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rp
b25JbmFjdGl2ZUVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0x
OTMsNyArMTkzLDcgQEAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3Jl
OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKIAogICAgIElEQktleVJhbmdl
RGF0YSBrZXlSYW5nZURhdGEoa2V5UmFuZ2UpOwogICAgIGlmICgha2V5UmFuZ2VEYXRhLmlzVmFs
aWQoKSkgewotICAgICAgICBlYyA9IHN0YXRpY19jYXN0PEV4Y2VwdGlvbkNvZGU+KElEQkV4Y2Vw
dGlvbkNvZGU6OkRhdGFFcnJvcik7CisgICAgICAgIGVjID0gc3RhdGljX2Nhc3Q8RXhjZXB0aW9u
Q29kZT4oSURCRGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcik7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIApAQCAtMzE1LDEyICszMTUsMTIgQEAgUmVmUHRyPFdlYkNvcmU6OklE
QlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25D
b250ZXgKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9u
Iik7CiAKICAgICBpZiAobV90cmFuc2FjdGlvbi0+aXNSZWFkT25seSgpKSB7Ci0gICAgICAgIGVj
ID0gc3RhdGljX2Nhc3Q8RXhjZXB0aW9uQ29kZT4oSURCRXhjZXB0aW9uQ29kZTo6UmVhZE9ubHlF
cnJvcik7CisgICAgICAgIGVjID0gc3RhdGljX2Nhc3Q8RXhjZXB0aW9uQ29kZT4oSURCRGF0YWJh
c2VFeGNlcHRpb246OlJlYWRPbmx5RXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKICAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0aXZlKCkpIHsKLSAgICAgICAgZWMg
PSBzdGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJREJFeGNlcHRpb25Db2RlOjpUcmFuc2FjdGlv
bkluYWN0aXZlRXJyb3IpOworICAgICAgICBlYyA9IHN0YXRpY19jYXN0PEV4Y2VwdGlvbkNvZGU+
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3IpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTMzMSw3ICszMzEsNyBAQCBSZWZQdHI8V2Vi
Q29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleAogCiAgICAgSURCS2V5UmFuZ2VEYXRhIGtleVJhbmdlRGF0YShrZXlSYW5n
ZSk7CiAgICAgaWYgKCFrZXlSYW5nZURhdGEuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGVjID0gc3Rh
dGljX2Nhc3Q8RXhjZXB0aW9uQ29kZT4oSURCRXhjZXB0aW9uQ29kZTo6RGF0YUVycm9yKTsKKyAg
ICAgICAgZWMgPSBzdGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6RGF0YUVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0zNDks
NyArMzQ5LDcgQEAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpk
ZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXgKICAgICBET01SZXF1ZXN0U3RhdGUg
cmVxdWVzdFN0YXRlKGNvbnRleHQpOwogICAgIFJlZlB0cjxJREJLZXk+IGlkYktleSA9IHNjcmlw
dFZhbHVlVG9JREJLZXkoJnJlcXVlc3RTdGF0ZSwga2V5KTsKICAgICBpZiAoIWlkYktleSB8fCBp
ZGJLZXktPnR5cGUoKSA9PSBLZXlUeXBlOjpJbnZhbGlkKSB7Ci0gICAgICAgIGVjID0gc3RhdGlj
X2Nhc3Q8RXhjZXB0aW9uQ29kZT4oSURCRXhjZXB0aW9uQ29kZTo6RGF0YUVycm9yKTsKKyAgICAg
ICAgZWMgPSBzdGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
RGF0YUVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0zNjEsMTcg
KzM2MSwxNyBAQCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNs
ZWFyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleAogICAgIExPRyhJbmRleGVkREIsICJJ
REJPYmplY3RTdG9yZTo6Y2xlYXIiKTsKIAogICAgIGlmIChtX3RyYW5zYWN0aW9uLT5pc1JlYWRP
bmx5KCkpIHsKLSAgICAgICAgZWMgPSBzdGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJREJFeGNl
cHRpb25Db2RlOjpSZWFkT25seUVycm9yKTsKKyAgICAgICAgZWMgPSBzdGF0aWNfY2FzdDxFeGNl
cHRpb25Db2RlPihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6UmVhZE9ubHlFcnJvcik7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3Rp
dmUoKSkgewotICAgICAgICBlYyA9IHN0YXRpY19jYXN0PEV4Y2VwdGlvbkNvZGU+KElEQkV4Y2Vw
dGlvbkNvZGU6OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcik7CisgICAgICAgIGVjID0gc3RhdGlj
X2Nhc3Q8RXhjZXB0aW9uQ29kZT4oSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5h
Y3RpdmVFcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGlmICht
X2RlbGV0ZWQpIHsKLSAgICAgICAgZWMgPSBzdGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJREJF
eGNlcHRpb25Db2RlOjpJbnZhbGlkU3RhdGVFcnJvcik7CisgICAgICAgIGVjID0gc3RhdGljX2Nh
c3Q8RXhjZXB0aW9uQ29kZT4oSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9y
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0zODksMTcgKzM4OSwxNyBA
QCBSZWZQdHI8V2ViQ29yZTo6SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjbwogICAgIH0KIAogICAgIGlmIChtX2RlbGV0ZWQpIHsK
LSAgICAgICAgZWMgPSBzdGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJREJFeGNlcHRpb25Db2Rl
OjpJbnZhbGlkU3RhdGVFcnJvcik7CisgICAgICAgIGVjID0gc3RhdGljX2Nhc3Q8RXhjZXB0aW9u
Q29kZT4oSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5pc1ZlcnNp
b25DaGFuZ2UoKSkgewotICAgICAgICBlYyA9IHN0YXRpY19jYXN0PEV4Y2VwdGlvbkNvZGU+KElE
QkV4Y2VwdGlvbkNvZGU6OkludmFsaWRTdGF0ZUVycm9yKTsKKyAgICAgICAgZWMgPSBzdGF0aWNf
Y2FzdDxFeGNlcHRpb25Db2RlPihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJy
b3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoIW1fdHJhbnNh
Y3Rpb24tPmlzQWN0aXZlKCkpIHsKLSAgICAgICAgZWMgPSBzdGF0aWNfY2FzdDxFeGNlcHRpb25D
b2RlPihJREJFeGNlcHRpb25Db2RlOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3IpOworICAgICAg
ICBlYyA9IHN0YXRpY19jYXN0PEV4Y2VwdGlvbkNvZGU+KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpU
cmFuc2FjdGlvbkluYWN0aXZlRXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKQEAgLTQ0OSw3ICs0NDksNyBAQCBSZWZQdHI8V2ViQ29yZTo6SURCSW5kZXg+IElEQk9iamVj
dFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgRXhjZXB0aQogICAgIH0KIAog
ICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgewotICAgICAgICBlYyA9IHN0YXRp
Y19jYXN0PEV4Y2VwdGlvbkNvZGU+KElEQkV4Y2VwdGlvbkNvZGU6OlRyYW5zYWN0aW9uSW5hY3Rp
dmVFcnJvcik7CisgICAgICAgIGVjID0gc3RhdGljX2Nhc3Q8RXhjZXB0aW9uQ29kZT4oSURCRGF0
YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcik7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIApAQCAtNDc0LDE3ICs0NzQsMTcgQEAgdm9pZCBJREJPYmplY3RT
dG9yZTo6ZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykK
ICAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUluZGV4ICVzIiwgbmFt
ZS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmIChtX2RlbGV0ZWQpIHsKLSAgICAgICAgZWMgPSBz
dGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJREJFeGNlcHRpb25Db2RlOjpJbnZhbGlkU3RhdGVF
cnJvcik7CisgICAgICAgIGVjID0gc3RhdGljX2Nhc3Q8RXhjZXB0aW9uQ29kZT4oSURCRGF0YWJh
c2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNWZXJzaW9uQ2hhbmdlKCkpIHsKLSAgICAgICAg
ZWMgPSBzdGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJREJFeGNlcHRpb25Db2RlOjpJbnZhbGlk
U3RhdGVFcnJvcik7CisgICAgICAgIGVjID0gc3RhdGljX2Nhc3Q8RXhjZXB0aW9uQ29kZT4oSURC
RGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgewotICAgICAgICBl
YyA9IHN0YXRpY19jYXN0PEV4Y2VwdGlvbkNvZGU+KElEQkV4Y2VwdGlvbkNvZGU6OlRyYW5zYWN0
aW9uSW5hY3RpdmVFcnJvcik7CisgICAgICAgIGVjID0gc3RhdGljX2Nhc3Q8RXhjZXB0aW9uQ29k
ZT4oSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTUzMSw3ICs1MzEsNyBAQCBSZWZQdHI8V2ViQ29yZTo6
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleAogICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CiAgICAg
UmVmUHRyPElEQktleT4gaWRiS2V5ID0gc2NyaXB0VmFsdWVUb0lEQktleSgmcmVxdWVzdFN0YXRl
LCBrZXkpOwogICAgIGlmICghaWRiS2V5IHx8IGlkYktleS0+dHlwZSgpID09IEtleVR5cGU6Oklu
dmFsaWQpIHsKLSAgICAgICAgZWMgPSBzdGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJREJFeGNl
cHRpb25Db2RlOjpEYXRhRXJyb3IpOworICAgICAgICBlYyA9IHN0YXRpY19jYXN0PEV4Y2VwdGlv
bkNvZGU+KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3IpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKQEAgLTU1Myw3ICs1NTMsNyBAQCBSZWZQdHI8V2ViQ29yZTo6SURC
UmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleAogUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkb0NvdW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IElEQktleVJhbmdlRGF0YSYg
cmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNB
Y3RpdmUoKSkgewotICAgICAgICBlYyA9IHN0YXRpY19jYXN0PEV4Y2VwdGlvbkNvZGU+KElEQkV4
Y2VwdGlvbkNvZGU6OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcik7CisgICAgICAgIGVjID0gc3Rh
dGljX2Nhc3Q8RXhjZXB0aW9uQ29kZT4oSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9u
SW5hY3RpdmVFcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNTYz
LDcgKzU2Myw3IEBAIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6
ZG9Db3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250CiAgICAgfQogCiAgICAgaWYgKHJh
bmdlLmlzTnVsbCkgewotICAgICAgICBlYyA9IHN0YXRpY19jYXN0PEV4Y2VwdGlvbkNvZGU+KElE
QkV4Y2VwdGlvbkNvZGU6OkRhdGFFcnJvcik7CisgICAgICAgIGVjID0gc3RhdGljX2Nhc3Q8RXhj
ZXB0aW9uQ29kZT4oSURCRGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcik7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQk9wZW5EQlJlcXVlc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5jcHAKaW5k
ZXggODMwMGFiMy4uMGRjNjdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQk9wZW5EQlJlcXVlc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT3BlbkRCUmVxdWVzdEltcGwuY3BwCkBA
IC05Miw3ICs5Miw3IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6ZmlyZUVycm9yQWZ0ZXJWZXJz
aW9uQ2hhbmdlQWJvcnQoKQogCiAgICAgQVNTRVJUKGhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKIAot
ICAgIElEQkVycm9yIGlkYkVycm9yKElEQkV4Y2VwdGlvbkNvZGU6OkFib3J0RXJyb3IpOworICAg
IElEQkVycm9yIGlkYkVycm9yKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKTsKICAg
ICBtX2RvbUVycm9yID0gRE9NRXJyb3I6OmNyZWF0ZShpZGJFcnJvci5uYW1lKCkpOwogCiAgICAg
bV90cmFuc2FjdGlvbi0+YWRkUmVxdWVzdCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwu
Y3BwCmluZGV4IDc0ZWM5YjIuLmQxMGU1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuY3Bw
CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnRPblNlcnZlckFu
ZENhbmNlbFJlcXVlc3RzKFRyYW5zYWN0aW9uT3BlcmF0aW9uJikKIAogICAgIHNlcnZlckNvbm5l
Y3Rpb24oKS5hYm9ydFRyYW5zYWN0aW9uKCp0aGlzKTsKIAotICAgIElEQkVycm9yIGVycm9yKElE
QkV4Y2VwdGlvbkNvZGU6OkFib3J0RXJyb3IpOworICAgIElEQkVycm9yIGVycm9yKElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKTsKICAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IG1f
YWJvcnRRdWV1ZSkKICAgICAgICAgb3BlcmF0aW9uLT5jb21wbGV0ZWQoSURCUmVzdWx0RGF0YTo6
ZXJyb3Iob3BlcmF0aW9uLT5pZGVudGlmaWVyKCksIGVycm9yKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9y
ZS5jcHAKaW5kZXggNmVkY2VhNi4uODZkMTA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAKQEAg
LTc1LDcgKzc1LDcgQEAgSURCRXJyb3IgSW5kZXhWYWx1ZVN0b3JlOjphZGRSZWNvcmQoY29uc3Qg
SURCS2V5RGF0YSYgaW5kZXhLZXksIGNvbnN0IElEQktleURhdGEKICAgICBhdXRvIHJlc3VsdCA9
IG1fcmVjb3Jkcy5hZGQoaW5kZXhLZXksIG51bGxwdHIpOwogCiAgICAgaWYgKCFyZXN1bHQuaXNO
ZXdFbnRyeSAmJiBtX3VuaXF1ZSkKLSAgICAgICAgcmV0dXJuIElEQkVycm9yKElEQkV4Y2VwdGlv
bkNvZGU6OkNvbnN0cmFpbnRFcnJvcik7CisgICAgICAgIHJldHVybiBJREJFcnJvcihJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9yKTsKIAogICAgIGlmIChyZXN1bHQuaXNOZXdF
bnRyeSkKICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5kZXhWYWx1ZUVudHJ5PihtX3VuaXF1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUu
Y3BwCmluZGV4IGI1YzMzZGUuLmE1ZDI4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuY3BwCkBAIC03Myw3ICs3Myw3IEBAIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6
YmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiAgICAgTE9H
KEluZGV4ZWREQiwgIk1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6YmVnaW5UcmFuc2FjdGlvbiIpOwog
CiAgICAgaWYgKG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKGluZm8uaWRlbnRpZmllcigpKSkKLSAg
ICAgICAgcmV0dXJuIElEQkVycm9yKElEQkV4Y2VwdGlvbkNvZGU6OkludmFsaWRTdGF0ZUVycm9y
LCAiQmFja2luZyBzdG9yZSBhc2tlZCB0byBjcmVhdGUgdHJhbnNhY3Rpb24gaXQgYWxyZWFkeSBo
YXMgYSByZWNvcmQgb2YiKTsKKyAgICAgICAgcmV0dXJuIElEQkVycm9yKElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgYXNrZWQgdG8gY3JlYXRl
IHRyYW5zYWN0aW9uIGl0IGFscmVhZHkgaGFzIGEgcmVjb3JkIG9mIik7CiAKICAgICBhdXRvIHRy
YW5zYWN0aW9uID0gTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmNyZWF0ZSgqdGhpcywg
aW5mbyk7CiAKQEAgLTk5LDcgKzk5LDcgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3Jl
OjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHIKIAogICAg
IGF1dG8gdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uSWRlbnRp
Zmllcik7CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKLSAgICAgICAgcmV0dXJuIElEQkVycm9yKElE
QkV4Y2VwdGlvbkNvZGU6OkludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBhc2tlZCB0
byBhYm9ydCB0cmFuc2FjdGlvbiBpdCBkaWRuJ3QgaGF2ZSByZWNvcmQgb2YiKTsKKyAgICAgICAg
cmV0dXJuIElEQkVycm9yKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvciwg
IkJhY2tpbmcgc3RvcmUgYXNrZWQgdG8gYWJvcnQgdHJhbnNhY3Rpb24gaXQgZGlkbid0IGhhdmUg
cmVjb3JkIG9mIik7CiAKICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoKTsKIApAQCAtMTEyLDcgKzEx
Miw3IEBAIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y29tbWl0VHJhbnNhY3Rpb24o
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0g
bV90cmFuc2FjdGlvbnMudGFrZSh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIGlmICghdHJh
bnNhY3Rpb24pCi0gICAgICAgIHJldHVybiBJREJFcnJvcihJREJFeGNlcHRpb25Db2RlOjpJbnZh
bGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgYXNrZWQgdG8gY29tbWl0IHRyYW5zYWN0aW9u
IGl0IGRpZG4ndCBoYXZlIHJlY29yZCBvZiIpOworICAgICAgICByZXR1cm4gSURCRXJyb3IoSURC
RGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBhc2tl
ZCB0byBjb21taXQgdHJhbnNhY3Rpb24gaXQgZGlkbid0IGhhdmUgcmVjb3JkIG9mIik7CiAKICAg
ICB0cmFuc2FjdGlvbi0+Y29tbWl0KCk7CiAKQEAgLTEyNSw3ICsxMjUsNyBAQCBJREJFcnJvciBN
ZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdAogCiAgICAgQVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKICAgICBpZiAobV9k
YXRhYmFzZUluZm8tPmhhc09iamVjdFN0b3JlKGluZm8ubmFtZSgpKSkKLSAgICAgICAgcmV0dXJu
IElEQkVycm9yKElEQkV4Y2VwdGlvbkNvZGU6OkNvbnN0cmFpbnRFcnJvcik7CisgICAgICAgIHJl
dHVybiBJREJFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9yKTsKIAog
ICAgIEFTU0VSVCghbV9vYmplY3RTdG9yZXNCeUlkZW50aWZpZXIuY29udGFpbnMoaW5mby5pZGVu
dGlmaWVyKCkpKTsKICAgICBhdXRvIG9iamVjdFN0b3JlID0gTWVtb3J5T2JqZWN0U3RvcmU6OmNy
ZWF0ZShpbmZvKTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBJREJFcnJvciBNZW1vcnlJREJCYWNraW5n
U3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdAog
CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKICAgICBpZiAoIW1fZGF0YWJhc2VJbmZvLT5o
YXNPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpKQotICAgICAgICByZXR1cm4gSURCRXJyb3Io
SURCRXhjZXB0aW9uQ29kZTo6Q29uc3RyYWludEVycm9yKTsKKyAgICAgICAgcmV0dXJuIElEQkVy
cm9yKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJyb3IpOwogCiAgICAgYXV0byB0
cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwog
ICAgIEFTU0VSVCh0cmFuc2FjdGlvbik7CkBAIC0xNTcsNyArMTU3LDcgQEAgSURCRXJyb3IgTWVt
b3J5SURCQmFja2luZ1N0b3JlOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHQKICAgICBhdXRvIG9iamVjdFN0b3JlID0gdGFrZU9iamVjdFN0b3JlQnlOYW1l
KG9iamVjdFN0b3JlTmFtZSk7CiAgICAgQVNTRVJUKG9iamVjdFN0b3JlKTsKICAgICBpZiAoIW9i
amVjdFN0b3JlKQotICAgICAgICByZXR1cm4gSURCRXJyb3IoSURCRXhjZXB0aW9uQ29kZTo6Q29u
c3RyYWludEVycm9yKTsKKyAgICAgICAgcmV0dXJuIElEQkVycm9yKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpDb25zdHJhaW50RXJyb3IpOwogCiAgICAgbV9kYXRhYmFzZUluZm8tPmRlbGV0ZU9iamVj
dFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7CiAgICAgdHJhbnNhY3Rpb24tPm9iamVjdFN0b3JlRGVs
ZXRlZChXVEY6Om1vdmUob2JqZWN0U3RvcmUpKTsKQEAgLTE3OSw3ICsxNzksNyBAQCBJREJFcnJv
ciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cgogCiAgICAgYXV0byBvYmplY3RTdG9yZSA9IG1fb2JqZWN0U3RvcmVz
QnlJZGVudGlmaWVyLmdldChvYmplY3RTdG9yZUlkZW50aWZpZXIpOwogICAgIGlmICghb2JqZWN0
U3RvcmUpCi0gICAgICAgIHJldHVybiBJREJFcnJvcihJREJFeGNlcHRpb25Db2RlOjpDb25zdHJh
aW50RXJyb3IpOworICAgICAgICByZXR1cm4gSURCRXJyb3IoSURCRGF0YWJhc2VFeGNlcHRpb246
OkNvbnN0cmFpbnRFcnJvcik7CiAKICAgICBvYmplY3RTdG9yZS0+Y2xlYXIoKTsKIApAQCAtMTk2
LDcgKzE5Niw3IEBAIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAKICAgICBhdXRvKiBvYmplY3RT
dG9yZSA9IG1fb2JqZWN0U3RvcmVzQnlJZGVudGlmaWVyLmdldChpbmZvLm9iamVjdFN0b3JlSWRl
bnRpZmllcigpKTsKICAgICBpZiAoIW9iamVjdFN0b3JlKQotICAgICAgICByZXR1cm4gSURCRXJy
b3IoSURCRXhjZXB0aW9uQ29kZTo6Q29uc3RyYWludEVycm9yKTsKKyAgICAgICAgcmV0dXJuIElE
QkVycm9yKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJyb3IpOwogCiAgICAgcmV0
dXJuIG9iamVjdFN0b3JlLT5jcmVhdGVJbmRleCgqcmF3VHJhbnNhY3Rpb24sIGluZm8pOwogfQpA
QCAtMjExLDcgKzIxMSw3IEBAIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRl
SW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAKICAgICBhdXRvKiBv
YmplY3RTdG9yZSA9IG1fb2JqZWN0U3RvcmVzQnlJZGVudGlmaWVyLmdldChvYmplY3RTdG9yZUlk
ZW50aWZpZXIpOwogICAgIGlmICghb2JqZWN0U3RvcmUpCi0gICAgICAgIHJldHVybiBJREJFcnJv
cihJREJFeGNlcHRpb25Db2RlOjpDb25zdHJhaW50RXJyb3IpOworICAgICAgICByZXR1cm4gSURC
RXJyb3IoSURCRGF0YWJhc2VFeGNlcHRpb246OkNvbnN0cmFpbnRFcnJvcik7CiAKICAgICByZXR1
cm4gb2JqZWN0U3RvcmUtPmRlbGV0ZUluZGV4KCpyYXdUcmFuc2FjdGlvbiwgaW5kZXhOYW1lKTsK
IH0KQEAgLTI1MSwxMSArMjUxLDExIEBAIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6
ZGVsZXRlUmFuZ2UoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgQVNT
RVJUKG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAKICAgICBpZiAoIW1fdHJhbnNhY3Rpb25zLmNv
bnRhaW5zKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBJREJFcnJvcihJ
REJFeGNlcHRpb25Db2RlOjpVbmtub3duLCBBU0NJSUxpdGVyYWwoIk5vIGJhY2tpbmcgc3RvcmUg
dHJhbnNhY3Rpb24gZm91bmQgdG8gZGVsZXRlIGZyb20iKSk7CisgICAgICAgIHJldHVybiBJREJF
cnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIk5v
IGJhY2tpbmcgc3RvcmUgdHJhbnNhY3Rpb24gZm91bmQgdG8gZGVsZXRlIGZyb20iKSk7CiAKICAg
ICBNZW1vcnlPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUgPSBtX29iamVjdFN0b3Jlc0J5SWRlbnRp
Zmllci5nZXQob2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBpZiAoIW9iamVjdFN0b3JlKQot
ICAgICAgICByZXR1cm4gSURCRXJyb3IoSURCRXhjZXB0aW9uQ29kZTo6VW5rbm93biwgQVNDSUlM
aXRlcmFsKCJObyBiYWNraW5nIHN0b3JlIG9iamVjdCBzdG9yZSBmb3VuZCIpKTsKKyAgICAgICAg
cmV0dXJuIElEQkVycm9yKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJ
TGl0ZXJhbCgiTm8gYmFja2luZyBzdG9yZSBvYmplY3Qgc3RvcmUgZm91bmQiKSk7CiAKICAgICBv
YmplY3RTdG9yZS0+ZGVsZXRlUmFuZ2UocmFuZ2UpOwogICAgIHJldHVybiBJREJFcnJvcigpOwpA
QCAtMjY5LDExICsyNjksMTEgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjphZGRS
ZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKIAogICAgIGF1dG8g
dHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsK
ICAgICBpZiAoIXRyYW5zYWN0aW9uKQotICAgICAgICByZXR1cm4gSURCRXJyb3IoSURCRXhjZXB0
aW9uQ29kZTo6VW5rbm93biwgQVNDSUlMaXRlcmFsKCJObyBiYWNraW5nIHN0b3JlIHRyYW5zYWN0
aW9uIGZvdW5kIHRvIHB1dCByZWNvcmQiKSk7CisgICAgICAgIHJldHVybiBJREJFcnJvcihJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIk5vIGJhY2tpbmcg
c3RvcmUgdHJhbnNhY3Rpb24gZm91bmQgdG8gcHV0IHJlY29yZCIpKTsKIAogICAgIE1lbW9yeU9i
amVjdFN0b3JlKiBvYmplY3RTdG9yZSA9IG1fb2JqZWN0U3RvcmVzQnlJZGVudGlmaWVyLmdldChv
YmplY3RTdG9yZUlkZW50aWZpZXIpOwogICAgIGlmICghb2JqZWN0U3RvcmUpCi0gICAgICAgIHJl
dHVybiBJREJFcnJvcihJREJFeGNlcHRpb25Db2RlOjpVbmtub3duLCBBU0NJSUxpdGVyYWwoIk5v
IGJhY2tpbmcgc3RvcmUgb2JqZWN0IHN0b3JlIGZvdW5kIHRvIHB1dCByZWNvcmQiKSk7CisgICAg
ICAgIHJldHVybiBJREJFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBB
U0NJSUxpdGVyYWwoIk5vIGJhY2tpbmcgc3RvcmUgb2JqZWN0IHN0b3JlIGZvdW5kIHRvIHB1dCBy
ZWNvcmQiKSk7CiAKICAgICByZXR1cm4gb2JqZWN0U3RvcmUtPmFkZFJlY29yZCgqdHJhbnNhY3Rp
b24sIGtleURhdGEsIHZhbHVlKTsKIH0KQEAgLTI4NSwxMSArMjg1LDExIEBAIElEQkVycm9yIE1l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3RpCiAgICAgQVNTRVJUKG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAKICAgICBp
ZiAoIW1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpCi0gICAg
ICAgIHJldHVybiBJREJFcnJvcihJREJFeGNlcHRpb25Db2RlOjpVbmtub3duLCBBU0NJSUxpdGVy
YWwoIk5vIGJhY2tpbmcgc3RvcmUgdHJhbnNhY3Rpb24gZm91bmQgdG8gZ2V0IHJlY29yZCIpKTsK
KyAgICAgICAgcmV0dXJuIElEQkVycm9yKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiTm8gYmFja2luZyBzdG9yZSB0cmFuc2FjdGlvbiBmb3VuZCB0byBn
ZXQgcmVjb3JkIikpOwogCiAgICAgTWVtb3J5T2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlID0gbV9v
YmplY3RTdG9yZXNCeUlkZW50aWZpZXIuZ2V0KG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAg
aWYgKCFvYmplY3RTdG9yZSkKLSAgICAgICAgcmV0dXJuIElEQkVycm9yKElEQkV4Y2VwdGlvbkNv
ZGU6OlVua25vd24sIEFTQ0lJTGl0ZXJhbCgiTm8gYmFja2luZyBzdG9yZSBvYmplY3Qgc3RvcmUg
Zm91bmQiKSk7CisgICAgICAgIHJldHVybiBJREJFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIk5vIGJhY2tpbmcgc3RvcmUgb2JqZWN0IHN0b3Jl
IGZvdW5kIikpOwogCiAgICAgb3V0VmFsdWUgPSBvYmplY3RTdG9yZS0+dmFsdWVGb3JLZXlSYW5n
ZShyYW5nZSk7CiAgICAgcmV0dXJuIElEQkVycm9yKCk7CkBAIC0zMDIsMTEgKzMwMiwxMSBAQCBJ
REJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldEluZGV4UmVjb3JkKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbgogICAgIEFTU0VSVChvYmplY3RTdG9yZUlkZW50aWZpZXIp
OwogCiAgICAgaWYgKCFtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbklkZW50aWZp
ZXIpKQotICAgICAgICByZXR1cm4gSURCRXJyb3IoSURCRXhjZXB0aW9uQ29kZTo6VW5rbm93biwg
QVNDSUlMaXRlcmFsKCJObyBiYWNraW5nIHN0b3JlIHRyYW5zYWN0aW9uIGZvdW5kIHRvIGdldCBy
ZWNvcmQiKSk7CisgICAgICAgIHJldHVybiBJREJFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIk5vIGJhY2tpbmcgc3RvcmUgdHJhbnNhY3Rpb24g
Zm91bmQgdG8gZ2V0IHJlY29yZCIpKTsKIAogICAgIE1lbW9yeU9iamVjdFN0b3JlKiBvYmplY3RT
dG9yZSA9IG1fb2JqZWN0U3RvcmVzQnlJZGVudGlmaWVyLmdldChvYmplY3RTdG9yZUlkZW50aWZp
ZXIpOwogICAgIGlmICghb2JqZWN0U3RvcmUpCi0gICAgICAgIHJldHVybiBJREJFcnJvcihJREJF
eGNlcHRpb25Db2RlOjpVbmtub3duLCBBU0NJSUxpdGVyYWwoIk5vIGJhY2tpbmcgc3RvcmUgb2Jq
ZWN0IHN0b3JlIGZvdW5kIikpOworICAgICAgICByZXR1cm4gSURCRXJyb3IoSURCRGF0YWJhc2VF
eGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJObyBiYWNraW5nIHN0b3JlIG9i
amVjdCBzdG9yZSBmb3VuZCIpKTsKIAogICAgIG91dFZhbHVlID0gb2JqZWN0U3RvcmUtPmluZGV4
VmFsdWVGb3JLZXlSYW5nZShpbmRleElkZW50aWZpZXIsIHJlY29yZFR5cGUsIHJhbmdlKTsKICAg
ICByZXR1cm4gSURCRXJyb3IoKTsKQEAgLTMxOSwxMSArMzE5LDExIEBAIElEQkVycm9yIE1lbW9y
eUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvCiAgICAgQVNTRVJUKG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAKICAgICBpZiAo
IW1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpCi0gICAgICAg
IHJldHVybiBJREJFcnJvcihJREJFeGNlcHRpb25Db2RlOjpVbmtub3duLCBBU0NJSUxpdGVyYWwo
Ik5vIGJhY2tpbmcgc3RvcmUgdHJhbnNhY3Rpb24gZm91bmQgdG8gZ2V0IGNvdW50IikpOworICAg
ICAgICByZXR1cm4gSURCRXJyb3IoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwg
QVNDSUlMaXRlcmFsKCJObyBiYWNraW5nIHN0b3JlIHRyYW5zYWN0aW9uIGZvdW5kIHRvIGdldCBj
b3VudCIpKTsKIAogICAgIE1lbW9yeU9iamVjdFN0b3JlKiBvYmplY3RTdG9yZSA9IG1fb2JqZWN0
U3RvcmVzQnlJZGVudGlmaWVyLmdldChvYmplY3RTdG9yZUlkZW50aWZpZXIpOwogICAgIGlmICgh
b2JqZWN0U3RvcmUpCi0gICAgICAgIHJldHVybiBJREJFcnJvcihJREJFeGNlcHRpb25Db2RlOjpV
bmtub3duLCBBU0NJSUxpdGVyYWwoIk5vIGJhY2tpbmcgc3RvcmUgb2JqZWN0IHN0b3JlIGZvdW5k
IikpOworICAgICAgICByZXR1cm4gSURCRXJyb3IoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25v
d25FcnJvciwgQVNDSUlMaXRlcmFsKCJObyBiYWNraW5nIHN0b3JlIG9iamVjdCBzdG9yZSBmb3Vu
ZCIpKTsKIAogICAgIG91dENvdW50ID0gb2JqZWN0U3RvcmUtPmNvdW50Rm9yS2V5UmFuZ2UoaW5k
ZXhJZGVudGlmaWVyLCByYW5nZSk7CiAKQEAgLTM1MywxNyArMzUzLDE3IEBAIElEQkVycm9yIE1l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6b3BlbkN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0CiAgICAgQVNTRVJUKCFNZW1vcnlDdXJzb3I6OmN1cnNvckZvcklkZW50aWZp
ZXIoaW5mby5pZGVudGlmaWVyKCkpKTsKIAogICAgIGlmICghbV90cmFuc2FjdGlvbnMuY29udGFp
bnModHJhbnNhY3Rpb25JZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIElEQkVycm9yKElEQkV4
Y2VwdGlvbkNvZGU6OlVua25vd24sIEFTQ0lJTGl0ZXJhbCgiTm8gYmFja2luZyBzdG9yZSB0cmFu
c2FjdGlvbiBmb3VuZCBpbiB3aGljaCB0byBvcGVuIGEgY3Vyc29yIikpOworICAgICAgICByZXR1
cm4gSURCRXJyb3IoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRl
cmFsKCJObyBiYWNraW5nIHN0b3JlIHRyYW5zYWN0aW9uIGZvdW5kIGluIHdoaWNoIHRvIG9wZW4g
YSBjdXJzb3IiKSk7CiAKICAgICBzd2l0Y2ggKGluZm8uY3Vyc29yU291cmNlKCkpIHsKICAgICBj
YXNlIEluZGV4ZWREQjo6Q3Vyc29yU291cmNlOjpPYmplY3RTdG9yZTogewogICAgICAgICBhdXRv
KiBvYmplY3RTdG9yZSA9IG1fb2JqZWN0U3RvcmVzQnlJZGVudGlmaWVyLmdldChpbmZvLnNvdXJj
ZUlkZW50aWZpZXIoKSk7CiAgICAgICAgIGlmICghb2JqZWN0U3RvcmUpCi0gICAgICAgICAgICBy
ZXR1cm4gSURCRXJyb3IoSURCRXhjZXB0aW9uQ29kZTo6VW5rbm93biwgQVNDSUlMaXRlcmFsKCJO
byBiYWNraW5nIHN0b3JlIG9iamVjdCBzdG9yZSBmb3VuZCIpKTsKKyAgICAgICAgICAgIHJldHVy
biBJREJFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVy
YWwoIk5vIGJhY2tpbmcgc3RvcmUgb2JqZWN0IHN0b3JlIGZvdW5kIikpOwogCiAgICAgICAgIE1l
bW9yeUN1cnNvciogY3Vyc29yID0gb2JqZWN0U3RvcmUtPm1heWJlT3BlbkN1cnNvcihpbmZvKTsK
ICAgICAgICAgaWYgKCFjdXJzb3IpCi0gICAgICAgICAgICByZXR1cm4gSURCRXJyb3IoSURCRXhj
ZXB0aW9uQ29kZTo6VW5rbm93biwgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3QgY3JlYXRlIG9iamVj
dCBzdG9yZSBjdXJzb3IgaW4gYmFja2luZyBzdG9yZSIpKTsKKyAgICAgICAgICAgIHJldHVybiBJ
REJFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwo
IkNvdWxkIG5vdCBjcmVhdGUgb2JqZWN0IHN0b3JlIGN1cnNvciBpbiBiYWNraW5nIHN0b3JlIikp
OwogCiAgICAgICAgIGN1cnNvci0+Y3VycmVudERhdGEob3V0RGF0YSk7CiAgICAgICAgIGJyZWFr
OwpAQCAtMzcxLDE1ICszNzEsMTUgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpv
cGVuQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3QKICAgICBjYXNl
IEluZGV4ZWREQjo6Q3Vyc29yU291cmNlOjpJbmRleDoKICAgICAgICAgYXV0byogb2JqZWN0U3Rv
cmUgPSBtX29iamVjdFN0b3Jlc0J5SWRlbnRpZmllci5nZXQoaW5mby5vYmplY3RTdG9yZUlkZW50
aWZpZXIoKSk7CiAgICAgICAgIGlmICghb2JqZWN0U3RvcmUpCi0gICAgICAgICAgICByZXR1cm4g
SURCRXJyb3IoSURCRXhjZXB0aW9uQ29kZTo6VW5rbm93biwgQVNDSUlMaXRlcmFsKCJObyBiYWNr
aW5nIHN0b3JlIG9iamVjdCBzdG9yZSBmb3VuZCIpKTsKKyAgICAgICAgICAgIHJldHVybiBJREJF
cnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIk5v
IGJhY2tpbmcgc3RvcmUgb2JqZWN0IHN0b3JlIGZvdW5kIikpOwogCiAgICAgICAgIGF1dG8qIGlu
ZGV4ID0gb2JqZWN0U3RvcmUtPmluZGV4Rm9ySWRlbnRpZmllcihpbmZvLnNvdXJjZUlkZW50aWZp
ZXIoKSk7CiAgICAgICAgIGlmICghaW5kZXgpCi0gICAgICAgICAgICByZXR1cm4gSURCRXJyb3Io
SURCRXhjZXB0aW9uQ29kZTo6VW5rbm93biwgQVNDSUlMaXRlcmFsKCJObyBiYWNraW5nIHN0b3Jl
IGluZGV4IGZvdW5kIikpOworICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yKElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTm8gYmFja2luZyBzdG9yZSBp
bmRleCBmb3VuZCIpKTsKIAogICAgICAgICBNZW1vcnlDdXJzb3IqIGN1cnNvciA9IGluZGV4LT5t
YXliZU9wZW5DdXJzb3IoaW5mbyk7CiAgICAgICAgIGlmICghY3Vyc29yKQotICAgICAgICAgICAg
cmV0dXJuIElEQkVycm9yKElEQkV4Y2VwdGlvbkNvZGU6OlVua25vd24sIEFTQ0lJTGl0ZXJhbCgi
Q291bGQgbm90IGNyZWF0ZSBpbmRleCBjdXJzb3IgaW4gYmFja2luZyBzdG9yZSIpKTsKKyAgICAg
ICAgICAgIHJldHVybiBJREJFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9y
LCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBjcmVhdGUgaW5kZXggY3Vyc29yIGluIGJhY2tpbmcg
c3RvcmUiKSk7CiAKICAgICAgICAgY3Vyc29yLT5jdXJyZW50RGF0YShvdXREYXRhKTsKICAgICAg
ICAgYnJlYWs7CkBAIC0zOTMsMTEgKzM5MywxMSBAQCBJREJFcnJvciBNZW1vcnlJREJCYWNraW5n
U3RvcmU6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFucwog
ICAgIExPRyhJbmRleGVkREIsICJNZW1vcnlJREJCYWNraW5nU3RvcmU6Oml0ZXJhdGVDdXJzb3Ii
KTsKIAogICAgIGlmICghbV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb25JZGVudGlm
aWVyKSkKLSAgICAgICAgcmV0dXJuIElEQkVycm9yKElEQkV4Y2VwdGlvbkNvZGU6OlVua25vd24s
IEFTQ0lJTGl0ZXJhbCgiTm8gYmFja2luZyBzdG9yZSB0cmFuc2FjdGlvbiBmb3VuZCBpbiB3aGlj
aCB0byBpdGVyYXRlIGN1cnNvciIpKTsKKyAgICAgICAgcmV0dXJuIElEQkVycm9yKElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTm8gYmFja2luZyBzdG9y
ZSB0cmFuc2FjdGlvbiBmb3VuZCBpbiB3aGljaCB0byBpdGVyYXRlIGN1cnNvciIpKTsKIAogICAg
IGF1dG8qIGN1cnNvciA9IE1lbW9yeUN1cnNvcjo6Y3Vyc29yRm9ySWRlbnRpZmllcihjdXJzb3JJ
ZGVudGlmaWVyKTsKICAgICBpZiAoIWN1cnNvcikKLSAgICAgICAgcmV0dXJuIElEQkVycm9yKElE
QkV4Y2VwdGlvbkNvZGU6OlVua25vd24sIEFTQ0lJTGl0ZXJhbCgiTm8gYmFja2luZyBzdG9yZSBj
dXJzb3IgZm91bmQgaW4gd2hpY2ggdG8gaXRlcmF0ZSBjdXJzb3IiKSk7CisgICAgICAgIHJldHVy
biBJREJFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVy
YWwoIk5vIGJhY2tpbmcgc3RvcmUgY3Vyc29yIGZvdW5kIGluIHdoaWNoIHRvIGl0ZXJhdGUgY3Vy
c29yIikpOwogCiAgICAgY3Vyc29yLT5pdGVyYXRlKGtleSwgY291bnQsIG91dERhdGEpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SW5kZXguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eUluZGV4LmNwcAppbmRleCBmODBkOTFiLi4wNzZiNDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAKQEAgLTE3
Nyw3ICsxNzcsNyBAQCBJREJFcnJvciBNZW1vcnlJbmRleDo6cHV0SW5kZXhLZXkoY29uc3QgSURC
S2V5RGF0YSYgdmFsdWVLZXksIGNvbnN0IEluZGV4S2V5JiBpbgogICAgIGlmIChtX2luZm8udW5p
cXVlKCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKSB7CiAgICAgICAgICAgICBp
ZiAobV9yZWNvcmRzLT5jb250YWlucyhrZXkpKQotICAgICAgICAgICAgICAgIHJldHVybiBJREJF
cnJvcihJREJFeGNlcHRpb25Db2RlOjpDb25zdHJhaW50RXJyb3IpOworICAgICAgICAgICAgICAg
IHJldHVybiBJREJFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9yKTsK
ICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKaW5kZXggZTc2NzY1
Zi4uNDczNjdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCkBAIC04Niw3ICs4Niw3IEBA
IElEQkVycm9yIE1lbW9yeU9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChNZW1vcnlCYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbiYgdHJhbnNhY3RpCiAgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeU9iamVj
dFN0b3JlOjpjcmVhdGVJbmRleCIpOwogCiAgICAgaWYgKCFtX3dyaXRlVHJhbnNhY3Rpb24gfHwg
IW1fd3JpdGVUcmFuc2FjdGlvbi0+aXNWZXJzaW9uQ2hhbmdlKCkgfHwgbV93cml0ZVRyYW5zYWN0
aW9uICE9ICZ0cmFuc2FjdGlvbikKLSAgICAgICAgcmV0dXJuIElEQkVycm9yKElEQkV4Y2VwdGlv
bkNvZGU6OkNvbnN0cmFpbnRFcnJvcik7CisgICAgICAgIHJldHVybiBJREJFcnJvcihJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9yKTsKIAogICAgIEFTU0VSVCghbV9pbmRleGVz
QnlJZGVudGlmaWVyLmNvbnRhaW5zKGluZm8uaWRlbnRpZmllcigpKSk7CiAgICAgYXV0byBpbmRl
eCA9IE1lbW9yeUluZGV4OjpjcmVhdGUoaW5mbywgKnRoaXMpOwpAQCAtMTQzLDEyICsxNDMsMTIg
QEAgSURCRXJyb3IgTWVtb3J5T2JqZWN0U3RvcmU6OmRlbGV0ZUluZGV4KE1lbW9yeUJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGkKICAgICBMT0coSW5kZXhlZERCLCAiTWVtb3J5T2Jq
ZWN0U3RvcmU6OmRlbGV0ZUluZGV4Iik7CiAKICAgICBpZiAoIW1fd3JpdGVUcmFuc2FjdGlvbiB8
fCAhbV93cml0ZVRyYW5zYWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSB8fCBtX3dyaXRlVHJhbnNh
Y3Rpb24gIT0gJnRyYW5zYWN0aW9uKQotICAgICAgICByZXR1cm4gSURCRXJyb3IoSURCRXhjZXB0
aW9uQ29kZTo6Q29uc3RyYWludEVycm9yKTsKKyAgICAgICAgcmV0dXJuIElEQkVycm9yKElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJyb3IpOwogICAgIAogICAgIGF1dG8gaW5kZXgg
PSB0YWtlSW5kZXhCeU5hbWUoaW5kZXhOYW1lKTsKICAgICBBU1NFUlQoaW5kZXgpOwogICAgIGlm
ICghaW5kZXgpCi0gICAgICAgIHJldHVybiBJREJFcnJvcihJREJFeGNlcHRpb25Db2RlOjpDb25z
dHJhaW50RXJyb3IpOworICAgICAgICByZXR1cm4gSURCRXJyb3IoSURCRGF0YWJhc2VFeGNlcHRp
b246OkNvbnN0cmFpbnRFcnJvcik7CiAKICAgICBtX2luZm8uZGVsZXRlSW5kZXgoaW5kZXhOYW1l
KTsKICAgICB0cmFuc2FjdGlvbi5pbmRleERlbGV0ZWQoV1RGOjptb3ZlKGluZGV4KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlLmNwcAppbmRleCBjN2NlYjE1Li45OTA4NzJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZS5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpoYW5kbGVPcGVuRGF0YWJhc2VPcGVyYXRpb25zKCkKICAgICAvLyAzLjMuMSBPcGVuaW5nIGEg
ZGF0YWJhc2UKICAgICAvLyBJZiB0aGUgZGF0YWJhc2UgdmVyc2lvbiBoaWdoZXIgdGhhbiB0aGUg
cmVxdWVzdGVkIHZlcnNpb24sIGFib3J0IHRoZXNlIHN0ZXBzIGFuZCByZXR1cm4gYSBWZXJzaW9u
RXJyb3IuCiAgICAgaWYgKHJlcXVlc3RlZFZlcnNpb24gPCBtX2RhdGFiYXNlSW5mby0+dmVyc2lv
bigpKSB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0RGF0YTo6ZXJyb3Iob3BlcmF0
aW9uLT5yZXF1ZXN0RGF0YSgpLnJlcXVlc3RJZGVudGlmaWVyKCksIElEQkVycm9yKElEQkV4Y2Vw
dGlvbkNvZGU6OlZlcnNpb25FcnJvcikpOworICAgICAgICBhdXRvIHJlc3VsdCA9IElEQlJlc3Vs
dERhdGE6OmVycm9yKG9wZXJhdGlvbi0+cmVxdWVzdERhdGEoKS5yZXF1ZXN0SWRlbnRpZmllcigp
LCBJREJFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VmVyc2lvbkVycm9yKSk7CiAgICAgICAg
IG9wZXJhdGlvbi0+Y29ubmVjdGlvbigpLmRpZE9wZW5EYXRhYmFzZShyZXN1bHQpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtNTEyLDcgKzUxMiw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OnBlcmZvcm1QdXRPckFkZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElE
QlJlCiAKICAgICBhdXRvIG9iamVjdFN0b3JlSW5mbyA9IG1fZGF0YWJhc2VJbmZvLT5pbmZvRm9y
RXhpc3RpbmdPYmplY3RTdG9yZShvYmplY3RTdG9yZUlkZW50aWZpZXIpOwogICAgIGlmICghb2Jq
ZWN0U3RvcmVJbmZvKSB7Ci0gICAgICAgIGVycm9yID0gSURCRXJyb3IoSURCRXhjZXB0aW9uQ29k
ZTo6SW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiT2JqZWN0IHN0b3JlIGNhbm5vdCBi
ZSBmb3VuZCBpbiB0aGUgYmFja2luZyBzdG9yZSIpKTsKKyAgICAgICAgZXJyb3IgPSBJREJFcnJv
cihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgi
T2JqZWN0IHN0b3JlIGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUgYmFja2luZyBzdG9yZSIpKTsKICAg
ICAgICAgbV9zZXJ2ZXIucG9zdERhdGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFz
aygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtUHV0T3JBZGQsIGNhbGxiYWNr
SWRlbnRpZmllciwgZXJyb3IsIHVzZWRLZXkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTUzNSw3ICs1MzUsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUHV0T3JBZGQo
dWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZQogICAgICAgICBib29sIGtl
eUV4aXN0czsKICAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+a2V5RXhpc3RzSW5PYmpl
Y3RTdG9yZSh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgdXNl
ZEtleSwga2V5RXhpc3RzKTsKICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpICYmIGtleUV4aXN0
cykKLSAgICAgICAgICAgIGVycm9yID0gSURCRXJyb3IoSURCRXhjZXB0aW9uQ29kZTo6Q29uc3Ry
YWludEVycm9yLCBBU0NJSUxpdGVyYWwoIktleSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgb2JqZWN0
IHN0b3JlIikpOworICAgICAgICAgICAgZXJyb3IgPSBJREJFcnJvcihJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6Q29uc3RyYWludEVycm9yLCBBU0NJSUxpdGVyYWwoIktleSBhbHJlYWR5IGV4aXN0cyBp
biB0aGUgb2JqZWN0IHN0b3JlIikpOwogCiAgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsK
ICAgICAgICAgICAgIG1fc2VydmVyLnBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1Ro
cmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybVB1dE9yQWRkLCBj
YWxsYmFja0lkZW50aWZpZXIsIGVycm9yLCB1c2VkS2V5KSk7CkBAIC01NTIsMTggKzU1MiwxOCBA
QCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUHV0T3JBZGQodWludDY0X3QgY2FsbGJh
Y2tJZGVudGlmaWVyLCBjb25zdCBJREJSZQogCiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBkZXNl
cmlhbGl6ZUlEQlZhbHVlRGF0YVRvSlNWYWx1ZShkYXRhYmFzZVRocmVhZEV4ZWNTdGF0ZSgpLCBv
cmlnaW5hbFJlY29yZFZhbHVlKTsKICAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpIHsK
LSAgICAgICAgICAgIG1fc2VydmVyLnBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1Ro
cmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybVB1dE9yQWRkLCBj
YWxsYmFja0lkZW50aWZpZXIsIElEQkVycm9yKElEQkV4Y2VwdGlvbkNvZGU6OkNvbnN0cmFpbnRF
cnJvciwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVzZXJpYWxpemUgcmVjb3JkIHZhbHVlIGZv
ciByZWNvcmQga2V5IGluamVjdGlvbiIpKSwgdXNlZEtleSkpOworICAgICAgICAgICAgbV9zZXJ2
ZXIucG9zdERhdGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVu
aXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtUHV0T3JBZGQsIGNhbGxiYWNrSWRlbnRpZmllciwg
SURCRXJyb3IoSURCRGF0YWJhc2VFeGNlcHRpb246OkNvbnN0cmFpbnRFcnJvciwgQVNDSUlMaXRl
cmFsKCJVbmFibGUgdG8gZGVzZXJpYWxpemUgcmVjb3JkIHZhbHVlIGZvciByZWNvcmQga2V5IGlu
amVjdGlvbiIpKSwgdXNlZEtleSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKCFpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoZGF0YWJhc2VUaHJlYWRF
eGVjU3RhdGUoKSwgdXNlZEtleSwgdmFsdWUsIG9iamVjdFN0b3JlSW5mby0+a2V5UGF0aCgpKSkg
ewotICAgICAgICAgICAgbV9zZXJ2ZXIucG9zdERhdGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3Nz
VGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtUHV0T3JBZGQs
IGNhbGxiYWNrSWRlbnRpZmllciwgSURCRXJyb3IoSURCRXhjZXB0aW9uQ29kZTo6Q29uc3RyYWlu
dEVycm9yLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBpbmplY3QgcmVjb3JkIGtleSBpbnRvIHJl
Y29yZCB2YWx1ZSIpKSwgdXNlZEtleSkpOworICAgICAgICAgICAgbV9zZXJ2ZXIucG9zdERhdGFi
YXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFi
YXNlOjpkaWRQZXJmb3JtUHV0T3JBZGQsIGNhbGxiYWNrSWRlbnRpZmllciwgSURCRXJyb3IoSURC
RGF0YWJhc2VFeGNlcHRpb246OkNvbnN0cmFpbnRFcnJvciwgQVNDSUlMaXRlcmFsKCJVbmFibGUg
dG8gaW5qZWN0IHJlY29yZCBrZXkgaW50byByZWNvcmQgdmFsdWUiKSksIHVzZWRLZXkpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gc2VyaWFsaXplZFZh
bHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoJmRhdGFiYXNlVGhyZWFkRXhlY1N0
YXRlKCksIHZhbHVlLCBudWxscHRyLCBudWxscHRyKTsKICAgICAgICAgaWYgKGRhdGFiYXNlVGhy
ZWFkRXhlY1N0YXRlKCkuaGFkRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIG1fc2VydmVyLnBv
c3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJ
REJEYXRhYmFzZTo6ZGlkUGVyZm9ybVB1dE9yQWRkLCBjYWxsYmFja0lkZW50aWZpZXIsIElEQkVy
cm9yKElEQkV4Y2VwdGlvbkNvZGU6OkNvbnN0cmFpbnRFcnJvciwgQVNDSUlMaXRlcmFsKCJVbmFi
bGUgdG8gc2VyaWFsaXplIHJlY29yZCB2YWx1ZSBhZnRlciBpbmplY3RpbmcgcmVjb3JkIGtleSIp
KSwgdXNlZEtleSkpOworICAgICAgICAgICAgbV9zZXJ2ZXIucG9zdERhdGFiYXNlVGFza1JlcGx5
KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJm
b3JtUHV0T3JBZGQsIGNhbGxiYWNrSWRlbnRpZmllciwgSURCRXJyb3IoSURCRGF0YWJhc2VFeGNl
cHRpb246OkNvbnN0cmFpbnRFcnJvciwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gc2VyaWFsaXpl
IHJlY29yZCB2YWx1ZSBhZnRlciBpbmplY3RpbmcgcmVjb3JkIGtleSIpKSwgdXNlZEtleSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwCmluZGV4IDc1ZWMzOGYuLmFm
NTEwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJFcnJvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQkVycm9yLmNwcApAQCAtMzIsMTA0ICszMiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0YXRpYyBjb25zdCBTdHJpbmcmIGlkYkVycm9yTmFtZShJREJFeGNlcHRpb25Db2Rl
IGNvZGUpCi17Ci0gICAgc3dpdGNoIChjb2RlKSB7Ci0gICAgY2FzZSBJREJFeGNlcHRpb25Db2Rl
OjpVbmtub3duOiB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGVudHJ5
ID0gQVNDSUlMaXRlcmFsKCJVbmtub3duRXJyb3IiKTsKLSAgICAgICAgcmV0dXJuIGVudHJ5Owot
ICAgIH0KLSAgICBjYXNlIElEQkV4Y2VwdGlvbkNvZGU6OkNvbnN0cmFpbnRFcnJvcjogewotICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBlbnRyeSA9IEFTQ0lJTGl0ZXJhbCgi
Q29uc3RyYWludEVycm9yIik7Ci0gICAgICAgIHJldHVybiBlbnRyeTsKLSAgICB9Ci0gICAgY2Fz
ZSBJREJFeGNlcHRpb25Db2RlOjpWZXJzaW9uRXJyb3I6IHsKLSAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gZW50cnkgPSBBU0NJSUxpdGVyYWwoIlZlcnNpb25FcnJvciIpOwot
ICAgICAgICByZXR1cm4gZW50cnk7Ci0gICAgfQotICAgIGNhc2UgSURCRXhjZXB0aW9uQ29kZTo6
SW52YWxpZFN0YXRlRXJyb3I6IHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gZW50cnkgPSBBU0NJSUxpdGVyYWwoIkludmFsaWRTdGF0ZUVycm9yIik7Ci0gICAgICAgIHJl
dHVybiBlbnRyeTsKLSAgICB9Ci0gICAgY2FzZSBJREJFeGNlcHRpb25Db2RlOjpEYXRhRXJyb3I6
IHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZW50cnkgPSBBU0NJSUxp
dGVyYWwoIkRhdGFFcnJvciIpOwotICAgICAgICByZXR1cm4gZW50cnk7Ci0gICAgfQotICAgIGNh
c2UgSURCRXhjZXB0aW9uQ29kZTo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOiB7Ci0gICAgICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGVudHJ5ID0gQVNDSUlMaXRlcmFsKCJUcmFu
c2FjdGlvbkluYWN0aXZlRXJyb3IiKTsKLSAgICAgICAgcmV0dXJuIGVudHJ5OwotICAgIH0KLSAg
ICBjYXNlIElEQkV4Y2VwdGlvbkNvZGU6OlJlYWRPbmx5RXJyb3I6IHsKLSAgICAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZW50cnkgPSBBU0NJSUxpdGVyYWwoIlJlYWRPbmx5RXJy
b3IiKTsKLSAgICAgICAgcmV0dXJuIGVudHJ5OwotICAgIH0KLSAgICBjYXNlIElEQkV4Y2VwdGlv
bkNvZGU6OkRhdGFDbG9uZUVycm9yOiB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IGVudHJ5ID0gQVNDSUlMaXRlcmFsKCJEYXRhQ2xvbmVFcnJvciIpOwotICAgICAgICBy
ZXR1cm4gZW50cnk7Ci0gICAgfQotICAgIGNhc2UgSURCRXhjZXB0aW9uQ29kZTo6QWJvcnRFcnJv
cjogewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBlbnRyeSA9IEFTQ0lJ
TGl0ZXJhbCgiQWJvcnRFcnJvciIpOwotICAgICAgICByZXR1cm4gZW50cnk7Ci0gICAgfQotICAg
IGNhc2UgSURCRXhjZXB0aW9uQ29kZTo6Tm9uZToKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
fQotCi1zdGF0aWMgY29uc3QgU3RyaW5nJiBpZGJFcnJvckRlc2NyaXB0aW9uKElEQkV4Y2VwdGlv
bkNvZGUgY29kZSkKLXsKLSAgICBzd2l0Y2ggKGNvZGUpIHsKLSAgICBjYXNlIElEQkV4Y2VwdGlv
bkNvZGU6OlVua25vd246IHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
ZW50cnkgPSBBU0NJSUxpdGVyYWwoIk9wZXJhdGlvbiBmYWlsZWQgZm9yIHJlYXNvbnMgdW5yZWxh
dGVkIHRvIHRoZSBkYXRhYmFzZSBpdHNlbGYgYW5kIG5vdCBjb3ZlcmVkIGJ5IGFueSBvdGhlciBl
cnJvcnMuIik7Ci0gICAgICAgIHJldHVybiBlbnRyeS5nZXQoKTsKLSAgICB9Ci0gICAgY2FzZSBJ
REJFeGNlcHRpb25Db2RlOjpDb25zdHJhaW50RXJyb3I6IHsKLSAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gZW50cnkgPSBBU0NJSUxpdGVyYWwoIk11dGF0aW9uIG9wZXJhdGlv
biBpbiB0aGUgdHJhbnNhY3Rpb24gZmFpbGVkIGJlY2F1c2UgYSBjb25zdHJhaW50IHdhcyBub3Qg
c2F0aXNmaWVkLiIpOwotICAgICAgICByZXR1cm4gZW50cnkuZ2V0KCk7Ci0gICAgfQotICAgIGNh
c2UgSURCRXhjZXB0aW9uQ29kZTo6VmVyc2lvbkVycm9yOiB7Ci0gICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IGVudHJ5ID0gQVNDSUlMaXRlcmFsKCJBbiBhdHRlbXB0IHdhcyBt
YWRlIHRvIG9wZW4gYSBkYXRhYmFzZSB1c2luZyBhIGxvd2VyIHZlcnNpb24gdGhhbiB0aGUgZXhp
c3RpbmcgdmVyc2lvbi4iKTsKLSAgICAgICAgcmV0dXJuIGVudHJ5LmdldCgpOwotICAgIH0KLSAg
ICBjYXNlIElEQkV4Y2VwdGlvbkNvZGU6OkludmFsaWRTdGF0ZUVycm9yOiB7Ci0gICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGVudHJ5ID0gQVNDSUlMaXRlcmFsKCJPcGVyYXRp
b24gd2FzIGNhbGxlZCBvbiBhbiBvYmplY3Qgb24gd2hpY2ggaXQgaXMgbm90IGFsbG93ZWQgb3Ig
YXQgYSB0aW1lIHdoZW4gaXQgaXMgbm90IGFsbG93ZWQuIik7Ci0gICAgICAgIHJldHVybiBlbnRy
eTsKLSAgICB9Ci0gICAgY2FzZSBJREJFeGNlcHRpb25Db2RlOjpEYXRhRXJyb3I6IHsKLSAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZW50cnkgPSBBU0NJSUxpdGVyYWwoIkRh
dGEgcHJvdmlkZWQgdG8gYW4gb3BlcmF0aW9uIGRvZXMgbm90IG1lZXQgcmVxdWlyZW1lbnRzLiIp
OwotICAgICAgICByZXR1cm4gZW50cnk7Ci0gICAgfQotICAgIGNhc2UgSURCRXhjZXB0aW9uQ29k
ZTo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOiB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTdHJpbmc+IGVudHJ5ID0gQVNDSUlMaXRlcmFsKCJSZXF1ZXN0IHdhcyBwbGFjZWQgYWdh
aW5zdCBhIHRyYW5zYWN0aW9uIHdoaWNoIGlzIGN1cnJlbnRseSBub3QgYWN0aXZlLCBvciB3aGlj
aCBpcyBmaW5pc2hlZC4iKTsKLSAgICAgICAgcmV0dXJuIGVudHJ5OwotICAgIH0KLSAgICBjYXNl
IElEQkV4Y2VwdGlvbkNvZGU6OlJlYWRPbmx5RXJyb3I6IHsKLSAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gZW50cnkgPSBBU0NJSUxpdGVyYWwoIkEgbXV0YXRpbmcgb3BlcmF0
aW9uIHdhcyBhdHRlbXB0ZWQgaW4gYSBcInJlYWRvbmx5XCIgdHJhbnNhY3Rpb24uIik7Ci0gICAg
ICAgIHJldHVybiBlbnRyeTsKLSAgICB9Ci0gICAgY2FzZSBJREJFeGNlcHRpb25Db2RlOjpEYXRh
Q2xvbmVFcnJvcjogewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBlbnRy
eSA9IEFTQ0lJTGl0ZXJhbCgiRGF0YSBiZWluZyBzdG9yZWQgY291bGQgbm90IGJlIGNsb25lZCBi
eSB0aGUgc3RydWN0dXJlZCBjbG9uaW5nIGFsZ29yaXRobS4iKTsKLSAgICAgICAgcmV0dXJuIGVu
dHJ5OwotICAgIH0KLSAgICBjYXNlIElEQkV4Y2VwdGlvbkNvZGU6OkFib3J0RXJyb3I6IHsKLSAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZW50cnkgPSBBU0NJSUxpdGVyYWwo
IlRyYW5zYWN0aW9uIHdhcyBhYm9ydGVkIik7Ci0gICAgICAgIHJldHVybiBlbnRyeTsKLSAgICB9
Ci0gICAgY2FzZSBJREJFeGNlcHRpb25Db2RlOjpOb25lOgotICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19Ci0KLUlEQkVycm9yOjpJREJFcnJvcihJREJFeGNlcHRpb25Db2RlIGNvZGUpCitJREJF
cnJvcjo6SURCRXJyb3IoRXhjZXB0aW9uQ29kZSBjb2RlKQogICAgIDogSURCRXJyb3IoY29kZSwg
ZW1wdHlTdHJpbmcoKSkKIHsKIH0KIAotSURCRXJyb3I6OklEQkVycm9yKElEQkV4Y2VwdGlvbkNv
ZGUgY29kZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorSURCRXJyb3I6OklEQkVycm9yKEV4Y2Vw
dGlvbkNvZGUgY29kZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIDogbV9jb2RlKGNvZGUp
CiAgICAgLCBtX21lc3NhZ2UobWVzc2FnZSkKIHsKQEAgLTE0NywxNyArNTUsMTQgQEAgSURCRXJy
b3ImIElEQkVycm9yOjpvcGVyYXRvcj0oY29uc3QgSURCRXJyb3ImIG90aGVyKQogICAgIHJldHVy
biAqdGhpczsKIH0KIAotY29uc3QgU3RyaW5nJiBJREJFcnJvcjo6bmFtZSgpIGNvbnN0CitTdHJp
bmcgSURCRXJyb3I6Om5hbWUoKSBjb25zdAogewotICAgIHJldHVybiBpZGJFcnJvck5hbWUobV9j
b2RlKTsKKyAgICByZXR1cm4gSURCRGF0YWJhc2VFeGNlcHRpb246OmdldEVycm9yTmFtZShtX2Nv
ZGUpOwogfQogCi1jb25zdCBTdHJpbmcmIElEQkVycm9yOjptZXNzYWdlKCkgY29uc3QKK1N0cmlu
ZyBJREJFcnJvcjo6bWVzc2FnZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX21lc3NhZ2UuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gbV9tZXNzYWdlOwotCi0gICAgcmV0dXJuIGlkYkVycm9yRGVz
Y3JpcHRpb24obV9jb2RlKTsKKyAgICByZXR1cm4gSURCRGF0YWJhc2VFeGNlcHRpb246OmdldEVy
cm9yRGVzY3JpcHRpb24obV9jb2RlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaApp
bmRleCAyYTQ1OWIzLi4yMTFkMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaApAQCAtMjgsNDQgKzI4LDI5IEBACiAKICNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAorI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RhdGljIGNvbnN0IGludCBJREJFeGNlcHRpb25Db2RlT2Zmc2V0ID0gMTIwMDsKLQot
ZW51bSBjbGFzcyBJREJFeGNlcHRpb25Db2RlIHsKLSAgICBOb25lID0gSURCRXhjZXB0aW9uQ29k
ZU9mZnNldCwKLSAgICBVbmtub3duLAotICAgIENvbnN0cmFpbnRFcnJvciwKLSAgICBEYXRhRXJy
b3IsCi0gICAgVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yLAotICAgIFJlYWRPbmx5RXJyb3IsCi0g
ICAgVmVyc2lvbkVycm9yLAotCi0gICAgLy8gSW5kZXhlZCBEQiBleGlzdGluZyBleGNlcHRpb24g
Y29kZXMgd2l0aCBJREItc3BlY2lmaWMgZXJyb3IgbWVzc2FnZXM6Ci0gICAgSW52YWxpZFN0YXRl
RXJyb3IsCi0gICAgRGF0YUNsb25lRXJyb3IsCi0gICAgQWJvcnRFcnJvciwKLX07Ci0KIGNsYXNz
IElEQkVycm9yIHsKIHB1YmxpYzoKICAgICBJREJFcnJvcigpIHsgfQotICAgIElEQkVycm9yKElE
QkV4Y2VwdGlvbkNvZGUpOwotICAgIElEQkVycm9yKElEQkV4Y2VwdGlvbkNvZGUsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSk7CisgICAgSURCRXJyb3IoRXhjZXB0aW9uQ29kZSk7CisgICAgSURCRXJy
b3IoRXhjZXB0aW9uQ29kZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAogICAgIElEQkVycm9y
JiBvcGVyYXRvcj0oY29uc3QgSURCRXJyb3ImKTsKIAotICAgIGNvbnN0IFN0cmluZyYgbmFtZSgp
IGNvbnN0OwotICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSgpIGNvbnN0OworICAgIEV4Y2VwdGlv
bkNvZGUgY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZTsgfQorICAgIFN0cmluZyBuYW1lKCkg
Y29uc3Q7CisgICAgU3RyaW5nIG1lc3NhZ2UoKSBjb25zdDsKIAotICAgIGJvb2wgaXNOdWxsKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlID09IElEQkV4Y2VwdGlvbkNvZGU6Ok5vbmU7IH0KKyAgICBi
b29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZSA9PSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6Tm9FcnJvcjsgfQogCiAgICAgSURCRXJyb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKIHBy
aXZhdGU6Ci0gICAgSURCRXhjZXB0aW9uQ29kZSBtX2NvZGUgeyBJREJFeGNlcHRpb25Db2RlOjpO
b25lIH07CisgICAgRXhjZXB0aW9uQ29kZSBtX2NvZGUgeyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
Tm9FcnJvciB9OwogICAgIFN0cmluZyBtX21lc3NhZ2U7CiB9OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>