<?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>85154</bug_id>
          
          <creation_ts>2012-04-28 23:35:15 -0700</creation_ts>
          <short_desc>Add String::startsWith() and endsWith() for string literals</short_desc>
          <delta_ts>2012-04-30 14:32:01 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>612399</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-04-28 23:35:15 -0700</bug_when>
    <thetext>Add String::startsWith() and endsWith() for string literals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612404</commentid>
    <comment_count>1</comment_count>
      <attachid>139396</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-04-29 00:22:17 -0700</bug_when>
    <thetext>Created attachment 139396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612405</commentid>
    <comment_count>2</comment_count>
      <attachid>139396</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-04-29 00:30:14 -0700</bug_when>
    <thetext>Comment on attachment 139396
Patch

Attachment 139396 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12557841</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612406</commentid>
    <comment_count>3</comment_count>
      <attachid>139396</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-29 00:37:27 -0700</bug_when>
    <thetext>Comment on attachment 139396
Patch

Attachment 139396 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12557838</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612407</commentid>
    <comment_count>4</comment_count>
      <attachid>139396</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-29 00:38:39 -0700</bug_when>
    <thetext>Comment on attachment 139396
Patch

Attachment 139396 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12559830</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612408</commentid>
    <comment_count>5</comment_count>
      <attachid>139396</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-29 00:40:05 -0700</bug_when>
    <thetext>Comment on attachment 139396
Patch

Attachment 139396 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12550823</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612409</commentid>
    <comment_count>6</comment_count>
      <attachid>139397</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-04-29 00:47:51 -0700</bug_when>
    <thetext>Created attachment 139397
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612414</commentid>
    <comment_count>7</comment_count>
      <attachid>139398</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-04-29 01:51:12 -0700</bug_when>
    <thetext>Created attachment 139398
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612438</commentid>
    <comment_count>8</comment_count>
      <attachid>139398</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-04-29 10:43:19 -0700</bug_when>
    <thetext>Comment on attachment 139398
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=139398&amp;action=review

&gt; Source/WTF/ChangeLog:9
&gt; +        a string litteral, a new String was constructed implicitely, allocating

litteral -&gt; literal
implicitely -&gt; implicitly

&gt; Source/WTF/ChangeLog:10
&gt; +        a new StringImpl and copying the caracters for the operation.

caracters -&gt; characters

&gt; Source/WTF/ChangeLog:12
&gt; +        This patch adds a version of those methods for single character and

single character -&gt; single characters
litterals -&gt; literals

&gt; Source/WTF/wtf/text/AtomicString.h:87
&gt; +    bool startsWith(const char* s, unsigned matchLength, bool caseSensitive = true) const
&gt; +        { return m_string.startsWith(s, matchLength, caseSensitive); }

Is this overload used anywhere?

&gt; Source/WTF/wtf/text/AtomicString.h:97
&gt; +    bool endsWith(const char* s, unsigned matchLength, bool caseSensitive = true) const
&gt; +        { return m_string.endsWith(s, matchLength, caseSensitive); }

Same question.

&gt; Source/WTF/wtf/text/StringImpl.cpp:1118
&gt; +    if (length())
&gt; +        return this-&gt;operator[](0) == character;
&gt; +    return false;

I would write this differently:

    return m_length &amp;&amp; (*this)[0] == character;

&gt; Source/WTF/wtf/text/StringImpl.cpp:1143
&gt; +    if (length())
&gt; +        return this-&gt;operator[](length() - 1) == character;
&gt; +    return false;

I would write this differently:

    return m_length &amp;&amp; (*this)[m_length - 1] == character;

&gt; Source/WTF/wtf/text/StringImpl.cpp:1153
&gt; +    ASSERT(matchLength);
&gt; +    if (matchLength &gt; length())
&gt; +        return false;
&gt; +    unsigned startOffset = length() - matchLength;
&gt; +
&gt; +    return equalInner(this, startOffset, matchString, matchLength, caseSensitive);

The paragraphing here seems strange. I’d leave out the blank line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612448</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-04-29 12:36:22 -0700</bug_when>
    <thetext>Thanks for the review. I should use a spellchecker for my change logs...

&gt; &gt; Source/WTF/wtf/text/AtomicString.h:87
&gt; &gt; +    bool startsWith(const char* s, unsigned matchLength, bool caseSensitive = true) const
&gt; &gt; +        { return m_string.startsWith(s, matchLength, caseSensitive); }
&gt; 
&gt; Is this overload used anywhere?
&gt; 
&gt; &gt; Source/WTF/wtf/text/AtomicString.h:97
&gt; &gt; +    bool endsWith(const char* s, unsigned matchLength, bool caseSensitive = true) const
&gt; &gt; +        { return m_string.endsWith(s, matchLength, caseSensitive); }
&gt; 
&gt; Same question.

They are not, I just figured that could be useful in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612960</commentid>
    <comment_count>10</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-04-30 14:32:01 -0700</bug_when>
    <thetext>Committed r115669: &lt;http://trac.webkit.org/changeset/115669&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139396</attachid>
            <date>2012-04-29 00:22:17 -0700</date>
            <delta_ts>2012-04-29 00:47:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85154-20120429002216.patch</filename>
            <type>text/plain</type>
            <size>21460</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYwZjM0NWM2MjQyMDFjN2Q2ZTI4NzZj
NzNhNzI2NzVkODRkNzdmMDUuLjIwOWRlYzcwNWNiZjAwZGY3ZDNkZTU1MzVhODkxODgwMjRlNDgy
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTItMDQtMjggIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTdHJpbmc6OnN0YXJ0c1dpdGgoKSBh
bmQgZW5kc1dpdGgoKSBmb3Igc3RyaW5nIGxpdGVyYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTE1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gaW52b2tpbmcgU3RyaW5nSW1wbDo6c3RhcnRz
V2lkdGgoKSBvciBTdHJpbmdJbXBsOjplbmRzV2l0aCgpIHdpdGgKKyAgICAgICAgYSBzdHJpbmcg
bGl0dGVyYWwsIGEgbmV3IFN0cmluZyB3YXMgY29uc3RydWN0ZWQgaW1wbGljaXRlbHksIGFsbG9j
YXRpbmcKKyAgICAgICAgYSBuZXcgU3RyaW5nSW1wbCBhbmQgY29weWluZyB0aGUgY2FyYWN0ZXJz
IGZvciB0aGUgb3BlcmF0aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIHZlcnNpb24g
b2YgdGhvc2UgbWV0aG9kcyBmb3Igc2luZ2xlIGNoYXJhY3RlciBhbmQKKyAgICAgICAgc3RyaW5n
IGxpdHRlcmFscy4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gYXZvaWQgYWxsb2NhdGluZyBt
ZW1vcnkgYW5kIHVzZSB0aGUgY2hhcmFjdGVycyBpbiBwbGFjZSwKKyAgICAgICAgYW5kIGl0IHBl
cm1pdHMgc29tZSBleHRyYSBzaG9ydGN1dHMgaW4gdGhlIGltcGxlbWVudGF0aW9uLgorCisgICAg
ICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmlu
Zzo6c3RhcnRzV2l0aCk6CisgICAgICAgIChBdG9taWNTdHJpbmcpOgorICAgICAgICAoV1RGOjpB
dG9taWNTdHJpbmc6OmVuZHNXaXRoKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmNw
cDoKKyAgICAgICAgKFdURjo6ZXF1YWxJbm5lcik6CisgICAgICAgIChXVEYpOgorICAgICAgICAo
V1RGOjpTdHJpbmdJbXBsOjpzdGFydHNXaXRoKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
ZW5kc1dpdGgpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKFdU
Rjo6U3RyaW5nSW1wbDo6c3RhcnRzV2l0aCk6CisgICAgICAgIChTdHJpbmdJbXBsKToKKyAgICAg
ICAgKFdURjo6U3RyaW5nSW1wbDo6ZW5kc1dpdGgpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0
cmluZy5oOgorICAgICAgICAoV1RGOjpTdHJpbmc6OnN0YXJ0c1dpdGgpOgorICAgICAgICAoU3Ry
aW5nKToKKyAgICAgICAgKFdURjo6U3RyaW5nOjplbmRzV2l0aCk6CisKIDIwMTItMDQtMjYgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQ
XSBBZGQgYSB3YXkgdG8gcmVnaXN0ZXIgY3VzdG9tIHVyaSBzY2hlbWVzIGluIFdlYktpdDIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAxY2YwMzFjOWVkM2Q1MjM1YjdiMDU4MzY1OTQ1MTg4Zjc2ODhmNjU0Li5lYzAy
ZTJmMmY0NTI3N2ZjZjg0ZjNiNjRhZTQyYjgwYmU0NTFjMTI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzUgQEAKKzIwMTItMDQtMjggIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIEFkZCBTdHJpbmc6OnN0YXJ0c1dpdGgoKSBhbmQgZW5kc1dpdGgoKSBm
b3Igc3RyaW5nIGxpdGVyYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04NTE1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVwZGF0ZSBXZWJDb3JlIHRvIHVzZSB0aGUgc2ltcGxlciBzdGFydHNXaXRoKCkg
YW5kIGVuZHNXaXRoKCkgdGFraW5nCisgICAgICAgIGEgVUNoYXIuCisKKyAgICAgICAgKiBjc3Mv
V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlS2V5ZnJh
bWU6OnBhcnNlS2V5U3RyaW5nKToKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0
dHJpYnV0ZVVSTHMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6U2V0UHJvcGVydHlUZXh0QWN0
aW9uOjpyZWRvKToKKyAgICAgICAgKiBsb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6c3Vic3RpdHV0ZU1JTUVUeXBlRnJv
bVBsdWdpbkRhdGFiYXNlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJz
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VNYW5pZmVzdCk6CisgICAgICAgICogcGxh
dGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
b2tpZU1hbmFnZXI6OnNob3VsZFJlamVjdEZvclNlY3VyaXR5UmVhc29uKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRhdGFiYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpmaW5kUGx1Z2luKToKKyAg
ICAgICAgKiBzdmcvU1ZHU3RvcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3Rv
cEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NWR1NN
SUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpwYXJzZU9m
ZnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpwYXJzZUNvbmRp
dGlvbik6CisKIDIwMTItMDQtMjggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBBbmQgYWdhaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCBiMzgxMjky
YjIzNTBkNDU0YmQ2YmYwNmEyNjdjZmUxNTI4YjgxMTEzLi42MzY3OTRlMzQ1N2NmMzgwZTAzM2Fk
ZDZkYWJjMDZmZWJmYTQ5NzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMi0wNC0yOCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgQWRkIFN0cmluZzo6c3RhcnRzV2l0aCgpIGFuZCBlbmRzV2l0aCgp
IGZvciBzdHJpbmcgbGl0ZXJhbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg1MTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQuY3BwOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpET01TdXBwb3J0OjplbGVtZW50UGF0dGVybk1hdGNoZXMpOgorCiAy
MDEyLTA0LTI3ICBKYWNreSBKaWFuZyAgPHpoYWppYW5nQHJpbS5jb20+CiAKICAgICAgICAgW0Js
YWNrQmVycnldIERvdWJsZSB0YXAgem9vbWluZyBkb2VzIG5vdGhpbmcgb24gdGFibGUgZWxlbWVu
dCBvbiBidXN0ZWR0ZWVzLmNvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDA2OTdmMTc1ODQ0ODdjZTc5ZmRiM2M0
YjBiMDhiNmYyYmIzZWE1NzguLmFiYWQzNWI2YzhhMDVmZWY5YWVmNzI1MGYyMjE5NjI4YmEzYWQw
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNC0yOCAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFN0cmluZzo6c3RhcnRz
V2l0aCgpIGFuZCBlbmRzV2l0aCgpIGZvciBzdHJpbmcgbGl0ZXJhbHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1MTU0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIFdlYktpdDIgdG8gdXNlIFN0
cmluZzo6ZW5kc1dpdGgoVUNoYXIpLgorCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luSW5mb1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cGF0aEV4dGVuc2lvbik6CisKIDIw
MTItMDQtMjggIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZC4gQWRkZWQgbmV3IGV4cG9ydGVkIHN5bWJvbHMgYWZ0ZXIgcjExNTU1My4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmggYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCmluZGV4IGU3MzIzZjk0YTE1NDFiOWU5M2FmMGI4
YjRkNjcxNjQ1MWY1ZjJkYWEuLjUwMTBhMTU0MTUzMTQ1YWNhY2IwYTlkN2NkNDdiNmY5NGY5YTAw
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaApAQCAtODEsOCArODEsMjMgQEAgcHVi
bGljOgogICAgIAogICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmcmIHMsIGJvb2wgY2Fz
ZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0CiAgICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0
c1dpdGgocywgY2FzZVNlbnNpdGl2ZSk7IH0KKyAgICBib29sIHN0YXJ0c1dpdGgoVUNoYXIgY2hh
cmFjdGVyKSBjb25zdAorICAgICAgICB7IHJldHVybiBtX3N0cmluZy5zdGFydHNXaXRoKGNoYXJh
Y3Rlcik7IH0KKyAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciogcywgdW5zaWduZWQgbGVu
Z3RoLCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0CisgICAgICAgIHsgcmV0dXJuIG1fc3RyaW5n
LnN0YXJ0c1dpdGgocywgbGVuZ3RoLCBjYXNlU2Vuc2l0aXZlKTsgfQorICAgIHRlbXBsYXRlPHVu
c2lnbmVkIGxlbmd0aD4KKyAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClb
bGVuZ3RoXSwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QKKyAgICAgICAgeyByZXR1
cm4gbV9zdHJpbmcuc3RhcnRzV2l0aDxsZW5ndGg+KHByZWZpeCwgY2FzZVNlbnNpdGl2ZSk7IH0K
KwogICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzLCBib29sIGNhc2VTZW5zaXRpdmUg
PSB0cnVlKSBjb25zdAogICAgICAgICB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChzLCBjYXNl
U2Vuc2l0aXZlKTsgfQorICAgIGJvb2wgZW5kc1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAor
ICAgICAgICB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChjaGFyYWN0ZXIpOyB9CisgICAgYm9v
bCBlbmRzV2l0aChjb25zdCBjaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wgY2FzZVNlbnNp
dGl2ZSkgY29uc3QKKyAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuZW5kc1dpdGgocywgbGVuZ3Ro
LCBjYXNlU2Vuc2l0aXZlKTsgfQorICAgIHRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0aD4KKyAgICBi
b29sIGVuZHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW2xlbmd0aF0sIGJvb2wgY2FzZVNlbnNp
dGl2ZSA9IHRydWUpIGNvbnN0CisgICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoPGxl
bmd0aD4ocHJlZml4LCBjYXNlU2Vuc2l0aXZlKTsgfQogICAgIAogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBBdG9taWNTdHJpbmcgbG93ZXIoKSBjb25zdDsKICAgICBBdG9taWNTdHJpbmcgdXBwZXIo
KSBjb25zdCB7IHJldHVybiBBdG9taWNTdHJpbmcoaW1wbCgpLT51cHBlcigpKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggOTEwNjA4OGZiMWMzYzJiYzBmODRkNjc4N2M5NGQ3
Y2FmYWQ0ODkxMy4uYWIwMDdjNmNmNmU4NTg3ZTAyNWQ1ZWVkMjRiMzVmMmRjZGU5ZTgwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC0xMDk1LDYgKzEwOTUsMzcgQEAgc2l6ZV90
IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqIG1hdGNoU3Ry
aW5nLCB1bnNpZ25lZCBpbmQKICAgICByZXR1cm4gZGVsdGE7CiB9CiAKK0FMV0FZU19JTkxJTkUg
c3RhdGljIGJvb2wgZXF1YWxJbm5lcihjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmdJbXBsLCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgY29uc3QgY2hhciogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIG1hdGNo
TGVuZ3RoLCBib29sIGNhc2VTZW5zaXRpdmUpCit7CisgICAgQVNTRVJUKHN0cmluZ0ltcGwpOwor
ICAgIEFTU0VSVChtYXRjaExlbmd0aCA8PSBzdHJpbmdJbXBsLT5sZW5ndGgoKSk7CisgICAgQVNT
RVJUKHN0YXJ0T2Zmc2V0ICsgbWF0Y2hMZW5ndGggPD0gc3RyaW5nSW1wbC0+bGVuZ3RoKCkpOwor
CisgICAgaWYgKGNhc2VTZW5zaXRpdmUpIHsKKyAgICAgICAgaWYgKHN0cmluZ0ltcGwtPmlzOEJp
dCgpKQorICAgICAgICAgICAgcmV0dXJuIGVxdWFsKHN0cmluZ0ltcGwtPmNoYXJhY3RlcnM4KCkg
KyBzdGFydE9mZnNldCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG1hdGNoU3RyaW5n
KSwgbWF0Y2hMZW5ndGgpOworICAgICAgICByZXR1cm4gZXF1YWwoc3RyaW5nSW1wbC0+Y2hhcmFj
dGVyczE2KCkgKyBzdGFydE9mZnNldCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG1h
dGNoU3RyaW5nKSwgbWF0Y2hMZW5ndGgpOworICAgIH0KKyAgICBpZiAoc3RyaW5nSW1wbC0+aXM4
Qml0KCkpCisgICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShzdHJpbmdJbXBsLT5jaGFy
YWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPiht
YXRjaFN0cmluZyksIG1hdGNoTGVuZ3RoKTsKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2Uo
c3RyaW5nSW1wbC0+Y2hhcmFjdGVyczE2KCkgKyBzdGFydE9mZnNldCwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KG1hdGNoU3RyaW5nKSwgbWF0Y2hMZW5ndGgpOworfQorCitib29sIFN0
cmluZ0ltcGw6OnN0YXJ0c1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAoreworICAgIGlmIChs
ZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIHRoaXMtPm9wZXJhdG9yW10oMCkgPT0gY2hhcmFjdGVy
OworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoKGNv
bnN0IGNoYXIqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBtYXRjaExlbmd0aCwgYm9vbCBjYXNlU2Vu
c2l0aXZlKSBjb25zdAoreworICAgIEFTU0VSVChtYXRjaExlbmd0aCk7CisgICAgaWYgKG1hdGNo
TGVuZ3RoID4gbGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZXF1
YWxJbm5lcih0aGlzLCAwLCBtYXRjaFN0cmluZywgbWF0Y2hMZW5ndGgsIGNhc2VTZW5zaXRpdmUp
OworfQorCiBib29sIFN0cmluZ0ltcGw6OmVuZHNXaXRoKFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5n
LCBib29sIGNhc2VTZW5zaXRpdmUpCiB7CiAgICAgQVNTRVJUKG1hdGNoU3RyaW5nKTsKQEAgLTEx
MDUsNiArMTEzNiwyMyBAQCBib29sIFN0cmluZ0ltcGw6OmVuZHNXaXRoKFN0cmluZ0ltcGwqIG1h
dGNoU3RyaW5nLCBib29sIGNhc2VTZW5zaXRpdmUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiti
b29sIFN0cmluZ0ltcGw6OmVuZHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKK3sKKyAgICBp
ZiAobGVuZ3RoKCkpCisgICAgICAgIHJldHVybiB0aGlzLT5vcGVyYXRvcltdKGxlbmd0aCgpIC0g
MSkgPT0gY2hhcmFjdGVyOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBTdHJpbmdJbXBs
OjplbmRzV2l0aChjb25zdCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5ndGgs
IGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQobWF0Y2hMZW5ndGgpOwor
ICAgIGlmIChtYXRjaExlbmd0aCA+IGxlbmd0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBsZW5ndGgoKSAtIG1hdGNoTGVuZ3RoOworCisgICAg
cmV0dXJuIGVxdWFsSW5uZXIodGhpcywgc3RhcnRPZmZzZXQsIG1hdGNoU3RyaW5nLCBtYXRjaExl
bmd0aCwgY2FzZVNlbnNpdGl2ZSk7Cit9CisKIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gU3RyaW5n
SW1wbDo6cmVwbGFjZShVQ2hhciBvbGRDLCBVQ2hhciBuZXdDKQogewogICAgIGlmIChvbGRDID09
IG5ld0MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IGNlMGU0Njk4ZjA2YzE5NDRkODQ1
ZGE5NjFlNmE1ZWI1YjU3MWI5NmIuLjJhNDc2MGZjOWEyMDBkNjljYjk5YzNlODcxNWEwY2EwZmJm
ZDM1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC00OTgsNyArNDk4LDE2IEBAIHB1
YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHJldmVyc2VGaW5kSWdub3JpbmdD
YXNlKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKTsKIAogICAgIGJvb2wg
c3RhcnRzV2l0aChTdHJpbmdJbXBsKiBzdHIsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIHsg
cmV0dXJuIChjYXNlU2Vuc2l0aXZlID8gcmV2ZXJzZUZpbmQoc3RyLCAwKSA6IHJldmVyc2VGaW5k
SWdub3JpbmdDYXNlKHN0ciwgMCkpID09IDA7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBzdGFydHNXaXRoKFVDaGFyKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBz
dGFydHNXaXRoKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wgY2FzZVNlbnNpdGl2
ZSkgY29uc3Q7CisgICAgdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPgorICAgIGJvb2wgc3RhcnRz
V2l0aChjb25zdCBjaGFyICgmcHJlZml4KVtsZW5ndGhdLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0
cnVlKSBjb25zdCB7IHJldHVybiBzdGFydHNXaXRoKHByZWZpeCwgbGVuZ3RoIC0gMSwgY2FzZVNl
bnNpdGl2ZSk7IH07CisKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChTdHJp
bmdJbXBsKiwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgZW5kc1dpdGgoVUNoYXIpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBi
b29sIGVuZHNXaXRoKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wgY2FzZVNlbnNp
dGl2ZSkgY29uc3Q7CisgICAgdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPgorICAgIGJvb2wgZW5k
c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbGVuZ3RoXSwgYm9vbCBjYXNlU2Vuc2l0aXZlID0g
dHJ1ZSkgY29uc3QgeyByZXR1cm4gc3RhcnRzV2l0aChwcmVmaXgsIGxlbmd0aCAtIDEsIGNhc2VT
ZW5zaXRpdmUpOyB9CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiByZXBsYWNlKFVDaGFyLCBVQ2hhcik7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgU3RyaW5nSW1wbCopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmgKaW5kZXggMmNhMjgzMDI0OTA1YjQwZjY5MGU5M2Q2ZGY2MmM5MDI4NjhjYzVk
ZS4uNDQ1ZDI0Y2M2Y2M5MDgzOGE2Yjk4ZWQ4NjYzYjljZWI0OGYzYjU2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1dURlN0cmluZy5oCkBAIC0yNDgsOCArMjQ4LDIzIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc3Rh
cnRzV2l0aChjb25zdCBTdHJpbmcmIHMsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0
CiAgICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aChzLmltcGwoKSwg
Y2FzZVNlbnNpdGl2ZSkgOiBzLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgc3RhcnRzV2l0aChVQ2hh
ciBjaGFyYWN0ZXIpIGNvbnN0CisgICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3Rh
cnRzV2l0aChjaGFyYWN0ZXIpIDogZmFsc2U7IH0KKyAgICBib29sIHN0YXJ0c1dpdGgoY29uc3Qg
Y2hhciogcywgdW5zaWduZWQgbGVuZ3RoLCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0CisgICAg
ICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aChzLCBsZW5ndGgsIGNhc2VT
ZW5zaXRpdmUpIDogIWxlbmd0aDsgfQorICAgIHRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0aD4KKyAg
ICBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbGVuZ3RoXSwgYm9vbCBjYXNl
U2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QKKyAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBs
LT5zdGFydHNXaXRoPGxlbmd0aD4ocHJlZml4LCBjYXNlU2Vuc2l0aXZlKSA6ICFsZW5ndGg7IH0K
KwogICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzLCBib29sIGNhc2VTZW5zaXRpdmUg
PSB0cnVlKSBjb25zdAogICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmVuZHNXaXRo
KHMuaW1wbCgpLCBjYXNlU2Vuc2l0aXZlKSA6IHMuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBlbmRz
V2l0aChVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0CisgICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1f
aW1wbC0+ZW5kc1dpdGgoY2hhcmFjdGVyKSA6IGZhbHNlOyB9CisgICAgYm9vbCBlbmRzV2l0aChj
b25zdCBjaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29uc3QK
KyAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aChzLCBsZW5ndGgsIGNh
c2VTZW5zaXRpdmUpIDogIWxlbmd0aDsgfQorICAgIHRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0aD4K
KyAgICBib29sIGVuZHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW2xlbmd0aF0sIGJvb2wgY2Fz
ZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0CisgICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1w
bC0+ZW5kc1dpdGg8bGVuZ3RoPihwcmVmaXgsIGNhc2VTZW5zaXRpdmUpIDogIWxlbmd0aDsgfQog
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwogICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZChMQ2hhcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9XZWJLaXRDU1NLZXlmcmFtZVJ1bGUuY3BwCmluZGV4IDliMzhhMzc4YjgxNjE0ZTViODk5
Yzk0MWVlZmJhZDA0NDYwZGI2MzIuLjc2OTIwODZkMDdkOWNiZTRjZjdkOWQxNmM5OWUwNjBjMDA5
NTcyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFtZVJ1
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFtZVJ1bGUuY3Bw
CkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgU3R5bGVLZXlmcmFtZTo6cGFyc2VLZXlTdHJpbmcoY29u
c3QgU3RyaW5nJiBzLCBWZWN0b3I8ZmxvYXQ+JiBrZXlzKQogICAgICAgICAgICAga2V5ID0gMDsK
ICAgICAgICAgZWxzZSBpZiAoY3VyID09ICJ0byIpCiAgICAgICAgICAgICBrZXkgPSAxOwotICAg
ICAgICBlbHNlIGlmIChjdXIuZW5kc1dpdGgoIiUiKSkgeworICAgICAgICBlbHNlIGlmIChjdXIu
ZW5kc1dpdGgoJyUnKSkgewogICAgICAgICAgICAgZmxvYXQgayA9IGN1ci5zdWJzdHJpbmcoMCwg
Y3VyLmxlbmd0aCgpIC0gMSkudG9GbG9hdCgpOwogICAgICAgICAgICAgaWYgKGsgPj0gMCAmJiBr
IDw9IDEwMCkKICAgICAgICAgICAgICAgICBrZXkgPSBrLzEwMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggYThkMzRiOWFkNjkzOTFjZmQzNGVjOGRiZWJm
NDFiMThkMzcyODQxZi4uZTA5MzQ5Yzc1MWQ1MDQwNmU1ZmMwZTM0MmEwMzhjOTIwNjc3Zjk5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKQEAgLTQ3Niw3ICs0
NzYsNyBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVS
THMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbgogICAgIC8vIEZJWE1FOiBQYXNzaW5nIGEg
c3RyaW5nIHRoYXQgc3RhcnRzIHdpdGggIiMiIHRvIHRoZSBjb21wbGV0ZVVSTCBmdW5jdGlvbiBk
b2VzCiAgICAgLy8gbm90IHNlZW0gbGlrZSBpdCB3b3VsZCB3b3JrLiBUaGUgaW1hZ2UgZWxlbWVu
dCBoYXMgc2ltaWxhciBidXQgbm90IGlkZW50aWNhbCBjb2RlLgogICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgdXNlTWFwID0gZ2V0QXR0cmlidXRlKHVzZW1hcEF0dHIpOwotICAgIGlmICh1c2VNYXAu
c3RhcnRzV2l0aCgiIyIpKQorICAgIGlmICh1c2VNYXAuc3RhcnRzV2l0aCgnIycpKQogICAgICAg
ICBhZGRTdWJyZXNvdXJjZVVSTCh1cmxzLCBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1c2VNYXAp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAKaW5kZXggOWU5YjU2ZTQxODNhMTc3MWQzYzYyNDNjMGU5MjFiMzMzYjYwOWI4MS4uMWUwODUy
YjY0ZDQ5Y2NhODUzNjUwZDk2M2FmYmQxMDU5YTQwZTc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgcHVi
bGljOgogICAgICAgICBib29sIHJlc3VsdCA9IG1fc3R5bGVTaGVldC0+c2V0UHJvcGVydHlUZXh0
KG1fY3NzSWQsIG1fcHJvcGVydHlJbmRleCwgbV90ZXh0LCBtX292ZXJ3cml0ZSwgJm9sZFRleHQs
IGVjKTsKICAgICAgICAgbV9vbGRUZXh0ID0gb2xkVGV4dC5zdHJpcFdoaXRlU3BhY2UoKTsKICAg
ICAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIG9uY2UgdGhlIG1vZGVsIGhhbmRsZXMgdGhpcyBj
YXNlLgotICAgICAgICBpZiAoIW1fb2xkVGV4dC5lbmRzV2l0aCgiOyIpKQorICAgICAgICBpZiAo
IW1fb2xkVGV4dC5lbmRzV2l0aCgnOycpKQogICAgICAgICAgICAgbV9vbGRUZXh0ICs9ICI7IjsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9N
YWluUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDNhNTc2MTUyN2YyZGI1N2M1YmIwMGQ2MTExZTBi
MWNlZmMyMzg5NTAuLjQ0NDYzODQ3ZjRkZjE4MzFjODg5NGUxNzNiYmU0NmI4ZmFjZGM1Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zNDIs
NyArMzQyLDcgQEAgdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OnN1YnN0aXR1dGVNSU1FVHlwZUZy
b21QbHVnaW5EYXRhYmFzZShjb25zdCBSZXNvdXJjZVJlc3AKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgU3RyaW5nIGZpbGVuYW1lID0gci51cmwoKS5sYXN0UGF0aENvbXBvbmVudCgpOwotICAgIGlm
IChmaWxlbmFtZS5lbmRzV2l0aCgiLyIpKQorICAgIGlmIChmaWxlbmFtZS5lbmRzV2l0aCgnLycp
KQogICAgICAgICByZXR1cm47CiAKICAgICBzaXplX3QgZXh0ZW5zaW9uUG9zID0gZmlsZW5hbWUu
cmV2ZXJzZUZpbmQoJy4nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9NYW5pZmVzdFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
TWFuaWZlc3RQYXJzZXIuY3BwCmluZGV4IDhhNTg5ZWJiZTRkNTI5MmUwNDY3ZTNmNjNhYzRhZTM5
ZGJkNzFmYTIuLmIwZjZiYzgzMTAwMjFhMjIzNTY1MjUwODYxNjJlYTliMmM3MjhlZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcApA
QCAtOTYsNyArOTYsNyBAQCBib29sIHBhcnNlTWFuaWZlc3QoY29uc3QgS1VSTCYgbWFuaWZlc3RV
UkwsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIE1hbmlmZQogICAgICAgICAgICAgbW9k
ZSA9IEZhbGxiYWNrOwogICAgICAgICBlbHNlIGlmIChsaW5lID09ICJORVRXT1JLOiIpCiAgICAg
ICAgICAgICBtb2RlID0gT25saW5lV2hpdGVsaXN0OwotICAgICAgICBlbHNlIGlmIChsaW5lLmVu
ZHNXaXRoKCI6IikpCisgICAgICAgIGVsc2UgaWYgKGxpbmUuZW5kc1dpdGgoJzonKSkKICAgICAg
ICAgICAgIG1vZGUgPSBVbmtub3duOwogICAgICAgICBlbHNlIGlmIChtb2RlID09IFVua25vd24p
CiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwCmluZGV4IGJmNjNiNjE2OTViY2ZmYTk4NjZm
N2Y0MzFlZjU4NzI4MTYzNTk1ZTMuLmRkNzJlNjc5NDNkNzlhOGE4YWU3ODlkMmVjYjUxMTA5ZjA4
MWEyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29v
a2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9D
b29raWVNYW5hZ2VyLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIGJvb2wgQ29va2llTWFuYWdlcjo6
c2hvdWxkUmVqZWN0Rm9yU2VjdXJpdHlSZWFzb24oY29uc3QgUGFyc2VkQ29va2llKiBjb29raWUs
IGNvCiAgICAgLy8gYS5iLmNvbSBtYXRjaGVzIGIuY29tLCBhLmIuY29tIG1hdGNoZXMgLkIuY29t
IGFuZCBhLmIuY29tIG1hdGNoZXMgLkEuYi5Db20KICAgICAvLyBhbmQgc28gb24uCiAgICAgU3Ry
aW5nIGhvc3REb21haW5OYW1lID0gdXJsLmhvc3QoKTsKLSAgICBob3N0RG9tYWluTmFtZSA9IGhv
c3REb21haW5OYW1lLnN0YXJ0c1dpdGgoIi4iKSA/IGhvc3REb21haW5OYW1lIDogIi4iICsgaG9z
dERvbWFpbk5hbWU7CisgICAgaG9zdERvbWFpbk5hbWUgPSBob3N0RG9tYWluTmFtZS5zdGFydHNX
aXRoKCcuJykgPyBob3N0RG9tYWluTmFtZSA6ICIuIiArIGhvc3REb21haW5OYW1lOwogICAgIGlm
ICghaG9zdERvbWFpbk5hbWUuZW5kc1dpdGgoY29va2llLT5kb21haW4oKSwgZmFsc2UpKSB7CiAg
ICAgICAgIExPR19FUlJPUigiQ29va2llICVzIGlzIHJlamVjdGVkIGJlY2F1c2UgaXRzIGRvbWFp
biBkb2VzIG5vdCBkb21haW4gbWF0Y2ggdGhlIFVSTCAlc1xuIiwgY29va2llLT50b1N0cmluZygp
LnV0ZjgoKS5kYXRhKCksIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxl
U3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcAppbmRleCAyYmY2MzY1NGU1MzYzMjhlNTJlNTAzNGQ5OGM1ZTRiMGY2OTc5ZTU1
Li5mZGE4MTI2NWI1Y2QzZmFmMWUxOTNiYzMwMTBiM2I4MTEwYjc1MTFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTE4Mywx
MCArMTgzLDkgQEAgYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBh
dGgsIHRpbWVfdCYgcmVzdWx0KQogCiBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiB7Ci0gICAgaWYgKHBh
dGguZW5kc1dpdGgoIi8iKSkKKyAgICBpZiAocGF0aC5lbmRzV2l0aCgnLycpKQogICAgICAgICBy
ZXR1cm4gcGF0aCArIGNvbXBvbmVudDsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBwYXRoICsg
Ii8iICsgY29tcG9uZW50OworICAgIHJldHVybiBwYXRoICsgIi8iICsgY29tcG9uZW50OwogfQog
CiBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IDkzMDA3ODIxN2ZmODUwMmY2ZGMw
YjExMDZiNzdkODU0YjNkNTlhZDQuLjk1MDhjNWI4Yzk1ZmU4NDFjMWEwOGYyMzFkMGIwZTJiMGMz
NzExYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCkBAIC0y
ODMsNyArMjgzLDcgQEAgUGx1Z2luUGFja2FnZSogUGx1Z2luRGF0YWJhc2U6OmZpbmRQbHVnaW4o
Y29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIG1pbWVUeXBlKQogICAgICAgICByZXR1cm4gcGx1Z2lu
Rm9yTUlNRVR5cGUobWltZVR5cGUpOwogICAgIAogICAgIFN0cmluZyBmaWxlbmFtZSA9IHVybC5s
YXN0UGF0aENvbXBvbmVudCgpOwotICAgIGlmIChmaWxlbmFtZS5lbmRzV2l0aCgiLyIpKQorICAg
IGlmIChmaWxlbmFtZS5lbmRzV2l0aCgnLycpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKICAg
ICBpbnQgZXh0ZW5zaW9uUG9zID0gZmlsZW5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCmluZGV4IDdiOTczYTNjMDM1MjczYTBmZTdlYWE1NzA4
NTcxNjNlNTlmMGU5ZWYuLjQ4MThiODUxNjU3ZWZhMjI1Y2NjY2EwY2Y5MjFkZjZmNjYyZDY2YTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcApAQCAtNzEsNyArNzEsNyBAQCB2
b2lkIFNWR1N0b3BFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAKICAg
ICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpvZmZzZXRBdHRyKSB7CiAgICAgICAgIGNv
bnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwotICAgICAgICBpZiAodmFsdWUuZW5k
c1dpdGgoIiUiKSkKKyAgICAgICAgaWYgKHZhbHVlLmVuZHNXaXRoKCclJykpCiAgICAgICAgICAg
ICBzZXRPZmZzZXRCYXNlVmFsdWUodmFsdWUubGVmdCh2YWx1ZS5sZW5ndGgoKSAtIDEpLnRvRmxv
YXQoKSAvIDEwMC4wZik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNldE9mZnNldEJhc2VW
YWx1ZSh2YWx1ZS50b0Zsb2F0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2Fu
aW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9u
L1NWR1NNSUxFbGVtZW50LmNwcAppbmRleCA3OGM3OTM3NDIxNThjYjRlYzI2Zjk4MjA1M2RjMzAz
NTViZGU2NGQxLi5kM2U5NjQyNDAwNGIyNjkyOTI3ZWZiZmIwYjM0OWFmNTVlNGJkZDVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcApAQCAt
MjQ4LDEzICsyNDgsMTMgQEAgU01JTFRpbWUgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlT2Zmc2V0VmFs
dWUoY29uc3QgU3RyaW5nJiBkYXRhKQogICAgIGJvb2wgb2s7CiAgICAgZG91YmxlIHJlc3VsdCA9
IDA7CiAgICAgU3RyaW5nIHBhcnNlID0gZGF0YS5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICBpZiAo
cGFyc2UuZW5kc1dpdGgoImgiKSkKKyAgICBpZiAocGFyc2UuZW5kc1dpdGgoJ2gnKSkKICAgICAg
ICAgcmVzdWx0ID0gcGFyc2UubGVmdChwYXJzZS5sZW5ndGgoKSAtIDEpLnRvRG91YmxlKCZvaykg
KiA2MCAqIDYwOwogICAgIGVsc2UgaWYgKHBhcnNlLmVuZHNXaXRoKCJtaW4iKSkKICAgICAgICAg
cmVzdWx0ID0gcGFyc2UubGVmdChwYXJzZS5sZW5ndGgoKSAtIDMpLnRvRG91YmxlKCZvaykgKiA2
MDsKICAgICBlbHNlIGlmIChwYXJzZS5lbmRzV2l0aCgibXMiKSkKICAgICAgICAgcmVzdWx0ID0g
cGFyc2UubGVmdChwYXJzZS5sZW5ndGgoKSAtIDIpLnRvRG91YmxlKCZvaykgLyAxMDAwOwotICAg
IGVsc2UgaWYgKHBhcnNlLmVuZHNXaXRoKCJzIikpCisgICAgZWxzZSBpZiAocGFyc2UuZW5kc1dp
dGgoJ3MnKSkKICAgICAgICAgcmVzdWx0ID0gcGFyc2UubGVmdChwYXJzZS5sZW5ndGgoKSAtIDEp
LnRvRG91YmxlKCZvayk7CiAgICAgZWxzZQogICAgICAgICByZXN1bHQgPSBwYXJzZS50b0RvdWJs
ZSgmb2spOwpAQCAtMzQ1LDcgKzM0NSw3IEBAIGJvb2wgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ29u
ZGl0aW9uKGNvbnN0IFN0cmluZyYgdmFsdWUsIEJlZ2luT3JFbmQgYmVnaW5PckVuZCkKIAogICAg
IENvbmRpdGlvbjo6VHlwZSB0eXBlOwogICAgIGludCByZXBlYXRzID0gLTE7Ci0gICAgaWYgKG5h
bWVTdHJpbmcuc3RhcnRzV2l0aCgicmVwZWF0KCIpICYmIG5hbWVTdHJpbmcuZW5kc1dpdGgoIiki
KSkgeworICAgIGlmIChuYW1lU3RyaW5nLnN0YXJ0c1dpdGgoInJlcGVhdCgiKSAmJiBuYW1lU3Ry
aW5nLmVuZHNXaXRoKCcpJykpIHsKICAgICAgICAgLy8gRklYTUU6IEZvciByZXBlYXQgZXZlbnRz
IHdlIGp1c3QgbmVlZCB0byBhZGQgdGhlIGRhdGEgY2FycnlpbmcgVGltZUV2ZW50IGNsYXNzIGFu
ZCAKICAgICAgICAgLy8gZmlyZSB0aGUgZXZlbnRzIGF0IGFwcHJvcGlhdGUgdGltZXMuCiAgICAg
ICAgIHJlcGVhdHMgPSBuYW1lU3RyaW5nLnN1YnN0cmluZyg3LCBuYW1lU3RyaW5nLmxlbmd0aCgp
IC0gOCkudG9VSW50U3RyaWN0KCZvayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQuY3BwCmluZGV4IDg5Yzk4ODg0Mzg3M2FmZTg0
ZTJjOTlmMjUyOWI0YTM2NzNhMjNjNTcuLjNiOTcyZDZjOWI1N2UwN2E2MTAzZTYzYmQ2ODMyYTVk
MDdkOWRhZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBw
b3J0L0RPTVN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRT
dXBwb3J0L0RPTVN1cHBvcnQuY3BwCkBAIC00MjQsNyArNDI0LDcgQEAgYm9vbCBlbGVtZW50UGF0
dGVybk1hdGNoZXMoY29uc3QgY2hhciogcGF0dGVybiwgY29uc3QgSFRNTElucHV0RWxlbWVudCog
aW5wdXRFbGUKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICAgICAgLy8g
SXMgdGhlIHJlZ2V4IHNwZWNpZnlpbmcgYSBjaGFyYWN0ZXIgY291bnQ/Ci0gICAgICAgICAgICBp
ZiAocGF0dGVybkF0dHJpYnV0ZVtwYXR0ZXJuU3RyaW5nLmxlbmd0aCgpXSAhPSAneycgfHwgIXBh
dHRlcm5BdHRyaWJ1dGUuZW5kc1dpdGgoIn0iKSkKKyAgICAgICAgICAgIGlmIChwYXR0ZXJuQXR0
cmlidXRlW3BhdHRlcm5TdHJpbmcubGVuZ3RoKCldICE9ICd7JyB8fCAhcGF0dGVybkF0dHJpYnV0
ZS5lbmRzV2l0aCgnfScpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAg
ICAgICAgLy8gTWFrZSBzdXJlIHRoZSBudW1iZXIgaW4gdGhlIHJlZ2V4IGlzIGFjdHVhbGx5IGEg
bnVtYmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luSW5mb1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bkluZm9TdG9yZS5jcHAKaW5kZXggZjM3MDk5ZjJjMmE0MmQyMmUyNzAyNWFmNjQxZTFiZDdkYTIz
ODIxMS4uY2VmMTRkY2YwZDVkZjMyNjRmNDBlZmE0OThlNDFiNGUxNGZiNDcyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3Bw
CkBAIC0xNjQsNyArMTY0LDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgcGF0aEV4dGVuc2lvbihj
b25zdCBLVVJMJiB1cmwpCiB7CiAgICAgU3RyaW5nIGV4dGVuc2lvbjsKICAgICBTdHJpbmcgZmls
ZW5hbWUgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKLSAgICBpZiAoIWZpbGVuYW1lLmVuZHNX
aXRoKCIvIikpIHsKKyAgICBpZiAoIWZpbGVuYW1lLmVuZHNXaXRoKCcvJykpIHsKICAgICAgICAg
aW50IGV4dGVuc2lvblBvcyA9IGZpbGVuYW1lLnJldmVyc2VGaW5kKCcuJyk7CiAgICAgICAgIGlm
IChleHRlbnNpb25Qb3MgIT0gLTEpCiAgICAgICAgICAgICBleHRlbnNpb24gPSBmaWxlbmFtZS5z
dWJzdHJpbmcoZXh0ZW5zaW9uUG9zICsgMSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139397</attachid>
            <date>2012-04-29 00:47:51 -0700</date>
            <delta_ts>2012-04-29 01:51:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85154-20120429004750.patch</filename>
            <type>text/plain</type>
            <size>21642</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYwZjM0NWM2MjQyMDFjN2Q2ZTI4NzZj
NzNhNzI2NzVkODRkNzdmMDUuLjI3N2E0YTIwMDVhNTQ5MDkxYzQ3NjI4ZTNmYzA3ZDg3MWVlOTY4
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTItMDQtMjkgIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTdHJpbmc6OnN0YXJ0c1dpdGgoKSBh
bmQgZW5kc1dpdGgoKSBmb3Igc3RyaW5nIGxpdGVyYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTE1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gaW52b2tpbmcgU3RyaW5nSW1wbDo6c3RhcnRz
V2lkdGgoKSBvciBTdHJpbmdJbXBsOjplbmRzV2l0aCgpIHdpdGgKKyAgICAgICAgYSBzdHJpbmcg
bGl0dGVyYWwsIGEgbmV3IFN0cmluZyB3YXMgY29uc3RydWN0ZWQgaW1wbGljaXRlbHksIGFsbG9j
YXRpbmcKKyAgICAgICAgYSBuZXcgU3RyaW5nSW1wbCBhbmQgY29weWluZyB0aGUgY2FyYWN0ZXJz
IGZvciB0aGUgb3BlcmF0aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIHZlcnNpb24g
b2YgdGhvc2UgbWV0aG9kcyBmb3Igc2luZ2xlIGNoYXJhY3RlciBhbmQKKyAgICAgICAgc3RyaW5n
IGxpdHRlcmFscy4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gYXZvaWQgYWxsb2NhdGluZyBt
ZW1vcnkgYW5kIHVzZSB0aGUgY2hhcmFjdGVycyBpbiBwbGFjZSwKKyAgICAgICAgYW5kIGl0IHBl
cm1pdHMgc29tZSBleHRyYSBzaG9ydGN1dHMgaW4gdGhlIGltcGxlbWVudGF0aW9uLgorCisgICAg
ICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmlu
Zzo6c3RhcnRzV2l0aCk6CisgICAgICAgIChBdG9taWNTdHJpbmcpOgorICAgICAgICAoV1RGOjpB
dG9taWNTdHJpbmc6OmVuZHNXaXRoKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmNw
cDoKKyAgICAgICAgKFdURjo6ZXF1YWxJbm5lcik6CisgICAgICAgIChXVEYpOgorICAgICAgICAo
V1RGOjpTdHJpbmdJbXBsOjpzdGFydHNXaXRoKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
ZW5kc1dpdGgpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKFdU
Rjo6U3RyaW5nSW1wbDo6c3RhcnRzV2l0aCk6CisgICAgICAgIChTdHJpbmdJbXBsKToKKyAgICAg
ICAgKFdURjo6U3RyaW5nSW1wbDo6ZW5kc1dpdGgpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0
cmluZy5oOgorICAgICAgICAoV1RGOjpTdHJpbmc6OnN0YXJ0c1dpdGgpOgorICAgICAgICAoU3Ry
aW5nKToKKyAgICAgICAgKFdURjo6U3RyaW5nOjplbmRzV2l0aCk6CisKIDIwMTItMDQtMjYgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQ
XSBBZGQgYSB3YXkgdG8gcmVnaXN0ZXIgY3VzdG9tIHVyaSBzY2hlbWVzIGluIFdlYktpdDIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA5NzMwNThhYWE1ZDhiNGIzM2QyZDhlZTE4NzFiNjRjZGE0YTVlZWVlLi40NGUw
YzZmODc3NGE0OWU3NGZkZGE5ZTYzNmY1YWZjMGE4Njg3NmEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzUgQEAKKzIwMTItMDQtMjkgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIEFkZCBTdHJpbmc6OnN0YXJ0c1dpdGgoKSBhbmQgZW5kc1dpdGgoKSBm
b3Igc3RyaW5nIGxpdGVyYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04NTE1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVwZGF0ZSBXZWJDb3JlIHRvIHVzZSB0aGUgc2ltcGxlciBzdGFydHNXaXRoKCkg
YW5kIGVuZHNXaXRoKCkgdGFraW5nCisgICAgICAgIGEgVUNoYXIuCisKKyAgICAgICAgKiBjc3Mv
V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlS2V5ZnJh
bWU6OnBhcnNlS2V5U3RyaW5nKToKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0
dHJpYnV0ZVVSTHMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6U2V0UHJvcGVydHlUZXh0QWN0
aW9uOjpyZWRvKToKKyAgICAgICAgKiBsb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6c3Vic3RpdHV0ZU1JTUVUeXBlRnJv
bVBsdWdpbkRhdGFiYXNlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJz
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VNYW5pZmVzdCk6CisgICAgICAgICogcGxh
dGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
b2tpZU1hbmFnZXI6OnNob3VsZFJlamVjdEZvclNlY3VyaXR5UmVhc29uKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRhdGFiYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpmaW5kUGx1Z2luKToKKyAg
ICAgICAgKiBzdmcvU1ZHU3RvcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3Rv
cEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NWR1NN
SUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpwYXJzZU9m
ZnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpwYXJzZUNvbmRp
dGlvbik6CisKIDIwMTItMDQtMjggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBTbW9vdGggc2Nyb2xsaW5nIG5lZWRzIGEgbmV3IGtleQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9D
aGFuZ2VMb2cKaW5kZXggYjM4MTI5MmIyMzUwZDQ1NGJkNmJmMDZhMjY3Y2ZlMTUyOGI4MTExMy4u
MzIzYWY0MmEzMmJhMDQ4NzhkNDE3MWI1MjU2YjVlMjY0ODg2NjVhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDQtMjkgIEJlbmphbWluIFBv
dWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTdHJpbmc6OnN0YXJ0
c1dpdGgoKSBhbmQgZW5kc1dpdGgoKSBmb3Igc3RyaW5nIGxpdGVyYWxzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTE1NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9ET01TdXBw
b3J0LmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RE9NU3VwcG9ydDo6ZWxlbWVu
dFBhdHRlcm5NYXRjaGVzKToKKwogMjAxMi0wNC0yNyAgSmFja3kgSmlhbmcgIDx6aGFqaWFuZ0By
aW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBEb3VibGUgdGFwIHpvb21pbmcgZG9lcyBu
b3RoaW5nIG9uIHRhYmxlIGVsZW1lbnQgb24gYnVzdGVkdGVlcy5jb20KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAw
Njk3ZjE3NTg0NDg3Y2U3OWZkYjNjNGIwYjA4YjZmMmJiM2VhNTc4Li4xN2YyMmEwMzRkYzE5YzI5
MzFjMjJiYzcwOGU2YWJkN2I5YzcxMDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTItMDQtMjkgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAg
ICAgIEFkZCBTdHJpbmc6OnN0YXJ0c1dpdGgoKSBhbmQgZW5kc1dpdGgoKSBmb3Igc3RyaW5nIGxp
dGVyYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NTE1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVw
ZGF0ZSBXZWJLaXQyIHRvIHVzZSBTdHJpbmc6OmVuZHNXaXRoKFVDaGFyKS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OnBhdGhFeHRlbnNpb24pOgorCiAyMDEyLTA0LTI4ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEFkZGVkIG5ldyBleHBvcnRlZCBz
eW1ib2xzIGFmdGVyIHIxMTU1NTMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0
b21pY1N0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAppbmRleCBl
NzMyM2Y5NGExNTQxYjllOTNhZjBiOGI0ZDY3MTY0NTFmNWYyZGFhLi40ODBiYjczMTg0NDJmNjA0
NTQ5ZjJkN2YwYjE3YzZiNjdhODgyOGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0F0b21pY1N0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgK
QEAgLTgxLDggKzgxLDIzIEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIHN0YXJ0c1dpdGgoY29u
c3QgU3RyaW5nJiBzLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdAogICAgICAgICB7
IHJldHVybiBtX3N0cmluZy5zdGFydHNXaXRoKHMsIGNhc2VTZW5zaXRpdmUpOyB9CisgICAgYm9v
bCBzdGFydHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKKyAgICAgICAgeyByZXR1cm4gbV9z
dHJpbmcuc3RhcnRzV2l0aChjaGFyYWN0ZXIpOyB9CisgICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0
IGNoYXIqIHMsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoLCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0
CisgICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgocywgbWF0Y2hMZW5ndGgsIGNh
c2VTZW5zaXRpdmUpOyB9CisgICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+CisgICAg
Ym9vbCBzdGFydHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSwgYm9vbCBj
YXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QKKyAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuc3Rh
cnRzV2l0aDxtYXRjaExlbmd0aD4ocHJlZml4LCBjYXNlU2Vuc2l0aXZlKTsgfQorCiAgICAgYm9v
bCBlbmRzV2l0aChjb25zdCBTdHJpbmcmIHMsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNv
bnN0CiAgICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoKHMsIGNhc2VTZW5zaXRpdmUp
OyB9CisgICAgYm9vbCBlbmRzV2l0aChVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0CisgICAgICAgIHsg
cmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoKGNoYXJhY3Rlcik7IH0KKyAgICBib29sIGVuZHNXaXRo
KGNvbnN0IGNoYXIqIHMsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoLCBib29sIGNhc2VTZW5zaXRpdmUp
IGNvbnN0CisgICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoKHMsIG1hdGNoTGVuZ3Ro
LCBjYXNlU2Vuc2l0aXZlKTsgfQorICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPgor
ICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdLCBib29s
IGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdAorICAgICAgICB7IHJldHVybiBtX3N0cmluZy5l
bmRzV2l0aDxtYXRjaExlbmd0aD4ocHJlZml4LCBjYXNlU2Vuc2l0aXZlKTsgfQogICAgIAogICAg
IFdURl9FWFBPUlRfUFJJVkFURSBBdG9taWNTdHJpbmcgbG93ZXIoKSBjb25zdDsKICAgICBBdG9t
aWNTdHJpbmcgdXBwZXIoKSBjb25zdCB7IHJldHVybiBBdG9taWNTdHJpbmcoaW1wbCgpLT51cHBl
cigpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggOTEwNjA4OGZiMWMzYzJi
YzBmODRkNjc4N2M5NGQ3Y2FmYWQ0ODkxMy4uYWIwMDdjNmNmNmU4NTg3ZTAyNWQ1ZWVkMjRiMzVm
MmRjZGU5ZTgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC0xMDk1LDYgKzEw
OTUsMzcgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kSWdub3JpbmdDYXNlKFN0cmlu
Z0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmQKICAgICByZXR1cm4gZGVsdGE7CiB9CiAK
K0FMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgZXF1YWxJbm5lcihjb25zdCBTdHJpbmdJbXBsKiBz
dHJpbmdJbXBsLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgY29uc3QgY2hhciogbWF0Y2hTdHJpbmcs
IHVuc2lnbmVkIG1hdGNoTGVuZ3RoLCBib29sIGNhc2VTZW5zaXRpdmUpCit7CisgICAgQVNTRVJU
KHN0cmluZ0ltcGwpOworICAgIEFTU0VSVChtYXRjaExlbmd0aCA8PSBzdHJpbmdJbXBsLT5sZW5n
dGgoKSk7CisgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0ICsgbWF0Y2hMZW5ndGggPD0gc3RyaW5nSW1w
bC0+bGVuZ3RoKCkpOworCisgICAgaWYgKGNhc2VTZW5zaXRpdmUpIHsKKyAgICAgICAgaWYgKHN0
cmluZ0ltcGwtPmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIGVxdWFsKHN0cmluZ0ltcGwt
PmNoYXJhY3RlcnM4KCkgKyBzdGFydE9mZnNldCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KG1hdGNoU3RyaW5nKSwgbWF0Y2hMZW5ndGgpOworICAgICAgICByZXR1cm4gZXF1YWwoc3Ry
aW5nSW1wbC0+Y2hhcmFjdGVyczE2KCkgKyBzdGFydE9mZnNldCwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KG1hdGNoU3RyaW5nKSwgbWF0Y2hMZW5ndGgpOworICAgIH0KKyAgICBpZiAo
c3RyaW5nSW1wbC0+aXM4Qml0KCkpCisgICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShz
dHJpbmdJbXBsLT5jaGFyYWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPihtYXRjaFN0cmluZyksIG1hdGNoTGVuZ3RoKTsKKyAgICByZXR1cm4gZXF1
YWxJZ25vcmluZ0Nhc2Uoc3RyaW5nSW1wbC0+Y2hhcmFjdGVyczE2KCkgKyBzdGFydE9mZnNldCwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG1hdGNoU3RyaW5nKSwgbWF0Y2hMZW5ndGgp
OworfQorCitib29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25z
dAoreworICAgIGlmIChsZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIHRoaXMtPm9wZXJhdG9yW10o
MCkgPT0gY2hhcmFjdGVyOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBTdHJpbmdJbXBs
OjpzdGFydHNXaXRoKGNvbnN0IGNoYXIqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBtYXRjaExlbmd0
aCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAoreworICAgIEFTU0VSVChtYXRjaExlbmd0aCk7
CisgICAgaWYgKG1hdGNoTGVuZ3RoID4gbGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gZXF1YWxJbm5lcih0aGlzLCAwLCBtYXRjaFN0cmluZywgbWF0Y2hMZW5ndGgs
IGNhc2VTZW5zaXRpdmUpOworfQorCiBib29sIFN0cmluZ0ltcGw6OmVuZHNXaXRoKFN0cmluZ0lt
cGwqIG1hdGNoU3RyaW5nLCBib29sIGNhc2VTZW5zaXRpdmUpCiB7CiAgICAgQVNTRVJUKG1hdGNo
U3RyaW5nKTsKQEAgLTExMDUsNiArMTEzNiwyMyBAQCBib29sIFN0cmluZ0ltcGw6OmVuZHNXaXRo
KFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5nLCBib29sIGNhc2VTZW5zaXRpdmUpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCitib29sIFN0cmluZ0ltcGw6OmVuZHNXaXRoKFVDaGFyIGNoYXJhY3Rlcikg
Y29uc3QKK3sKKyAgICBpZiAobGVuZ3RoKCkpCisgICAgICAgIHJldHVybiB0aGlzLT5vcGVyYXRv
cltdKGxlbmd0aCgpIC0gMSkgPT0gY2hhcmFjdGVyOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aChjb25zdCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWdu
ZWQgbWF0Y2hMZW5ndGgsIGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQo
bWF0Y2hMZW5ndGgpOworICAgIGlmIChtYXRjaExlbmd0aCA+IGxlbmd0aCgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBsZW5ndGgoKSAtIG1hdGNo
TGVuZ3RoOworCisgICAgcmV0dXJuIGVxdWFsSW5uZXIodGhpcywgc3RhcnRPZmZzZXQsIG1hdGNo
U3RyaW5nLCBtYXRjaExlbmd0aCwgY2FzZVNlbnNpdGl2ZSk7Cit9CisKIFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBvbGRDLCBVQ2hhciBuZXdDKQogewog
ICAgIGlmIChvbGRDID09IG5ld0MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IGNlMGU0
Njk4ZjA2YzE5NDRkODQ1ZGE5NjFlNmE1ZWI1YjU3MWI5NmIuLjljODc0ODkyMGNmOGZjM2JjMDli
NjkzY2FkNmFkMjRkMmJhNzIxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC00OTgs
NyArNDk4LDE2IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHJldmVy
c2VGaW5kSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFY
KTsKIAogICAgIGJvb2wgc3RhcnRzV2l0aChTdHJpbmdJbXBsKiBzdHIsIGJvb2wgY2FzZVNlbnNp
dGl2ZSA9IHRydWUpIHsgcmV0dXJuIChjYXNlU2Vuc2l0aXZlID8gcmV2ZXJzZUZpbmQoc3RyLCAw
KSA6IHJldmVyc2VGaW5kSWdub3JpbmdDYXNlKHN0ciwgMCkpID09IDA7IH0KKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBzdGFydHNXaXRoKFVDaGFyKSBjb25zdDsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBzdGFydHNXaXRoKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBtYXRjaExlbmd0
aCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRj
aExlbmd0aD4KKyAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hM
ZW5ndGhdLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdCB7IHJldHVybiBzdGFydHNX
aXRoKHByZWZpeCwgbWF0Y2hMZW5ndGggLSAxLCBjYXNlU2Vuc2l0aXZlKTsgfTsKKwogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoKFN0cmluZ0ltcGwqLCBib29sIGNhc2VTZW5z
aXRpdmUgPSB0cnVlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChVQ2hh
cikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dpdGgoY29uc3QgY2hh
ciosIHVuc2lnbmVkIG1hdGNoTGVuZ3RoLCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0OworICAg
IHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPgorICAgIGJvb2wgZW5kc1dpdGgoY29uc3Qg
Y2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBj
b25zdCB7IHJldHVybiBzdGFydHNXaXRoKHByZWZpeCwgbWF0Y2hMZW5ndGggLSAxLCBjYXNlU2Vu
c2l0aXZlKTsgfQogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gcmVwbGFjZShVQ2hhciwgVUNoYXIpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIFN0cmluZ0ltcGwqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oCmluZGV4IDJjYTI4MzAyNDkwNWI0MGY2OTBlOTNkNmRmNjJjOTAyODY4Y2M1ZGUu
LjQ0YTZkOTRhY2IxMDhlOWIyMWQ1YzA0ZDI2YTAyYzI2NmZiZTI3ZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9X
VEZTdHJpbmcuaApAQCAtMjQ4LDggKzI0OCwyMyBAQCBwdWJsaWM6CiAKICAgICBib29sIHN0YXJ0
c1dpdGgoY29uc3QgU3RyaW5nJiBzLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdAog
ICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0c1dpdGgocy5pbXBsKCksIGNh
c2VTZW5zaXRpdmUpIDogcy5pc0VtcHR5KCk7IH0KKyAgICBib29sIHN0YXJ0c1dpdGgoVUNoYXIg
Y2hhcmFjdGVyKSBjb25zdAorICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0
c1dpdGgoY2hhcmFjdGVyKSA6IGZhbHNlOyB9CisgICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IGNo
YXIqIHMsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoLCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0Cisg
ICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aChzLCBtYXRjaExlbmd0
aCwgY2FzZVNlbnNpdGl2ZSkgOiAhbWF0Y2hMZW5ndGg7IH0KKyAgICB0ZW1wbGF0ZTx1bnNpZ25l
ZCBtYXRjaExlbmd0aD4KKyAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClb
bWF0Y2hMZW5ndGhdLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdAorICAgICAgICB7
IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0c1dpdGg8bWF0Y2hMZW5ndGg+KHByZWZpeCwg
Y2FzZVNlbnNpdGl2ZSkgOiAhbWF0Y2hMZW5ndGg7IH0KKwogICAgIGJvb2wgZW5kc1dpdGgoY29u
c3QgU3RyaW5nJiBzLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdAogICAgICAgICB7
IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmVuZHNXaXRoKHMuaW1wbCgpLCBjYXNlU2Vuc2l0aXZl
KSA6IHMuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBlbmRzV2l0aChVQ2hhciBjaGFyYWN0ZXIpIGNv
bnN0CisgICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZW5kc1dpdGgoY2hhcmFjdGVy
KSA6IGZhbHNlOyB9CisgICAgYm9vbCBlbmRzV2l0aChjb25zdCBjaGFyKiBzLCB1bnNpZ25lZCBt
YXRjaExlbmd0aCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAorICAgICAgICB7IHJldHVybiBt
X2ltcGwgPyBtX2ltcGwtPmVuZHNXaXRoKHMsIG1hdGNoTGVuZ3RoLCBjYXNlU2Vuc2l0aXZlKSA6
ICFtYXRjaExlbmd0aDsgfQorICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPgorICAg
IGJvb2wgZW5kc1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdLCBib29sIGNh
c2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdAorICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2lt
cGwtPmVuZHNXaXRoPG1hdGNoTGVuZ3RoPihwcmVmaXgsIGNhc2VTZW5zaXRpdmUpIDogIW1hdGNo
TGVuZ3RoOyB9CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoY29uc3QgU3Ry
aW5nJik7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKExDaGFyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFtZVJ1bGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0tleWZyYW1lUnVsZS5jcHAKaW5kZXggOWIzOGEzNzhi
ODE2MTRlNWI4OTljOTQxZWVmYmFkMDQ0NjBkYjYzMi4uNzY5MjA4NmQwN2Q5Y2JlNGNmN2Q5ZDE2
Yzk5ZTA2MGMwMDk1NzJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U0tleWZyYW1lUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0tleWZy
YW1lUnVsZS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBTdHlsZUtleWZyYW1lOjpwYXJzZUtl
eVN0cmluZyhjb25zdCBTdHJpbmcmIHMsIFZlY3RvcjxmbG9hdD4mIGtleXMpCiAgICAgICAgICAg
ICBrZXkgPSAwOwogICAgICAgICBlbHNlIGlmIChjdXIgPT0gInRvIikKICAgICAgICAgICAgIGtl
eSA9IDE7Ci0gICAgICAgIGVsc2UgaWYgKGN1ci5lbmRzV2l0aCgiJSIpKSB7CisgICAgICAgIGVs
c2UgaWYgKGN1ci5lbmRzV2l0aCgnJScpKSB7CiAgICAgICAgICAgICBmbG9hdCBrID0gY3VyLnN1
YnN0cmluZygwLCBjdXIubGVuZ3RoKCkgLSAxKS50b0Zsb2F0KCk7CiAgICAgICAgICAgICBpZiAo
ayA+PSAwICYmIGsgPD0gMTAwKQogICAgICAgICAgICAgICAgIGtleSA9IGsvMTAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAppbmRleCBhOGQzNGI5YWQ2OTM5MWNm
ZDM0ZWM4ZGJlYmY0MWIxOGQzNzI4NDFmLi5lMDkzNDljNzUxZDUwNDA2ZTVmYzBlMzQyYTAzOGM5
MjA2NzdmOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApA
QCAtNDc2LDcgKzQ3Niw3IEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OmFkZFN1YnJlc291cmNl
QXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uCiAgICAgLy8gRklYTUU6
IFBhc3NpbmcgYSBzdHJpbmcgdGhhdCBzdGFydHMgd2l0aCAiIyIgdG8gdGhlIGNvbXBsZXRlVVJM
IGZ1bmN0aW9uIGRvZXMKICAgICAvLyBub3Qgc2VlbSBsaWtlIGl0IHdvdWxkIHdvcmsuIFRoZSBp
bWFnZSBlbGVtZW50IGhhcyBzaW1pbGFyIGJ1dCBub3QgaWRlbnRpY2FsIGNvZGUuCiAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiB1c2VNYXAgPSBnZXRBdHRyaWJ1dGUodXNlbWFwQXR0cik7Ci0gICAg
aWYgKHVzZU1hcC5zdGFydHNXaXRoKCIjIikpCisgICAgaWYgKHVzZU1hcC5zdGFydHNXaXRoKCcj
JykpCiAgICAgICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMsIGRvY3VtZW50KCktPmNvbXBsZXRl
VVJMKHVzZU1hcCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmNwcAppbmRleCA5ZTliNTZlNDE4M2ExNzcxZDNjNjI0M2MwZTkyMWIzMzNiNjA5
YjgxLi4xZTA4NTJiNjRkNDljY2E4NTM2NTBkOTYzYWZiZDEwNTlhNDBlNzllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTMyMSw3ICsz
MjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgcmVzdWx0ID0gbV9zdHlsZVNoZWV0LT5zZXRQ
cm9wZXJ0eVRleHQobV9jc3NJZCwgbV9wcm9wZXJ0eUluZGV4LCBtX3RleHQsIG1fb3ZlcndyaXRl
LCAmb2xkVGV4dCwgZWMpOwogICAgICAgICBtX29sZFRleHQgPSBvbGRUZXh0LnN0cmlwV2hpdGVT
cGFjZSgpOwogICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgb25jZSB0aGUgbW9kZWwgaGFu
ZGxlcyB0aGlzIGNhc2UuCi0gICAgICAgIGlmICghbV9vbGRUZXh0LmVuZHNXaXRoKCI7IikpCisg
ICAgICAgIGlmICghbV9vbGRUZXh0LmVuZHNXaXRoKCc7JykpCiAgICAgICAgICAgICBtX29sZFRl
eHQgKz0gIjsiOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggM2E1NzYxNTI3ZjJkYjU3YzVi
YjAwZDYxMTFlMGIxY2VmYzIzODk1MC4uNDQ0NjM4NDdmNGRmMTgzMWM4ODk0ZTE3M2JiZTQ2Yjhm
YWNkYzVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTM0Miw3ICszNDIsNyBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6c3Vic3RpdHV0
ZU1JTUVUeXBlRnJvbVBsdWdpbkRhdGFiYXNlKGNvbnN0IFJlc291cmNlUmVzcAogICAgICAgICBy
ZXR1cm47CiAKICAgICBTdHJpbmcgZmlsZW5hbWUgPSByLnVybCgpLmxhc3RQYXRoQ29tcG9uZW50
KCk7Ci0gICAgaWYgKGZpbGVuYW1lLmVuZHNXaXRoKCIvIikpCisgICAgaWYgKGZpbGVuYW1lLmVu
ZHNXaXRoKCcvJykpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNpemVfdCBleHRlbnNpb25Qb3Mg
PSBmaWxlbmFtZS5yZXZlcnNlRmluZCgnLicpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAKaW5kZXggOGE1ODllYmJlNGQ1MjkyZTA0Njdl
M2Y2M2FjNGFlMzlkYmQ3MWZhMi4uYjBmNmJjODMxMDAyMWEyMjM1NjUyNTA4NjE2MmVhOWIyYzcy
OGVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQ
YXJzZXIuY3BwCkBAIC05Niw3ICs5Niw3IEBAIGJvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBLVVJM
JiBtYW5pZmVzdFVSTCwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgTWFuaWZlCiAgICAg
ICAgICAgICBtb2RlID0gRmFsbGJhY2s7CiAgICAgICAgIGVsc2UgaWYgKGxpbmUgPT0gIk5FVFdP
Uks6IikKICAgICAgICAgICAgIG1vZGUgPSBPbmxpbmVXaGl0ZWxpc3Q7Ci0gICAgICAgIGVsc2Ug
aWYgKGxpbmUuZW5kc1dpdGgoIjoiKSkKKyAgICAgICAgZWxzZSBpZiAobGluZS5lbmRzV2l0aCgn
OicpKQogICAgICAgICAgICAgbW9kZSA9IFVua25vd247CiAgICAgICAgIGVsc2UgaWYgKG1vZGUg
PT0gVW5rbm93bikKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5jcHAKaW5kZXggYmY2M2I2MTY5
NWJjZmZhOTg2NmY3ZjQzMWVmNTg3MjgxNjM1OTVlMy4uZGQ3MmU2Nzk0M2Q3OWE4YThhZTc4OWQy
ZWNiNTExMDlmMDgxYTJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9Db29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgYm9vbCBDb29r
aWVNYW5hZ2VyOjpzaG91bGRSZWplY3RGb3JTZWN1cml0eVJlYXNvbihjb25zdCBQYXJzZWRDb29r
aWUqIGNvb2tpZSwgY28KICAgICAvLyBhLmIuY29tIG1hdGNoZXMgYi5jb20sIGEuYi5jb20gbWF0
Y2hlcyAuQi5jb20gYW5kIGEuYi5jb20gbWF0Y2hlcyAuQS5iLkNvbQogICAgIC8vIGFuZCBzbyBv
bi4KICAgICBTdHJpbmcgaG9zdERvbWFpbk5hbWUgPSB1cmwuaG9zdCgpOwotICAgIGhvc3REb21h
aW5OYW1lID0gaG9zdERvbWFpbk5hbWUuc3RhcnRzV2l0aCgiLiIpID8gaG9zdERvbWFpbk5hbWUg
OiAiLiIgKyBob3N0RG9tYWluTmFtZTsKKyAgICBob3N0RG9tYWluTmFtZSA9IGhvc3REb21haW5O
YW1lLnN0YXJ0c1dpdGgoJy4nKSA/IGhvc3REb21haW5OYW1lIDogIi4iICsgaG9zdERvbWFpbk5h
bWU7CiAgICAgaWYgKCFob3N0RG9tYWluTmFtZS5lbmRzV2l0aChjb29raWUtPmRvbWFpbigpLCBm
YWxzZSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb29raWUgJXMgaXMgcmVqZWN0ZWQgYmVjYXVz
ZSBpdHMgZG9tYWluIGRvZXMgbm90IGRvbWFpbiBtYXRjaCB0aGUgVVJMICVzXG4iLCBjb29raWUt
PnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IDJiZjYzNjU0ZTUzNjMyOGU1MmU1MDM0ZDk4YzVl
NGIwZjY5NzllNTUuLmZkYTgxMjY1YjVjZDNmYWYxZTE5M2JjMzAxMGIzYjgxMTBiNzUxMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNw
cApAQCAtMTgzLDEwICsxODMsOSBAQCBib29sIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0
IFN0cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCiAKIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKIHsK
LSAgICBpZiAocGF0aC5lbmRzV2l0aCgiLyIpKQorICAgIGlmIChwYXRoLmVuZHNXaXRoKCcvJykp
CiAgICAgICAgIHJldHVybiBwYXRoICsgY29tcG9uZW50OwotICAgIGVsc2UKLSAgICAgICAgcmV0
dXJuIHBhdGggKyAiLyIgKyBjb21wb25lbnQ7CisgICAgcmV0dXJuIHBhdGggKyAiLyIgKyBjb21w
b25lbnQ7CiB9CiAKIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggOTMwMDc4MjE3
ZmY4NTAyZjZkYzBiMTEwNmI3N2Q4NTRiM2Q1OWFkNC4uOTUwOGM1YjhjOTVmZTg0MWMxYTA4ZjIz
MWQwYjBlMmIwYzM3MTFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFz
ZS5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCBQbHVnaW5QYWNrYWdlKiBQbHVnaW5EYXRhYmFzZTo6
ZmluZFBsdWdpbihjb25zdCBLVVJMJiB1cmwsIFN0cmluZyYgbWltZVR5cGUpCiAgICAgICAgIHJl
dHVybiBwbHVnaW5Gb3JNSU1FVHlwZShtaW1lVHlwZSk7CiAgICAgCiAgICAgU3RyaW5nIGZpbGVu
YW1lID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7Ci0gICAgaWYgKGZpbGVuYW1lLmVuZHNXaXRo
KCIvIikpCisgICAgaWYgKGZpbGVuYW1lLmVuZHNXaXRoKCcvJykpCiAgICAgICAgIHJldHVybiAw
OwogICAgIAogICAgIGludCBleHRlbnNpb25Qb3MgPSBmaWxlbmFtZS5yZXZlcnNlRmluZCgnLicp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKaW5kZXggN2I5NzNhM2MwMzUyNzNh
MGZlN2VhYTU3MDg1NzE2M2U1OWYwZTllZi4uNDgxOGI4NTE2NTdlZmEyMjVjY2NjYTBjZjkyMWRm
NmY2NjJkNjZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCkBAIC03MSw3
ICs3MSw3IEBAIHZvaWQgU1ZHU3RvcEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSog
YXR0cikKIAogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Om9mZnNldEF0dHIpIHsK
ICAgICAgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7Ci0gICAgICAgIGlm
ICh2YWx1ZS5lbmRzV2l0aCgiJSIpKQorICAgICAgICBpZiAodmFsdWUuZW5kc1dpdGgoJyUnKSkK
ICAgICAgICAgICAgIHNldE9mZnNldEJhc2VWYWx1ZSh2YWx1ZS5sZWZ0KHZhbHVlLmxlbmd0aCgp
IC0gMSkudG9GbG9hdCgpIC8gMTAwLjBmKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc2V0
T2Zmc2V0QmFzZVZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCmluZGV4IDc4Yzc5Mzc0MjE1OGNiNGVjMjZm
OTgyMDUzZGMzMDM1NWJkZTY0ZDEuLmQzZTk2NDI0MDA0YjI2OTI5MjdlZmJmYjBiMzQ5YWY1NWU0
YmRkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1l
bnQuY3BwCkBAIC0yNDgsMTMgKzI0OCwxMyBAQCBTTUlMVGltZSBTVkdTTUlMRWxlbWVudDo6cGFy
c2VPZmZzZXRWYWx1ZShjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgYm9vbCBvazsKICAgICBkb3Vi
bGUgcmVzdWx0ID0gMDsKICAgICBTdHJpbmcgcGFyc2UgPSBkYXRhLnN0cmlwV2hpdGVTcGFjZSgp
OwotICAgIGlmIChwYXJzZS5lbmRzV2l0aCgiaCIpKQorICAgIGlmIChwYXJzZS5lbmRzV2l0aCgn
aCcpKQogICAgICAgICByZXN1bHQgPSBwYXJzZS5sZWZ0KHBhcnNlLmxlbmd0aCgpIC0gMSkudG9E
b3VibGUoJm9rKSAqIDYwICogNjA7CiAgICAgZWxzZSBpZiAocGFyc2UuZW5kc1dpdGgoIm1pbiIp
KQogICAgICAgICByZXN1bHQgPSBwYXJzZS5sZWZ0KHBhcnNlLmxlbmd0aCgpIC0gMykudG9Eb3Vi
bGUoJm9rKSAqIDYwOwogICAgIGVsc2UgaWYgKHBhcnNlLmVuZHNXaXRoKCJtcyIpKQogICAgICAg
ICByZXN1bHQgPSBwYXJzZS5sZWZ0KHBhcnNlLmxlbmd0aCgpIC0gMikudG9Eb3VibGUoJm9rKSAv
IDEwMDA7Ci0gICAgZWxzZSBpZiAocGFyc2UuZW5kc1dpdGgoInMiKSkKKyAgICBlbHNlIGlmIChw
YXJzZS5lbmRzV2l0aCgncycpKQogICAgICAgICByZXN1bHQgPSBwYXJzZS5sZWZ0KHBhcnNlLmxl
bmd0aCgpIC0gMSkudG9Eb3VibGUoJm9rKTsKICAgICBlbHNlCiAgICAgICAgIHJlc3VsdCA9IHBh
cnNlLnRvRG91YmxlKCZvayk7CkBAIC0zNDUsNyArMzQ1LDcgQEAgYm9vbCBTVkdTTUlMRWxlbWVu
dDo6cGFyc2VDb25kaXRpb24oY29uc3QgU3RyaW5nJiB2YWx1ZSwgQmVnaW5PckVuZCBiZWdpbk9y
RW5kKQogCiAgICAgQ29uZGl0aW9uOjpUeXBlIHR5cGU7CiAgICAgaW50IHJlcGVhdHMgPSAtMTsK
LSAgICBpZiAobmFtZVN0cmluZy5zdGFydHNXaXRoKCJyZXBlYXQoIikgJiYgbmFtZVN0cmluZy5l
bmRzV2l0aCgiKSIpKSB7CisgICAgaWYgKG5hbWVTdHJpbmcuc3RhcnRzV2l0aCgicmVwZWF0KCIp
ICYmIG5hbWVTdHJpbmcuZW5kc1dpdGgoJyknKSkgewogICAgICAgICAvLyBGSVhNRTogRm9yIHJl
cGVhdCBldmVudHMgd2UganVzdCBuZWVkIHRvIGFkZCB0aGUgZGF0YSBjYXJyeWluZyBUaW1lRXZl
bnQgY2xhc3MgYW5kIAogICAgICAgICAvLyBmaXJlIHRoZSBldmVudHMgYXQgYXBwcm9waWF0ZSB0
aW1lcy4KICAgICAgICAgcmVwZWF0cyA9IG5hbWVTdHJpbmcuc3Vic3RyaW5nKDcsIG5hbWVTdHJp
bmcubGVuZ3RoKCkgLSA4KS50b1VJbnRTdHJpY3QoJm9rKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQuY3BwIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHAKaW5kZXggODljOTg4
ODQzODczYWZlODRlMmM5OWYyNTI5YjRhMzY3M2EyM2M1Ny4uM2I5NzJkNmM5YjU3ZTA3YTYxMDNl
NjNiZDY4MzJhNWQwN2Q5ZGFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHAKQEAgLTQyNCw3ICs0MjQsNyBAQCBib29s
IGVsZW1lbnRQYXR0ZXJuTWF0Y2hlcyhjb25zdCBjaGFyKiBwYXR0ZXJuLCBjb25zdCBIVE1MSW5w
dXRFbGVtZW50KiBpbnB1dEVsZQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
ICAgICAgICAvLyBJcyB0aGUgcmVnZXggc3BlY2lmeWluZyBhIGNoYXJhY3RlciBjb3VudD8KLSAg
ICAgICAgICAgIGlmIChwYXR0ZXJuQXR0cmlidXRlW3BhdHRlcm5TdHJpbmcubGVuZ3RoKCldICE9
ICd7JyB8fCAhcGF0dGVybkF0dHJpYnV0ZS5lbmRzV2l0aCgifSIpKQorICAgICAgICAgICAgaWYg
KHBhdHRlcm5BdHRyaWJ1dGVbcGF0dGVyblN0cmluZy5sZW5ndGgoKV0gIT0gJ3snIHx8ICFwYXR0
ZXJuQXR0cmlidXRlLmVuZHNXaXRoKCd9JykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIG51bWJlciBpbiB0aGUgcmVnZXggaXMg
YWN0dWFsbHkgYSBudW1iZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcAppbmRleCBmMzcwOTlmMmMyYTQyZDIyZTI3MDI1YWY2
NDFlMWJkN2RhMjM4MjExLi5jZWYxNGRjZjBkNWRmMzI2NGY0MGVmYTQ5OGU0MWI0ZTE0ZmI0NzJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZv
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbklu
Zm9TdG9yZS5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBwYXRo
RXh0ZW5zaW9uKGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICBTdHJpbmcgZXh0ZW5zaW9uOwogICAg
IFN0cmluZyBmaWxlbmFtZSA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwotICAgIGlmICghZmls
ZW5hbWUuZW5kc1dpdGgoIi8iKSkgeworICAgIGlmICghZmlsZW5hbWUuZW5kc1dpdGgoJy8nKSkg
ewogICAgICAgICBpbnQgZXh0ZW5zaW9uUG9zID0gZmlsZW5hbWUucmV2ZXJzZUZpbmQoJy4nKTsK
ICAgICAgICAgaWYgKGV4dGVuc2lvblBvcyAhPSAtMSkKICAgICAgICAgICAgIGV4dGVuc2lvbiA9
IGZpbGVuYW1lLnN1YnN0cmluZyhleHRlbnNpb25Qb3MgKyAxKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139398</attachid>
            <date>2012-04-29 01:51:12 -0700</date>
            <delta_ts>2012-04-29 10:43:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85154-20120429015111.patch</filename>
            <type>text/plain</type>
            <size>25242</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYwZjM0NWM2MjQyMDFjN2Q2ZTI4NzZj
NzNhNzI2NzVkODRkNzdmMDUuLjI3N2E0YTIwMDVhNTQ5MDkxYzQ3NjI4ZTNmYzA3ZDg3MWVlOTY4
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTItMDQtMjkgIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTdHJpbmc6OnN0YXJ0c1dpdGgoKSBh
bmQgZW5kc1dpdGgoKSBmb3Igc3RyaW5nIGxpdGVyYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTE1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gaW52b2tpbmcgU3RyaW5nSW1wbDo6c3RhcnRz
V2lkdGgoKSBvciBTdHJpbmdJbXBsOjplbmRzV2l0aCgpIHdpdGgKKyAgICAgICAgYSBzdHJpbmcg
bGl0dGVyYWwsIGEgbmV3IFN0cmluZyB3YXMgY29uc3RydWN0ZWQgaW1wbGljaXRlbHksIGFsbG9j
YXRpbmcKKyAgICAgICAgYSBuZXcgU3RyaW5nSW1wbCBhbmQgY29weWluZyB0aGUgY2FyYWN0ZXJz
IGZvciB0aGUgb3BlcmF0aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIHZlcnNpb24g
b2YgdGhvc2UgbWV0aG9kcyBmb3Igc2luZ2xlIGNoYXJhY3RlciBhbmQKKyAgICAgICAgc3RyaW5n
IGxpdHRlcmFscy4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gYXZvaWQgYWxsb2NhdGluZyBt
ZW1vcnkgYW5kIHVzZSB0aGUgY2hhcmFjdGVycyBpbiBwbGFjZSwKKyAgICAgICAgYW5kIGl0IHBl
cm1pdHMgc29tZSBleHRyYSBzaG9ydGN1dHMgaW4gdGhlIGltcGxlbWVudGF0aW9uLgorCisgICAg
ICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmlu
Zzo6c3RhcnRzV2l0aCk6CisgICAgICAgIChBdG9taWNTdHJpbmcpOgorICAgICAgICAoV1RGOjpB
dG9taWNTdHJpbmc6OmVuZHNXaXRoKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmNw
cDoKKyAgICAgICAgKFdURjo6ZXF1YWxJbm5lcik6CisgICAgICAgIChXVEYpOgorICAgICAgICAo
V1RGOjpTdHJpbmdJbXBsOjpzdGFydHNXaXRoKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
ZW5kc1dpdGgpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKFdU
Rjo6U3RyaW5nSW1wbDo6c3RhcnRzV2l0aCk6CisgICAgICAgIChTdHJpbmdJbXBsKToKKyAgICAg
ICAgKFdURjo6U3RyaW5nSW1wbDo6ZW5kc1dpdGgpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0
cmluZy5oOgorICAgICAgICAoV1RGOjpTdHJpbmc6OnN0YXJ0c1dpdGgpOgorICAgICAgICAoU3Ry
aW5nKToKKyAgICAgICAgKFdURjo6U3RyaW5nOjplbmRzV2l0aCk6CisKIDIwMTItMDQtMjYgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQ
XSBBZGQgYSB3YXkgdG8gcmVnaXN0ZXIgY3VzdG9tIHVyaSBzY2hlbWVzIGluIFdlYktpdDIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA5NzMwNThhYWE1ZDhiNGIzM2QyZDhlZTE4NzFiNjRjZGE0YTVlZWVlLi5hOWU1
MzA5NjQ4OTZkNzFlNzQyMDQ5OGU3ZDk1MzI1ODI4ZTgxOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDMgQEAKKzIwMTItMDQtMjkgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIEFkZCBTdHJpbmc6OnN0YXJ0c1dpdGgoKSBhbmQgZW5kc1dpdGgoKSBm
b3Igc3RyaW5nIGxpdGVyYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04NTE1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVwZGF0ZSBXZWJDb3JlIHRvIHVzZSB0aGUgc2ltcGxlciBzdGFydHNXaXRoKCkg
YW5kIGVuZHNXaXRoKCkgdGFraW5nCisgICAgICAgIGEgVUNoYXIuCisKKyAgICAgICAgKiBjc3Mv
Q1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6bWFya1Byb3BlcnR5
RW5kKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlS2V5ZnJhbWU6OnBhcnNlS2V5U3RyaW5nKToKKyAgICAgICAgKiBlZGl0
aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21UZXh0
KToKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxPYmplY3RFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMpOgorICAg
ICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldElubmVyVGV4dFZhbHVlKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRTZWFyY2hVdGlsczo6Z2V0UmVndWxhckV4cHJlc3Npb25NYXRjaGVzQnlMaW5l
cyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpTZXRQcm9wZXJ0eVRleHRBY3Rpb246OnJlZG8p
OgorICAgICAgICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWFpblJlc291cmNlTG9hZGVyOjpzdWJzdGl0dXRlTUlNRVR5cGVGcm9tUGx1Z2luRGF0
YWJhc2UpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZU1hbmlmZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFj
a2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llTWFuYWdl
cjo6c2hvdWxkUmVqZWN0Rm9yU2VjdXJpdHlSZWFzb24pOgorICAgICAgICAqIHBsYXRmb3JtL3Bv
c2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQpOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OmZpbmRQbHVnaW4pOgorICAgICAgICAqIHN2
Zy9TVkdTdG9wRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnBhcnNlT2Zmc2V0VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ29uZGl0aW9uKToKKwog
MjAxMi0wNC0yOCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFNtb290
aCBzY3JvbGxpbmcgbmVlZHMgYSBuZXcga2V5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCBiMzgxMjkyYjIzNTBkNDU0YmQ2YmYwNmEyNjdjZmUxNTI4YjgxMTEzLi4zMjNhZjQyYTMy
YmEwNDg3OGQ0MTcxYjUyNTZiNWUyNjQ4ODY2NWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNC0yOSAgQmVuamFtaW4gUG91bGFpbiAgPGJl
bmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFN0cmluZzo6c3RhcnRzV2l0aCgpIGFu
ZCBlbmRzV2l0aCgpIGZvciBzdHJpbmcgbGl0ZXJhbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1MTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQuY3BwOgor
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpET01TdXBwb3J0OjplbGVtZW50UGF0dGVybk1h
dGNoZXMpOgorCiAyMDEyLTA0LTI3ICBKYWNreSBKaWFuZyAgPHpoYWppYW5nQHJpbS5jb20+CiAK
ICAgICAgICAgW0JsYWNrQmVycnldIERvdWJsZSB0YXAgem9vbWluZyBkb2VzIG5vdGhpbmcgb24g
dGFibGUgZWxlbWVudCBvbiBidXN0ZWR0ZWVzLmNvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDA2OTdmMTc1ODQ0
ODdjZTc5ZmRiM2M0YjBiMDhiNmYyYmIzZWE1NzguLjE3ZjIyYTAzNGRjMTljMjkzMWMyMmJjNzA4
ZTZhYmQ3YjljNzEwOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNC0yOSAg
QmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFN0
cmluZzo6c3RhcnRzV2l0aCgpIGFuZCBlbmRzV2l0aCgpIGZvciBzdHJpbmcgbGl0ZXJhbHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1MTU0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIFdlYktp
dDIgdG8gdXNlIFN0cmluZzo6ZW5kc1dpdGgoVUNoYXIpLgorCisgICAgICAgICogVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cGF0aEV4dGVu
c2lvbik6CisKIDIwMTItMDQtMjggIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQWRkZWQgbmV3IGV4cG9ydGVkIHN5bWJvbHMgYWZ0
ZXIgcjExNTU1My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5n
LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCmluZGV4IGU3MzIzZjk0YTE1
NDFiOWU5M2FmMGI4YjRkNjcxNjQ1MWY1ZjJkYWEuLmY3NTMwNmY1NzczY2ExNGM1OGRlMWEzMWI0
ZTE4NGY1NjNlNTY3OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3Ry
aW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaApAQCAtODEsOCAr
ODEsMjMgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmcm
IHMsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0CiAgICAgICAgIHsgcmV0dXJuIG1f
c3RyaW5nLnN0YXJ0c1dpdGgocywgY2FzZVNlbnNpdGl2ZSk7IH0KKyAgICBib29sIHN0YXJ0c1dp
dGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAorICAgICAgICB7IHJldHVybiBtX3N0cmluZy5zdGFy
dHNXaXRoKGNoYXJhY3Rlcik7IH0KKyAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciogcywg
dW5zaWduZWQgbWF0Y2hMZW5ndGgsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0Cisg
ICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgocywgbWF0Y2hMZW5ndGgsIGNhc2VT
ZW5zaXRpdmUpOyB9CisgICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+CisgICAgYm9v
bCBzdGFydHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSwgYm9vbCBjYXNl
U2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QKKyAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuc3RhcnRz
V2l0aDxtYXRjaExlbmd0aD4ocHJlZml4LCBjYXNlU2Vuc2l0aXZlKTsgfQorCiAgICAgYm9vbCBl
bmRzV2l0aChjb25zdCBTdHJpbmcmIHMsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0
CiAgICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoKHMsIGNhc2VTZW5zaXRpdmUpOyB9
CisgICAgYm9vbCBlbmRzV2l0aChVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0CisgICAgICAgIHsgcmV0
dXJuIG1fc3RyaW5nLmVuZHNXaXRoKGNoYXJhY3Rlcik7IH0KKyAgICBib29sIGVuZHNXaXRoKGNv
bnN0IGNoYXIqIHMsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0
cnVlKSBjb25zdAorICAgICAgICB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChzLCBtYXRjaExl
bmd0aCwgY2FzZVNlbnNpdGl2ZSk7IH0KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0
aD4KKyAgICBib29sIGVuZHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSwg
Ym9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QKKyAgICAgICAgeyByZXR1cm4gbV9zdHJp
bmcuZW5kc1dpdGg8bWF0Y2hMZW5ndGg+KHByZWZpeCwgY2FzZVNlbnNpdGl2ZSk7IH0KICAgICAK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQXRvbWljU3RyaW5nIGxvd2VyKCkgY29uc3Q7CiAgICAg
QXRvbWljU3RyaW5nIHVwcGVyKCkgY29uc3QgeyByZXR1cm4gQXRvbWljU3RyaW5nKGltcGwoKS0+
dXBwZXIoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IDkxMDYwODhmYjFj
M2MyYmMwZjg0ZDY3ODdjOTRkN2NhZmFkNDg5MTMuLmFiMDA3YzZjZjZlODU4N2UwMjVkNWVlZDI0
YjM1ZjJkY2RlOWU4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtMTA5NSw2
ICsxMDk1LDM3IEBAIHNpemVfdCBTdHJpbmdJbXBsOjpyZXZlcnNlRmluZElnbm9yaW5nQ2FzZShT
dHJpbmdJbXBsKiBtYXRjaFN0cmluZywgdW5zaWduZWQgaW5kCiAgICAgcmV0dXJuIGRlbHRhOwog
fQogCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGVxdWFsSW5uZXIoY29uc3QgU3RyaW5nSW1w
bCogc3RyaW5nSW1wbCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGNvbnN0IGNoYXIqIG1hdGNoU3Ry
aW5nLCB1bnNpZ25lZCBtYXRjaExlbmd0aCwgYm9vbCBjYXNlU2Vuc2l0aXZlKQoreworICAgIEFT
U0VSVChzdHJpbmdJbXBsKTsKKyAgICBBU1NFUlQobWF0Y2hMZW5ndGggPD0gc3RyaW5nSW1wbC0+
bGVuZ3RoKCkpOworICAgIEFTU0VSVChzdGFydE9mZnNldCArIG1hdGNoTGVuZ3RoIDw9IHN0cmlu
Z0ltcGwtPmxlbmd0aCgpKTsKKworICAgIGlmIChjYXNlU2Vuc2l0aXZlKSB7CisgICAgICAgIGlm
IChzdHJpbmdJbXBsLT5pczhCaXQoKSkKKyAgICAgICAgICAgIHJldHVybiBlcXVhbChzdHJpbmdJ
bXBsLT5jaGFyYWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPihtYXRjaFN0cmluZyksIG1hdGNoTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGVxdWFs
KHN0cmluZ0ltcGwtPmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZzZXQsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPihtYXRjaFN0cmluZyksIG1hdGNoTGVuZ3RoKTsKKyAgICB9CisgICAg
aWYgKHN0cmluZ0ltcGwtPmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nh
c2Uoc3RyaW5nSW1wbC0+Y2hhcmFjdGVyczgoKSArIHN0YXJ0T2Zmc2V0LCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4obWF0Y2hTdHJpbmcpLCBtYXRjaExlbmd0aCk7CisgICAgcmV0dXJu
IGVxdWFsSWdub3JpbmdDYXNlKHN0cmluZ0ltcGwtPmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZz
ZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtYXRjaFN0cmluZyksIG1hdGNoTGVu
Z3RoKTsKK30KKworYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoKFVDaGFyIGNoYXJhY3Rlcikg
Y29uc3QKK3sKKyAgICBpZiAobGVuZ3RoKCkpCisgICAgICAgIHJldHVybiB0aGlzLT5vcGVyYXRv
cltdKDApID09IGNoYXJhY3RlcjsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgU3RyaW5n
SW1wbDo6c3RhcnRzV2l0aChjb25zdCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hM
ZW5ndGgsIGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQobWF0Y2hMZW5n
dGgpOworICAgIGlmIChtYXRjaExlbmd0aCA+IGxlbmd0aCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIGVxdWFsSW5uZXIodGhpcywgMCwgbWF0Y2hTdHJpbmcsIG1hdGNoTGVu
Z3RoLCBjYXNlU2Vuc2l0aXZlKTsKK30KKwogYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aChTdHJp
bmdJbXBsKiBtYXRjaFN0cmluZywgYm9vbCBjYXNlU2Vuc2l0aXZlKQogewogICAgIEFTU0VSVCht
YXRjaFN0cmluZyk7CkBAIC0xMTA1LDYgKzExMzYsMjMgQEAgYm9vbCBTdHJpbmdJbXBsOjplbmRz
V2l0aChTdHJpbmdJbXBsKiBtYXRjaFN0cmluZywgYm9vbCBjYXNlU2Vuc2l0aXZlKQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAorYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aChVQ2hhciBjaGFyYWN0
ZXIpIGNvbnN0Cit7CisgICAgaWYgKGxlbmd0aCgpKQorICAgICAgICByZXR1cm4gdGhpcy0+b3Bl
cmF0b3JbXShsZW5ndGgoKSAtIDEpID09IGNoYXJhY3RlcjsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGgoY29uc3QgY2hhciogbWF0Y2hTdHJpbmcsIHVu
c2lnbmVkIG1hdGNoTGVuZ3RoLCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0Cit7CisgICAgQVNT
RVJUKG1hdGNoTGVuZ3RoKTsKKyAgICBpZiAobWF0Y2hMZW5ndGggPiBsZW5ndGgoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gbGVuZ3RoKCkgLSBt
YXRjaExlbmd0aDsKKworICAgIHJldHVybiBlcXVhbElubmVyKHRoaXMsIHN0YXJ0T2Zmc2V0LCBt
YXRjaFN0cmluZywgbWF0Y2hMZW5ndGgsIGNhc2VTZW5zaXRpdmUpOworfQorCiBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNoYXIgb2xkQywgVUNoYXIgbmV3QykK
IHsKICAgICBpZiAob2xkQyA9PSBuZXdDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCBj
ZTBlNDY5OGYwNmMxOTQ0ZDg0NWRhOTYxZTZhNWViNWI1NzFiOTZiLi4zNzM0MzYwNTVhNWFhMTlh
MjJiM2YzNTMyZWU4ZjFlNzNkZGE1MjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAt
NDk4LDcgKzQ5OCwxNiBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBy
ZXZlcnNlRmluZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSBVSU5U
X01BWCk7CiAKICAgICBib29sIHN0YXJ0c1dpdGgoU3RyaW5nSW1wbCogc3RyLCBib29sIGNhc2VT
ZW5zaXRpdmUgPSB0cnVlKSB7IHJldHVybiAoY2FzZVNlbnNpdGl2ZSA/IHJldmVyc2VGaW5kKHN0
ciwgMCkgOiByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShzdHIsIDApKSA9PSAwOyB9CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChVQ2hhcikgY29uc3Q7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyKiwgdW5zaWduZWQgbWF0Y2hM
ZW5ndGgsIGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29uc3Q7CisgICAgdGVtcGxhdGU8dW5zaWduZWQg
bWF0Y2hMZW5ndGg+CisgICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21h
dGNoTGVuZ3RoXSwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QgeyByZXR1cm4gc3Rh
cnRzV2l0aChwcmVmaXgsIG1hdGNoTGVuZ3RoIC0gMSwgY2FzZVNlbnNpdGl2ZSk7IH07CisKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChTdHJpbmdJbXBsKiwgYm9vbCBjYXNl
U2Vuc2l0aXZlID0gdHJ1ZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dpdGgo
VUNoYXIpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoKGNvbnN0
IGNoYXIqLCB1bnNpZ25lZCBtYXRjaExlbmd0aCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdDsK
KyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4KKyAgICBib29sIGVuZHNXaXRoKGNv
bnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1
ZSkgY29uc3QgeyByZXR1cm4gZW5kc1dpdGgocHJlZml4LCBtYXRjaExlbmd0aCAtIDEsIGNhc2VT
ZW5zaXRpdmUpOyB9CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiByZXBsYWNlKFVDaGFyLCBVQ2hhcik7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgU3RyaW5nSW1wbCopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmgKaW5kZXggMmNhMjgzMDI0OTA1YjQwZjY5MGU5M2Q2ZGY2MmM5MDI4NjhjYzVk
ZS4uNTYzZDUyZWY4MjRiZmU1OGFhZWQ3ODY2NTczZTE3YzE5MTNmNzQxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1dURlN0cmluZy5oCkBAIC0yNDgsOCArMjQ4LDIzIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc3Rh
cnRzV2l0aChjb25zdCBTdHJpbmcmIHMsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0
CiAgICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aChzLmltcGwoKSwg
Y2FzZVNlbnNpdGl2ZSkgOiBzLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgc3RhcnRzV2l0aChVQ2hh
ciBjaGFyYWN0ZXIpIGNvbnN0CisgICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3Rh
cnRzV2l0aChjaGFyYWN0ZXIpIDogZmFsc2U7IH0KKyAgICBib29sIHN0YXJ0c1dpdGgoY29uc3Qg
Y2hhciogcywgdW5zaWduZWQgbWF0Y2hMZW5ndGgsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUp
IGNvbnN0CisgICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aChzLCBt
YXRjaExlbmd0aCwgY2FzZVNlbnNpdGl2ZSkgOiAhbWF0Y2hMZW5ndGg7IH0KKyAgICB0ZW1wbGF0
ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4KKyAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciAo
JnByZWZpeClbbWF0Y2hMZW5ndGhdLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdAor
ICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0c1dpdGg8bWF0Y2hMZW5ndGg+
KHByZWZpeCwgY2FzZVNlbnNpdGl2ZSkgOiAhbWF0Y2hMZW5ndGg7IH0KKwogICAgIGJvb2wgZW5k
c1dpdGgoY29uc3QgU3RyaW5nJiBzLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdAog
ICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmVuZHNXaXRoKHMuaW1wbCgpLCBjYXNl
U2Vuc2l0aXZlKSA6IHMuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBlbmRzV2l0aChVQ2hhciBjaGFy
YWN0ZXIpIGNvbnN0CisgICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZW5kc1dpdGgo
Y2hhcmFjdGVyKSA6IGZhbHNlOyB9CisgICAgYm9vbCBlbmRzV2l0aChjb25zdCBjaGFyKiBzLCB1
bnNpZ25lZCBtYXRjaExlbmd0aCwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QKKyAg
ICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aChzLCBtYXRjaExlbmd0aCwg
Y2FzZVNlbnNpdGl2ZSkgOiAhbWF0Y2hMZW5ndGg7IH0KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBt
YXRjaExlbmd0aD4KKyAgICBib29sIGVuZHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNo
TGVuZ3RoXSwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QKKyAgICAgICAgeyByZXR1
cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aDxtYXRjaExlbmd0aD4ocHJlZml4LCBjYXNlU2Vu
c2l0aXZlKSA6ICFtYXRjaExlbmd0aDsgfQogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
YXBwZW5kKGNvbnN0IFN0cmluZyYpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVu
ZChMQ2hhcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDI5NDdkMTZkNGVkMjQxODBk
ZWQwZTY2NzhmZWU5NDY2MjVlNjg2MDMuLmFkYTdmYTc4OGUwYWVlMGNiZTAzNjk2OGQxMTVhODQ5
M2ZmZDQwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC05MzA5LDkgKzkzMDksOSBA
QCB2b2lkIENTU1BhcnNlcjo6bWFya1Byb3BlcnR5RW5kKGJvb2wgaXNJbXBvcnRhbnRGb3VuZCwg
Ym9vbCBpc1Byb3BlcnR5UGFyc2VkKQogICAgICAgICBjb25zdCB1bnNpZ25lZCBlbmQgPSBtX3By
b3BlcnR5UmFuZ2UuZW5kOwogICAgICAgICBBU1NFUlQoc3RhcnQgPCBlbmQpOwogICAgICAgICBT
dHJpbmcgcHJvcGVydHlTdHJpbmcgPSBTdHJpbmcobV9kYXRhU3RhcnQuZ2V0KCkgKyBzdGFydCwg
ZW5kIC0gc3RhcnQpLnN0cmlwV2hpdGVTcGFjZSgpOwotICAgICAgICBpZiAocHJvcGVydHlTdHJp
bmcuZW5kc1dpdGgoIjsiLCB0cnVlKSkKKyAgICAgICAgaWYgKHByb3BlcnR5U3RyaW5nLmVuZHNX
aXRoKCc7JykpCiAgICAgICAgICAgICBwcm9wZXJ0eVN0cmluZyA9IHByb3BlcnR5U3RyaW5nLmxl
ZnQocHJvcGVydHlTdHJpbmcubGVuZ3RoKCkgLSAxKTsKLSAgICAgICAgc2l6ZV90IGNvbG9uSW5k
ZXggPSBwcm9wZXJ0eVN0cmluZy5maW5kKCI6Iik7CisgICAgICAgIHNpemVfdCBjb2xvbkluZGV4
ID0gcHJvcGVydHlTdHJpbmcuZmluZCgnOicpOwogICAgICAgICBBU1NFUlQoY29sb25JbmRleCAh
PSBub3RGb3VuZCk7CiAKICAgICAgICAgU3RyaW5nIG5hbWUgPSBwcm9wZXJ0eVN0cmluZy5sZWZ0
KGNvbG9uSW5kZXgpLnN0cmlwV2hpdGVTcGFjZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1dlYktpdENTU0tleWZyYW1lUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2Vi
S2l0Q1NTS2V5ZnJhbWVSdWxlLmNwcAppbmRleCA5YjM4YTM3OGI4MTYxNGU1Yjg5OWM5NDFlZWZi
YWQwNDQ2MGRiNjMyLi43NjkyMDg2ZDA3ZDljYmU0Y2Y3ZDlkMTZjOTllMDYwYzAwOTU3MmQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmNwcApAQCAtNTMs
NyArNTMsNyBAQCB2b2lkIFN0eWxlS2V5ZnJhbWU6OnBhcnNlS2V5U3RyaW5nKGNvbnN0IFN0cmlu
ZyYgcywgVmVjdG9yPGZsb2F0PiYga2V5cykKICAgICAgICAgICAgIGtleSA9IDA7CiAgICAgICAg
IGVsc2UgaWYgKGN1ciA9PSAidG8iKQogICAgICAgICAgICAga2V5ID0gMTsKLSAgICAgICAgZWxz
ZSBpZiAoY3VyLmVuZHNXaXRoKCIlIikpIHsKKyAgICAgICAgZWxzZSBpZiAoY3VyLmVuZHNXaXRo
KCclJykpIHsKICAgICAgICAgICAgIGZsb2F0IGsgPSBjdXIuc3Vic3RyaW5nKDAsIGN1ci5sZW5n
dGgoKSAtIDEpLnRvRmxvYXQoKTsKICAgICAgICAgICAgIGlmIChrID49IDAgJiYgayA8PSAxMDAp
CiAgICAgICAgICAgICAgICAga2V5ID0gay8xMDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAK
aW5kZXggOTUxNWI5MDEzYzVkYjUyN2FjNTA4MGQxYmJjYTA0NjcxYmIxNmM0ZC4uYmI0OWIzNzJm
NGIzYmI1MmI2N2RkZDQ2NGYwZTQ5YWYzNDcyZTk1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmNwcApAQCAtODU5LDcgKzg1OSw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3Jl
YXRlRnJhZ21lbnRGcm9tVGV4dChSYW5nZSogY29udGV4dCwgY29uc3QgU3RyaW5nCiAgICAgaWYg
KHJlbmRlcmVyICYmIHJlbmRlcmVyLT5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSkgewogICAg
ICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQtPmNyZWF0ZVRleHROb2RlKHN0cmlu
ZyksIGVjKTsKICAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgICAgIGlmIChzdHJpbmcuZW5kc1dp
dGgoIlxuIikpIHsKKyAgICAgICAgaWYgKHN0cmluZy5lbmRzV2l0aCgnXG4nKSkgewogICAgICAg
ICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1l
bnQpOwogICAgICAgICAgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXBwbGVJ
bnRlcmNoYW5nZU5ld2xpbmUpOyAgICAgICAgICAgIAogICAgICAgICAgICAgZnJhZ21lbnQtPmFw
cGVuZENoaWxkKGVsZW1lbnQucmVsZWFzZSgpLCBlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGE4ZDM0YjlhZDY5MzkxY2ZkMzRlYzhkYmViZjQxYjE4
ZDM3Mjg0MWYuLmUwOTM0OWM3NTFkNTA0MDZlNWZjMGUzNDJhMDM4YzkyMDY3N2Y5OWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC00NzYsNyArNDc2LDcg
QEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExp
c3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb24KICAgICAvLyBGSVhNRTogUGFzc2luZyBhIHN0cmlu
ZyB0aGF0IHN0YXJ0cyB3aXRoICIjIiB0byB0aGUgY29tcGxldGVVUkwgZnVuY3Rpb24gZG9lcwog
ICAgIC8vIG5vdCBzZWVtIGxpa2UgaXQgd291bGQgd29yay4gVGhlIGltYWdlIGVsZW1lbnQgaGFz
IHNpbWlsYXIgYnV0IG5vdCBpZGVudGljYWwgY29kZS4KICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IHVzZU1hcCA9IGdldEF0dHJpYnV0ZSh1c2VtYXBBdHRyKTsKLSAgICBpZiAodXNlTWFwLnN0YXJ0
c1dpdGgoIiMiKSkKKyAgICBpZiAodXNlTWFwLnN0YXJ0c1dpdGgoJyMnKSkKICAgICAgICAgYWRk
U3VicmVzb3VyY2VVUkwodXJscywgZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXNlTWFwKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5jcHAKaW5kZXggNzZjMGFiZTBhOTE3YjdjYzYwMDllYjlhZWVhMGQ3NjI1OWVkZjU1NS4uNmE2
MjQ4Y2UzZDBlYzU1ODQzYmRlZjg0NTM5NzIyOGU5YjQ1NzYzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTQ3Myw3ICs0
NzMsNyBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRJbm5lclRleHRWYWx1
ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICBpbm5lclRleHRFbGVtZW50KCktPnNldElu
bmVyVGV4dCh2YWx1ZSwgZWMpOwogICAgICAgICBBU1NFUlQoIWVjKTsKIAotICAgICAgICBpZiAo
dmFsdWUuZW5kc1dpdGgoIlxuIikgfHwgdmFsdWUuZW5kc1dpdGgoIlxyIikpIHsKKyAgICAgICAg
aWYgKHZhbHVlLmVuZHNXaXRoKCdcbicpIHx8IHZhbHVlLmVuZHNXaXRoKCdccicpKSB7CiAgICAg
ICAgICAgICBpbm5lclRleHRFbGVtZW50KCktPmFwcGVuZENoaWxkKEhUTUxCUkVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCgpKSwgZWMpOwogICAgICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRp
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAK
aW5kZXggYWZhNTIzOWU5ODZlMzJmODhkNjlkZWEzMmU3ZDk2MzQzMzQ0NzYyMi4uYjk0YjNiYjJj
NTA5YjE0NzEyN2ZlOTdhYzkzMjQ4YjNhY2E3ZGEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGlj
IFZlY3RvcjxwYWlyPGludCwgU3RyaW5nPiA+IGdldFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlc0J5
TGluZXMoY29uc3QgUmVndWwKICAgICAgICAgU3RyaW5nIGxpbmUgPSB0ZXh0LnN1YnN0cmluZyhz
dGFydCwgbGluZUVuZCAtIHN0YXJ0KTsKICAgICAgICAgaWYgKGxpbmUuZW5kc1dpdGgoIlxyXG4i
KSkKICAgICAgICAgICAgIGxpbmUgPSBsaW5lLmxlZnQobGluZS5sZW5ndGgoKSAtIDIpOwotICAg
ICAgICBpZiAobGluZS5lbmRzV2l0aCgiXG4iKSkKKyAgICAgICAgaWYgKGxpbmUuZW5kc1dpdGgo
J1xuJykpCiAgICAgICAgICAgICBsaW5lID0gbGluZS5sZWZ0KGxpbmUubGVuZ3RoKCkgLSAxKTsK
IAogICAgICAgICBpbnQgbWF0Y2hMZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA5ZTliNTZlNDE4M2ExNzcxZDNjNjI0M2MwZTky
MWIzMzNiNjA5YjgxLi4xZTA4NTJiNjRkNDljY2E4NTM2NTBkOTYzYWZiZDEwNTlhNDBlNzllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAg
LTMyMSw3ICszMjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgcmVzdWx0ID0gbV9zdHlsZVNo
ZWV0LT5zZXRQcm9wZXJ0eVRleHQobV9jc3NJZCwgbV9wcm9wZXJ0eUluZGV4LCBtX3RleHQsIG1f
b3ZlcndyaXRlLCAmb2xkVGV4dCwgZWMpOwogICAgICAgICBtX29sZFRleHQgPSBvbGRUZXh0LnN0
cmlwV2hpdGVTcGFjZSgpOwogICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgb25jZSB0aGUg
bW9kZWwgaGFuZGxlcyB0aGlzIGNhc2UuCi0gICAgICAgIGlmICghbV9vbGRUZXh0LmVuZHNXaXRo
KCI7IikpCisgICAgICAgIGlmICghbV9vbGRUZXh0LmVuZHNXaXRoKCc7JykpCiAgICAgICAgICAg
ICBtX29sZFRleHQgKz0gIjsiOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggM2E1NzYxNTI3
ZjJkYjU3YzViYjAwZDYxMTFlMGIxY2VmYzIzODk1MC4uNDQ0NjM4NDdmNGRmMTgzMWM4ODk0ZTE3
M2JiZTQ2YjhmYWNkYzVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5S
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTM0Miw3ICszNDIsNyBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6
c3Vic3RpdHV0ZU1JTUVUeXBlRnJvbVBsdWdpbkRhdGFiYXNlKGNvbnN0IFJlc291cmNlUmVzcAog
ICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgZmlsZW5hbWUgPSByLnVybCgpLmxhc3RQYXRo
Q29tcG9uZW50KCk7Ci0gICAgaWYgKGZpbGVuYW1lLmVuZHNXaXRoKCIvIikpCisgICAgaWYgKGZp
bGVuYW1lLmVuZHNXaXRoKCcvJykpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNpemVfdCBleHRl
bnNpb25Qb3MgPSBmaWxlbmFtZS5yZXZlcnNlRmluZCgnLicpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAKaW5kZXggOGE1ODllYmJlNGQ1
MjkyZTA0NjdlM2Y2M2FjNGFlMzlkYmQ3MWZhMi4uYjBmNmJjODMxMDAyMWEyMjM1NjUyNTA4NjE2
MmVhOWIyYzcyOGVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L01hbmlmZXN0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
TWFuaWZlc3RQYXJzZXIuY3BwCkBAIC05Niw3ICs5Niw3IEBAIGJvb2wgcGFyc2VNYW5pZmVzdChj
b25zdCBLVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgTWFu
aWZlCiAgICAgICAgICAgICBtb2RlID0gRmFsbGJhY2s7CiAgICAgICAgIGVsc2UgaWYgKGxpbmUg
PT0gIk5FVFdPUks6IikKICAgICAgICAgICAgIG1vZGUgPSBPbmxpbmVXaGl0ZWxpc3Q7Ci0gICAg
ICAgIGVsc2UgaWYgKGxpbmUuZW5kc1dpdGgoIjoiKSkKKyAgICAgICAgZWxzZSBpZiAobGluZS5l
bmRzV2l0aCgnOicpKQogICAgICAgICAgICAgbW9kZSA9IFVua25vd247CiAgICAgICAgIGVsc2Ug
aWYgKG1vZGUgPT0gVW5rbm93bikKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5jcHAKaW5kZXgg
YmY2M2I2MTY5NWJjZmZhOTg2NmY3ZjQzMWVmNTg3MjgxNjM1OTVlMy4uZGQ3MmU2Nzk0M2Q3OWE4
YThhZTc4OWQyZWNiNTExMDlmMDgxYTJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAg
Ym9vbCBDb29raWVNYW5hZ2VyOjpzaG91bGRSZWplY3RGb3JTZWN1cml0eVJlYXNvbihjb25zdCBQ
YXJzZWRDb29raWUqIGNvb2tpZSwgY28KICAgICAvLyBhLmIuY29tIG1hdGNoZXMgYi5jb20sIGEu
Yi5jb20gbWF0Y2hlcyAuQi5jb20gYW5kIGEuYi5jb20gbWF0Y2hlcyAuQS5iLkNvbQogICAgIC8v
IGFuZCBzbyBvbi4KICAgICBTdHJpbmcgaG9zdERvbWFpbk5hbWUgPSB1cmwuaG9zdCgpOwotICAg
IGhvc3REb21haW5OYW1lID0gaG9zdERvbWFpbk5hbWUuc3RhcnRzV2l0aCgiLiIpID8gaG9zdERv
bWFpbk5hbWUgOiAiLiIgKyBob3N0RG9tYWluTmFtZTsKKyAgICBob3N0RG9tYWluTmFtZSA9IGhv
c3REb21haW5OYW1lLnN0YXJ0c1dpdGgoJy4nKSA/IGhvc3REb21haW5OYW1lIDogIi4iICsgaG9z
dERvbWFpbk5hbWU7CiAgICAgaWYgKCFob3N0RG9tYWluTmFtZS5lbmRzV2l0aChjb29raWUtPmRv
bWFpbigpLCBmYWxzZSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb29raWUgJXMgaXMgcmVqZWN0
ZWQgYmVjYXVzZSBpdHMgZG9tYWluIGRvZXMgbm90IGRvbWFpbiBtYXRjaCB0aGUgVVJMICVzXG4i
LCBjb29raWUtPnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdXJsLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IDJiZjYzNjU0ZTUzNjMyOGU1MmU1
MDM0ZDk4YzVlNGIwZjY5NzllNTUuLmZkYTgxMjY1YjVjZDNmYWYxZTE5M2JjMzAxMGIzYjgxMTBi
NzUxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0
ZW1QT1NJWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcApAQCAtMTgzLDEwICsxODMsOSBAQCBib29sIGdldEZpbGVNb2RpZmljYXRpb25U
aW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCiAKIFN0cmluZyBwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBv
bmVudCkKIHsKLSAgICBpZiAocGF0aC5lbmRzV2l0aCgiLyIpKQorICAgIGlmIChwYXRoLmVuZHNX
aXRoKCcvJykpCiAgICAgICAgIHJldHVybiBwYXRoICsgY29tcG9uZW50OwotICAgIGVsc2UKLSAg
ICAgICAgcmV0dXJuIHBhdGggKyAiLyIgKyBjb21wb25lbnQ7CisgICAgcmV0dXJuIHBhdGggKyAi
LyIgKyBjb21wb25lbnQ7CiB9CiAKIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKaW5kZXgg
OTMwMDc4MjE3ZmY4NTAyZjZkYzBiMTEwNmI3N2Q4NTRiM2Q1OWFkNC4uOTUwOGM1YjhjOTVmZTg0
MWMxYTA4ZjIzMWQwYjBlMmIwYzM3MTFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5EYXRhYmFzZS5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCBQbHVnaW5QYWNrYWdlKiBQbHVnaW5E
YXRhYmFzZTo6ZmluZFBsdWdpbihjb25zdCBLVVJMJiB1cmwsIFN0cmluZyYgbWltZVR5cGUpCiAg
ICAgICAgIHJldHVybiBwbHVnaW5Gb3JNSU1FVHlwZShtaW1lVHlwZSk7CiAgICAgCiAgICAgU3Ry
aW5nIGZpbGVuYW1lID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7Ci0gICAgaWYgKGZpbGVuYW1l
LmVuZHNXaXRoKCIvIikpCisgICAgaWYgKGZpbGVuYW1lLmVuZHNXaXRoKCcvJykpCiAgICAgICAg
IHJldHVybiAwOwogICAgIAogICAgIGludCBleHRlbnNpb25Qb3MgPSBmaWxlbmFtZS5yZXZlcnNl
RmluZCgnLicpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKaW5kZXggN2I5NzNh
M2MwMzUyNzNhMGZlN2VhYTU3MDg1NzE2M2U1OWYwZTllZi4uNDgxOGI4NTE2NTdlZmEyMjVjY2Nj
YTBjZjkyMWRmNmY2NjJkNjZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
b3BFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3Bw
CkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgU1ZHU3RvcEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0
dHJpYnV0ZSogYXR0cikKIAogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Om9mZnNl
dEF0dHIpIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7Ci0g
ICAgICAgIGlmICh2YWx1ZS5lbmRzV2l0aCgiJSIpKQorICAgICAgICBpZiAodmFsdWUuZW5kc1dp
dGgoJyUnKSkKICAgICAgICAgICAgIHNldE9mZnNldEJhc2VWYWx1ZSh2YWx1ZS5sZWZ0KHZhbHVl
Lmxlbmd0aCgpIC0gMSkudG9GbG9hdCgpIC8gMTAwLjBmKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgc2V0T2Zmc2V0QmFzZVZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCmluZGV4IDc4Yzc5Mzc0MjE1
OGNiNGVjMjZmOTgyMDUzZGMzMDM1NWJkZTY0ZDEuLmQzZTk2NDI0MDA0YjI2OTI5MjdlZmJmYjBi
MzQ5YWY1NWU0YmRkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24v
U1ZHU01JTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZH
U01JTEVsZW1lbnQuY3BwCkBAIC0yNDgsMTMgKzI0OCwxMyBAQCBTTUlMVGltZSBTVkdTTUlMRWxl
bWVudDo6cGFyc2VPZmZzZXRWYWx1ZShjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgYm9vbCBvazsK
ICAgICBkb3VibGUgcmVzdWx0ID0gMDsKICAgICBTdHJpbmcgcGFyc2UgPSBkYXRhLnN0cmlwV2hp
dGVTcGFjZSgpOwotICAgIGlmIChwYXJzZS5lbmRzV2l0aCgiaCIpKQorICAgIGlmIChwYXJzZS5l
bmRzV2l0aCgnaCcpKQogICAgICAgICByZXN1bHQgPSBwYXJzZS5sZWZ0KHBhcnNlLmxlbmd0aCgp
IC0gMSkudG9Eb3VibGUoJm9rKSAqIDYwICogNjA7CiAgICAgZWxzZSBpZiAocGFyc2UuZW5kc1dp
dGgoIm1pbiIpKQogICAgICAgICByZXN1bHQgPSBwYXJzZS5sZWZ0KHBhcnNlLmxlbmd0aCgpIC0g
MykudG9Eb3VibGUoJm9rKSAqIDYwOwogICAgIGVsc2UgaWYgKHBhcnNlLmVuZHNXaXRoKCJtcyIp
KQogICAgICAgICByZXN1bHQgPSBwYXJzZS5sZWZ0KHBhcnNlLmxlbmd0aCgpIC0gMikudG9Eb3Vi
bGUoJm9rKSAvIDEwMDA7Ci0gICAgZWxzZSBpZiAocGFyc2UuZW5kc1dpdGgoInMiKSkKKyAgICBl
bHNlIGlmIChwYXJzZS5lbmRzV2l0aCgncycpKQogICAgICAgICByZXN1bHQgPSBwYXJzZS5sZWZ0
KHBhcnNlLmxlbmd0aCgpIC0gMSkudG9Eb3VibGUoJm9rKTsKICAgICBlbHNlCiAgICAgICAgIHJl
c3VsdCA9IHBhcnNlLnRvRG91YmxlKCZvayk7CkBAIC0zNDUsNyArMzQ1LDcgQEAgYm9vbCBTVkdT
TUlMRWxlbWVudDo6cGFyc2VDb25kaXRpb24oY29uc3QgU3RyaW5nJiB2YWx1ZSwgQmVnaW5PckVu
ZCBiZWdpbk9yRW5kKQogCiAgICAgQ29uZGl0aW9uOjpUeXBlIHR5cGU7CiAgICAgaW50IHJlcGVh
dHMgPSAtMTsKLSAgICBpZiAobmFtZVN0cmluZy5zdGFydHNXaXRoKCJyZXBlYXQoIikgJiYgbmFt
ZVN0cmluZy5lbmRzV2l0aCgiKSIpKSB7CisgICAgaWYgKG5hbWVTdHJpbmcuc3RhcnRzV2l0aCgi
cmVwZWF0KCIpICYmIG5hbWVTdHJpbmcuZW5kc1dpdGgoJyknKSkgewogICAgICAgICAvLyBGSVhN
RTogRm9yIHJlcGVhdCBldmVudHMgd2UganVzdCBuZWVkIHRvIGFkZCB0aGUgZGF0YSBjYXJyeWlu
ZyBUaW1lRXZlbnQgY2xhc3MgYW5kIAogICAgICAgICAvLyBmaXJlIHRoZSBldmVudHMgYXQgYXBw
cm9waWF0ZSB0aW1lcy4KICAgICAgICAgcmVwZWF0cyA9IG5hbWVTdHJpbmcuc3Vic3RyaW5nKDcs
IG5hbWVTdHJpbmcubGVuZ3RoKCkgLSA4KS50b1VJbnRTdHJpY3QoJm9rKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQuY3BwIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHAKaW5k
ZXggODljOTg4ODQzODczYWZlODRlMmM5OWYyNTI5YjRhMzY3M2EyM2M1Ny4uM2I5NzJkNmM5YjU3
ZTA3YTYxMDNlNjNiZDY4MzJhNWQwN2Q5ZGFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHAKQEAgLTQyNCw3ICs0MjQs
NyBAQCBib29sIGVsZW1lbnRQYXR0ZXJuTWF0Y2hlcyhjb25zdCBjaGFyKiBwYXR0ZXJuLCBjb25z
dCBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgICAgICAgICAvLyBJcyB0aGUgcmVnZXggc3BlY2lmeWluZyBhIGNoYXJhY3RlciBj
b3VudD8KLSAgICAgICAgICAgIGlmIChwYXR0ZXJuQXR0cmlidXRlW3BhdHRlcm5TdHJpbmcubGVu
Z3RoKCldICE9ICd7JyB8fCAhcGF0dGVybkF0dHJpYnV0ZS5lbmRzV2l0aCgifSIpKQorICAgICAg
ICAgICAgaWYgKHBhdHRlcm5BdHRyaWJ1dGVbcGF0dGVyblN0cmluZy5sZW5ndGgoKV0gIT0gJ3sn
IHx8ICFwYXR0ZXJuQXR0cmlidXRlLmVuZHNXaXRoKCd9JykpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIG51bWJlciBpbiB0aGUg
cmVnZXggaXMgYWN0dWFsbHkgYSBudW1iZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcAppbmRleCBmMzcwOTlmMmMyYTQyZDIy
ZTI3MDI1YWY2NDFlMWJkN2RhMjM4MjExLi5jZWYxNGRjZjBkNWRmMzI2NGY0MGVmYTQ5OGU0MWI0
ZTE0ZmI0NzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5JbmZvU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkluZm9TdG9yZS5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBzdGF0aWMgaW5saW5lIFN0
cmluZyBwYXRoRXh0ZW5zaW9uKGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICBTdHJpbmcgZXh0ZW5z
aW9uOwogICAgIFN0cmluZyBmaWxlbmFtZSA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwotICAg
IGlmICghZmlsZW5hbWUuZW5kc1dpdGgoIi8iKSkgeworICAgIGlmICghZmlsZW5hbWUuZW5kc1dp
dGgoJy8nKSkgewogICAgICAgICBpbnQgZXh0ZW5zaW9uUG9zID0gZmlsZW5hbWUucmV2ZXJzZUZp
bmQoJy4nKTsKICAgICAgICAgaWYgKGV4dGVuc2lvblBvcyAhPSAtMSkKICAgICAgICAgICAgIGV4
dGVuc2lvbiA9IGZpbGVuYW1lLnN1YnN0cmluZyhleHRlbnNpb25Qb3MgKyAxKTsK
</data>
<flag name="review"
          id="145006"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>