<?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>64764</bug_id>
          
          <creation_ts>2011-07-18 16:41:28 -0700</creation_ts>
          <short_desc>New Token class for XML</short_desc>
          <delta_ts>2011-07-20 15:16:23 -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>XML</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>
          
          <blocked>64566</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Vicki Pfau">jeffrey+webkit</reporter>
          <assigned_to name="Vicki Pfau">jeffrey+webkit</assigned_to>
          <cc>abarth</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>438817</commentid>
    <comment_count>0</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-07-18 16:41:28 -0700</bug_when>
    <thetext>For us to have a new XML tokenizer, we first need a well-designed token class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438823</commentid>
    <comment_count>1</comment_count>
      <attachid>101234</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-07-18 16:50:09 -0700</bug_when>
    <thetext>Created attachment 101234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438832</commentid>
    <comment_count>2</comment_count>
      <attachid>101234</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-18 16:54:05 -0700</bug_when>
    <thetext>Comment on attachment 101234
Patch

Attachment 101234 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9117412</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438835</commentid>
    <comment_count>3</comment_count>
      <attachid>101234</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-07-18 16:55:16 -0700</bug_when>
    <thetext>Comment on attachment 101234
Patch

Attachment 101234 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/9115453</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438844</commentid>
    <comment_count>4</comment_count>
      <attachid>101234</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-18 17:01:25 -0700</bug_when>
    <thetext>Comment on attachment 101234
Patch

Attachment 101234 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9106009</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438845</commentid>
    <comment_count>5</comment_count>
      <attachid>101234</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-07-18 17:04:59 -0700</bug_when>
    <thetext>Comment on attachment 101234
Patch

Attachment 101234 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9109009</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438881</commentid>
    <comment_count>6</comment_count>
      <attachid>101251</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-07-18 18:06:34 -0700</bug_when>
    <thetext>Created attachment 101251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438885</commentid>
    <comment_count>7</comment_count>
      <attachid>101251</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-07-18 18:12:44 -0700</bug_when>
    <thetext>Comment on attachment 101251
Patch

Attachment 101251 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/9112502</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438896</commentid>
    <comment_count>8</comment_count>
      <attachid>101251</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-18 18:26:57 -0700</bug_when>
    <thetext>Comment on attachment 101251
Patch

Attachment 101251 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9117434</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438899</commentid>
    <comment_count>9</comment_count>
      <attachid>101251</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-07-18 18:27:31 -0700</bug_when>
    <thetext>Comment on attachment 101251
Patch

Attachment 101251 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9117438</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438906</commentid>
    <comment_count>10</comment_count>
      <attachid>101251</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-18 18:33:43 -0700</bug_when>
    <thetext>Comment on attachment 101251
Patch

Attachment 101251 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9110613</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438914</commentid>
    <comment_count>11</comment_count>
      <attachid>101257</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-07-18 18:54:34 -0700</bug_when>
    <thetext>Created attachment 101257
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439363</commentid>
    <comment_count>12</comment_count>
      <attachid>101257</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-19 12:28:29 -0700</bug_when>
    <thetext>Comment on attachment 101257
Patch

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

This looks great.  I&apos;d like to take one more look to see how you address the nits below.

&gt; Source/WebCore/html/parser/HTMLToken.h:45
&gt; +    class DoctypeData {

This doesn&apos;t inherit from DoctypeDataBase ?  It looks the same, plus a m_forceQuirks flag.

&gt; Source/WebCore/html/parser/HTMLToken.h:51
&gt; +        : m_hasPublicIdentifier(false)
&gt; +        , m_hasSystemIdentifier(false)
&gt; +        , m_forceQuirks(false)

This should be indented four more spaces.

&gt; Source/WebCore/html/parser/HTMLToken.h:63
&gt; +class HTMLToken : public TokenBase&lt;HTMLTokenTypes, HTMLTokenTypes::DoctypeData&gt; {

I wonder if TokenBase is too general a name.  For example, there are also CSS tokens in WebCore.  Make MarkupTokenBase ?

&gt; Source/WebCore/html/parser/HTMLToken.h:65
&gt; +    HTMLToken() : TokenBase&lt;HTMLTokenTypes, HTMLTokenTypes::DoctypeData&gt;() { }

Won&apos;t the compiler generate this constructor for us?

&gt; Source/WebCore/html/parser/HTMLToken.h:70
&gt; +        doAppendToName(character);

I would have expected this to be TokenBase::appendToName rather than having a &quot;do&quot; prefix.

&gt; Source/WebCore/xml/parser/TokenBase.h:36
&gt; +class BaseDoctypeData {

BaseDoctypeData =&gt; DoctypeDataBase ?

&gt; Source/WebCore/xml/parser/XMLToken.h:178
&gt; +    void beginEntity()
&gt; +    {
&gt; +        ASSERT(m_type == XMLTokenTypes::Uninitialized);
&gt; +        m_type = XMLTokenTypes::Entity;
&gt; +    }

So you&apos;re going to generate tokens for the entities.  The HTML tokenizer takes care of expanding them internally, but maybe this approach works better for XML?

&gt; Source/WebCore/xml/parser/XMLToken.h:204
&gt; +    void printString(const DataVector&amp; string)
&gt; +    {
&gt; +        DataVector::const_iterator iter = string.begin();
&gt; +        for (; iter != string.end(); ++iter)
&gt; +            printf(&quot;%lc&quot;, wchar_t(*iter));
&gt; +    }
&gt; +
&gt; +    void printAttrs()
&gt; +    {
&gt; +        AttributeList::const_iterator iter = m_attributes.begin();
&gt; +        for (; iter != m_attributes.end(); ++iter) {
&gt; +            printf(&quot; &quot;);
&gt; +            printString(iter-&gt;m_name);
&gt; +            printf(&quot;=\&quot;&quot;);
&gt; +            printString(iter-&gt;m_value);
&gt; +            printf(&quot;\&quot;&quot;);
&gt; +        }
&gt; +    }

These seem like they should go on the base class.  Maybe guard with #ifndef NDEBUG ?

&gt; Source/WebCore/xml/parser/XMLToken.h:206
&gt; +    void print()

Also probably should be only built in debug.

&gt; Source/WebCore/xml/parser/XMLToken.h:335
&gt; +        : m_hasStandalone(false)
&gt; +        , m_hasEncoding(false)
&gt; +        , m_standalone(false)

four more indents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439365</commentid>
    <comment_count>13</comment_count>
      <attachid>101257</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-19 12:29:19 -0700</bug_when>
    <thetext>Comment on attachment 101257
Patch

Actually, all those comments are trivial, so I don&apos;t need to see this again.  Please address them before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439592</commentid>
    <comment_count>14</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-07-19 18:41:49 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 101257 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=101257&amp;action=review
&gt; 
&gt; This looks great.  I&apos;d like to take one more look to see how you address the nits below.
&gt; 
&gt; &gt; Source/WebCore/html/parser/HTMLToken.h:45
&gt; &gt; +    class DoctypeData {
&gt; 
&gt; This doesn&apos;t inherit from DoctypeDataBase ?  It looks the same, plus a m_forceQuirks flag.

This seems to have been an oversight. It was meant to inherit.

&gt; &gt; Source/WebCore/html/parser/HTMLToken.h:65
&gt; &gt; +    HTMLToken() : TokenBase&lt;HTMLTokenTypes, HTMLTokenTypes::DoctypeData&gt;() { }
&gt; 
&gt; Won&apos;t the compiler generate this constructor for us?

I was getting linker errors before, but now I don&apos;t appear to be...

&gt; &gt; Source/WebCore/html/parser/HTMLToken.h:70
&gt; &gt; +        doAppendToName(character);
&gt; 
&gt; I would have expected this to be TokenBase::appendToName rather than having a &quot;do&quot; prefix.

This is really to avoid naming confusion, but I can change this so that XMLToken::apependToName calls non-virtual TokenBase::appendToName (also name() does the same thing).

&gt; &gt; Source/WebCore/xml/parser/XMLToken.h:178
&gt; &gt; +    void beginEntity()
&gt; &gt; +    {
&gt; &gt; +        ASSERT(m_type == XMLTokenTypes::Uninitialized);
&gt; &gt; +        m_type = XMLTokenTypes::Entity;
&gt; &gt; +    }
&gt; 
&gt; So you&apos;re going to generate tokens for the entities.  The HTML tokenizer takes care of expanding them internally, but maybe this approach works better for XML?

I&apos;m not sure what the comment here is supposed to convey. You can&apos;t expand entities in XML during the tokenization phase unless they&apos;re character references or &amp;amp;, &amp;gt;, &amp;lt;, $apos; or $quot;. All others have to be passed to the parser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439599</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-19 19:03:27 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #12)
&gt; &gt; (From update of attachment 101257 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=101257&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/html/parser/HTMLToken.h:70
&gt; &gt; &gt; +        doAppendToName(character);
&gt; &gt; 
&gt; &gt; I would have expected this to be TokenBase::appendToName rather than having a &quot;do&quot; prefix.
&gt; 
&gt; This is really to avoid naming confusion, but I can change this so that XMLToken::apependToName calls non-virtual TokenBase::appendToName (also name() does the same thing).

I wouldn&apos;t worry about name confusion.  You&apos;re just overriding the method in the base class.

&gt; &gt; &gt; Source/WebCore/xml/parser/XMLToken.h:178
&gt; &gt; &gt; +    void beginEntity()
&gt; &gt; &gt; +    {
&gt; &gt; &gt; +        ASSERT(m_type == XMLTokenTypes::Uninitialized);
&gt; &gt; &gt; +        m_type = XMLTokenTypes::Entity;
&gt; &gt; &gt; +    }
&gt; &gt; 
&gt; &gt; So you&apos;re going to generate tokens for the entities.  The HTML tokenizer takes care of expanding them internally, but maybe this approach works better for XML?
&gt; 
&gt; I&apos;m not sure what the comment here is supposed to convey. You can&apos;t expand entities in XML during the tokenization phase unless they&apos;re character references or &amp;amp;, &amp;gt;, &amp;lt;, $apos; or $quot;. All others have to be passed to the parser.

The comment is mostly conveying my ignorance about how XML parsing works.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439891</commentid>
    <comment_count>16</comment_count>
      <attachid>101487</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-07-20 11:28:21 -0700</bug_when>
    <thetext>Created attachment 101487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439895</commentid>
    <comment_count>17</comment_count>
      <attachid>101488</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-07-20 11:34:39 -0700</bug_when>
    <thetext>Created attachment 101488
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439937</commentid>
    <comment_count>18</comment_count>
      <attachid>101488</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-20 12:46:50 -0700</bug_when>
    <thetext>Comment on attachment 101488
Patch

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

&gt; Source/WebCore/html/parser/HTMLToken.h:49
&gt; +            : DoctypeDataBase()

The compiler will generate this line for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439940</commentid>
    <comment_count>19</comment_count>
      <attachid>101497</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-07-20 12:51:12 -0700</bug_when>
    <thetext>Created attachment 101497
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439978</commentid>
    <comment_count>20</comment_count>
      <attachid>101497</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-20 13:35:12 -0700</bug_when>
    <thetext>Comment on attachment 101497
Patch for landing

Clearing flags on attachment: 101497

Committed r91396: &lt;http://trac.webkit.org/changeset/91396&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439979</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-20 13:35:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440028</commentid>
    <comment_count>22</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-20 14:42:15 -0700</bug_when>
    <thetext>This patch broke GTK builds:

http://build.webkit.org/builders/GTK%20Linux%2032-bit%20Debug/builds/16454
http://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug/builds/24433</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440055</commentid>
    <comment_count>23</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-07-20 15:16:23 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; This patch broke GTK builds:
&gt; [...]

Committed build fix in changeset 91409 &lt;http://trac.webkit.org/changeset/91409&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101234</attachid>
            <date>2011-07-18 16:50:09 -0700</date>
            <delta_ts>2011-07-18 18:06:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64764-20110718165008.patch</filename>
            <type>text/plain</type>
            <size>83407</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEyMTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNWFmNDRjOWQ2MDMyMGIw
MTFiNWI3N2YwZGE4YTZlYmNkM2JiYjFlLi43MDlkOTNiNDQzOTEwMjJjNzFmMWQyOGYxYTE2ZWJj
NjY1YzkyMWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYyIEBACisyMDExLTA3LTE4ICBKZWZm
cmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgTmV3IFRva2VuIGNsYXNzIGZv
ciBYTUwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0
NzY0CisKKyAgICAgICAgTmV3IFhNTFRva2VuIGNsYXNzIGFsb25nIHdpdGggVG9rZW5CYXNlLCBh
bmQgSFRNTFRva2VuIGluaGVyaXRpbmcgZnJvbSBCYXNlVG9rZW4uCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZFNvdXJjZSk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydERvY3R5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnRPbkRvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRDb21tZW50T25I
VE1MSHRtbEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6
Omluc2VydFNlbGZDbG9zaW5nSFRNTEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENv
bnN0cnVjdGlvblNpdGU6Omluc2VydEZvcmVpZ25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudEZyb21TYXZlZEVsZW1lbnQp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWV0YUNoYXJzZXRQYXJzZXI6OmNoZWNrRm9yTWV0YUNoYXJzZXQp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MUHJlbG9hZFNjYW5uZXI6OnByb2Nlc3NUb2tlbik6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFNvdXJjZVRyYWNrZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTb3VyY2VUcmFj
a2VyOjpzb3VyY2VGb3JUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2VuLmg6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5UeXBlczo6RG9jdHlwZURhdGE6OkRvY3R5cGVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6SFRNTFRva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUb2tlbjo6bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmZvcmNlUXVpcmtz
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6c2V0Rm9yY2VRdWlya3MpOgorICAgICAg
ICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpBdG9taWNIVE1MVG9rZW4pOgorICAgICAgICAo
V2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21p
Y0hUTUxUb2tlbjo6c2VsZkNsb3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRv
a2VuOjpjaGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6Y29t
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OnB1YmxpY0lkZW50aWZp
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpzeXN0ZW1JZGVudGlmaWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6Zm9yY2VRdWlya3MpOgorICAg
ICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjp1c2VzTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpBdG9taWNIVE1MVG9rZW46OnVzZXNBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBodG1sL3Bh
cnNlci9IVE1MVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6
OnNhdmVFbmRUYWdOYW1lSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXpl
cjo6Zmx1c2hCdWZmZXJlZEVuZFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVy
OjpuZXh0VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6aGF2ZUJ1ZmZl
cmVkQ2hhcmFjdGVyVG9rZW4pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVG
cm9tVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9r
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRG9jdHlwZVRv
a2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VTdGFy
dFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtlRW5k
VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VQRW5k
VGFnSWZQSW5CdXR0b25TY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NJc2luZGV4U3RhcnRUYWdGb3JJbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkJvZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJblRhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0JvZHlFbmRUYWdGb3JJbkJvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQW55T3RoZXJFbmRUYWdGb3JJ
bkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFn
Rm9ySW5UYWJsZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9j
ZXNzRW5kVGFnRm9ySW5Sb3cpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzRW5kVGFnRm9ySW5DZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0VuZFRhZ0ZvckluQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NDb21tZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0NoYXJhY3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NFbmRPZkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpk
ZWZhdWx0Rm9yQmVmb3JlSFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6
OmRlZmF1bHRGb3JCZWZvcmVIZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6ZGVmYXVsdEZvckluSGVhZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6
OmRlZmF1bHRGb3JJbkhlYWROb3NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1
aWxkZXI6OmRlZmF1bHRGb3JBZnRlckhlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkhlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1JDREFUQVN0YXJ0VGFnKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0dlbmVyaWNSYXdUZXh0U3RhcnRUYWcpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU2NyaXB0U3RhcnRUYWcp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlUGFyc2VyOjp1cGRhdGVUb2tlbml6ZXJTdGF0ZSk6
CisgICAgICAgICogaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHREb2N1bWVudFBhcnNlcjo6aW5zZXJ0RmFrZVByZUVsZW1lbnQpOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNT
QXVkaXRvcjo6ZmlsdGVyVG9rZW5Jbml0aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0
b3I6OmZpbHRlclRva2VuQWZ0ZXJTY3JpcHRTdGFydFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpY
U1NBdWRpdG9yOjpmaWx0ZXJTY3JpcHRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRp
dG9yOjpmaWx0ZXJPYmplY3RUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpm
aWx0ZXJQYXJhbVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlckVt
YmVkVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyQXBwbGV0VG9r
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVySWZyYW1lVG9rZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyTWV0YVRva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlckJhc2VUb2tlbik6CisgICAgICAgIChXZWJDb3Jl
OjpYU1NBdWRpdG9yOjpmaWx0ZXJGb3JtVG9rZW4pOgorICAgICAgICAqIHhtbC9wYXJzZXIvVG9r
ZW5CYXNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QmFzZURvY3R5cGVEYXRhOjpCYXNl
RG9jdHlwZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjpUb2tlbkJhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjp+VG9rZW5CYXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRva2VuQmFzZTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjppc1Vu
aW5pdGlhbGl6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjpzdGFydEluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6ZW5kSW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6VG9rZW5CYXNlOjpzZXRCYXNlT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFz
ZTo6ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6bWFrZUVuZE9mRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUb2tlbkJhc2U6OmJlZ2luU3RhcnRUYWcpOgorICAgICAgICAoV2Vi
Q29yZTo6VG9rZW5CYXNlOjpiZWdpbkVuZFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpUb2tlbkJh
c2U6OmVuc3VyZUlzQ2hhcmFjdGVyVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNl
OjpiZWdpbkNvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjpiZWdpbkRPQ1RZ
UEUpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjphcHBlbmRUb0NoYXJhY3Rlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpUb2tlbkJhc2U6OmFwcGVuZFRvQ29tbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpUb2tlbkJhc2U6OmFkZE5ld0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpU
b2tlbkJhc2U6OmJlZ2luQXR0cmlidXRlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpUb2tlbkJh
c2U6OmVuZEF0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjpiZWdp
bkF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6ZW5kQXR0cmli
dXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjphcHBlbmRUb0F0dHJpYnV0
ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjphcHBlbmRUb0F0dHJpYnV0ZVZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6dHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpUb2tlbkJhc2U6OnNlbGZDbG9zaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFz
ZTo6c2V0U2VsZkNsb3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjphdHRyaWJ1
dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6ZXJhc2VDaGFyYWN0ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6ZXJhc2VWYWx1ZU9mQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6Y2hhcmFjdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpU
b2tlbkJhc2U6OmNvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjpwdWJsaWNJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6c3lzdGVtSWRlbnRpZmll
cik6CisgICAgICAgIChXZWJDb3JlOjpUb2tlbkJhc2U6OnNldFB1YmxpY0lkZW50aWZpZXJUb0Vt
cHR5U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6c2V0U3lzdGVtSWRlbnRp
ZmllclRvRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjphcHBlbmRU
b1B1YmxpY0lkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjphcHBlbmRU
b1N5c3RlbUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjpkb0FwcGVu
ZFRvTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpUb2tlbkJhc2U6OmdldE5hbWUpOgorICAgICAg
ICAqIHhtbC9wYXJzZXIvWE1MVG9rZW4uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpYTUxU
b2tlbjo6WE1MVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW46OmNsZWFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTFRva2VuOjphcHBlbmRUb05hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MVG9rZW46Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW46OmJlZ2luRE9D
VFlQRSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6YmVnaW5YTUxEZWNsYXJhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6YXBwZW5kVG9YTUxWZXJzaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlhNTFRva2VuOjpiZWdpblhNTEVuY29kaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlhNTFRva2VuOjphcHBlbmRUb1hNTEVuY29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlhN
TFRva2VuOjpzZXRYTUxTdGFuZGFsb25lKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuOjpi
ZWdpblByb2Nlc3NpbmdJbnN0cnVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6
YXBwZW5kVG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6
WE1MVG9rZW46OmFwcGVuZFRvUHJvY2Vzc2luZ0luc3RydWN0aW9uRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxUb2tlbjo6YmVnaW5DREFUQSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tl
bjo6YXBwZW5kVG9DREFUQSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6YmVnaW5FbnRp
dHkpOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW46OnByaW50U3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlhNTFRva2VuOjpwcmludEF0dHJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRv
a2VuOjpwcmludCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6WE1MRGVjbGFyYXRpb25E
YXRhOjpYTUxEZWNsYXJhdGlvbkRhdGEpOgorCiAyMDExLTA3LTE4ICBEYW4gQmVybnN0ZWluICA8
bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgU3BlY2lmeSBhIGNhc2NhZGUgbGlzdCBjb25zaXN0
aW5nIG9mIHRoZSBsYXN0IHJlc29ydCBmb250IGZvciBDb3JlIFRleHQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwOTUyNzU4MzVm
MjIzMTFhZjhiYTRmYTIzOTgyYzVmYWY1YTNhZmY4Li45ZTEwMDJkY2YzOGE0MTk4NjUxNzZmMzky
ZTg0ZGY5ZDA5YjUxMDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC00Niw5ICs0NiwxMSBAQAogCiAvKiBCZWdpbiBQQlhCdWls
ZEZpbGUgc2VjdGlvbiAqLwogCQkwMDAyMkU2OTEzQ0UxQkJBMDAyODJENUIgLyogQ2hhcmFjdGVy
UmVmZXJlbmNlUGFyc2VySW5saW5lTWV0aG9kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDAwMjJFNjgxM0NFMUJCQTAwMjgyRDVCIC8qIENoYXJhY3Rl
clJlZmVyZW5jZVBhcnNlcklubGluZU1ldGhvZHMuaCAqLzsgfTsKKwkJMDAwMkVDNTgxM0MzRjY3
RDAwMDQwRDQ3IC8qIFhNTFRva2VuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwMDAyRUM1NTEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCAqLzsg
fTsKIAkJMDAxNDYyOEExMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwMTQ2Mjg4MTAz
Q0QxREUwMDBCMjBEQiAvKiBPcmlnaW5BY2Nlc3NFbnRyeS5jcHAgKi87IH07CiAJCTAwMTQ2MjhC
MTAzQ0QxREUwMDBCMjBEQiAvKiBPcmlnaW5BY2Nlc3NFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDAxNDYyODkxMDNDRDFERTAwMEIyMERCIC8q
IE9yaWdpbkFjY2Vzc0VudHJ5LmggKi87IH07CiAJCTAwM0YxRkVBMTFFNkFCNDMwMDgyNThEOSAv
KiBVc2VyQ29udGVudFR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwMDNGMUZFOTExRTZBQjQzMDA4MjU4RDkgLyogVXNlckNvbnRlbnRUeXBlcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTAwQTYy
OUMxMTNEMEJFQzcwMDUwQUM1MiAvKiBUb2tlbkJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQTYyOUMwMTNEMEJFQzcwMDUwQUM1MiAvKiBUb2tl
bkJhc2UuaCAqLzsgfTsKIAkJMDBCOTMxODcxM0JBOERCMzAwMzVBOTQ4IC8qIFhNTERvY3VtZW50
UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDAwQjkzMTgxMTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlci5jcHAgKi87IH07
CiAJCTAwQjkzMTg4MTNCQThEQkEwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBCOTMxODIxM0JBODY3
RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmggKi87IH07CiAJCTAwQjkzMTg5MTNCQThE
QkMwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBCOTMxODMxM0JBODY3RjAwMzVBOTQ4
IC8qIFhNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgKi87IH07CkBAIC02NDA4LDkgKzY0MTAs
MTEgQEAKIAogLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAJCTAwMDIyRTY4
MTNDRTFCQkEwMDI4MkQ1QiAvKiBDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVNZXRob2Rz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENoYXJhY3RlclJlZmVyZW5jZVBh
cnNlcklubGluZU1ldGhvZHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDAwMkVD
NTUxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFhNTFRva2VuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwMTQ2
Mjg4MTAzQ0QxREUwMDBCMjBEQiAvKiBPcmlnaW5BY2Nlc3NFbnRyeS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcmlnaW5BY2Nlc3NFbnRyeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwMTQ2Mjg5MTAzQ0QxREUwMDBCMjBEQiAvKiBPcmlnaW5B
Y2Nlc3NFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcmlnaW5BY2Nl
c3NFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMDNGMUZFOTExRTZBQjQz
MDA4MjU4RDkgLyogVXNlckNvbnRlbnRUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVc2VyQ29udGVudFR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTAwQTYyOUMwMTNEMEJFQzcwMDUwQUM1MiAvKiBUb2tlbkJhc2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVG9rZW5CYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTAwQjkzMTgxMTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxEb2N1bWVudFBhcnNlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwQjkzMTgyMTNCQTg2N0YwMDM1QTk0OCAv
KiBYTUxEb2N1bWVudFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBY
TUxEb2N1bWVudFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMEI5MzE4
MzEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjcxMiw2ICsxMjcxNiw3IEBACiAJ
CQkJMDAwMjJFNjgxM0NFMUJCQTAwMjgyRDVCIC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklu
bGluZU1ldGhvZHMuaCAqLywKIAkJCQkwMENBOTNCNDEzQzY2OTdDMDBGN0ZFOTUgLyogTmV3WE1M
RG9jdW1lbnRQYXJzZXIuY3BwICovLAogCQkJCTAwQ0E5M0IxMTNDNjY5MTYwMEY3RkU5NSAvKiBO
ZXdYTUxEb2N1bWVudFBhcnNlci5oICovLAorCQkJCTAwQTYyOUMwMTNEMEJFQzcwMDUwQUM1MiAv
KiBUb2tlbkJhc2UuaCAqLywKIAkJCQkwMEQwNDY0ODEzQzREMTQ1MDAzMjZGQ0MgLyogWE1MQ2hh
cmFjdGVyUmVmZXJlbmNlUGFyc2VyLmNwcCAqLywKIAkJCQkwMEQwNDY0OTEzQzREMTQ1MDAzMjZG
Q0MgLyogWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VyLmggKi8sCiAJCQkJMDBCOTMxODExM0JB
ODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmNwcCAqLywKQEAgLTEyNzE5LDYgKzEy
NzI0LDcgQEAKIAkJCQkwMEI5MzE4MzEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcCAqLywKIAkJCQkwMEI5MzE4NTEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9j
dW1lbnRQYXJzZXJTY29wZS5jcHAgKi8sCiAJCQkJMDBCOTMxODYxM0JBODY3RjAwMzVBOTQ4IC8q
IFhNTERvY3VtZW50UGFyc2VyU2NvcGUuaCAqLywKKwkJCQkwMDAyRUM1NTEzQzNGNjdEMDAwNDBE
NDcgLyogWE1MVG9rZW4uaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gcGFyc2VyOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIzMDc4LDYgKzIzMDg0LDcgQEAKIAkJCQlBODMzQzgwRDBB
MkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNUEzNkQ3
MTEwNDU3MjAwMEI3QjYzOSAvKiBYTUxOU05hbWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUNF
NTNFQjBBOEQxOEU3MDAyMjk0N0QgLyogWE1MU2VyaWFsaXplci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMDAwMkVDNTgxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1OTA1QURDMDEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFCN0ZDNjkwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzYwREE1QjBEMkEzMUY3MDBCOTkxOEYgLyogWFBhdGhFeGNl
cHRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjMxMDQsNiArMjMxMTEsNyBAQAogCQkJCUZENTM3
MzUzMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0
NUJGRDQxM0NGODA5MDAwQ0MzQjM4IC8qIFRyYW5zZm9ybVN0YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OTY5QjBGMzEzRDBCMzNGMDBERjM1MjEgLyogSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRl
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwMEE2MjlDMTEzRDBCRUM3MDA1MEFDNTIgLyogVG9rZW5C
YXNlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZXdTb3VyY2VEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291
cmNlRG9jdW1lbnQuY3BwCmluZGV4IDFhNzBkZmMxOWQ1NWFhZDZjZjQxZWU3OGQwYzI5ZTdmYjU1
OWQ2YzEuLjQwMmZhYjg3ZTVhMjAzMTc3NmFkNjJmYjA3NGI4ZDMzY2ZkMmFmODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcApAQCAtMTA0LDI0
ICsxMDQsMjQgQEAgdm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRTb3VyY2UoY29uc3Qg
U3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIGNyZWF0ZUNvbnRhaW5p
bmdUYWJsZSgpOwogCiAgICAgc3dpdGNoICh0b2tlbi50eXBlKCkpIHsKLSAgICBjYXNlIEhUTUxU
b2tlbjo6VW5pbml0aWFsaXplZDoKKyAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxp
emVkOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBIVE1MVG9rZW46OkRPQ1RZUEU6CisgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQ
RToKICAgICAgICAgcHJvY2Vzc0RvY3R5cGVUb2tlbihzb3VyY2UsIHRva2VuKTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW46OkVuZE9mRmlsZToKKyAgICBjYXNlIEhUTUxUb2tl
blR5cGVzOjpFbmRPZkZpbGU6CiAgICAgICAgIGlmICghbV90Ym9keS0+aGFzQ2hpbGROb2Rlcygp
KQogICAgICAgICAgICAgYWRkTGluZShTdHJpbmcoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgSFRNTFRva2VuOjpTdGFydFRhZzoKLSAgICBjYXNlIEhUTUxUb2tlbjo6RW5kVGFnOgorICAg
IGNhc2UgSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnOgorICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6
OkVuZFRhZzoKICAgICAgICAgcHJvY2Vzc1RhZ1Rva2VuKHNvdXJjZSwgdG9rZW4pOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEhUTUxUb2tlbjo6Q29tbWVudDoKKyAgICBjYXNlIEhUTUxUb2tl
blR5cGVzOjpDb21tZW50OgogICAgICAgICBwcm9jZXNzQ29tbWVudFRva2VuKHNvdXJjZSwgdG9r
ZW4pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOgorICAg
IGNhc2UgSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcjoKICAgICAgICAgcHJvY2Vzc0NoYXJhY3Rl
clRva2VuKHNvdXJjZSwgdG9rZW4pOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXgg
OGU5YzI2YTIxYWJmYzg1YTVlNzBiMjFhNDA4MzQ2ODVkMWM3YmMzMi4uMTRhZGViZDVlOWZkMDBi
NzMxNjY1YWM3NzI4YjE5N2ExNmJlNDMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtMjIzLDcgKzIyMyw3IEBAIHZv
aWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxCb2R5U3RhcnRUYWdJbkJvZHkoQXRv
bWljSFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0
RG9jdHlwZShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBl
KCkgPT0gSFRNTFRva2VuOjpET0NUWVBFKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhU
TUxUb2tlblR5cGVzOjpET0NUWVBFKTsKICAgICBhdHRhY2gobV9hdHRhY2htZW50Um9vdCwgRG9j
dW1lbnRUeXBlOjpjcmVhdGUobV9kb2N1bWVudCwgdG9rZW4ubmFtZSgpLCBTdHJpbmc6OmFkb3B0
KHRva2VuLnB1YmxpY0lkZW50aWZpZXIoKSksIFN0cmluZzo6YWRvcHQodG9rZW4uc3lzdGVtSWRl
bnRpZmllcigpKSkpOwogICAgIAogICAgIC8vIERPQ1RZUEUgbm9kZXMgYXJlIG9ubHkgcHJvY2Vz
c2VkIHdoZW4gcGFyc2luZyBmcmFnbWVudHMgdy9vIGNvbnRleHRFbGVtZW50cywgd2hpY2gKQEAg
LTI0MywxOSArMjQzLDE5IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydERvY3R5
cGUoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6
aW5zZXJ0Q29tbWVudChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tl
bi50eXBlKCkgPT0gSFRNTFRva2VuOjpDb21tZW50KTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgp
ID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50KTsKICAgICBhdHRhY2goY3VycmVudE5vZGUoKSwg
Q29tbWVudDo6Y3JlYXRlKGN1cnJlbnROb2RlKCktPmRvY3VtZW50KCksIHRva2VuLmNvbW1lbnQo
KSkpOwogfQogCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRDb21tZW50T25Eb2N1
bWVudChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkg
PT0gSFRNTFRva2VuOjpDb21tZW50KTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxU
b2tlblR5cGVzOjpDb21tZW50KTsKICAgICBhdHRhY2gobV9hdHRhY2htZW50Um9vdCwgQ29tbWVu
dDo6Y3JlYXRlKG1fZG9jdW1lbnQsIHRva2VuLmNvbW1lbnQoKSkpOwogfQogCiB2b2lkIEhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRDb21tZW50T25IVE1MSHRtbEVsZW1lbnQoQXRvbWljSFRN
TFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6
Q29tbWVudCk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q29t
bWVudCk7CiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbV9vcGVuRWxlbWVudHMucm9vdE5v
ZGUoKTsKICAgICBhdHRhY2gocGFyZW50LCBDb21tZW50OjpjcmVhdGUocGFyZW50LT5kb2N1bWVu
dCgpLCB0b2tlbi5jb21tZW50KCkpKTsKIH0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIEhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MRWxlbWVudChBdG9taWNIVE1MVG9rZW4mIHRva2Vu
KQogCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRTZWxmQ2xvc2luZ0hUTUxFbGVt
ZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9
PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxU
b2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBhdHRh
Y2hUb0N1cnJlbnQoY3JlYXRlSFRNTEVsZW1lbnQodG9rZW4pKTsKICAgICAvLyBOb3JtYWxseSBI
VE1MRWxlbWVudFN0YWNrIGlzIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIGZpbmlzaFBhcnNpbmdD
aGlsZHJlbiwKICAgICAvLyBidXQgc2VsZi1jbG9zaW5nIGVsZW1lbnRzIGFyZSBuZXZlciBpbiB0
aGUgZWxlbWVudCBzdGFjayBzbyB0aGUgc3RhY2sKQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lkIEhU
TUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRTY3JpcHRFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYg
dG9rZW4pCiAKIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEZvcmVpZ25FbGVtZW50
KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJ
KQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7Cisg
ICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAg
IG5vdEltcGxlbWVudGVkKCk7IC8vIHBhcnNlRXJyb3Igd2hlbiB4bWxucyBvciB4bWxuczp4bGlu
ayBhcmUgd3JvbmcuCiAKICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGF0dGFjaFRvQ3Vy
cmVudChjcmVhdGVFbGVtZW50KHRva2VuLCBuYW1lc3BhY2VVUkkpKTsKQEAgLTQyMSw3ICs0MjEs
NyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1M
RWxlbWVudEZyb21TYXZlZEVsZW1lbnQoRWxlbQogICAgIC8vIHNwZWMgaW1wbGllcyBpdCBzaG91
bGQgYmUgIjEiLiAgTWluZWZpZWxkIG1hdGNoZXMgdGhlIEhUTUw1IHNwZWMgaGVyZS4KIAogICAg
IEFTU0VSVChlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkpOyAvLyBvdGhlcndpc2UgbG9jYWxOYW1l
KCkgbWlnaHQgYmUgd3JvbmcuCi0gICAgQXRvbWljSFRNTFRva2VuIGZha2VUb2tlbihIVE1MVG9r
ZW46OlN0YXJ0VGFnLCBlbGVtZW50LT5sb2NhbE5hbWUoKSwgY2xvbmVBdHRyaWJ1dGVzKGVsZW1l
bnQpKTsKKyAgICBBdG9taWNIVE1MVG9rZW4gZmFrZVRva2VuKEhUTUxUb2tlblR5cGVzOjpTdGFy
dFRhZywgZWxlbWVudC0+bG9jYWxOYW1lKCksIGNsb25lQXR0cmlidXRlcyhlbGVtZW50KSk7CiAg
ICAgcmV0dXJuIGNyZWF0ZUhUTUxFbGVtZW50KGZha2VUb2tlbik7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwCmluZGV4
IDU0MTM0NjY5OTY5NGE5MWM4ZjNmM2EwYTcxYWUzMjk1NmQwMmI3MGEuLjljZWFhZTlhZjA2MDli
ZjcyYmY2OTg3YzkyYTYwMGVhNjc4YjRjZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcApAQCAtMTc1LDggKzE3NSw4IEBA
IGJvb2wgSFRNTE1ldGFDaGFyc2V0UGFyc2VyOjpjaGVja0Zvck1ldGFDaGFyc2V0KGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiAgICAgbV9pbnB1dC5hcHBlbmQoU2VnbWVudGVkU3Ry
aW5nKG1fYXNzdW1lZENvZGVjLT5kZWNvZGUoZGF0YSwgbGVuZ3RoKSkpOwogCiAgICAgd2hpbGUg
KG1fdG9rZW5pemVyLT5uZXh0VG9rZW4obV9pbnB1dCwgbV90b2tlbikpIHsKLSAgICAgICAgYm9v
bCBlbmQgPSBtX3Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZzsKLSAgICAgICAgaWYg
KGVuZCB8fCBtX3Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKSB7CisgICAgICAg
IGJvb2wgZW5kID0gbV90b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZzsKKyAg
ICAgICAgaWYgKGVuZCB8fCBtX3Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRU
YWcpIHsKICAgICAgICAgICAgIEF0b21pY1N0cmluZyB0YWdOYW1lKG1fdG9rZW4ubmFtZSgpLmRh
dGEoKSwgbV90b2tlbi5uYW1lKCkuc2l6ZSgpKTsKICAgICAgICAgICAgIGlmICghZW5kKSB7CiAg
ICAgICAgICAgICAgICAgbV90b2tlbml6ZXItPnVwZGF0ZVN0YXRlRm9yKHRhZ05hbWUsIDApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAK
aW5kZXggOWMzMGVmOTJkZTMxMGExNWI1ZDkxY2ExYjkwMDk5NzAzNzlmNWI2MS4uYjk0MjFkODg0
NGU2OWFiNzBiOTVhNjlmMWIxMmE4MGQ3MmIxMGRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCkBAIC0xNzQsMTUgKzE3NCwxNSBA
QCB2b2lkIEhUTUxQcmVsb2FkU2Nhbm5lcjo6c2NhbigpCiB2b2lkIEhUTUxQcmVsb2FkU2Nhbm5l
cjo6cHJvY2Vzc1Rva2VuKCkKIHsKICAgICBpZiAobV9pblN0eWxlKSB7Ci0gICAgICAgIGlmICht
X3Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3RlcikKKyAgICAgICAgaWYgKG1fdG9r
ZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpCiAgICAgICAgICAgICBtX2Nz
c1NjYW5uZXIuc2NhbihtX3Rva2VuLCBzY2FubmluZ0JvZHkoKSk7Ci0gICAgICAgIGVsc2UgaWYg
KG1fdG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnKSB7CisgICAgICAgIGVsc2UgaWYg
KG1fdG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpIHsKICAgICAgICAgICAg
IG1faW5TdHlsZSA9IGZhbHNlOwogICAgICAgICAgICAgbV9jc3NTY2FubmVyLnJlc2V0KCk7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAobV90b2tlbi50eXBlKCkgIT0gSFRNTFRva2VuOjpT
dGFydFRhZykKKyAgICBpZiAobV90b2tlbi50eXBlKCkgIT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0
VGFnKQogICAgICAgICByZXR1cm47CiAKICAgICBQcmVsb2FkVGFzayB0YXNrKG1fdG9rZW4pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuY3BwCmlu
ZGV4IGNmNDMxMDVkMzkyMWE2MjI2NWQ2YTJhOWY3YTdhZjBlZTUxYjU1ZWIuLjcwY2Y3MDkxNWE4
YmY4YTk5NTAxODkzZWVjZWM5ZjFjOThiYWZlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxTb3VyY2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MU291cmNlVHJhY2tlci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgSFRNTFNv
dXJjZVRyYWNrZXI6OkhUTUxTb3VyY2VUcmFja2VyKCkKIAogdm9pZCBIVE1MU291cmNlVHJhY2tl
cjo6c3RhcnQoY29uc3QgSFRNTElucHV0U3RyZWFtJiBpbnB1dCwgSFRNTFRva2VuJiB0b2tlbikK
IHsKLSAgICBtX3NvdXJjZUZyb21QcmV2aW91c1NlZ21lbnRzID0gdG9rZW4udHlwZSgpID09IEhU
TUxUb2tlbjo6VW5pbml0aWFsaXplZCA/IFN0cmluZygpIDogbV9zb3VyY2VGcm9tUHJldmlvdXNT
ZWdtZW50cyArIG1fc291cmNlLnRvU3RyaW5nKCk7CisgICAgbV9zb3VyY2VGcm9tUHJldmlvdXNT
ZWdtZW50cyA9IHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCA/
IFN0cmluZygpIDogbV9zb3VyY2VGcm9tUHJldmlvdXNTZWdtZW50cyArIG1fc291cmNlLnRvU3Ry
aW5nKCk7CiAgICAgbV9zb3VyY2UgPSBpbnB1dC5jdXJyZW50KCk7CiAgICAgdG9rZW4uc2V0QmFz
ZU9mZnNldChpbnB1dC5jdXJyZW50KCkubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSAtIG1f
c291cmNlRnJvbVByZXZpb3VzU2VnbWVudHMubGVuZ3RoKCkpOwogfQpAQCAtNDgsNyArNDgsNyBA
QCB2b2lkIEhUTUxTb3VyY2VUcmFja2VyOjplbmQoY29uc3QgSFRNTElucHV0U3RyZWFtJiBpbnB1
dCwgSFRNTFRva2VuJiB0b2tlbikKIAogU3RyaW5nIEhUTUxTb3VyY2VUcmFja2VyOjpzb3VyY2VG
b3JUb2tlbihjb25zdCBIVE1MVG9rZW4mIHRva2VuKQogewotICAgIGlmICh0b2tlbi50eXBlKCkg
PT0gSFRNTFRva2VuOjpFbmRPZkZpbGUpCisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9r
ZW5UeXBlczo6RW5kT2ZGaWxlKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7IC8vIEhpZGVzIHRo
ZSBudWxsIGNoYXJhY3RlciB3ZSB1c2UgdG8gbWFyayB0aGUgZW5kIG9mIGZpbGUuCiAKICAgICBp
ZiAoIW1fY2FjaGVkU291cmNlRm9yVG9rZW4uaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVG9rZW4uaAppbmRleCA2N2RiNjQ3MDZmNzkzM2RmOWE3YmNmODBjMmJjMTkxMzY3
YmQ3OTQ0Li5mZmFjYzU5NzdlOWQxMGI5MjU2MTY4Mjk3MzIzZDZiNzBlYTAzNDA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaApAQCAtMjYsMTQgKzI2LDExIEBACiAjaWZu
ZGVmIEhUTUxUb2tlbl9oCiAjZGVmaW5lIEhUTUxUb2tlbl9oCiAKLSNpbmNsdWRlICJOYW1lZE5v
ZGVNYXAuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKyNpbmNsdWRlICJUb2tlbkJhc2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBIVE1MVG9rZW4gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhUTUxUb2tlbik7IFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworY2xhc3MgSFRNTFRva2VuVHlwZXMgewogcHVibGljOgog
ICAgIGVudW0gVHlwZSB7CiAgICAgICAgIFVuaW5pdGlhbGl6ZWQsCkBAIC00NSwzMzkgKzQyLDUy
IEBAIHB1YmxpYzoKICAgICAgICAgRW5kT2ZGaWxlLAogICAgIH07CiAKLSAgICBjbGFzcyBSYW5n
ZSB7Ci0gICAgcHVibGljOgotICAgICAgICBpbnQgbV9zdGFydDsKLSAgICAgICAgaW50IG1fZW5k
OwotICAgIH07Ci0KLSAgICBjbGFzcyBBdHRyaWJ1dGUgeworICAgIGNsYXNzIERvY3R5cGVEYXRh
IHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRG9jdHlwZURhdGEpOwogICAgIHB1Ymxp
YzoKLSAgICAgICAgUmFuZ2UgbV9uYW1lUmFuZ2U7Ci0gICAgICAgIFJhbmdlIG1fdmFsdWVSYW5n
ZTsKLSAgICAgICAgV1RGOjpWZWN0b3I8VUNoYXIsIDMyPiBtX25hbWU7Ci0gICAgICAgIFdURjo6
VmVjdG9yPFVDaGFyLCAzMj4gbV92YWx1ZTsKKyAgICAgICAgRG9jdHlwZURhdGEoKQorICAgICAg
ICA6IG1faGFzUHVibGljSWRlbnRpZmllcihmYWxzZSkKKyAgICAgICAgLCBtX2hhc1N5c3RlbUlk
ZW50aWZpZXIoZmFsc2UpCisgICAgICAgICwgbV9mb3JjZVF1aXJrcyhmYWxzZSkKKyAgICAgICAg
eworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIG1faGFzUHVibGljSWRlbnRpZmll
cjsKKyAgICAgICAgYm9vbCBtX2hhc1N5c3RlbUlkZW50aWZpZXI7CisgICAgICAgIGJvb2wgbV9m
b3JjZVF1aXJrczsKKyAgICAgICAgV1RGOjpWZWN0b3I8VUNoYXI+IG1fcHVibGljSWRlbnRpZmll
cjsKKyAgICAgICAgV1RGOjpWZWN0b3I8VUNoYXI+IG1fc3lzdGVtSWRlbnRpZmllcjsKICAgICB9
OworfTsKIAotICAgIHR5cGVkZWYgV1RGOjpWZWN0b3I8QXR0cmlidXRlLCAxMD4gQXR0cmlidXRl
TGlzdDsKLSAgICB0eXBlZGVmIFdURjo6VmVjdG9yPFVDaGFyLCAxMDI0PiBEYXRhVmVjdG9yOwot
Ci0gICAgSFRNTFRva2VuKCkgeyBjbGVhcigpOyB9Ci0KLSAgICB2b2lkIGNsZWFyKCkKLSAgICB7
Ci0gICAgICAgIG1fdHlwZSA9IFVuaW5pdGlhbGl6ZWQ7Ci0gICAgICAgIG1fcmFuZ2UubV9zdGFy
dCA9IDA7Ci0gICAgICAgIG1fcmFuZ2UubV9lbmQgPSAwOwotICAgICAgICBtX2Jhc2VPZmZzZXQg
PSAwOwotICAgICAgICBtX2RhdGEuY2xlYXIoKTsKLSAgICB9Ci0KLSAgICBib29sIGlzVW5pbml0
aWFsaXplZCgpIHsgcmV0dXJuIG1fdHlwZSA9PSBVbmluaXRpYWxpemVkOyB9Ci0KLSAgICBpbnQg
c3RhcnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2UubV9zdGFydDsgfQotICAgIGludCBl
bmRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2UubV9lbmQ7IH0KLQotICAgIHZvaWQgc2V0
QmFzZU9mZnNldChpbnQgb2Zmc2V0KQotICAgIHsKLSAgICAgICAgbV9iYXNlT2Zmc2V0ID0gb2Zm
c2V0OwotICAgIH0KLQotICAgIHZvaWQgZW5kKGludCBlbmRPZmZzZXQpCi0gICAgewotICAgICAg
ICBtX3JhbmdlLm1fZW5kID0gZW5kT2Zmc2V0IC0gbV9iYXNlT2Zmc2V0OwotICAgIH0KLQotICAg
IHZvaWQgbWFrZUVuZE9mRmlsZSgpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFVu
aW5pdGlhbGl6ZWQpOwotICAgICAgICBtX3R5cGUgPSBFbmRPZkZpbGU7Ci0gICAgfQotCi0gICAg
dm9pZCBiZWdpblN0YXJ0VGFnKFVDaGFyIGNoYXJhY3RlcikKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChjaGFyYWN0ZXIpOwotICAgICAgICBBU1NFUlQobV90eXBlID09IFVuaW5pdGlhbGl6ZWQpOwot
ICAgICAgICBtX3R5cGUgPSBTdGFydFRhZzsKLSAgICAgICAgbV9zZWxmQ2xvc2luZyA9IGZhbHNl
OwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSAwOwotICAgICAgICBtX2F0dHJpYnV0ZXMu
Y2xlYXIoKTsKLQotICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIGJlZ2luRW5kVGFnKFQgY2hhcmFjdGVy
cykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVW5pbml0aWFsaXplZCk7Ci0gICAg
ICAgIG1fdHlwZSA9IEVuZFRhZzsKLSAgICAgICAgbV9zZWxmQ2xvc2luZyA9IGZhbHNlOwotICAg
ICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSAwOwotICAgICAgICBtX2F0dHJpYnV0ZXMuY2xlYXIo
KTsKLQotICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3RlcnMpOwotICAgIH0KLQotICAgIC8v
IFN0YXJ0aW5nIGEgY2hhcmFjdGVyIHRva2VuIHdvcmtzIHNsaWdodGx5IGRpZmZlcmVudGx5IHRo
YW4gc3RhcnRpbmcKLSAgICAvLyBvdGhlciB0eXBlcyBvZiB0b2tlbnMgYmVjYXVzZSB3ZSB3YW50
IHRvIHNhdmUgYSBwZXItY2hhcmFjdGVyIGJyYW5jaC4KLSAgICB2b2lkIGVuc3VyZUlzQ2hhcmFj
dGVyVG9rZW4oKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxpemVk
IHx8IG1fdHlwZSA9PSBDaGFyYWN0ZXIpOwotICAgICAgICBtX3R5cGUgPSBDaGFyYWN0ZXI7Ci0g
ICAgfQotCi0gICAgdm9pZCBiZWdpbkNvbW1lbnQoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBVbmluaXRpYWxpemVkKTsKLSAgICAgICAgbV90eXBlID0gQ29tbWVudDsKLSAgICB9
Ci0KLSAgICB2b2lkIGJlZ2luRE9DVFlQRSgpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBl
ID09IFVuaW5pdGlhbGl6ZWQpOwotICAgICAgICBtX3R5cGUgPSBET0NUWVBFOwotICAgICAgICBt
X2RvY3R5cGVEYXRhID0gYWRvcHRQdHIobmV3IERvY3R5cGVEYXRhKCkpOwotICAgIH0KLQotICAg
IHZvaWQgYmVnaW5ET0NUWVBFKFVDaGFyIGNoYXJhY3RlcikKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChjaGFyYWN0ZXIpOwotICAgICAgICBiZWdpbkRPQ1RZUEUoKTsKLSAgICAgICAgbV9kYXRhLmFw
cGVuZChjaGFyYWN0ZXIpOwotICAgIH0KLQorY2xhc3MgSFRNTFRva2VuIDogcHVibGljIFRva2Vu
QmFzZTxIVE1MVG9rZW5UeXBlcywgSFRNTFRva2VuVHlwZXM6OkRvY3R5cGVEYXRhPiB7CitwdWJs
aWM6CisgICAgSFRNTFRva2VuKCkgOiBUb2tlbkJhc2UoKSB7IH0KKyAgICAKICAgICB2b2lkIGFw
cGVuZFRvTmFtZShVQ2hhciBjaGFyYWN0ZXIpCiAgICAgewotICAgICAgICBBU1NFUlQoY2hhcmFj
dGVyKTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBTdGFydFRhZyB8fCBtX3R5cGUgPT0gRW5k
VGFnIHx8IG1fdHlwZSA9PSBET0NUWVBFKTsKLSAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0
ZXIpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBhcHBlbmRU
b0NoYXJhY3RlcihUIGNoYXJhY3RlcnMpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09
IENoYXJhY3Rlcik7Ci0gICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVycyk7Ci0gICAgfQot
Ci0gICAgdm9pZCBhcHBlbmRUb0NvbW1lbnQoVUNoYXIgY2hhcmFjdGVyKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQ29tbWVudCk7
Ci0gICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFk
ZE5ld0F0dHJpYnV0ZSgpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFn
IHx8IG1fdHlwZSA9PSBFbmRUYWcpOwotICAgICAgICBtX2F0dHJpYnV0ZXMuZ3JvdyhtX2F0dHJp
YnV0ZXMuc2l6ZSgpICsgMSk7Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9ICZtX2F0dHJp
YnV0ZXMubGFzdCgpOwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRl
LT5tX25hbWVSYW5nZS5tX3N0YXJ0ID0gMDsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5t
X25hbWVSYW5nZS5tX2VuZCA9IDA7Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1
ZVJhbmdlLm1fc3RhcnQgPSAwOwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVS
YW5nZS5tX2VuZCA9IDA7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB2b2lkIGJlZ2luQXR0cmlidXRl
TmFtZShpbnQgb2Zmc2V0KQotICAgIHsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25h
bWVSYW5nZS5tX3N0YXJ0ID0gb2Zmc2V0IC0gbV9iYXNlT2Zmc2V0OwotICAgIH0KLQotICAgIHZv
aWQgZW5kQXR0cmlidXRlTmFtZShpbnQgb2Zmc2V0KQotICAgIHsKLSAgICAgICAgaW50IGluZGV4
ID0gb2Zmc2V0IC0gbV9iYXNlT2Zmc2V0OwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1f
bmFtZVJhbmdlLm1fZW5kID0gaW5kZXg7Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92
YWx1ZVJhbmdlLm1fc3RhcnQgPSBpbmRleDsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5t
X3ZhbHVlUmFuZ2UubV9lbmQgPSBpbmRleDsKLSAgICB9Ci0KLSAgICB2b2lkIGJlZ2luQXR0cmli
dXRlVmFsdWUoaW50IG9mZnNldCkKLSAgICB7Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+
bV92YWx1ZVJhbmdlLm1fc3RhcnQgPSBvZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7Ci0jaWZuZGVmIE5E
RUJVRwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX2VuZCA9IDA7
Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB2b2lkIGVuZEF0dHJpYnV0ZVZhbHVlKGludCBvZmZzZXQp
Ci0gICAgewotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX2VuZCA9
IG9mZnNldCAtIG1fYmFzZU9mZnNldDsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGVuZFRvQXR0cmli
dXRlTmFtZShVQ2hhciBjaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQoY2hhcmFjdGVy
KTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBTdGFydFRhZyB8fCBtX3R5cGUgPT0gRW5kVGFn
KTsKLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGFkZCB0aGUgZm9sbG93
aW5nIEFTU0VSVCBvbmNlIHdlIGZpeAotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjI5NzEKLSAgICAgICAgLy8gICBBU1NFUlQobV9jdXJyZW50QXR0
cmlidXRlLT5tX25hbWVSYW5nZS5tX3N0YXJ0KTsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRl
LT5tX25hbWUuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRUb0F0
dHJpYnV0ZVZhbHVlKFVDaGFyIGNoYXJhY3RlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjaGFy
YWN0ZXIpOwotICAgICAgICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBF
bmRUYWcpOwotICAgICAgICBBU1NFUlQobV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2Uu
bV9zdGFydCk7Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZS5hcHBlbmQoY2hh
cmFjdGVyKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRU
YWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcgfHwgbV90eXBlID09IEhUTUxU
b2tlblR5cGVzOjpET0NUWVBFKTsKKyAgICAgICAgZG9BcHBlbmRUb05hbWUoY2hhcmFjdGVyKTsK
ICAgICB9Ci0KLSAgICB2b2lkIGFwcGVuZFRvQXR0cmlidXRlVmFsdWUoc2l6ZV90IGksIGNvbnN0
IFN0cmluZyYgdmFsdWUpCi0gICAgewotICAgICAgICBBU1NFUlQoIXZhbHVlLmlzRW1wdHkoKSk7
Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyk7
Ci0gICAgICAgIG1fYXR0cmlidXRlc1tpXS5tX3ZhbHVlLmFwcGVuZCh2YWx1ZS5jaGFyYWN0ZXJz
KCksIHZhbHVlLmxlbmd0aCgpKTsKLSAgICB9Ci0KLSAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KLQotICAgIGJvb2wgc2VsZkNsb3NpbmcoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBTdGFydFRhZyB8fCBtX3R5cGUgPT0gRW5kVGFnKTsKLSAg
ICAgICAgcmV0dXJuIG1fc2VsZkNsb3Npbmc7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTZWxmQ2xv
c2luZygpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6U3RhcnRU
YWcgfHwgbV90eXBlID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKLSAgICAgICAgbV9zZWxmQ2xvc2lu
ZyA9IHRydWU7Ci0gICAgfQotCi0gICAgY29uc3QgQXR0cmlidXRlTGlzdCYgYXR0cmlidXRlcygp
IGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlw
ZSA9PSBFbmRUYWcpOwotICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzOwotICAgIH0KLQorICAg
IAogICAgIGNvbnN0IERhdGFWZWN0b3ImIG5hbWUoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBTdGFydFRhZyB8fCBtX3R5cGUgPT0gRW5kVGFnIHx8IG1fdHlwZSA9PSBE
T0NUWVBFKTsKLSAgICAgICAgcmV0dXJuIG1fZGF0YTsKLSAgICB9Ci0KLSAgICB2b2lkIGVyYXNl
Q2hhcmFjdGVycygpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IENoYXJhY3Rlcik7
Ci0gICAgICAgIG1fZGF0YS5jbGVhcigpOwotICAgIH0KLQotICAgIHZvaWQgZXJhc2VWYWx1ZU9m
QXR0cmlidXRlKHNpemVfdCBpKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBTdGFy
dFRhZyB8fCBtX3R5cGUgPT0gRW5kVGFnKTsKLSAgICAgICAgbV9hdHRyaWJ1dGVzW2ldLm1fdmFs
dWUuY2xlYXIoKTsKLSAgICB9Ci0KLSAgICBjb25zdCBEYXRhVmVjdG9yJiBjaGFyYWN0ZXJzKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQ2hhcmFjdGVyKTsKLSAgICAg
ICAgcmV0dXJuIG1fZGF0YTsKLSAgICB9Ci0KLSAgICBjb25zdCBEYXRhVmVjdG9yJiBjb21tZW50
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQ29tbWVudCk7Ci0gICAg
ICAgIHJldHVybiBtX2RhdGE7Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IERpc3Rpbmd1aXNoIGJl
dHdlZW4gYSBtaXNzaW5nIHB1YmxpYyBpZGVudGlmZXIgYW5kIGFuIGVtcHR5IG9uZS4KLSAgICBj
b25zdCBXVEY6OlZlY3RvcjxVQ2hhcj4mIHB1YmxpY0lkZW50aWZpZXIoKSBjb25zdAotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBET0NUWVBFKTsKLSAgICAgICAgcmV0dXJuIG1fZG9j
dHlwZURhdGEtPm1fcHVibGljSWRlbnRpZmllcjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogRGlz
dGluZ3Vpc2ggYmV0d2VlbiBhIG1pc3Npbmcgc3lzdGVtIGlkZW50aWZlciBhbmQgYW4gZW1wdHkg
b25lLgotICAgIGNvbnN0IFdURjo6VmVjdG9yPFVDaGFyPiYgc3lzdGVtSWRlbnRpZmllcigpIGNv
bnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IERPQ1RZUEUpOwotICAgICAgICBy
ZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyOwotICAgIH0KLQotICAgIHZv
aWQgc2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBET0NUWVBFKTsKLSAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9oYXNQdWJs
aWNJZGVudGlmaWVyID0gdHJ1ZTsKLSAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVu
dGlmaWVyLmNsZWFyKCk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTeXN0ZW1JZGVudGlmaWVyVG9F
bXB0eVN0cmluZygpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IERPQ1RZUEUpOwot
ICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2hhc1N5c3RlbUlkZW50aWZpZXIgPSB0cnVlOwotICAg
ICAgICBtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXIuY2xlYXIoKTsKKyAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhU
TUxUb2tlblR5cGVzOjpFbmRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBF
KTsKKyAgICAgICAgcmV0dXJuIGdldE5hbWUoKTsKICAgICB9CiAKICAgICBib29sIGZvcmNlUXVp
cmtzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOwogICAgICAg
ICByZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9mb3JjZVF1aXJrczsKICAgICB9CiAKICAgICB2b2lk
IHNldEZvcmNlUXVpcmtzKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQ
RSk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOwog
ICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2ZvcmNlUXVpcmtzID0gdHJ1ZTsKICAgICB9CiAKLSAg
ICB2b2lkIGFwcGVuZFRvUHVibGljSWRlbnRpZmllcihVQ2hhciBjaGFyYWN0ZXIpCi0gICAgewot
ICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBET0NU
WVBFKTsKLSAgICAgICAgQVNTRVJUKG1fZG9jdHlwZURhdGEtPm1faGFzUHVibGljSWRlbnRpZmll
cik7Ci0gICAgICAgIG1fZG9jdHlwZURhdGEtPm1fcHVibGljSWRlbnRpZmllci5hcHBlbmQoY2hh
cmFjdGVyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGVuZFRvU3lzdGVtSWRlbnRpZmllcihVQ2hh
ciBjaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKLSAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBET0NUWVBFKTsKLSAgICAgICAgQVNTRVJUKG1fZG9jdHlwZURhdGEt
Pm1faGFzU3lzdGVtSWRlbnRpZmllcik7Ci0gICAgICAgIG1fZG9jdHlwZURhdGEtPm1fc3lzdGVt
SWRlbnRpZmllci5hcHBlbmQoY2hhcmFjdGVyKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgLy8g
RklYTUU6IEknbSBub3Qgc3VyZSB3aGF0IHRoZSBmaW5hbCByZWxhdGlvbnNoaXAgYmV0d2VlbiBI
VE1MVG9rZW4gYW5kCi0gICAgLy8gQXRvbWljSFRNTFRva2VuIHdpbGwgYmUuICBJJ20gbWFya2lu
ZyB0aGlzIGEgZnJpZW5kIGZvciBub3csIGJ1dCB3ZSdsbAotICAgIC8vIHdhbnQgdG8gZW5kIHVw
IHdpdGggYSBjbGVhbmVyIGludGVyZmFjZSBiZXR3ZWVuIHRoZSB0d28gY2xhc3Nlcy4KLSAgICBm
cmllbmQgY2xhc3MgQXRvbWljSFRNTFRva2VuOwotCi0gICAgY2xhc3MgRG9jdHlwZURhdGEgewot
ICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEb2N0eXBlRGF0YSk7Ci0gICAgcHVibGljOgot
ICAgICAgICBEb2N0eXBlRGF0YSgpCi0gICAgICAgICAgICA6IG1faGFzUHVibGljSWRlbnRpZmll
cihmYWxzZSkKLSAgICAgICAgICAgICwgbV9oYXNTeXN0ZW1JZGVudGlmaWVyKGZhbHNlKQotICAg
ICAgICAgICAgLCBtX2ZvcmNlUXVpcmtzKGZhbHNlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQot
ICAgICAgICBib29sIG1faGFzUHVibGljSWRlbnRpZmllcjsKLSAgICAgICAgYm9vbCBtX2hhc1N5
c3RlbUlkZW50aWZpZXI7Ci0gICAgICAgIGJvb2wgbV9mb3JjZVF1aXJrczsKLSAgICAgICAgV1RG
OjpWZWN0b3I8VUNoYXI+IG1fcHVibGljSWRlbnRpZmllcjsKLSAgICAgICAgV1RGOjpWZWN0b3I8
VUNoYXI+IG1fc3lzdGVtSWRlbnRpZmllcjsKLSAgICB9OwotCi0gICAgVHlwZSBtX3R5cGU7Ci0g
ICAgUmFuZ2UgbV9yYW5nZTsgLy8gQWx3YXlzIHN0YXJ0cyBhdCB6ZXJvLgotICAgIGludCBtX2Jh
c2VPZmZzZXQ7Ci0KLSAgICAvLyAibmFtZSIgZm9yIERPQ1RZUEUsIFN0YXJ0VGFnLCBhbmQgRW5k
VGFnCi0gICAgLy8gImNoYXJhY3RlcnMiIGZvciBDaGFyYWN0ZXIKLSAgICAvLyAiZGF0YSIgZm9y
IENvbW1lbnQKLSAgICBEYXRhVmVjdG9yIG1fZGF0YTsKLQotICAgIC8vIEZvciBET0NUWVBFCi0g
ICAgT3duUHRyPERvY3R5cGVEYXRhPiBtX2RvY3R5cGVEYXRhOwotCi0gICAgLy8gRm9yIFN0YXJ0
VGFnIGFuZCBFbmRUYWcKLSAgICBib29sIG1fc2VsZkNsb3Npbmc7Ci0gICAgQXR0cmlidXRlTGlz
dCBtX2F0dHJpYnV0ZXM7Ci0KLSAgICAvLyBBIHBvaW50ZXIgaW50byBtX2F0dHJpYnV0ZXMgdXNl
ZCBkdXJpbmcgbGV4aW5nLgotICAgIEF0dHJpYnV0ZSogbV9jdXJyZW50QXR0cmlidXRlOwogfTsK
IAogLy8gRklYTUU6IFRoaXMgY2xhc3Mgc2hvdWxkIGV2ZW50dWFsbHkgYmUgbmFtZWQgSFRNTFRv
a2VuIG9uY2Ugd2UgbW92ZSB0aGUKQEAgLTM4OSwzMiArOTksMzQgQEAgcHVibGljOgogICAgICAg
ICA6IG1fdHlwZSh0b2tlbi50eXBlKCkpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fdHlwZSkg
ewotICAgICAgICBjYXNlIEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZDoKKyAgICAgICAgY2FzZSBI
VE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuOjpET0NU
WVBFOgorICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpET0NUWVBFOgogICAgICAgICAgICAg
bV9uYW1lID0gQXRvbWljU3RyaW5nKHRva2VuLm5hbWUoKS5kYXRhKCksIHRva2VuLm5hbWUoKS5z
aXplKCkpOwogICAgICAgICAgICAgbV9kb2N0eXBlRGF0YSA9IHRva2VuLm1fZG9jdHlwZURhdGEu
cmVsZWFzZSgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuOjpF
bmRPZkZpbGU6CisgICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkVuZE9mRmlsZToKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEhUTUxUb2tlbjo6U3RhcnRUYWc6Ci0gICAgICAg
IGNhc2UgSFRNTFRva2VuOjpFbmRUYWc6IHsKKyAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6
U3RhcnRUYWc6CisgICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkVuZFRhZzogewogICAgICAg
ICAgICAgbV9zZWxmQ2xvc2luZyA9IHRva2VuLnNlbGZDbG9zaW5nKCk7CiAgICAgICAgICAgICBt
X25hbWUgPSBBdG9taWNTdHJpbmcodG9rZW4ubmFtZSgpLmRhdGEoKSwgdG9rZW4ubmFtZSgpLnNp
emUoKSk7CiAgICAgICAgICAgICBpbml0aWFsaXplQXR0cmlidXRlcyh0b2tlbi5hdHRyaWJ1dGVz
KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBIVE1MVG9r
ZW46OkNvbW1lbnQ6CisgICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkNvbW1lbnQ6CiAgICAg
ICAgICAgICBtX2RhdGEgPSBTdHJpbmcodG9rZW4uY29tbWVudCgpLmRhdGEoKSwgdG9rZW4uY29t
bWVudCgpLnNpemUoKSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIVE1MVG9r
ZW46OkNoYXJhY3RlcjoKKyAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOgog
ICAgICAgICAgICAgbV9leHRlcm5hbENoYXJhY3RlcnMgPSAmdG9rZW4uY2hhcmFjdGVycygpOwog
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgIH0KIAotICAgIEF0b21pY0hUTUxUb2tlbihIVE1MVG9rZW46OlR5cGUg
dHlwZSwgQXRvbWljU3RyaW5nIG5hbWUsIFBhc3NSZWZQdHI8TmFtZWROb2RlTWFwPiBhdHRyaWJ1
dGVzID0gMCkKKyAgICBBdG9taWNIVE1MVG9rZW4oSFRNTFRva2VuVHlwZXM6OlR5cGUgdHlwZSwg
QXRvbWljU3RyaW5nIG5hbWUsIFBhc3NSZWZQdHI8TmFtZWROb2RlTWFwPiBhdHRyaWJ1dGVzID0g
MCkKICAgICAgICAgOiBtX3R5cGUodHlwZSkKICAgICAgICAgLCBtX25hbWUobmFtZSkKICAgICAg
ICAgLCBtX2F0dHJpYnV0ZXMoYXR0cmlidXRlcykKQEAgLTQyMiw3ICsxMzQsNyBAQCBwdWJsaWM6
CiAgICAgICAgIEFTU0VSVCh1c2VzTmFtZSgpKTsKICAgICB9CiAKLSAgICBIVE1MVG9rZW46OlR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIEhUTUxUb2tlblR5cGVzOjpU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSgpIGNvbnN0CiAgICAgewpAQCAtNDM4LDcgKzE1MCw3IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgc2VsZkNsb3NpbmcoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7
CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1f
dHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKICAgICAgICAgcmV0dXJuIG1fc2VsZkNs
b3Npbmc7CiAgICAgfQogCkBAIC00NjQsNDkgKzE3Niw0OSBAQCBwdWJsaWM6CiAKICAgICBjb25z
dCBIVE1MVG9rZW46OkRhdGFWZWN0b3ImIGNoYXJhY3RlcnMoKSBjb25zdAogICAgIHsKLSAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OkNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3Rlcik7CiAgICAgICAgIHJldHVybiAq
bV9leHRlcm5hbENoYXJhY3RlcnM7CiAgICAgfQogCiAgICAgY29uc3QgU3RyaW5nJiBjb21tZW50
KCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpDb21t
ZW50KTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudCk7
CiAgICAgICAgIHJldHVybiBtX2RhdGE7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IERpc3Rpbmd1
aXNoIGJldHdlZW4gYSBtaXNzaW5nIHB1YmxpYyBpZGVudGlmZXIgYW5kIGFuIGVtcHR5IG9uZS4K
ICAgICBXVEY6OlZlY3RvcjxVQ2hhcj4mIHB1YmxpY0lkZW50aWZpZXIoKSBjb25zdAogICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OkRPQ1RZUEUpOworICAgICAgICBB
U1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFKTsKICAgICAgICAgcmV0dXJu
IG1fZG9jdHlwZURhdGEtPm1fcHVibGljSWRlbnRpZmllcjsKICAgICB9CiAKICAgICAvLyBGSVhN
RTogRGlzdGluZ3Vpc2ggYmV0d2VlbiBhIG1pc3Npbmcgc3lzdGVtIGlkZW50aWZlciBhbmQgYW4g
ZW1wdHkgb25lLgogICAgIFdURjo6VmVjdG9yPFVDaGFyPiYgc3lzdGVtSWRlbnRpZmllcigpIGNv
bnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6RE9DVFlQRSk7
CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOwogICAg
ICAgICByZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyOwogICAgIH0KIAog
ICAgIGJvb2wgZm9yY2VRdWlya3MoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBIVE1MVG9rZW46OkRPQ1RZUEUpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxU
b2tlblR5cGVzOjpET0NUWVBFKTsKICAgICAgICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1fZm9y
Y2VRdWlya3M7CiAgICAgfQogCiBwcml2YXRlOgotICAgIEhUTUxUb2tlbjo6VHlwZSBtX3R5cGU7
CisgICAgSFRNTFRva2VuVHlwZXM6OlR5cGUgbV90eXBlOwogCiAgICAgdm9pZCBpbml0aWFsaXpl
QXR0cmlidXRlcyhjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZUxpc3QmIGF0dHJpYnV0ZXMpOwog
ICAgIAogICAgIGJvb2wgdXNlc05hbWUoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
dHlwZSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW46OkVuZFRh
ZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuOjpET0NUWVBFOworICAgICAgICByZXR1cm4gbV90eXBl
ID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6
OkVuZFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEU7CiAgICAgfQogCiAg
ICAgYm9vbCB1c2VzQXR0cmlidXRlcygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV90
eXBlID09IEhUTUxUb2tlbjo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlbjo6RW5kVGFn
OworICAgICAgICByZXR1cm4gbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBt
X3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZzsKICAgICB9CiAKICAgICAvLyAibmFtZSIg
Zm9yIERPQ1RZUEUsIFN0YXJ0VGFnLCBhbmQgRW5kVGFnCkBAIC01MjYsNyArMjM4LDcgQEAgcHJp
dmF0ZToKICAgICBjb25zdCBIVE1MVG9rZW46OkRhdGFWZWN0b3IqIG1fZXh0ZXJuYWxDaGFyYWN0
ZXJzOwogCiAgICAgLy8gRm9yIERPQ1RZUEUKLSAgICBPd25QdHI8SFRNTFRva2VuOjpEb2N0eXBl
RGF0YT4gbV9kb2N0eXBlRGF0YTsKKyAgICBPd25QdHI8SFRNTFRva2VuVHlwZXM6OkRvY3R5cGVE
YXRhPiBtX2RvY3R5cGVEYXRhOwogCiAgICAgLy8gRm9yIFN0YXJ0VGFnIGFuZCBFbmRUYWcKICAg
ICBib29sIG1fc2VsZkNsb3Npbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVG9rZW5pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxU
b2tlbml6ZXIuY3BwCmluZGV4IDMwNWZjYTI2MDM5ZWRiNTA3ODRiYjUzNzRlNzczYmQ4Y2E4YTY5
ODUuLjZkNTdlZWFlMWQ4OTBkZGQzMWYzZmMzNzNhNGY1MDg3OTEyNmNiNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuY3BwCkBAIC0xODcsOCArMTg3LDgg
QEAgaW5saW5lIGJvb2wgSFRNTFRva2VuaXplcjo6cHJvY2Vzc0VudGl0eShTZWdtZW50ZWRTdHJp
bmcmIHNvdXJjZSkKIAogaW5saW5lIHZvaWQgSFRNTFRva2VuaXplcjo6c2F2ZUVuZFRhZ05hbWVJ
Zk5lZWRlZCgpCiB7Ci0gICAgQVNTRVJUKG1fdG9rZW4tPnR5cGUoKSAhPSBIVE1MVG9rZW46OlVu
aW5pdGlhbGl6ZWQpOwotICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFy
dFRhZykKKyAgICBBU1NFUlQobV90b2tlbi0+dHlwZSgpICE9IEhUTUxUb2tlblR5cGVzOjpVbmlu
aXRpYWxpemVkKTsKKyAgICBpZiAobV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpT
dGFydFRhZykKICAgICAgICAgbV9hcHByb3ByaWF0ZUVuZFRhZ05hbWUgPSBtX3Rva2VuLT5uYW1l
KCk7CiB9CiAKQEAgLTIyNyw5ICsyMjcsOSBAQCBib29sIEhUTUxUb2tlbml6ZXI6OmVtaXRFbmRP
ZkZpbGUoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiAKIGJvb2wgSFRNTFRva2VuaXplcjo6Zmx1
c2hCdWZmZXJlZEVuZFRhZyhTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKIHsKLSAgICBBU1NFUlQo
bV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyIHx8IG1fdG9rZW4tPnR5cGUo
KSA9PSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQpOworICAgIEFTU0VSVChtX3Rva2VuLT50eXBl
KCkgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlciB8fCBtX3Rva2VuLT50eXBlKCkgPT0gSFRN
TFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQpOwogICAgIHNvdXJjZS5hZHZhbmNlKG1fbGluZU51
bWJlcik7Ci0gICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3RlcikK
KyAgICBpZiAobV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIG1fdG9rZW4tPmJlZ2luRW5kVGFnKG1fYnVmZmVyZWRF
bmRUYWdOYW1lKTsKICAgICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigpOwpAQCAtMjU5LDcg
KzI1OSw3IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYg
c291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogewogICAgIC8vIElmIHdlIGhhdmUgYSB0b2tlbiBp
biBwcm9ncmVzcywgdGhlbiB3ZSdyZSBzdXBwb3NlZCB0byBiZSBjYWxsZWQgYmFjawogICAgIC8v
IHdpdGggdGhlIHNhbWUgdG9rZW4gc28gd2UgY2FuIGZpbmlzaCBpdC4KLSAgICBBU1NFUlQoIW1f
dG9rZW4gfHwgbV90b2tlbiA9PSAmdG9rZW4gfHwgdG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6
VW5pbml0aWFsaXplZCk7CisgICAgQVNTRVJUKCFtX3Rva2VuIHx8IG1fdG9rZW4gPT0gJnRva2Vu
IHx8IHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7CiAgICAg
bV90b2tlbiA9ICZ0b2tlbjsKIAogICAgIGlmICghbV9idWZmZXJlZEVuZFRhZ05hbWUuaXNFbXB0
eSgpICYmICFpc0VuZFRhZ0J1ZmZlcmluZ1N0YXRlKG1fc3RhdGUpKSB7CkBAIC0zMDcsNyArMzA3
LDcgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3Vy
Y2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIGlmIChjYyA9PSAnJicpCiAgICAgICAgICAg
ICBBRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5jZUluRGF0YVN0YXRlKTsKICAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gJzwnKSB7Ci0gICAgICAgICAgICBpZiAobV90b2tlbi0+dHlwZSgpID09IEhU
TUxUb2tlbjo6Q2hhcmFjdGVyKSB7CisgICAgICAgICAgICBpZiAobV90b2tlbi0+dHlwZSgpID09
IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpIHsKICAgICAgICAgICAgICAgICAvLyBXZSBoYXZl
IGEgYnVuY2ggb2YgY2hhcmFjdGVyIHRva2VucyBxdWV1ZWQgdXAgdGhhdCB3ZQogICAgICAgICAg
ICAgICAgIC8vIGFyZSBlbWl0dGluZyBsYXppbHkgaGVyZS4KICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTE2OTIsNyArMTY5Miw3IEBAIGlubGluZSB2b2lkIEhUTUxUb2tlbml6ZXI6
OnBhcnNlRXJyb3IoKQogCiBpbmxpbmUgYm9vbCBIVE1MVG9rZW5pemVyOjpoYXZlQnVmZmVyZWRD
aGFyYWN0ZXJUb2tlbigpCiB7Ci0gICAgcmV0dXJuIG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9r
ZW46OkNoYXJhY3RlcjsKKyAgICByZXR1cm4gbV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5
cGVzOjpDaGFyYWN0ZXI7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IDgyMzAxNDFiMjE2MTJiMjIzZTI1MzA1ZDE3YzkzZGVm
MjRjZmQ0NjguLmI3ZWJjZTc5NTQyZTVjZTQ1NWFlNzJkNTE5NmU0NDQ0YjBkNjFhNzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtNDQ2
LDEzICs0NDYsMTMgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9r
ZW4oSFRNTFRva2VuJiByYXdUb2tlbikKICAgICAvLyBGSVhNRTogVG9wIGNsZWFyaW5nIHRoZSBy
YXdUb2tlbiBvbmNlIHdlIHN0YXJ0IHJ1bm5pbmcgdGhlIHBhcnNlciBvZmYKICAgICAvLyB0aGUg
bWFpbiB0aHJlYWQgb3Igb25jZSB3ZSBzdG9wIGFsbG93aW5nIHN5bmNocm9ub3VzIEphdmFTY3Jp
cHQKICAgICAvLyBleGVjdXRpb24gZnJvbSBwYXJzZU1hcHBlZEF0dHJpYnV0ZS4KLSAgICBpZiAo
cmF3VG9rZW4udHlwZSgpICE9IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKQorICAgIGlmIChyYXdUb2tl
bi50eXBlKCkgIT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcikKICAgICAgICAgcmF3VG9rZW4u
Y2xlYXIoKTsKIAogICAgIGNvbnN0cnVjdFRyZWVGcm9tQXRvbWljVG9rZW4odG9rZW4pOwogCiAg
ICAgaWYgKCFyYXdUb2tlbi5pc1VuaW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBBU1NFUlQocmF3
VG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKTsKKyAgICAgICAgQVNTRVJUKHJh
d1Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKTsKICAgICAgICAgcmF3
VG9rZW4uY2xlYXIoKTsKICAgICB9CiB9CkBAIC00NzEsMjUgKzQ3MSwyNSBAQCB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZyb21BdG9taWNUb2tlbihBdG9taWNIVE1MVG9rZW4m
IHRva2VuKQogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbihBdG9taWNIVE1MVG9r
ZW4mIHRva2VuKQogewogICAgIHN3aXRjaCAodG9rZW4udHlwZSgpKSB7Ci0gICAgY2FzZSBIVE1M
VG9rZW46OlVuaW5pdGlhbGl6ZWQ6CisgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFs
aXplZDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgSFRNTFRva2VuOjpET0NUWVBFOgorICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkRPQ1RZ
UEU6CiAgICAgICAgIHByb2Nlc3NEb2N0eXBlVG9rZW4odG9rZW4pOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIEhUTUxUb2tlbjo6U3RhcnRUYWc6CisgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6
U3RhcnRUYWc6CiAgICAgICAgIHByb2Nlc3NTdGFydFRhZyh0b2tlbik7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSFRNTFRva2VuOjpFbmRUYWc6CisgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6
RW5kVGFnOgogICAgICAgICBwcm9jZXNzRW5kVGFnKHRva2VuKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBIVE1MVG9rZW46OkNvbW1lbnQ6CisgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6Q29t
bWVudDoKICAgICAgICAgcHJvY2Vzc0NvbW1lbnQodG9rZW4pOwogICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjoKKyAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpD
aGFyYWN0ZXI6CiAgICAgICAgIHByb2Nlc3NDaGFyYWN0ZXIodG9rZW4pOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIEhUTUxUb2tlbjo6RW5kT2ZGaWxlOgorICAgIGNhc2UgSFRNTFRva2VuVHlw
ZXM6OkVuZE9mRmlsZToKICAgICAgICAgcHJvY2Vzc0VuZE9mRmlsZSh0b2tlbik7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KQEAgLTQ5Nyw3ICs0OTcsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc1Rva2VuKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzRG9jdHlwZVRva2VuKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAg
QVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkRPQ1RZUEUpOworICAgIEFTU0VSVCh0
b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOwogICAgIGlmIChtX2luc2Vy
dGlvbk1vZGUgPT0gSW5pdGlhbE1vZGUpIHsKICAgICAgICAgbV90cmVlLmluc2VydERvY3R5cGUo
dG9rZW4pOwogICAgICAgICBzZXRJbnNlcnRpb25Nb2RlKEJlZm9yZUhUTUxNb2RlKTsKQEAgLTUx
NCwxNCArNTE0LDE0IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRG9jdHlwZVRva2Vu
KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zh
a2VTdGFydFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBQYXNzUmVmUHRyPE5hbWVk
Tm9kZU1hcD4gYXR0cmlidXRlcykKIHsKICAgICAvLyBGSVhNRTogV2UnbGwgbmVlZCBhIGZhbmNp
ZXIgY29udmVyc2lvbiB0aGFuIGp1c3QgImxvY2FsTmFtZSIgZm9yIFNWRy9NYXRoTUwgdGFncy4K
LSAgICBBdG9taWNIVE1MVG9rZW4gZmFrZVRva2VuKEhUTUxUb2tlbjo6U3RhcnRUYWcsIHRhZ05h
bWUubG9jYWxOYW1lKCksIGF0dHJpYnV0ZXMpOworICAgIEF0b21pY0hUTUxUb2tlbiBmYWtlVG9r
ZW4oSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnLCB0YWdOYW1lLmxvY2FsTmFtZSgpLCBhdHRyaWJ1
dGVzKTsKICAgICBwcm9jZXNzU3RhcnRUYWcoZmFrZVRva2VuKTsKIH0KIAogdm9pZCBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NGYWtlRW5kVGFnKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUp
CiB7CiAgICAgLy8gRklYTUU6IFdlJ2xsIG5lZWQgYSBmYW5jaWVyIGNvbnZlcnNpb24gdGhhbiBq
dXN0ICJsb2NhbE5hbWUiIGZvciBTVkcvTWF0aE1MIHRhZ3MuCi0gICAgQXRvbWljSFRNTFRva2Vu
IGZha2VUb2tlbihIVE1MVG9rZW46OkVuZFRhZywgdGFnTmFtZS5sb2NhbE5hbWUoKSk7CisgICAg
QXRvbWljSFRNTFRva2VuIGZha2VUb2tlbihIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCB0YWdOYW1l
LmxvY2FsTmFtZSgpKTsKICAgICBwcm9jZXNzRW5kVGFnKGZha2VUb2tlbik7CiB9CiAKQEAgLTUz
Niw3ICs1MzYsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VQRW5kVGFnSWZQ
SW5CdXR0b25TY29wZSgpCiB7CiAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluQnV0
dG9uU2NvcGUocFRhZy5sb2NhbE5hbWUoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBBdG9taWNI
VE1MVG9rZW4gZW5kUChIVE1MVG9rZW46OkVuZFRhZywgcFRhZy5sb2NhbE5hbWUoKSk7CisgICAg
QXRvbWljSFRNTFRva2VuIGVuZFAoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgcFRhZy5sb2NhbE5h
bWUoKSk7CiAgICAgcHJvY2Vzc0VuZFRhZyhlbmRQKTsKIH0KIApAQCAtNTU4LDcgKzU1OCw3IEBA
IFBhc3NSZWZQdHI8TmFtZWROb2RlTWFwPiBIVE1MVHJlZUJ1aWxkZXI6OmF0dHJpYnV0ZXNGb3JJ
c2luZGV4SW5wdXQoQXRvbWljSFRNTFRvCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
SXNpbmRleFN0YXJ0VGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAg
QVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQo
dG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKHRv
a2VuLm5hbWUoKSA9PSBpc2luZGV4VGFnKTsKICAgICBwYXJzZUVycm9yKHRva2VuKTsKICAgICBp
ZiAobV90cmVlLmZvcm0oKSkKQEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lkIGFkanVzdEZvcmVpZ25B
dHRyaWJ1dGVzKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzU3RhcnRUYWdGb3JJbkJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAg
ICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VS
VCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBpZiAodG9r
ZW4ubmFtZSgpID09IGh0bWxUYWcpIHsKICAgICAgICAgbV90cmVlLmluc2VydEhUTUxIdG1sU3Rh
cnRUYWdJbkJvZHkodG9rZW4pOwogICAgICAgICByZXR1cm47CkBAIC05ODEsNyArOTgxLDcgQEAg
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluQm9keShBdG9taWNIVE1M
VG9rZW4mIHRva2VuKQogICAgIH0KICAgICBpZiAodG9rZW4ubmFtZSgpID09IG9wdGdyb3VwVGFn
IHx8IHRva2VuLm5hbWUoKSA9PSBvcHRpb25UYWcpIHsKICAgICAgICAgaWYgKG1fdHJlZS5vcGVu
RWxlbWVudHMoKS0+aW5TY29wZShvcHRpb25UYWcubG9jYWxOYW1lKCkpKSB7Ci0gICAgICAgICAg
ICBBdG9taWNIVE1MVG9rZW4gZW5kT3B0aW9uKEhUTUxUb2tlbjo6RW5kVGFnLCBvcHRpb25UYWcu
bG9jYWxOYW1lKCkpOworICAgICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZE9wdGlvbihIVE1M
VG9rZW5UeXBlczo6RW5kVGFnLCBvcHRpb25UYWcubG9jYWxOYW1lKCkpOwogICAgICAgICAgICAg
cHJvY2Vzc0VuZFRhZyhlbmRPcHRpb24pOwogICAgICAgICB9CiAgICAgICAgIG1fdHJlZS5yZWNv
bnN0cnVjdFRoZUFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpOwpAQCAtMTA1OCw3ICsxMDU4LDcg
QEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmNsb3NlVGhlQ2VsbCgpCiAKIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJblRhYmxlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4p
CiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAg
ICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAg
aWYgKHRva2VuLm5hbWUoKSA9PSBjYXB0aW9uVGFnKSB7CiAgICAgICAgIG1fdHJlZS5vcGVuRWxl
bWVudHMoKS0+cG9wVW50aWxUYWJsZVNjb3BlTWFya2VyKCk7CiAgICAgICAgIG1fdHJlZS5hY3Rp
dmVGb3JtYXR0aW5nRWxlbWVudHMoKS0+YXBwZW5kTWFya2VyKCk7CkBAIC0xMTMwLDcgKzExMzAs
NyBAQCBuYW1lc3BhY2UgewogCiBib29sIHNob3VsZFByb2Nlc3NGb3JlaWduQ29udGVudFVzaW5n
SW5Cb2R5SW5zZXJ0aW9uTW9kZShBdG9taWNIVE1MVG9rZW4mIHRva2VuLCBDb250YWluZXJOb2Rl
KiBjdXJyZW50RWxlbWVudCkKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tl
bjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6
OlN0YXJ0VGFnKTsKICAgICBpZiAoY3VycmVudEVsZW1lbnQtPmhhc1RhZ05hbWUoTWF0aE1MTmFt
ZXM6Om1pVGFnKQogICAgICAgICB8fCBjdXJyZW50RWxlbWVudC0+aGFzVGFnTmFtZShNYXRoTUxO
YW1lczo6bW9UYWcpCiAgICAgICAgIHx8IGN1cnJlbnRFbGVtZW50LT5oYXNUYWdOYW1lKE1hdGhN
TE5hbWVzOjptblRhZykKQEAgLTExNTIsNyArMTE1Miw3IEBAIGJvb2wgc2hvdWxkUHJvY2Vzc0Zv
cmVpZ25Db250ZW50VXNpbmdJbkJvZHlJbnNlcnRpb25Nb2RlKEF0b21pY0hUTUxUb2tlbiYgdG9r
ZW4sCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRv
a2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3Rh
cnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0
VGFnKTsKICAgICBzd2l0Y2ggKGluc2VydGlvbk1vZGUoKSkgewogICAgIGNhc2UgSW5pdGlhbE1v
ZGU6CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5pdGlhbE1vZGUpOwpAQCAt
MTQwOSw3ICsxNDA5LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhB
dG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgfHwgdG9rZW4ubmFtZSgpID09IHRy
VGFnCiAgICAgICAgICAgICB8fCBpc1RhYmxlQ2VsbENvbnRleHRUYWcodG9rZW4ubmFtZSgpKSkg
ewogICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7Ci0gICAgICAgICAgICBBdG9taWNIVE1M
VG9rZW4gZW5kU2VsZWN0KEhUTUxUb2tlbjo6RW5kVGFnLCBzZWxlY3RUYWcubG9jYWxOYW1lKCkp
OworICAgICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZFNlbGVjdChIVE1MVG9rZW5UeXBlczo6
RW5kVGFnLCBzZWxlY3RUYWcubG9jYWxOYW1lKCkpOwogICAgICAgICAgICAgcHJvY2Vzc0VuZFRh
ZyhlbmRTZWxlY3QpOwogICAgICAgICAgICAgcmVwcm9jZXNzU3RhcnRUYWcodG9rZW4pOwogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTQyMyw3ICsxNDIzLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICB9CiAg
ICAgICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gb3B0aW9uVGFnKSB7CiAgICAgICAgICAgICBpZiAo
bV90cmVlLmN1cnJlbnROb2RlKCktPmhhc1RhZ05hbWUob3B0aW9uVGFnKSkgewotICAgICAgICAg
ICAgICAgIEF0b21pY0hUTUxUb2tlbiBlbmRPcHRpb24oSFRNTFRva2VuOjpFbmRUYWcsIG9wdGlv
blRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZE9w
dGlvbihIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCBvcHRpb25UYWcubG9jYWxOYW1lKCkpOwogICAg
ICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcoZW5kT3B0aW9uKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tlbik7CkBAIC0xNDMxLDExICsx
NDMxLDExIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRN
TFRva2VuJiB0b2tlbikKICAgICAgICAgfQogICAgICAgICBpZiAodG9rZW4ubmFtZSgpID09IG9w
dGdyb3VwVGFnKSB7CiAgICAgICAgICAgICBpZiAobV90cmVlLmN1cnJlbnROb2RlKCktPmhhc1Rh
Z05hbWUob3B0aW9uVGFnKSkgewotICAgICAgICAgICAgICAgIEF0b21pY0hUTUxUb2tlbiBlbmRP
cHRpb24oSFRNTFRva2VuOjpFbmRUYWcsIG9wdGlvblRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAg
ICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZE9wdGlvbihIVE1MVG9rZW5UeXBlczo6RW5kVGFn
LCBvcHRpb25UYWcubG9jYWxOYW1lKCkpOwogICAgICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWco
ZW5kT3B0aW9uKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChtX3RyZWUuY3VycmVu
dE5vZGUoKS0+aGFzVGFnTmFtZShvcHRncm91cFRhZykpIHsKLSAgICAgICAgICAgICAgICBBdG9t
aWNIVE1MVG9rZW4gZW5kT3B0Z3JvdXAoSFRNTFRva2VuOjpFbmRUYWcsIG9wdGdyb3VwVGFnLmxv
Y2FsTmFtZSgpKTsKKyAgICAgICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kT3B0Z3JvdXAo
SFRNTFRva2VuVHlwZXM6OkVuZFRhZywgb3B0Z3JvdXBUYWcubG9jYWxOYW1lKCkpOwogICAgICAg
ICAgICAgICAgIHByb2Nlc3NFbmRUYWcoZW5kT3B0Z3JvdXApOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgbV90cmVlLmluc2VydEhUTUxFbGVtZW50KHRva2VuKTsKQEAgLTE0NDMsNyArMTQ0
Myw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRv
a2VuJiB0b2tlbikKICAgICAgICAgfQogICAgICAgICBpZiAodG9rZW4ubmFtZSgpID09IHNlbGVj
dFRhZykgewogICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7Ci0gICAgICAgICAgICBBdG9t
aWNIVE1MVG9rZW4gZW5kU2VsZWN0KEhUTUxUb2tlbjo6RW5kVGFnLCBzZWxlY3RUYWcubG9jYWxO
YW1lKCkpOworICAgICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZFNlbGVjdChIVE1MVG9rZW5U
eXBlczo6RW5kVGFnLCBzZWxlY3RUYWcubG9jYWxOYW1lKCkpOwogICAgICAgICAgICAgcHJvY2Vz
c0VuZFRhZyhlbmRTZWxlY3QpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0x
NDU1LDcgKzE0NTUsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0
b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0Zy
YWdtZW50KCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIEF0b21pY0hUTUxUb2tlbiBlbmRTZWxlY3QoSFRNTFRva2VuOjpFbmRUYWcsIHNlbGVj
dFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kU2VsZWN0
KEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIHNlbGVjdFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAg
ICAgICBwcm9jZXNzRW5kVGFnKGVuZFNlbGVjdCk7CiAgICAgICAgICAgICByZXByb2Nlc3NTdGFy
dFRhZyh0b2tlbik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTQwLDcgKzE1NDAsNyBAQCB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9r
ZW4pCiAKIGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQm9keUVuZFRhZ0ZvckluQm9keShB
dG9taWNIVE1MVG9rZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRN
TFRva2VuOjpFbmRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlw
ZXM6OkVuZFRhZyk7CiAgICAgQVNTRVJUKHRva2VuLm5hbWUoKSA9PSBib2R5VGFnKTsKICAgICBp
ZiAoIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5TY29wZShib2R5VGFnLmxvY2FsTmFtZSgpKSkg
ewogICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKQEAgLTE1NTMsNyArMTU1Myw3IEBAIGJvb2wg
SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQm9keUVuZFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9r
ZW4mIHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0FueU90aGVyRW5kVGFn
Rm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBI
VE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKICAgICBIVE1MRWxlbWVudFN0YWNrOjpFbGVtZW50UmVj
b3JkKiByZWNvcmQgPSBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnRvcFJlY29yZCgpOwogICAgIHdo
aWxlICgxKSB7CiAgICAgICAgIENvbnRhaW5lck5vZGUqIG5vZGUgPSByZWNvcmQtPm5vZGUoKTsK
QEAgLTE3NzAsNyArMTc3MCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpyZXNldEluc2VydGlv
bk1vZGVBcHByb3ByaWF0ZWx5KCkKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRU
YWdGb3JJblRhYmxlQm9keShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0
b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBl
KCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CiAgICAgaWYgKGlzVGFibGVCb2R5Q29udGV4
dFRhZyh0b2tlbi5uYW1lKCkpKSB7CiAgICAgICAgIGlmICghbV90cmVlLm9wZW5FbGVtZW50cygp
LT5pblRhYmxlU2NvcGUodG9rZW4ubmFtZSgpKSkgewogICAgICAgICAgICAgcGFyc2VFcnJvcih0
b2tlbik7CkBAIC0xODA3LDcgKzE4MDcsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c0VuZFRhZ0ZvckluVGFibGVCb2R5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAKIHZvaWQgSFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5Sb3coQXRvbWljSFRNTFRva2VuJiB0b2tl
bikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKKyAg
ICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOwogICAgIGlm
ICh0b2tlbi5uYW1lKCkgPT0gdHJUYWcpIHsKICAgICAgICAgcHJvY2Vzc1RyRW5kVGFnRm9ySW5S
b3coKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTg0Myw3ICsxODQzLDcgQEAgdm9pZCBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblJvdyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQog
CiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluQ2VsbChBdG9taWNIVE1M
VG9rZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpF
bmRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRh
Zyk7CiAgICAgaWYgKGlzVGFibGVDZWxsQ29udGV4dFRhZyh0b2tlbi5uYW1lKCkpKSB7CiAgICAg
ICAgIGlmICghbV90cmVlLm9wZW5FbGVtZW50cygpLT5pblRhYmxlU2NvcGUodG9rZW4ubmFtZSgp
KSkgewogICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CkBAIC0xODgwLDEzICsxODgwLDEz
IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5DZWxsKEF0b21pY0hU
TUxUb2tlbiYgdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9y
SW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUo
KSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1M
VG9rZW5UeXBlczo6RW5kVGFnKTsKICAgICBpZiAodG9rZW4ubmFtZSgpID09IGJvZHlUYWcpIHsK
ICAgICAgICAgcHJvY2Vzc0JvZHlFbmRUYWdGb3JJbkJvZHkodG9rZW4pOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gaHRtbFRhZykgewotICAgICAgICBB
dG9taWNIVE1MVG9rZW4gZW5kQm9keShIVE1MVG9rZW46OkVuZFRhZywgYm9keVRhZy5sb2NhbE5h
bWUoKSk7CisgICAgICAgIEF0b21pY0hUTUxUb2tlbiBlbmRCb2R5KEhUTUxUb2tlblR5cGVzOjpF
bmRUYWcsIGJvZHlUYWcubG9jYWxOYW1lKCkpOwogICAgICAgICBpZiAocHJvY2Vzc0JvZHlFbmRU
YWdGb3JJbkJvZHkoZW5kQm9keSkpCiAgICAgICAgICAgICByZXByb2Nlc3NFbmRUYWcodG9rZW4p
OwogICAgICAgICByZXR1cm47CkBAIC0yMDUzLDcgKzIwNTMsNyBAQCBib29sIEhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc1RhYmxlRW5kVGFnRm9ySW5UYWJsZSgpCiAKIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5UYWJsZShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewot
ICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpOworICAgIEFTU0VS
VCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CiAgICAgaWYgKHRva2Vu
Lm5hbWUoKSA9PSB0YWJsZVRhZykgewogICAgICAgICBwcm9jZXNzVGFibGVFbmRUYWdGb3JJblRh
YmxlKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTIwNzQsNyArMjA3NCw3IEBAIHZvaWQgSFRNTFRy
ZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5UYWJsZShBdG9taWNIVE1MVG9rZW4mIHRva2Vu
KQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4m
IHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcp
OworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CiAg
ICAgc3dpdGNoIChpbnNlcnRpb25Nb2RlKCkpIHsKICAgICBjYXNlIEluaXRpYWxNb2RlOgogICAg
ICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluaXRpYWxNb2RlKTsKQEAgLTIyNzAsNyAr
MjI3MCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKEF0b21pY0hUTUxU
b2tlbiYgdG9rZW4pCiAgICAgICAgICAgICB8fCBpc1RhYmxlQ2VsbENvbnRleHRUYWcodG9rZW4u
bmFtZSgpKSkgewogICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CiAgICAgICAgICAgICBp
ZiAobV90cmVlLm9wZW5FbGVtZW50cygpLT5pblRhYmxlU2NvcGUodG9rZW4ubmFtZSgpKSkgewot
ICAgICAgICAgICAgICAgIEF0b21pY0hUTUxUb2tlbiBlbmRTZWxlY3QoSFRNTFRva2VuOjpFbmRU
YWcsIHNlbGVjdFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgICAgICAgICAgQXRvbWljSFRNTFRv
a2VuIGVuZFNlbGVjdChIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCBzZWxlY3RUYWcubG9jYWxOYW1l
KCkpOwogICAgICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcoZW5kU2VsZWN0KTsKICAgICAgICAg
ICAgICAgICByZXByb2Nlc3NFbmRUYWcodG9rZW4pOwogICAgICAgICAgICAgfQpAQCAtMjQwMiw3
ICsyNDAyLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0Rm9yZWlnbkluc2VydGlvbk1v
ZGUoKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NvbW1lbnQoQXRvbWljSFRNTFRv
a2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6Q29t
bWVudCk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q29tbWVu
dCk7CiAgICAgaWYgKG1faW5zZXJ0aW9uTW9kZSA9PSBJbml0aWFsTW9kZQogICAgICAgICB8fCBt
X2luc2VydGlvbk1vZGUgPT0gQmVmb3JlSFRNTE1vZGUKICAgICAgICAgfHwgbV9pbnNlcnRpb25N
b2RlID09IEFmdGVyQWZ0ZXJCb2R5TW9kZQpAQCAtMjQyNCw3ICsyNDI0LDcgQEAgdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NDb21tZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAKIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyKEF0b21pY0hUTUxUb2tlbiYgdG9r
ZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3Rlcik7
CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKTsK
ICAgICBFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyIGJ1ZmZlcih0b2tlbik7CiAgICAgcHJv
Y2Vzc0NoYXJhY3RlckJ1ZmZlcihidWZmZXIpOwogfQpAQCAtMjU4Myw3ICsyNTgzLDcgQEAgUmVw
cm9jZXNzQnVmZmVyOgogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZShB
dG9taWNIVE1MVG9rZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRN
TFRva2VuOjpFbmRPZkZpbGUpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
VHlwZXM6OkVuZE9mRmlsZSk7CiAgICAgc3dpdGNoIChpbnNlcnRpb25Nb2RlKCkpIHsKICAgICBj
YXNlIEluaXRpYWxNb2RlOgogICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluaXRp
YWxNb2RlKTsKQEAgLTI2ODEsNyArMjY4MSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZh
dWx0Rm9ySW5pdGlhbCgpCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9yQmVmb3Jl
SFRNTCgpCiB7Ci0gICAgQXRvbWljSFRNTFRva2VuIHN0YXJ0SFRNTChIVE1MVG9rZW46OlN0YXJ0
VGFnLCBodG1sVGFnLmxvY2FsTmFtZSgpKTsKKyAgICBBdG9taWNIVE1MVG9rZW4gc3RhcnRIVE1M
KEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZywgaHRtbFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgbV90
cmVlLmluc2VydEhUTUxIdG1sU3RhcnRUYWdCZWZvcmVIVE1MKHN0YXJ0SFRNTCk7CiAgICAgc2V0
SW5zZXJ0aW9uTW9kZShCZWZvcmVIZWFkTW9kZSk7CiAgICAgcHJlcGFyZVRvUmVwcm9jZXNzVG9r
ZW4oKTsKQEAgLTI2ODksMjggKzI2ODksMjggQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1
bHRGb3JCZWZvcmVIVE1MKCkKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JCZWZv
cmVIZWFkKCkKIHsKLSAgICBBdG9taWNIVE1MVG9rZW4gc3RhcnRIZWFkKEhUTUxUb2tlbjo6U3Rh
cnRUYWcsIGhlYWRUYWcubG9jYWxOYW1lKCkpOworICAgIEF0b21pY0hUTUxUb2tlbiBzdGFydEhl
YWQoSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnLCBoZWFkVGFnLmxvY2FsTmFtZSgpKTsKICAgICBw
cm9jZXNzU3RhcnRUYWcoc3RhcnRIZWFkKTsKICAgICBwcmVwYXJlVG9SZXByb2Nlc3NUb2tlbigp
OwogfQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckluSGVhZCgpCiB7Ci0gICAg
QXRvbWljSFRNTFRva2VuIGVuZEhlYWQoSFRNTFRva2VuOjpFbmRUYWcsIGhlYWRUYWcubG9jYWxO
YW1lKCkpOworICAgIEF0b21pY0hUTUxUb2tlbiBlbmRIZWFkKEhUTUxUb2tlblR5cGVzOjpFbmRU
YWcsIGhlYWRUYWcubG9jYWxOYW1lKCkpOwogICAgIHByb2Nlc3NFbmRUYWcoZW5kSGVhZCk7CiAg
ICAgcHJlcGFyZVRvUmVwcm9jZXNzVG9rZW4oKTsKIH0KIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OmRlZmF1bHRGb3JJbkhlYWROb3NjcmlwdCgpCiB7Ci0gICAgQXRvbWljSFRNTFRva2VuIGVuZE5v
c2NyaXB0KEhUTUxUb2tlbjo6RW5kVGFnLCBub3NjcmlwdFRhZy5sb2NhbE5hbWUoKSk7CisgICAg
QXRvbWljSFRNTFRva2VuIGVuZE5vc2NyaXB0KEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIG5vc2Ny
aXB0VGFnLmxvY2FsTmFtZSgpKTsKICAgICBwcm9jZXNzRW5kVGFnKGVuZE5vc2NyaXB0KTsKICAg
ICBwcmVwYXJlVG9SZXByb2Nlc3NUb2tlbigpOwogfQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
ZGVmYXVsdEZvckFmdGVySGVhZCgpCiB7Ci0gICAgQXRvbWljSFRNTFRva2VuIHN0YXJ0Qm9keShI
VE1MVG9rZW46OlN0YXJ0VGFnLCBib2R5VGFnLmxvY2FsTmFtZSgpKTsKKyAgICBBdG9taWNIVE1M
VG9rZW4gc3RhcnRCb2R5KEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZywgYm9keVRhZy5sb2NhbE5h
bWUoKSk7CiAgICAgcHJvY2Vzc1N0YXJ0VGFnKHN0YXJ0Qm9keSk7CiAgICAgbV9mcmFtZXNldE9r
ID0gdHJ1ZTsKICAgICBwcmVwYXJlVG9SZXByb2Nlc3NUb2tlbigpOwpAQCAtMjczNiw3ICsyNzM2
LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JJblRhYmxlVGV4dCgpCiAKIGJv
b2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkhlYWQoQXRvbWljSFRNTFRv
a2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3Rh
cnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0
VGFnKTsKICAgICBpZiAodG9rZW4ubmFtZSgpID09IGh0bWxUYWcpIHsKICAgICAgICAgbV90cmVl
Lmluc2VydEhUTUxIdG1sU3RhcnRUYWdJbkJvZHkodG9rZW4pOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTI3ODMsNyArMjc4Myw3IEBAIGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3Rh
cnRUYWdGb3JJbkhlYWQoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NHZW5lcmljUkNEQVRBU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tl
bikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwor
ICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAg
ICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnQodG9rZW4pOwogICAgIG1fcGFyc2VyLT50b2tlbml6
ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UkNEQVRBU3RhdGUpOwogICAgIG1fb3JpZ2lu
YWxJbnNlcnRpb25Nb2RlID0gbV9pbnNlcnRpb25Nb2RlOwpAQCAtMjc5Miw3ICsyNzkyLDcgQEAg
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUkNEQVRBU3RhcnRUYWcoQXRvbWlj
SFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmlj
UmF3VGV4dFN0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRv
a2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlw
ZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgbV90cmVlLmluc2VydEhUTUxF
bGVtZW50KHRva2VuKTsKICAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxU
b2tlbml6ZXI6OlJBV1RFWFRTdGF0ZSk7CiAgICAgbV9vcmlnaW5hbEluc2VydGlvbk1vZGUgPSBt
X2luc2VydGlvbk1vZGU7CkBAIC0yODAxLDcgKzI4MDEsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0dlbmVyaWNSYXdUZXh0U3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikK
IAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTY3JpcHRTdGFydFRhZyhBdG9taWNIVE1M
VG9rZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpT
dGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3Rh
cnRUYWcpOwogICAgIG1fdHJlZS5pbnNlcnRTY3JpcHRFbGVtZW50KHRva2VuKTsKICAgICBtX3Bh
cnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlNjcmlwdERhdGFTdGF0
ZSk7CiAgICAgbV9vcmlnaW5hbEluc2VydGlvbk1vZGUgPSBtX2luc2VydGlvbk1vZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAK
aW5kZXggN2NkYmRjNzFjOTkwZTBkZjUyZDA5YTJmYjkxM2ZjMjdjZjQ0NDIzNy4uZTgyZmE5MzAx
NmIwYTRiNmFjNGU4ODJiMWMxMTc2YTM4MDU4YjhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcApAQCAtNzUsNyArNzUsNyBA
QCBTdHJpbmcgSFRNTFZpZXdTb3VyY2VQYXJzZXI6OnNvdXJjZUZvclRva2VuKCkKIHZvaWQgSFRN
TFZpZXdTb3VyY2VQYXJzZXI6OnVwZGF0ZVRva2VuaXplclN0YXRlKCkKIHsKICAgICAvLyBGSVhN
RTogVGhlIHRva2VuaXplciBzaG91bGQgZG8gdGhpcyB3b3JrIGZvciB1cy4KLSAgICBpZiAobV90
b2tlbi50eXBlKCkgIT0gSFRNTFRva2VuOjpTdGFydFRhZykKKyAgICBpZiAobV90b2tlbi50eXBl
KCkgIT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKQogICAgICAgICByZXR1cm47CiAKICAgICBB
dG9taWNTdHJpbmcgdGFnTmFtZShtX3Rva2VuLm5hbWUoKS5kYXRhKCksIG1fdG9rZW4ubmFtZSgp
LnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9j
dW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50
UGFyc2VyLmNwcAppbmRleCBkMDNiNzQ0ZTg3MjExNjQ4YzkyZjUxMzc4YzBiMmI4ZTEzZTgzZWUz
Li42M2I1MTYwMjFhNDI0OWYzNWNiNmRhN2ZlNGFhZjJjMzJmMzhhY2U2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAKQEAgLTYzLDcg
KzYzLDcgQEAgdm9pZCBUZXh0RG9jdW1lbnRQYXJzZXI6Omluc2VydEZha2VQcmVFbGVtZW50KCkK
ICAgICBSZWZQdHI8QXR0cmlidXRlPiBzdHlsZUF0dHJpYnV0ZSA9IEF0dHJpYnV0ZTo6Y3JlYXRl
TWFwcGVkKCJzdHlsZSIsICJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IHdoaXRlLXNwYWNlOiBwcmUt
d3JhcDsiKTsKICAgICBSZWZQdHI8TmFtZWROb2RlTWFwPiBhdHRyaWJ1dGVzID0gTmFtZWROb2Rl
TWFwOjpjcmVhdGUoKTsKICAgICBhdHRyaWJ1dGVzLT5pbnNlcnRBdHRyaWJ1dGUoc3R5bGVBdHRy
aWJ1dGUucmVsZWFzZSgpLCBmYWxzZSk7Ci0gICAgQXRvbWljSFRNTFRva2VuIGZha2VQcmUoSFRN
TFRva2VuOjpTdGFydFRhZywgcHJlVGFnLmxvY2FsTmFtZSgpLCBhdHRyaWJ1dGVzLnJlbGVhc2Uo
KSk7CisgICAgQXRvbWljSFRNTFRva2VuIGZha2VQcmUoSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFn
LCBwcmVUYWcubG9jYWxOYW1lKCksIGF0dHJpYnV0ZXMucmVsZWFzZSgpKTsKIAogICAgIHRyZWVC
dWlsZGVyKCktPmNvbnN0cnVjdFRyZWVGcm9tQXRvbWljVG9rZW4oZmFrZVByZSk7CiAgICAgbV9o
YXZlSW5zZXJ0ZWRGYWtlUHJlRWxlbWVudCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL1hTU0F1ZGl0b3IuY3BwCmluZGV4IGU4MWVhYmIwOTVlNDIzYzJiZGMxZTg0ODRhYjcwZDZk
MTViNTQ4NzEuLmVlMWQyY2UxYTRlYjU5NmNjZDQ2ZDE2OTA1NDE0ODk0OGUyZjE5YzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCkBAIC0yMzQsNyArMjM0LDcg
QEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJUb2tlbkluaXRpYWwoSFRNTFRva2VuJiB0b2tlbikK
IHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBJbml0aWFsKTsKIAotICAgIGlmICh0b2tlbi50eXBl
KCkgIT0gSFRNTFRva2VuOjpTdGFydFRhZykKKyAgICBpZiAodG9rZW4udHlwZSgpICE9IEhUTUxU
b2tlblR5cGVzOjpTdGFydFRhZykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCBk
aWRCbG9ja1NjcmlwdCA9IGVyYXNlRGFuZ2Vyb3VzQXR0cmlidXRlc0lmSW5qZWN0ZWQodG9rZW4p
OwpAQCAtMjY2LDggKzI2Niw4IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW5BZnRlclNj
cmlwdFN0YXJ0VGFnKEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gQWZ0
ZXJTY3JpcHRTdGFydFRhZyk7CiAgICAgbV9zdGF0ZSA9IEluaXRpYWw7CiAKLSAgICBpZiAodG9r
ZW4udHlwZSgpICE9IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKSB7Ci0gICAgICAgIEFTU0VSVCh0b2tl
bi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcgfHwgdG9rZW4udHlwZSgpID09IEhUTUxUb2tl
bjo6RW5kT2ZGaWxlKTsKKyAgICBpZiAodG9rZW4udHlwZSgpICE9IEhUTUxUb2tlblR5cGVzOjpD
aGFyYWN0ZXIpIHsKKyAgICAgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBl
czo6RW5kVGFnIHx8IHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxlKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjg2LDcgKzI4Niw3IEBAIGJvb2wg
WFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW5BZnRlclNjcmlwdFN0YXJ0VGFnKEhUTUxUb2tlbiYgdG9r
ZW4pCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlclNjcmlwdFRva2VuKEhUTUxUb2tlbiYgdG9rZW4p
CiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gSW5pdGlhbCk7Ci0gICAgQVNTRVJUKHRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09
IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUodG9rZW4sIHNj
cmlwdFRhZykpOwogCiAgICAgaWYgKGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZCh0b2tlbiwgc3Jj
QXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSkpCkBAIC0zMDAsNyArMzAwLDcgQEAgYm9vbCBYU1NB
dWRpdG9yOjpmaWx0ZXJTY3JpcHRUb2tlbihIVE1MVG9rZW4mIHRva2VuKQogYm9vbCBYU1NBdWRp
dG9yOjpmaWx0ZXJPYmplY3RUb2tlbihIVE1MVG9rZW4mIHRva2VuKQogewogICAgIEFTU0VSVCht
X3N0YXRlID09IEluaXRpYWwpOwotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
OjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6
U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHRva2VuLCBvYmplY3RUYWcpKTsKIAogICAg
IGJvb2wgZGlkQmxvY2tTY3JpcHQgPSBmYWxzZTsKQEAgLTMxNSw3ICszMTUsNyBAQCBib29sIFhT
U0F1ZGl0b3I6OmZpbHRlck9iamVjdFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiBib29sIFhTU0F1
ZGl0b3I6OmZpbHRlclBhcmFtVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKIHsKICAgICBBU1NFUlQo
bV9zdGF0ZSA9PSBJbml0aWFsKTsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tl
bjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6
OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZSh0b2tlbiwgcGFyYW1UYWcpKTsKIAogICAg
IHNpemVfdCBpbmRleE9mTmFtZUF0dHJpYnV0ZTsKQEAgLTMzNCw3ICszMzQsNyBAQCBib29sIFhT
U0F1ZGl0b3I6OmZpbHRlclBhcmFtVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKIGJvb2wgWFNTQXVk
aXRvcjo6ZmlsdGVyRW1iZWRUb2tlbihIVE1MVG9rZW4mIHRva2VuKQogewogICAgIEFTU0VSVCht
X3N0YXRlID09IEluaXRpYWwpOwotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
OjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6
U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHRva2VuLCBlbWJlZFRhZykpOwogCiAgICAg
Ym9vbCBkaWRCbG9ja1NjcmlwdCA9IGZhbHNlOwpAQCAtMzQ4LDcgKzM0OCw3IEBAIGJvb2wgWFNT
QXVkaXRvcjo6ZmlsdGVyRW1iZWRUb2tlbihIVE1MVG9rZW4mIHRva2VuKQogYm9vbCBYU1NBdWRp
dG9yOjpmaWx0ZXJBcHBsZXRUb2tlbihIVE1MVG9rZW4mIHRva2VuKQogewogICAgIEFTU0VSVCht
X3N0YXRlID09IEluaXRpYWwpOwotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
OjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6
U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHRva2VuLCBhcHBsZXRUYWcpKTsKIAogICAg
IGJvb2wgZGlkQmxvY2tTY3JpcHQgPSBmYWxzZTsKQEAgLTM2Miw3ICszNjIsNyBAQCBib29sIFhT
U0F1ZGl0b3I6OmZpbHRlckFwcGxldFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiBib29sIFhTU0F1
ZGl0b3I6OmZpbHRlcklmcmFtZVRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJU
KG1fc3RhdGUgPT0gSW5pdGlhbCk7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9r
ZW46OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVz
OjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUodG9rZW4sIGlmcmFtZVRhZykpOwogCiAg
ICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZCh0b2tlbiwgc3JjQXR0cik7CkBAIC0z
NzEsNyArMzcxLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJJZnJhbWVUb2tlbihIVE1MVG9r
ZW4mIHRva2VuKQogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJNZXRhVG9rZW4oSFRNTFRva2VuJiB0
b2tlbikKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBJbml0aWFsKTsKLSAgICBBU1NFUlQodG9r
ZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBl
KCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZSh0b2tl
biwgbWV0YVRhZykpOwogCiAgICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZCh0b2tl
biwgaHR0cF9lcXVpdkF0dHIpOwpAQCAtMzgwLDcgKzM4MCw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6
ZmlsdGVyTWV0YVRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRl
ckJhc2VUb2tlbihIVE1MVG9rZW4mIHRva2VuKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IElu
aXRpYWwpOwotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7
CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwog
ICAgIEFTU0VSVChoYXNOYW1lKHRva2VuLCBiYXNlVGFnKSk7CiAKICAgICByZXR1cm4gZXJhc2VB
dHRyaWJ1dGVJZkluamVjdGVkKHRva2VuLCBocmVmQXR0cik7CkBAIC0zODksNyArMzg5LDcgQEAg
Ym9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJCYXNlVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKIGJvb2wg
WFNTQXVkaXRvcjo6ZmlsdGVyRm9ybVRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgQVNT
RVJUKG1fc3RhdGUgPT0gSW5pdGlhbCk7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1M
VG9rZW46OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5
cGVzOjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUodG9rZW4sIGZvcm1UYWcpKTsKIAog
ICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQodG9rZW4sIGFjdGlvbkF0dHIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Ub2tlbkJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvVG9rZW5CYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk0YjE4YzRhNjkz
MWE5NDdjZDE5MDBjMGJkMmE2NmJlYmRjZWFiZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvVG9rZW5CYXNlLmgKQEAgLTAsMCArMSwzNjEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRva2VuQmFzZV9o
CisjZGVmaW5lIFRva2VuQmFzZV9oCisKKyNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKKyNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBCYXNlRG9jdHlwZURhdGEgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEJhc2VEb2N0eXBlRGF0YSk7CitwdWJsaWM6CisgICAgQmFzZURvY3R5cGVEYXRh
KCkKKyAgICAgICAgOiBtX2hhc1B1YmxpY0lkZW50aWZpZXIoZmFsc2UpCisgICAgICAgICwgbV9o
YXNTeXN0ZW1JZGVudGlmaWVyKGZhbHNlKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIG1faGFz
UHVibGljSWRlbnRpZmllcjsKKyAgICBib29sIG1faGFzU3lzdGVtSWRlbnRpZmllcjsKKyAgICBX
VEY6OlZlY3RvcjxVQ2hhcj4gbV9wdWJsaWNJZGVudGlmaWVyOworICAgIFdURjo6VmVjdG9yPFVD
aGFyPiBtX3N5c3RlbUlkZW50aWZpZXI7Cit9OworICAgIAordGVtcGxhdGU8dHlwZW5hbWUgVHlw
ZVNldCwgdHlwZW5hbWUgRG9jdHlwZURhdGEgPSBCYXNlRG9jdHlwZURhdGE+CitjbGFzcyBUb2tl
bkJhc2UgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRva2VuQmFzZSk7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdHlwZWRlZiB0eXBlbmFtZSBUeXBlU2V0
OjpUeXBlIFR5cGU7CisKKyAgICBjbGFzcyBSYW5nZSB7CisgICAgcHVibGljOgorICAgICAgICBp
bnQgbV9zdGFydDsKKyAgICAgICAgaW50IG1fZW5kOworICAgIH07CisKKyAgICBjbGFzcyBBdHRy
aWJ1dGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgUmFuZ2UgbV9uYW1lUmFuZ2U7CisgICAgICAg
IFJhbmdlIG1fdmFsdWVSYW5nZTsKKyAgICAgICAgV1RGOjpWZWN0b3I8VUNoYXIsIDMyPiBtX25h
bWU7CisgICAgICAgIFdURjo6VmVjdG9yPFVDaGFyLCAzMj4gbV92YWx1ZTsKKyAgICB9OworCisg
ICAgdHlwZWRlZiBXVEY6OlZlY3RvcjxBdHRyaWJ1dGUsIDEwPiBBdHRyaWJ1dGVMaXN0OworICAg
IHR5cGVkZWYgV1RGOjpWZWN0b3I8VUNoYXIsIDEwMjQ+IERhdGFWZWN0b3I7CisKKyAgICBUb2tl
bkJhc2UoKSB7IGNsZWFyKCk7IH0KKyAgICB2aXJ0dWFsIH5Ub2tlbkJhc2UoKSB7IH0KKworICAg
IHZpcnR1YWwgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBtX3R5cGUgPSBUeXBlU2V0OjpV
bmluaXRpYWxpemVkOworICAgICAgICBtX3JhbmdlLm1fc3RhcnQgPSAwOworICAgICAgICBtX3Jh
bmdlLm1fZW5kID0gMDsKKyAgICAgICAgbV9iYXNlT2Zmc2V0ID0gMDsKKyAgICAgICAgbV9kYXRh
LmNsZWFyKCk7CisgICAgfQorCisgICAgYm9vbCBpc1VuaW5pdGlhbGl6ZWQoKSB7IHJldHVybiBt
X3R5cGUgPT0gVHlwZVNldDo6VW5pbml0aWFsaXplZDsgfQorCisgICAgaW50IHN0YXJ0SW5kZXgo
KSBjb25zdCB7IHJldHVybiBtX3JhbmdlLm1fc3RhcnQ7IH0KKyAgICBpbnQgZW5kSW5kZXgoKSBj
b25zdCB7IHJldHVybiBtX3JhbmdlLm1fZW5kOyB9CisKKyAgICB2b2lkIHNldEJhc2VPZmZzZXQo
aW50IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fYmFzZU9mZnNldCA9IG9mZnNldDsKKyAgICB9
CisKKyAgICB2b2lkIGVuZChpbnQgZW5kT2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9yYW5nZS5t
X2VuZCA9IGVuZE9mZnNldCAtIG1fYmFzZU9mZnNldDsKKyAgICB9CisKKyAgICB2b2lkIG1ha2VF
bmRPZkZpbGUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpVbmlu
aXRpYWxpemVkKTsKKyAgICAgICAgbV90eXBlID0gVHlwZVNldDo6RW5kT2ZGaWxlOworICAgIH0K
KworICAgIHZvaWQgYmVnaW5TdGFydFRhZyhVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAg
ICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpV
bmluaXRpYWxpemVkKTsKKyAgICAgICAgbV90eXBlID0gVHlwZVNldDo6U3RhcnRUYWc7CisgICAg
ICAgIG1fc2VsZkNsb3NpbmcgPSBmYWxzZTsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlID0g
MDsKKyAgICAgICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7CisKKyAgICAgICAgbV9kYXRhLmFwcGVu
ZChjaGFyYWN0ZXIpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgdm9p
ZCBiZWdpbkVuZFRhZyhUIGNoYXJhY3RlcnMpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBl
ID09IFR5cGVTZXQ6OlVuaW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5cGUgPSBUeXBlU2V0OjpF
bmRUYWc7CisgICAgICAgIG1fc2VsZkNsb3NpbmcgPSBmYWxzZTsKKyAgICAgICAgbV9jdXJyZW50
QXR0cmlidXRlID0gMDsKKyAgICAgICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7CisKKyAgICAgICAg
bV9kYXRhLmFwcGVuZChjaGFyYWN0ZXJzKTsKKyAgICB9CisKKyAgICAvLyBTdGFydGluZyBhIGNo
YXJhY3RlciB0b2tlbiB3b3JrcyBzbGlnaHRseSBkaWZmZXJlbnRseSB0aGFuIHN0YXJ0aW5nCisg
ICAgLy8gb3RoZXIgdHlwZXMgb2YgdG9rZW5zIGJlY2F1c2Ugd2Ugd2FudCB0byBzYXZlIGEgcGVy
LWNoYXJhY3RlciBicmFuY2guCisgICAgdm9pZCBlbnN1cmVJc0NoYXJhY3RlclRva2VuKCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6VW5pbml0aWFsaXplZCB8fCBt
X3R5cGUgPT0gVHlwZVNldDo6Q2hhcmFjdGVyKTsKKyAgICAgICAgbV90eXBlID0gVHlwZVNldDo6
Q2hhcmFjdGVyOworICAgIH0KKworICAgIHZvaWQgYmVnaW5Db21tZW50KCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6VW5pbml0aWFsaXplZCk7CisgICAgICAgIG1f
dHlwZSA9IFR5cGVTZXQ6OkNvbW1lbnQ7CisgICAgfQorCisgICAgdm9pZCBiZWdpbkRPQ1RZUEUo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpVbmluaXRpYWxpemVk
KTsKKyAgICAgICAgbV90eXBlID0gVHlwZVNldDo6RE9DVFlQRTsKKyAgICAgICAgbV9kb2N0eXBl
RGF0YSA9IGFkb3B0UHRyKG5ldyBEb2N0eXBlRGF0YSgpKTsKKyAgICB9CisKKyAgICB2b2lkIGJl
Z2luRE9DVFlQRShVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoY2hhcmFj
dGVyKTsKKyAgICAgICAgYmVnaW5ET0NUWVBFKCk7CisgICAgICAgIG1fZGF0YS5hcHBlbmQoY2hh
cmFjdGVyKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHZvaWQgYXBw
ZW5kVG9DaGFyYWN0ZXIoVCBjaGFyYWN0ZXJzKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBUeXBlU2V0OjpDaGFyYWN0ZXIpOworICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rl
cnMpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kVG9Db21tZW50KFVDaGFyIGNoYXJhY3RlcikK
KyAgICB7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgICAgICBBU1NFUlQobV90eXBl
ID09IFR5cGVTZXQ6OkNvbW1lbnQpOworICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7
CisgICAgfQorCisgICAgdm9pZCBhZGROZXdBdHRyaWJ1dGUoKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6RW5k
VGFnKTsKKyAgICAgICAgbV9hdHRyaWJ1dGVzLmdyb3cobV9hdHRyaWJ1dGVzLnNpemUoKSArIDEp
OworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSAmbV9hdHRyaWJ1dGVzLmxhc3QoKTsKKyNp
Zm5kZWYgTkRFQlVHCisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1lUmFuZ2UubV9z
dGFydCA9IDA7CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1lUmFuZ2UubV9lbmQg
PSAwOworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX3N0YXJ0ID0g
MDsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9lbmQgPSAwOwor
I2VuZGlmCisgICAgfQorCisgICAgdm9pZCBiZWdpbkF0dHJpYnV0ZU5hbWUoaW50IG9mZnNldCkK
KyAgICB7CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1lUmFuZ2UubV9zdGFydCA9
IG9mZnNldCAtIG1fYmFzZU9mZnNldDsKKyAgICB9CisKKyAgICB2b2lkIGVuZEF0dHJpYnV0ZU5h
bWUoaW50IG9mZnNldCkKKyAgICB7CisgICAgICAgIGludCBpbmRleCA9IG9mZnNldCAtIG1fYmFz
ZU9mZnNldDsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX2VuZCA9
IGluZGV4OworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX3N0YXJ0
ID0gaW5kZXg7CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fZW5k
ID0gaW5kZXg7CisgICAgfQorCisgICAgdm9pZCBiZWdpbkF0dHJpYnV0ZVZhbHVlKGludCBvZmZz
ZXQpCisgICAgeworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX3N0
YXJ0ID0gb2Zmc2V0IC0gbV9iYXNlT2Zmc2V0OworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgbV9j
dXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9lbmQgPSAwOworI2VuZGlmCisgICAgfQor
CisgICAgdm9pZCBlbmRBdHRyaWJ1dGVWYWx1ZShpbnQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAg
bV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9lbmQgPSBvZmZzZXQgLSBtX2Jhc2VP
ZmZzZXQ7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRUb0F0dHJpYnV0ZU5hbWUoVUNoYXIgY2hh
cmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gVHlwZVNldDo6U3RhcnRUYWcgfHwgbV90eXBlID09IFR5cGVTZXQ6OkVuZFRh
Zyk7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBhZGQgdGhlIGZvbGxv
d2luZyBBU1NFUlQgb25jZSB3ZSBmaXgKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTYyOTcxCisgICAgICAgIC8vICAgQVNTRVJUKG1fY3VycmVudEF0
dHJpYnV0ZS0+bV9uYW1lUmFuZ2UubV9zdGFydCk7CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0
ZS0+bV9uYW1lLmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kVG9B
dHRyaWJ1dGVWYWx1ZShVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoY2hh
cmFjdGVyKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpTdGFydFRhZyB8fCBt
X3R5cGUgPT0gVHlwZVNldDo6RW5kVGFnKTsKKyAgICAgICAgQVNTRVJUKG1fY3VycmVudEF0dHJp
YnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3RhcnQpOworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUt
Pm1fdmFsdWUuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRUb0F0
dHJpYnV0ZVZhbHVlKHNpemVfdCBpLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKCF2YWx1ZS5pc0VtcHR5KCkpOworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5
cGVTZXQ6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBUeXBlU2V0OjpFbmRUYWcpOworICAgICAgICBt
X2F0dHJpYnV0ZXNbaV0ubV92YWx1ZS5hcHBlbmQodmFsdWUuY2hhcmFjdGVycygpLCB2YWx1ZS5s
ZW5ndGgoKSk7CisgICAgfQorCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
OyB9CisKKyAgICBib29sIHNlbGZDbG9zaW5nKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gVHlwZVNldDo6U3RhcnRUYWcgfHwgbV90eXBlID09IFR5cGVTZXQ6OkVuZFRh
Zyk7CisgICAgICAgIHJldHVybiBtX3NlbGZDbG9zaW5nOworICAgIH0KKworICAgIHZvaWQgc2V0
U2VsZkNsb3NpbmcoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpT
dGFydFRhZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6RW5kVGFnKTsKKyAgICAgICAgbV9zZWxmQ2xv
c2luZyA9IHRydWU7CisgICAgfQorCisgICAgY29uc3QgQXR0cmlidXRlTGlzdCYgYXR0cmlidXRl
cygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlN0YXJ0
VGFnIHx8IG1fdHlwZSA9PSBUeXBlU2V0OjpFbmRUYWcpOworICAgICAgICByZXR1cm4gbV9hdHRy
aWJ1dGVzOworICAgIH0KKworICAgIHZvaWQgZXJhc2VDaGFyYWN0ZXJzKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6Q2hhcmFjdGVyKTsKKyAgICAgICAgbV9kYXRh
LmNsZWFyKCk7CisgICAgfQorCisgICAgdm9pZCBlcmFzZVZhbHVlT2ZBdHRyaWJ1dGUoc2l6ZV90
IGkpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlN0YXJ0VGFnIHx8
IG1fdHlwZSA9PSBUeXBlU2V0OjpFbmRUYWcpOworICAgICAgICBtX2F0dHJpYnV0ZXNbaV0ubV92
YWx1ZS5jbGVhcigpOworICAgIH0KKworICAgIGNvbnN0IERhdGFWZWN0b3ImIGNoYXJhY3RlcnMo
KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpDaGFyYWN0
ZXIpOworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKworICAgIGNvbnN0IERhdGFWZWN0
b3ImIGNvbW1lbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBl
U2V0OjpDb21tZW50KTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YTsKKyAgICB9CisKKyAgICAvLyBG
SVhNRTogRGlzdGluZ3Vpc2ggYmV0d2VlbiBhIG1pc3NpbmcgcHVibGljIGlkZW50aWZlciBhbmQg
YW4gZW1wdHkgb25lLgorICAgIGNvbnN0IFdURjo6VmVjdG9yPFVDaGFyPiYgcHVibGljSWRlbnRp
ZmllcigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OkRP
Q1RZUEUpOworICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlmaWVy
OworICAgIH0KKworICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlzaCBiZXR3ZWVuIGEgbWlzc2luZyBz
eXN0ZW0gaWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBvbmUuCisgICAgY29uc3QgV1RGOjpWZWN0b3I8
VUNoYXI+JiBzeXN0ZW1JZGVudGlmaWVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gVHlwZVNldDo6RE9DVFlQRSk7CisgICAgICAgIHJldHVybiBtX2RvY3R5cGVEYXRh
LT5tX3N5c3RlbUlkZW50aWZpZXI7CisgICAgfQorCisgICAgdm9pZCBzZXRQdWJsaWNJZGVudGlm
aWVyVG9FbXB0eVN0cmluZygpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVT
ZXQ6OkRPQ1RZUEUpOworICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2hhc1B1YmxpY0lkZW50aWZp
ZXIgPSB0cnVlOworICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZpZXIuY2xl
YXIoKTsKKyAgICB9CisKKyAgICB2b2lkIHNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5n
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6RE9DVFlQRSk7Cisg
ICAgICAgIG1fZG9jdHlwZURhdGEtPm1faGFzU3lzdGVtSWRlbnRpZmllciA9IHRydWU7CisgICAg
ICAgIG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllci5jbGVhcigpOworICAgIH0KKwor
ICAgIHZvaWQgYXBwZW5kVG9QdWJsaWNJZGVudGlmaWVyKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7
CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5
cGVTZXQ6OkRPQ1RZUEUpOworICAgICAgICBBU1NFUlQobV9kb2N0eXBlRGF0YS0+bV9oYXNQdWJs
aWNJZGVudGlmaWVyKTsKKyAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlmaWVy
LmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kVG9TeXN0ZW1JZGVu
dGlmaWVyKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIp
OworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OkRPQ1RZUEUpOworICAgICAgICBB
U1NFUlQobV9kb2N0eXBlRGF0YS0+bV9oYXNTeXN0ZW1JZGVudGlmaWVyKTsKKyAgICAgICAgbV9k
b2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyLmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0K
KworcHJvdGVjdGVkOgorICAgIGlubGluZSB2b2lkIGRvQXBwZW5kVG9OYW1lKFVDaGFyIGNoYXJh
Y3RlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgICAgICBtX2RhdGEu
YXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorICAgIAorICAgIGNvbnN0IERhdGFWZWN0b3ImIGdl
dE5hbWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGF0YTsKKyAgICB9CisKKyAg
ICAvLyBGSVhNRTogSSdtIG5vdCBzdXJlIHdoYXQgdGhlIGZpbmFsIHJlbGF0aW9uc2hpcCBiZXR3
ZWVuIEhUTUxUb2tlbiBhbmQKKyAgICAvLyBBdG9taWNIVE1MVG9rZW4gd2lsbCBiZS4gSSdtIG1h
cmtpbmcgdGhpcyBhIGZyaWVuZCBmb3Igbm93LCBidXQgd2UnbGwKKyAgICAvLyB3YW50IHRvIGVu
ZCB1cCB3aXRoIGEgY2xlYW5lciBpbnRlcmZhY2UgYmV0d2VlbiB0aGUgdHdvIGNsYXNzZXMuCisg
ICAgZnJpZW5kIGNsYXNzIEF0b21pY0hUTUxUb2tlbjsKKworICAgIFR5cGUgbV90eXBlOworICAg
IFJhbmdlIG1fcmFuZ2U7IC8vIEFsd2F5cyBzdGFydHMgYXQgemVyby4KKyAgICBpbnQgbV9iYXNl
T2Zmc2V0OworICAgIERhdGFWZWN0b3IgbV9kYXRhOworCisgICAgLy8gRm9yIERPQ1RZUEUKKyAg
ICBPd25QdHI8RG9jdHlwZURhdGE+IG1fZG9jdHlwZURhdGE7CisKKyAgICAvLyBGb3IgU3RhcnRU
YWcgYW5kIEVuZFRhZworICAgIGJvb2wgbV9zZWxmQ2xvc2luZzsKKyAgICBBdHRyaWJ1dGVMaXN0
IG1fYXR0cmlidXRlczsKKworICAgIC8vIEEgcG9pbnRlciBpbnRvIG1fYXR0cmlidXRlcyB1c2Vk
IGR1cmluZyBsZXhpbmcuCisgICAgQXR0cmlidXRlKiBtX2N1cnJlbnRBdHRyaWJ1dGU7Cit9Owor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxU
b2tlbi5oIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjlhYWU1NmI4NTJhNzllOTEyNDY1YzE4ODZhZDM1MjA2MmQwNmY2NDkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuLmgKQEAgLTAsMCArMSwzNTUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFhNTFRva2VuX2gKKyNkZWZpbmUgWE1MVG9rZW5faAorCisjaW5jbHVkZSAiVG9rZW5CYXNlLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgWE1MVG9rZW5UeXBlcyB7CitwdWJsaWM6
CisgICAgZW51bSBUeXBlIHsKKyAgICAgICAgVW5pbml0aWFsaXplZCwKKyAgICAgICAgUHJvY2Vz
c2luZ0luc3RydWN0aW9uLAorICAgICAgICBYTUxEZWNsYXJhdGlvbiwKKyAgICAgICAgRE9DVFlQ
RSwKKyAgICAgICAgQXR0cmlidXRlTGlzdERlY2xhcmF0aW9uLAorICAgICAgICBFbGVtZW50RGVj
bGFyYXRpb24sCisgICAgICAgIEVudGl0eURlY2xhcmF0aW9uLAorICAgICAgICBDREFUQSwKKyAg
ICAgICAgU3RhcnRUYWcsCisgICAgICAgIEVuZFRhZywKKyAgICAgICAgQ29tbWVudCwKKyAgICAg
ICAgQ2hhcmFjdGVyLAorICAgICAgICBFbnRpdHksCisgICAgICAgIEVuZE9mRmlsZSwKKyAgICB9
OworfTsKKworY2xhc3MgWE1MVG9rZW4gOiBwdWJsaWMgVG9rZW5CYXNlPFhNTFRva2VuVHlwZXM+
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShYTUxUb2tlbik7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CitwdWJsaWM6CisKKyAgICBYTUxUb2tlbigpIDogVG9rZW5CYXNlKCkgeyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgVG9rZW5CYXNlPFhN
TFRva2VuVHlwZXM+OjpjbGVhcigpOworICAgICAgICBtX3RhcmdldC5jbGVhcigpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGFwcGVuZFRvTmFtZShVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAg
ICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9
PSBYTUxUb2tlblR5cGVzOjpFbmRUYWcgfHwgbV90eXBlID09IFhNTFRva2VuVHlwZXM6OkRPQ1RZ
UEUgfHwgbV90eXBlID09IFhNTFRva2VuVHlwZXM6OkVudGl0eSk7CisgICAgICAgIGRvQXBwZW5k
VG9OYW1lKGNoYXJhY3Rlcik7CisgICAgfQorICAgIAorICAgIGNvbnN0IERhdGFWZWN0b3ImIG5h
bWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVz
OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6RW5kVGFnIHx8IG1fdHlwZSA9
PSBYTUxUb2tlblR5cGVzOjpET0NUWVBFIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpFbnRp
dHkpOworICAgICAgICByZXR1cm4gZ2V0TmFtZSgpOworICAgIH0KKworICAgIHZvaWQgYmVnaW5E
T0NUWVBFKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6
VW5pbml0aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9IFhNTFRva2VuVHlwZXM6OkRPQ1RZUEU7
CisgICAgICAgIG1fZG9jdHlwZURhdGEgPSBhZG9wdFB0cihuZXcgRG9jdHlwZURhdGEoKSk7Cisg
ICAgfQorCisgICAgdm9pZCBiZWdpbkRPQ1RZUEUoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIGJlZ2luRE9DVFlQRSgpOworICAgICAg
ICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgdm9pZCBiZWdpblhNTERl
Y2xhcmF0aW9uKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBl
czo6VW5pbml0aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9IFhNTFRva2VuVHlwZXM6OlhNTERl
Y2xhcmF0aW9uOworICAgICAgICBtX3htbERlY2xhcmF0aW9uRGF0YSA9IGFkb3B0UHRyKG5ldyBY
TUxEZWNsYXJhdGlvbkRhdGEoKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXBwZW5kVG9YTUxW
ZXJzaW9uKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIp
OworICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlhNTERlY2xhcmF0aW9u
KTsKKyAgICAgICAgQVNTRVJUKG1feG1sRGVjbGFyYXRpb25EYXRhKTsKKyAgICAgICAgbV94bWxE
ZWNsYXJhdGlvbkRhdGEtPm1fdmVyc2lvbi5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAg
ICB2b2lkIGJlZ2luWE1MRW5jb2RpbmcoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBl
czo6WE1MRGVjbGFyYXRpb24pOworICAgICAgICBBU1NFUlQobV94bWxEZWNsYXJhdGlvbkRhdGEp
OworICAgICAgICBtX3htbERlY2xhcmF0aW9uRGF0YS0+bV9oYXNFbmNvZGluZyA9IHRydWU7Cisg
ICAgICAgIG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX2VuY29kaW5nLmFwcGVuZChjaGFyYWN0ZXIp
OworICAgIH0KKworICAgIHZvaWQgYXBwZW5kVG9YTUxFbmNvZGluZyhVQ2hhciBjaGFyYWN0ZXIp
CisgICAgeworICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBYTUxUb2tlblR5cGVzOjpYTUxEZWNsYXJhdGlvbik7CisgICAgICAgIEFTU0VSVChtX3ht
bERlY2xhcmF0aW9uRGF0YSk7CisgICAgICAgIEFTU0VSVChtX3htbERlY2xhcmF0aW9uRGF0YS0+
bV9oYXNFbmNvZGluZyk7CisgICAgICAgIG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX2VuY29kaW5n
LmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0KKworICAgIHZvaWQgc2V0WE1MU3RhbmRhbG9uZShi
b29sIHN0YW5kYWxvbmUpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2Vu
VHlwZXM6OlhNTERlY2xhcmF0aW9uKTsKKyAgICAgICAgQVNTRVJUKG1feG1sRGVjbGFyYXRpb25E
YXRhKTsKKyAgICAgICAgbV94bWxEZWNsYXJhdGlvbkRhdGEtPm1faGFzU3RhbmRhbG9uZSA9IHRy
dWU7CisgICAgICAgIG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX3N0YW5kYWxvbmUgPSBzdGFuZGFs
b25lOworICAgIH0KKworICAgIHZvaWQgYmVnaW5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVk
KTsKKyAgICAgICAgbV90eXBlID0gWE1MVG9rZW5UeXBlczo6UHJvY2Vzc2luZ0luc3RydWN0aW9u
OworICAgIH0KKworICAgIHZvaWQgYmVnaW5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oVUNoYXIgY2hh
cmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIGJlZ2lu
UHJvY2Vzc2luZ0luc3RydWN0aW9uKCk7CisgICAgICAgIG1fdGFyZ2V0LmFwcGVuZChjaGFyYWN0
ZXIpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kVG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJn
ZXQoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxU
b2tlblR5cGVzOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOworICAgICAgICBBU1NFUlQoY2hhcmFj
dGVyKTsKKyAgICAgICAgbV90YXJnZXQuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAg
dm9pZCBhcHBlbmRUb1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkRhdGEoVUNoYXIgY2hhcmFjdGVyKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24pOworICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICAgICAgbV9kYXRh
LmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0KKworICAgIHZvaWQgYmVnaW5DREFUQSgpCisgICAg
eworICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQp
OworICAgICAgICBtX3R5cGUgPSBYTUxUb2tlblR5cGVzOjpDREFUQTsKKyAgICB9CisKKyAgICB2
b2lkIGFwcGVuZFRvQ0RBVEEoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpDREFUQSk7CisgICAgICAgIEFTU0VSVChjaGFyYWN0
ZXIpOworICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgdm9p
ZCBiZWdpbkVudGl0eSgpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2Vu
VHlwZXM6OlVuaW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5cGUgPSBYTUxUb2tlblR5cGVzOjpF
bnRpdHk7CisgICAgfQorCisgICAgdm9pZCBiZWdpbkVudGl0eShVQ2hhciBjaGFyYWN0ZXIpCisg
ICAgeworICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICAgICAgYmVnaW5FbnRpdHkoKTsK
KyAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0KKworICAgIHZvaWQgcHJp
bnRTdHJpbmcoY29uc3QgRGF0YVZlY3RvciYgc3RyaW5nKQorICAgIHsKKyAgICAgICAgRGF0YVZl
Y3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHN0cmluZy5iZWdpbigpOworICAgICAgICBmb3Ig
KDsgaXRlciAhPSBzdHJpbmcuZW5kKCk7ICsraXRlcikKKyAgICAgICAgICAgIHByaW50ZigiJWxj
Iiwgd2NoYXJfdCgqaXRlcikpOworICAgIH0KKworICAgIHZvaWQgcHJpbnRBdHRycygpCisgICAg
eworICAgICAgICBBdHRyaWJ1dGVMaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9hdHRyaWJ1
dGVzLmJlZ2luKCk7CisgICAgICAgIGZvciAoOyBpdGVyICE9IG1fYXR0cmlidXRlcy5lbmQoKTsg
KytpdGVyKSB7CisgICAgICAgICAgICBwcmludGYoIiAiKTsKKyAgICAgICAgICAgIHByaW50U3Ry
aW5nKGl0ZXItPm1fbmFtZSk7CisgICAgICAgICAgICBwcmludGYoIj1cIiIpOworICAgICAgICAg
ICAgcHJpbnRTdHJpbmcoaXRlci0+bV92YWx1ZSk7CisgICAgICAgICAgICBwcmludGYoIlwiIik7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHByaW50KCkKKyAgICB7CisgICAgICAgIHN3
aXRjaCAobV90eXBlKSB7CisgICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXpl
ZDoKKyAgICAgICAgICAgIHByaW50ZigiVU5JVElBTElaRUQiKTsKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOgor
ICAgICAgICAgICAgcHJpbnRmKCJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246ICIpOworICAgICAgICAg
ICAgcHJpbnRmKCI8PyIpOworICAgICAgICAgICAgcHJpbnRTdHJpbmcobV90YXJnZXQpOworICAg
ICAgICAgICAgcHJpbnRmKCIgIik7CisgICAgICAgICAgICBwcmludFN0cmluZyhtX2RhdGEpOwor
ICAgICAgICAgICAgcHJpbnRmKCI/PiIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBYTUxUb2tlblR5cGVzOjpYTUxEZWNsYXJhdGlvbjoKKyAgICAgICAgICAgIHByaW50Zigi
WE1MIERlY2xhcmF0aW9uOiAiKTsKKyAgICAgICAgICAgIHByaW50ZigiPD94bWwgdmVyc2lvbj1c
IiIpOworICAgICAgICAgICAgQVNTRVJUKG1feG1sRGVjbGFyYXRpb25EYXRhKTsKKyAgICAgICAg
ICAgIHByaW50U3RyaW5nKG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX3ZlcnNpb24pOworICAgICAg
ICAgICAgcHJpbnRmKCJcIiIpOworICAgICAgICAgICAgaWYgKG1feG1sRGVjbGFyYXRpb25EYXRh
LT5tX2hhc0VuY29kaW5nKSB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCIgZW5jb2Rpbmc9XCIi
KTsKKyAgICAgICAgICAgICAgICBwcmludFN0cmluZyhtX3htbERlY2xhcmF0aW9uRGF0YS0+bV9l
bmNvZGluZyk7CisgICAgICAgICAgICAgICAgcHJpbnRmKCJcIiIpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX2hhc1N0YW5kYWxvbmUpCisg
ICAgICAgICAgICAgICAgcHJpbnRmKCIgc3RhbmRhbG9uZT1cIiVzXCIiLCBtX3htbERlY2xhcmF0
aW9uRGF0YS0+bV9zdGFuZGFsb25lID8gInllcyIgOiAibm8iKTsKKyAgICAgICAgICAgIHByaW50
ZigiPz4iKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgWE1MVG9rZW5UeXBl
czo6RE9DVFlQRToKKyAgICAgICAgICAgIHByaW50ZigiRE9DVFlQRTogIik7CisgICAgICAgICAg
ICBBU1NFUlQobV9kb2N0eXBlRGF0YSk7CisgICAgICAgICAgICBwcmludGYoIjwhRE9DVFlQRSAi
KTsKKyAgICAgICAgICAgIHByaW50U3RyaW5nKG1fZGF0YSk7CisgICAgICAgICAgICBpZiAobV9k
b2N0eXBlRGF0YS0+bV9oYXNQdWJsaWNJZGVudGlmaWVyKSB7CisgICAgICAgICAgICAgICAgcHJp
bnRmKCIgUFVCTElDIFwiIik7CisgICAgICAgICAgICAgICAgcHJpbnRTdHJpbmcobV9kb2N0eXBl
RGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICBwcmludGYoIlwiIik7
CisgICAgICAgICAgICAgICAgaWYgKG1fZG9jdHlwZURhdGEtPm1faGFzU3lzdGVtSWRlbnRpZmll
cikgeworICAgICAgICAgICAgICAgICAgICBwcmludGYoIiBcIiIpOworICAgICAgICAgICAgICAg
ICAgICBwcmludFN0cmluZyhtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXIpOworICAg
ICAgICAgICAgICAgICAgICBwcmludGYoIlwiIik7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSBlbHNlIGlmIChtX2RvY3R5cGVEYXRhLT5tX2hhc1N5c3RlbUlkZW50aWZpZXIpIHsK
KyAgICAgICAgICAgICAgICBwcmludGYoIiBTWVNURU0gXCIiKTsKKyAgICAgICAgICAgICAgICBw
cmludFN0cmluZyhtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXIpOworICAgICAgICAg
ICAgICAgIHByaW50ZigiXCIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByaW50Zigi
PiIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpB
dHRyaWJ1dGVMaXN0RGVjbGFyYXRpb246CisgICAgICAgICAgICBwcmludGYoIkF0dHJpYnV0ZSBM
aXN0OiAiKTsKKyAgICAgICAgICAgIHByaW50ZigiPCFBVFRMSVNUPiIpOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpFbGVtZW50RGVjbGFyYXRpb246
CisgICAgICAgICAgICBwcmludGYoIkVsZW1lbnQgRGVjbGFyYXRpb246ICIpOworICAgICAgICAg
ICAgcHJpbnRmKCI8IUVMRU1FTlQ+Iik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj
YXNlIFhNTFRva2VuVHlwZXM6OkVudGl0eURlY2xhcmF0aW9uOgorICAgICAgICAgICAgcHJpbnRm
KCJFbnRpdHkgRGVjbGFyYXRpb246ICIpOworICAgICAgICAgICAgcHJpbnRmKCI8IUVOVElUWT4i
KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6Q0RB
VEE6CisgICAgICAgICAgICBwcmludGYoIkNEQVRBOiAiKTsKKyAgICAgICAgICAgIHByaW50Zigi
PCFbQ0RBVEFbIik7CisgICAgICAgICAgICBwcmludFN0cmluZyhtX2RhdGEpOworICAgICAgICAg
ICAgcHJpbnRmKCJdXT4iKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgWE1M
VG9rZW5UeXBlczo6U3RhcnRUYWc6CisgICAgICAgICAgICBwcmludGYoIlN0YXJ0IFRhZzogIik7
CisgICAgICAgICAgICBwcmludGYoIjwiKTsKKyAgICAgICAgICAgIHByaW50U3RyaW5nKG1fZGF0
YSk7CisgICAgICAgICAgICBwcmludEF0dHJzKCk7CisgICAgICAgICAgICBpZiAoc2VsZkNsb3Np
bmcoKSkKKyAgICAgICAgICAgICAgICBwcmludGYoIi8iKTsKKyAgICAgICAgICAgIHByaW50Zigi
PiIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpF
bmRUYWc6CisgICAgICAgICAgICBwcmludGYoIkVuZCBUYWc6ICIpOworICAgICAgICAgICAgcHJp
bnRmKCI8LyIpOworICAgICAgICAgICAgcHJpbnRTdHJpbmcobV9kYXRhKTsKKyAgICAgICAgICAg
IHByaW50ZigiPiIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBYTUxUb2tl
blR5cGVzOjpDb21tZW50OgorICAgICAgICAgICAgcHJpbnRmKCJDb21tZW50OiAiKTsKKyAgICAg
ICAgICAgIHByaW50ZigiPCEtLSIpOworICAgICAgICAgICAgcHJpbnRTdHJpbmcobV9kYXRhKTsK
KyAgICAgICAgICAgIHByaW50ZigiLS0+Iik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBjYXNlIFhNTFRva2VuVHlwZXM6OkNoYXJhY3RlcjoKKyAgICAgICAgICAgIHByaW50ZigiQ2hh
cmFjdGVyczogIik7CisgICAgICAgICAgICBwcmludFN0cmluZyhtX2RhdGEpOworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpFbnRpdHk6CisgICAgICAg
ICAgICBwcmludGYoIkVudGl0eTogIik7CisgICAgICAgICAgICBwcmludGYoIiYiKTsKKyAgICAg
ICAgICAgIHByaW50U3RyaW5nKG1fZGF0YSk7CisgICAgICAgICAgICBwcmludGYoIjsiKTsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxl
OgorICAgICAgICAgICAgcHJpbnRmKCJFT0YiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisKKyAgICAgICAgcHJpbnRmKCJcbiIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB0eXBl
ZGVmIEJhc2VEb2N0eXBlRGF0YSBEb2N0eXBlRGF0YTsKKworICAgIGNsYXNzIFhNTERlY2xhcmF0
aW9uRGF0YSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFhNTERlY2xhcmF0aW9uRGF0
YSk7CisgICAgcHVibGljOgorICAgICAgICBYTUxEZWNsYXJhdGlvbkRhdGEoKQorICAgICAgICA6
IG1faGFzU3RhbmRhbG9uZShmYWxzZSkKKyAgICAgICAgLCBtX2hhc0VuY29kaW5nKGZhbHNlKQor
ICAgICAgICAsIG1fc3RhbmRhbG9uZShmYWxzZSkKKyAgICAgICAgeworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBib29sIG1faGFzU3RhbmRhbG9uZTsKKyAgICAgICAgYm9vbCBtX2hhc0Vu
Y29kaW5nOworICAgICAgICBib29sIG1fc3RhbmRhbG9uZTsKKyAgICAgICAgV1RGOjpWZWN0b3I8
VUNoYXI+IG1fZW5jb2Rpbmc7CisgICAgICAgIFdURjo6VmVjdG9yPFVDaGFyPiBtX3ZlcnNpb247
CisgICAgfTsKKworICAgIC8vICJ0YXJnZXQiIGZvciBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24KKyAg
ICBEYXRhVmVjdG9yIG1fdGFyZ2V0OworICAgIAorICAgIC8vIEZvciBYTUwgRGVjbGFyYXRpb24K
KyAgICBPd25QdHI8WE1MRGVjbGFyYXRpb25EYXRhPiBtX3htbERlY2xhcmF0aW9uRGF0YTsKK307
CisKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101251</attachid>
            <date>2011-07-18 18:06:34 -0700</date>
            <delta_ts>2011-07-18 18:54:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64764-20110718180633.patch</filename>
            <type>text/plain</type>
            <size>85797</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEyMTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNWFmNDRjOWQ2MDMyMGIw
MTFiNWI3N2YwZGE4YTZlYmNkM2JiYjFlLi5iNjdlNmYwNjg4YTUzZGMxZGRjMzliN2E2MDg0N2Iy
NzBmY2ZjZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY2IEBACisyMDExLTA3LTE4ICBKZWZm
cmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgTmV3IFRva2VuIGNsYXNzIGZv
ciBYTUwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0
NzY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3
IFhNTFRva2VuIGNsYXNzIGFsb25nIHdpdGggVG9rZW5CYXNlLCBhbmQgSFRNTFRva2VuIGluaGVy
aXRpbmcgZnJvbSBCYXNlVG9rZW4uCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAg
KiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MVmlld1NvdXJjZURvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZFNv
dXJjZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydERvY3R5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnRPbkRv
Y3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRD
b21tZW50T25IVE1MSHRtbEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVj
dGlvblNpdGU6Omluc2VydFNlbGZDbG9zaW5nSFRNTEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEZvcmVpZ25FbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudEZyb21TYXZl
ZEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0YUNoYXJzZXRQYXJzZXI6OmNoZWNrRm9yTWV0
YUNoYXJzZXQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUHJlbG9hZFNjYW5uZXI6OnByb2Nlc3NUb2tlbik6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNvdXJjZVRyYWNrZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
b3VyY2VUcmFja2VyOjpzb3VyY2VGb3JUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRN
TFRva2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5UeXBlczo6RG9jdHlwZURhdGE6
OkRvY3R5cGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6SFRNTFRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9OYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUb2tlbjo6bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmZv
cmNlUXVpcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6c2V0Rm9yY2VRdWlya3Mp
OgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpBdG9taWNIVE1MVG9rZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjp0eXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OkF0b21pY0hUTUxUb2tlbjo6c2VsZkNsb3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXRv
bWljSFRNTFRva2VuOjpjaGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxU
b2tlbjo6Y29tbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OnB1Ymxp
Y0lkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpzeXN0ZW1J
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6Zm9yY2VRdWly
a3MpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjp1c2VzTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OnVzZXNBdHRyaWJ1dGVzKToKKyAgICAgICAg
KiBodG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
b2tlbml6ZXI6OnNhdmVFbmRUYWdOYW1lSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRva2VuaXplcjo6Zmx1c2hCdWZmZXJlZEVuZFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VG9rZW5pemVyOjpuZXh0VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6
aGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxU
cmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmNvbnN0
cnVjdFRyZWVGcm9tVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
RG9jdHlwZVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c0Zha2VTdGFydFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NGYWtlRW5kVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c0Zha2VQRW5kVGFnSWZQSW5CdXR0b25TY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NJc2luZGV4U3RhcnRUYWdGb3JJbkJvZHkpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkJvZHkpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJblRhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0JvZHlFbmRUYWdGb3JJbkJv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQW55T3RoZXJF
bmRUYWdGb3JJbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9j
ZXNzRW5kVGFnRm9ySW5UYWJsZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5Sb3cpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5DZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblRhYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDb21tZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NFbmRPZkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVC
dWlsZGVyOjpkZWZhdWx0Rm9yQmVmb3JlSFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJl
ZUJ1aWxkZXI6OmRlZmF1bHRGb3JCZWZvcmVIZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6ZGVmYXVsdEZvckluSGVhZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJl
ZUJ1aWxkZXI6OmRlZmF1bHRGb3JJbkhlYWROb3NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JBZnRlckhlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkhlYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1JDREFUQVN0YXJ0VGFnKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0dlbmVyaWNSYXdUZXh0U3Rh
cnRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU2NyaXB0
U3RhcnRUYWcpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlUGFyc2VyOjp1cGRhdGVUb2tlbml6
ZXJTdGF0ZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHREb2N1bWVudFBhcnNlcjo6aW5zZXJ0RmFrZVByZUVsZW1l
bnQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW5Jbml0aWFsKToKKyAgICAgICAgKFdlYkNvcmU6
OlhTU0F1ZGl0b3I6OmZpbHRlclRva2VuQWZ0ZXJTY3JpcHRTdGFydFRhZyk6CisgICAgICAgIChX
ZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJTY3JpcHRUb2tlbik6CisgICAgICAgIChXZWJDb3Jl
OjpYU1NBdWRpdG9yOjpmaWx0ZXJPYmplY3RUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NB
dWRpdG9yOjpmaWx0ZXJQYXJhbVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6
OmZpbHRlckVtYmVkVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVy
QXBwbGV0VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVySWZyYW1l
VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyTWV0YVRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlckJhc2VUb2tlbik6CisgICAgICAg
IChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJGb3JtVG9rZW4pOgorICAgICAgICAqIHhtbC9w
YXJzZXIvVG9rZW5CYXNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QmFzZURvY3R5cGVE
YXRhOjpCYXNlRG9jdHlwZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjpUb2tl
bkJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjp+VG9rZW5CYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5C
YXNlOjppc1VuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjpzdGFy
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6ZW5kSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6VG9rZW5CYXNlOjpzZXRCYXNlT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OlRva2VuQmFzZTo6ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6bWFrZUVuZE9m
RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpUb2tlbkJhc2U6OmJlZ2luU3RhcnRUYWcpOgorICAg
ICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjpiZWdpbkVuZFRhZyk6CisgICAgICAgIChXZWJDb3Jl
OjpUb2tlbkJhc2U6OmVuc3VyZUlzQ2hhcmFjdGVyVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
VG9rZW5CYXNlOjpiZWdpbkNvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjpi
ZWdpbkRPQ1RZUEUpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjphcHBlbmRUb0NoYXJh
Y3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpUb2tlbkJhc2U6OmFwcGVuZFRvQ29tbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUb2tlbkJhc2U6OmFkZE5ld0F0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUb2tlbkJhc2U6OmJlZ2luQXR0cmlidXRlTmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUb2tlbkJhc2U6OmVuZEF0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5C
YXNlOjpiZWdpbkF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6
ZW5kQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjphcHBlbmRU
b0F0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjphcHBlbmRUb0F0
dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6dHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUb2tlbkJhc2U6OnNlbGZDbG9zaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlRva2VuQmFzZTo6c2V0U2VsZkNsb3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNl
OjphdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6ZXJhc2VDaGFyYWN0
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6ZXJhc2VWYWx1ZU9mQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6Y2hhcmFjdGVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpUb2tlbkJhc2U6OmNvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNl
OjpwdWJsaWNJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6c3lzdGVt
SWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpUb2tlbkJhc2U6OnNldFB1YmxpY0lkZW50
aWZpZXJUb0VtcHR5U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6c2V0U3lz
dGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNl
OjphcHBlbmRUb1B1YmxpY0lkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNl
OjphcHBlbmRUb1N5c3RlbUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNl
Ojpkb0FwcGVuZFRvTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpUb2tlbkJhc2U6OmdldE5hbWUp
OgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MVG9rZW4uaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpYTUxUb2tlbjo6WE1MVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW46OmNs
ZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuOjphcHBlbmRUb05hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MVG9rZW46Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW46
OmJlZ2luRE9DVFlQRSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6YmVnaW5YTUxEZWNs
YXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6YXBwZW5kVG9YTUxWZXJzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuOjpiZWdpblhNTEVuY29kaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlhNTFRva2VuOjphcHBlbmRUb1hNTEVuY29kaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlhNTFRva2VuOjpzZXRYTUxTdGFuZGFsb25lKToKKyAgICAgICAgKFdlYkNvcmU6OlhN
TFRva2VuOjpiZWdpblByb2Nlc3NpbmdJbnN0cnVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpY
TUxUb2tlbjo6YXBwZW5kVG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6WE1MVG9rZW46OmFwcGVuZFRvUHJvY2Vzc2luZ0luc3RydWN0aW9uRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6YmVnaW5DREFUQSk6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxUb2tlbjo6YXBwZW5kVG9DREFUQSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6
YmVnaW5FbnRpdHkpOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW46OnByaW50U3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuOjpwcmludEF0dHJzKToKKyAgICAgICAgKFdlYkNv
cmU6OlhNTFRva2VuOjpwcmludCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6WE1MRGVj
bGFyYXRpb25EYXRhOjpYTUxEZWNsYXJhdGlvbkRhdGEpOgorCiAyMDExLTA3LTE4ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgU3BlY2lmeSBhIGNhc2NhZGUgbGlz
dCBjb25zaXN0aW5nIG9mIHRoZSBsYXN0IHJlc29ydCBmb250IGZvciBDb3JlIFRleHQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDQzMzFhZGE1MDNhMzdkZDUwMDI3Njc5MWJiNjAy
OWI2YjY5Y2ZmODguLjRmZjVmNTBiNDI5OWZiNzgyMzQ4NTI3YWI4OTRmODA1ZjJmYjMzNTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzgwMiw2ICszODAyLDcgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL05ld1hNTERvY3VtZW50UGFyc2VyLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1Rva2VuQmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyTGlieG1sMi5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDY2NDk2NGJlNGFl
Mzg5YjhiMzJiOWU4ZDk4ZjljOGUzMDNhMTc0OWMuLmQ1MjY5ZWM0NDlhNzUyNWU0NDQyYWZiNjU4
NjMyNDhmNmM2N2Y3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTYxMDQsNiArNjEwNCw3IEBACiAg
ICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCcsCiAgICAgICAgICAgICAn
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAnd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwJywKKyAgICAgICAgICAgICd4bWwvcGFyc2VyL1Rva2VuQmFzZS5o
JywKICAgICAgICAgICAgICd4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCcsCiAgICAg
ICAgICAgICAneG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oJywKICAgICAgICAgICAgICd4
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRl
eCBlYTY2NjgzNzhhNTY5Yzg2Y2NhN2ZiODAzNTZjOGZiNzIxZDkxZDJkLi40ZTI1OTllN2YyYjY3
ZDBkN2VlNjNhOTk2Yjc2MDBhY2U3OTNhMGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMjQ5Niw2ICsy
NDk2LDcgQEAgSEVBREVSUyArPSBcCiAgICAgd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmggXAogICAg
IHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggXAogICAgIHdvcmtlcnMvV29ya2VyVGhyZWFk
LmggXAorICAgIHhtbC9wYXJzZXIvVG9rZW5CYXNlLmggXAogICAgIHhtbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXIuaCBcCiAgICAgeG1sL0RPTVBhcnNlci5oIFwKICAgICB4bWwvTmF0aXZlWFBh
dGhOU1Jlc29sdmVyLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagppbmRleCBjNTQ1YjlmZDczNmNiYTJlNDI0ZDdlMzU5YTEzMTJmNGIxMDM3NmVkLi4w
NTg1MmE1NDU0NDM1ZmNlZGQ5NzkzMDkxYmU1ZTg3MzIyY2U0NDVkIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDI0NDksNiArNDI0NDksMTAg
QEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlx4bWxccGFyc2VyXFRva2VuQmFzZS5oIgorCQkJCQk+CisJCQkJ
PC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1sXHBhcnNlclxYTUxE
b2N1bWVudFBhcnNlci5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA5NTI3NTgzNWYyMjMx
MWFmOGJhNGZhMjM5ODJjNWZhZjVhM2FmZjguLjllMTAwMmRjZjM4YTQxOTg2NTE3NmYzOTJlODRk
ZjlkMDliNTEwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTQ2LDkgKzQ2LDExIEBACiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmls
ZSBzZWN0aW9uICovCiAJCTAwMDIyRTY5MTNDRTFCQkEwMDI4MkQ1QiAvKiBDaGFyYWN0ZXJSZWZl
cmVuY2VQYXJzZXJJbmxpbmVNZXRob2RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwMDAyMkU2ODEzQ0UxQkJBMDAyODJENUIgLyogQ2hhcmFjdGVyUmVm
ZXJlbmNlUGFyc2VySW5saW5lTWV0aG9kcy5oICovOyB9OworCQkwMDAyRUM1ODEzQzNGNjdEMDAw
NDBENDcgLyogWE1MVG9rZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDAwMDJFQzU1MTNDM0Y2N0QwMDA0MEQ0NyAvKiBYTUxUb2tlbi5oICovOyB9Owog
CQkwMDE0NjI4QTEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDAxNDYyODgxMDNDRDFE
RTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmNwcCAqLzsgfTsKIAkJMDAxNDYyOEIxMDND
RDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDE0NjI4OTEwM0NEMURFMDAwQjIwREIgLyogT3Jp
Z2luQWNjZXNzRW50cnkuaCAqLzsgfTsKIAkJMDAzRjFGRUExMUU2QUI0MzAwODI1OEQ5IC8qIFVz
ZXJDb250ZW50VHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDAwM0YxRkU5MTFFNkFCNDMwMDgyNThEOSAvKiBVc2VyQ29udGVudFR5cGVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDBBNjI5QzEx
M0QwQkVDNzAwNTBBQzUyIC8qIFRva2VuQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDBBNjI5QzAxM0QwQkVDNzAwNTBBQzUyIC8qIFRva2VuQmFz
ZS5oICovOyB9OwogCQkwMEI5MzE4NzEzQkE4REIzMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJz
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBC
OTMxODExM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmNwcCAqLzsgfTsKIAkJ
MDBCOTMxODgxM0JBOERCQTAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEI5MzE4MjEzQkE4NjdGMDAz
NUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXIuaCAqLzsgfTsKIAkJMDBCOTMxODkxM0JBOERCQzAw
MzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEI5MzE4MzEzQkE4NjdGMDAzNUE5NDggLyog
WE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCAqLzsgfTsKQEAgLTY0MDgsOSArNjQxMCwxMSBA
QAogCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAkJMDAwMjJFNjgxM0NF
MUJCQTAwMjgyRDVCIC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZU1ldGhvZHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2Vy
SW5saW5lTWV0aG9kcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwMDAyRUM1NTEz
QzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gWE1MVG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDAxNDYyODgx
MDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9yaWdpbkFjY2Vzc0VudHJ5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDAxNDYyODkxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vz
c0VudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9yaWdpbkFjY2Vzc0Vu
dHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwM0YxRkU5MTFFNkFCNDMwMDgy
NThEOSAvKiBVc2VyQ29udGVudFR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFVzZXJDb250ZW50VHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDBB
NjI5QzAxM0QwQkVDNzAwNTBBQzUyIC8qIFRva2VuQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUb2tlbkJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDBCOTMxODExM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTERvY3VtZW50UGFyc2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBCOTMxODIxM0JBODY3RjAwMzVBOTQ4IC8qIFhN
TERvY3VtZW50UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTERv
Y3VtZW50UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwQjkzMTgzMTNC
QTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzEyLDYgKzEyNzE2LDcgQEAKIAkJCQkw
MDAyMkU2ODEzQ0UxQkJBMDAyODJENUIgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5l
TWV0aG9kcy5oICovLAogCQkJCTAwQ0E5M0I0MTNDNjY5N0MwMEY3RkU5NSAvKiBOZXdYTUxEb2N1
bWVudFBhcnNlci5jcHAgKi8sCiAJCQkJMDBDQTkzQjExM0M2NjkxNjAwRjdGRTk1IC8qIE5ld1hN
TERvY3VtZW50UGFyc2VyLmggKi8sCisJCQkJMDBBNjI5QzAxM0QwQkVDNzAwNTBBQzUyIC8qIFRv
a2VuQmFzZS5oICovLAogCQkJCTAwRDA0NjQ4MTNDNEQxNDUwMDMyNkZDQyAvKiBYTUxDaGFyYWN0
ZXJSZWZlcmVuY2VQYXJzZXIuY3BwICovLAogCQkJCTAwRDA0NjQ5MTNDNEQxNDUwMDMyNkZDQyAv
KiBYTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuaCAqLywKIAkJCQkwMEI5MzE4MTEzQkE4NjdG
MDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXIuY3BwICovLApAQCAtMTI3MTksNiArMTI3MjQs
NyBAQAogCQkJCTAwQjkzMTgzMTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwICovLAogCQkJCTAwQjkzMTg1MTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVu
dFBhcnNlclNjb3BlLmNwcCAqLywKIAkJCQkwMEI5MzE4NjEzQkE4NjdGMDAzNUE5NDggLyogWE1M
RG9jdW1lbnRQYXJzZXJTY29wZS5oICovLAorCQkJCTAwMDJFQzU1MTNDM0Y2N0QwMDA0MEQ0NyAv
KiBYTUxUb2tlbi5oICovLAogCQkJKTsKIAkJCXBhdGggPSBwYXJzZXI7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMjMwNzgsNiArMjMwODQsNyBAQAogCQkJCUE4MzNDODBEMEEyQ0Yy
NTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE1QTM2RDcxMTA0
NTcyMDAwQjdCNjM5IC8qIFhNTE5TTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQ0U1M0VC
MEE4RDE4RTcwMDIyOTQ3RCAvKiBYTUxTZXJpYWxpemVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
MDAyRUM1ODEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU5MDVBREMwMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUI3RkM2OTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNjBEQTVCMEQyQTMxRjcwMEI5OTE4RiAvKiBYUGF0aEV4Y2VwdGlv
bi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzEwNCw2ICsyMzExMSw3IEBACiAJCQkJRkQ1MzczNTMx
MzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTQ1QkZE
NDEzQ0Y4MDkwMDBDQzNCMzggLyogVHJhbnNmb3JtU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ5NjlCMEYzMTNEMEIzM0YwMERGMzUyMSAvKiBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUuaCBp
biBIZWFkZXJzICovLAorCQkJCTAwQTYyOUMxMTNEMEJFQzcwMDUwQUM1MiAvKiBUb2tlbkJhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmll
d1NvdXJjZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VE
b2N1bWVudC5jcHAKaW5kZXggMWE3MGRmYzE5ZDU1YWFkNmNmNDFlZTc4ZDBjMjllN2ZiNTU5ZDZj
MS4uNDAyZmFiODdlNWEyMDMxNzc2YWQ2MmZiMDc0YjhkMzNjZmQyYWY4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwCkBAIC0xMDQsMjQgKzEw
NCwyNCBAQCB2b2lkIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZFNvdXJjZShjb25zdCBTdHJp
bmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgY3JlYXRlQ29udGFpbmluZ1Rh
YmxlKCk7CiAKICAgICBzd2l0Y2ggKHRva2VuLnR5cGUoKSkgewotICAgIGNhc2UgSFRNTFRva2Vu
OjpVbmluaXRpYWxpemVkOgorICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEhUTUxUb2tlbjo6RE9DVFlQRToKKyAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpET0NUWVBFOgog
ICAgICAgICBwcm9jZXNzRG9jdHlwZVRva2VuKHNvdXJjZSwgdG9rZW4pOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIEhUTUxUb2tlbjo6RW5kT2ZGaWxlOgorICAgIGNhc2UgSFRNTFRva2VuVHlw
ZXM6OkVuZE9mRmlsZToKICAgICAgICAgaWYgKCFtX3Rib2R5LT5oYXNDaGlsZE5vZGVzKCkpCiAg
ICAgICAgICAgICBhZGRMaW5lKFN0cmluZygpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBI
VE1MVG9rZW46OlN0YXJ0VGFnOgotICAgIGNhc2UgSFRNTFRva2VuOjpFbmRUYWc6CisgICAgY2Fz
ZSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWc6CisgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5k
VGFnOgogICAgICAgICBwcm9jZXNzVGFnVG9rZW4oc291cmNlLCB0b2tlbik7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSFRNTFRva2VuOjpDb21tZW50OgorICAgIGNhc2UgSFRNTFRva2VuVHlw
ZXM6OkNvbW1lbnQ6CiAgICAgICAgIHByb2Nlc3NDb21tZW50VG9rZW4oc291cmNlLCB0b2tlbik7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuOjpDaGFyYWN0ZXI6CisgICAgY2Fz
ZSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOgogICAgICAgICBwcm9jZXNzQ2hhcmFjdGVyVG9r
ZW4oc291cmNlLCB0b2tlbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRleCA4ZTlj
MjZhMjFhYmZjODVhNWU3MGIyMWE0MDgzNDY4NWQxYzdiYzMyLi4xNGFkZWJkNWU5ZmQwMGI3MzE2
NjVhYzc3MjhiMTk3YTE2YmU0MzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBI
VE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEJvZHlTdGFydFRhZ0luQm9keShBdG9taWNI
VE1MVG9rZW4mIHRva2VuKQogCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnREb2N0
eXBlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9
PSBIVE1MVG9rZW46OkRPQ1RZUEUpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRv
a2VuVHlwZXM6OkRPQ1RZUEUpOwogICAgIGF0dGFjaChtX2F0dGFjaG1lbnRSb290LCBEb2N1bWVu
dFR5cGU6OmNyZWF0ZShtX2RvY3VtZW50LCB0b2tlbi5uYW1lKCksIFN0cmluZzo6YWRvcHQodG9r
ZW4ucHVibGljSWRlbnRpZmllcigpKSwgU3RyaW5nOjphZG9wdCh0b2tlbi5zeXN0ZW1JZGVudGlm
aWVyKCkpKSk7CiAgICAgCiAgICAgLy8gRE9DVFlQRSBub2RlcyBhcmUgb25seSBwcm9jZXNzZWQg
d2hlbiBwYXJzaW5nIGZyYWdtZW50cyB3L28gY29udGV4dEVsZW1lbnRzLCB3aGljaApAQCAtMjQz
LDE5ICsyNDMsMTkgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0RG9jdHlwZShB
dG9taWNIVE1MVG9rZW4mIHRva2VuKQogCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNl
cnRDb21tZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW46OkNvbW1lbnQpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0g
SFRNTFRva2VuVHlwZXM6OkNvbW1lbnQpOwogICAgIGF0dGFjaChjdXJyZW50Tm9kZSgpLCBDb21t
ZW50OjpjcmVhdGUoY3VycmVudE5vZGUoKS0+ZG9jdW1lbnQoKSwgdG9rZW4uY29tbWVudCgpKSk7
CiB9CiAKIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnRPbkRvY3VtZW50
KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBI
VE1MVG9rZW46OkNvbW1lbnQpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
VHlwZXM6OkNvbW1lbnQpOwogICAgIGF0dGFjaChtX2F0dGFjaG1lbnRSb290LCBDb21tZW50Ojpj
cmVhdGUobV9kb2N1bWVudCwgdG9rZW4uY29tbWVudCgpKSk7CiB9CiAKIHZvaWQgSFRNTENvbnN0
cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnRPbkhUTUxIdG1sRWxlbWVudChBdG9taWNIVE1MVG9r
ZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpDb21t
ZW50KTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50
KTsKICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBtX29wZW5FbGVtZW50cy5yb290Tm9kZSgp
OwogICAgIGF0dGFjaChwYXJlbnQsIENvbW1lbnQ6OmNyZWF0ZShwYXJlbnQtPmRvY3VtZW50KCks
IHRva2VuLmNvbW1lbnQoKSkpOwogfQpAQCAtMjk3LDcgKzI5Nyw3IEBAIHZvaWQgSFRNTENvbnN0
cnVjdGlvblNpdGU6Omluc2VydEhUTUxFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAK
IHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFNlbGZDbG9zaW5nSFRNTEVsZW1lbnQo
QXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhU
TUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
VHlwZXM6OlN0YXJ0VGFnKTsKICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGF0dGFjaFRv
Q3VycmVudChjcmVhdGVIVE1MRWxlbWVudCh0b2tlbikpOwogICAgIC8vIE5vcm1hbGx5IEhUTUxF
bGVtZW50U3RhY2sgaXMgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgZmluaXNoUGFyc2luZ0NoaWxk
cmVuLAogICAgIC8vIGJ1dCBzZWxmLWNsb3NpbmcgZWxlbWVudHMgYXJlIG5ldmVyIGluIHRoZSBl
bGVtZW50IHN0YWNrIHNvIHRoZSBzdGFjawpAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQgSFRNTENv
bnN0cnVjdGlvblNpdGU6Omluc2VydFNjcmlwdEVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiB0b2tl
bikKIAogdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Rm9yZWlnbkVsZW1lbnQoQXRv
bWljSFRNTFRva2VuJiB0b2tlbiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpCiB7
Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAgICBB
U1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsgLy8gcGFyc2VFcnJvciB3aGVuIHhtbG5zIG9yIHhtbG5zOnhsaW5rIGFy
ZSB3cm9uZy4KIAogICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gYXR0YWNoVG9DdXJyZW50
KGNyZWF0ZUVsZW1lbnQodG9rZW4sIG5hbWVzcGFjZVVSSSkpOwpAQCAtNDIxLDcgKzQyMSw3IEBA
IFBhc3NSZWZQdHI8RWxlbWVudD4gSFRNTENvbnN0cnVjdGlvblNpdGU6OmNyZWF0ZUhUTUxFbGVt
ZW50RnJvbVNhdmVkRWxlbWVudChFbGVtCiAgICAgLy8gc3BlYyBpbXBsaWVzIGl0IHNob3VsZCBi
ZSAiMSIuICBNaW5lZmllbGQgbWF0Y2hlcyB0aGUgSFRNTDUgc3BlYyBoZXJlLgogCiAgICAgQVNT
RVJUKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSk7IC8vIG90aGVyd2lzZSBsb2NhbE5hbWUoKSBt
aWdodCBiZSB3cm9uZy4KLSAgICBBdG9taWNIVE1MVG9rZW4gZmFrZVRva2VuKEhUTUxUb2tlbjo6
U3RhcnRUYWcsIGVsZW1lbnQtPmxvY2FsTmFtZSgpLCBjbG9uZUF0dHJpYnV0ZXMoZWxlbWVudCkp
OworICAgIEF0b21pY0hUTUxUb2tlbiBmYWtlVG9rZW4oSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFn
LCBlbGVtZW50LT5sb2NhbE5hbWUoKSwgY2xvbmVBdHRyaWJ1dGVzKGVsZW1lbnQpKTsKICAgICBy
ZXR1cm4gY3JlYXRlSFRNTEVsZW1lbnQoZmFrZVRva2VuKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAKaW5kZXggNTQx
MzQ2Njk5Njk0YTkxYzhmM2YzYTBhNzFhZTMyOTU2ZDAyYjcwYS4uOWNlYWFlOWFmMDYwOWJmNzJi
ZjY5ODdjOTJhNjAwZWE2NzhiNGNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwCkBAIC0xNzUsOCArMTc1LDggQEAgYm9v
bCBIVE1MTWV0YUNoYXJzZXRQYXJzZXI6OmNoZWNrRm9yTWV0YUNoYXJzZXQoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCkKICAgICBtX2lucHV0LmFwcGVuZChTZWdtZW50ZWRTdHJpbmco
bV9hc3N1bWVkQ29kZWMtPmRlY29kZShkYXRhLCBsZW5ndGgpKSk7CiAKICAgICB3aGlsZSAobV90
b2tlbml6ZXItPm5leHRUb2tlbihtX2lucHV0LCBtX3Rva2VuKSkgewotICAgICAgICBib29sIGVu
ZCA9IG1fdG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnOwotICAgICAgICBpZiAoZW5k
IHx8IG1fdG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpIHsKKyAgICAgICAgYm9v
bCBlbmQgPSBtX3Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnOworICAgICAg
ICBpZiAoZW5kIHx8IG1fdG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZykg
ewogICAgICAgICAgICAgQXRvbWljU3RyaW5nIHRhZ05hbWUobV90b2tlbi5uYW1lKCkuZGF0YSgp
LCBtX3Rva2VuLm5hbWUoKS5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCFlbmQpIHsKICAgICAg
ICAgICAgICAgICBtX3Rva2VuaXplci0+dXBkYXRlU3RhdGVGb3IodGFnTmFtZSwgMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAppbmRl
eCA5YzMwZWY5MmRlMzEwYTE1YjVkOTFjYTFiOTAwOTk3MDM3OWY1YjYxLi5iOTQyMWQ4ODQ0ZTY5
YWI3MGI5NWE2OWYxYjEyYTgwZDcyYjEwZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTE3NCwxNSArMTc0LDE1IEBAIHZv
aWQgSFRNTFByZWxvYWRTY2FubmVyOjpzY2FuKCkKIHZvaWQgSFRNTFByZWxvYWRTY2FubmVyOjpw
cm9jZXNzVG9rZW4oKQogewogICAgIGlmIChtX2luU3R5bGUpIHsKLSAgICAgICAgaWYgKG1fdG9r
ZW4udHlwZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKQorICAgICAgICBpZiAobV90b2tlbi50
eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcikKICAgICAgICAgICAgIG1fY3NzU2Nh
bm5lci5zY2FuKG1fdG9rZW4sIHNjYW5uaW5nQm9keSgpKTsKLSAgICAgICAgZWxzZSBpZiAobV90
b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpIHsKKyAgICAgICAgZWxzZSBpZiAobV90
b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZykgewogICAgICAgICAgICAgbV9p
blN0eWxlID0gZmFsc2U7CiAgICAgICAgICAgICBtX2Nzc1NjYW5uZXIucmVzZXQoKTsKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGlmIChtX3Rva2VuLnR5cGUoKSAhPSBIVE1MVG9rZW46OlN0YXJ0
VGFnKQorICAgIGlmIChtX3Rva2VuLnR5cGUoKSAhPSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcp
CiAgICAgICAgIHJldHVybjsKIAogICAgIFByZWxvYWRUYXNrIHRhc2sobV90b2tlbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU291cmNlVHJhY2tlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU291cmNlVHJhY2tlci5jcHAKaW5kZXgg
Y2Y0MzEwNWQzOTIxYTYyMjY1ZDZhMmE5ZjdhN2FmMGVlNTFiNTVlYi4uNzBjZjcwOTE1YThiZjhh
OTk1MDE4OTNlZWNlYzlmMWM5OGJhZmVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxTb3VyY2VUcmFja2VyLmNwcApAQCAtMzQsNyArMzQsNyBAQCBIVE1MU291cmNl
VHJhY2tlcjo6SFRNTFNvdXJjZVRyYWNrZXIoKQogCiB2b2lkIEhUTUxTb3VyY2VUcmFja2VyOjpz
dGFydChjb25zdCBIVE1MSW5wdXRTdHJlYW0mIGlucHV0LCBIVE1MVG9rZW4mIHRva2VuKQogewot
ICAgIG1fc291cmNlRnJvbVByZXZpb3VzU2VnbWVudHMgPSB0b2tlbi50eXBlKCkgPT0gSFRNTFRv
a2VuOjpVbmluaXRpYWxpemVkID8gU3RyaW5nKCkgOiBtX3NvdXJjZUZyb21QcmV2aW91c1NlZ21l
bnRzICsgbV9zb3VyY2UudG9TdHJpbmcoKTsKKyAgICBtX3NvdXJjZUZyb21QcmV2aW91c1NlZ21l
bnRzID0gdG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkID8gU3Ry
aW5nKCkgOiBtX3NvdXJjZUZyb21QcmV2aW91c1NlZ21lbnRzICsgbV9zb3VyY2UudG9TdHJpbmco
KTsKICAgICBtX3NvdXJjZSA9IGlucHV0LmN1cnJlbnQoKTsKICAgICB0b2tlbi5zZXRCYXNlT2Zm
c2V0KGlucHV0LmN1cnJlbnQoKS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpIC0gbV9zb3Vy
Y2VGcm9tUHJldmlvdXNTZWdtZW50cy5sZW5ndGgoKSk7CiB9CkBAIC00OCw3ICs0OCw3IEBAIHZv
aWQgSFRNTFNvdXJjZVRyYWNrZXI6OmVuZChjb25zdCBIVE1MSW5wdXRTdHJlYW0mIGlucHV0LCBI
VE1MVG9rZW4mIHRva2VuKQogCiBTdHJpbmcgSFRNTFNvdXJjZVRyYWNrZXI6OnNvdXJjZUZvclRv
a2VuKGNvbnN0IEhUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgaWYgKHRva2VuLnR5cGUoKSA9PSBI
VE1MVG9rZW46OkVuZE9mRmlsZSkKKyAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5
cGVzOjpFbmRPZkZpbGUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsgLy8gSGlkZXMgdGhlIG51
bGwgY2hhcmFjdGVyIHdlIHVzZSB0byBtYXJrIHRoZSBlbmQgb2YgZmlsZS4KIAogICAgIGlmICgh
bV9jYWNoZWRTb3VyY2VGb3JUb2tlbi5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUb2tlbi5oCmluZGV4IDY3ZGI2NDcwNmY3OTMzZGY5YTdiY2Y4MGMyYmMxOTEzNjdiZDc5
NDQuLmZmYWNjNTk3N2U5ZDEwYjkyNTYxNjgyOTczMjNkNmI3MGVhMDM0MDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCkBAIC0yNiwxNCArMjYsMTEgQEAKICNpZm5kZWYg
SFRNTFRva2VuX2gKICNkZWZpbmUgSFRNTFRva2VuX2gKIAotI2luY2x1ZGUgIk5hbWVkTm9kZU1h
cC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgIlRva2VuQmFzZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IEhUTUxUb2tlbiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSFRNTFRva2VuKTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitjbGFzcyBIVE1MVG9rZW5UeXBlcyB7CiBwdWJsaWM6CiAgICAg
ZW51bSBUeXBlIHsKICAgICAgICAgVW5pbml0aWFsaXplZCwKQEAgLTQ1LDMzOSArNDIsNTIgQEAg
cHVibGljOgogICAgICAgICBFbmRPZkZpbGUsCiAgICAgfTsKIAotICAgIGNsYXNzIFJhbmdlIHsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIGludCBtX3N0YXJ0OwotICAgICAgICBpbnQgbV9lbmQ7Ci0g
ICAgfTsKLQotICAgIGNsYXNzIEF0dHJpYnV0ZSB7CisgICAgY2xhc3MgRG9jdHlwZURhdGEgewor
ICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEb2N0eXBlRGF0YSk7CiAgICAgcHVibGljOgot
ICAgICAgICBSYW5nZSBtX25hbWVSYW5nZTsKLSAgICAgICAgUmFuZ2UgbV92YWx1ZVJhbmdlOwot
ICAgICAgICBXVEY6OlZlY3RvcjxVQ2hhciwgMzI+IG1fbmFtZTsKLSAgICAgICAgV1RGOjpWZWN0
b3I8VUNoYXIsIDMyPiBtX3ZhbHVlOworICAgICAgICBEb2N0eXBlRGF0YSgpCisgICAgICAgIDog
bV9oYXNQdWJsaWNJZGVudGlmaWVyKGZhbHNlKQorICAgICAgICAsIG1faGFzU3lzdGVtSWRlbnRp
ZmllcihmYWxzZSkKKyAgICAgICAgLCBtX2ZvcmNlUXVpcmtzKGZhbHNlKQorICAgICAgICB7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgbV9oYXNQdWJsaWNJZGVudGlmaWVyOwor
ICAgICAgICBib29sIG1faGFzU3lzdGVtSWRlbnRpZmllcjsKKyAgICAgICAgYm9vbCBtX2ZvcmNl
UXVpcmtzOworICAgICAgICBXVEY6OlZlY3RvcjxVQ2hhcj4gbV9wdWJsaWNJZGVudGlmaWVyOwor
ICAgICAgICBXVEY6OlZlY3RvcjxVQ2hhcj4gbV9zeXN0ZW1JZGVudGlmaWVyOwogICAgIH07Cit9
OwogCi0gICAgdHlwZWRlZiBXVEY6OlZlY3RvcjxBdHRyaWJ1dGUsIDEwPiBBdHRyaWJ1dGVMaXN0
OwotICAgIHR5cGVkZWYgV1RGOjpWZWN0b3I8VUNoYXIsIDEwMjQ+IERhdGFWZWN0b3I7Ci0KLSAg
ICBIVE1MVG9rZW4oKSB7IGNsZWFyKCk7IH0KLQotICAgIHZvaWQgY2xlYXIoKQotICAgIHsKLSAg
ICAgICAgbV90eXBlID0gVW5pbml0aWFsaXplZDsKLSAgICAgICAgbV9yYW5nZS5tX3N0YXJ0ID0g
MDsKLSAgICAgICAgbV9yYW5nZS5tX2VuZCA9IDA7Ci0gICAgICAgIG1fYmFzZU9mZnNldCA9IDA7
Ci0gICAgICAgIG1fZGF0YS5jbGVhcigpOwotICAgIH0KLQotICAgIGJvb2wgaXNVbmluaXRpYWxp
emVkKCkgeyByZXR1cm4gbV90eXBlID09IFVuaW5pdGlhbGl6ZWQ7IH0KLQotICAgIGludCBzdGFy
dEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZS5tX3N0YXJ0OyB9Ci0gICAgaW50IGVuZElu
ZGV4KCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZS5tX2VuZDsgfQotCi0gICAgdm9pZCBzZXRCYXNl
T2Zmc2V0KGludCBvZmZzZXQpCi0gICAgewotICAgICAgICBtX2Jhc2VPZmZzZXQgPSBvZmZzZXQ7
Ci0gICAgfQotCi0gICAgdm9pZCBlbmQoaW50IGVuZE9mZnNldCkKLSAgICB7Ci0gICAgICAgIG1f
cmFuZ2UubV9lbmQgPSBlbmRPZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7Ci0gICAgfQotCi0gICAgdm9p
ZCBtYWtlRW5kT2ZGaWxlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVW5pbml0
aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9IEVuZE9mRmlsZTsKLSAgICB9Ci0KLSAgICB2b2lk
IGJlZ2luU3RhcnRUYWcoVUNoYXIgY2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNo
YXJhY3Rlcik7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVW5pbml0aWFsaXplZCk7Ci0gICAg
ICAgIG1fdHlwZSA9IFN0YXJ0VGFnOwotICAgICAgICBtX3NlbGZDbG9zaW5nID0gZmFsc2U7Ci0g
ICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9IDA7Ci0gICAgICAgIG1fYXR0cmlidXRlcy5jbGVh
cigpOwotCi0gICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKLSAgICB9Ci0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQgYmVnaW5FbmRUYWcoVCBjaGFyYWN0ZXJzKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxpemVkKTsKLSAgICAgICAg
bV90eXBlID0gRW5kVGFnOwotICAgICAgICBtX3NlbGZDbG9zaW5nID0gZmFsc2U7Ci0gICAgICAg
IG1fY3VycmVudEF0dHJpYnV0ZSA9IDA7Ci0gICAgICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOwot
Ci0gICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVycyk7Ci0gICAgfQotCi0gICAgLy8gU3Rh
cnRpbmcgYSBjaGFyYWN0ZXIgdG9rZW4gd29ya3Mgc2xpZ2h0bHkgZGlmZmVyZW50bHkgdGhhbiBz
dGFydGluZwotICAgIC8vIG90aGVyIHR5cGVzIG9mIHRva2VucyBiZWNhdXNlIHdlIHdhbnQgdG8g
c2F2ZSBhIHBlci1jaGFyYWN0ZXIgYnJhbmNoLgotICAgIHZvaWQgZW5zdXJlSXNDaGFyYWN0ZXJU
b2tlbigpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFVuaW5pdGlhbGl6ZWQgfHwg
bV90eXBlID09IENoYXJhY3Rlcik7Ci0gICAgICAgIG1fdHlwZSA9IENoYXJhY3RlcjsKLSAgICB9
Ci0KLSAgICB2b2lkIGJlZ2luQ29tbWVudCgpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBl
ID09IFVuaW5pdGlhbGl6ZWQpOwotICAgICAgICBtX3R5cGUgPSBDb21tZW50OwotICAgIH0KLQot
ICAgIHZvaWQgYmVnaW5ET0NUWVBFKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
VW5pbml0aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9IERPQ1RZUEU7Ci0gICAgICAgIG1fZG9j
dHlwZURhdGEgPSBhZG9wdFB0cihuZXcgRG9jdHlwZURhdGEoKSk7Ci0gICAgfQotCi0gICAgdm9p
ZCBiZWdpbkRPQ1RZUEUoVUNoYXIgY2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNo
YXJhY3Rlcik7Ci0gICAgICAgIGJlZ2luRE9DVFlQRSgpOwotICAgICAgICBtX2RhdGEuYXBwZW5k
KGNoYXJhY3Rlcik7Ci0gICAgfQotCitjbGFzcyBIVE1MVG9rZW4gOiBwdWJsaWMgVG9rZW5CYXNl
PEhUTUxUb2tlblR5cGVzLCBIVE1MVG9rZW5UeXBlczo6RG9jdHlwZURhdGE+IHsKK3B1YmxpYzoK
KyAgICBIVE1MVG9rZW4oKSA6IFRva2VuQmFzZSgpIHsgfQorICAgIAogICAgIHZvaWQgYXBwZW5k
VG9OYW1lKFVDaGFyIGNoYXJhY3RlcikKICAgICB7Ci0gICAgICAgIEFTU0VSVChjaGFyYWN0ZXIp
OwotICAgICAgICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcg
fHwgbV90eXBlID09IERPQ1RZUEUpOwotICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7
Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIGFwcGVuZFRvQ2hh
cmFjdGVyKFQgY2hhcmFjdGVycykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQ2hh
cmFjdGVyKTsKLSAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXJzKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGFwcGVuZFRvQ29tbWVudChVQ2hhciBjaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBB
U1NFUlQoY2hhcmFjdGVyKTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBDb21tZW50KTsKLSAg
ICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOwotICAgIH0KLQotICAgIHZvaWQgYWRkTmV3
QXR0cmlidXRlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gU3RhcnRUYWcgfHwg
bV90eXBlID09IEVuZFRhZyk7Ci0gICAgICAgIG1fYXR0cmlidXRlcy5ncm93KG1fYXR0cmlidXRl
cy5zaXplKCkgKyAxKTsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlID0gJm1fYXR0cmlidXRl
cy5sYXN0KCk7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1f
bmFtZVJhbmdlLm1fc3RhcnQgPSAwOwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFt
ZVJhbmdlLm1fZW5kID0gMDsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFu
Z2UubV9zdGFydCA9IDA7Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdl
Lm1fZW5kID0gMDsKLSNlbmRpZgotICAgIH0KLQotICAgIHZvaWQgYmVnaW5BdHRyaWJ1dGVOYW1l
KGludCBvZmZzZXQpCi0gICAgewotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJh
bmdlLm1fc3RhcnQgPSBvZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7Ci0gICAgfQotCi0gICAgdm9pZCBl
bmRBdHRyaWJ1dGVOYW1lKGludCBvZmZzZXQpCi0gICAgewotICAgICAgICBpbnQgaW5kZXggPSBv
ZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1l
UmFuZ2UubV9lbmQgPSBpbmRleDsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVl
UmFuZ2UubV9zdGFydCA9IGluZGV4OwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFs
dWVSYW5nZS5tX2VuZCA9IGluZGV4OwotICAgIH0KLQotICAgIHZvaWQgYmVnaW5BdHRyaWJ1dGVW
YWx1ZShpbnQgb2Zmc2V0KQotICAgIHsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3Zh
bHVlUmFuZ2UubV9zdGFydCA9IG9mZnNldCAtIG1fYmFzZU9mZnNldDsKLSNpZm5kZWYgTkRFQlVH
Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fZW5kID0gMDsKLSNl
bmRpZgotICAgIH0KLQotICAgIHZvaWQgZW5kQXR0cmlidXRlVmFsdWUoaW50IG9mZnNldCkKLSAg
ICB7Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fZW5kID0gb2Zm
c2V0IC0gbV9iYXNlT2Zmc2V0OwotICAgIH0KLQotICAgIHZvaWQgYXBwZW5kVG9BdHRyaWJ1dGVO
YW1lKFVDaGFyIGNoYXJhY3RlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwot
ICAgICAgICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcpOwot
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gYWRkIHRoZSBmb2xsb3dpbmcg
QVNTRVJUIG9uY2Ugd2UgZml4Ci0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02Mjk3MQotICAgICAgICAvLyAgIEFTU0VSVChtX2N1cnJlbnRBdHRyaWJ1
dGUtPm1fbmFtZVJhbmdlLm1fc3RhcnQpOwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1f
bmFtZS5hcHBlbmQoY2hhcmFjdGVyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGVuZFRvQXR0cmli
dXRlVmFsdWUoVUNoYXIgY2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNoYXJhY3Rl
cik7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRh
Zyk7Ci0gICAgICAgIEFTU0VSVChtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX3N0
YXJ0KTsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlLmFwcGVuZChjaGFyYWN0
ZXIpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8
fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2Vu
VHlwZXM6OkRPQ1RZUEUpOworICAgICAgICBkb0FwcGVuZFRvTmFtZShjaGFyYWN0ZXIpOwogICAg
IH0KLQotICAgIHZvaWQgYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShzaXplX3QgaSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghdmFsdWUuaXNFbXB0eSgpKTsKLSAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBTdGFydFRhZyB8fCBtX3R5cGUgPT0gRW5kVGFnKTsKLSAg
ICAgICAgbV9hdHRyaWJ1dGVzW2ldLm1fdmFsdWUuYXBwZW5kKHZhbHVlLmNoYXJhY3RlcnMoKSwg
dmFsdWUubGVuZ3RoKCkpOwotICAgIH0KLQotICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQotCi0gICAgYm9vbCBzZWxmQ2xvc2luZygpIGNvbnN0Ci0gICAgewotICAgICAg
ICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcpOwotICAgICAg
ICByZXR1cm4gbV9zZWxmQ2xvc2luZzsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFNlbGZDbG9zaW5n
KCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpTdGFydFRhZyB8
fCBtX3R5cGUgPT0gSFRNTFRva2VuOjpFbmRUYWcpOwotICAgICAgICBtX3NlbGZDbG9zaW5nID0g
dHJ1ZTsKLSAgICB9Ci0KLSAgICBjb25zdCBBdHRyaWJ1dGVMaXN0JiBhdHRyaWJ1dGVzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gU3RhcnRUYWcgfHwgbV90eXBlID09
IEVuZFRhZyk7Ci0gICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXM7Ci0gICAgfQotCisgICAgCiAg
ICAgY29uc3QgRGF0YVZlY3RvciYgbmFtZSgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQo
bV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcgfHwgbV90eXBlID09IERPQ1RZ
UEUpOwotICAgICAgICByZXR1cm4gbV9kYXRhOwotICAgIH0KLQotICAgIHZvaWQgZXJhc2VDaGFy
YWN0ZXJzKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQ2hhcmFjdGVyKTsKLSAg
ICAgICAgbV9kYXRhLmNsZWFyKCk7Ci0gICAgfQotCi0gICAgdm9pZCBlcmFzZVZhbHVlT2ZBdHRy
aWJ1dGUoc2l6ZV90IGkpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFn
IHx8IG1fdHlwZSA9PSBFbmRUYWcpOwotICAgICAgICBtX2F0dHJpYnV0ZXNbaV0ubV92YWx1ZS5j
bGVhcigpOwotICAgIH0KLQotICAgIGNvbnN0IERhdGFWZWN0b3ImIGNoYXJhY3RlcnMoKSBjb25z
dAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBDaGFyYWN0ZXIpOwotICAgICAgICBy
ZXR1cm4gbV9kYXRhOwotICAgIH0KLQotICAgIGNvbnN0IERhdGFWZWN0b3ImIGNvbW1lbnQoKSBj
b25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBDb21tZW50KTsKLSAgICAgICAg
cmV0dXJuIG1fZGF0YTsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogRGlzdGluZ3Vpc2ggYmV0d2Vl
biBhIG1pc3NpbmcgcHVibGljIGlkZW50aWZlciBhbmQgYW4gZW1wdHkgb25lLgotICAgIGNvbnN0
IFdURjo6VmVjdG9yPFVDaGFyPiYgcHVibGljSWRlbnRpZmllcigpIGNvbnN0Ci0gICAgewotICAg
ICAgICBBU1NFUlQobV90eXBlID09IERPQ1RZUEUpOwotICAgICAgICByZXR1cm4gbV9kb2N0eXBl
RGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBEaXN0aW5n
dWlzaCBiZXR3ZWVuIGEgbWlzc2luZyBzeXN0ZW0gaWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBvbmUu
Ci0gICAgY29uc3QgV1RGOjpWZWN0b3I8VUNoYXI+JiBzeXN0ZW1JZGVudGlmaWVyKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7Ci0gICAgICAgIHJldHVy
biBtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXI7Ci0gICAgfQotCi0gICAgdm9pZCBz
ZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpCi0gICAgewotICAgICAgICBBU1NFUlQo
bV90eXBlID09IERPQ1RZUEUpOwotICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2hhc1B1YmxpY0lk
ZW50aWZpZXIgPSB0cnVlOwotICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZp
ZXIuY2xlYXIoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5
U3RyaW5nKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7Ci0gICAg
ICAgIG1fZG9jdHlwZURhdGEtPm1faGFzU3lzdGVtSWRlbnRpZmllciA9IHRydWU7Ci0gICAgICAg
IG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllci5jbGVhcigpOworICAgICAgICBBU1NF
UlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRv
a2VuVHlwZXM6OkVuZFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOwor
ICAgICAgICByZXR1cm4gZ2V0TmFtZSgpOwogICAgIH0KIAogICAgIGJvb2wgZm9yY2VRdWlya3Mo
KSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBET0NUWVBFKTsKKyAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CiAgICAgICAgIHJl
dHVybiBtX2RvY3R5cGVEYXRhLT5tX2ZvcmNlUXVpcmtzOwogICAgIH0KIAogICAgIHZvaWQgc2V0
Rm9yY2VRdWlya3MoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBET0NUWVBFKTsK
KyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CiAgICAg
ICAgIG1fZG9jdHlwZURhdGEtPm1fZm9yY2VRdWlya3MgPSB0cnVlOwogICAgIH0KIAotICAgIHZv
aWQgYXBwZW5kVG9QdWJsaWNJZGVudGlmaWVyKFVDaGFyIGNoYXJhY3RlcikKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBBU1NFUlQobV90eXBlID09IERPQ1RZUEUp
OwotICAgICAgICBBU1NFUlQobV9kb2N0eXBlRGF0YS0+bV9oYXNQdWJsaWNJZGVudGlmaWVyKTsK
LSAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyLmFwcGVuZChjaGFyYWN0
ZXIpOwotICAgIH0KLQotICAgIHZvaWQgYXBwZW5kVG9TeXN0ZW1JZGVudGlmaWVyKFVDaGFyIGNo
YXJhY3RlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBBU1NF
UlQobV90eXBlID09IERPQ1RZUEUpOwotICAgICAgICBBU1NFUlQobV9kb2N0eXBlRGF0YS0+bV9o
YXNTeXN0ZW1JZGVudGlmaWVyKTsKLSAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVu
dGlmaWVyLmFwcGVuZChjaGFyYWN0ZXIpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICAvLyBGSVhN
RTogSSdtIG5vdCBzdXJlIHdoYXQgdGhlIGZpbmFsIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIEhUTUxU
b2tlbiBhbmQKLSAgICAvLyBBdG9taWNIVE1MVG9rZW4gd2lsbCBiZS4gIEknbSBtYXJraW5nIHRo
aXMgYSBmcmllbmQgZm9yIG5vdywgYnV0IHdlJ2xsCi0gICAgLy8gd2FudCB0byBlbmQgdXAgd2l0
aCBhIGNsZWFuZXIgaW50ZXJmYWNlIGJldHdlZW4gdGhlIHR3byBjbGFzc2VzLgotICAgIGZyaWVu
ZCBjbGFzcyBBdG9taWNIVE1MVG9rZW47Ci0KLSAgICBjbGFzcyBEb2N0eXBlRGF0YSB7Ci0gICAg
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERvY3R5cGVEYXRhKTsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIERvY3R5cGVEYXRhKCkKLSAgICAgICAgICAgIDogbV9oYXNQdWJsaWNJZGVudGlmaWVyKGZh
bHNlKQotICAgICAgICAgICAgLCBtX2hhc1N5c3RlbUlkZW50aWZpZXIoZmFsc2UpCi0gICAgICAg
ICAgICAsIG1fZm9yY2VRdWlya3MoZmFsc2UpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAg
ICAgIGJvb2wgbV9oYXNQdWJsaWNJZGVudGlmaWVyOwotICAgICAgICBib29sIG1faGFzU3lzdGVt
SWRlbnRpZmllcjsKLSAgICAgICAgYm9vbCBtX2ZvcmNlUXVpcmtzOwotICAgICAgICBXVEY6OlZl
Y3RvcjxVQ2hhcj4gbV9wdWJsaWNJZGVudGlmaWVyOwotICAgICAgICBXVEY6OlZlY3RvcjxVQ2hh
cj4gbV9zeXN0ZW1JZGVudGlmaWVyOwotICAgIH07Ci0KLSAgICBUeXBlIG1fdHlwZTsKLSAgICBS
YW5nZSBtX3JhbmdlOyAvLyBBbHdheXMgc3RhcnRzIGF0IHplcm8uCi0gICAgaW50IG1fYmFzZU9m
ZnNldDsKLQotICAgIC8vICJuYW1lIiBmb3IgRE9DVFlQRSwgU3RhcnRUYWcsIGFuZCBFbmRUYWcK
LSAgICAvLyAiY2hhcmFjdGVycyIgZm9yIENoYXJhY3RlcgotICAgIC8vICJkYXRhIiBmb3IgQ29t
bWVudAotICAgIERhdGFWZWN0b3IgbV9kYXRhOwotCi0gICAgLy8gRm9yIERPQ1RZUEUKLSAgICBP
d25QdHI8RG9jdHlwZURhdGE+IG1fZG9jdHlwZURhdGE7Ci0KLSAgICAvLyBGb3IgU3RhcnRUYWcg
YW5kIEVuZFRhZwotICAgIGJvb2wgbV9zZWxmQ2xvc2luZzsKLSAgICBBdHRyaWJ1dGVMaXN0IG1f
YXR0cmlidXRlczsKLQotICAgIC8vIEEgcG9pbnRlciBpbnRvIG1fYXR0cmlidXRlcyB1c2VkIGR1
cmluZyBsZXhpbmcuCi0gICAgQXR0cmlidXRlKiBtX2N1cnJlbnRBdHRyaWJ1dGU7CiB9OwogCiAv
LyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgZXZlbnR1YWxseSBiZSBuYW1lZCBIVE1MVG9rZW4g
b25jZSB3ZSBtb3ZlIHRoZQpAQCAtMzg5LDMyICs5OSwzNCBAQCBwdWJsaWM6CiAgICAgICAgIDog
bV90eXBlKHRva2VuLnR5cGUoKSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV90eXBlKSB7Ci0g
ICAgICAgIGNhc2UgSFRNTFRva2VuOjpVbmluaXRpYWxpemVkOgorICAgICAgICBjYXNlIEhUTUxU
b2tlblR5cGVzOjpVbmluaXRpYWxpemVkOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW46OkRPQ1RZUEU6
CisgICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEU6CiAgICAgICAgICAgICBtX25h
bWUgPSBBdG9taWNTdHJpbmcodG9rZW4ubmFtZSgpLmRhdGEoKSwgdG9rZW4ubmFtZSgpLnNpemUo
KSk7CiAgICAgICAgICAgICBtX2RvY3R5cGVEYXRhID0gdG9rZW4ubV9kb2N0eXBlRGF0YS5yZWxl
YXNlKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW46OkVuZE9m
RmlsZToKKyAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxlOgogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuOjpTdGFydFRhZzoKLSAgICAgICAgY2Fz
ZSBIVE1MVG9rZW46OkVuZFRhZzogeworICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpTdGFy
dFRhZzoKKyAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnOiB7CiAgICAgICAgICAg
ICBtX3NlbGZDbG9zaW5nID0gdG9rZW4uc2VsZkNsb3NpbmcoKTsKICAgICAgICAgICAgIG1fbmFt
ZSA9IEF0b21pY1N0cmluZyh0b2tlbi5uYW1lKCkuZGF0YSgpLCB0b2tlbi5uYW1lKCkuc2l6ZSgp
KTsKICAgICAgICAgICAgIGluaXRpYWxpemVBdHRyaWJ1dGVzKHRva2VuLmF0dHJpYnV0ZXMoKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIEhUTUxUb2tlbjo6
Q29tbWVudDoKKyAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudDoKICAgICAgICAg
ICAgIG1fZGF0YSA9IFN0cmluZyh0b2tlbi5jb21tZW50KCkuZGF0YSgpLCB0b2tlbi5jb21tZW50
KCkuc2l6ZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEhUTUxUb2tlbjo6
Q2hhcmFjdGVyOgorICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXI6CiAgICAg
ICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVycyA9ICZ0b2tlbi5jaGFyYWN0ZXJzKCk7CiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgfQogCi0gICAgQXRvbWljSFRNTFRva2VuKEhUTUxUb2tlbjo6VHlwZSB0eXBl
LCBBdG9taWNTdHJpbmcgbmFtZSwgUGFzc1JlZlB0cjxOYW1lZE5vZGVNYXA+IGF0dHJpYnV0ZXMg
PSAwKQorICAgIEF0b21pY0hUTUxUb2tlbihIVE1MVG9rZW5UeXBlczo6VHlwZSB0eXBlLCBBdG9t
aWNTdHJpbmcgbmFtZSwgUGFzc1JlZlB0cjxOYW1lZE5vZGVNYXA+IGF0dHJpYnV0ZXMgPSAwKQog
ICAgICAgICA6IG1fdHlwZSh0eXBlKQogICAgICAgICAsIG1fbmFtZShuYW1lKQogICAgICAgICAs
IG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQpAQCAtNDIyLDcgKzEzNCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgQVNTRVJUKHVzZXNOYW1lKCkpOwogICAgIH0KIAotICAgIEhUTUxUb2tlbjo6VHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgSFRNTFRva2VuVHlwZXM6OlR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKCkgY29uc3QKICAgICB7CkBAIC00MzgsNyArMTUwLDcgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBzZWxmQ2xvc2luZygpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09
IEhUTUxUb2tlbjo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKKyAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBl
ID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOwogICAgICAgICByZXR1cm4gbV9zZWxmQ2xvc2lu
ZzsKICAgICB9CiAKQEAgLTQ2NCw0OSArMTc2LDQ5IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEhU
TUxUb2tlbjo6RGF0YVZlY3RvciYgY2hhcmFjdGVycygpIGNvbnN0CiAgICAgewotICAgICAgICBB
U1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKTsKKyAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKTsKICAgICAgICAgcmV0dXJuICptX2V4
dGVybmFsQ2hhcmFjdGVyczsKICAgICB9CiAKICAgICBjb25zdCBTdHJpbmcmIGNvbW1lbnQoKSBj
b25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OkNvbW1lbnQp
OworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50KTsKICAg
ICAgICAgcmV0dXJuIG1fZGF0YTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogRGlzdGluZ3Vpc2gg
YmV0d2VlbiBhIG1pc3NpbmcgcHVibGljIGlkZW50aWZlciBhbmQgYW4gZW1wdHkgb25lLgogICAg
IFdURjo6VmVjdG9yPFVDaGFyPiYgcHVibGljSWRlbnRpZmllcigpIGNvbnN0CiAgICAgewotICAg
ICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6RE9DVFlQRSk7CisgICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOwogICAgICAgICByZXR1cm4gbV9k
b2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBE
aXN0aW5ndWlzaCBiZXR3ZWVuIGEgbWlzc2luZyBzeXN0ZW0gaWRlbnRpZmVyIGFuZCBhbiBlbXB0
eSBvbmUuCiAgICAgV1RGOjpWZWN0b3I8VUNoYXI+JiBzeXN0ZW1JZGVudGlmaWVyKCkgY29uc3QK
ICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpET0NUWVBFKTsKKyAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CiAgICAgICAg
IHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXI7CiAgICAgfQogCiAgICAg
Ym9vbCBmb3JjZVF1aXJrcygpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09
IEhUTUxUb2tlbjo6RE9DVFlQRSk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2Vu
VHlwZXM6OkRPQ1RZUEUpOwogICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9mb3JjZVF1
aXJrczsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgSFRNTFRva2VuOjpUeXBlIG1fdHlwZTsKKyAg
ICBIVE1MVG9rZW5UeXBlczo6VHlwZSBtX3R5cGU7CiAKICAgICB2b2lkIGluaXRpYWxpemVBdHRy
aWJ1dGVzKGNvbnN0IEhUTUxUb2tlbjo6QXR0cmlidXRlTGlzdCYgYXR0cmlidXRlcyk7CiAgICAg
CiAgICAgYm9vbCB1c2VzTmFtZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV90eXBl
ID09IEhUTUxUb2tlbjo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlbjo6RW5kVGFnIHx8
IG1fdHlwZSA9PSBIVE1MVG9rZW46OkRPQ1RZUEU7CisgICAgICAgIHJldHVybiBtX3R5cGUgPT0g
SFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5k
VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRTsKICAgICB9CiAKICAgICBi
b29sIHVzZXNBdHRyaWJ1dGVzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3R5cGUg
PT0gSFRNTFRva2VuOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuOjpFbmRUYWc7Cisg
ICAgICAgIHJldHVybiBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlw
ZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnOwogICAgIH0KIAogICAgIC8vICJuYW1lIiBmb3Ig
RE9DVFlQRSwgU3RhcnRUYWcsIGFuZCBFbmRUYWcKQEAgLTUyNiw3ICsyMzgsNyBAQCBwcml2YXRl
OgogICAgIGNvbnN0IEhUTUxUb2tlbjo6RGF0YVZlY3RvciogbV9leHRlcm5hbENoYXJhY3RlcnM7
CiAKICAgICAvLyBGb3IgRE9DVFlQRQotICAgIE93blB0cjxIVE1MVG9rZW46OkRvY3R5cGVEYXRh
PiBtX2RvY3R5cGVEYXRhOworICAgIE93blB0cjxIVE1MVG9rZW5UeXBlczo6RG9jdHlwZURhdGE+
IG1fZG9jdHlwZURhdGE7CiAKICAgICAvLyBGb3IgU3RhcnRUYWcgYW5kIEVuZFRhZwogICAgIGJv
b2wgbV9zZWxmQ2xvc2luZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUb2tlbml6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2Vu
aXplci5jcHAKaW5kZXggMzA1ZmNhMjYwMzllZGI1MDc4NGJiNTM3NGU3NzNiZDhjYThhNjk4NS4u
NmQ1N2VlYWUxZDg5MGRkZDMxZjNmYzM3M2E0ZjUwODc5MTI2Y2I3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAKQEAgLTE4Nyw4ICsxODcsOCBAQCBp
bmxpbmUgYm9vbCBIVE1MVG9rZW5pemVyOjpwcm9jZXNzRW50aXR5KFNlZ21lbnRlZFN0cmluZyYg
c291cmNlKQogCiBpbmxpbmUgdm9pZCBIVE1MVG9rZW5pemVyOjpzYXZlRW5kVGFnTmFtZUlmTmVl
ZGVkKCkKIHsKLSAgICBBU1NFUlQobV90b2tlbi0+dHlwZSgpICE9IEhUTUxUb2tlbjo6VW5pbml0
aWFsaXplZCk7Ci0gICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFn
KQorICAgIEFTU0VSVChtX3Rva2VuLT50eXBlKCkgIT0gSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlh
bGl6ZWQpOworICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0
VGFnKQogICAgICAgICBtX2FwcHJvcHJpYXRlRW5kVGFnTmFtZSA9IG1fdG9rZW4tPm5hbWUoKTsK
IH0KIApAQCAtMjI3LDkgKzIyNyw5IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6ZW1pdEVuZE9mRmls
ZShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKIAogYm9vbCBIVE1MVG9rZW5pemVyOjpmbHVzaEJ1
ZmZlcmVkRW5kVGFnKFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQogewotICAgIEFTU0VSVChtX3Rv
a2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIgfHwgbV90b2tlbi0+dHlwZSgpID09
IEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZCk7CisgICAgQVNTRVJUKG1fdG9rZW4tPnR5cGUoKSA9
PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyIHx8IG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9r
ZW5UeXBlczo6VW5pbml0aWFsaXplZCk7CiAgICAgc291cmNlLmFkdmFuY2UobV9saW5lTnVtYmVy
KTsKLSAgICBpZiAobV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKQorICAg
IGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcikKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgbV90b2tlbi0+YmVnaW5FbmRUYWcobV9idWZmZXJlZEVuZFRh
Z05hbWUpOwogICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7CkBAIC0yNTksNyArMjU5
LDcgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3Vy
Y2UsIEhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgLy8gSWYgd2UgaGF2ZSBhIHRva2VuIGluIHBy
b2dyZXNzLCB0aGVuIHdlJ3JlIHN1cHBvc2VkIHRvIGJlIGNhbGxlZCBiYWNrCiAgICAgLy8gd2l0
aCB0aGUgc2FtZSB0b2tlbiBzbyB3ZSBjYW4gZmluaXNoIGl0LgotICAgIEFTU0VSVCghbV90b2tl
biB8fCBtX3Rva2VuID09ICZ0b2tlbiB8fCB0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpVbmlu
aXRpYWxpemVkKTsKKyAgICBBU1NFUlQoIW1fdG9rZW4gfHwgbV90b2tlbiA9PSAmdG9rZW4gfHwg
dG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsKICAgICBtX3Rv
a2VuID0gJnRva2VuOwogCiAgICAgaWYgKCFtX2J1ZmZlcmVkRW5kVGFnTmFtZS5pc0VtcHR5KCkg
JiYgIWlzRW5kVGFnQnVmZmVyaW5nU3RhdGUobV9zdGF0ZSkpIHsKQEAgLTMwNyw3ICszMDcsNyBA
QCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwg
SFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgaWYgKGNjID09ICcmJykKICAgICAgICAgICAgIEFE
VkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5EYXRhU3RhdGUpOwogICAgICAgICBlbHNlIGlm
IChjYyA9PSAnPCcpIHsKLSAgICAgICAgICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRv
a2VuOjpDaGFyYWN0ZXIpIHsKKyAgICAgICAgICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRN
TFRva2VuVHlwZXM6OkNoYXJhY3RlcikgewogICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBi
dW5jaCBvZiBjaGFyYWN0ZXIgdG9rZW5zIHF1ZXVlZCB1cCB0aGF0IHdlCiAgICAgICAgICAgICAg
ICAgLy8gYXJlIGVtaXR0aW5nIGxhemlseSBoZXJlLgogICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMTY5Miw3ICsxNjkyLDcgQEAgaW5saW5lIHZvaWQgSFRNTFRva2VuaXplcjo6cGFy
c2VFcnJvcigpCiAKIGlubGluZSBib29sIEhUTUxUb2tlbml6ZXI6OmhhdmVCdWZmZXJlZENoYXJh
Y3RlclRva2VuKCkKIHsKLSAgICByZXR1cm4gbV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6
Q2hhcmFjdGVyOworICAgIHJldHVybiBtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6
OkNoYXJhY3RlcjsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxU
cmVlQnVpbGRlci5jcHAKaW5kZXggODIzMDE0MWIyMTYxMmIyMjNlMjUzMDVkMTdjOTNkZWYyNGNm
ZDQ2OC4uYjdlYmNlNzk1NDJlNWNlNDU1YWU3MmQ1MTk2ZTQ0NDRiMGQ2MWE3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC00NDYsMTMg
KzQ0NiwxMyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbihI
VE1MVG9rZW4mIHJhd1Rva2VuKQogICAgIC8vIEZJWE1FOiBUb3AgY2xlYXJpbmcgdGhlIHJhd1Rv
a2VuIG9uY2Ugd2Ugc3RhcnQgcnVubmluZyB0aGUgcGFyc2VyIG9mZgogICAgIC8vIHRoZSBtYWlu
IHRocmVhZCBvciBvbmNlIHdlIHN0b3AgYWxsb3dpbmcgc3luY2hyb25vdXMgSmF2YVNjcmlwdAog
ICAgIC8vIGV4ZWN1dGlvbiBmcm9tIHBhcnNlTWFwcGVkQXR0cmlidXRlLgotICAgIGlmIChyYXdU
b2tlbi50eXBlKCkgIT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIpCisgICAgaWYgKHJhd1Rva2VuLnR5
cGUoKSAhPSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKQogICAgICAgICByYXdUb2tlbi5jbGVh
cigpOwogCiAgICAgY29uc3RydWN0VHJlZUZyb21BdG9taWNUb2tlbih0b2tlbik7CiAKICAgICBp
ZiAoIXJhd1Rva2VuLmlzVW5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIEFTU0VSVChyYXdUb2tl
bi50eXBlKCkgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIpOworICAgICAgICBBU1NFUlQocmF3VG9r
ZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpOwogICAgICAgICByYXdUb2tl
bi5jbGVhcigpOwogICAgIH0KIH0KQEAgLTQ3MSwyNSArNDcxLDI1IEBAIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpjb25zdHJ1Y3RUcmVlRnJvbUF0b21pY1Rva2VuKEF0b21pY0hUTUxUb2tlbiYgdG9r
ZW4pCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1Rva2VuKEF0b21pY0hUTUxUb2tlbiYg
dG9rZW4pCiB7CiAgICAgc3dpdGNoICh0b2tlbi50eXBlKCkpIHsKLSAgICBjYXNlIEhUTUxUb2tl
bjo6VW5pbml0aWFsaXplZDoKKyAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVk
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBIVE1MVG9rZW46OkRPQ1RZUEU6CisgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRToK
ICAgICAgICAgcHJvY2Vzc0RvY3R5cGVUb2tlbih0b2tlbik7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgSFRNTFRva2VuOjpTdGFydFRhZzoKKyAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpTdGFy
dFRhZzoKICAgICAgICAgcHJvY2Vzc1N0YXJ0VGFnKHRva2VuKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBIVE1MVG9rZW46OkVuZFRhZzoKKyAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpFbmRU
YWc6CiAgICAgICAgIHByb2Nlc3NFbmRUYWcodG9rZW4pOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEhUTUxUb2tlbjo6Q29tbWVudDoKKyAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDb21tZW50
OgogICAgICAgICBwcm9jZXNzQ29tbWVudCh0b2tlbik7CiAgICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOgorICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkNoYXJh
Y3RlcjoKICAgICAgICAgcHJvY2Vzc0NoYXJhY3Rlcih0b2tlbik7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSFRNTFRva2VuOjpFbmRPZkZpbGU6CisgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6
RW5kT2ZGaWxlOgogICAgICAgICBwcm9jZXNzRW5kT2ZGaWxlKHRva2VuKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQpAQCAtNDk3LDcgKzQ5Nyw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9j
ZXNzVG9rZW4oQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NEb2N0eXBlVG9rZW4oQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NF
UlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RE9DVFlQRSk7CisgICAgQVNTRVJUKHRva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CiAgICAgaWYgKG1faW5zZXJ0aW9u
TW9kZSA9PSBJbml0aWFsTW9kZSkgewogICAgICAgICBtX3RyZWUuaW5zZXJ0RG9jdHlwZSh0b2tl
bik7CiAgICAgICAgIHNldEluc2VydGlvbk1vZGUoQmVmb3JlSFRNTE1vZGUpOwpAQCAtNTE0LDE0
ICs1MTQsMTQgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NEb2N0eXBlVG9rZW4oQXRv
bWljSFRNTFRva2VuJiB0b2tlbikKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZVN0
YXJ0VGFnKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIFBhc3NSZWZQdHI8TmFtZWROb2Rl
TWFwPiBhdHRyaWJ1dGVzKQogewogICAgIC8vIEZJWE1FOiBXZSdsbCBuZWVkIGEgZmFuY2llciBj
b252ZXJzaW9uIHRoYW4ganVzdCAibG9jYWxOYW1lIiBmb3IgU1ZHL01hdGhNTCB0YWdzLgotICAg
IEF0b21pY0hUTUxUb2tlbiBmYWtlVG9rZW4oSFRNTFRva2VuOjpTdGFydFRhZywgdGFnTmFtZS5s
b2NhbE5hbWUoKSwgYXR0cmlidXRlcyk7CisgICAgQXRvbWljSFRNTFRva2VuIGZha2VUb2tlbihI
VE1MVG9rZW5UeXBlczo6U3RhcnRUYWcsIHRhZ05hbWUubG9jYWxOYW1lKCksIGF0dHJpYnV0ZXMp
OwogICAgIHByb2Nlc3NTdGFydFRhZyhmYWtlVG9rZW4pOwogfQogCiB2b2lkIEhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc0Zha2VFbmRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkKIHsK
ICAgICAvLyBGSVhNRTogV2UnbGwgbmVlZCBhIGZhbmNpZXIgY29udmVyc2lvbiB0aGFuIGp1c3Qg
ImxvY2FsTmFtZSIgZm9yIFNWRy9NYXRoTUwgdGFncy4KLSAgICBBdG9taWNIVE1MVG9rZW4gZmFr
ZVRva2VuKEhUTUxUb2tlbjo6RW5kVGFnLCB0YWdOYW1lLmxvY2FsTmFtZSgpKTsKKyAgICBBdG9t
aWNIVE1MVG9rZW4gZmFrZVRva2VuKEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIHRhZ05hbWUubG9j
YWxOYW1lKCkpOwogICAgIHByb2Nlc3NFbmRUYWcoZmFrZVRva2VuKTsKIH0KIApAQCAtNTM2LDcg
KzUzNiw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZVBFbmRUYWdJZlBJbkJ1
dHRvblNjb3BlKCkKIHsKICAgICBpZiAoIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5CdXR0b25T
Y29wZShwVGFnLmxvY2FsTmFtZSgpKSkKICAgICAgICAgcmV0dXJuOwotICAgIEF0b21pY0hUTUxU
b2tlbiBlbmRQKEhUTUxUb2tlbjo6RW5kVGFnLCBwVGFnLmxvY2FsTmFtZSgpKTsKKyAgICBBdG9t
aWNIVE1MVG9rZW4gZW5kUChIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCBwVGFnLmxvY2FsTmFtZSgp
KTsKICAgICBwcm9jZXNzRW5kVGFnKGVuZFApOwogfQogCkBAIC01NTgsNyArNTU4LDcgQEAgUGFz
c1JlZlB0cjxOYW1lZE5vZGVNYXA+IEhUTUxUcmVlQnVpbGRlcjo6YXR0cmlidXRlc0ZvcklzaW5k
ZXhJbnB1dChBdG9taWNIVE1MVG8KIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NJc2lu
ZGV4U3RhcnRUYWdGb3JJbkJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NF
UlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tl
bi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQodG9rZW4u
bmFtZSgpID09IGlzaW5kZXhUYWcpOwogICAgIHBhcnNlRXJyb3IodG9rZW4pOwogICAgIGlmICht
X3RyZWUuZm9ybSgpKQpAQCAtNzI2LDcgKzcyNiw3IEBAIHZvaWQgYWRqdXN0Rm9yZWlnbkF0dHJp
YnV0ZXMoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NTdGFydFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewotICAgIEFT
U0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRv
a2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIGlmICh0b2tlbi5u
YW1lKCkgPT0gaHRtbFRhZykgewogICAgICAgICBtX3RyZWUuaW5zZXJ0SFRNTEh0bWxTdGFydFRh
Z0luQm9keSh0b2tlbik7CiAgICAgICAgIHJldHVybjsKQEAgLTk4MSw3ICs5ODEsNyBAQCB2b2lk
IEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tl
biYgdG9rZW4pCiAgICAgfQogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gb3B0Z3JvdXBUYWcgfHwg
dG9rZW4ubmFtZSgpID09IG9wdGlvblRhZykgewogICAgICAgICBpZiAobV90cmVlLm9wZW5FbGVt
ZW50cygpLT5pblNjb3BlKG9wdGlvblRhZy5sb2NhbE5hbWUoKSkpIHsKLSAgICAgICAgICAgIEF0
b21pY0hUTUxUb2tlbiBlbmRPcHRpb24oSFRNTFRva2VuOjpFbmRUYWcsIG9wdGlvblRhZy5sb2Nh
bE5hbWUoKSk7CisgICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kT3B0aW9uKEhUTUxUb2tl
blR5cGVzOjpFbmRUYWcsIG9wdGlvblRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICBwcm9j
ZXNzRW5kVGFnKGVuZE9wdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgbV90cmVlLnJlY29uc3Ry
dWN0VGhlQWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7CkBAIC0xMDU4LDcgKzEwNTgsNyBAQCB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6Y2xvc2VUaGVDZWxsKCkKIAogdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluVGFibGUoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsK
LSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFT
U0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBpZiAo
dG9rZW4ubmFtZSgpID09IGNhcHRpb25UYWcpIHsKICAgICAgICAgbV90cmVlLm9wZW5FbGVtZW50
cygpLT5wb3BVbnRpbFRhYmxlU2NvcGVNYXJrZXIoKTsKICAgICAgICAgbV90cmVlLmFjdGl2ZUZv
cm1hdHRpbmdFbGVtZW50cygpLT5hcHBlbmRNYXJrZXIoKTsKQEAgLTExMzAsNyArMTEzMCw3IEBA
IG5hbWVzcGFjZSB7CiAKIGJvb2wgc2hvdWxkUHJvY2Vzc0ZvcmVpZ25Db250ZW50VXNpbmdJbkJv
ZHlJbnNlcnRpb25Nb2RlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4sIENvbnRhaW5lck5vZGUqIGN1
cnJlbnRFbGVtZW50KQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpT
dGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3Rh
cnRUYWcpOwogICAgIGlmIChjdXJyZW50RWxlbWVudC0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6
bWlUYWcpCiAgICAgICAgIHx8IGN1cnJlbnRFbGVtZW50LT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVz
Ojptb1RhZykKICAgICAgICAgfHwgY3VycmVudEVsZW1lbnQtPmhhc1RhZ05hbWUoTWF0aE1MTmFt
ZXM6Om1uVGFnKQpAQCAtMTE1Miw3ICsxMTUyLDcgQEAgYm9vbCBzaG91bGRQcm9jZXNzRm9yZWln
bkNvbnRlbnRVc2luZ0luQm9keUluc2VydGlvbk1vZGUoQXRvbWljSFRNTFRva2VuJiB0b2tlbiwK
IAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4m
IHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRh
Zyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcp
OwogICAgIHN3aXRjaCAoaW5zZXJ0aW9uTW9kZSgpKSB7CiAgICAgY2FzZSBJbml0aWFsTW9kZToK
ICAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbml0aWFsTW9kZSk7CkBAIC0xNDA5
LDcgKzE0MDksNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21p
Y0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICB8fCB0b2tlbi5uYW1lKCkgPT0gdHJUYWcK
ICAgICAgICAgICAgIHx8IGlzVGFibGVDZWxsQ29udGV4dFRhZyh0b2tlbi5uYW1lKCkpKSB7CiAg
ICAgICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKLSAgICAgICAgICAgIEF0b21pY0hUTUxUb2tl
biBlbmRTZWxlY3QoSFRNTFRva2VuOjpFbmRUYWcsIHNlbGVjdFRhZy5sb2NhbE5hbWUoKSk7Cisg
ICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kU2VsZWN0KEhUTUxUb2tlblR5cGVzOjpFbmRU
YWcsIHNlbGVjdFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKGVu
ZFNlbGVjdCk7CiAgICAgICAgICAgICByZXByb2Nlc3NTdGFydFRhZyh0b2tlbik7CiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xNDIzLDcgKzE0MjMsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIH0KICAgICAg
ICAgaWYgKHRva2VuLm5hbWUoKSA9PSBvcHRpb25UYWcpIHsKICAgICAgICAgICAgIGlmIChtX3Ry
ZWUuY3VycmVudE5vZGUoKS0+aGFzVGFnTmFtZShvcHRpb25UYWcpKSB7Ci0gICAgICAgICAgICAg
ICAgQXRvbWljSFRNTFRva2VuIGVuZE9wdGlvbihIVE1MVG9rZW46OkVuZFRhZywgb3B0aW9uVGFn
LmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kT3B0aW9u
KEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIG9wdGlvblRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAg
ICAgICAgICAgcHJvY2Vzc0VuZFRhZyhlbmRPcHRpb24pOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgbV90cmVlLmluc2VydEhUTUxFbGVtZW50KHRva2VuKTsKQEAgLTE0MzEsMTEgKzE0MzEs
MTEgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9r
ZW4mIHRva2VuKQogICAgICAgICB9CiAgICAgICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gb3B0Z3Jv
dXBUYWcpIHsKICAgICAgICAgICAgIGlmIChtX3RyZWUuY3VycmVudE5vZGUoKS0+aGFzVGFnTmFt
ZShvcHRpb25UYWcpKSB7Ci0gICAgICAgICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZE9wdGlv
bihIVE1MVG9rZW46OkVuZFRhZywgb3B0aW9uVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAg
ICAgICBBdG9taWNIVE1MVG9rZW4gZW5kT3B0aW9uKEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIG9w
dGlvblRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZyhlbmRP
cHRpb24pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG1fdHJlZS5jdXJyZW50Tm9k
ZSgpLT5oYXNUYWdOYW1lKG9wdGdyb3VwVGFnKSkgewotICAgICAgICAgICAgICAgIEF0b21pY0hU
TUxUb2tlbiBlbmRPcHRncm91cChIVE1MVG9rZW46OkVuZFRhZywgb3B0Z3JvdXBUYWcubG9jYWxO
YW1lKCkpOworICAgICAgICAgICAgICAgIEF0b21pY0hUTUxUb2tlbiBlbmRPcHRncm91cChIVE1M
VG9rZW5UeXBlczo6RW5kVGFnLCBvcHRncm91cFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAg
ICAgICAgcHJvY2Vzc0VuZFRhZyhlbmRPcHRncm91cCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnQodG9rZW4pOwpAQCAtMTQ0Myw3ICsxNDQzLDcg
QEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4m
IHRva2VuKQogICAgICAgICB9CiAgICAgICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gc2VsZWN0VGFn
KSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKLSAgICAgICAgICAgIEF0b21pY0hU
TUxUb2tlbiBlbmRTZWxlY3QoSFRNTFRva2VuOjpFbmRUYWcsIHNlbGVjdFRhZy5sb2NhbE5hbWUo
KSk7CisgICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kU2VsZWN0KEhUTUxUb2tlblR5cGVz
OjpFbmRUYWcsIHNlbGVjdFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICBwcm9jZXNzRW5k
VGFnKGVuZFNlbGVjdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE0NTUs
NyArMTQ1NSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWlj
SFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21l
bnQoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgQXRvbWljSFRNTFRva2VuIGVuZFNlbGVjdChIVE1MVG9rZW46OkVuZFRhZywgc2VsZWN0VGFn
LmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAgIEF0b21pY0hUTUxUb2tlbiBlbmRTZWxlY3QoSFRN
TFRva2VuVHlwZXM6OkVuZFRhZywgc2VsZWN0VGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAgICAg
IHByb2Nlc3NFbmRUYWcoZW5kU2VsZWN0KTsKICAgICAgICAgICAgIHJlcHJvY2Vzc1N0YXJ0VGFn
KHRva2VuKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1NDAsNyArMTU0MCw3IEBAIHZvaWQg
SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikK
IAogYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NCb2R5RW5kVGFnRm9ySW5Cb2R5KEF0b21p
Y0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9r
ZW46OkVuZFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6
RW5kVGFnKTsKICAgICBBU1NFUlQodG9rZW4ubmFtZSgpID09IGJvZHlUYWcpOwogICAgIGlmICgh
bV90cmVlLm9wZW5FbGVtZW50cygpLT5pblNjb3BlKGJvZHlUYWcubG9jYWxOYW1lKCkpKSB7CiAg
ICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwpAQCAtMTU1Myw3ICsxNTUzLDcgQEAgYm9vbCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NCb2R5RW5kVGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYg
dG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQW55T3RoZXJFbmRUYWdGb3JJ
bkJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgp
ID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxU
b2tlblR5cGVzOjpFbmRUYWcpOwogICAgIEhUTUxFbGVtZW50U3RhY2s6OkVsZW1lbnRSZWNvcmQq
IHJlY29yZCA9IG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+dG9wUmVjb3JkKCk7CiAgICAgd2hpbGUg
KDEpIHsKICAgICAgICAgQ29udGFpbmVyTm9kZSogbm9kZSA9IHJlY29yZC0+bm9kZSgpOwpAQCAt
MTc3MCw3ICsxNzcwLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9k
ZUFwcHJvcHJpYXRlbHkoKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0Zv
ckluVGFibGVCb2R5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9
PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKICAgICBpZiAoaXNUYWJsZUJvZHlDb250ZXh0VGFn
KHRva2VuLm5hbWUoKSkpIHsKICAgICAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmlu
VGFibGVTY29wZSh0b2tlbi5uYW1lKCkpKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKHRva2Vu
KTsKQEAgLTE4MDcsNyArMTgwNyw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5k
VGFnRm9ySW5UYWJsZUJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblJvdyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQog
ewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpOworICAgIEFT
U0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CiAgICAgaWYgKHRv
a2VuLm5hbWUoKSA9PSB0clRhZykgewogICAgICAgICBwcm9jZXNzVHJFbmRUYWdGb3JJblJvdygp
OwogICAgICAgICByZXR1cm47CkBAIC0xODQzLDcgKzE4NDMsNyBAQCB2b2lkIEhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluUm93KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAKIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5DZWxsKEF0b21pY0hUTUxUb2tl
biYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRh
Zyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsK
ICAgICBpZiAoaXNUYWJsZUNlbGxDb250ZXh0VGFnKHRva2VuLm5hbWUoKSkpIHsKICAgICAgICAg
aWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZSh0b2tlbi5uYW1lKCkpKSB7
CiAgICAgICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKQEAgLTE4ODAsMTMgKzE4ODAsMTMgQEAg
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJbkNlbGwoQXRvbWljSFRNTFRv
a2VuJiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJbkJv
ZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09
IEhUTUxUb2tlbjo6RW5kVGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tl
blR5cGVzOjpFbmRUYWcpOwogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gYm9keVRhZykgewogICAg
ICAgICBwcm9jZXNzQm9keUVuZFRhZ0ZvckluQm9keSh0b2tlbik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSBodG1sVGFnKSB7Ci0gICAgICAgIEF0b21p
Y0hUTUxUb2tlbiBlbmRCb2R5KEhUTUxUb2tlbjo6RW5kVGFnLCBib2R5VGFnLmxvY2FsTmFtZSgp
KTsKKyAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZEJvZHkoSFRNTFRva2VuVHlwZXM6OkVuZFRh
ZywgYm9keVRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgIGlmIChwcm9jZXNzQm9keUVuZFRhZ0Zv
ckluQm9keShlbmRCb2R5KSkKICAgICAgICAgICAgIHJlcHJvY2Vzc0VuZFRhZyh0b2tlbik7CiAg
ICAgICAgIHJldHVybjsKQEAgLTIwNTMsNyArMjA1Myw3IEBAIGJvb2wgSFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzVGFibGVFbmRUYWdGb3JJblRhYmxlKCkKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NFbmRUYWdGb3JJblRhYmxlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAg
QVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7CisgICAgQVNTRVJUKHRv
a2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKICAgICBpZiAodG9rZW4ubmFt
ZSgpID09IHRhYmxlVGFnKSB7CiAgICAgICAgIHByb2Nlc3NUYWJsZUVuZFRhZ0ZvckluVGFibGUo
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjA3NCw3ICsyMDc0LDcgQEAgdm9pZCBIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblRhYmxlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAK
IHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKEF0b21pY0hUTUxUb2tlbiYgdG9r
ZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7Cisg
ICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKICAgICBz
d2l0Y2ggKGluc2VydGlvbk1vZGUoKSkgewogICAgIGNhc2UgSW5pdGlhbE1vZGU6CiAgICAgICAg
IEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5pdGlhbE1vZGUpOwpAQCAtMjI3MCw3ICsyMjcw
LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRva2Vu
JiB0b2tlbikKICAgICAgICAgICAgIHx8IGlzVGFibGVDZWxsQ29udGV4dFRhZyh0b2tlbi5uYW1l
KCkpKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKICAgICAgICAgICAgIGlmICht
X3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZSh0b2tlbi5uYW1lKCkpKSB7Ci0gICAg
ICAgICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZFNlbGVjdChIVE1MVG9rZW46OkVuZFRhZywg
c2VsZWN0VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4g
ZW5kU2VsZWN0KEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIHNlbGVjdFRhZy5sb2NhbE5hbWUoKSk7
CiAgICAgICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZyhlbmRTZWxlY3QpOwogICAgICAgICAgICAg
ICAgIHJlcHJvY2Vzc0VuZFRhZyh0b2tlbik7CiAgICAgICAgICAgICB9CkBAIC0yNDAyLDcgKzI0
MDIsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cmVzZXRGb3JlaWduSW5zZXJ0aW9uTW9kZSgp
CiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ29tbWVudChBdG9taWNIVE1MVG9rZW4m
IHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpDb21tZW50
KTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50KTsK
ICAgICBpZiAobV9pbnNlcnRpb25Nb2RlID09IEluaXRpYWxNb2RlCiAgICAgICAgIHx8IG1faW5z
ZXJ0aW9uTW9kZSA9PSBCZWZvcmVIVE1MTW9kZQogICAgICAgICB8fCBtX2luc2VydGlvbk1vZGUg
PT0gQWZ0ZXJBZnRlckJvZHlNb2RlCkBAIC0yNDI0LDcgKzI0MjQsNyBAQCB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc0NvbW1lbnQoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDaGFyYWN0ZXIoQXRvbWljSFRNTFRva2VuJiB0b2tlbikK
IHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKTsKKyAg
ICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpOwogICAg
IEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIgYnVmZmVyKHRva2VuKTsKICAgICBwcm9jZXNz
Q2hhcmFjdGVyQnVmZmVyKGJ1ZmZlcik7CiB9CkBAIC0yNTgzLDcgKzI1ODMsNyBAQCBSZXByb2Nl
c3NCdWZmZXI6CiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kT2ZGaWxlKEF0b21p
Y0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9r
ZW46OkVuZE9mRmlsZSk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBl
czo6RW5kT2ZGaWxlKTsKICAgICBzd2l0Y2ggKGluc2VydGlvbk1vZGUoKSkgewogICAgIGNhc2Ug
SW5pdGlhbE1vZGU6CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5pdGlhbE1v
ZGUpOwpAQCAtMjY4MSw3ICsyNjgxLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRG
b3JJbml0aWFsKCkKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JCZWZvcmVIVE1M
KCkKIHsKLSAgICBBdG9taWNIVE1MVG9rZW4gc3RhcnRIVE1MKEhUTUxUb2tlbjo6U3RhcnRUYWcs
IGh0bWxUYWcubG9jYWxOYW1lKCkpOworICAgIEF0b21pY0hUTUxUb2tlbiBzdGFydEhUTUwoSFRN
TFRva2VuVHlwZXM6OlN0YXJ0VGFnLCBodG1sVGFnLmxvY2FsTmFtZSgpKTsKICAgICBtX3RyZWUu
aW5zZXJ0SFRNTEh0bWxTdGFydFRhZ0JlZm9yZUhUTUwoc3RhcnRIVE1MKTsKICAgICBzZXRJbnNl
cnRpb25Nb2RlKEJlZm9yZUhlYWRNb2RlKTsKICAgICBwcmVwYXJlVG9SZXByb2Nlc3NUb2tlbigp
OwpAQCAtMjY4OSwyOCArMjY4OSwyOCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZv
ckJlZm9yZUhUTUwoKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckJlZm9yZUhl
YWQoKQogewotICAgIEF0b21pY0hUTUxUb2tlbiBzdGFydEhlYWQoSFRNTFRva2VuOjpTdGFydFRh
ZywgaGVhZFRhZy5sb2NhbE5hbWUoKSk7CisgICAgQXRvbWljSFRNTFRva2VuIHN0YXJ0SGVhZChI
VE1MVG9rZW5UeXBlczo6U3RhcnRUYWcsIGhlYWRUYWcubG9jYWxOYW1lKCkpOwogICAgIHByb2Nl
c3NTdGFydFRhZyhzdGFydEhlYWQpOwogICAgIHByZXBhcmVUb1JlcHJvY2Vzc1Rva2VuKCk7CiB9
CiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5IZWFkKCkKIHsKLSAgICBBdG9t
aWNIVE1MVG9rZW4gZW5kSGVhZChIVE1MVG9rZW46OkVuZFRhZywgaGVhZFRhZy5sb2NhbE5hbWUo
KSk7CisgICAgQXRvbWljSFRNTFRva2VuIGVuZEhlYWQoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywg
aGVhZFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgcHJvY2Vzc0VuZFRhZyhlbmRIZWFkKTsKICAgICBw
cmVwYXJlVG9SZXByb2Nlc3NUb2tlbigpOwogfQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6ZGVm
YXVsdEZvckluSGVhZE5vc2NyaXB0KCkKIHsKLSAgICBBdG9taWNIVE1MVG9rZW4gZW5kTm9zY3Jp
cHQoSFRNTFRva2VuOjpFbmRUYWcsIG5vc2NyaXB0VGFnLmxvY2FsTmFtZSgpKTsKKyAgICBBdG9t
aWNIVE1MVG9rZW4gZW5kTm9zY3JpcHQoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgbm9zY3JpcHRU
YWcubG9jYWxOYW1lKCkpOwogICAgIHByb2Nlc3NFbmRUYWcoZW5kTm9zY3JpcHQpOwogICAgIHBy
ZXBhcmVUb1JlcHJvY2Vzc1Rva2VuKCk7CiB9CiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZh
dWx0Rm9yQWZ0ZXJIZWFkKCkKIHsKLSAgICBBdG9taWNIVE1MVG9rZW4gc3RhcnRCb2R5KEhUTUxU
b2tlbjo6U3RhcnRUYWcsIGJvZHlUYWcubG9jYWxOYW1lKCkpOworICAgIEF0b21pY0hUTUxUb2tl
biBzdGFydEJvZHkoSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnLCBib2R5VGFnLmxvY2FsTmFtZSgp
KTsKICAgICBwcm9jZXNzU3RhcnRUYWcoc3RhcnRCb2R5KTsKICAgICBtX2ZyYW1lc2V0T2sgPSB0
cnVlOwogICAgIHByZXBhcmVUb1JlcHJvY2Vzc1Rva2VuKCk7CkBAIC0yNzM2LDcgKzI3MzYsNyBA
QCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckluVGFibGVUZXh0KCkKIAogYm9vbCBI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluSGVhZChBdG9taWNIVE1MVG9rZW4m
IHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRh
Zyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcp
OwogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gaHRtbFRhZykgewogICAgICAgICBtX3RyZWUuaW5z
ZXJ0SFRNTEh0bWxTdGFydFRhZ0luQm9keSh0b2tlbik7CiAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtMjc4Myw3ICsyNzgzLDcgQEAgYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRh
Z0ZvckluSGVhZChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0dlbmVyaWNSQ0RBVEFTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQog
ewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CisgICAg
QVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIG1f
dHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tlbik7CiAgICAgbV9wYXJzZXItPnRva2VuaXplcigp
LT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpSQ0RBVEFTdGF0ZSk7CiAgICAgbV9vcmlnaW5hbElu
c2VydGlvbk1vZGUgPSBtX2luc2VydGlvbk1vZGU7CkBAIC0yNzkyLDcgKzI3OTIsNyBAQCB2b2lk
IEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0dlbmVyaWNSQ0RBVEFTdGFydFRhZyhBdG9taWNIVE1M
VG9rZW4mIHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0dlbmVyaWNSYXdU
ZXh0U3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4u
dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkg
PT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1l
bnQodG9rZW4pOwogICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2Vu
aXplcjo6UkFXVEVYVFN0YXRlKTsKICAgICBtX29yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IG1faW5z
ZXJ0aW9uTW9kZTsKQEAgLTI4MDEsNyArMjgwMSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzR2VuZXJpY1Jhd1RleHRTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogCiB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1NjcmlwdFN0YXJ0VGFnKEF0b21pY0hUTUxUb2tl
biYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0
VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRh
Zyk7CiAgICAgbV90cmVlLmluc2VydFNjcmlwdEVsZW1lbnQodG9rZW4pOwogICAgIG1fcGFyc2Vy
LT50b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6U2NyaXB0RGF0YVN0YXRlKTsK
ICAgICBtX29yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IG1faW5zZXJ0aW9uTW9kZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcAppbmRl
eCA3Y2RiZGM3MWM5OTBlMGRmNTJkMDlhMmZiOTEzZmMyN2NmNDQ0MjM3Li5lODJmYTkzMDE2YjBh
NGI2YWM0ZTg4MmIxYzExNzZhMzgwNThiOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFN0
cmluZyBIVE1MVmlld1NvdXJjZVBhcnNlcjo6c291cmNlRm9yVG9rZW4oKQogdm9pZCBIVE1MVmll
d1NvdXJjZVBhcnNlcjo6dXBkYXRlVG9rZW5pemVyU3RhdGUoKQogewogICAgIC8vIEZJWE1FOiBU
aGUgdG9rZW5pemVyIHNob3VsZCBkbyB0aGlzIHdvcmsgZm9yIHVzLgotICAgIGlmIChtX3Rva2Vu
LnR5cGUoKSAhPSBIVE1MVG9rZW46OlN0YXJ0VGFnKQorICAgIGlmIChtX3Rva2VuLnR5cGUoKSAh
PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpCiAgICAgICAgIHJldHVybjsKIAogICAgIEF0b21p
Y1N0cmluZyB0YWdOYW1lKG1fdG9rZW4ubmFtZSgpLmRhdGEoKSwgbV90b2tlbi5uYW1lKCkuc2l6
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVu
dFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJz
ZXIuY3BwCmluZGV4IGQwM2I3NDRlODcyMTE2NDhjOTJmNTEzNzhjMGIyYjhlMTNlODNlZTMuLjYz
YjUxNjAyMWE0MjQ5ZjM1Y2I2ZGE3ZmU0YWFmMmMzMmYzOGFjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcApAQCAtNjMsNyArNjMs
NyBAQCB2b2lkIFRleHREb2N1bWVudFBhcnNlcjo6aW5zZXJ0RmFrZVByZUVsZW1lbnQoKQogICAg
IFJlZlB0cjxBdHRyaWJ1dGU+IHN0eWxlQXR0cmlidXRlID0gQXR0cmlidXRlOjpjcmVhdGVNYXBw
ZWQoInN0eWxlIiwgIndvcmQtd3JhcDogYnJlYWstd29yZDsgd2hpdGUtc3BhY2U6IHByZS13cmFw
OyIpOwogICAgIFJlZlB0cjxOYW1lZE5vZGVNYXA+IGF0dHJpYnV0ZXMgPSBOYW1lZE5vZGVNYXA6
OmNyZWF0ZSgpOwogICAgIGF0dHJpYnV0ZXMtPmluc2VydEF0dHJpYnV0ZShzdHlsZUF0dHJpYnV0
ZS5yZWxlYXNlKCksIGZhbHNlKTsKLSAgICBBdG9taWNIVE1MVG9rZW4gZmFrZVByZShIVE1MVG9r
ZW46OlN0YXJ0VGFnLCBwcmVUYWcubG9jYWxOYW1lKCksIGF0dHJpYnV0ZXMucmVsZWFzZSgpKTsK
KyAgICBBdG9taWNIVE1MVG9rZW4gZmFrZVByZShIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcsIHBy
ZVRhZy5sb2NhbE5hbWUoKSwgYXR0cmlidXRlcy5yZWxlYXNlKCkpOwogCiAgICAgdHJlZUJ1aWxk
ZXIoKS0+Y29uc3RydWN0VHJlZUZyb21BdG9taWNUb2tlbihmYWtlUHJlKTsKICAgICBtX2hhdmVJ
bnNlcnRlZEZha2VQcmVFbGVtZW50ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
WFNTQXVkaXRvci5jcHAKaW5kZXggZTgxZWFiYjA5NWU0MjNjMmJkYzFlODQ4NGFiNzBkNmQxNWI1
NDg3MS4uZWUxZDJjZTFhNGViNTk2Y2NkNDZkMTY5MDU0MTQ4OTQ4ZTJmMTljNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKQEAgLTIzNCw3ICsyMzQsNyBAQCBi
b29sIFhTU0F1ZGl0b3I6OmZpbHRlclRva2VuSW5pdGlhbChIVE1MVG9rZW4mIHRva2VuKQogewog
ICAgIEFTU0VSVChtX3N0YXRlID09IEluaXRpYWwpOwogCi0gICAgaWYgKHRva2VuLnR5cGUoKSAh
PSBIVE1MVG9rZW46OlN0YXJ0VGFnKQorICAgIGlmICh0b2tlbi50eXBlKCkgIT0gSFRNTFRva2Vu
VHlwZXM6OlN0YXJ0VGFnKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29sIGRpZEJs
b2NrU2NyaXB0ID0gZXJhc2VEYW5nZXJvdXNBdHRyaWJ1dGVzSWZJbmplY3RlZCh0b2tlbik7CkBA
IC0yNjYsOCArMjY2LDggQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJUb2tlbkFmdGVyU2NyaXB0
U3RhcnRUYWcoSFRNTFRva2VuJiB0b2tlbikKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBBZnRlclNj
cmlwdFN0YXJ0VGFnKTsKICAgICBtX3N0YXRlID0gSW5pdGlhbDsKIAotICAgIGlmICh0b2tlbi50
eXBlKCkgIT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIpIHsKLSAgICAgICAgQVNTRVJUKHRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyB8fCB0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpF
bmRPZkZpbGUpOworICAgIGlmICh0b2tlbi50eXBlKCkgIT0gSFRNTFRva2VuVHlwZXM6OkNoYXJh
Y3RlcikgeworICAgICAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpF
bmRUYWcgfHwgdG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRPZkZpbGUpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0yODYsNyArMjg2LDcgQEAgYm9vbCBYU1NB
dWRpdG9yOjpmaWx0ZXJUb2tlbkFmdGVyU2NyaXB0U3RhcnRUYWcoSFRNTFRva2VuJiB0b2tlbikK
IGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyU2NyaXB0VG9rZW4oSFRNTFRva2VuJiB0b2tlbikKIHsK
ICAgICBBU1NFUlQobV9zdGF0ZSA9PSBJbml0aWFsKTsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgp
ID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRN
TFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZSh0b2tlbiwgc2NyaXB0
VGFnKSk7CiAKICAgICBpZiAoZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHRva2VuLCBzcmNBdHRy
LCBibGFua1VSTCgpLnN0cmluZygpKSkKQEAgLTMwMCw3ICszMDAsNyBAQCBib29sIFhTU0F1ZGl0
b3I6OmZpbHRlclNjcmlwdFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiBib29sIFhTU0F1ZGl0b3I6
OmZpbHRlck9iamVjdFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKG1fc3Rh
dGUgPT0gSW5pdGlhbCk7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0
YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFy
dFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUodG9rZW4sIG9iamVjdFRhZykpOwogCiAgICAgYm9v
bCBkaWRCbG9ja1NjcmlwdCA9IGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgWFNTQXVk
aXRvcjo6ZmlsdGVyT2JqZWN0VG9rZW4oSFRNTFRva2VuJiB0b2tlbikKIGJvb2wgWFNTQXVkaXRv
cjo6ZmlsdGVyUGFyYW1Ub2tlbihIVE1MVG9rZW4mIHRva2VuKQogewogICAgIEFTU0VSVChtX3N0
YXRlID09IEluaXRpYWwpOwotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpT
dGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3Rh
cnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHRva2VuLCBwYXJhbVRhZykpOwogCiAgICAgc2l6
ZV90IGluZGV4T2ZOYW1lQXR0cmlidXRlOwpAQCAtMzM0LDcgKzMzNCw3IEBAIGJvb2wgWFNTQXVk
aXRvcjo6ZmlsdGVyUGFyYW1Ub2tlbihIVE1MVG9rZW4mIHRva2VuKQogYm9vbCBYU1NBdWRpdG9y
OjpmaWx0ZXJFbWJlZFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKG1fc3Rh
dGUgPT0gSW5pdGlhbCk7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0
YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFy
dFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUodG9rZW4sIGVtYmVkVGFnKSk7CiAKICAgICBib29s
IGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CkBAIC0zNDgsNyArMzQ4LDcgQEAgYm9vbCBYU1NBdWRp
dG9yOjpmaWx0ZXJFbWJlZFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiBib29sIFhTU0F1ZGl0b3I6
OmZpbHRlckFwcGxldFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKG1fc3Rh
dGUgPT0gSW5pdGlhbCk7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0
YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFy
dFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUodG9rZW4sIGFwcGxldFRhZykpOwogCiAgICAgYm9v
bCBkaWRCbG9ja1NjcmlwdCA9IGZhbHNlOwpAQCAtMzYyLDcgKzM2Miw3IEBAIGJvb2wgWFNTQXVk
aXRvcjo6ZmlsdGVyQXBwbGV0VG9rZW4oSFRNTFRva2VuJiB0b2tlbikKIGJvb2wgWFNTQXVkaXRv
cjo6ZmlsdGVySWZyYW1lVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKIHsKICAgICBBU1NFUlQobV9z
dGF0ZSA9PSBJbml0aWFsKTsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6
U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0
YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZSh0b2tlbiwgaWZyYW1lVGFnKSk7CiAKICAgICBy
ZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHRva2VuLCBzcmNBdHRyKTsKQEAgLTM3MSw3
ICszNzEsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlcklmcmFtZVRva2VuKEhUTUxUb2tlbiYg
dG9rZW4pCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlck1ldGFUb2tlbihIVE1MVG9rZW4mIHRva2Vu
KQogewogICAgIEFTU0VSVChtX3N0YXRlID09IEluaXRpYWwpOwotICAgIEFTU0VSVCh0b2tlbi50
eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9
PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHRva2VuLCBt
ZXRhVGFnKSk7CiAKICAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHRva2VuLCBo
dHRwX2VxdWl2QXR0cik7CkBAIC0zODAsNyArMzgwLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0
ZXJNZXRhVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyQmFz
ZVRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gSW5pdGlh
bCk7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAg
ICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAg
QVNTRVJUKGhhc05hbWUodG9rZW4sIGJhc2VUYWcpKTsKIAogICAgIHJldHVybiBlcmFzZUF0dHJp
YnV0ZUlmSW5qZWN0ZWQodG9rZW4sIGhyZWZBdHRyKTsKQEAgLTM4OSw3ICszODksNyBAQCBib29s
IFhTU0F1ZGl0b3I6OmZpbHRlckJhc2VUb2tlbihIVE1MVG9rZW4mIHRva2VuKQogYm9vbCBYU1NB
dWRpdG9yOjpmaWx0ZXJGb3JtVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKIHsKICAgICBBU1NFUlQo
bV9zdGF0ZSA9PSBJbml0aWFsKTsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tl
bjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6
OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZSh0b2tlbiwgZm9ybVRhZykpOwogCiAgICAg
cmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZCh0b2tlbiwgYWN0aW9uQXR0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1Rva2VuQmFzZS5oIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9Ub2tlbkJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OTRiMThjNGE2OTMxYTk0
N2NkMTkwMGMwYmQyYTY2YmViZGNlYWJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9Ub2tlbkJhc2UuaApAQCAtMCwwICsxLDM2MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVG9rZW5CYXNlX2gKKyNk
ZWZpbmUgVG9rZW5CYXNlX2gKKworI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEJhc2VEb2N0eXBlRGF0YSB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQmFzZURvY3R5cGVEYXRhKTsKK3B1YmxpYzoKKyAgICBCYXNlRG9jdHlwZURhdGEoKQor
ICAgICAgICA6IG1faGFzUHVibGljSWRlbnRpZmllcihmYWxzZSkKKyAgICAgICAgLCBtX2hhc1N5
c3RlbUlkZW50aWZpZXIoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIGJvb2wgbV9oYXNQdWJs
aWNJZGVudGlmaWVyOworICAgIGJvb2wgbV9oYXNTeXN0ZW1JZGVudGlmaWVyOworICAgIFdURjo6
VmVjdG9yPFVDaGFyPiBtX3B1YmxpY0lkZW50aWZpZXI7CisgICAgV1RGOjpWZWN0b3I8VUNoYXI+
IG1fc3lzdGVtSWRlbnRpZmllcjsKK307CisgICAgCit0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlU2V0
LCB0eXBlbmFtZSBEb2N0eXBlRGF0YSA9IEJhc2VEb2N0eXBlRGF0YT4KK2NsYXNzIFRva2VuQmFz
ZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVG9rZW5CYXNlKTsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVTZXQ6OlR5
cGUgVHlwZTsKKworICAgIGNsYXNzIFJhbmdlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGludCBt
X3N0YXJ0OworICAgICAgICBpbnQgbV9lbmQ7CisgICAgfTsKKworICAgIGNsYXNzIEF0dHJpYnV0
ZSB7CisgICAgcHVibGljOgorICAgICAgICBSYW5nZSBtX25hbWVSYW5nZTsKKyAgICAgICAgUmFu
Z2UgbV92YWx1ZVJhbmdlOworICAgICAgICBXVEY6OlZlY3RvcjxVQ2hhciwgMzI+IG1fbmFtZTsK
KyAgICAgICAgV1RGOjpWZWN0b3I8VUNoYXIsIDMyPiBtX3ZhbHVlOworICAgIH07CisKKyAgICB0
eXBlZGVmIFdURjo6VmVjdG9yPEF0dHJpYnV0ZSwgMTA+IEF0dHJpYnV0ZUxpc3Q7CisgICAgdHlw
ZWRlZiBXVEY6OlZlY3RvcjxVQ2hhciwgMTAyND4gRGF0YVZlY3RvcjsKKworICAgIFRva2VuQmFz
ZSgpIHsgY2xlYXIoKTsgfQorICAgIHZpcnR1YWwgflRva2VuQmFzZSgpIHsgfQorCisgICAgdmly
dHVhbCB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIG1fdHlwZSA9IFR5cGVTZXQ6OlVuaW5p
dGlhbGl6ZWQ7CisgICAgICAgIG1fcmFuZ2UubV9zdGFydCA9IDA7CisgICAgICAgIG1fcmFuZ2Uu
bV9lbmQgPSAwOworICAgICAgICBtX2Jhc2VPZmZzZXQgPSAwOworICAgICAgICBtX2RhdGEuY2xl
YXIoKTsKKyAgICB9CisKKyAgICBib29sIGlzVW5pbml0aWFsaXplZCgpIHsgcmV0dXJuIG1fdHlw
ZSA9PSBUeXBlU2V0OjpVbmluaXRpYWxpemVkOyB9CisKKyAgICBpbnQgc3RhcnRJbmRleCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmFuZ2UubV9zdGFydDsgfQorICAgIGludCBlbmRJbmRleCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmFuZ2UubV9lbmQ7IH0KKworICAgIHZvaWQgc2V0QmFzZU9mZnNldChpbnQg
b2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9iYXNlT2Zmc2V0ID0gb2Zmc2V0OworICAgIH0KKwor
ICAgIHZvaWQgZW5kKGludCBlbmRPZmZzZXQpCisgICAgeworICAgICAgICBtX3JhbmdlLm1fZW5k
ID0gZW5kT2Zmc2V0IC0gbV9iYXNlT2Zmc2V0OworICAgIH0KKworICAgIHZvaWQgbWFrZUVuZE9m
RmlsZSgpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlVuaW5pdGlh
bGl6ZWQpOworICAgICAgICBtX3R5cGUgPSBUeXBlU2V0OjpFbmRPZkZpbGU7CisgICAgfQorCisg
ICAgdm9pZCBiZWdpblN0YXJ0VGFnKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFT
U0VSVChjaGFyYWN0ZXIpOworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlVuaW5p
dGlhbGl6ZWQpOworICAgICAgICBtX3R5cGUgPSBUeXBlU2V0OjpTdGFydFRhZzsKKyAgICAgICAg
bV9zZWxmQ2xvc2luZyA9IGZhbHNlOworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSAwOwor
ICAgICAgICBtX2F0dHJpYnV0ZXMuY2xlYXIoKTsKKworICAgICAgICBtX2RhdGEuYXBwZW5kKGNo
YXJhY3Rlcik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIGJl
Z2luRW5kVGFnKFQgY2hhcmFjdGVycykKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
VHlwZVNldDo6VW5pbml0aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9IFR5cGVTZXQ6OkVuZFRh
ZzsKKyAgICAgICAgbV9zZWxmQ2xvc2luZyA9IGZhbHNlOworICAgICAgICBtX2N1cnJlbnRBdHRy
aWJ1dGUgPSAwOworICAgICAgICBtX2F0dHJpYnV0ZXMuY2xlYXIoKTsKKworICAgICAgICBtX2Rh
dGEuYXBwZW5kKGNoYXJhY3RlcnMpOworICAgIH0KKworICAgIC8vIFN0YXJ0aW5nIGEgY2hhcmFj
dGVyIHRva2VuIHdvcmtzIHNsaWdodGx5IGRpZmZlcmVudGx5IHRoYW4gc3RhcnRpbmcKKyAgICAv
LyBvdGhlciB0eXBlcyBvZiB0b2tlbnMgYmVjYXVzZSB3ZSB3YW50IHRvIHNhdmUgYSBwZXItY2hh
cmFjdGVyIGJyYW5jaC4KKyAgICB2b2lkIGVuc3VyZUlzQ2hhcmFjdGVyVG9rZW4oKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpVbmluaXRpYWxpemVkIHx8IG1fdHlw
ZSA9PSBUeXBlU2V0OjpDaGFyYWN0ZXIpOworICAgICAgICBtX3R5cGUgPSBUeXBlU2V0OjpDaGFy
YWN0ZXI7CisgICAgfQorCisgICAgdm9pZCBiZWdpbkNvbW1lbnQoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpVbmluaXRpYWxpemVkKTsKKyAgICAgICAgbV90eXBl
ID0gVHlwZVNldDo6Q29tbWVudDsKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luRE9DVFlQRSgpCisg
ICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlVuaW5pdGlhbGl6ZWQpOwor
ICAgICAgICBtX3R5cGUgPSBUeXBlU2V0OjpET0NUWVBFOworICAgICAgICBtX2RvY3R5cGVEYXRh
ID0gYWRvcHRQdHIobmV3IERvY3R5cGVEYXRhKCkpOworICAgIH0KKworICAgIHZvaWQgYmVnaW5E
T0NUWVBFKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIp
OworICAgICAgICBiZWdpbkRPQ1RZUEUoKTsKKyAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0
ZXIpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBhcHBlbmRU
b0NoYXJhY3RlcihUIGNoYXJhY3RlcnMpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09
IFR5cGVTZXQ6OkNoYXJhY3Rlcik7CisgICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVycyk7
CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRUb0NvbW1lbnQoVUNoYXIgY2hhcmFjdGVyKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
VHlwZVNldDo6Q29tbWVudCk7CisgICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAg
ICB9CisKKyAgICB2b2lkIGFkZE5ld0F0dHJpYnV0ZSgpCisgICAgeworICAgICAgICBBU1NFUlQo
bV90eXBlID09IFR5cGVTZXQ6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBUeXBlU2V0OjpFbmRUYWcp
OworICAgICAgICBtX2F0dHJpYnV0ZXMuZ3JvdyhtX2F0dHJpYnV0ZXMuc2l6ZSgpICsgMSk7Cisg
ICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9ICZtX2F0dHJpYnV0ZXMubGFzdCgpOworI2lmbmRl
ZiBOREVCVUcKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX3N0YXJ0
ID0gMDsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX2VuZCA9IDA7
CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3RhcnQgPSAwOwor
ICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX2VuZCA9IDA7CisjZW5k
aWYKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luQXR0cmlidXRlTmFtZShpbnQgb2Zmc2V0KQorICAg
IHsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX3N0YXJ0ID0gb2Zm
c2V0IC0gbV9iYXNlT2Zmc2V0OworICAgIH0KKworICAgIHZvaWQgZW5kQXR0cmlidXRlTmFtZShp
bnQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgaW50IGluZGV4ID0gb2Zmc2V0IC0gbV9iYXNlT2Zm
c2V0OworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fZW5kID0gaW5k
ZXg7CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3RhcnQgPSBp
bmRleDsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9lbmQgPSBp
bmRleDsKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luQXR0cmlidXRlVmFsdWUoaW50IG9mZnNldCkK
KyAgICB7CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3RhcnQg
PSBvZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBtX2N1cnJl
bnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX2VuZCA9IDA7CisjZW5kaWYKKyAgICB9CisKKyAg
ICB2b2lkIGVuZEF0dHJpYnV0ZVZhbHVlKGludCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2N1
cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX2VuZCA9IG9mZnNldCAtIG1fYmFzZU9mZnNl
dDsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFRvQXR0cmlidXRlTmFtZShVQ2hhciBjaGFyYWN0
ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBUeXBlU2V0OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6RW5kVGFnKTsK
KyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGFkZCB0aGUgZm9sbG93aW5n
IEFTU0VSVCBvbmNlIHdlIGZpeAorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjI5NzEKKyAgICAgICAgLy8gICBBU1NFUlQobV9jdXJyZW50QXR0cmli
dXRlLT5tX25hbWVSYW5nZS5tX3N0YXJ0KTsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5t
X25hbWUuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRUb0F0dHJp
YnV0ZVZhbHVlKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChjaGFyYWN0
ZXIpOworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlN0YXJ0VGFnIHx8IG1fdHlw
ZSA9PSBUeXBlU2V0OjpFbmRUYWcpOworICAgICAgICBBU1NFUlQobV9jdXJyZW50QXR0cmlidXRl
LT5tX3ZhbHVlUmFuZ2UubV9zdGFydCk7CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92
YWx1ZS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFRvQXR0cmli
dXRlVmFsdWUoc2l6ZV90IGksIGNvbnN0IFN0cmluZyYgdmFsdWUpCisgICAgeworICAgICAgICBB
U1NFUlQoIXZhbHVlLmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNl
dDo6U3RhcnRUYWcgfHwgbV90eXBlID09IFR5cGVTZXQ6OkVuZFRhZyk7CisgICAgICAgIG1fYXR0
cmlidXRlc1tpXS5tX3ZhbHVlLmFwcGVuZCh2YWx1ZS5jaGFyYWN0ZXJzKCksIHZhbHVlLmxlbmd0
aCgpKTsKKyAgICB9CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0K
KworICAgIGJvb2wgc2VsZkNsb3NpbmcoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBUeXBlU2V0OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6RW5kVGFnKTsK
KyAgICAgICAgcmV0dXJuIG1fc2VsZkNsb3Npbmc7CisgICAgfQorCisgICAgdm9pZCBzZXRTZWxm
Q2xvc2luZygpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlN0YXJ0
VGFnIHx8IG1fdHlwZSA9PSBUeXBlU2V0OjpFbmRUYWcpOworICAgICAgICBtX3NlbGZDbG9zaW5n
ID0gdHJ1ZTsKKyAgICB9CisKKyAgICBjb25zdCBBdHRyaWJ1dGVMaXN0JiBhdHRyaWJ1dGVzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6U3RhcnRUYWcg
fHwgbV90eXBlID09IFR5cGVTZXQ6OkVuZFRhZyk7CisgICAgICAgIHJldHVybiBtX2F0dHJpYnV0
ZXM7CisgICAgfQorCisgICAgdm9pZCBlcmFzZUNoYXJhY3RlcnMoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpDaGFyYWN0ZXIpOworICAgICAgICBtX2RhdGEuY2xl
YXIoKTsKKyAgICB9CisKKyAgICB2b2lkIGVyYXNlVmFsdWVPZkF0dHJpYnV0ZShzaXplX3QgaSkK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6U3RhcnRUYWcgfHwgbV90
eXBlID09IFR5cGVTZXQ6OkVuZFRhZyk7CisgICAgICAgIG1fYXR0cmlidXRlc1tpXS5tX3ZhbHVl
LmNsZWFyKCk7CisgICAgfQorCisgICAgY29uc3QgRGF0YVZlY3RvciYgY2hhcmFjdGVycygpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OkNoYXJhY3Rlcik7
CisgICAgICAgIHJldHVybiBtX2RhdGE7CisgICAgfQorCisgICAgY29uc3QgRGF0YVZlY3RvciYg
Y29tbWVudCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6
OkNvbW1lbnQpOworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKworICAgIC8vIEZJWE1F
OiBEaXN0aW5ndWlzaCBiZXR3ZWVuIGEgbWlzc2luZyBwdWJsaWMgaWRlbnRpZmVyIGFuZCBhbiBl
bXB0eSBvbmUuCisgICAgY29uc3QgV1RGOjpWZWN0b3I8VUNoYXI+JiBwdWJsaWNJZGVudGlmaWVy
KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6RE9DVFlQ
RSk7CisgICAgICAgIHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZpZXI7Cisg
ICAgfQorCisgICAgLy8gRklYTUU6IERpc3Rpbmd1aXNoIGJldHdlZW4gYSBtaXNzaW5nIHN5c3Rl
bSBpZGVudGlmZXIgYW5kIGFuIGVtcHR5IG9uZS4KKyAgICBjb25zdCBXVEY6OlZlY3RvcjxVQ2hh
cj4mIHN5c3RlbUlkZW50aWZpZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBUeXBlU2V0OjpET0NUWVBFKTsKKyAgICAgICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1f
c3lzdGVtSWRlbnRpZmllcjsKKyAgICB9CisKKyAgICB2b2lkIHNldFB1YmxpY0lkZW50aWZpZXJU
b0VtcHR5U3RyaW5nKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6
RE9DVFlQRSk7CisgICAgICAgIG1fZG9jdHlwZURhdGEtPm1faGFzUHVibGljSWRlbnRpZmllciA9
IHRydWU7CisgICAgICAgIG1fZG9jdHlwZURhdGEtPm1fcHVibGljSWRlbnRpZmllci5jbGVhcigp
OworICAgIH0KKworICAgIHZvaWQgc2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpET0NUWVBFKTsKKyAgICAg
ICAgbV9kb2N0eXBlRGF0YS0+bV9oYXNTeXN0ZW1JZGVudGlmaWVyID0gdHJ1ZTsKKyAgICAgICAg
bV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyLmNsZWFyKCk7CisgICAgfQorCisgICAg
dm9pZCBhcHBlbmRUb1B1YmxpY0lkZW50aWZpZXIoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNl
dDo6RE9DVFlQRSk7CisgICAgICAgIEFTU0VSVChtX2RvY3R5cGVEYXRhLT5tX2hhc1B1YmxpY0lk
ZW50aWZpZXIpOworICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZpZXIuYXBw
ZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRUb1N5c3RlbUlkZW50aWZp
ZXIoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6RE9DVFlQRSk7CisgICAgICAgIEFTU0VS
VChtX2RvY3R5cGVEYXRhLT5tX2hhc1N5c3RlbUlkZW50aWZpZXIpOworICAgICAgICBtX2RvY3R5
cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXIuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCitw
cm90ZWN0ZWQ6CisgICAgaW5saW5lIHZvaWQgZG9BcHBlbmRUb05hbWUoVUNoYXIgY2hhcmFjdGVy
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIG1fZGF0YS5hcHBl
bmQoY2hhcmFjdGVyKTsKKyAgICB9CisgICAgCisgICAgY29uc3QgRGF0YVZlY3RvciYgZ2V0TmFt
ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKworICAgIC8v
IEZJWE1FOiBJJ20gbm90IHN1cmUgd2hhdCB0aGUgZmluYWwgcmVsYXRpb25zaGlwIGJldHdlZW4g
SFRNTFRva2VuIGFuZAorICAgIC8vIEF0b21pY0hUTUxUb2tlbiB3aWxsIGJlLiBJJ20gbWFya2lu
ZyB0aGlzIGEgZnJpZW5kIGZvciBub3csIGJ1dCB3ZSdsbAorICAgIC8vIHdhbnQgdG8gZW5kIHVw
IHdpdGggYSBjbGVhbmVyIGludGVyZmFjZSBiZXR3ZWVuIHRoZSB0d28gY2xhc3Nlcy4KKyAgICBm
cmllbmQgY2xhc3MgQXRvbWljSFRNTFRva2VuOworCisgICAgVHlwZSBtX3R5cGU7CisgICAgUmFu
Z2UgbV9yYW5nZTsgLy8gQWx3YXlzIHN0YXJ0cyBhdCB6ZXJvLgorICAgIGludCBtX2Jhc2VPZmZz
ZXQ7CisgICAgRGF0YVZlY3RvciBtX2RhdGE7CisKKyAgICAvLyBGb3IgRE9DVFlQRQorICAgIE93
blB0cjxEb2N0eXBlRGF0YT4gbV9kb2N0eXBlRGF0YTsKKworICAgIC8vIEZvciBTdGFydFRhZyBh
bmQgRW5kVGFnCisgICAgYm9vbCBtX3NlbGZDbG9zaW5nOworICAgIEF0dHJpYnV0ZUxpc3QgbV9h
dHRyaWJ1dGVzOworCisgICAgLy8gQSBwb2ludGVyIGludG8gbV9hdHRyaWJ1dGVzIHVzZWQgZHVy
aW5nIGxleGluZy4KKyAgICBBdHRyaWJ1dGUqIG1fY3VycmVudEF0dHJpYnV0ZTsKK307CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2Vu
LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWFh
ZTU2Yjg1MmE3OWU5MTI0NjVjMTg4NmFkMzUyMDYyZDA2ZjY0OQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW4uaApAQCAtMCwwICsxLDM1NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgWE1M
VG9rZW5faAorI2RlZmluZSBYTUxUb2tlbl9oCisKKyNpbmNsdWRlICJUb2tlbkJhc2UuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBYTUxUb2tlblR5cGVzIHsKK3B1YmxpYzoKKyAg
ICBlbnVtIFR5cGUgeworICAgICAgICBVbmluaXRpYWxpemVkLAorICAgICAgICBQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24sCisgICAgICAgIFhNTERlY2xhcmF0aW9uLAorICAgICAgICBET0NUWVBFLAor
ICAgICAgICBBdHRyaWJ1dGVMaXN0RGVjbGFyYXRpb24sCisgICAgICAgIEVsZW1lbnREZWNsYXJh
dGlvbiwKKyAgICAgICAgRW50aXR5RGVjbGFyYXRpb24sCisgICAgICAgIENEQVRBLAorICAgICAg
ICBTdGFydFRhZywKKyAgICAgICAgRW5kVGFnLAorICAgICAgICBDb21tZW50LAorICAgICAgICBD
aGFyYWN0ZXIsCisgICAgICAgIEVudGl0eSwKKyAgICAgICAgRW5kT2ZGaWxlLAorICAgIH07Cit9
OworCitjbGFzcyBYTUxUb2tlbiA6IHB1YmxpYyBUb2tlbkJhc2U8WE1MVG9rZW5UeXBlcz4gewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFhNTFRva2VuKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKworICAgIFhNTFRva2VuKCkgOiBUb2tlbkJhc2UoKSB7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBUb2tlbkJhc2U8WE1MVG9r
ZW5UeXBlcz46OmNsZWFyKCk7CisgICAgICAgIG1fdGFyZ2V0LmNsZWFyKCk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXBwZW5kVG9OYW1lKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IFhN
TFRva2VuVHlwZXM6OkVuZFRhZyB8fCBtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6RE9DVFlQRSB8
fCBtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6RW50aXR5KTsKKyAgICAgICAgZG9BcHBlbmRUb05h
bWUoY2hhcmFjdGVyKTsKKyAgICB9CisgICAgCisgICAgY29uc3QgRGF0YVZlY3RvciYgbmFtZSgp
IGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlN0
YXJ0VGFnIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpFbmRUYWcgfHwgbV90eXBlID09IFhN
TFRva2VuVHlwZXM6OkRPQ1RZUEUgfHwgbV90eXBlID09IFhNTFRva2VuVHlwZXM6OkVudGl0eSk7
CisgICAgICAgIHJldHVybiBnZXROYW1lKCk7CisgICAgfQorCisgICAgdm9pZCBiZWdpbkRPQ1RZ
UEUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpVbmlu
aXRpYWxpemVkKTsKKyAgICAgICAgbV90eXBlID0gWE1MVG9rZW5UeXBlczo6RE9DVFlQRTsKKyAg
ICAgICAgbV9kb2N0eXBlRGF0YSA9IGFkb3B0UHRyKG5ldyBEb2N0eXBlRGF0YSgpKTsKKyAgICB9
CisKKyAgICB2b2lkIGJlZ2luRE9DVFlQRShVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAg
ICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICAgICAgYmVnaW5ET0NUWVBFKCk7CisgICAgICAgIG1f
ZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luWE1MRGVjbGFy
YXRpb24oKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpV
bmluaXRpYWxpemVkKTsKKyAgICAgICAgbV90eXBlID0gWE1MVG9rZW5UeXBlczo6WE1MRGVjbGFy
YXRpb247CisgICAgICAgIG1feG1sRGVjbGFyYXRpb25EYXRhID0gYWRvcHRQdHIobmV3IFhNTERl
Y2xhcmF0aW9uRGF0YSgpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhcHBlbmRUb1hNTFZlcnNp
b24oVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6WE1MRGVjbGFyYXRpb24pOwor
ICAgICAgICBBU1NFUlQobV94bWxEZWNsYXJhdGlvbkRhdGEpOworICAgICAgICBtX3htbERlY2xh
cmF0aW9uRGF0YS0+bV92ZXJzaW9uLmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0KKworICAgIHZv
aWQgYmVnaW5YTUxFbmNvZGluZyhVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NF
UlQoY2hhcmFjdGVyKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpY
TUxEZWNsYXJhdGlvbik7CisgICAgICAgIEFTU0VSVChtX3htbERlY2xhcmF0aW9uRGF0YSk7Cisg
ICAgICAgIG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX2hhc0VuY29kaW5nID0gdHJ1ZTsKKyAgICAg
ICAgbV94bWxEZWNsYXJhdGlvbkRhdGEtPm1fZW5jb2RpbmcuYXBwZW5kKGNoYXJhY3Rlcik7Cisg
ICAgfQorCisgICAgdm9pZCBhcHBlbmRUb1hNTEVuY29kaW5nKFVDaGFyIGNoYXJhY3RlcikKKyAg
ICB7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgICAgICBBU1NFUlQobV90eXBlID09
IFhNTFRva2VuVHlwZXM6OlhNTERlY2xhcmF0aW9uKTsKKyAgICAgICAgQVNTRVJUKG1feG1sRGVj
bGFyYXRpb25EYXRhKTsKKyAgICAgICAgQVNTRVJUKG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX2hh
c0VuY29kaW5nKTsKKyAgICAgICAgbV94bWxEZWNsYXJhdGlvbkRhdGEtPm1fZW5jb2RpbmcuYXBw
ZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgdm9pZCBzZXRYTUxTdGFuZGFsb25lKGJvb2wg
c3RhbmRhbG9uZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBl
czo6WE1MRGVjbGFyYXRpb24pOworICAgICAgICBBU1NFUlQobV94bWxEZWNsYXJhdGlvbkRhdGEp
OworICAgICAgICBtX3htbERlY2xhcmF0aW9uRGF0YS0+bV9oYXNTdGFuZGFsb25lID0gdHJ1ZTsK
KyAgICAgICAgbV94bWxEZWNsYXJhdGlvbkRhdGEtPm1fc3RhbmRhbG9uZSA9IHN0YW5kYWxvbmU7
CisgICAgfQorCisgICAgdm9pZCBiZWdpblByb2Nlc3NpbmdJbnN0cnVjdGlvbigpCisgICAgewor
ICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQpOwor
ICAgICAgICBtX3R5cGUgPSBYTUxUb2tlblR5cGVzOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb247Cisg
ICAgfQorCisgICAgdm9pZCBiZWdpblByb2Nlc3NpbmdJbnN0cnVjdGlvbihVQ2hhciBjaGFyYWN0
ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICAgICAgYmVnaW5Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24oKTsKKyAgICAgICAgbV90YXJnZXQuYXBwZW5kKGNoYXJhY3Rlcik7
CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRUb1Byb2Nlc3NpbmdJbnN0cnVjdGlvblRhcmdldChV
Q2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2Vu
VHlwZXM6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbik7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIp
OworICAgICAgICBtX3RhcmdldC5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB2b2lk
IGFwcGVuZFRvUHJvY2Vzc2luZ0luc3RydWN0aW9uRGF0YShVQ2hhciBjaGFyYWN0ZXIpCisgICAg
eworICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlByb2Nlc3NpbmdJbnN0
cnVjdGlvbik7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgICAgICBtX2RhdGEuYXBw
ZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgdm9pZCBiZWdpbkNEQVRBKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7Cisg
ICAgICAgIG1fdHlwZSA9IFhNTFRva2VuVHlwZXM6OkNEQVRBOworICAgIH0KKworICAgIHZvaWQg
YXBwZW5kVG9DREFUQShVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQobV90
eXBlID09IFhNTFRva2VuVHlwZXM6OkNEQVRBKTsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7
CisgICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGJl
Z2luRW50aXR5KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBl
czo6VW5pbml0aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9IFhNTFRva2VuVHlwZXM6OkVudGl0
eTsKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luRW50aXR5KFVDaGFyIGNoYXJhY3RlcikKKyAgICB7
CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgICAgICBiZWdpbkVudGl0eSgpOworICAg
ICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgdm9pZCBwcmludFN0
cmluZyhjb25zdCBEYXRhVmVjdG9yJiBzdHJpbmcpCisgICAgeworICAgICAgICBEYXRhVmVjdG9y
Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gc3RyaW5nLmJlZ2luKCk7CisgICAgICAgIGZvciAoOyBp
dGVyICE9IHN0cmluZy5lbmQoKTsgKytpdGVyKQorICAgICAgICAgICAgcHJpbnRmKCIlbGMiLCB3
Y2hhcl90KCppdGVyKSk7CisgICAgfQorCisgICAgdm9pZCBwcmludEF0dHJzKCkKKyAgICB7Cisg
ICAgICAgIEF0dHJpYnV0ZUxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX2F0dHJpYnV0ZXMu
YmVnaW4oKTsKKyAgICAgICAgZm9yICg7IGl0ZXIgIT0gbV9hdHRyaWJ1dGVzLmVuZCgpOyArK2l0
ZXIpIHsKKyAgICAgICAgICAgIHByaW50ZigiICIpOworICAgICAgICAgICAgcHJpbnRTdHJpbmco
aXRlci0+bV9uYW1lKTsKKyAgICAgICAgICAgIHByaW50ZigiPVwiIik7CisgICAgICAgICAgICBw
cmludFN0cmluZyhpdGVyLT5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHByaW50ZigiXCIiKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHZvaWQgcHJpbnQoKQorICAgIHsKKyAgICAgICAgc3dpdGNo
IChtX3R5cGUpIHsKKyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkOgor
ICAgICAgICAgICAgcHJpbnRmKCJVTklUSUFMSVpFRCIpOworICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246CisgICAg
ICAgICAgICBwcmludGYoIlByb2Nlc3NpbmdJbnN0cnVjdGlvbjogIik7CisgICAgICAgICAgICBw
cmludGYoIjw/Iik7CisgICAgICAgICAgICBwcmludFN0cmluZyhtX3RhcmdldCk7CisgICAgICAg
ICAgICBwcmludGYoIiAiKTsKKyAgICAgICAgICAgIHByaW50U3RyaW5nKG1fZGF0YSk7CisgICAg
ICAgICAgICBwcmludGYoIj8+Iik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
IFhNTFRva2VuVHlwZXM6OlhNTERlY2xhcmF0aW9uOgorICAgICAgICAgICAgcHJpbnRmKCJYTUwg
RGVjbGFyYXRpb246ICIpOworICAgICAgICAgICAgcHJpbnRmKCI8P3htbCB2ZXJzaW9uPVwiIik7
CisgICAgICAgICAgICBBU1NFUlQobV94bWxEZWNsYXJhdGlvbkRhdGEpOworICAgICAgICAgICAg
cHJpbnRTdHJpbmcobV94bWxEZWNsYXJhdGlvbkRhdGEtPm1fdmVyc2lvbik7CisgICAgICAgICAg
ICBwcmludGYoIlwiIik7CisgICAgICAgICAgICBpZiAobV94bWxEZWNsYXJhdGlvbkRhdGEtPm1f
aGFzRW5jb2RpbmcpIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIiBlbmNvZGluZz1cIiIpOwor
ICAgICAgICAgICAgICAgIHByaW50U3RyaW5nKG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX2VuY29k
aW5nKTsKKyAgICAgICAgICAgICAgICBwcmludGYoIlwiIik7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAobV94bWxEZWNsYXJhdGlvbkRhdGEtPm1faGFzU3RhbmRhbG9uZSkKKyAgICAg
ICAgICAgICAgICBwcmludGYoIiBzdGFuZGFsb25lPVwiJXNcIiIsIG1feG1sRGVjbGFyYXRpb25E
YXRhLT5tX3N0YW5kYWxvbmUgPyAieWVzIiA6ICJubyIpOworICAgICAgICAgICAgcHJpbnRmKCI/
PiIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpE
T0NUWVBFOgorICAgICAgICAgICAgcHJpbnRmKCJET0NUWVBFOiAiKTsKKyAgICAgICAgICAgIEFT
U0VSVChtX2RvY3R5cGVEYXRhKTsKKyAgICAgICAgICAgIHByaW50ZigiPCFET0NUWVBFICIpOwor
ICAgICAgICAgICAgcHJpbnRTdHJpbmcobV9kYXRhKTsKKyAgICAgICAgICAgIGlmIChtX2RvY3R5
cGVEYXRhLT5tX2hhc1B1YmxpY0lkZW50aWZpZXIpIHsKKyAgICAgICAgICAgICAgICBwcmludGYo
IiBQVUJMSUMgXCIiKTsKKyAgICAgICAgICAgICAgICBwcmludFN0cmluZyhtX2RvY3R5cGVEYXRh
LT5tX3B1YmxpY0lkZW50aWZpZXIpOworICAgICAgICAgICAgICAgIHByaW50ZigiXCIiKTsKKyAg
ICAgICAgICAgICAgICBpZiAobV9kb2N0eXBlRGF0YS0+bV9oYXNTeXN0ZW1JZGVudGlmaWVyKSB7
CisgICAgICAgICAgICAgICAgICAgIHByaW50ZigiIFwiIik7CisgICAgICAgICAgICAgICAgICAg
IHByaW50U3RyaW5nKG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllcik7CisgICAgICAg
ICAgICAgICAgICAgIHByaW50ZigiXCIiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKG1fZG9jdHlwZURhdGEtPm1faGFzU3lzdGVtSWRlbnRpZmllcikgeworICAg
ICAgICAgICAgICAgIHByaW50ZigiIFNZU1RFTSBcIiIpOworICAgICAgICAgICAgICAgIHByaW50
U3RyaW5nKG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllcik7CisgICAgICAgICAgICAg
ICAgcHJpbnRmKCJcIiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJpbnRmKCI+Iik7
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkF0dHJp
YnV0ZUxpc3REZWNsYXJhdGlvbjoKKyAgICAgICAgICAgIHByaW50ZigiQXR0cmlidXRlIExpc3Q6
ICIpOworICAgICAgICAgICAgcHJpbnRmKCI8IUFUVExJU1Q+Iik7CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkVsZW1lbnREZWNsYXJhdGlvbjoKKyAg
ICAgICAgICAgIHByaW50ZigiRWxlbWVudCBEZWNsYXJhdGlvbjogIik7CisgICAgICAgICAgICBw
cmludGYoIjwhRUxFTUVOVD4iKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
WE1MVG9rZW5UeXBlczo6RW50aXR5RGVjbGFyYXRpb246CisgICAgICAgICAgICBwcmludGYoIkVu
dGl0eSBEZWNsYXJhdGlvbjogIik7CisgICAgICAgICAgICBwcmludGYoIjwhRU5USVRZPiIpOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpDREFUQToK
KyAgICAgICAgICAgIHByaW50ZigiQ0RBVEE6ICIpOworICAgICAgICAgICAgcHJpbnRmKCI8IVtD
REFUQVsiKTsKKyAgICAgICAgICAgIHByaW50U3RyaW5nKG1fZGF0YSk7CisgICAgICAgICAgICBw
cmludGYoIl1dPiIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBYTUxUb2tl
blR5cGVzOjpTdGFydFRhZzoKKyAgICAgICAgICAgIHByaW50ZigiU3RhcnQgVGFnOiAiKTsKKyAg
ICAgICAgICAgIHByaW50ZigiPCIpOworICAgICAgICAgICAgcHJpbnRTdHJpbmcobV9kYXRhKTsK
KyAgICAgICAgICAgIHByaW50QXR0cnMoKTsKKyAgICAgICAgICAgIGlmIChzZWxmQ2xvc2luZygp
KQorICAgICAgICAgICAgICAgIHByaW50ZigiLyIpOworICAgICAgICAgICAgcHJpbnRmKCI+Iik7
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkVuZFRh
ZzoKKyAgICAgICAgICAgIHByaW50ZigiRW5kIFRhZzogIik7CisgICAgICAgICAgICBwcmludGYo
IjwvIik7CisgICAgICAgICAgICBwcmludFN0cmluZyhtX2RhdGEpOworICAgICAgICAgICAgcHJp
bnRmKCI+Iik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFhNTFRva2VuVHlw
ZXM6OkNvbW1lbnQ6CisgICAgICAgICAgICBwcmludGYoIkNvbW1lbnQ6ICIpOworICAgICAgICAg
ICAgcHJpbnRmKCI8IS0tIik7CisgICAgICAgICAgICBwcmludFN0cmluZyhtX2RhdGEpOworICAg
ICAgICAgICAgcHJpbnRmKCItLT4iKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh
c2UgWE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOgorICAgICAgICAgICAgcHJpbnRmKCJDaGFyYWN0
ZXJzOiAiKTsKKyAgICAgICAgICAgIHByaW50U3RyaW5nKG1fZGF0YSk7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkVudGl0eToKKyAgICAgICAgICAg
IHByaW50ZigiRW50aXR5OiAiKTsKKyAgICAgICAgICAgIHByaW50ZigiJiIpOworICAgICAgICAg
ICAgcHJpbnRTdHJpbmcobV9kYXRhKTsKKyAgICAgICAgICAgIHByaW50ZigiOyIpOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpFbmRPZkZpbGU6Cisg
ICAgICAgICAgICBwcmludGYoIkVPRiIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KworICAgICAgICBwcmludGYoIlxuIik7CisgICAgfQorCitwcml2YXRlOgorICAgIHR5cGVkZWYg
QmFzZURvY3R5cGVEYXRhIERvY3R5cGVEYXRhOworCisgICAgY2xhc3MgWE1MRGVjbGFyYXRpb25E
YXRhIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoWE1MRGVjbGFyYXRpb25EYXRhKTsK
KyAgICBwdWJsaWM6CisgICAgICAgIFhNTERlY2xhcmF0aW9uRGF0YSgpCisgICAgICAgIDogbV9o
YXNTdGFuZGFsb25lKGZhbHNlKQorICAgICAgICAsIG1faGFzRW5jb2RpbmcoZmFsc2UpCisgICAg
ICAgICwgbV9zdGFuZGFsb25lKGZhbHNlKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGJvb2wgbV9oYXNTdGFuZGFsb25lOworICAgICAgICBib29sIG1faGFzRW5jb2Rp
bmc7CisgICAgICAgIGJvb2wgbV9zdGFuZGFsb25lOworICAgICAgICBXVEY6OlZlY3RvcjxVQ2hh
cj4gbV9lbmNvZGluZzsKKyAgICAgICAgV1RGOjpWZWN0b3I8VUNoYXI+IG1fdmVyc2lvbjsKKyAg
ICB9OworCisgICAgLy8gInRhcmdldCIgZm9yIFByb2Nlc3NpbmdJbnN0cnVjdGlvbgorICAgIERh
dGFWZWN0b3IgbV90YXJnZXQ7CisgICAgCisgICAgLy8gRm9yIFhNTCBEZWNsYXJhdGlvbgorICAg
IE93blB0cjxYTUxEZWNsYXJhdGlvbkRhdGE+IG1feG1sRGVjbGFyYXRpb25EYXRhOworfTsKKwor
fQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101257</attachid>
            <date>2011-07-18 18:54:34 -0700</date>
            <delta_ts>2011-07-20 11:28:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64764-20110718185433.patch</filename>
            <type>text/plain</type>
            <size>85842</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEyMTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNWFmNDRjOWQ2MDMyMGIw
MTFiNWI3N2YwZGE4YTZlYmNkM2JiYjFlLi5iNjdlNmYwNjg4YTUzZGMxZGRjMzliN2E2MDg0N2Iy
NzBmY2ZjZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY2IEBACisyMDExLTA3LTE4ICBKZWZm
cmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgTmV3IFRva2VuIGNsYXNzIGZv
ciBYTUwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0
NzY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3
IFhNTFRva2VuIGNsYXNzIGFsb25nIHdpdGggVG9rZW5CYXNlLCBhbmQgSFRNTFRva2VuIGluaGVy
aXRpbmcgZnJvbSBCYXNlVG9rZW4uCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAg
KiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MVmlld1NvdXJjZURvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZFNv
dXJjZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydERvY3R5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnRPbkRv
Y3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRD
b21tZW50T25IVE1MSHRtbEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVj
dGlvblNpdGU6Omluc2VydFNlbGZDbG9zaW5nSFRNTEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEZvcmVpZ25FbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudEZyb21TYXZl
ZEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0YUNoYXJzZXRQYXJzZXI6OmNoZWNrRm9yTWV0
YUNoYXJzZXQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUHJlbG9hZFNjYW5uZXI6OnByb2Nlc3NUb2tlbik6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNvdXJjZVRyYWNrZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
b3VyY2VUcmFja2VyOjpzb3VyY2VGb3JUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRN
TFRva2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5UeXBlczo6RG9jdHlwZURhdGE6
OkRvY3R5cGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6SFRNTFRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9OYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUb2tlbjo6bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmZv
cmNlUXVpcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6c2V0Rm9yY2VRdWlya3Mp
OgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpBdG9taWNIVE1MVG9rZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjp0eXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OkF0b21pY0hUTUxUb2tlbjo6c2VsZkNsb3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXRv
bWljSFRNTFRva2VuOjpjaGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxU
b2tlbjo6Y29tbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OnB1Ymxp
Y0lkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpzeXN0ZW1J
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6Zm9yY2VRdWly
a3MpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjp1c2VzTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OnVzZXNBdHRyaWJ1dGVzKToKKyAgICAgICAg
KiBodG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
b2tlbml6ZXI6OnNhdmVFbmRUYWdOYW1lSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRva2VuaXplcjo6Zmx1c2hCdWZmZXJlZEVuZFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VG9rZW5pemVyOjpuZXh0VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6
aGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxU
cmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmNvbnN0
cnVjdFRyZWVGcm9tVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
RG9jdHlwZVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c0Zha2VTdGFydFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NGYWtlRW5kVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c0Zha2VQRW5kVGFnSWZQSW5CdXR0b25TY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NJc2luZGV4U3RhcnRUYWdGb3JJbkJvZHkpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkJvZHkpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJblRhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0JvZHlFbmRUYWdGb3JJbkJv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQW55T3RoZXJF
bmRUYWdGb3JJbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9j
ZXNzRW5kVGFnRm9ySW5UYWJsZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5Sb3cpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5DZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblRhYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDb21tZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NFbmRPZkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVC
dWlsZGVyOjpkZWZhdWx0Rm9yQmVmb3JlSFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJl
ZUJ1aWxkZXI6OmRlZmF1bHRGb3JCZWZvcmVIZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6ZGVmYXVsdEZvckluSGVhZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJl
ZUJ1aWxkZXI6OmRlZmF1bHRGb3JJbkhlYWROb3NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JBZnRlckhlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkhlYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1JDREFUQVN0YXJ0VGFnKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0dlbmVyaWNSYXdUZXh0U3Rh
cnRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU2NyaXB0
U3RhcnRUYWcpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlUGFyc2VyOjp1cGRhdGVUb2tlbml6
ZXJTdGF0ZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHREb2N1bWVudFBhcnNlcjo6aW5zZXJ0RmFrZVByZUVsZW1l
bnQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW5Jbml0aWFsKToKKyAgICAgICAgKFdlYkNvcmU6
OlhTU0F1ZGl0b3I6OmZpbHRlclRva2VuQWZ0ZXJTY3JpcHRTdGFydFRhZyk6CisgICAgICAgIChX
ZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJTY3JpcHRUb2tlbik6CisgICAgICAgIChXZWJDb3Jl
OjpYU1NBdWRpdG9yOjpmaWx0ZXJPYmplY3RUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NB
dWRpdG9yOjpmaWx0ZXJQYXJhbVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6
OmZpbHRlckVtYmVkVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVy
QXBwbGV0VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVySWZyYW1l
VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyTWV0YVRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlckJhc2VUb2tlbik6CisgICAgICAg
IChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJGb3JtVG9rZW4pOgorICAgICAgICAqIHhtbC9w
YXJzZXIvVG9rZW5CYXNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QmFzZURvY3R5cGVE
YXRhOjpCYXNlRG9jdHlwZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjpUb2tl
bkJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjp+VG9rZW5CYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5C
YXNlOjppc1VuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjpzdGFy
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6ZW5kSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6VG9rZW5CYXNlOjpzZXRCYXNlT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OlRva2VuQmFzZTo6ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6bWFrZUVuZE9m
RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpUb2tlbkJhc2U6OmJlZ2luU3RhcnRUYWcpOgorICAg
ICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjpiZWdpbkVuZFRhZyk6CisgICAgICAgIChXZWJDb3Jl
OjpUb2tlbkJhc2U6OmVuc3VyZUlzQ2hhcmFjdGVyVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
VG9rZW5CYXNlOjpiZWdpbkNvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjpi
ZWdpbkRPQ1RZUEUpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjphcHBlbmRUb0NoYXJh
Y3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpUb2tlbkJhc2U6OmFwcGVuZFRvQ29tbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUb2tlbkJhc2U6OmFkZE5ld0F0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUb2tlbkJhc2U6OmJlZ2luQXR0cmlidXRlTmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUb2tlbkJhc2U6OmVuZEF0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5C
YXNlOjpiZWdpbkF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6
ZW5kQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjphcHBlbmRU
b0F0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNlOjphcHBlbmRUb0F0
dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6dHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUb2tlbkJhc2U6OnNlbGZDbG9zaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlRva2VuQmFzZTo6c2V0U2VsZkNsb3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNl
OjphdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6ZXJhc2VDaGFyYWN0
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6ZXJhc2VWYWx1ZU9mQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6Y2hhcmFjdGVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpUb2tlbkJhc2U6OmNvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNl
OjpwdWJsaWNJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6c3lzdGVt
SWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpUb2tlbkJhc2U6OnNldFB1YmxpY0lkZW50
aWZpZXJUb0VtcHR5U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuQmFzZTo6c2V0U3lz
dGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNl
OjphcHBlbmRUb1B1YmxpY0lkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNl
OjphcHBlbmRUb1N5c3RlbUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5CYXNl
Ojpkb0FwcGVuZFRvTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpUb2tlbkJhc2U6OmdldE5hbWUp
OgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MVG9rZW4uaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpYTUxUb2tlbjo6WE1MVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW46OmNs
ZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuOjphcHBlbmRUb05hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MVG9rZW46Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW46
OmJlZ2luRE9DVFlQRSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6YmVnaW5YTUxEZWNs
YXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6YXBwZW5kVG9YTUxWZXJzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuOjpiZWdpblhNTEVuY29kaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlhNTFRva2VuOjphcHBlbmRUb1hNTEVuY29kaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlhNTFRva2VuOjpzZXRYTUxTdGFuZGFsb25lKToKKyAgICAgICAgKFdlYkNvcmU6OlhN
TFRva2VuOjpiZWdpblByb2Nlc3NpbmdJbnN0cnVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpY
TUxUb2tlbjo6YXBwZW5kVG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6WE1MVG9rZW46OmFwcGVuZFRvUHJvY2Vzc2luZ0luc3RydWN0aW9uRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6YmVnaW5DREFUQSk6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxUb2tlbjo6YXBwZW5kVG9DREFUQSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6
YmVnaW5FbnRpdHkpOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW46OnByaW50U3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuOjpwcmludEF0dHJzKToKKyAgICAgICAgKFdlYkNv
cmU6OlhNTFRva2VuOjpwcmludCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6WE1MRGVj
bGFyYXRpb25EYXRhOjpYTUxEZWNsYXJhdGlvbkRhdGEpOgorCiAyMDExLTA3LTE4ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgU3BlY2lmeSBhIGNhc2NhZGUgbGlz
dCBjb25zaXN0aW5nIG9mIHRoZSBsYXN0IHJlc29ydCBmb250IGZvciBDb3JlIFRleHQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDQzMzFhZGE1MDNhMzdkZDUwMDI3Njc5MWJiNjAy
OWI2YjY5Y2ZmODguLjRmZjVmNTBiNDI5OWZiNzgyMzQ4NTI3YWI4OTRmODA1ZjJmYjMzNTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzgwMiw2ICszODAyLDcgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL05ld1hNTERvY3VtZW50UGFyc2VyLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1Rva2VuQmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyTGlieG1sMi5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDY2NDk2NGJlNGFl
Mzg5YjhiMzJiOWU4ZDk4ZjljOGUzMDNhMTc0OWMuLmQ1MjY5ZWM0NDlhNzUyNWU0NDQyYWZiNjU4
NjMyNDhmNmM2N2Y3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTYxMDQsNiArNjEwNCw3IEBACiAg
ICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCcsCiAgICAgICAgICAgICAn
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAnd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwJywKKyAgICAgICAgICAgICd4bWwvcGFyc2VyL1Rva2VuQmFzZS5o
JywKICAgICAgICAgICAgICd4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCcsCiAgICAg
ICAgICAgICAneG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oJywKICAgICAgICAgICAgICd4
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRl
eCBlYTY2NjgzNzhhNTY5Yzg2Y2NhN2ZiODAzNTZjOGZiNzIxZDkxZDJkLi40ZTI1OTllN2YyYjY3
ZDBkN2VlNjNhOTk2Yjc2MDBhY2U3OTNhMGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMjQ5Niw2ICsy
NDk2LDcgQEAgSEVBREVSUyArPSBcCiAgICAgd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmggXAogICAg
IHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggXAogICAgIHdvcmtlcnMvV29ya2VyVGhyZWFk
LmggXAorICAgIHhtbC9wYXJzZXIvVG9rZW5CYXNlLmggXAogICAgIHhtbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXIuaCBcCiAgICAgeG1sL0RPTVBhcnNlci5oIFwKICAgICB4bWwvTmF0aXZlWFBh
dGhOU1Jlc29sdmVyLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagppbmRleCBjNTQ1YjlmZDczNmNiYTJlNDI0ZDdlMzU5YTEzMTJmNGIxMDM3NmVkLi4w
NTg1MmE1NDU0NDM1ZmNlZGQ5NzkzMDkxYmU1ZTg3MzIyY2U0NDVkIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDI0NDksNiArNDI0NDksMTAg
QEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlx4bWxccGFyc2VyXFRva2VuQmFzZS5oIgorCQkJCQk+CisJCQkJ
PC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1sXHBhcnNlclxYTUxE
b2N1bWVudFBhcnNlci5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA5NTI3NTgzNWYyMjMx
MWFmOGJhNGZhMjM5ODJjNWZhZjVhM2FmZjguLjllMTAwMmRjZjM4YTQxOTg2NTE3NmYzOTJlODRk
ZjlkMDliNTEwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTQ2LDkgKzQ2LDExIEBACiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmls
ZSBzZWN0aW9uICovCiAJCTAwMDIyRTY5MTNDRTFCQkEwMDI4MkQ1QiAvKiBDaGFyYWN0ZXJSZWZl
cmVuY2VQYXJzZXJJbmxpbmVNZXRob2RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwMDAyMkU2ODEzQ0UxQkJBMDAyODJENUIgLyogQ2hhcmFjdGVyUmVm
ZXJlbmNlUGFyc2VySW5saW5lTWV0aG9kcy5oICovOyB9OworCQkwMDAyRUM1ODEzQzNGNjdEMDAw
NDBENDcgLyogWE1MVG9rZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDAwMDJFQzU1MTNDM0Y2N0QwMDA0MEQ0NyAvKiBYTUxUb2tlbi5oICovOyB9Owog
CQkwMDE0NjI4QTEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDAxNDYyODgxMDNDRDFE
RTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmNwcCAqLzsgfTsKIAkJMDAxNDYyOEIxMDND
RDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDE0NjI4OTEwM0NEMURFMDAwQjIwREIgLyogT3Jp
Z2luQWNjZXNzRW50cnkuaCAqLzsgfTsKIAkJMDAzRjFGRUExMUU2QUI0MzAwODI1OEQ5IC8qIFVz
ZXJDb250ZW50VHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDAwM0YxRkU5MTFFNkFCNDMwMDgyNThEOSAvKiBVc2VyQ29udGVudFR5cGVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDBBNjI5QzEx
M0QwQkVDNzAwNTBBQzUyIC8qIFRva2VuQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDBBNjI5QzAxM0QwQkVDNzAwNTBBQzUyIC8qIFRva2VuQmFz
ZS5oICovOyB9OwogCQkwMEI5MzE4NzEzQkE4REIzMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJz
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBC
OTMxODExM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmNwcCAqLzsgfTsKIAkJ
MDBCOTMxODgxM0JBOERCQTAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEI5MzE4MjEzQkE4NjdGMDAz
NUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXIuaCAqLzsgfTsKIAkJMDBCOTMxODkxM0JBOERCQzAw
MzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEI5MzE4MzEzQkE4NjdGMDAzNUE5NDggLyog
WE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCAqLzsgfTsKQEAgLTY0MDgsOSArNjQxMCwxMSBA
QAogCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAkJMDAwMjJFNjgxM0NF
MUJCQTAwMjgyRDVCIC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZU1ldGhvZHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2Vy
SW5saW5lTWV0aG9kcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwMDAyRUM1NTEz
QzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gWE1MVG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDAxNDYyODgx
MDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9yaWdpbkFjY2Vzc0VudHJ5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDAxNDYyODkxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vz
c0VudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9yaWdpbkFjY2Vzc0Vu
dHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwM0YxRkU5MTFFNkFCNDMwMDgy
NThEOSAvKiBVc2VyQ29udGVudFR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFVzZXJDb250ZW50VHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDBB
NjI5QzAxM0QwQkVDNzAwNTBBQzUyIC8qIFRva2VuQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUb2tlbkJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDBCOTMxODExM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTERvY3VtZW50UGFyc2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBCOTMxODIxM0JBODY3RjAwMzVBOTQ4IC8qIFhN
TERvY3VtZW50UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTERv
Y3VtZW50UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwQjkzMTgzMTNC
QTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzEyLDYgKzEyNzE2LDcgQEAKIAkJCQkw
MDAyMkU2ODEzQ0UxQkJBMDAyODJENUIgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5l
TWV0aG9kcy5oICovLAogCQkJCTAwQ0E5M0I0MTNDNjY5N0MwMEY3RkU5NSAvKiBOZXdYTUxEb2N1
bWVudFBhcnNlci5jcHAgKi8sCiAJCQkJMDBDQTkzQjExM0M2NjkxNjAwRjdGRTk1IC8qIE5ld1hN
TERvY3VtZW50UGFyc2VyLmggKi8sCisJCQkJMDBBNjI5QzAxM0QwQkVDNzAwNTBBQzUyIC8qIFRv
a2VuQmFzZS5oICovLAogCQkJCTAwRDA0NjQ4MTNDNEQxNDUwMDMyNkZDQyAvKiBYTUxDaGFyYWN0
ZXJSZWZlcmVuY2VQYXJzZXIuY3BwICovLAogCQkJCTAwRDA0NjQ5MTNDNEQxNDUwMDMyNkZDQyAv
KiBYTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuaCAqLywKIAkJCQkwMEI5MzE4MTEzQkE4NjdG
MDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXIuY3BwICovLApAQCAtMTI3MTksNiArMTI3MjQs
NyBAQAogCQkJCTAwQjkzMTgzMTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwICovLAogCQkJCTAwQjkzMTg1MTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVu
dFBhcnNlclNjb3BlLmNwcCAqLywKIAkJCQkwMEI5MzE4NjEzQkE4NjdGMDAzNUE5NDggLyogWE1M
RG9jdW1lbnRQYXJzZXJTY29wZS5oICovLAorCQkJCTAwMDJFQzU1MTNDM0Y2N0QwMDA0MEQ0NyAv
KiBYTUxUb2tlbi5oICovLAogCQkJKTsKIAkJCXBhdGggPSBwYXJzZXI7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMjMwNzgsNiArMjMwODQsNyBAQAogCQkJCUE4MzNDODBEMEEyQ0Yy
NTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE1QTM2RDcxMTA0
NTcyMDAwQjdCNjM5IC8qIFhNTE5TTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQ0U1M0VC
MEE4RDE4RTcwMDIyOTQ3RCAvKiBYTUxTZXJpYWxpemVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
MDAyRUM1ODEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU5MDVBREMwMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUI3RkM2OTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNjBEQTVCMEQyQTMxRjcwMEI5OTE4RiAvKiBYUGF0aEV4Y2VwdGlv
bi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzEwNCw2ICsyMzExMSw3IEBACiAJCQkJRkQ1MzczNTMx
MzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTQ1QkZE
NDEzQ0Y4MDkwMDBDQzNCMzggLyogVHJhbnNmb3JtU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ5NjlCMEYzMTNEMEIzM0YwMERGMzUyMSAvKiBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUuaCBp
biBIZWFkZXJzICovLAorCQkJCTAwQTYyOUMxMTNEMEJFQzcwMDUwQUM1MiAvKiBUb2tlbkJhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmll
d1NvdXJjZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VE
b2N1bWVudC5jcHAKaW5kZXggMWE3MGRmYzE5ZDU1YWFkNmNmNDFlZTc4ZDBjMjllN2ZiNTU5ZDZj
MS4uNDAyZmFiODdlNWEyMDMxNzc2YWQ2MmZiMDc0YjhkMzNjZmQyYWY4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwCkBAIC0xMDQsMjQgKzEw
NCwyNCBAQCB2b2lkIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZFNvdXJjZShjb25zdCBTdHJp
bmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgY3JlYXRlQ29udGFpbmluZ1Rh
YmxlKCk7CiAKICAgICBzd2l0Y2ggKHRva2VuLnR5cGUoKSkgewotICAgIGNhc2UgSFRNTFRva2Vu
OjpVbmluaXRpYWxpemVkOgorICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEhUTUxUb2tlbjo6RE9DVFlQRToKKyAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpET0NUWVBFOgog
ICAgICAgICBwcm9jZXNzRG9jdHlwZVRva2VuKHNvdXJjZSwgdG9rZW4pOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIEhUTUxUb2tlbjo6RW5kT2ZGaWxlOgorICAgIGNhc2UgSFRNTFRva2VuVHlw
ZXM6OkVuZE9mRmlsZToKICAgICAgICAgaWYgKCFtX3Rib2R5LT5oYXNDaGlsZE5vZGVzKCkpCiAg
ICAgICAgICAgICBhZGRMaW5lKFN0cmluZygpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBI
VE1MVG9rZW46OlN0YXJ0VGFnOgotICAgIGNhc2UgSFRNTFRva2VuOjpFbmRUYWc6CisgICAgY2Fz
ZSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWc6CisgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5k
VGFnOgogICAgICAgICBwcm9jZXNzVGFnVG9rZW4oc291cmNlLCB0b2tlbik7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSFRNTFRva2VuOjpDb21tZW50OgorICAgIGNhc2UgSFRNTFRva2VuVHlw
ZXM6OkNvbW1lbnQ6CiAgICAgICAgIHByb2Nlc3NDb21tZW50VG9rZW4oc291cmNlLCB0b2tlbik7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuOjpDaGFyYWN0ZXI6CisgICAgY2Fz
ZSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOgogICAgICAgICBwcm9jZXNzQ2hhcmFjdGVyVG9r
ZW4oc291cmNlLCB0b2tlbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRleCA4ZTlj
MjZhMjFhYmZjODVhNWU3MGIyMWE0MDgzNDY4NWQxYzdiYzMyLi4xNGFkZWJkNWU5ZmQwMGI3MzE2
NjVhYzc3MjhiMTk3YTE2YmU0MzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBI
VE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEJvZHlTdGFydFRhZ0luQm9keShBdG9taWNI
VE1MVG9rZW4mIHRva2VuKQogCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnREb2N0
eXBlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9
PSBIVE1MVG9rZW46OkRPQ1RZUEUpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRv
a2VuVHlwZXM6OkRPQ1RZUEUpOwogICAgIGF0dGFjaChtX2F0dGFjaG1lbnRSb290LCBEb2N1bWVu
dFR5cGU6OmNyZWF0ZShtX2RvY3VtZW50LCB0b2tlbi5uYW1lKCksIFN0cmluZzo6YWRvcHQodG9r
ZW4ucHVibGljSWRlbnRpZmllcigpKSwgU3RyaW5nOjphZG9wdCh0b2tlbi5zeXN0ZW1JZGVudGlm
aWVyKCkpKSk7CiAgICAgCiAgICAgLy8gRE9DVFlQRSBub2RlcyBhcmUgb25seSBwcm9jZXNzZWQg
d2hlbiBwYXJzaW5nIGZyYWdtZW50cyB3L28gY29udGV4dEVsZW1lbnRzLCB3aGljaApAQCAtMjQz
LDE5ICsyNDMsMTkgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0RG9jdHlwZShB
dG9taWNIVE1MVG9rZW4mIHRva2VuKQogCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNl
cnRDb21tZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW46OkNvbW1lbnQpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0g
SFRNTFRva2VuVHlwZXM6OkNvbW1lbnQpOwogICAgIGF0dGFjaChjdXJyZW50Tm9kZSgpLCBDb21t
ZW50OjpjcmVhdGUoY3VycmVudE5vZGUoKS0+ZG9jdW1lbnQoKSwgdG9rZW4uY29tbWVudCgpKSk7
CiB9CiAKIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnRPbkRvY3VtZW50
KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBI
VE1MVG9rZW46OkNvbW1lbnQpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
VHlwZXM6OkNvbW1lbnQpOwogICAgIGF0dGFjaChtX2F0dGFjaG1lbnRSb290LCBDb21tZW50Ojpj
cmVhdGUobV9kb2N1bWVudCwgdG9rZW4uY29tbWVudCgpKSk7CiB9CiAKIHZvaWQgSFRNTENvbnN0
cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnRPbkhUTUxIdG1sRWxlbWVudChBdG9taWNIVE1MVG9r
ZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpDb21t
ZW50KTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50
KTsKICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBtX29wZW5FbGVtZW50cy5yb290Tm9kZSgp
OwogICAgIGF0dGFjaChwYXJlbnQsIENvbW1lbnQ6OmNyZWF0ZShwYXJlbnQtPmRvY3VtZW50KCks
IHRva2VuLmNvbW1lbnQoKSkpOwogfQpAQCAtMjk3LDcgKzI5Nyw3IEBAIHZvaWQgSFRNTENvbnN0
cnVjdGlvblNpdGU6Omluc2VydEhUTUxFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAK
IHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFNlbGZDbG9zaW5nSFRNTEVsZW1lbnQo
QXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhU
TUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
VHlwZXM6OlN0YXJ0VGFnKTsKICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGF0dGFjaFRv
Q3VycmVudChjcmVhdGVIVE1MRWxlbWVudCh0b2tlbikpOwogICAgIC8vIE5vcm1hbGx5IEhUTUxF
bGVtZW50U3RhY2sgaXMgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgZmluaXNoUGFyc2luZ0NoaWxk
cmVuLAogICAgIC8vIGJ1dCBzZWxmLWNsb3NpbmcgZWxlbWVudHMgYXJlIG5ldmVyIGluIHRoZSBl
bGVtZW50IHN0YWNrIHNvIHRoZSBzdGFjawpAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQgSFRNTENv
bnN0cnVjdGlvblNpdGU6Omluc2VydFNjcmlwdEVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiB0b2tl
bikKIAogdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Rm9yZWlnbkVsZW1lbnQoQXRv
bWljSFRNTFRva2VuJiB0b2tlbiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpCiB7
Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAgICBB
U1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsgLy8gcGFyc2VFcnJvciB3aGVuIHhtbG5zIG9yIHhtbG5zOnhsaW5rIGFy
ZSB3cm9uZy4KIAogICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gYXR0YWNoVG9DdXJyZW50
KGNyZWF0ZUVsZW1lbnQodG9rZW4sIG5hbWVzcGFjZVVSSSkpOwpAQCAtNDIxLDcgKzQyMSw3IEBA
IFBhc3NSZWZQdHI8RWxlbWVudD4gSFRNTENvbnN0cnVjdGlvblNpdGU6OmNyZWF0ZUhUTUxFbGVt
ZW50RnJvbVNhdmVkRWxlbWVudChFbGVtCiAgICAgLy8gc3BlYyBpbXBsaWVzIGl0IHNob3VsZCBi
ZSAiMSIuICBNaW5lZmllbGQgbWF0Y2hlcyB0aGUgSFRNTDUgc3BlYyBoZXJlLgogCiAgICAgQVNT
RVJUKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSk7IC8vIG90aGVyd2lzZSBsb2NhbE5hbWUoKSBt
aWdodCBiZSB3cm9uZy4KLSAgICBBdG9taWNIVE1MVG9rZW4gZmFrZVRva2VuKEhUTUxUb2tlbjo6
U3RhcnRUYWcsIGVsZW1lbnQtPmxvY2FsTmFtZSgpLCBjbG9uZUF0dHJpYnV0ZXMoZWxlbWVudCkp
OworICAgIEF0b21pY0hUTUxUb2tlbiBmYWtlVG9rZW4oSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFn
LCBlbGVtZW50LT5sb2NhbE5hbWUoKSwgY2xvbmVBdHRyaWJ1dGVzKGVsZW1lbnQpKTsKICAgICBy
ZXR1cm4gY3JlYXRlSFRNTEVsZW1lbnQoZmFrZVRva2VuKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAKaW5kZXggNTQx
MzQ2Njk5Njk0YTkxYzhmM2YzYTBhNzFhZTMyOTU2ZDAyYjcwYS4uOWNlYWFlOWFmMDYwOWJmNzJi
ZjY5ODdjOTJhNjAwZWE2NzhiNGNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwCkBAIC0xNzUsOCArMTc1LDggQEAgYm9v
bCBIVE1MTWV0YUNoYXJzZXRQYXJzZXI6OmNoZWNrRm9yTWV0YUNoYXJzZXQoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCkKICAgICBtX2lucHV0LmFwcGVuZChTZWdtZW50ZWRTdHJpbmco
bV9hc3N1bWVkQ29kZWMtPmRlY29kZShkYXRhLCBsZW5ndGgpKSk7CiAKICAgICB3aGlsZSAobV90
b2tlbml6ZXItPm5leHRUb2tlbihtX2lucHV0LCBtX3Rva2VuKSkgewotICAgICAgICBib29sIGVu
ZCA9IG1fdG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnOwotICAgICAgICBpZiAoZW5k
IHx8IG1fdG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpIHsKKyAgICAgICAgYm9v
bCBlbmQgPSBtX3Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnOworICAgICAg
ICBpZiAoZW5kIHx8IG1fdG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZykg
ewogICAgICAgICAgICAgQXRvbWljU3RyaW5nIHRhZ05hbWUobV90b2tlbi5uYW1lKCkuZGF0YSgp
LCBtX3Rva2VuLm5hbWUoKS5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCFlbmQpIHsKICAgICAg
ICAgICAgICAgICBtX3Rva2VuaXplci0+dXBkYXRlU3RhdGVGb3IodGFnTmFtZSwgMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAppbmRl
eCA5YzMwZWY5MmRlMzEwYTE1YjVkOTFjYTFiOTAwOTk3MDM3OWY1YjYxLi5iOTQyMWQ4ODQ0ZTY5
YWI3MGI5NWE2OWYxYjEyYTgwZDcyYjEwZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTE3NCwxNSArMTc0LDE1IEBAIHZv
aWQgSFRNTFByZWxvYWRTY2FubmVyOjpzY2FuKCkKIHZvaWQgSFRNTFByZWxvYWRTY2FubmVyOjpw
cm9jZXNzVG9rZW4oKQogewogICAgIGlmIChtX2luU3R5bGUpIHsKLSAgICAgICAgaWYgKG1fdG9r
ZW4udHlwZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKQorICAgICAgICBpZiAobV90b2tlbi50
eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcikKICAgICAgICAgICAgIG1fY3NzU2Nh
bm5lci5zY2FuKG1fdG9rZW4sIHNjYW5uaW5nQm9keSgpKTsKLSAgICAgICAgZWxzZSBpZiAobV90
b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpIHsKKyAgICAgICAgZWxzZSBpZiAobV90
b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZykgewogICAgICAgICAgICAgbV9p
blN0eWxlID0gZmFsc2U7CiAgICAgICAgICAgICBtX2Nzc1NjYW5uZXIucmVzZXQoKTsKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGlmIChtX3Rva2VuLnR5cGUoKSAhPSBIVE1MVG9rZW46OlN0YXJ0
VGFnKQorICAgIGlmIChtX3Rva2VuLnR5cGUoKSAhPSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcp
CiAgICAgICAgIHJldHVybjsKIAogICAgIFByZWxvYWRUYXNrIHRhc2sobV90b2tlbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU291cmNlVHJhY2tlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU291cmNlVHJhY2tlci5jcHAKaW5kZXgg
Y2Y0MzEwNWQzOTIxYTYyMjY1ZDZhMmE5ZjdhN2FmMGVlNTFiNTVlYi4uNzBjZjcwOTE1YThiZjhh
OTk1MDE4OTNlZWNlYzlmMWM5OGJhZmVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxTb3VyY2VUcmFja2VyLmNwcApAQCAtMzQsNyArMzQsNyBAQCBIVE1MU291cmNl
VHJhY2tlcjo6SFRNTFNvdXJjZVRyYWNrZXIoKQogCiB2b2lkIEhUTUxTb3VyY2VUcmFja2VyOjpz
dGFydChjb25zdCBIVE1MSW5wdXRTdHJlYW0mIGlucHV0LCBIVE1MVG9rZW4mIHRva2VuKQogewot
ICAgIG1fc291cmNlRnJvbVByZXZpb3VzU2VnbWVudHMgPSB0b2tlbi50eXBlKCkgPT0gSFRNTFRv
a2VuOjpVbmluaXRpYWxpemVkID8gU3RyaW5nKCkgOiBtX3NvdXJjZUZyb21QcmV2aW91c1NlZ21l
bnRzICsgbV9zb3VyY2UudG9TdHJpbmcoKTsKKyAgICBtX3NvdXJjZUZyb21QcmV2aW91c1NlZ21l
bnRzID0gdG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkID8gU3Ry
aW5nKCkgOiBtX3NvdXJjZUZyb21QcmV2aW91c1NlZ21lbnRzICsgbV9zb3VyY2UudG9TdHJpbmco
KTsKICAgICBtX3NvdXJjZSA9IGlucHV0LmN1cnJlbnQoKTsKICAgICB0b2tlbi5zZXRCYXNlT2Zm
c2V0KGlucHV0LmN1cnJlbnQoKS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpIC0gbV9zb3Vy
Y2VGcm9tUHJldmlvdXNTZWdtZW50cy5sZW5ndGgoKSk7CiB9CkBAIC00OCw3ICs0OCw3IEBAIHZv
aWQgSFRNTFNvdXJjZVRyYWNrZXI6OmVuZChjb25zdCBIVE1MSW5wdXRTdHJlYW0mIGlucHV0LCBI
VE1MVG9rZW4mIHRva2VuKQogCiBTdHJpbmcgSFRNTFNvdXJjZVRyYWNrZXI6OnNvdXJjZUZvclRv
a2VuKGNvbnN0IEhUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgaWYgKHRva2VuLnR5cGUoKSA9PSBI
VE1MVG9rZW46OkVuZE9mRmlsZSkKKyAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5
cGVzOjpFbmRPZkZpbGUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsgLy8gSGlkZXMgdGhlIG51
bGwgY2hhcmFjdGVyIHdlIHVzZSB0byBtYXJrIHRoZSBlbmQgb2YgZmlsZS4KIAogICAgIGlmICgh
bV9jYWNoZWRTb3VyY2VGb3JUb2tlbi5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUb2tlbi5oCmluZGV4IDY3ZGI2NDcwNmY3OTMzZGY5YTdiY2Y4MGMyYmMxOTEzNjdiZDc5
NDQuLjFjYzEzZGI0MTM4MzE3ZWZkYWY3NWMwMTMxNWMyNzhiOWNhMzFhY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCkBAIC0yNiwxNCArMjYsMTEgQEAKICNpZm5kZWYg
SFRNTFRva2VuX2gKICNkZWZpbmUgSFRNTFRva2VuX2gKIAotI2luY2x1ZGUgIk5hbWVkTm9kZU1h
cC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgIlRva2VuQmFzZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IEhUTUxUb2tlbiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSFRNTFRva2VuKTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitjbGFzcyBIVE1MVG9rZW5UeXBlcyB7CiBwdWJsaWM6CiAgICAg
ZW51bSBUeXBlIHsKICAgICAgICAgVW5pbml0aWFsaXplZCwKQEAgLTQ1LDMzOSArNDIsNTIgQEAg
cHVibGljOgogICAgICAgICBFbmRPZkZpbGUsCiAgICAgfTsKIAotICAgIGNsYXNzIFJhbmdlIHsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIGludCBtX3N0YXJ0OwotICAgICAgICBpbnQgbV9lbmQ7Ci0g
ICAgfTsKLQotICAgIGNsYXNzIEF0dHJpYnV0ZSB7CisgICAgY2xhc3MgRG9jdHlwZURhdGEgewor
ICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEb2N0eXBlRGF0YSk7CiAgICAgcHVibGljOgot
ICAgICAgICBSYW5nZSBtX25hbWVSYW5nZTsKLSAgICAgICAgUmFuZ2UgbV92YWx1ZVJhbmdlOwot
ICAgICAgICBXVEY6OlZlY3RvcjxVQ2hhciwgMzI+IG1fbmFtZTsKLSAgICAgICAgV1RGOjpWZWN0
b3I8VUNoYXIsIDMyPiBtX3ZhbHVlOworICAgICAgICBEb2N0eXBlRGF0YSgpCisgICAgICAgIDog
bV9oYXNQdWJsaWNJZGVudGlmaWVyKGZhbHNlKQorICAgICAgICAsIG1faGFzU3lzdGVtSWRlbnRp
ZmllcihmYWxzZSkKKyAgICAgICAgLCBtX2ZvcmNlUXVpcmtzKGZhbHNlKQorICAgICAgICB7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgbV9oYXNQdWJsaWNJZGVudGlmaWVyOwor
ICAgICAgICBib29sIG1faGFzU3lzdGVtSWRlbnRpZmllcjsKKyAgICAgICAgYm9vbCBtX2ZvcmNl
UXVpcmtzOworICAgICAgICBXVEY6OlZlY3RvcjxVQ2hhcj4gbV9wdWJsaWNJZGVudGlmaWVyOwor
ICAgICAgICBXVEY6OlZlY3RvcjxVQ2hhcj4gbV9zeXN0ZW1JZGVudGlmaWVyOwogICAgIH07Cit9
OwogCi0gICAgdHlwZWRlZiBXVEY6OlZlY3RvcjxBdHRyaWJ1dGUsIDEwPiBBdHRyaWJ1dGVMaXN0
OwotICAgIHR5cGVkZWYgV1RGOjpWZWN0b3I8VUNoYXIsIDEwMjQ+IERhdGFWZWN0b3I7Ci0KLSAg
ICBIVE1MVG9rZW4oKSB7IGNsZWFyKCk7IH0KLQotICAgIHZvaWQgY2xlYXIoKQotICAgIHsKLSAg
ICAgICAgbV90eXBlID0gVW5pbml0aWFsaXplZDsKLSAgICAgICAgbV9yYW5nZS5tX3N0YXJ0ID0g
MDsKLSAgICAgICAgbV9yYW5nZS5tX2VuZCA9IDA7Ci0gICAgICAgIG1fYmFzZU9mZnNldCA9IDA7
Ci0gICAgICAgIG1fZGF0YS5jbGVhcigpOwotICAgIH0KLQotICAgIGJvb2wgaXNVbmluaXRpYWxp
emVkKCkgeyByZXR1cm4gbV90eXBlID09IFVuaW5pdGlhbGl6ZWQ7IH0KLQotICAgIGludCBzdGFy
dEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZS5tX3N0YXJ0OyB9Ci0gICAgaW50IGVuZElu
ZGV4KCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZS5tX2VuZDsgfQotCi0gICAgdm9pZCBzZXRCYXNl
T2Zmc2V0KGludCBvZmZzZXQpCi0gICAgewotICAgICAgICBtX2Jhc2VPZmZzZXQgPSBvZmZzZXQ7
Ci0gICAgfQotCi0gICAgdm9pZCBlbmQoaW50IGVuZE9mZnNldCkKLSAgICB7Ci0gICAgICAgIG1f
cmFuZ2UubV9lbmQgPSBlbmRPZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7Ci0gICAgfQotCi0gICAgdm9p
ZCBtYWtlRW5kT2ZGaWxlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVW5pbml0
aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9IEVuZE9mRmlsZTsKLSAgICB9Ci0KLSAgICB2b2lk
IGJlZ2luU3RhcnRUYWcoVUNoYXIgY2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNo
YXJhY3Rlcik7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVW5pbml0aWFsaXplZCk7Ci0gICAg
ICAgIG1fdHlwZSA9IFN0YXJ0VGFnOwotICAgICAgICBtX3NlbGZDbG9zaW5nID0gZmFsc2U7Ci0g
ICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9IDA7Ci0gICAgICAgIG1fYXR0cmlidXRlcy5jbGVh
cigpOwotCi0gICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKLSAgICB9Ci0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQgYmVnaW5FbmRUYWcoVCBjaGFyYWN0ZXJzKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxpemVkKTsKLSAgICAgICAg
bV90eXBlID0gRW5kVGFnOwotICAgICAgICBtX3NlbGZDbG9zaW5nID0gZmFsc2U7Ci0gICAgICAg
IG1fY3VycmVudEF0dHJpYnV0ZSA9IDA7Ci0gICAgICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOwot
Ci0gICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVycyk7Ci0gICAgfQotCi0gICAgLy8gU3Rh
cnRpbmcgYSBjaGFyYWN0ZXIgdG9rZW4gd29ya3Mgc2xpZ2h0bHkgZGlmZmVyZW50bHkgdGhhbiBz
dGFydGluZwotICAgIC8vIG90aGVyIHR5cGVzIG9mIHRva2VucyBiZWNhdXNlIHdlIHdhbnQgdG8g
c2F2ZSBhIHBlci1jaGFyYWN0ZXIgYnJhbmNoLgotICAgIHZvaWQgZW5zdXJlSXNDaGFyYWN0ZXJU
b2tlbigpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFVuaW5pdGlhbGl6ZWQgfHwg
bV90eXBlID09IENoYXJhY3Rlcik7Ci0gICAgICAgIG1fdHlwZSA9IENoYXJhY3RlcjsKLSAgICB9
Ci0KLSAgICB2b2lkIGJlZ2luQ29tbWVudCgpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBl
ID09IFVuaW5pdGlhbGl6ZWQpOwotICAgICAgICBtX3R5cGUgPSBDb21tZW50OwotICAgIH0KLQot
ICAgIHZvaWQgYmVnaW5ET0NUWVBFKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
VW5pbml0aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9IERPQ1RZUEU7Ci0gICAgICAgIG1fZG9j
dHlwZURhdGEgPSBhZG9wdFB0cihuZXcgRG9jdHlwZURhdGEoKSk7Ci0gICAgfQotCi0gICAgdm9p
ZCBiZWdpbkRPQ1RZUEUoVUNoYXIgY2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNo
YXJhY3Rlcik7Ci0gICAgICAgIGJlZ2luRE9DVFlQRSgpOwotICAgICAgICBtX2RhdGEuYXBwZW5k
KGNoYXJhY3Rlcik7Ci0gICAgfQotCitjbGFzcyBIVE1MVG9rZW4gOiBwdWJsaWMgVG9rZW5CYXNl
PEhUTUxUb2tlblR5cGVzLCBIVE1MVG9rZW5UeXBlczo6RG9jdHlwZURhdGE+IHsKK3B1YmxpYzoK
KyAgICBIVE1MVG9rZW4oKSA6IFRva2VuQmFzZTxIVE1MVG9rZW5UeXBlcywgSFRNTFRva2VuVHlw
ZXM6OkRvY3R5cGVEYXRhPigpIHsgfQorICAgIAogICAgIHZvaWQgYXBwZW5kVG9OYW1lKFVDaGFy
IGNoYXJhY3RlcikKICAgICB7Ci0gICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBB
U1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcgfHwgbV90eXBlID09
IERPQ1RZUEUpOwotICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIGFwcGVuZFRvQ2hhcmFjdGVyKFQgY2hh
cmFjdGVycykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQ2hhcmFjdGVyKTsKLSAg
ICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXJzKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGVu
ZFRvQ29tbWVudChVQ2hhciBjaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQoY2hhcmFj
dGVyKTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBDb21tZW50KTsKLSAgICAgICAgbV9kYXRh
LmFwcGVuZChjaGFyYWN0ZXIpOwotICAgIH0KLQotICAgIHZvaWQgYWRkTmV3QXR0cmlidXRlKCkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVu
ZFRhZyk7Ci0gICAgICAgIG1fYXR0cmlidXRlcy5ncm93KG1fYXR0cmlidXRlcy5zaXplKCkgKyAx
KTsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlID0gJm1fYXR0cmlidXRlcy5sYXN0KCk7Ci0j
aWZuZGVmIE5ERUJVRwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1f
c3RhcnQgPSAwOwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fZW5k
ID0gMDsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9zdGFydCA9
IDA7Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fZW5kID0gMDsK
LSNlbmRpZgotICAgIH0KLQotICAgIHZvaWQgYmVnaW5BdHRyaWJ1dGVOYW1lKGludCBvZmZzZXQp
Ci0gICAgewotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fc3RhcnQg
PSBvZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7Ci0gICAgfQotCi0gICAgdm9pZCBlbmRBdHRyaWJ1dGVO
YW1lKGludCBvZmZzZXQpCi0gICAgewotICAgICAgICBpbnQgaW5kZXggPSBvZmZzZXQgLSBtX2Jh
c2VPZmZzZXQ7Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1lUmFuZ2UubV9lbmQg
PSBpbmRleDsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9zdGFy
dCA9IGluZGV4OwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX2Vu
ZCA9IGluZGV4OwotICAgIH0KLQotICAgIHZvaWQgYmVnaW5BdHRyaWJ1dGVWYWx1ZShpbnQgb2Zm
c2V0KQotICAgIHsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9z
dGFydCA9IG9mZnNldCAtIG1fYmFzZU9mZnNldDsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIG1f
Y3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fZW5kID0gMDsKLSNlbmRpZgotICAgIH0K
LQotICAgIHZvaWQgZW5kQXR0cmlidXRlVmFsdWUoaW50IG9mZnNldCkKLSAgICB7Ci0gICAgICAg
IG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fZW5kID0gb2Zmc2V0IC0gbV9iYXNl
T2Zmc2V0OwotICAgIH0KLQotICAgIHZvaWQgYXBwZW5kVG9BdHRyaWJ1dGVOYW1lKFVDaGFyIGNo
YXJhY3RlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBBU1NF
UlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcpOwotICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gYWRkIHRoZSBmb2xsb3dpbmcgQVNTRVJUIG9uY2Ug
d2UgZml4Ci0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02Mjk3MQotICAgICAgICAvLyAgIEFTU0VSVChtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJh
bmdlLm1fc3RhcnQpOwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZS5hcHBlbmQo
Y2hhcmFjdGVyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGVuZFRvQXR0cmlidXRlVmFsdWUoVUNo
YXIgY2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0gICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyk7Ci0gICAgICAg
IEFTU0VSVChtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX3N0YXJ0KTsKLSAgICAg
ICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlLmFwcGVuZChjaGFyYWN0ZXIpOworICAgICAg
ICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0g
SFRNTFRva2VuVHlwZXM6OkVuZFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZ
UEUpOworICAgICAgICBkb0FwcGVuZFRvTmFtZShjaGFyYWN0ZXIpOwogICAgIH0KLQotICAgIHZv
aWQgYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShzaXplX3QgaSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVCghdmFsdWUuaXNFbXB0eSgpKTsKLSAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBTdGFydFRhZyB8fCBtX3R5cGUgPT0gRW5kVGFnKTsKLSAgICAgICAgbV9hdHRy
aWJ1dGVzW2ldLm1fdmFsdWUuYXBwZW5kKHZhbHVlLmNoYXJhY3RlcnMoKSwgdmFsdWUubGVuZ3Ro
KCkpOwotICAgIH0KLQotICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQot
Ci0gICAgYm9vbCBzZWxmQ2xvc2luZygpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90
eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcpOwotICAgICAgICByZXR1cm4gbV9z
ZWxmQ2xvc2luZzsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFNlbGZDbG9zaW5nKCkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0g
SFRNTFRva2VuOjpFbmRUYWcpOwotICAgICAgICBtX3NlbGZDbG9zaW5nID0gdHJ1ZTsKLSAgICB9
Ci0KLSAgICBjb25zdCBBdHRyaWJ1dGVMaXN0JiBhdHRyaWJ1dGVzKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyk7Ci0g
ICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXM7Ci0gICAgfQotCisgICAgCiAgICAgY29uc3QgRGF0
YVZlY3RvciYgbmFtZSgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFN0
YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcgfHwgbV90eXBlID09IERPQ1RZUEUpOwotICAgICAg
ICByZXR1cm4gbV9kYXRhOwotICAgIH0KLQotICAgIHZvaWQgZXJhc2VDaGFyYWN0ZXJzKCkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQ2hhcmFjdGVyKTsKLSAgICAgICAgbV9kYXRh
LmNsZWFyKCk7Ci0gICAgfQotCi0gICAgdm9pZCBlcmFzZVZhbHVlT2ZBdHRyaWJ1dGUoc2l6ZV90
IGkpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9
PSBFbmRUYWcpOwotICAgICAgICBtX2F0dHJpYnV0ZXNbaV0ubV92YWx1ZS5jbGVhcigpOwotICAg
IH0KLQotICAgIGNvbnN0IERhdGFWZWN0b3ImIGNoYXJhY3RlcnMoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBDaGFyYWN0ZXIpOwotICAgICAgICByZXR1cm4gbV9kYXRh
OwotICAgIH0KLQotICAgIGNvbnN0IERhdGFWZWN0b3ImIGNvbW1lbnQoKSBjb25zdAotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBDb21tZW50KTsKLSAgICAgICAgcmV0dXJuIG1fZGF0
YTsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogRGlzdGluZ3Vpc2ggYmV0d2VlbiBhIG1pc3Npbmcg
cHVibGljIGlkZW50aWZlciBhbmQgYW4gZW1wdHkgb25lLgotICAgIGNvbnN0IFdURjo6VmVjdG9y
PFVDaGFyPiYgcHVibGljSWRlbnRpZmllcigpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQo
bV90eXBlID09IERPQ1RZUEUpOwotICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9wdWJs
aWNJZGVudGlmaWVyOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlzaCBiZXR3ZWVu
IGEgbWlzc2luZyBzeXN0ZW0gaWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBvbmUuCi0gICAgY29uc3Qg
V1RGOjpWZWN0b3I8VUNoYXI+JiBzeXN0ZW1JZGVudGlmaWVyKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7Ci0gICAgICAgIHJldHVybiBtX2RvY3R5cGVE
YXRhLT5tX3N5c3RlbUlkZW50aWZpZXI7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRQdWJsaWNJZGVu
dGlmaWVyVG9FbXB0eVN0cmluZygpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IERP
Q1RZUEUpOwotICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2hhc1B1YmxpY0lkZW50aWZpZXIgPSB0
cnVlOwotICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZpZXIuY2xlYXIoKTsK
LSAgICB9Ci0KLSAgICB2b2lkIHNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7Ci0gICAgICAgIG1fZG9jdHlw
ZURhdGEtPm1faGFzU3lzdGVtSWRlbnRpZmllciA9IHRydWU7Ci0gICAgICAgIG1fZG9jdHlwZURh
dGEtPm1fc3lzdGVtSWRlbnRpZmllci5jbGVhcigpOworICAgICAgICBBU1NFUlQobV90eXBlID09
IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVu
ZFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOworICAgICAgICByZXR1
cm4gZ2V0TmFtZSgpOwogICAgIH0KIAogICAgIGJvb2wgZm9yY2VRdWlya3MoKSBjb25zdAogICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBET0NUWVBFKTsKKyAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CiAgICAgICAgIHJldHVybiBtX2RvY3R5
cGVEYXRhLT5tX2ZvcmNlUXVpcmtzOwogICAgIH0KIAogICAgIHZvaWQgc2V0Rm9yY2VRdWlya3Mo
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBET0NUWVBFKTsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CiAgICAgICAgIG1fZG9jdHlw
ZURhdGEtPm1fZm9yY2VRdWlya3MgPSB0cnVlOwogICAgIH0KIAotICAgIHZvaWQgYXBwZW5kVG9Q
dWJsaWNJZGVudGlmaWVyKFVDaGFyIGNoYXJhY3RlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChj
aGFyYWN0ZXIpOwotICAgICAgICBBU1NFUlQobV90eXBlID09IERPQ1RZUEUpOwotICAgICAgICBB
U1NFUlQobV9kb2N0eXBlRGF0YS0+bV9oYXNQdWJsaWNJZGVudGlmaWVyKTsKLSAgICAgICAgbV9k
b2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyLmFwcGVuZChjaGFyYWN0ZXIpOwotICAgIH0K
LQotICAgIHZvaWQgYXBwZW5kVG9TeXN0ZW1JZGVudGlmaWVyKFVDaGFyIGNoYXJhY3RlcikKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBBU1NFUlQobV90eXBlID09
IERPQ1RZUEUpOwotICAgICAgICBBU1NFUlQobV9kb2N0eXBlRGF0YS0+bV9oYXNTeXN0ZW1JZGVu
dGlmaWVyKTsKLSAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyLmFwcGVu
ZChjaGFyYWN0ZXIpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICAvLyBGSVhNRTogSSdtIG5vdCBz
dXJlIHdoYXQgdGhlIGZpbmFsIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIEhUTUxUb2tlbiBhbmQKLSAg
ICAvLyBBdG9taWNIVE1MVG9rZW4gd2lsbCBiZS4gIEknbSBtYXJraW5nIHRoaXMgYSBmcmllbmQg
Zm9yIG5vdywgYnV0IHdlJ2xsCi0gICAgLy8gd2FudCB0byBlbmQgdXAgd2l0aCBhIGNsZWFuZXIg
aW50ZXJmYWNlIGJldHdlZW4gdGhlIHR3byBjbGFzc2VzLgotICAgIGZyaWVuZCBjbGFzcyBBdG9t
aWNIVE1MVG9rZW47Ci0KLSAgICBjbGFzcyBEb2N0eXBlRGF0YSB7Ci0gICAgICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKERvY3R5cGVEYXRhKTsKLSAgICBwdWJsaWM6Ci0gICAgICAgIERvY3R5cGVE
YXRhKCkKLSAgICAgICAgICAgIDogbV9oYXNQdWJsaWNJZGVudGlmaWVyKGZhbHNlKQotICAgICAg
ICAgICAgLCBtX2hhc1N5c3RlbUlkZW50aWZpZXIoZmFsc2UpCi0gICAgICAgICAgICAsIG1fZm9y
Y2VRdWlya3MoZmFsc2UpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgbV9o
YXNQdWJsaWNJZGVudGlmaWVyOwotICAgICAgICBib29sIG1faGFzU3lzdGVtSWRlbnRpZmllcjsK
LSAgICAgICAgYm9vbCBtX2ZvcmNlUXVpcmtzOwotICAgICAgICBXVEY6OlZlY3RvcjxVQ2hhcj4g
bV9wdWJsaWNJZGVudGlmaWVyOwotICAgICAgICBXVEY6OlZlY3RvcjxVQ2hhcj4gbV9zeXN0ZW1J
ZGVudGlmaWVyOwotICAgIH07Ci0KLSAgICBUeXBlIG1fdHlwZTsKLSAgICBSYW5nZSBtX3Jhbmdl
OyAvLyBBbHdheXMgc3RhcnRzIGF0IHplcm8uCi0gICAgaW50IG1fYmFzZU9mZnNldDsKLQotICAg
IC8vICJuYW1lIiBmb3IgRE9DVFlQRSwgU3RhcnRUYWcsIGFuZCBFbmRUYWcKLSAgICAvLyAiY2hh
cmFjdGVycyIgZm9yIENoYXJhY3RlcgotICAgIC8vICJkYXRhIiBmb3IgQ29tbWVudAotICAgIERh
dGFWZWN0b3IgbV9kYXRhOwotCi0gICAgLy8gRm9yIERPQ1RZUEUKLSAgICBPd25QdHI8RG9jdHlw
ZURhdGE+IG1fZG9jdHlwZURhdGE7Ci0KLSAgICAvLyBGb3IgU3RhcnRUYWcgYW5kIEVuZFRhZwot
ICAgIGJvb2wgbV9zZWxmQ2xvc2luZzsKLSAgICBBdHRyaWJ1dGVMaXN0IG1fYXR0cmlidXRlczsK
LQotICAgIC8vIEEgcG9pbnRlciBpbnRvIG1fYXR0cmlidXRlcyB1c2VkIGR1cmluZyBsZXhpbmcu
Ci0gICAgQXR0cmlidXRlKiBtX2N1cnJlbnRBdHRyaWJ1dGU7CiB9OwogCiAvLyBGSVhNRTogVGhp
cyBjbGFzcyBzaG91bGQgZXZlbnR1YWxseSBiZSBuYW1lZCBIVE1MVG9rZW4gb25jZSB3ZSBtb3Zl
IHRoZQpAQCAtMzg5LDMyICs5OSwzNCBAQCBwdWJsaWM6CiAgICAgICAgIDogbV90eXBlKHRva2Vu
LnR5cGUoKSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgICAgIGNhc2Ug
SFRNTFRva2VuOjpVbmluaXRpYWxpemVkOgorICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpV
bmluaXRpYWxpemVkOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW46OkRPQ1RZUEU6CisgICAgICAgIGNh
c2UgSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEU6CiAgICAgICAgICAgICBtX25hbWUgPSBBdG9taWNT
dHJpbmcodG9rZW4ubmFtZSgpLmRhdGEoKSwgdG9rZW4ubmFtZSgpLnNpemUoKSk7CiAgICAgICAg
ICAgICBtX2RvY3R5cGVEYXRhID0gdG9rZW4ubV9kb2N0eXBlRGF0YS5yZWxlYXNlKCk7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW46OkVuZE9mRmlsZToKKyAgICAg
ICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxlOgogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgSFRNTFRva2VuOjpTdGFydFRhZzoKLSAgICAgICAgY2FzZSBIVE1MVG9rZW46
OkVuZFRhZzogeworICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZzoKKyAgICAg
ICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnOiB7CiAgICAgICAgICAgICBtX3NlbGZDbG9z
aW5nID0gdG9rZW4uc2VsZkNsb3NpbmcoKTsKICAgICAgICAgICAgIG1fbmFtZSA9IEF0b21pY1N0
cmluZyh0b2tlbi5uYW1lKCkuZGF0YSgpLCB0b2tlbi5uYW1lKCkuc2l6ZSgpKTsKICAgICAgICAg
ICAgIGluaXRpYWxpemVBdHRyaWJ1dGVzKHRva2VuLmF0dHJpYnV0ZXMoKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIEhUTUxUb2tlbjo6Q29tbWVudDoKKyAg
ICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudDoKICAgICAgICAgICAgIG1fZGF0YSA9
IFN0cmluZyh0b2tlbi5jb21tZW50KCkuZGF0YSgpLCB0b2tlbi5jb21tZW50KCkuc2l6ZSgpKTsK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOgor
ICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXI6CiAgICAgICAgICAgICBtX2V4
dGVybmFsQ2hhcmFjdGVycyA9ICZ0b2tlbi5jaGFyYWN0ZXJzKCk7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
fQogCi0gICAgQXRvbWljSFRNTFRva2VuKEhUTUxUb2tlbjo6VHlwZSB0eXBlLCBBdG9taWNTdHJp
bmcgbmFtZSwgUGFzc1JlZlB0cjxOYW1lZE5vZGVNYXA+IGF0dHJpYnV0ZXMgPSAwKQorICAgIEF0
b21pY0hUTUxUb2tlbihIVE1MVG9rZW5UeXBlczo6VHlwZSB0eXBlLCBBdG9taWNTdHJpbmcgbmFt
ZSwgUGFzc1JlZlB0cjxOYW1lZE5vZGVNYXA+IGF0dHJpYnV0ZXMgPSAwKQogICAgICAgICA6IG1f
dHlwZSh0eXBlKQogICAgICAgICAsIG1fbmFtZShuYW1lKQogICAgICAgICAsIG1fYXR0cmlidXRl
cyhhdHRyaWJ1dGVzKQpAQCAtNDIyLDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJU
KHVzZXNOYW1lKCkpOwogICAgIH0KIAotICAgIEhUTUxUb2tlbjo6VHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9CisgICAgSFRNTFRva2VuVHlwZXM6OlR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKCkgY29u
c3QKICAgICB7CkBAIC00MzgsNyArMTUwLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBzZWxmQ2xv
c2luZygpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6
U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKKyAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tl
blR5cGVzOjpFbmRUYWcpOwogICAgICAgICByZXR1cm4gbV9zZWxmQ2xvc2luZzsKICAgICB9CiAK
QEAgLTQ2NCw0OSArMTc2LDQ5IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEhUTUxUb2tlbjo6RGF0
YVZlY3RvciYgY2hhcmFjdGVycygpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBl
ID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1M
VG9rZW5UeXBlczo6Q2hhcmFjdGVyKTsKICAgICAgICAgcmV0dXJuICptX2V4dGVybmFsQ2hhcmFj
dGVyczsKICAgICB9CiAKICAgICBjb25zdCBTdHJpbmcmIGNvbW1lbnQoKSBjb25zdAogICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OkNvbW1lbnQpOworICAgICAgICBB
U1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50KTsKICAgICAgICAgcmV0dXJu
IG1fZGF0YTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogRGlzdGluZ3Vpc2ggYmV0d2VlbiBhIG1p
c3NpbmcgcHVibGljIGlkZW50aWZlciBhbmQgYW4gZW1wdHkgb25lLgogICAgIFdURjo6VmVjdG9y
PFVDaGFyPiYgcHVibGljSWRlbnRpZmllcigpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQo
bV90eXBlID09IEhUTUxUb2tlbjo6RE9DVFlQRSk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
SFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOwogICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0YS0+
bV9wdWJsaWNJZGVudGlmaWVyOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlzaCBi
ZXR3ZWVuIGEgbWlzc2luZyBzeXN0ZW0gaWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBvbmUuCiAgICAg
V1RGOjpWZWN0b3I8VUNoYXI+JiBzeXN0ZW1JZGVudGlmaWVyKCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpET0NUWVBFKTsKKyAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CiAgICAgICAgIHJldHVybiBtX2Rv
Y3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXI7CiAgICAgfQogCiAgICAgYm9vbCBmb3JjZVF1
aXJrcygpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6
RE9DVFlQRSk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZ
UEUpOwogICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9mb3JjZVF1aXJrczsKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgSFRNTFRva2VuOjpUeXBlIG1fdHlwZTsKKyAgICBIVE1MVG9rZW5U
eXBlczo6VHlwZSBtX3R5cGU7CiAKICAgICB2b2lkIGluaXRpYWxpemVBdHRyaWJ1dGVzKGNvbnN0
IEhUTUxUb2tlbjo6QXR0cmlidXRlTGlzdCYgYXR0cmlidXRlcyk7CiAgICAgCiAgICAgYm9vbCB1
c2VzTmFtZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV90eXBlID09IEhUTUxUb2tl
bjo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlbjo6RW5kVGFnIHx8IG1fdHlwZSA9PSBI
VE1MVG9rZW46OkRPQ1RZUEU7CisgICAgICAgIHJldHVybiBtX3R5cGUgPT0gSFRNTFRva2VuVHlw
ZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnIHx8IG1fdHlw
ZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRTsKICAgICB9CiAKICAgICBib29sIHVzZXNBdHRy
aWJ1dGVzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3R5cGUgPT0gSFRNTFRva2Vu
OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuOjpFbmRUYWc7CisgICAgICAgIHJldHVy
biBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9r
ZW5UeXBlczo6RW5kVGFnOwogICAgIH0KIAogICAgIC8vICJuYW1lIiBmb3IgRE9DVFlQRSwgU3Rh
cnRUYWcsIGFuZCBFbmRUYWcKQEAgLTUyNiw3ICsyMzgsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0
IEhUTUxUb2tlbjo6RGF0YVZlY3RvciogbV9leHRlcm5hbENoYXJhY3RlcnM7CiAKICAgICAvLyBG
b3IgRE9DVFlQRQotICAgIE93blB0cjxIVE1MVG9rZW46OkRvY3R5cGVEYXRhPiBtX2RvY3R5cGVE
YXRhOworICAgIE93blB0cjxIVE1MVG9rZW5UeXBlczo6RG9jdHlwZURhdGE+IG1fZG9jdHlwZURh
dGE7CiAKICAgICAvLyBGb3IgU3RhcnRUYWcgYW5kIEVuZFRhZwogICAgIGJvb2wgbV9zZWxmQ2xv
c2luZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAKaW5k
ZXggMzA1ZmNhMjYwMzllZGI1MDc4NGJiNTM3NGU3NzNiZDhjYThhNjk4NS4uNmQ1N2VlYWUxZDg5
MGRkZDMxZjNmYzM3M2E0ZjUwODc5MTI2Y2I3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFRva2VuaXplci5jcHAKQEAgLTE4Nyw4ICsxODcsOCBAQCBpbmxpbmUgYm9vbCBI
VE1MVG9rZW5pemVyOjpwcm9jZXNzRW50aXR5KFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQogCiBp
bmxpbmUgdm9pZCBIVE1MVG9rZW5pemVyOjpzYXZlRW5kVGFnTmFtZUlmTmVlZGVkKCkKIHsKLSAg
ICBBU1NFUlQobV90b2tlbi0+dHlwZSgpICE9IEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZCk7Ci0g
ICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKQorICAgIEFTU0VS
VChtX3Rva2VuLT50eXBlKCkgIT0gSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQpOworICAg
IGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKQogICAgICAg
ICBtX2FwcHJvcHJpYXRlRW5kVGFnTmFtZSA9IG1fdG9rZW4tPm5hbWUoKTsKIH0KIApAQCAtMjI3
LDkgKzIyNyw5IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6ZW1pdEVuZE9mRmlsZShTZWdtZW50ZWRT
dHJpbmcmIHNvdXJjZSkKIAogYm9vbCBIVE1MVG9rZW5pemVyOjpmbHVzaEJ1ZmZlcmVkRW5kVGFn
KFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQogewotICAgIEFTU0VSVChtX3Rva2VuLT50eXBlKCkg
PT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIgfHwgbV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6
VW5pbml0aWFsaXplZCk7CisgICAgQVNTRVJUKG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5U
eXBlczo6Q2hhcmFjdGVyIHx8IG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6VW5p
bml0aWFsaXplZCk7CiAgICAgc291cmNlLmFkdmFuY2UobV9saW5lTnVtYmVyKTsKLSAgICBpZiAo
bV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKQorICAgIGlmIChtX3Rva2Vu
LT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcikKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgbV90b2tlbi0+YmVnaW5FbmRUYWcobV9idWZmZXJlZEVuZFRhZ05hbWUpOwogICAg
IG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7CkBAIC0yNTksNyArMjU5LDcgQEAgYm9vbCBI
VE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tl
biYgdG9rZW4pCiB7CiAgICAgLy8gSWYgd2UgaGF2ZSBhIHRva2VuIGluIHByb2dyZXNzLCB0aGVu
IHdlJ3JlIHN1cHBvc2VkIHRvIGJlIGNhbGxlZCBiYWNrCiAgICAgLy8gd2l0aCB0aGUgc2FtZSB0
b2tlbiBzbyB3ZSBjYW4gZmluaXNoIGl0LgotICAgIEFTU0VSVCghbV90b2tlbiB8fCBtX3Rva2Vu
ID09ICZ0b2tlbiB8fCB0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpVbmluaXRpYWxpemVkKTsK
KyAgICBBU1NFUlQoIW1fdG9rZW4gfHwgbV90b2tlbiA9PSAmdG9rZW4gfHwgdG9rZW4udHlwZSgp
ID09IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsKICAgICBtX3Rva2VuID0gJnRva2Vu
OwogCiAgICAgaWYgKCFtX2J1ZmZlcmVkRW5kVGFnTmFtZS5pc0VtcHR5KCkgJiYgIWlzRW5kVGFn
QnVmZmVyaW5nU3RhdGUobV9zdGF0ZSkpIHsKQEAgLTMwNyw3ICszMDcsNyBAQCBib29sIEhUTUxU
b2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0
b2tlbikKICAgICAgICAgaWYgKGNjID09ICcmJykKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ2hh
cmFjdGVyUmVmZXJlbmNlSW5EYXRhU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSAnPCcp
IHsKLSAgICAgICAgICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpDaGFyYWN0
ZXIpIHsKKyAgICAgICAgICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6
OkNoYXJhY3RlcikgewogICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBidW5jaCBvZiBjaGFy
YWN0ZXIgdG9rZW5zIHF1ZXVlZCB1cCB0aGF0IHdlCiAgICAgICAgICAgICAgICAgLy8gYXJlIGVt
aXR0aW5nIGxhemlseSBoZXJlLgogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTY5
Miw3ICsxNjkyLDcgQEAgaW5saW5lIHZvaWQgSFRNTFRva2VuaXplcjo6cGFyc2VFcnJvcigpCiAK
IGlubGluZSBib29sIEhUTUxUb2tlbml6ZXI6OmhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCkK
IHsKLSAgICByZXR1cm4gbV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyOwor
ICAgIHJldHVybiBtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcjsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVC
dWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5j
cHAKaW5kZXggODIzMDE0MWIyMTYxMmIyMjNlMjUzMDVkMTdjOTNkZWYyNGNmZDQ2OC4uYjdlYmNl
Nzk1NDJlNWNlNDU1YWU3MmQ1MTk2ZTQ0NDRiMGQ2MWE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC00NDYsMTMgKzQ0NiwxMyBAQCB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbihIVE1MVG9rZW4mIHJh
d1Rva2VuKQogICAgIC8vIEZJWE1FOiBUb3AgY2xlYXJpbmcgdGhlIHJhd1Rva2VuIG9uY2Ugd2Ug
c3RhcnQgcnVubmluZyB0aGUgcGFyc2VyIG9mZgogICAgIC8vIHRoZSBtYWluIHRocmVhZCBvciBv
bmNlIHdlIHN0b3AgYWxsb3dpbmcgc3luY2hyb25vdXMgSmF2YVNjcmlwdAogICAgIC8vIGV4ZWN1
dGlvbiBmcm9tIHBhcnNlTWFwcGVkQXR0cmlidXRlLgotICAgIGlmIChyYXdUb2tlbi50eXBlKCkg
IT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIpCisgICAgaWYgKHJhd1Rva2VuLnR5cGUoKSAhPSBIVE1M
VG9rZW5UeXBlczo6Q2hhcmFjdGVyKQogICAgICAgICByYXdUb2tlbi5jbGVhcigpOwogCiAgICAg
Y29uc3RydWN0VHJlZUZyb21BdG9taWNUb2tlbih0b2tlbik7CiAKICAgICBpZiAoIXJhd1Rva2Vu
LmlzVW5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIEFTU0VSVChyYXdUb2tlbi50eXBlKCkgPT0g
SFRNTFRva2VuOjpDaGFyYWN0ZXIpOworICAgICAgICBBU1NFUlQocmF3VG9rZW4udHlwZSgpID09
IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpOwogICAgICAgICByYXdUb2tlbi5jbGVhcigpOwog
ICAgIH0KIH0KQEAgLTQ3MSwyNSArNDcxLDI1IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpjb25z
dHJ1Y3RUcmVlRnJvbUF0b21pY1Rva2VuKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1Rva2VuKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7CiAg
ICAgc3dpdGNoICh0b2tlbi50eXBlKCkpIHsKLSAgICBjYXNlIEhUTUxUb2tlbjo6VW5pbml0aWFs
aXplZDoKKyAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkOgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW46
OkRPQ1RZUEU6CisgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRToKICAgICAgICAgcHJv
Y2Vzc0RvY3R5cGVUb2tlbih0b2tlbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRv
a2VuOjpTdGFydFRhZzoKKyAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZzoKICAgICAg
ICAgcHJvY2Vzc1N0YXJ0VGFnKHRva2VuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1M
VG9rZW46OkVuZFRhZzoKKyAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpFbmRUYWc6CiAgICAgICAg
IHByb2Nlc3NFbmRUYWcodG9rZW4pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhUTUxUb2tl
bjo6Q29tbWVudDoKKyAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDb21tZW50OgogICAgICAgICBw
cm9jZXNzQ29tbWVudCh0b2tlbik7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIEhUTUxUb2tl
bjo6Q2hhcmFjdGVyOgorICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcjoKICAgICAg
ICAgcHJvY2Vzc0NoYXJhY3Rlcih0b2tlbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRN
TFRva2VuOjpFbmRPZkZpbGU6CisgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxlOgog
ICAgICAgICBwcm9jZXNzRW5kT2ZGaWxlKHRva2VuKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpA
QCAtNDk3LDcgKzQ5Nyw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW4oQXRv
bWljSFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NEb2N0
eXBlVG9rZW4oQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlw
ZSgpID09IEhUTUxUb2tlbjo6RE9DVFlQRSk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBI
VE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CiAgICAgaWYgKG1faW5zZXJ0aW9uTW9kZSA9PSBJbml0
aWFsTW9kZSkgewogICAgICAgICBtX3RyZWUuaW5zZXJ0RG9jdHlwZSh0b2tlbik7CiAgICAgICAg
IHNldEluc2VydGlvbk1vZGUoQmVmb3JlSFRNTE1vZGUpOwpAQCAtNTE0LDE0ICs1MTQsMTQgQEAg
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NEb2N0eXBlVG9rZW4oQXRvbWljSFRNTFRva2Vu
JiB0b2tlbikKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZVN0YXJ0VGFnKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIFBhc3NSZWZQdHI8TmFtZWROb2RlTWFwPiBhdHRyaWJ1
dGVzKQogewogICAgIC8vIEZJWE1FOiBXZSdsbCBuZWVkIGEgZmFuY2llciBjb252ZXJzaW9uIHRo
YW4ganVzdCAibG9jYWxOYW1lIiBmb3IgU1ZHL01hdGhNTCB0YWdzLgotICAgIEF0b21pY0hUTUxU
b2tlbiBmYWtlVG9rZW4oSFRNTFRva2VuOjpTdGFydFRhZywgdGFnTmFtZS5sb2NhbE5hbWUoKSwg
YXR0cmlidXRlcyk7CisgICAgQXRvbWljSFRNTFRva2VuIGZha2VUb2tlbihIVE1MVG9rZW5UeXBl
czo6U3RhcnRUYWcsIHRhZ05hbWUubG9jYWxOYW1lKCksIGF0dHJpYnV0ZXMpOwogICAgIHByb2Nl
c3NTdGFydFRhZyhmYWtlVG9rZW4pOwogfQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c0Zha2VFbmRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkKIHsKICAgICAvLyBGSVhN
RTogV2UnbGwgbmVlZCBhIGZhbmNpZXIgY29udmVyc2lvbiB0aGFuIGp1c3QgImxvY2FsTmFtZSIg
Zm9yIFNWRy9NYXRoTUwgdGFncy4KLSAgICBBdG9taWNIVE1MVG9rZW4gZmFrZVRva2VuKEhUTUxU
b2tlbjo6RW5kVGFnLCB0YWdOYW1lLmxvY2FsTmFtZSgpKTsKKyAgICBBdG9taWNIVE1MVG9rZW4g
ZmFrZVRva2VuKEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIHRhZ05hbWUubG9jYWxOYW1lKCkpOwog
ICAgIHByb2Nlc3NFbmRUYWcoZmFrZVRva2VuKTsKIH0KIApAQCAtNTM2LDcgKzUzNiw3IEBAIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZVBFbmRUYWdJZlBJbkJ1dHRvblNjb3BlKCkK
IHsKICAgICBpZiAoIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5CdXR0b25TY29wZShwVGFnLmxv
Y2FsTmFtZSgpKSkKICAgICAgICAgcmV0dXJuOwotICAgIEF0b21pY0hUTUxUb2tlbiBlbmRQKEhU
TUxUb2tlbjo6RW5kVGFnLCBwVGFnLmxvY2FsTmFtZSgpKTsKKyAgICBBdG9taWNIVE1MVG9rZW4g
ZW5kUChIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCBwVGFnLmxvY2FsTmFtZSgpKTsKICAgICBwcm9j
ZXNzRW5kVGFnKGVuZFApOwogfQogCkBAIC01NTgsNyArNTU4LDcgQEAgUGFzc1JlZlB0cjxOYW1l
ZE5vZGVNYXA+IEhUTUxUcmVlQnVpbGRlcjo6YXR0cmlidXRlc0ZvcklzaW5kZXhJbnB1dChBdG9t
aWNIVE1MVG8KIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NJc2luZGV4U3RhcnRUYWdG
b3JJbkJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlw
ZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0g
SFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQodG9rZW4ubmFtZSgpID09IGlz
aW5kZXhUYWcpOwogICAgIHBhcnNlRXJyb3IodG9rZW4pOwogICAgIGlmIChtX3RyZWUuZm9ybSgp
KQpAQCAtNzI2LDcgKzcyNiw3IEBAIHZvaWQgYWRqdXN0Rm9yZWlnbkF0dHJpYnV0ZXMoQXRvbWlj
SFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRh
Z0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50
eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9
PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gaHRt
bFRhZykgewogICAgICAgICBtX3RyZWUuaW5zZXJ0SFRNTEh0bWxTdGFydFRhZ0luQm9keSh0b2tl
bik7CiAgICAgICAgIHJldHVybjsKQEAgLTk4MSw3ICs5ODEsNyBAQCB2b2lkIEhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAg
ICAgfQogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gb3B0Z3JvdXBUYWcgfHwgdG9rZW4ubmFtZSgp
ID09IG9wdGlvblRhZykgewogICAgICAgICBpZiAobV90cmVlLm9wZW5FbGVtZW50cygpLT5pblNj
b3BlKG9wdGlvblRhZy5sb2NhbE5hbWUoKSkpIHsKLSAgICAgICAgICAgIEF0b21pY0hUTUxUb2tl
biBlbmRPcHRpb24oSFRNTFRva2VuOjpFbmRUYWcsIG9wdGlvblRhZy5sb2NhbE5hbWUoKSk7Cisg
ICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kT3B0aW9uKEhUTUxUb2tlblR5cGVzOjpFbmRU
YWcsIG9wdGlvblRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKGVu
ZE9wdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgbV90cmVlLnJlY29uc3RydWN0VGhlQWN0aXZl
Rm9ybWF0dGluZ0VsZW1lbnRzKCk7CkBAIC0xMDU4LDcgKzEwNTgsNyBAQCB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6Y2xvc2VUaGVDZWxsKCkKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NT
dGFydFRhZ0ZvckluVGFibGUoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQo
dG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50
eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBpZiAodG9rZW4ubmFtZSgp
ID09IGNhcHRpb25UYWcpIHsKICAgICAgICAgbV90cmVlLm9wZW5FbGVtZW50cygpLT5wb3BVbnRp
bFRhYmxlU2NvcGVNYXJrZXIoKTsKICAgICAgICAgbV90cmVlLmFjdGl2ZUZvcm1hdHRpbmdFbGVt
ZW50cygpLT5hcHBlbmRNYXJrZXIoKTsKQEAgLTExMzAsNyArMTEzMCw3IEBAIG5hbWVzcGFjZSB7
CiAKIGJvb2wgc2hvdWxkUHJvY2Vzc0ZvcmVpZ25Db250ZW50VXNpbmdJbkJvZHlJbnNlcnRpb25N
b2RlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4sIENvbnRhaW5lck5vZGUqIGN1cnJlbnRFbGVtZW50
KQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7Cisg
ICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAg
IGlmIChjdXJyZW50RWxlbWVudC0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bWlUYWcpCiAgICAg
ICAgIHx8IGN1cnJlbnRFbGVtZW50LT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptb1RhZykKICAg
ICAgICAgfHwgY3VycmVudEVsZW1lbnQtPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1uVGFnKQpA
QCAtMTE1Miw3ICsxMTUyLDcgQEAgYm9vbCBzaG91bGRQcm9jZXNzRm9yZWlnbkNvbnRlbnRVc2lu
Z0luQm9keUluc2VydGlvbk1vZGUoQXRvbWljSFRNTFRva2VuJiB0b2tlbiwKIAogdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewot
ICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CisgICAgQVNT
RVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIHN3aXRj
aCAoaW5zZXJ0aW9uTW9kZSgpKSB7CiAgICAgY2FzZSBJbml0aWFsTW9kZToKICAgICAgICAgQVNT
RVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbml0aWFsTW9kZSk7CkBAIC0xNDA5LDcgKzE0MDksNyBA
QCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYg
dG9rZW4pCiAgICAgICAgICAgICB8fCB0b2tlbi5uYW1lKCkgPT0gdHJUYWcKICAgICAgICAgICAg
IHx8IGlzVGFibGVDZWxsQ29udGV4dFRhZyh0b2tlbi5uYW1lKCkpKSB7CiAgICAgICAgICAgICBw
YXJzZUVycm9yKHRva2VuKTsKLSAgICAgICAgICAgIEF0b21pY0hUTUxUb2tlbiBlbmRTZWxlY3Qo
SFRNTFRva2VuOjpFbmRUYWcsIHNlbGVjdFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgICAgICBB
dG9taWNIVE1MVG9rZW4gZW5kU2VsZWN0KEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIHNlbGVjdFRh
Zy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKGVuZFNlbGVjdCk7CiAg
ICAgICAgICAgICByZXByb2Nlc3NTdGFydFRhZyh0b2tlbik7CiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xNDIzLDcgKzE0MjMsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0
VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIH0KICAgICAgICAgaWYgKHRva2Vu
Lm5hbWUoKSA9PSBvcHRpb25UYWcpIHsKICAgICAgICAgICAgIGlmIChtX3RyZWUuY3VycmVudE5v
ZGUoKS0+aGFzVGFnTmFtZShvcHRpb25UYWcpKSB7Ci0gICAgICAgICAgICAgICAgQXRvbWljSFRN
TFRva2VuIGVuZE9wdGlvbihIVE1MVG9rZW46OkVuZFRhZywgb3B0aW9uVGFnLmxvY2FsTmFtZSgp
KTsKKyAgICAgICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kT3B0aW9uKEhUTUxUb2tlblR5
cGVzOjpFbmRUYWcsIG9wdGlvblRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICAgICAgcHJv
Y2Vzc0VuZFRhZyhlbmRPcHRpb24pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV90cmVl
Lmluc2VydEhUTUxFbGVtZW50KHRva2VuKTsKQEAgLTE0MzEsMTEgKzE0MzEsMTEgQEAgdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQog
ICAgICAgICB9CiAgICAgICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gb3B0Z3JvdXBUYWcpIHsKICAg
ICAgICAgICAgIGlmIChtX3RyZWUuY3VycmVudE5vZGUoKS0+aGFzVGFnTmFtZShvcHRpb25UYWcp
KSB7Ci0gICAgICAgICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZE9wdGlvbihIVE1MVG9rZW46
OkVuZFRhZywgb3B0aW9uVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAgICAgICBBdG9taWNI
VE1MVG9rZW4gZW5kT3B0aW9uKEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIG9wdGlvblRhZy5sb2Nh
bE5hbWUoKSk7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZyhlbmRPcHRpb24pOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG1fdHJlZS5jdXJyZW50Tm9kZSgpLT5oYXNUYWdO
YW1lKG9wdGdyb3VwVGFnKSkgewotICAgICAgICAgICAgICAgIEF0b21pY0hUTUxUb2tlbiBlbmRP
cHRncm91cChIVE1MVG9rZW46OkVuZFRhZywgb3B0Z3JvdXBUYWcubG9jYWxOYW1lKCkpOworICAg
ICAgICAgICAgICAgIEF0b21pY0hUTUxUb2tlbiBlbmRPcHRncm91cChIVE1MVG9rZW5UeXBlczo6
RW5kVGFnLCBvcHRncm91cFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICAgICAgcHJvY2Vz
c0VuZFRhZyhlbmRPcHRncm91cCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX3RyZWUu
aW5zZXJ0SFRNTEVsZW1lbnQodG9rZW4pOwpAQCAtMTQ0Myw3ICsxNDQzLDcgQEAgdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAg
ICAgICB9CiAgICAgICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gc2VsZWN0VGFnKSB7CiAgICAgICAg
ICAgICBwYXJzZUVycm9yKHRva2VuKTsKLSAgICAgICAgICAgIEF0b21pY0hUTUxUb2tlbiBlbmRT
ZWxlY3QoSFRNTFRva2VuOjpFbmRUYWcsIHNlbGVjdFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAg
ICAgICBBdG9taWNIVE1MVG9rZW4gZW5kU2VsZWN0KEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIHNl
bGVjdFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKGVuZFNlbGVj
dCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE0NTUsNyArMTQ1NSw3IEBA
IHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0
b2tlbikKICAgICAgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgQXRvbWljSFRN
TFRva2VuIGVuZFNlbGVjdChIVE1MVG9rZW46OkVuZFRhZywgc2VsZWN0VGFnLmxvY2FsTmFtZSgp
KTsKKyAgICAgICAgICAgIEF0b21pY0hUTUxUb2tlbiBlbmRTZWxlY3QoSFRNTFRva2VuVHlwZXM6
OkVuZFRhZywgc2VsZWN0VGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAgICAgIHByb2Nlc3NFbmRU
YWcoZW5kU2VsZWN0KTsKICAgICAgICAgICAgIHJlcHJvY2Vzc1N0YXJ0VGFnKHRva2VuKTsKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTE1NDAsNyArMTU0MCw3IEBAIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIAogYm9vbCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NCb2R5RW5kVGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYg
dG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7
CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKICAg
ICBBU1NFUlQodG9rZW4ubmFtZSgpID09IGJvZHlUYWcpOwogICAgIGlmICghbV90cmVlLm9wZW5F
bGVtZW50cygpLT5pblNjb3BlKGJvZHlUYWcubG9jYWxOYW1lKCkpKSB7CiAgICAgICAgIHBhcnNl
RXJyb3IodG9rZW4pOwpAQCAtMTU1Myw3ICsxNTUzLDcgQEAgYm9vbCBIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NCb2R5RW5kVGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAKIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQW55T3RoZXJFbmRUYWdGb3JJbkJvZHkoQXRvbWlj
SFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tl
bjo6RW5kVGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpF
bmRUYWcpOwogICAgIEhUTUxFbGVtZW50U3RhY2s6OkVsZW1lbnRSZWNvcmQqIHJlY29yZCA9IG1f
dHJlZS5vcGVuRWxlbWVudHMoKS0+dG9wUmVjb3JkKCk7CiAgICAgd2hpbGUgKDEpIHsKICAgICAg
ICAgQ29udGFpbmVyTm9kZSogbm9kZSA9IHJlY29yZC0+bm9kZSgpOwpAQCAtMTc3MCw3ICsxNzcw
LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRl
bHkoKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluVGFibGVCb2R5
KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBI
VE1MVG9rZW46OkVuZFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5U
eXBlczo6RW5kVGFnKTsKICAgICBpZiAoaXNUYWJsZUJvZHlDb250ZXh0VGFnKHRva2VuLm5hbWUo
KSkpIHsKICAgICAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZSh0
b2tlbi5uYW1lKCkpKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKQEAgLTE4MDcs
NyArMTgwNyw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5UYWJs
ZUJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NFbmRUYWdGb3JJblJvdyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewotICAgIEFTU0VS
VCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50
eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CiAgICAgaWYgKHRva2VuLm5hbWUoKSA9
PSB0clRhZykgewogICAgICAgICBwcm9jZXNzVHJFbmRUYWdGb3JJblJvdygpOwogICAgICAgICBy
ZXR1cm47CkBAIC0xODQzLDcgKzE4NDMsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c0VuZFRhZ0ZvckluUm93KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5DZWxsKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7
Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7CisgICAgQVNT
RVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKICAgICBpZiAoaXNU
YWJsZUNlbGxDb250ZXh0VGFnKHRva2VuLm5hbWUoKSkpIHsKICAgICAgICAgaWYgKCFtX3RyZWUu
b3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZSh0b2tlbi5uYW1lKCkpKSB7CiAgICAgICAgICAg
ICBwYXJzZUVycm9yKHRva2VuKTsKQEAgLTE4ODAsMTMgKzE4ODAsMTMgQEAgdm9pZCBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJbkNlbGwoQXRvbWljSFRNTFRva2VuJiB0b2tlbikK
IAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJbkJvZHkoQXRvbWljSFRN
TFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6
RW5kVGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRU
YWcpOwogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gYm9keVRhZykgewogICAgICAgICBwcm9jZXNz
Qm9keUVuZFRhZ0ZvckluQm9keSh0b2tlbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
aWYgKHRva2VuLm5hbWUoKSA9PSBodG1sVGFnKSB7Ci0gICAgICAgIEF0b21pY0hUTUxUb2tlbiBl
bmRCb2R5KEhUTUxUb2tlbjo6RW5kVGFnLCBib2R5VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAg
QXRvbWljSFRNTFRva2VuIGVuZEJvZHkoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgYm9keVRhZy5s
b2NhbE5hbWUoKSk7CiAgICAgICAgIGlmIChwcm9jZXNzQm9keUVuZFRhZ0ZvckluQm9keShlbmRC
b2R5KSkKICAgICAgICAgICAgIHJlcHJvY2Vzc0VuZFRhZyh0b2tlbik7CiAgICAgICAgIHJldHVy
bjsKQEAgLTIwNTMsNyArMjA1Myw3IEBAIGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVGFi
bGVFbmRUYWdGb3JJblRhYmxlKCkKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRU
YWdGb3JJblRhYmxlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9
PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKICAgICBpZiAodG9rZW4ubmFtZSgpID09IHRhYmxl
VGFnKSB7CiAgICAgICAgIHByb2Nlc3NUYWJsZUVuZFRhZ0ZvckluVGFibGUoKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMjA3NCw3ICsyMDc0LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NFbmRUYWdGb3JJblRhYmxlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAKIHZvaWQgSFRNTFRy
ZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAg
QVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7CisgICAgQVNTRVJUKHRv
a2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKICAgICBzd2l0Y2ggKGluc2Vy
dGlvbk1vZGUoKSkgewogICAgIGNhc2UgSW5pdGlhbE1vZGU6CiAgICAgICAgIEFTU0VSVChpbnNl
cnRpb25Nb2RlKCkgPT0gSW5pdGlhbE1vZGUpOwpAQCAtMjI3MCw3ICsyMjcwLDcgQEAgdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAg
ICAgICAgICAgIHx8IGlzVGFibGVDZWxsQ29udGV4dFRhZyh0b2tlbi5uYW1lKCkpKSB7CiAgICAg
ICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKICAgICAgICAgICAgIGlmIChtX3RyZWUub3BlbkVs
ZW1lbnRzKCktPmluVGFibGVTY29wZSh0b2tlbi5uYW1lKCkpKSB7Ci0gICAgICAgICAgICAgICAg
QXRvbWljSFRNTFRva2VuIGVuZFNlbGVjdChIVE1MVG9rZW46OkVuZFRhZywgc2VsZWN0VGFnLmxv
Y2FsTmFtZSgpKTsKKyAgICAgICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kU2VsZWN0KEhU
TUxUb2tlblR5cGVzOjpFbmRUYWcsIHNlbGVjdFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAg
ICAgICAgcHJvY2Vzc0VuZFRhZyhlbmRTZWxlY3QpOwogICAgICAgICAgICAgICAgIHJlcHJvY2Vz
c0VuZFRhZyh0b2tlbik7CiAgICAgICAgICAgICB9CkBAIC0yNDAyLDcgKzI0MDIsNyBAQCB2b2lk
IEhUTUxUcmVlQnVpbGRlcjo6cmVzZXRGb3JlaWduSW5zZXJ0aW9uTW9kZSgpCiAKIHZvaWQgSFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzQ29tbWVudChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewot
ICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpDb21tZW50KTsKKyAgICBBU1NF
UlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50KTsKICAgICBpZiAobV9p
bnNlcnRpb25Nb2RlID09IEluaXRpYWxNb2RlCiAgICAgICAgIHx8IG1faW5zZXJ0aW9uTW9kZSA9
PSBCZWZvcmVIVE1MTW9kZQogICAgICAgICB8fCBtX2luc2VydGlvbk1vZGUgPT0gQWZ0ZXJBZnRl
ckJvZHlNb2RlCkBAIC0yNDI0LDcgKzI0MjQsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc0NvbW1lbnQoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NDaGFyYWN0ZXIoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NF
UlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKTsKKyAgICBBU1NFUlQodG9r
ZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpOwogICAgIEV4dGVybmFsQ2hh
cmFjdGVyVG9rZW5CdWZmZXIgYnVmZmVyKHRva2VuKTsKICAgICBwcm9jZXNzQ2hhcmFjdGVyQnVm
ZmVyKGJ1ZmZlcik7CiB9CkBAIC0yNTgzLDcgKzI1ODMsNyBAQCBSZXByb2Nlc3NCdWZmZXI6CiAK
IHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kT2ZGaWxlKEF0b21pY0hUTUxUb2tlbiYg
dG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZE9mRmls
ZSk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxl
KTsKICAgICBzd2l0Y2ggKGluc2VydGlvbk1vZGUoKSkgewogICAgIGNhc2UgSW5pdGlhbE1vZGU6
CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5pdGlhbE1vZGUpOwpAQCAtMjY4
MSw3ICsyNjgxLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JJbml0aWFsKCkK
IAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JCZWZvcmVIVE1MKCkKIHsKLSAgICBB
dG9taWNIVE1MVG9rZW4gc3RhcnRIVE1MKEhUTUxUb2tlbjo6U3RhcnRUYWcsIGh0bWxUYWcubG9j
YWxOYW1lKCkpOworICAgIEF0b21pY0hUTUxUb2tlbiBzdGFydEhUTUwoSFRNTFRva2VuVHlwZXM6
OlN0YXJ0VGFnLCBodG1sVGFnLmxvY2FsTmFtZSgpKTsKICAgICBtX3RyZWUuaW5zZXJ0SFRNTEh0
bWxTdGFydFRhZ0JlZm9yZUhUTUwoc3RhcnRIVE1MKTsKICAgICBzZXRJbnNlcnRpb25Nb2RlKEJl
Zm9yZUhlYWRNb2RlKTsKICAgICBwcmVwYXJlVG9SZXByb2Nlc3NUb2tlbigpOwpAQCAtMjY4OSwy
OCArMjY4OSwyOCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckJlZm9yZUhUTUwo
KQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckJlZm9yZUhlYWQoKQogewotICAg
IEF0b21pY0hUTUxUb2tlbiBzdGFydEhlYWQoSFRNTFRva2VuOjpTdGFydFRhZywgaGVhZFRhZy5s
b2NhbE5hbWUoKSk7CisgICAgQXRvbWljSFRNTFRva2VuIHN0YXJ0SGVhZChIVE1MVG9rZW5UeXBl
czo6U3RhcnRUYWcsIGhlYWRUYWcubG9jYWxOYW1lKCkpOwogICAgIHByb2Nlc3NTdGFydFRhZyhz
dGFydEhlYWQpOwogICAgIHByZXBhcmVUb1JlcHJvY2Vzc1Rva2VuKCk7CiB9CiAKIHZvaWQgSFRN
TFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5IZWFkKCkKIHsKLSAgICBBdG9taWNIVE1MVG9rZW4g
ZW5kSGVhZChIVE1MVG9rZW46OkVuZFRhZywgaGVhZFRhZy5sb2NhbE5hbWUoKSk7CisgICAgQXRv
bWljSFRNTFRva2VuIGVuZEhlYWQoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgaGVhZFRhZy5sb2Nh
bE5hbWUoKSk7CiAgICAgcHJvY2Vzc0VuZFRhZyhlbmRIZWFkKTsKICAgICBwcmVwYXJlVG9SZXBy
b2Nlc3NUb2tlbigpOwogfQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckluSGVh
ZE5vc2NyaXB0KCkKIHsKLSAgICBBdG9taWNIVE1MVG9rZW4gZW5kTm9zY3JpcHQoSFRNTFRva2Vu
OjpFbmRUYWcsIG5vc2NyaXB0VGFnLmxvY2FsTmFtZSgpKTsKKyAgICBBdG9taWNIVE1MVG9rZW4g
ZW5kTm9zY3JpcHQoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgbm9zY3JpcHRUYWcubG9jYWxOYW1l
KCkpOwogICAgIHByb2Nlc3NFbmRUYWcoZW5kTm9zY3JpcHQpOwogICAgIHByZXBhcmVUb1JlcHJv
Y2Vzc1Rva2VuKCk7CiB9CiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9yQWZ0ZXJI
ZWFkKCkKIHsKLSAgICBBdG9taWNIVE1MVG9rZW4gc3RhcnRCb2R5KEhUTUxUb2tlbjo6U3RhcnRU
YWcsIGJvZHlUYWcubG9jYWxOYW1lKCkpOworICAgIEF0b21pY0hUTUxUb2tlbiBzdGFydEJvZHko
SFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnLCBib2R5VGFnLmxvY2FsTmFtZSgpKTsKICAgICBwcm9j
ZXNzU3RhcnRUYWcoc3RhcnRCb2R5KTsKICAgICBtX2ZyYW1lc2V0T2sgPSB0cnVlOwogICAgIHBy
ZXBhcmVUb1JlcHJvY2Vzc1Rva2VuKCk7CkBAIC0yNzM2LDcgKzI3MzYsNyBAQCB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6ZGVmYXVsdEZvckluVGFibGVUZXh0KCkKIAogYm9vbCBIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluSGVhZChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewot
ICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CisgICAgQVNT
RVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIGlmICh0
b2tlbi5uYW1lKCkgPT0gaHRtbFRhZykgewogICAgICAgICBtX3RyZWUuaW5zZXJ0SFRNTEh0bWxT
dGFydFRhZ0luQm9keSh0b2tlbik7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjc4Myw3ICsy
NzgzLDcgQEAgYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluSGVhZChB
dG9taWNIVE1MVG9rZW4mIHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0dl
bmVyaWNSQ0RBVEFTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewotICAgIEFTU0VS
VCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIG1fdHJlZS5pbnNlcnRI
VE1MRWxlbWVudCh0b2tlbik7CiAgICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRTdGF0ZShI
VE1MVG9rZW5pemVyOjpSQ0RBVEFTdGF0ZSk7CiAgICAgbV9vcmlnaW5hbEluc2VydGlvbk1vZGUg
PSBtX2luc2VydGlvbk1vZGU7CkBAIC0yNzkyLDcgKzI3OTIsNyBAQCB2b2lkIEhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc0dlbmVyaWNSQ0RBVEFTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2Vu
KQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0dlbmVyaWNSYXdUZXh0U3RhcnRUYWco
QXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhU
TUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
VHlwZXM6OlN0YXJ0VGFnKTsKICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnQodG9rZW4pOwog
ICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UkFXVEVY
VFN0YXRlKTsKICAgICBtX29yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IG1faW5zZXJ0aW9uTW9kZTsK
QEAgLTI4MDEsNyArMjgwMSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJp
Y1Jhd1RleHRTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogCiB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc1NjcmlwdFN0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7
Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAgICBB
U1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgbV90
cmVlLmluc2VydFNjcmlwdEVsZW1lbnQodG9rZW4pOwogICAgIG1fcGFyc2VyLT50b2tlbml6ZXIo
KS0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6U2NyaXB0RGF0YVN0YXRlKTsKICAgICBtX29yaWdp
bmFsSW5zZXJ0aW9uTW9kZSA9IG1faW5zZXJ0aW9uTW9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcAppbmRleCA3Y2RiZGM3MWM5
OTBlMGRmNTJkMDlhMmZiOTEzZmMyN2NmNDQ0MjM3Li5lODJmYTkzMDE2YjBhNGI2YWM0ZTg4MmIx
YzExNzZhMzgwNThiOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVmlld1NvdXJjZVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFN0cmluZyBIVE1MVmll
d1NvdXJjZVBhcnNlcjo6c291cmNlRm9yVG9rZW4oKQogdm9pZCBIVE1MVmlld1NvdXJjZVBhcnNl
cjo6dXBkYXRlVG9rZW5pemVyU3RhdGUoKQogewogICAgIC8vIEZJWE1FOiBUaGUgdG9rZW5pemVy
IHNob3VsZCBkbyB0aGlzIHdvcmsgZm9yIHVzLgotICAgIGlmIChtX3Rva2VuLnR5cGUoKSAhPSBI
VE1MVG9rZW46OlN0YXJ0VGFnKQorICAgIGlmIChtX3Rva2VuLnR5cGUoKSAhPSBIVE1MVG9rZW5U
eXBlczo6U3RhcnRUYWcpCiAgICAgICAgIHJldHVybjsKIAogICAgIEF0b21pY1N0cmluZyB0YWdO
YW1lKG1fdG9rZW4ubmFtZSgpLmRhdGEoKSwgbV90b2tlbi5uYW1lKCkuc2l6ZSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4
IGQwM2I3NDRlODcyMTE2NDhjOTJmNTEzNzhjMGIyYjhlMTNlODNlZTMuLjYzYjUxNjAyMWE0MjQ5
ZjM1Y2I2ZGE3ZmU0YWFmMmMzMmYzOGFjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFRl
eHREb2N1bWVudFBhcnNlcjo6aW5zZXJ0RmFrZVByZUVsZW1lbnQoKQogICAgIFJlZlB0cjxBdHRy
aWJ1dGU+IHN0eWxlQXR0cmlidXRlID0gQXR0cmlidXRlOjpjcmVhdGVNYXBwZWQoInN0eWxlIiwg
IndvcmQtd3JhcDogYnJlYWstd29yZDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyIpOwogICAgIFJl
ZlB0cjxOYW1lZE5vZGVNYXA+IGF0dHJpYnV0ZXMgPSBOYW1lZE5vZGVNYXA6OmNyZWF0ZSgpOwog
ICAgIGF0dHJpYnV0ZXMtPmluc2VydEF0dHJpYnV0ZShzdHlsZUF0dHJpYnV0ZS5yZWxlYXNlKCks
IGZhbHNlKTsKLSAgICBBdG9taWNIVE1MVG9rZW4gZmFrZVByZShIVE1MVG9rZW46OlN0YXJ0VGFn
LCBwcmVUYWcubG9jYWxOYW1lKCksIGF0dHJpYnV0ZXMucmVsZWFzZSgpKTsKKyAgICBBdG9taWNI
VE1MVG9rZW4gZmFrZVByZShIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcsIHByZVRhZy5sb2NhbE5h
bWUoKSwgYXR0cmlidXRlcy5yZWxlYXNlKCkpOwogCiAgICAgdHJlZUJ1aWxkZXIoKS0+Y29uc3Ry
dWN0VHJlZUZyb21BdG9taWNUb2tlbihmYWtlUHJlKTsKICAgICBtX2hhdmVJbnNlcnRlZEZha2VQ
cmVFbGVtZW50ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L1hTU0F1ZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5j
cHAKaW5kZXggZTgxZWFiYjA5NWU0MjNjMmJkYzFlODQ4NGFiNzBkNmQxNWI1NDg3MS4uZWUxZDJj
ZTFhNGViNTk2Y2NkNDZkMTY5MDU0MTQ4OTQ4ZTJmMTljNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKQEAgLTIzNCw3ICsyMzQsNyBAQCBib29sIFhTU0F1ZGl0
b3I6OmZpbHRlclRva2VuSW5pdGlhbChIVE1MVG9rZW4mIHRva2VuKQogewogICAgIEFTU0VSVCht
X3N0YXRlID09IEluaXRpYWwpOwogCi0gICAgaWYgKHRva2VuLnR5cGUoKSAhPSBIVE1MVG9rZW46
OlN0YXJ0VGFnKQorICAgIGlmICh0b2tlbi50eXBlKCkgIT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0
VGFnKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0g
ZXJhc2VEYW5nZXJvdXNBdHRyaWJ1dGVzSWZJbmplY3RlZCh0b2tlbik7CkBAIC0yNjYsOCArMjY2
LDggQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJUb2tlbkFmdGVyU2NyaXB0U3RhcnRUYWcoSFRN
TFRva2VuJiB0b2tlbikKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBBZnRlclNjcmlwdFN0YXJ0VGFn
KTsKICAgICBtX3N0YXRlID0gSW5pdGlhbDsKIAotICAgIGlmICh0b2tlbi50eXBlKCkgIT0gSFRN
TFRva2VuOjpDaGFyYWN0ZXIpIHsKLSAgICAgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1M
VG9rZW46OkVuZFRhZyB8fCB0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRPZkZpbGUpOwor
ICAgIGlmICh0b2tlbi50eXBlKCkgIT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcikgeworICAg
ICAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcgfHwgdG9r
ZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRPZkZpbGUpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCkBAIC0yODYsNyArMjg2LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0
ZXJUb2tlbkFmdGVyU2NyaXB0U3RhcnRUYWcoSFRNTFRva2VuJiB0b2tlbikKIGJvb2wgWFNTQXVk
aXRvcjo6ZmlsdGVyU2NyaXB0VG9rZW4oSFRNTFRva2VuJiB0b2tlbikKIHsKICAgICBBU1NFUlQo
bV9zdGF0ZSA9PSBJbml0aWFsKTsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tl
bjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6
OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZSh0b2tlbiwgc2NyaXB0VGFnKSk7CiAKICAg
ICBpZiAoZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHRva2VuLCBzcmNBdHRyLCBibGFua1VSTCgp
LnN0cmluZygpKSkKQEAgLTMwMCw3ICszMDAsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlclNj
cmlwdFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlck9iamVj
dFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gSW5pdGlh
bCk7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAg
ICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAg
QVNTRVJUKGhhc05hbWUodG9rZW4sIG9iamVjdFRhZykpOwogCiAgICAgYm9vbCBkaWRCbG9ja1Nj
cmlwdCA9IGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVy
T2JqZWN0VG9rZW4oSFRNTFRva2VuJiB0b2tlbikKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyUGFy
YW1Ub2tlbihIVE1MVG9rZW4mIHRva2VuKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IEluaXRp
YWwpOwotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7Cisg
ICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAg
IEFTU0VSVChoYXNOYW1lKHRva2VuLCBwYXJhbVRhZykpOwogCiAgICAgc2l6ZV90IGluZGV4T2ZO
YW1lQXR0cmlidXRlOwpAQCAtMzM0LDcgKzMzNCw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVy
UGFyYW1Ub2tlbihIVE1MVG9rZW4mIHRva2VuKQogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJFbWJl
ZFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gSW5pdGlh
bCk7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAg
ICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAg
QVNTRVJUKGhhc05hbWUodG9rZW4sIGVtYmVkVGFnKSk7CiAKICAgICBib29sIGRpZEJsb2NrU2Ny
aXB0ID0gZmFsc2U7CkBAIC0zNDgsNyArMzQ4LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJF
bWJlZFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckFwcGxl
dFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gSW5pdGlh
bCk7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAg
ICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAg
QVNTRVJUKGhhc05hbWUodG9rZW4sIGFwcGxldFRhZykpOwogCiAgICAgYm9vbCBkaWRCbG9ja1Nj
cmlwdCA9IGZhbHNlOwpAQCAtMzYyLDcgKzM2Miw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVy
QXBwbGV0VG9rZW4oSFRNTFRva2VuJiB0b2tlbikKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVySWZy
YW1lVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBJbml0
aWFsKTsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwor
ICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAg
ICBBU1NFUlQoaGFzTmFtZSh0b2tlbiwgaWZyYW1lVGFnKSk7CiAKICAgICByZXR1cm4gZXJhc2VB
dHRyaWJ1dGVJZkluamVjdGVkKHRva2VuLCBzcmNBdHRyKTsKQEAgLTM3MSw3ICszNzEsNyBAQCBi
b29sIFhTU0F1ZGl0b3I6OmZpbHRlcklmcmFtZVRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiBib29s
IFhTU0F1ZGl0b3I6OmZpbHRlck1ldGFUb2tlbihIVE1MVG9rZW4mIHRva2VuKQogewogICAgIEFT
U0VSVChtX3N0YXRlID09IEluaXRpYWwpOwotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRN
TFRva2VuOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5U
eXBlczo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHRva2VuLCBtZXRhVGFnKSk7CiAK
ICAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHRva2VuLCBodHRwX2VxdWl2QXR0
cik7CkBAIC0zODAsNyArMzgwLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJNZXRhVG9rZW4o
SFRNTFRva2VuJiB0b2tlbikKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyQmFzZVRva2VuKEhUTUxU
b2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gSW5pdGlhbCk7Ci0gICAgQVNT
RVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9r
ZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKGhhc05h
bWUodG9rZW4sIGJhc2VUYWcpKTsKIAogICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0
ZWQodG9rZW4sIGhyZWZBdHRyKTsKQEAgLTM4OSw3ICszODksNyBAQCBib29sIFhTU0F1ZGl0b3I6
OmZpbHRlckJhc2VUb2tlbihIVE1MVG9rZW4mIHRva2VuKQogYm9vbCBYU1NBdWRpdG9yOjpmaWx0
ZXJGb3JtVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBJ
bml0aWFsKTsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcp
OworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsK
ICAgICBBU1NFUlQoaGFzTmFtZSh0b2tlbiwgZm9ybVRhZykpOwogCiAgICAgcmV0dXJuIGVyYXNl
QXR0cmlidXRlSWZJbmplY3RlZCh0b2tlbiwgYWN0aW9uQXR0cik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1Rva2VuQmFzZS5oIGIvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9Ub2tlbkJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OTRiMThjNGE2OTMxYTk0N2NkMTkwMGMwYmQy
YTY2YmViZGNlYWJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9Ub2tlbkJhc2UuaApAQCAtMCwwICsxLDM2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVG9rZW5CYXNlX2gKKyNkZWZpbmUgVG9rZW5C
YXNlX2gKKworI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEJhc2VEb2N0eXBlRGF0YSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQmFzZURv
Y3R5cGVEYXRhKTsKK3B1YmxpYzoKKyAgICBCYXNlRG9jdHlwZURhdGEoKQorICAgICAgICA6IG1f
aGFzUHVibGljSWRlbnRpZmllcihmYWxzZSkKKyAgICAgICAgLCBtX2hhc1N5c3RlbUlkZW50aWZp
ZXIoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIGJvb2wgbV9oYXNQdWJsaWNJZGVudGlmaWVy
OworICAgIGJvb2wgbV9oYXNTeXN0ZW1JZGVudGlmaWVyOworICAgIFdURjo6VmVjdG9yPFVDaGFy
PiBtX3B1YmxpY0lkZW50aWZpZXI7CisgICAgV1RGOjpWZWN0b3I8VUNoYXI+IG1fc3lzdGVtSWRl
bnRpZmllcjsKK307CisgICAgCit0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlU2V0LCB0eXBlbmFtZSBE
b2N0eXBlRGF0YSA9IEJhc2VEb2N0eXBlRGF0YT4KK2NsYXNzIFRva2VuQmFzZSB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoVG9rZW5CYXNlKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVTZXQ6OlR5cGUgVHlwZTsKKwor
ICAgIGNsYXNzIFJhbmdlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGludCBtX3N0YXJ0OworICAg
ICAgICBpbnQgbV9lbmQ7CisgICAgfTsKKworICAgIGNsYXNzIEF0dHJpYnV0ZSB7CisgICAgcHVi
bGljOgorICAgICAgICBSYW5nZSBtX25hbWVSYW5nZTsKKyAgICAgICAgUmFuZ2UgbV92YWx1ZVJh
bmdlOworICAgICAgICBXVEY6OlZlY3RvcjxVQ2hhciwgMzI+IG1fbmFtZTsKKyAgICAgICAgV1RG
OjpWZWN0b3I8VUNoYXIsIDMyPiBtX3ZhbHVlOworICAgIH07CisKKyAgICB0eXBlZGVmIFdURjo6
VmVjdG9yPEF0dHJpYnV0ZSwgMTA+IEF0dHJpYnV0ZUxpc3Q7CisgICAgdHlwZWRlZiBXVEY6OlZl
Y3RvcjxVQ2hhciwgMTAyND4gRGF0YVZlY3RvcjsKKworICAgIFRva2VuQmFzZSgpIHsgY2xlYXIo
KTsgfQorICAgIHZpcnR1YWwgflRva2VuQmFzZSgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGNs
ZWFyKCkKKyAgICB7CisgICAgICAgIG1fdHlwZSA9IFR5cGVTZXQ6OlVuaW5pdGlhbGl6ZWQ7Cisg
ICAgICAgIG1fcmFuZ2UubV9zdGFydCA9IDA7CisgICAgICAgIG1fcmFuZ2UubV9lbmQgPSAwOwor
ICAgICAgICBtX2Jhc2VPZmZzZXQgPSAwOworICAgICAgICBtX2RhdGEuY2xlYXIoKTsKKyAgICB9
CisKKyAgICBib29sIGlzVW5pbml0aWFsaXplZCgpIHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlU2V0
OjpVbmluaXRpYWxpemVkOyB9CisKKyAgICBpbnQgc3RhcnRJbmRleCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmFuZ2UubV9zdGFydDsgfQorICAgIGludCBlbmRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmFuZ2UubV9lbmQ7IH0KKworICAgIHZvaWQgc2V0QmFzZU9mZnNldChpbnQgb2Zmc2V0KQorICAg
IHsKKyAgICAgICAgbV9iYXNlT2Zmc2V0ID0gb2Zmc2V0OworICAgIH0KKworICAgIHZvaWQgZW5k
KGludCBlbmRPZmZzZXQpCisgICAgeworICAgICAgICBtX3JhbmdlLm1fZW5kID0gZW5kT2Zmc2V0
IC0gbV9iYXNlT2Zmc2V0OworICAgIH0KKworICAgIHZvaWQgbWFrZUVuZE9mRmlsZSgpCisgICAg
eworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlVuaW5pdGlhbGl6ZWQpOworICAg
ICAgICBtX3R5cGUgPSBUeXBlU2V0OjpFbmRPZkZpbGU7CisgICAgfQorCisgICAgdm9pZCBiZWdp
blN0YXJ0VGFnKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChjaGFyYWN0
ZXIpOworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlVuaW5pdGlhbGl6ZWQpOwor
ICAgICAgICBtX3R5cGUgPSBUeXBlU2V0OjpTdGFydFRhZzsKKyAgICAgICAgbV9zZWxmQ2xvc2lu
ZyA9IGZhbHNlOworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSAwOworICAgICAgICBtX2F0
dHJpYnV0ZXMuY2xlYXIoKTsKKworICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIGJlZ2luRW5kVGFnKFQg
Y2hhcmFjdGVycykKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6VW5p
bml0aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9IFR5cGVTZXQ6OkVuZFRhZzsKKyAgICAgICAg
bV9zZWxmQ2xvc2luZyA9IGZhbHNlOworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSAwOwor
ICAgICAgICBtX2F0dHJpYnV0ZXMuY2xlYXIoKTsKKworICAgICAgICBtX2RhdGEuYXBwZW5kKGNo
YXJhY3RlcnMpOworICAgIH0KKworICAgIC8vIFN0YXJ0aW5nIGEgY2hhcmFjdGVyIHRva2VuIHdv
cmtzIHNsaWdodGx5IGRpZmZlcmVudGx5IHRoYW4gc3RhcnRpbmcKKyAgICAvLyBvdGhlciB0eXBl
cyBvZiB0b2tlbnMgYmVjYXVzZSB3ZSB3YW50IHRvIHNhdmUgYSBwZXItY2hhcmFjdGVyIGJyYW5j
aC4KKyAgICB2b2lkIGVuc3VyZUlzQ2hhcmFjdGVyVG9rZW4oKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpVbmluaXRpYWxpemVkIHx8IG1fdHlwZSA9PSBUeXBlU2V0
OjpDaGFyYWN0ZXIpOworICAgICAgICBtX3R5cGUgPSBUeXBlU2V0OjpDaGFyYWN0ZXI7CisgICAg
fQorCisgICAgdm9pZCBiZWdpbkNvbW1lbnQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBUeXBlU2V0OjpVbmluaXRpYWxpemVkKTsKKyAgICAgICAgbV90eXBlID0gVHlwZVNldDo6
Q29tbWVudDsKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luRE9DVFlQRSgpCisgICAgeworICAgICAg
ICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlVuaW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5
cGUgPSBUeXBlU2V0OjpET0NUWVBFOworICAgICAgICBtX2RvY3R5cGVEYXRhID0gYWRvcHRQdHIo
bmV3IERvY3R5cGVEYXRhKCkpOworICAgIH0KKworICAgIHZvaWQgYmVnaW5ET0NUWVBFKFVDaGFy
IGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgICAgICBi
ZWdpbkRPQ1RZUEUoKTsKKyAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBhcHBlbmRUb0NoYXJhY3RlcihU
IGNoYXJhY3RlcnMpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OkNo
YXJhY3Rlcik7CisgICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVycyk7CisgICAgfQorCisg
ICAgdm9pZCBhcHBlbmRUb0NvbW1lbnQoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6Q29t
bWVudCk7CisgICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB2
b2lkIGFkZE5ld0F0dHJpYnV0ZSgpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5
cGVTZXQ6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBUeXBlU2V0OjpFbmRUYWcpOworICAgICAgICBt
X2F0dHJpYnV0ZXMuZ3JvdyhtX2F0dHJpYnV0ZXMuc2l6ZSgpICsgMSk7CisgICAgICAgIG1fY3Vy
cmVudEF0dHJpYnV0ZSA9ICZtX2F0dHJpYnV0ZXMubGFzdCgpOworI2lmbmRlZiBOREVCVUcKKyAg
ICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX3N0YXJ0ID0gMDsKKyAgICAg
ICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX2VuZCA9IDA7CisgICAgICAgIG1f
Y3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3RhcnQgPSAwOworICAgICAgICBtX2N1
cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX2VuZCA9IDA7CisjZW5kaWYKKyAgICB9CisK
KyAgICB2b2lkIGJlZ2luQXR0cmlidXRlTmFtZShpbnQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAg
bV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX3N0YXJ0ID0gb2Zmc2V0IC0gbV9iYXNl
T2Zmc2V0OworICAgIH0KKworICAgIHZvaWQgZW5kQXR0cmlidXRlTmFtZShpbnQgb2Zmc2V0KQor
ICAgIHsKKyAgICAgICAgaW50IGluZGV4ID0gb2Zmc2V0IC0gbV9iYXNlT2Zmc2V0OworICAgICAg
ICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fZW5kID0gaW5kZXg7CisgICAgICAg
IG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3RhcnQgPSBpbmRleDsKKyAgICAg
ICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9lbmQgPSBpbmRleDsKKyAgICB9
CisKKyAgICB2b2lkIGJlZ2luQXR0cmlidXRlVmFsdWUoaW50IG9mZnNldCkKKyAgICB7CisgICAg
ICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3RhcnQgPSBvZmZzZXQgLSBt
X2Jhc2VPZmZzZXQ7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUt
Pm1fdmFsdWVSYW5nZS5tX2VuZCA9IDA7CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIGVuZEF0
dHJpYnV0ZVZhbHVlKGludCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1
dGUtPm1fdmFsdWVSYW5nZS5tX2VuZCA9IG9mZnNldCAtIG1fYmFzZU9mZnNldDsKKyAgICB9CisK
KyAgICB2b2lkIGFwcGVuZFRvQXR0cmlidXRlTmFtZShVQ2hhciBjaGFyYWN0ZXIpCisgICAgewor
ICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBl
U2V0OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6RW5kVGFnKTsKKyAgICAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGFkZCB0aGUgZm9sbG93aW5nIEFTU0VSVCBvbmNl
IHdlIGZpeAorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjI5NzEKKyAgICAgICAgLy8gICBBU1NFUlQobV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVS
YW5nZS5tX3N0YXJ0KTsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWUuYXBwZW5k
KGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKFVD
aGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgICAg
ICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBUeXBlU2V0
OjpFbmRUYWcpOworICAgICAgICBBU1NFUlQobV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFu
Z2UubV9zdGFydCk7CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZS5hcHBlbmQo
Y2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFRvQXR0cmlidXRlVmFsdWUoc2l6
ZV90IGksIGNvbnN0IFN0cmluZyYgdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQoIXZhbHVl
LmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6U3RhcnRUYWcg
fHwgbV90eXBlID09IFR5cGVTZXQ6OkVuZFRhZyk7CisgICAgICAgIG1fYXR0cmlidXRlc1tpXS5t
X3ZhbHVlLmFwcGVuZCh2YWx1ZS5jaGFyYWN0ZXJzKCksIHZhbHVlLmxlbmd0aCgpKTsKKyAgICB9
CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKworICAgIGJvb2wg
c2VsZkNsb3NpbmcoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBl
U2V0OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6RW5kVGFnKTsKKyAgICAgICAgcmV0
dXJuIG1fc2VsZkNsb3Npbmc7CisgICAgfQorCisgICAgdm9pZCBzZXRTZWxmQ2xvc2luZygpCisg
ICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlN0YXJ0VGFnIHx8IG1fdHlw
ZSA9PSBUeXBlU2V0OjpFbmRUYWcpOworICAgICAgICBtX3NlbGZDbG9zaW5nID0gdHJ1ZTsKKyAg
ICB9CisKKyAgICBjb25zdCBBdHRyaWJ1dGVMaXN0JiBhdHRyaWJ1dGVzKCkgY29uc3QKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6U3RhcnRUYWcgfHwgbV90eXBlID09
IFR5cGVTZXQ6OkVuZFRhZyk7CisgICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXM7CisgICAgfQor
CisgICAgdm9pZCBlcmFzZUNoYXJhY3RlcnMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBUeXBlU2V0OjpDaGFyYWN0ZXIpOworICAgICAgICBtX2RhdGEuY2xlYXIoKTsKKyAgICB9
CisKKyAgICB2b2lkIGVyYXNlVmFsdWVPZkF0dHJpYnV0ZShzaXplX3QgaSkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6U3RhcnRUYWcgfHwgbV90eXBlID09IFR5cGVT
ZXQ6OkVuZFRhZyk7CisgICAgICAgIG1fYXR0cmlidXRlc1tpXS5tX3ZhbHVlLmNsZWFyKCk7Cisg
ICAgfQorCisgICAgY29uc3QgRGF0YVZlY3RvciYgY2hhcmFjdGVycygpIGNvbnN0CisgICAgewor
ICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OkNoYXJhY3Rlcik7CisgICAgICAgIHJl
dHVybiBtX2RhdGE7CisgICAgfQorCisgICAgY29uc3QgRGF0YVZlY3RvciYgY29tbWVudCgpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OkNvbW1lbnQpOwor
ICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKworICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlz
aCBiZXR3ZWVuIGEgbWlzc2luZyBwdWJsaWMgaWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBvbmUuCisg
ICAgY29uc3QgV1RGOjpWZWN0b3I8VUNoYXI+JiBwdWJsaWNJZGVudGlmaWVyKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6RE9DVFlQRSk7CisgICAgICAg
IHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZpZXI7CisgICAgfQorCisgICAg
Ly8gRklYTUU6IERpc3Rpbmd1aXNoIGJldHdlZW4gYSBtaXNzaW5nIHN5c3RlbSBpZGVudGlmZXIg
YW5kIGFuIGVtcHR5IG9uZS4KKyAgICBjb25zdCBXVEY6OlZlY3RvcjxVQ2hhcj4mIHN5c3RlbUlk
ZW50aWZpZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0
OjpET0NUWVBFKTsKKyAgICAgICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRp
ZmllcjsKKyAgICB9CisKKyAgICB2b2lkIHNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5n
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6RE9DVFlQRSk7Cisg
ICAgICAgIG1fZG9jdHlwZURhdGEtPm1faGFzUHVibGljSWRlbnRpZmllciA9IHRydWU7CisgICAg
ICAgIG1fZG9jdHlwZURhdGEtPm1fcHVibGljSWRlbnRpZmllci5jbGVhcigpOworICAgIH0KKwor
ICAgIHZvaWQgc2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpET0NUWVBFKTsKKyAgICAgICAgbV9kb2N0eXBl
RGF0YS0+bV9oYXNTeXN0ZW1JZGVudGlmaWVyID0gdHJ1ZTsKKyAgICAgICAgbV9kb2N0eXBlRGF0
YS0+bV9zeXN0ZW1JZGVudGlmaWVyLmNsZWFyKCk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRU
b1B1YmxpY0lkZW50aWZpZXIoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6RE9DVFlQRSk7
CisgICAgICAgIEFTU0VSVChtX2RvY3R5cGVEYXRhLT5tX2hhc1B1YmxpY0lkZW50aWZpZXIpOwor
ICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZpZXIuYXBwZW5kKGNoYXJhY3Rl
cik7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRUb1N5c3RlbUlkZW50aWZpZXIoVUNoYXIgY2hh
cmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gVHlwZVNldDo6RE9DVFlQRSk7CisgICAgICAgIEFTU0VSVChtX2RvY3R5cGVE
YXRhLT5tX2hhc1N5c3RlbUlkZW50aWZpZXIpOworICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX3N5
c3RlbUlkZW50aWZpZXIuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCitwcm90ZWN0ZWQ6Cisg
ICAgaW5saW5lIHZvaWQgZG9BcHBlbmRUb05hbWUoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVy
KTsKKyAgICB9CisgICAgCisgICAgY29uc3QgRGF0YVZlY3RvciYgZ2V0TmFtZSgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKworICAgIC8vIEZJWE1FOiBJJ20g
bm90IHN1cmUgd2hhdCB0aGUgZmluYWwgcmVsYXRpb25zaGlwIGJldHdlZW4gSFRNTFRva2VuIGFu
ZAorICAgIC8vIEF0b21pY0hUTUxUb2tlbiB3aWxsIGJlLiBJJ20gbWFya2luZyB0aGlzIGEgZnJp
ZW5kIGZvciBub3csIGJ1dCB3ZSdsbAorICAgIC8vIHdhbnQgdG8gZW5kIHVwIHdpdGggYSBjbGVh
bmVyIGludGVyZmFjZSBiZXR3ZWVuIHRoZSB0d28gY2xhc3Nlcy4KKyAgICBmcmllbmQgY2xhc3Mg
QXRvbWljSFRNTFRva2VuOworCisgICAgVHlwZSBtX3R5cGU7CisgICAgUmFuZ2UgbV9yYW5nZTsg
Ly8gQWx3YXlzIHN0YXJ0cyBhdCB6ZXJvLgorICAgIGludCBtX2Jhc2VPZmZzZXQ7CisgICAgRGF0
YVZlY3RvciBtX2RhdGE7CisKKyAgICAvLyBGb3IgRE9DVFlQRQorICAgIE93blB0cjxEb2N0eXBl
RGF0YT4gbV9kb2N0eXBlRGF0YTsKKworICAgIC8vIEZvciBTdGFydFRhZyBhbmQgRW5kVGFnCisg
ICAgYm9vbCBtX3NlbGZDbG9zaW5nOworICAgIEF0dHJpYnV0ZUxpc3QgbV9hdHRyaWJ1dGVzOwor
CisgICAgLy8gQSBwb2ludGVyIGludG8gbV9hdHRyaWJ1dGVzIHVzZWQgZHVyaW5nIGxleGluZy4K
KyAgICBBdHRyaWJ1dGUqIG1fY3VycmVudEF0dHJpYnV0ZTsKK307CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuLmggYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWFhZTU2Yjg1MmE3OWU5
MTI0NjVjMTg4NmFkMzUyMDYyZDA2ZjY0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MVG9rZW4uaApAQCAtMCwwICsxLDM1NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgWE1MVG9rZW5faAorI2Rl
ZmluZSBYTUxUb2tlbl9oCisKKyNpbmNsdWRlICJUb2tlbkJhc2UuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBYTUxUb2tlblR5cGVzIHsKK3B1YmxpYzoKKyAgICBlbnVtIFR5cGUg
eworICAgICAgICBVbmluaXRpYWxpemVkLAorICAgICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24s
CisgICAgICAgIFhNTERlY2xhcmF0aW9uLAorICAgICAgICBET0NUWVBFLAorICAgICAgICBBdHRy
aWJ1dGVMaXN0RGVjbGFyYXRpb24sCisgICAgICAgIEVsZW1lbnREZWNsYXJhdGlvbiwKKyAgICAg
ICAgRW50aXR5RGVjbGFyYXRpb24sCisgICAgICAgIENEQVRBLAorICAgICAgICBTdGFydFRhZywK
KyAgICAgICAgRW5kVGFnLAorICAgICAgICBDb21tZW50LAorICAgICAgICBDaGFyYWN0ZXIsCisg
ICAgICAgIEVudGl0eSwKKyAgICAgICAgRW5kT2ZGaWxlLAorICAgIH07Cit9OworCitjbGFzcyBY
TUxUb2tlbiA6IHB1YmxpYyBUb2tlbkJhc2U8WE1MVG9rZW5UeXBlcz4geworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFhNTFRva2VuKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKworICAgIFhNTFRva2VuKCkgOiBUb2tlbkJhc2UoKSB7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBUb2tlbkJhc2U8WE1MVG9rZW5UeXBlcz46OmNs
ZWFyKCk7CisgICAgICAgIG1fdGFyZ2V0LmNsZWFyKCk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXBwZW5kVG9OYW1lKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gWE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IFhNTFRva2VuVHlwZXM6
OkVuZFRhZyB8fCBtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6RE9DVFlQRSB8fCBtX3R5cGUgPT0g
WE1MVG9rZW5UeXBlczo6RW50aXR5KTsKKyAgICAgICAgZG9BcHBlbmRUb05hbWUoY2hhcmFjdGVy
KTsKKyAgICB9CisgICAgCisgICAgY29uc3QgRGF0YVZlY3RvciYgbmFtZSgpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1f
dHlwZSA9PSBYTUxUb2tlblR5cGVzOjpFbmRUYWcgfHwgbV90eXBlID09IFhNTFRva2VuVHlwZXM6
OkRPQ1RZUEUgfHwgbV90eXBlID09IFhNTFRva2VuVHlwZXM6OkVudGl0eSk7CisgICAgICAgIHJl
dHVybiBnZXROYW1lKCk7CisgICAgfQorCisgICAgdm9pZCBiZWdpbkRPQ1RZUEUoKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsK
KyAgICAgICAgbV90eXBlID0gWE1MVG9rZW5UeXBlczo6RE9DVFlQRTsKKyAgICAgICAgbV9kb2N0
eXBlRGF0YSA9IGFkb3B0UHRyKG5ldyBEb2N0eXBlRGF0YSgpKTsKKyAgICB9CisKKyAgICB2b2lk
IGJlZ2luRE9DVFlQRShVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoY2hh
cmFjdGVyKTsKKyAgICAgICAgYmVnaW5ET0NUWVBFKCk7CisgICAgICAgIG1fZGF0YS5hcHBlbmQo
Y2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luWE1MRGVjbGFyYXRpb24oKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVk
KTsKKyAgICAgICAgbV90eXBlID0gWE1MVG9rZW5UeXBlczo6WE1MRGVjbGFyYXRpb247CisgICAg
ICAgIG1feG1sRGVjbGFyYXRpb25EYXRhID0gYWRvcHRQdHIobmV3IFhNTERlY2xhcmF0aW9uRGF0
YSgpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhcHBlbmRUb1hNTFZlcnNpb24oVUNoYXIgY2hh
cmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6WE1MRGVjbGFyYXRpb24pOworICAgICAgICBBU1NF
UlQobV94bWxEZWNsYXJhdGlvbkRhdGEpOworICAgICAgICBtX3htbERlY2xhcmF0aW9uRGF0YS0+
bV92ZXJzaW9uLmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0KKworICAgIHZvaWQgYmVnaW5YTUxF
bmNvZGluZyhVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoY2hhcmFjdGVy
KTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpYTUxEZWNsYXJhdGlv
bik7CisgICAgICAgIEFTU0VSVChtX3htbERlY2xhcmF0aW9uRGF0YSk7CisgICAgICAgIG1feG1s
RGVjbGFyYXRpb25EYXRhLT5tX2hhc0VuY29kaW5nID0gdHJ1ZTsKKyAgICAgICAgbV94bWxEZWNs
YXJhdGlvbkRhdGEtPm1fZW5jb2RpbmcuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAg
dm9pZCBhcHBlbmRUb1hNTEVuY29kaW5nKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAg
IEFTU0VSVChjaGFyYWN0ZXIpOworICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlw
ZXM6OlhNTERlY2xhcmF0aW9uKTsKKyAgICAgICAgQVNTRVJUKG1feG1sRGVjbGFyYXRpb25EYXRh
KTsKKyAgICAgICAgQVNTRVJUKG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX2hhc0VuY29kaW5nKTsK
KyAgICAgICAgbV94bWxEZWNsYXJhdGlvbkRhdGEtPm1fZW5jb2RpbmcuYXBwZW5kKGNoYXJhY3Rl
cik7CisgICAgfQorCisgICAgdm9pZCBzZXRYTUxTdGFuZGFsb25lKGJvb2wgc3RhbmRhbG9uZSkK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6WE1MRGVjbGFy
YXRpb24pOworICAgICAgICBBU1NFUlQobV94bWxEZWNsYXJhdGlvbkRhdGEpOworICAgICAgICBt
X3htbERlY2xhcmF0aW9uRGF0YS0+bV9oYXNTdGFuZGFsb25lID0gdHJ1ZTsKKyAgICAgICAgbV94
bWxEZWNsYXJhdGlvbkRhdGEtPm1fc3RhbmRhbG9uZSA9IHN0YW5kYWxvbmU7CisgICAgfQorCisg
ICAgdm9pZCBiZWdpblByb2Nlc3NpbmdJbnN0cnVjdGlvbigpCisgICAgeworICAgICAgICBBU1NF
UlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5
cGUgPSBYTUxUb2tlblR5cGVzOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb247CisgICAgfQorCisgICAg
dm9pZCBiZWdpblByb2Nlc3NpbmdJbnN0cnVjdGlvbihVQ2hhciBjaGFyYWN0ZXIpCisgICAgewor
ICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICAgICAgYmVnaW5Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24oKTsKKyAgICAgICAgbV90YXJnZXQuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisg
ICAgdm9pZCBhcHBlbmRUb1Byb2Nlc3NpbmdJbnN0cnVjdGlvblRhcmdldChVQ2hhciBjaGFyYWN0
ZXIpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlByb2Nl
c3NpbmdJbnN0cnVjdGlvbik7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgICAgICBt
X3RhcmdldC5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFRvUHJv
Y2Vzc2luZ0luc3RydWN0aW9uRGF0YShVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBB
U1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbik7Cisg
ICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rl
cik7CisgICAgfQorCisgICAgdm9pZCBiZWdpbkNEQVRBKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7CisgICAgICAgIG1fdHlw
ZSA9IFhNTFRva2VuVHlwZXM6OkNEQVRBOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kVG9DREFU
QShVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRv
a2VuVHlwZXM6OkNEQVRBKTsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIG1f
ZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luRW50aXR5KCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6VW5pbml0aWFs
aXplZCk7CisgICAgICAgIG1fdHlwZSA9IFhNTFRva2VuVHlwZXM6OkVudGl0eTsKKyAgICB9CisK
KyAgICB2b2lkIGJlZ2luRW50aXR5KFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFT
U0VSVChjaGFyYWN0ZXIpOworICAgICAgICBiZWdpbkVudGl0eSgpOworICAgICAgICBtX2RhdGEu
YXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgdm9pZCBwcmludFN0cmluZyhjb25zdCBE
YXRhVmVjdG9yJiBzdHJpbmcpCisgICAgeworICAgICAgICBEYXRhVmVjdG9yOjpjb25zdF9pdGVy
YXRvciBpdGVyID0gc3RyaW5nLmJlZ2luKCk7CisgICAgICAgIGZvciAoOyBpdGVyICE9IHN0cmlu
Zy5lbmQoKTsgKytpdGVyKQorICAgICAgICAgICAgcHJpbnRmKCIlbGMiLCB3Y2hhcl90KCppdGVy
KSk7CisgICAgfQorCisgICAgdm9pZCBwcmludEF0dHJzKCkKKyAgICB7CisgICAgICAgIEF0dHJp
YnV0ZUxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX2F0dHJpYnV0ZXMuYmVnaW4oKTsKKyAg
ICAgICAgZm9yICg7IGl0ZXIgIT0gbV9hdHRyaWJ1dGVzLmVuZCgpOyArK2l0ZXIpIHsKKyAgICAg
ICAgICAgIHByaW50ZigiICIpOworICAgICAgICAgICAgcHJpbnRTdHJpbmcoaXRlci0+bV9uYW1l
KTsKKyAgICAgICAgICAgIHByaW50ZigiPVwiIik7CisgICAgICAgICAgICBwcmludFN0cmluZyhp
dGVyLT5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHByaW50ZigiXCIiKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHZvaWQgcHJpbnQoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsK
KyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkOgorICAgICAgICAgICAg
cHJpbnRmKCJVTklUSUFMSVpFRCIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBYTUxUb2tlblR5cGVzOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246CisgICAgICAgICAgICBwcmlu
dGYoIlByb2Nlc3NpbmdJbnN0cnVjdGlvbjogIik7CisgICAgICAgICAgICBwcmludGYoIjw/Iik7
CisgICAgICAgICAgICBwcmludFN0cmluZyhtX3RhcmdldCk7CisgICAgICAgICAgICBwcmludGYo
IiAiKTsKKyAgICAgICAgICAgIHByaW50U3RyaW5nKG1fZGF0YSk7CisgICAgICAgICAgICBwcmlu
dGYoIj8+Iik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFhNTFRva2VuVHlw
ZXM6OlhNTERlY2xhcmF0aW9uOgorICAgICAgICAgICAgcHJpbnRmKCJYTUwgRGVjbGFyYXRpb246
ICIpOworICAgICAgICAgICAgcHJpbnRmKCI8P3htbCB2ZXJzaW9uPVwiIik7CisgICAgICAgICAg
ICBBU1NFUlQobV94bWxEZWNsYXJhdGlvbkRhdGEpOworICAgICAgICAgICAgcHJpbnRTdHJpbmco
bV94bWxEZWNsYXJhdGlvbkRhdGEtPm1fdmVyc2lvbik7CisgICAgICAgICAgICBwcmludGYoIlwi
Iik7CisgICAgICAgICAgICBpZiAobV94bWxEZWNsYXJhdGlvbkRhdGEtPm1faGFzRW5jb2Rpbmcp
IHsKKyAgICAgICAgICAgICAgICBwcmludGYoIiBlbmNvZGluZz1cIiIpOworICAgICAgICAgICAg
ICAgIHByaW50U3RyaW5nKG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX2VuY29kaW5nKTsKKyAgICAg
ICAgICAgICAgICBwcmludGYoIlwiIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
bV94bWxEZWNsYXJhdGlvbkRhdGEtPm1faGFzU3RhbmRhbG9uZSkKKyAgICAgICAgICAgICAgICBw
cmludGYoIiBzdGFuZGFsb25lPVwiJXNcIiIsIG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX3N0YW5k
YWxvbmUgPyAieWVzIiA6ICJubyIpOworICAgICAgICAgICAgcHJpbnRmKCI/PiIpOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpET0NUWVBFOgorICAg
ICAgICAgICAgcHJpbnRmKCJET0NUWVBFOiAiKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2RvY3R5
cGVEYXRhKTsKKyAgICAgICAgICAgIHByaW50ZigiPCFET0NUWVBFICIpOworICAgICAgICAgICAg
cHJpbnRTdHJpbmcobV9kYXRhKTsKKyAgICAgICAgICAgIGlmIChtX2RvY3R5cGVEYXRhLT5tX2hh
c1B1YmxpY0lkZW50aWZpZXIpIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIiBQVUJMSUMgXCIi
KTsKKyAgICAgICAgICAgICAgICBwcmludFN0cmluZyhtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lk
ZW50aWZpZXIpOworICAgICAgICAgICAgICAgIHByaW50ZigiXCIiKTsKKyAgICAgICAgICAgICAg
ICBpZiAobV9kb2N0eXBlRGF0YS0+bV9oYXNTeXN0ZW1JZGVudGlmaWVyKSB7CisgICAgICAgICAg
ICAgICAgICAgIHByaW50ZigiIFwiIik7CisgICAgICAgICAgICAgICAgICAgIHByaW50U3RyaW5n
KG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgICAg
IHByaW50ZigiXCIiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYg
KG1fZG9jdHlwZURhdGEtPm1faGFzU3lzdGVtSWRlbnRpZmllcikgeworICAgICAgICAgICAgICAg
IHByaW50ZigiIFNZU1RFTSBcIiIpOworICAgICAgICAgICAgICAgIHByaW50U3RyaW5nKG1fZG9j
dHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgcHJpbnRmKCJc
IiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJpbnRmKCI+Iik7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkF0dHJpYnV0ZUxpc3REZWNs
YXJhdGlvbjoKKyAgICAgICAgICAgIHByaW50ZigiQXR0cmlidXRlIExpc3Q6ICIpOworICAgICAg
ICAgICAgcHJpbnRmKCI8IUFUVExJU1Q+Iik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBjYXNlIFhNTFRva2VuVHlwZXM6OkVsZW1lbnREZWNsYXJhdGlvbjoKKyAgICAgICAgICAgIHBy
aW50ZigiRWxlbWVudCBEZWNsYXJhdGlvbjogIik7CisgICAgICAgICAgICBwcmludGYoIjwhRUxF
TUVOVD4iKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgWE1MVG9rZW5UeXBl
czo6RW50aXR5RGVjbGFyYXRpb246CisgICAgICAgICAgICBwcmludGYoIkVudGl0eSBEZWNsYXJh
dGlvbjogIik7CisgICAgICAgICAgICBwcmludGYoIjwhRU5USVRZPiIpOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpDREFUQToKKyAgICAgICAgICAg
IHByaW50ZigiQ0RBVEE6ICIpOworICAgICAgICAgICAgcHJpbnRmKCI8IVtDREFUQVsiKTsKKyAg
ICAgICAgICAgIHByaW50U3RyaW5nKG1fZGF0YSk7CisgICAgICAgICAgICBwcmludGYoIl1dPiIp
OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpTdGFy
dFRhZzoKKyAgICAgICAgICAgIHByaW50ZigiU3RhcnQgVGFnOiAiKTsKKyAgICAgICAgICAgIHBy
aW50ZigiPCIpOworICAgICAgICAgICAgcHJpbnRTdHJpbmcobV9kYXRhKTsKKyAgICAgICAgICAg
IHByaW50QXR0cnMoKTsKKyAgICAgICAgICAgIGlmIChzZWxmQ2xvc2luZygpKQorICAgICAgICAg
ICAgICAgIHByaW50ZigiLyIpOworICAgICAgICAgICAgcHJpbnRmKCI+Iik7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkVuZFRhZzoKKyAgICAgICAg
ICAgIHByaW50ZigiRW5kIFRhZzogIik7CisgICAgICAgICAgICBwcmludGYoIjwvIik7CisgICAg
ICAgICAgICBwcmludFN0cmluZyhtX2RhdGEpOworICAgICAgICAgICAgcHJpbnRmKCI+Iik7Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkNvbW1lbnQ6
CisgICAgICAgICAgICBwcmludGYoIkNvbW1lbnQ6ICIpOworICAgICAgICAgICAgcHJpbnRmKCI8
IS0tIik7CisgICAgICAgICAgICBwcmludFN0cmluZyhtX2RhdGEpOworICAgICAgICAgICAgcHJp
bnRmKCItLT4iKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgWE1MVG9rZW5U
eXBlczo6Q2hhcmFjdGVyOgorICAgICAgICAgICAgcHJpbnRmKCJDaGFyYWN0ZXJzOiAiKTsKKyAg
ICAgICAgICAgIHByaW50U3RyaW5nKG1fZGF0YSk7CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkVudGl0eToKKyAgICAgICAgICAgIHByaW50ZigiRW50
aXR5OiAiKTsKKyAgICAgICAgICAgIHByaW50ZigiJiIpOworICAgICAgICAgICAgcHJpbnRTdHJp
bmcobV9kYXRhKTsKKyAgICAgICAgICAgIHByaW50ZigiOyIpOworICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpFbmRPZkZpbGU6CisgICAgICAgICAgICBw
cmludGYoIkVPRiIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBw
cmludGYoIlxuIik7CisgICAgfQorCitwcml2YXRlOgorICAgIHR5cGVkZWYgQmFzZURvY3R5cGVE
YXRhIERvY3R5cGVEYXRhOworCisgICAgY2xhc3MgWE1MRGVjbGFyYXRpb25EYXRhIHsKKyAgICAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoWE1MRGVjbGFyYXRpb25EYXRhKTsKKyAgICBwdWJsaWM6
CisgICAgICAgIFhNTERlY2xhcmF0aW9uRGF0YSgpCisgICAgICAgIDogbV9oYXNTdGFuZGFsb25l
KGZhbHNlKQorICAgICAgICAsIG1faGFzRW5jb2RpbmcoZmFsc2UpCisgICAgICAgICwgbV9zdGFu
ZGFsb25lKGZhbHNlKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJv
b2wgbV9oYXNTdGFuZGFsb25lOworICAgICAgICBib29sIG1faGFzRW5jb2Rpbmc7CisgICAgICAg
IGJvb2wgbV9zdGFuZGFsb25lOworICAgICAgICBXVEY6OlZlY3RvcjxVQ2hhcj4gbV9lbmNvZGlu
ZzsKKyAgICAgICAgV1RGOjpWZWN0b3I8VUNoYXI+IG1fdmVyc2lvbjsKKyAgICB9OworCisgICAg
Ly8gInRhcmdldCIgZm9yIFByb2Nlc3NpbmdJbnN0cnVjdGlvbgorICAgIERhdGFWZWN0b3IgbV90
YXJnZXQ7CisgICAgCisgICAgLy8gRm9yIFhNTCBEZWNsYXJhdGlvbgorICAgIE93blB0cjxYTUxE
ZWNsYXJhdGlvbkRhdGE+IG1feG1sRGVjbGFyYXRpb25EYXRhOworfTsKKworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101487</attachid>
            <date>2011-07-20 11:28:21 -0700</date>
            <delta_ts>2011-07-20 11:34:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64764-20110720112820.patch</filename>
            <type>text/plain</type>
            <size>86125</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEyMTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNWFmNDRjOWQ2MDMyMGIw
MTFiNWI3N2YwZGE4YTZlYmNkM2JiYjFlLi4xZmZkYzhiYzFhNmIzYWFkMjQ5ZGZkN2RiNTEwZjE1
MmJmZTViMWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY1IEBACisyMDExLTA3LTIwICBKZWZm
cmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgTmV3IFRva2VuIGNsYXNzIGZv
ciBYTUwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0
NzY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBSZWZhY3Rv
ciBIVE1MVG9rZW4gaW50byBNYXJrdXBUb2tlbkJhc2UgYW5kIGFkZCBuZXcgWE1MVG9rZW4KKwor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkU291cmNlKToKKyAgICAgICAgKiBodG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29u
c3RydWN0aW9uU2l0ZTo6aW5zZXJ0RG9jdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29u
c3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29u
c3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudE9uRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnRPbkhUTUxIdG1sRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0U2VsZkNsb3Np
bmdIVE1MRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6
aW5zZXJ0Rm9yZWlnbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlv
blNpdGU6OmNyZWF0ZUhUTUxFbGVtZW50RnJvbVNhdmVkRWxlbWVudCk6CisgICAgICAgICogaHRt
bC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZXRhQ2hhcnNldFBhcnNlcjo6Y2hlY2tGb3JNZXRhQ2hhcnNldCk6CisgICAgICAgICogaHRt
bC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQ
cmVsb2FkU2Nhbm5lcjo6cHJvY2Vzc1Rva2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1M
U291cmNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU291cmNlVHJhY2tlcjo6
c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNvdXJjZVRyYWNrZXI6OnNvdXJjZUZvclRv
a2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUb2tlblR5cGVzOjpEb2N0eXBlRGF0YTo6RG9jdHlwZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRva2VuOjphcHBlbmRUb05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRva2VuOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6Zm9yY2VRdWlya3Mp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpzZXRGb3JjZVF1aXJrcyk6CisgICAgICAg
IChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OkF0b21pY0hUTUxUb2tlbik6CisgICAgICAgIChX
ZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWlj
SFRNTFRva2VuOjpzZWxmQ2xvc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9r
ZW46OmNoYXJhY3RlcnMpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpjb21t
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6cHVibGljSWRlbnRpZmll
cik6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OnN5c3RlbUlkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpmb3JjZVF1aXJrcyk6CisgICAg
ICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OnVzZXNOYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkF0b21pY0hUTUxUb2tlbjo6dXNlc0F0dHJpYnV0ZXMpOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxUb2tlbml6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6
c2F2ZUVuZFRhZ05hbWVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVy
OjpmbHVzaEJ1ZmZlcmVkRW5kVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6
Om5leHRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpoYXZlQnVmZmVy
ZWRDaGFyYWN0ZXJUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZy
b21Ub2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tl
bik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NEb2N0eXBlVG9r
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZVN0YXJ0
VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VFbmRU
YWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZVBFbmRU
YWdJZlBJbkJ1dHRvblNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0lzaW5kZXhTdGFydFRhZ0ZvckluQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluQm9keSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluVGFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQm9keUVuZFRhZ0ZvckluQm9keSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NBbnlPdGhlckVuZFRhZ0Zvcklu
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdG
b3JJblRhYmxlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NFbmRUYWdGb3JJblJvdyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NFbmRUYWdGb3JJbkNlbGwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzRW5kVGFnRm9ySW5Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
ZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc0NvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzQ2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0VuZE9mRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmRl
ZmF1bHRGb3JCZWZvcmVIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6
ZGVmYXVsdEZvckJlZm9yZUhlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
OjpkZWZhdWx0Rm9ySW5IZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6
ZGVmYXVsdEZvckluSGVhZE5vc2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVp
bGRlcjo6ZGVmYXVsdEZvckFmdGVySGVhZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluSGVhZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUkNEQVRBU3RhcnRUYWcpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1Jhd1RleHRTdGFydFRhZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTY3JpcHRTdGFydFRhZyk6
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VQYXJzZXI6OnVwZGF0ZVRva2VuaXplclN0YXRlKToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dERvY3VtZW50UGFyc2VyOjppbnNlcnRGYWtlUHJlRWxlbWVudCk6CisgICAg
ICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU1NB
dWRpdG9yOjpmaWx0ZXJUb2tlbkluaXRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRv
cjo6ZmlsdGVyVG9rZW5BZnRlclNjcmlwdFN0YXJ0VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OlhT
U0F1ZGl0b3I6OmZpbHRlclNjcmlwdFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0
b3I6OmZpbHRlck9iamVjdFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZp
bHRlclBhcmFtVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyRW1i
ZWRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJBcHBsZXRUb2tl
bik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJJZnJhbWVUb2tlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJNZXRhVG9rZW4pOgorICAgICAgICAo
V2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyQmFzZVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6
OlhTU0F1ZGl0b3I6OmZpbHRlckZvcm1Ub2tlbik6CisgICAgICAgICogeG1sL3BhcnNlci9NYXJr
dXBUb2tlbkJhc2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N0eXBlRGF0YUJhc2U6
OkRvY3R5cGVEYXRhQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6Ok1h
cmt1cFRva2VuQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6On5NYXJr
dXBUb2tlbkJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OmlzVW5pbml0aWFsaXplZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OnN0YXJ0SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjplbmRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpN
YXJrdXBUb2tlbkJhc2U6OnNldEJhc2VPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3Vw
VG9rZW5CYXNlOjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjptYWtl
RW5kT2ZGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuQmFzZTo6YmVnaW5TdGFy
dFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OmJlZ2luRW5kVGFnKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuQmFzZTo6ZW5zdXJlSXNDaGFyYWN0ZXJUb2tl
bik6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OmJlZ2luQ29tbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OmJlZ2luRE9DVFlQRSk6CisgICAgICAg
IChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OmFwcGVuZFRvQ2hhcmFjdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1hcmt1cFRva2VuQmFzZTo6YXBwZW5kVG9Db21tZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1hcmt1cFRva2VuQmFzZTo6YWRkTmV3QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1hcmt1cFRva2VuQmFzZTo6YmVnaW5BdHRyaWJ1dGVOYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1hcmt1cFRva2VuQmFzZTo6ZW5kQXR0cmlidXRlTmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNYXJrdXBUb2tlbkJhc2U6OmJlZ2luQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWFya3VwVG9rZW5CYXNlOjplbmRBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNYXJrdXBUb2tlbkJhc2U6OmFwcGVuZFRvQXR0cmlidXRlTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpNYXJrdXBUb2tlbkJhc2U6OmFwcGVuZFRvQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1
cFRva2VuQmFzZTo6c2VsZkNsb3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5C
YXNlOjpzZXRTZWxmQ2xvc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6
OmF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjplcmFzZUNo
YXJhY3RlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjplcmFzZVZhbHVl
T2ZBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjpjaGFyYWN0
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuQmFzZTo6Y29tbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OnB1YmxpY0lkZW50aWZpZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjpzeXN0ZW1JZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1hcmt1cFRva2VuQmFzZTo6c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjpzZXRTeXN0ZW1JZGVudGlm
aWVyVG9FbXB0eVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OmFw
cGVuZFRvUHVibGljSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJh
c2U6OmFwcGVuZFRvU3lzdGVtSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBU
b2tlbkJhc2U6OnByaW50U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuQmFz
ZTo6cHJpbnRBdHRycyk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OmFwcGVu
ZFRvTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6Om5hbWUpOgorICAg
ICAgICAqIHhtbC9wYXJzZXIvWE1MVG9rZW4uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpY
TUxUb2tlbjo6WE1MVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW46OmNsZWFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuOjphcHBlbmRUb05hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MVG9rZW46Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW46OmJlZ2lu
RE9DVFlQRSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6YmVnaW5YTUxEZWNsYXJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6YXBwZW5kVG9YTUxWZXJzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTFRva2VuOjpiZWdpblhNTEVuY29kaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlhNTFRva2VuOjphcHBlbmRUb1hNTEVuY29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlhNTFRva2VuOjpzZXRYTUxTdGFuZGFsb25lKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2Vu
OjpiZWdpblByb2Nlc3NpbmdJbnN0cnVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tl
bjo6YXBwZW5kVG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MVG9rZW46OmFwcGVuZFRvUHJvY2Vzc2luZ0luc3RydWN0aW9uRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpYTUxUb2tlbjo6YmVnaW5DREFUQSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxU
b2tlbjo6YXBwZW5kVG9DREFUQSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6YmVnaW5F
bnRpdHkpOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW46OnByaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlhNTFRva2VuOjpYTUxEZWNsYXJhdGlvbkRhdGE6OlhNTERlY2xhcmF0aW9uRGF0YSk6
CisKIDIwMTEtMDctMTggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBTcGVjaWZ5IGEgY2FzY2FkZSBsaXN0IGNvbnNpc3Rpbmcgb2YgdGhlIGxhc3QgcmVzb3J0IGZv
bnQgZm9yIENvcmUgVGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNDMzMWFk
YTUwM2EzN2RkNTAwMjc2NzkxYmI2MDI5YjZiNjljZmY4OC4uYzZmODkyMmYxOWExMjY5ZDg3MDVj
MGM0YzM1ZTA1NzkyNTM1YWFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0z
ODAwLDYgKzM4MDAsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyVGhyZWFkLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBc
CisJU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaCBcCiAJU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIuaCBcCiAJU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4
IDY2NDk2NGJlNGFlMzg5YjhiMzJiOWU4ZDk4ZjljOGUzMDNhMTc0OWMuLmI4MjI1ZTI4OGY1M2Jm
NDU3YTkyZGU1YzA3NTUzMjkwMDEzMDc5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTYxMDQsNiAr
NjEwNCw3IEBACiAgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCcsCiAg
ICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQuaCcsCiAgICAgICAg
ICAgICAnd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwJywKKyAgICAgICAgICAgICd4bWwvcGFyc2Vy
L01hcmt1cFRva2VuQmFzZS5oJywKICAgICAgICAgICAgICd4bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAneG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5o
JywKICAgICAgICAgICAgICd4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnBybwppbmRleCBlYTY2NjgzNzhhNTY5Yzg2Y2NhN2ZiODAzNTZjOGZiNzIxZDkx
ZDJkLi4zNGJmNDU1YzU3YmJlNjI0ZTkwMjJmZWI2OTYzNThjZWZiYTY3Y2Y4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybwpAQCAtMjQ5Niw2ICsyNDk2LDcgQEAgSEVBREVSUyArPSBcCiAgICAgd29ya2Vycy9Xb3Jr
ZXJSdW5Mb29wLmggXAogICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggXAogICAgIHdv
cmtlcnMvV29ya2VyVGhyZWFkLmggXAorICAgIHhtbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmgg
XAogICAgIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaCBcCiAgICAgeG1sL0RPTVBhcnNl
ci5oIFwKICAgICB4bWwvTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmggXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBjNTQ1YjlmZDczNmNiYTJlNDI0
ZDdlMzU5YTEzMTJmNGIxMDM3NmVkLi40YjcyNmQzOTE0YWE2M2NlMzg1ZmRmYTU2OGNmNjY5MzY2
MzQzMTU2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agpAQCAtNDI0NDksNiArNDI0NDksMTAgQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJ
CQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlx4bWxccGFyc2VyXE1h
cmt1cFRva2VuQmFzZS5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJl
bGF0aXZlUGF0aD0iLi5ceG1sXHBhcnNlclxYTUxEb2N1bWVudFBhcnNlci5oIgogCQkJCQk+CiAJ
CQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDA5NTI3NTgzNWYyMjMxMWFmOGJhNGZhMjM5ODJjNWZhZjVhM2FmZjgu
LjU3NTUxMGMxOTZlY2NiMTllNzdmOGI5YzA5NGYyYWY2NzAyMWQzNmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ2LDkgKzQ2
LDExIEBACiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAJCTAwMDIyRTY5MTND
RTFCQkEwMDI4MkQ1QiAvKiBDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVNZXRob2RzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDAyMkU2ODEz
Q0UxQkJBMDAyODJENUIgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lTWV0aG9kcy5o
ICovOyB9OworCQkwMDAyRUM1ODEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwMDJFQzU1MTNDM0Y2N0Qw
MDA0MEQ0NyAvKiBYTUxUb2tlbi5oICovOyB9OwogCQkwMDE0NjI4QTEwM0NEMURFMDAwQjIwREIg
LyogT3JpZ2luQWNjZXNzRW50cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDAxNDYyODgxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0Vu
dHJ5LmNwcCAqLzsgfTsKIAkJMDAxNDYyOEIxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vz
c0VudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
MDE0NjI4OTEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuaCAqLzsgfTsKIAkJ
MDAzRjFGRUExMUU2QUI0MzAwODI1OEQ5IC8qIFVzZXJDb250ZW50VHlwZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwM0YxRkU5MTFFNkFCNDMwMDgy
NThEOSAvKiBVc2VyQ29udGVudFR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDBBNjI5QzExM0QwQkVDNzAwNTBBQzUyIC8qIE1hcmt1cFRv
a2VuQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDBBNjI5QzAxM0QwQkVDNzAwNTBBQzUyIC8qIE1hcmt1cFRva2VuQmFzZS5oICovOyB9OwogCQkw
MEI5MzE4NzEzQkE4REIzMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBCOTMxODExM0JBODY3RjAw
MzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmNwcCAqLzsgfTsKIAkJMDBCOTMxODgxM0JBOERC
QTAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEI5MzE4MjEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9j
dW1lbnRQYXJzZXIuaCAqLzsgfTsKIAkJMDBCOTMxODkxM0JBOERCQzAwMzVBOTQ4IC8qIFhNTERv
Y3VtZW50UGFyc2VyTGlieG1sMi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwMEI5MzE4MzEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcCAqLzsgfTsKQEAgLTY0MDgsOSArNjQxMCwxMSBAQAogCiAvKiBCZWdpbiBQ
QlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAkJMDAwMjJFNjgxM0NFMUJCQTAwMjgyRDVCIC8q
IENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZU1ldGhvZHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lTWV0aG9kcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwMDAyRUM1NTEzQzNGNjdEMDAwNDBENDcg
LyogWE1MVG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWE1MVG9rZW4u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDAxNDYyODgxMDNDRDFERTAwMEIyMERC
IC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE9yaWdpbkFjY2Vzc0VudHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDAxNDYyODkxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9yaWdpbkFjY2Vzc0VudHJ5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwM0YxRkU5MTFFNkFCNDMwMDgyNThEOSAvKiBVc2VyQ29u
dGVudFR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJDb250ZW50
VHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDBBNjI5QzAxM0QwQkVDNzAw
NTBBQzUyIC8qIE1hcmt1cFRva2VuQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNYXJrdXBUb2tlbkJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBC
OTMxODExM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTERvY3VtZW50UGFyc2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBCOTMxODIxM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERv
Y3VtZW50UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTERvY3Vt
ZW50UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwQjkzMTgzMTNCQTg2
N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzEwLDYgKzEyNzE0LDcgQEAKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMDAwMjJFNjgxM0NFMUJCQTAwMjgyRDVC
IC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZU1ldGhvZHMuaCAqLywKKwkJCQkwMEE2
MjlDMDEzRDBCRUM3MDA1MEFDNTIgLyogTWFya3VwVG9rZW5CYXNlLmggKi8sCiAJCQkJMDBDQTkz
QjQxM0M2Njk3QzAwRjdGRTk1IC8qIE5ld1hNTERvY3VtZW50UGFyc2VyLmNwcCAqLywKIAkJCQkw
MENBOTNCMTEzQzY2OTE2MDBGN0ZFOTUgLyogTmV3WE1MRG9jdW1lbnRQYXJzZXIuaCAqLywKIAkJ
CQkwMEQwNDY0ODEzQzREMTQ1MDAzMjZGQ0MgLyogWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2Vy
LmNwcCAqLywKQEAgLTEyNzE5LDYgKzEyNzI0LDcgQEAKIAkJCQkwMEI5MzE4MzEzQkE4NjdGMDAz
NUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCAqLywKIAkJCQkwMEI5MzE4NTEz
QkE4NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5jcHAgKi8sCiAJCQkJMDBC
OTMxODYxM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyU2NvcGUuaCAqLywKKwkJ
CQkwMDAyRUM1NTEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCAqLywKIAkJCSk7CiAJCQlw
YXRoID0gcGFyc2VyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIzMDc4LDYgKzIz
MDg0LDcgQEAKIAkJCQlBODMzQzgwRDBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxNUEzNkQ3MTEwNDU3MjAwMEI3QjYzOSAvKiBYTUxOU05hbWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUNFNTNFQjBBOEQxOEU3MDAyMjk0N0QgLyogWE1MU2VyaWFs
aXplci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDAwMkVDNTgxM0MzRjY3RDAwMDQwRDQ3IC8qIFhN
TFRva2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQk1OTA1QURDMDEzMDJGM0NFMDBGMTE2REYgLyog
WE1MVHJlZVZpZXdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCN0ZDNjkwQThCOTJFQzAwRDlE
MzdCIC8qIFhQYXRoRXZhbHVhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzYwREE1QjBEMkEz
MUY3MDBCOTkxOEYgLyogWFBhdGhFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjMxMDQs
NiArMjMxMTEsNyBAQAogCQkJCUZENTM3MzUzMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0NUJGRDQxM0NGODA5MDAwQ0MzQjM4IC8qIFRyYW5zZm9y
bVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTY5QjBGMzEzRDBCMzNGMDBERjM1MjEgLyog
SGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwMEE2MjlDMTEz
RDBCRUM3MDA1MEFDNTIgLyogTWFya3VwVG9rZW5CYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwCmluZGV4IDFhNzBk
ZmMxOWQ1NWFhZDZjZjQxZWU3OGQwYzI5ZTdmYjU1OWQ2YzEuLjQwMmZhYjg3ZTVhMjAzMTc3NmFk
NjJmYjA3NGI4ZDMzY2ZkMmFmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZXdTb3VyY2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmll
d1NvdXJjZURvY3VtZW50LmNwcApAQCAtMTA0LDI0ICsxMDQsMjQgQEAgdm9pZCBIVE1MVmlld1Nv
dXJjZURvY3VtZW50OjphZGRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYg
dG9rZW4pCiAgICAgICAgIGNyZWF0ZUNvbnRhaW5pbmdUYWJsZSgpOwogCiAgICAgc3dpdGNoICh0
b2tlbi50eXBlKCkpIHsKLSAgICBjYXNlIEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZDoKKyAgICBj
YXNlIEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkOgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW46OkRPQ1RZUEU6Cisg
ICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRToKICAgICAgICAgcHJvY2Vzc0RvY3R5cGVU
b2tlbihzb3VyY2UsIHRva2VuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW46
OkVuZE9mRmlsZToKKyAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpFbmRPZkZpbGU6CiAgICAgICAg
IGlmICghbV90Ym9keS0+aGFzQ2hpbGROb2RlcygpKQogICAgICAgICAgICAgYWRkTGluZShTdHJp
bmcoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuOjpTdGFydFRhZzoKLSAg
ICBjYXNlIEhUTUxUb2tlbjo6RW5kVGFnOgorICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OlN0YXJ0
VGFnOgorICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkVuZFRhZzoKICAgICAgICAgcHJvY2Vzc1Rh
Z1Rva2VuKHNvdXJjZSwgdG9rZW4pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhUTUxUb2tl
bjo6Q29tbWVudDoKKyAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDb21tZW50OgogICAgICAgICBw
cm9jZXNzQ29tbWVudFRva2VuKHNvdXJjZSwgdG9rZW4pOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOgorICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkNoYXJh
Y3RlcjoKICAgICAgICAgcHJvY2Vzc0NoYXJhY3RlclRva2VuKHNvdXJjZSwgdG9rZW4pOwogICAg
ICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggOGU5YzI2YTIxYWJmYzg1YTVlNzBiMjFhNDA4
MzQ2ODVkMWM3YmMzMi4uMTRhZGViZDVlOWZkMDBiNzMxNjY1YWM3NzI4YjE5N2ExNmJlNDMzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNp
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25T
aXRlLmNwcApAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omlu
c2VydEhUTUxCb2R5U3RhcnRUYWdJbkJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIAogdm9p
ZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0RG9jdHlwZShBdG9taWNIVE1MVG9rZW4mIHRv
a2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpET0NUWVBFKTsK
KyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFKTsKICAg
ICBhdHRhY2gobV9hdHRhY2htZW50Um9vdCwgRG9jdW1lbnRUeXBlOjpjcmVhdGUobV9kb2N1bWVu
dCwgdG9rZW4ubmFtZSgpLCBTdHJpbmc6OmFkb3B0KHRva2VuLnB1YmxpY0lkZW50aWZpZXIoKSks
IFN0cmluZzo6YWRvcHQodG9rZW4uc3lzdGVtSWRlbnRpZmllcigpKSkpOwogICAgIAogICAgIC8v
IERPQ1RZUEUgbm9kZXMgYXJlIG9ubHkgcHJvY2Vzc2VkIHdoZW4gcGFyc2luZyBmcmFnbWVudHMg
dy9vIGNvbnRleHRFbGVtZW50cywgd2hpY2gKQEAgLTI0MywxOSArMjQzLDE5IEBAIHZvaWQgSFRN
TENvbnN0cnVjdGlvblNpdGU6Omluc2VydERvY3R5cGUoQXRvbWljSFRNTFRva2VuJiB0b2tlbikK
IAogdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudChBdG9taWNIVE1MVG9r
ZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpDb21t
ZW50KTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50
KTsKICAgICBhdHRhY2goY3VycmVudE5vZGUoKSwgQ29tbWVudDo6Y3JlYXRlKGN1cnJlbnROb2Rl
KCktPmRvY3VtZW50KCksIHRva2VuLmNvbW1lbnQoKSkpOwogfQogCiB2b2lkIEhUTUxDb25zdHJ1
Y3Rpb25TaXRlOjppbnNlcnRDb21tZW50T25Eb2N1bWVudChBdG9taWNIVE1MVG9rZW4mIHRva2Vu
KQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpDb21tZW50KTsKKyAg
ICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50KTsKICAgICBh
dHRhY2gobV9hdHRhY2htZW50Um9vdCwgQ29tbWVudDo6Y3JlYXRlKG1fZG9jdW1lbnQsIHRva2Vu
LmNvbW1lbnQoKSkpOwogfQogCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRDb21t
ZW50T25IVE1MSHRtbEVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NF
UlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6Q29tbWVudCk7CisgICAgQVNTRVJUKHRva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudCk7CiAgICAgQ29udGFpbmVyTm9kZSog
cGFyZW50ID0gbV9vcGVuRWxlbWVudHMucm9vdE5vZGUoKTsKICAgICBhdHRhY2gocGFyZW50LCBD
b21tZW50OjpjcmVhdGUocGFyZW50LT5kb2N1bWVudCgpLCB0b2tlbi5jb21tZW50KCkpKTsKIH0K
QEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1M
RWxlbWVudChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjppbnNlcnRTZWxmQ2xvc2luZ0hUTUxFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4p
CiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAg
ICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAg
UmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBhdHRhY2hUb0N1cnJlbnQoY3JlYXRlSFRNTEVsZW1l
bnQodG9rZW4pKTsKICAgICAvLyBOb3JtYWxseSBIVE1MRWxlbWVudFN0YWNrIGlzIHJlc3BvbnNp
YmxlIGZvciBjYWxsaW5nIGZpbmlzaFBhcnNpbmdDaGlsZHJlbiwKICAgICAvLyBidXQgc2VsZi1j
bG9zaW5nIGVsZW1lbnRzIGFyZSBuZXZlciBpbiB0aGUgZWxlbWVudCBzdGFjayBzbyB0aGUgc3Rh
Y2sKQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRT
Y3JpcHRFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAKIHZvaWQgSFRNTENvbnN0cnVj
dGlvblNpdGU6Omluc2VydEZvcmVpZ25FbGVtZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4sIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBl
KCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBI
VE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIG5vdEltcGxlbWVudGVkKCk7IC8vIHBhcnNl
RXJyb3Igd2hlbiB4bWxucyBvciB4bWxuczp4bGluayBhcmUgd3JvbmcuCiAKICAgICBSZWZQdHI8
RWxlbWVudD4gZWxlbWVudCA9IGF0dGFjaFRvQ3VycmVudChjcmVhdGVFbGVtZW50KHRva2VuLCBu
YW1lc3BhY2VVUkkpKTsKQEAgLTQyMSw3ICs0MjEsNyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEhU
TUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudEZyb21TYXZlZEVsZW1lbnQoRWxl
bQogICAgIC8vIHNwZWMgaW1wbGllcyBpdCBzaG91bGQgYmUgIjEiLiAgTWluZWZpZWxkIG1hdGNo
ZXMgdGhlIEhUTUw1IHNwZWMgaGVyZS4KIAogICAgIEFTU0VSVChlbGVtZW50LT5pc0hUTUxFbGVt
ZW50KCkpOyAvLyBvdGhlcndpc2UgbG9jYWxOYW1lKCkgbWlnaHQgYmUgd3JvbmcuCi0gICAgQXRv
bWljSFRNTFRva2VuIGZha2VUb2tlbihIVE1MVG9rZW46OlN0YXJ0VGFnLCBlbGVtZW50LT5sb2Nh
bE5hbWUoKSwgY2xvbmVBdHRyaWJ1dGVzKGVsZW1lbnQpKTsKKyAgICBBdG9taWNIVE1MVG9rZW4g
ZmFrZVRva2VuKEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZywgZWxlbWVudC0+bG9jYWxOYW1lKCks
IGNsb25lQXR0cmlidXRlcyhlbGVtZW50KSk7CiAgICAgcmV0dXJuIGNyZWF0ZUhUTUxFbGVtZW50
KGZha2VUb2tlbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwCmluZGV4IDU0MTM0NjY5OTY5NGE5MWM4ZjNmM2EwYTcx
YWUzMjk1NmQwMmI3MGEuLjljZWFhZTlhZjA2MDliZjcyYmY2OTg3YzkyYTYwMGVhNjc4YjRjZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0
UGFyc2VyLmNwcApAQCAtMTc1LDggKzE3NSw4IEBAIGJvb2wgSFRNTE1ldGFDaGFyc2V0UGFyc2Vy
OjpjaGVja0Zvck1ldGFDaGFyc2V0KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiAg
ICAgbV9pbnB1dC5hcHBlbmQoU2VnbWVudGVkU3RyaW5nKG1fYXNzdW1lZENvZGVjLT5kZWNvZGUo
ZGF0YSwgbGVuZ3RoKSkpOwogCiAgICAgd2hpbGUgKG1fdG9rZW5pemVyLT5uZXh0VG9rZW4obV9p
bnB1dCwgbV90b2tlbikpIHsKLSAgICAgICAgYm9vbCBlbmQgPSBtX3Rva2VuLnR5cGUoKSA9PSBI
VE1MVG9rZW46OkVuZFRhZzsKLSAgICAgICAgaWYgKGVuZCB8fCBtX3Rva2VuLnR5cGUoKSA9PSBI
VE1MVG9rZW46OlN0YXJ0VGFnKSB7CisgICAgICAgIGJvb2wgZW5kID0gbV90b2tlbi50eXBlKCkg
PT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZzsKKyAgICAgICAgaWYgKGVuZCB8fCBtX3Rva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpIHsKICAgICAgICAgICAgIEF0b21pY1N0
cmluZyB0YWdOYW1lKG1fdG9rZW4ubmFtZSgpLmRhdGEoKSwgbV90b2tlbi5uYW1lKCkuc2l6ZSgp
KTsKICAgICAgICAgICAgIGlmICghZW5kKSB7CiAgICAgICAgICAgICAgICAgbV90b2tlbml6ZXIt
PnVwZGF0ZVN0YXRlRm9yKHRhZ05hbWUsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggOWMzMGVmOTJkZTMxMGExNWI1ZDkx
Y2ExYjkwMDk5NzAzNzlmNWI2MS4uYjk0MjFkODg0NGU2OWFiNzBiOTVhNjlmMWIxMmE4MGQ3MmIx
MGRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRT
Y2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNj
YW5uZXIuY3BwCkBAIC0xNzQsMTUgKzE3NCwxNSBAQCB2b2lkIEhUTUxQcmVsb2FkU2Nhbm5lcjo6
c2NhbigpCiB2b2lkIEhUTUxQcmVsb2FkU2Nhbm5lcjo6cHJvY2Vzc1Rva2VuKCkKIHsKICAgICBp
ZiAobV9pblN0eWxlKSB7Ci0gICAgICAgIGlmIChtX3Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46
OkNoYXJhY3RlcikKKyAgICAgICAgaWYgKG1fdG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVz
OjpDaGFyYWN0ZXIpCiAgICAgICAgICAgICBtX2Nzc1NjYW5uZXIuc2NhbihtX3Rva2VuLCBzY2Fu
bmluZ0JvZHkoKSk7Ci0gICAgICAgIGVsc2UgaWYgKG1fdG9rZW4udHlwZSgpID09IEhUTUxUb2tl
bjo6RW5kVGFnKSB7CisgICAgICAgIGVsc2UgaWYgKG1fdG9rZW4udHlwZSgpID09IEhUTUxUb2tl
blR5cGVzOjpFbmRUYWcpIHsKICAgICAgICAgICAgIG1faW5TdHlsZSA9IGZhbHNlOwogICAgICAg
ICAgICAgbV9jc3NTY2FubmVyLnJlc2V0KCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAo
bV90b2tlbi50eXBlKCkgIT0gSFRNTFRva2VuOjpTdGFydFRhZykKKyAgICBpZiAobV90b2tlbi50
eXBlKCkgIT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKQogICAgICAgICByZXR1cm47CiAKICAg
ICBQcmVsb2FkVGFzayB0YXNrKG1fdG9rZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuY3BwCmluZGV4IGNmNDMxMDVkMzkyMWE2MjI2NWQ2YTJh
OWY3YTdhZjBlZTUxYjU1ZWIuLjcwY2Y3MDkxNWE4YmY4YTk5NTAxODkzZWVjZWM5ZjFjOThiYWZl
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTb3VyY2VUcmFj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU291cmNlVHJhY2tl
ci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgSFRNTFNvdXJjZVRyYWNrZXI6OkhUTUxTb3VyY2VUcmFj
a2VyKCkKIAogdm9pZCBIVE1MU291cmNlVHJhY2tlcjo6c3RhcnQoY29uc3QgSFRNTElucHV0U3Ry
ZWFtJiBpbnB1dCwgSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBtX3NvdXJjZUZyb21QcmV2aW91
c1NlZ21lbnRzID0gdG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZCA/IFN0
cmluZygpIDogbV9zb3VyY2VGcm9tUHJldmlvdXNTZWdtZW50cyArIG1fc291cmNlLnRvU3RyaW5n
KCk7CisgICAgbV9zb3VyY2VGcm9tUHJldmlvdXNTZWdtZW50cyA9IHRva2VuLnR5cGUoKSA9PSBI
VE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCA/IFN0cmluZygpIDogbV9zb3VyY2VGcm9tUHJl
dmlvdXNTZWdtZW50cyArIG1fc291cmNlLnRvU3RyaW5nKCk7CiAgICAgbV9zb3VyY2UgPSBpbnB1
dC5jdXJyZW50KCk7CiAgICAgdG9rZW4uc2V0QmFzZU9mZnNldChpbnB1dC5jdXJyZW50KCkubnVt
YmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSAtIG1fc291cmNlRnJvbVByZXZpb3VzU2VnbWVudHMu
bGVuZ3RoKCkpOwogfQpAQCAtNDgsNyArNDgsNyBAQCB2b2lkIEhUTUxTb3VyY2VUcmFja2VyOjpl
bmQoY29uc3QgSFRNTElucHV0U3RyZWFtJiBpbnB1dCwgSFRNTFRva2VuJiB0b2tlbikKIAogU3Ry
aW5nIEhUTUxTb3VyY2VUcmFja2VyOjpzb3VyY2VGb3JUb2tlbihjb25zdCBIVE1MVG9rZW4mIHRv
a2VuKQogewotICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRPZkZpbGUpCisg
ICAgaWYgKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxlKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7IC8vIEhpZGVzIHRoZSBudWxsIGNoYXJhY3RlciB3ZSB1c2UgdG8g
bWFyayB0aGUgZW5kIG9mIGZpbGUuCiAKICAgICBpZiAoIW1fY2FjaGVkU291cmNlRm9yVG9rZW4u
aXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRv
a2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAppbmRleCA2N2Ri
NjQ3MDZmNzkzM2RmOWE3YmNmODBjMmJjMTkxMzY3YmQ3OTQ0Li4xNDc5ZDBkNWUyNDI3ODk5YmEw
MzljZDUzMDEwOTQ1MDQ4NGMwZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9r
ZW4uaApAQCAtMjYsMTQgKzI2LDExIEBACiAjaWZuZGVmIEhUTUxUb2tlbl9oCiAjZGVmaW5lIEhU
TUxUb2tlbl9oCiAKLSNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKLSNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJNYXJrdXBUb2tl
bkJhc2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MVG9rZW4gewotICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEhUTUxUb2tlbik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworY2xhc3MgSFRNTFRva2VuVHlwZXMgewogcHVibGljOgogICAgIGVudW0gVHlwZSB7CiAgICAg
ICAgIFVuaW5pdGlhbGl6ZWQsCkBAIC00NSwzMzkgKzQyLDQ1IEBAIHB1YmxpYzoKICAgICAgICAg
RW5kT2ZGaWxlLAogICAgIH07CiAKLSAgICBjbGFzcyBSYW5nZSB7CisgICAgY2xhc3MgRG9jdHlw
ZURhdGEgOiBwdWJsaWMgRG9jdHlwZURhdGFCYXNlIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRG9jdHlwZURhdGEpOwogICAgIHB1YmxpYzoKLSAgICAgICAgaW50IG1fc3RhcnQ7Ci0g
ICAgICAgIGludCBtX2VuZDsKLSAgICB9OworICAgICAgICBEb2N0eXBlRGF0YSgpCisgICAgICAg
ICAgICA6IERvY3R5cGVEYXRhQmFzZSgpCisgICAgICAgICAgICAsIG1fZm9yY2VRdWlya3MoZmFs
c2UpCisgICAgICAgIHsKKyAgICAgICAgfQogCi0gICAgY2xhc3MgQXR0cmlidXRlIHsKLSAgICBw
dWJsaWM6Ci0gICAgICAgIFJhbmdlIG1fbmFtZVJhbmdlOwotICAgICAgICBSYW5nZSBtX3ZhbHVl
UmFuZ2U7Ci0gICAgICAgIFdURjo6VmVjdG9yPFVDaGFyLCAzMj4gbV9uYW1lOwotICAgICAgICBX
VEY6OlZlY3RvcjxVQ2hhciwgMzI+IG1fdmFsdWU7CisgICAgICAgIGJvb2wgbV9mb3JjZVF1aXJr
czsKICAgICB9OworfTsKIAotICAgIHR5cGVkZWYgV1RGOjpWZWN0b3I8QXR0cmlidXRlLCAxMD4g
QXR0cmlidXRlTGlzdDsKLSAgICB0eXBlZGVmIFdURjo6VmVjdG9yPFVDaGFyLCAxMDI0PiBEYXRh
VmVjdG9yOwotCi0gICAgSFRNTFRva2VuKCkgeyBjbGVhcigpOyB9Ci0KLSAgICB2b2lkIGNsZWFy
KCkKLSAgICB7Ci0gICAgICAgIG1fdHlwZSA9IFVuaW5pdGlhbGl6ZWQ7Ci0gICAgICAgIG1fcmFu
Z2UubV9zdGFydCA9IDA7Ci0gICAgICAgIG1fcmFuZ2UubV9lbmQgPSAwOwotICAgICAgICBtX2Jh
c2VPZmZzZXQgPSAwOwotICAgICAgICBtX2RhdGEuY2xlYXIoKTsKLSAgICB9Ci0KLSAgICBib29s
IGlzVW5pbml0aWFsaXplZCgpIHsgcmV0dXJuIG1fdHlwZSA9PSBVbmluaXRpYWxpemVkOyB9Ci0K
LSAgICBpbnQgc3RhcnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2UubV9zdGFydDsgfQot
ICAgIGludCBlbmRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2UubV9lbmQ7IH0KLQotICAg
IHZvaWQgc2V0QmFzZU9mZnNldChpbnQgb2Zmc2V0KQotICAgIHsKLSAgICAgICAgbV9iYXNlT2Zm
c2V0ID0gb2Zmc2V0OwotICAgIH0KLQotICAgIHZvaWQgZW5kKGludCBlbmRPZmZzZXQpCi0gICAg
ewotICAgICAgICBtX3JhbmdlLm1fZW5kID0gZW5kT2Zmc2V0IC0gbV9iYXNlT2Zmc2V0OwotICAg
IH0KLQotICAgIHZvaWQgbWFrZUVuZE9mRmlsZSgpCi0gICAgewotICAgICAgICBBU1NFUlQobV90
eXBlID09IFVuaW5pdGlhbGl6ZWQpOwotICAgICAgICBtX3R5cGUgPSBFbmRPZkZpbGU7Ci0gICAg
fQotCi0gICAgdm9pZCBiZWdpblN0YXJ0VGFnKFVDaGFyIGNoYXJhY3RlcikKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBBU1NFUlQobV90eXBlID09IFVuaW5pdGlh
bGl6ZWQpOwotICAgICAgICBtX3R5cGUgPSBTdGFydFRhZzsKLSAgICAgICAgbV9zZWxmQ2xvc2lu
ZyA9IGZhbHNlOwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSAwOwotICAgICAgICBtX2F0
dHJpYnV0ZXMuY2xlYXIoKTsKLQotICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7Ci0g
ICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIGJlZ2luRW5kVGFnKFQg
Y2hhcmFjdGVycykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVW5pbml0aWFsaXpl
ZCk7Ci0gICAgICAgIG1fdHlwZSA9IEVuZFRhZzsKLSAgICAgICAgbV9zZWxmQ2xvc2luZyA9IGZh
bHNlOwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSAwOwotICAgICAgICBtX2F0dHJpYnV0
ZXMuY2xlYXIoKTsKLQotICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3RlcnMpOwotICAgIH0K
LQotICAgIC8vIFN0YXJ0aW5nIGEgY2hhcmFjdGVyIHRva2VuIHdvcmtzIHNsaWdodGx5IGRpZmZl
cmVudGx5IHRoYW4gc3RhcnRpbmcKLSAgICAvLyBvdGhlciB0eXBlcyBvZiB0b2tlbnMgYmVjYXVz
ZSB3ZSB3YW50IHRvIHNhdmUgYSBwZXItY2hhcmFjdGVyIGJyYW5jaC4KLSAgICB2b2lkIGVuc3Vy
ZUlzQ2hhcmFjdGVyVG9rZW4oKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmlu
aXRpYWxpemVkIHx8IG1fdHlwZSA9PSBDaGFyYWN0ZXIpOwotICAgICAgICBtX3R5cGUgPSBDaGFy
YWN0ZXI7Ci0gICAgfQotCi0gICAgdm9pZCBiZWdpbkNvbW1lbnQoKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxpemVkKTsKLSAgICAgICAgbV90eXBlID0gQ29tbWVu
dDsKLSAgICB9Ci0KLSAgICB2b2lkIGJlZ2luRE9DVFlQRSgpCi0gICAgewotICAgICAgICBBU1NF
UlQobV90eXBlID09IFVuaW5pdGlhbGl6ZWQpOwotICAgICAgICBtX3R5cGUgPSBET0NUWVBFOwot
ICAgICAgICBtX2RvY3R5cGVEYXRhID0gYWRvcHRQdHIobmV3IERvY3R5cGVEYXRhKCkpOwotICAg
IH0KLQotICAgIHZvaWQgYmVnaW5ET0NUWVBFKFVDaGFyIGNoYXJhY3RlcikKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBiZWdpbkRPQ1RZUEUoKTsKLSAgICAgICAg
bV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOwotICAgIH0KLQorY2xhc3MgSFRNTFRva2VuIDogcHVi
bGljIE1hcmt1cFRva2VuQmFzZTxIVE1MVG9rZW5UeXBlcywgSFRNTFRva2VuVHlwZXM6OkRvY3R5
cGVEYXRhPiB7CitwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRUb05hbWUoVUNoYXIgY2hhcmFjdGVy
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0gICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyB8fCBtX3R5cGUgPT0gRE9DVFlQRSk7
Ci0gICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQgYXBwZW5kVG9DaGFyYWN0ZXIoVCBjaGFyYWN0ZXJzKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBDaGFyYWN0ZXIpOwotICAgICAgICBtX2Rh
dGEuYXBwZW5kKGNoYXJhY3RlcnMpOwotICAgIH0KLQotICAgIHZvaWQgYXBwZW5kVG9Db21tZW50
KFVDaGFyIGNoYXJhY3RlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAg
ICAgICBBU1NFUlQobV90eXBlID09IENvbW1lbnQpOwotICAgICAgICBtX2RhdGEuYXBwZW5kKGNo
YXJhY3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBhZGROZXdBdHRyaWJ1dGUoKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBTdGFydFRhZyB8fCBtX3R5cGUgPT0gRW5kVGFnKTsKLSAg
ICAgICAgbV9hdHRyaWJ1dGVzLmdyb3cobV9hdHRyaWJ1dGVzLnNpemUoKSArIDEpOwotICAgICAg
ICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSAmbV9hdHRyaWJ1dGVzLmxhc3QoKTsKLSNpZm5kZWYgTkRF
QlVHCi0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1lUmFuZ2UubV9zdGFydCA9IDA7
Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1lUmFuZ2UubV9lbmQgPSAwOwotICAg
ICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX3N0YXJ0ID0gMDsKLSAgICAg
ICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9lbmQgPSAwOwotI2VuZGlmCi0g
ICAgfQotCi0gICAgdm9pZCBiZWdpbkF0dHJpYnV0ZU5hbWUoaW50IG9mZnNldCkKLSAgICB7Ci0g
ICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1lUmFuZ2UubV9zdGFydCA9IG9mZnNldCAt
IG1fYmFzZU9mZnNldDsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6
U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcgfHwgbV90eXBlID09
IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFKTsKKyAgICAgICAgTWFya3VwVG9rZW5CYXNlPEhUTUxU
b2tlblR5cGVzLCBIVE1MVG9rZW5UeXBlczo6RG9jdHlwZURhdGE+OjphcHBlbmRUb05hbWUoY2hh
cmFjdGVyKTsKICAgICB9Ci0KLSAgICB2b2lkIGVuZEF0dHJpYnV0ZU5hbWUoaW50IG9mZnNldCkK
LSAgICB7Ci0gICAgICAgIGludCBpbmRleCA9IG9mZnNldCAtIG1fYmFzZU9mZnNldDsKLSAgICAg
ICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX2VuZCA9IGluZGV4OwotICAgICAg
ICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX3N0YXJ0ID0gaW5kZXg7Ci0gICAg
ICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fZW5kID0gaW5kZXg7Ci0gICAg
fQotCi0gICAgdm9pZCBiZWdpbkF0dHJpYnV0ZVZhbHVlKGludCBvZmZzZXQpCi0gICAgewotICAg
ICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX3N0YXJ0ID0gb2Zmc2V0IC0g
bV9iYXNlT2Zmc2V0OwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRl
LT5tX3ZhbHVlUmFuZ2UubV9lbmQgPSAwOwotI2VuZGlmCi0gICAgfQotCi0gICAgdm9pZCBlbmRB
dHRyaWJ1dGVWYWx1ZShpbnQgb2Zmc2V0KQotICAgIHsKLSAgICAgICAgbV9jdXJyZW50QXR0cmli
dXRlLT5tX3ZhbHVlUmFuZ2UubV9lbmQgPSBvZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7Ci0gICAgfQot
Ci0gICAgdm9pZCBhcHBlbmRUb0F0dHJpYnV0ZU5hbWUoVUNoYXIgY2hhcmFjdGVyKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gU3Rh
cnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyk7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
YmUgYWJsZSB0byBhZGQgdGhlIGZvbGxvd2luZyBBU1NFUlQgb25jZSB3ZSBmaXgKLSAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyOTcxCi0gICAgICAg
IC8vICAgQVNTRVJUKG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1lUmFuZ2UubV9zdGFydCk7Ci0g
ICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1lLmFwcGVuZChjaGFyYWN0ZXIpOwotICAg
IH0KLQotICAgIHZvaWQgYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShVQ2hhciBjaGFyYWN0ZXIpCi0g
ICAgewotICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBTdGFydFRhZyB8fCBtX3R5cGUgPT0gRW5kVGFnKTsKLSAgICAgICAgQVNTRVJUKG1fY3VycmVu
dEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3RhcnQpOwotICAgICAgICBtX2N1cnJlbnRBdHRy
aWJ1dGUtPm1fdmFsdWUuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBl
bmRUb0F0dHJpYnV0ZVZhbHVlKHNpemVfdCBpLCBjb25zdCBTdHJpbmcmIHZhbHVlKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKCF2YWx1ZS5pc0VtcHR5KCkpOwotICAgICAgICBBU1NFUlQobV90eXBl
ID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcpOwotICAgICAgICBtX2F0dHJpYnV0ZXNb
aV0ubV92YWx1ZS5hcHBlbmQodmFsdWUuY2hhcmFjdGVycygpLCB2YWx1ZS5sZW5ndGgoKSk7Ci0g
ICAgfQotCi0gICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0KLSAgICBi
b29sIHNlbGZDbG9zaW5nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
U3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyk7Ci0gICAgICAgIHJldHVybiBtX3NlbGZDbG9z
aW5nOwotICAgIH0KLQotICAgIHZvaWQgc2V0U2VsZkNsb3NpbmcoKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9r
ZW46OkVuZFRhZyk7Ci0gICAgICAgIG1fc2VsZkNsb3NpbmcgPSB0cnVlOwotICAgIH0KLQotICAg
IGNvbnN0IEF0dHJpYnV0ZUxpc3QmIGF0dHJpYnV0ZXMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBTdGFydFRhZyB8fCBtX3R5cGUgPT0gRW5kVGFnKTsKLSAgICAgICAg
cmV0dXJuIG1fYXR0cmlidXRlczsKLSAgICB9Ci0KKyAgICAKICAgICBjb25zdCBEYXRhVmVjdG9y
JiBuYW1lKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gU3RhcnRUYWcg
fHwgbV90eXBlID09IEVuZFRhZyB8fCBtX3R5cGUgPT0gRE9DVFlQRSk7Ci0gICAgICAgIHJldHVy
biBtX2RhdGE7Ci0gICAgfQotCi0gICAgdm9pZCBlcmFzZUNoYXJhY3RlcnMoKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBDaGFyYWN0ZXIpOwotICAgICAgICBtX2RhdGEuY2xlYXIo
KTsKLSAgICB9Ci0KLSAgICB2b2lkIGVyYXNlVmFsdWVPZkF0dHJpYnV0ZShzaXplX3QgaSkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRh
Zyk7Ci0gICAgICAgIG1fYXR0cmlidXRlc1tpXS5tX3ZhbHVlLmNsZWFyKCk7Ci0gICAgfQotCi0g
ICAgY29uc3QgRGF0YVZlY3RvciYgY2hhcmFjdGVycygpIGNvbnN0Ci0gICAgewotICAgICAgICBB
U1NFUlQobV90eXBlID09IENoYXJhY3Rlcik7Ci0gICAgICAgIHJldHVybiBtX2RhdGE7Ci0gICAg
fQotCi0gICAgY29uc3QgRGF0YVZlY3RvciYgY29tbWVudCgpIGNvbnN0Ci0gICAgewotICAgICAg
ICBBU1NFUlQobV90eXBlID09IENvbW1lbnQpOwotICAgICAgICByZXR1cm4gbV9kYXRhOwotICAg
IH0KLQotICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlzaCBiZXR3ZWVuIGEgbWlzc2luZyBwdWJsaWMg
aWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBvbmUuCi0gICAgY29uc3QgV1RGOjpWZWN0b3I8VUNoYXI+
JiBwdWJsaWNJZGVudGlmaWVyKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gRE9DVFlQRSk7Ci0gICAgICAgIHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50
aWZpZXI7Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IERpc3Rpbmd1aXNoIGJldHdlZW4gYSBtaXNz
aW5nIHN5c3RlbSBpZGVudGlmZXIgYW5kIGFuIGVtcHR5IG9uZS4KLSAgICBjb25zdCBXVEY6OlZl
Y3RvcjxVQ2hhcj4mIHN5c3RlbUlkZW50aWZpZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBET0NUWVBFKTsKLSAgICAgICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1f
c3lzdGVtSWRlbnRpZmllcjsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFB1YmxpY0lkZW50aWZpZXJU
b0VtcHR5U3RyaW5nKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7
Ci0gICAgICAgIG1fZG9jdHlwZURhdGEtPm1faGFzUHVibGljSWRlbnRpZmllciA9IHRydWU7Ci0g
ICAgICAgIG1fZG9jdHlwZURhdGEtPm1fcHVibGljSWRlbnRpZmllci5jbGVhcigpOwotICAgIH0K
LQotICAgIHZvaWQgc2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBET0NUWVBFKTsKLSAgICAgICAgbV9kb2N0eXBlRGF0YS0+
bV9oYXNTeXN0ZW1JZGVudGlmaWVyID0gdHJ1ZTsKLSAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9z
eXN0ZW1JZGVudGlmaWVyLmNsZWFyKCk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRv
a2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnIHx8
IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CisgICAgICAgIHJldHVybiBNYXJr
dXBUb2tlbkJhc2U8SFRNTFRva2VuVHlwZXMsIEhUTUxUb2tlblR5cGVzOjpEb2N0eXBlRGF0YT46
Om5hbWUoKTsKICAgICB9CiAKICAgICBib29sIGZvcmNlUXVpcmtzKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7CisgICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOwogICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0
YS0+bV9mb3JjZVF1aXJrczsKICAgICB9CiAKICAgICB2b2lkIHNldEZvcmNlUXVpcmtzKCkKICAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7CisgICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOwogICAgICAgICBtX2RvY3R5cGVEYXRh
LT5tX2ZvcmNlUXVpcmtzID0gdHJ1ZTsKICAgICB9CiAKLSAgICB2b2lkIGFwcGVuZFRvUHVibGlj
SWRlbnRpZmllcihVQ2hhciBjaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQoY2hhcmFj
dGVyKTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBET0NUWVBFKTsKLSAgICAgICAgQVNTRVJU
KG1fZG9jdHlwZURhdGEtPm1faGFzUHVibGljSWRlbnRpZmllcik7Ci0gICAgICAgIG1fZG9jdHlw
ZURhdGEtPm1fcHVibGljSWRlbnRpZmllci5hcHBlbmQoY2hhcmFjdGVyKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGFwcGVuZFRvU3lzdGVtSWRlbnRpZmllcihVQ2hhciBjaGFyYWN0ZXIpCi0gICAgewot
ICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBET0NU
WVBFKTsKLSAgICAgICAgQVNTRVJUKG1fZG9jdHlwZURhdGEtPm1faGFzU3lzdGVtSWRlbnRpZmll
cik7Ci0gICAgICAgIG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllci5hcHBlbmQoY2hh
cmFjdGVyKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRklYTUU6IEknbSBub3Qgc3VyZSB3
aGF0IHRoZSBmaW5hbCByZWxhdGlvbnNoaXAgYmV0d2VlbiBIVE1MVG9rZW4gYW5kCi0gICAgLy8g
QXRvbWljSFRNTFRva2VuIHdpbGwgYmUuICBJJ20gbWFya2luZyB0aGlzIGEgZnJpZW5kIGZvciBu
b3csIGJ1dCB3ZSdsbAotICAgIC8vIHdhbnQgdG8gZW5kIHVwIHdpdGggYSBjbGVhbmVyIGludGVy
ZmFjZSBiZXR3ZWVuIHRoZSB0d28gY2xhc3Nlcy4KLSAgICBmcmllbmQgY2xhc3MgQXRvbWljSFRN
TFRva2VuOwotCi0gICAgY2xhc3MgRG9jdHlwZURhdGEgewotICAgICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShEb2N0eXBlRGF0YSk7Ci0gICAgcHVibGljOgotICAgICAgICBEb2N0eXBlRGF0YSgp
Ci0gICAgICAgICAgICA6IG1faGFzUHVibGljSWRlbnRpZmllcihmYWxzZSkKLSAgICAgICAgICAg
ICwgbV9oYXNTeXN0ZW1JZGVudGlmaWVyKGZhbHNlKQotICAgICAgICAgICAgLCBtX2ZvcmNlUXVp
cmtzKGZhbHNlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG1faGFzUHVi
bGljSWRlbnRpZmllcjsKLSAgICAgICAgYm9vbCBtX2hhc1N5c3RlbUlkZW50aWZpZXI7Ci0gICAg
ICAgIGJvb2wgbV9mb3JjZVF1aXJrczsKLSAgICAgICAgV1RGOjpWZWN0b3I8VUNoYXI+IG1fcHVi
bGljSWRlbnRpZmllcjsKLSAgICAgICAgV1RGOjpWZWN0b3I8VUNoYXI+IG1fc3lzdGVtSWRlbnRp
ZmllcjsKLSAgICB9OwotCi0gICAgVHlwZSBtX3R5cGU7Ci0gICAgUmFuZ2UgbV9yYW5nZTsgLy8g
QWx3YXlzIHN0YXJ0cyBhdCB6ZXJvLgotICAgIGludCBtX2Jhc2VPZmZzZXQ7Ci0KLSAgICAvLyAi
bmFtZSIgZm9yIERPQ1RZUEUsIFN0YXJ0VGFnLCBhbmQgRW5kVGFnCi0gICAgLy8gImNoYXJhY3Rl
cnMiIGZvciBDaGFyYWN0ZXIKLSAgICAvLyAiZGF0YSIgZm9yIENvbW1lbnQKLSAgICBEYXRhVmVj
dG9yIG1fZGF0YTsKLQotICAgIC8vIEZvciBET0NUWVBFCi0gICAgT3duUHRyPERvY3R5cGVEYXRh
PiBtX2RvY3R5cGVEYXRhOwotCi0gICAgLy8gRm9yIFN0YXJ0VGFnIGFuZCBFbmRUYWcKLSAgICBi
b29sIG1fc2VsZkNsb3Npbmc7Ci0gICAgQXR0cmlidXRlTGlzdCBtX2F0dHJpYnV0ZXM7Ci0KLSAg
ICAvLyBBIHBvaW50ZXIgaW50byBtX2F0dHJpYnV0ZXMgdXNlZCBkdXJpbmcgbGV4aW5nLgotICAg
IEF0dHJpYnV0ZSogbV9jdXJyZW50QXR0cmlidXRlOwogfTsKIAogLy8gRklYTUU6IFRoaXMgY2xh
c3Mgc2hvdWxkIGV2ZW50dWFsbHkgYmUgbmFtZWQgSFRNTFRva2VuIG9uY2Ugd2UgbW92ZSB0aGUK
QEAgLTM4OSwzMiArOTIsMzQgQEAgcHVibGljOgogICAgICAgICA6IG1fdHlwZSh0b2tlbi50eXBl
KCkpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgICAgICBjYXNlIEhUTUxU
b2tlbjo6VW5pbml0aWFsaXplZDoKKyAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6VW5pbml0
aWFsaXplZDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuOjpET0NUWVBFOgorICAgICAgICBjYXNlIEhU
TUxUb2tlblR5cGVzOjpET0NUWVBFOgogICAgICAgICAgICAgbV9uYW1lID0gQXRvbWljU3RyaW5n
KHRva2VuLm5hbWUoKS5kYXRhKCksIHRva2VuLm5hbWUoKS5zaXplKCkpOwogICAgICAgICAgICAg
bV9kb2N0eXBlRGF0YSA9IHRva2VuLm1fZG9jdHlwZURhdGEucmVsZWFzZSgpOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuOjpFbmRPZkZpbGU6CisgICAgICAgIGNh
c2UgSFRNTFRva2VuVHlwZXM6OkVuZE9mRmlsZToKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEhUTUxUb2tlbjo6U3RhcnRUYWc6Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuOjpFbmRU
YWc6IHsKKyAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWc6CisgICAgICAgIGNh
c2UgSFRNTFRva2VuVHlwZXM6OkVuZFRhZzogewogICAgICAgICAgICAgbV9zZWxmQ2xvc2luZyA9
IHRva2VuLnNlbGZDbG9zaW5nKCk7CiAgICAgICAgICAgICBtX25hbWUgPSBBdG9taWNTdHJpbmco
dG9rZW4ubmFtZSgpLmRhdGEoKSwgdG9rZW4ubmFtZSgpLnNpemUoKSk7CiAgICAgICAgICAgICBp
bml0aWFsaXplQXR0cmlidXRlcyh0b2tlbi5hdHRyaWJ1dGVzKCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBIVE1MVG9rZW46OkNvbW1lbnQ6CisgICAgICAg
IGNhc2UgSFRNTFRva2VuVHlwZXM6OkNvbW1lbnQ6CiAgICAgICAgICAgICBtX2RhdGEgPSBTdHJp
bmcodG9rZW4uY29tbWVudCgpLmRhdGEoKSwgdG9rZW4uY29tbWVudCgpLnNpemUoKSk7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjoKKyAgICAg
ICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOgogICAgICAgICAgICAgbV9leHRlcm5h
bENoYXJhY3RlcnMgPSAmdG9rZW4uY2hhcmFjdGVycygpOwogICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIAot
ICAgIEF0b21pY0hUTUxUb2tlbihIVE1MVG9rZW46OlR5cGUgdHlwZSwgQXRvbWljU3RyaW5nIG5h
bWUsIFBhc3NSZWZQdHI8TmFtZWROb2RlTWFwPiBhdHRyaWJ1dGVzID0gMCkKKyAgICBBdG9taWNI
VE1MVG9rZW4oSFRNTFRva2VuVHlwZXM6OlR5cGUgdHlwZSwgQXRvbWljU3RyaW5nIG5hbWUsIFBh
c3NSZWZQdHI8TmFtZWROb2RlTWFwPiBhdHRyaWJ1dGVzID0gMCkKICAgICAgICAgOiBtX3R5cGUo
dHlwZSkKICAgICAgICAgLCBtX25hbWUobmFtZSkKICAgICAgICAgLCBtX2F0dHJpYnV0ZXMoYXR0
cmlidXRlcykKQEAgLTQyMiw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCh1c2Vz
TmFtZSgpKTsKICAgICB9CiAKLSAgICBIVE1MVG9rZW46OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQorICAgIEhUTUxUb2tlblR5cGVzOjpUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0CiAg
ICAgewpAQCAtNDM4LDcgKzE0Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2VsZkNsb3Npbmco
KSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OlN0YXJ0
VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7CisgICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBl
czo6RW5kVGFnKTsKICAgICAgICAgcmV0dXJuIG1fc2VsZkNsb3Npbmc7CiAgICAgfQogCkBAIC00
NjQsNDkgKzE2OSw0OSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBIVE1MVG9rZW46OkRhdGFWZWN0
b3ImIGNoYXJhY3RlcnMoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBI
VE1MVG9rZW46OkNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2Vu
VHlwZXM6OkNoYXJhY3Rlcik7CiAgICAgICAgIHJldHVybiAqbV9leHRlcm5hbENoYXJhY3RlcnM7
CiAgICAgfQogCiAgICAgY29uc3QgU3RyaW5nJiBjb21tZW50KCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpDb21tZW50KTsKKyAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudCk7CiAgICAgICAgIHJldHVybiBtX2Rh
dGE7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IERpc3Rpbmd1aXNoIGJldHdlZW4gYSBtaXNzaW5n
IHB1YmxpYyBpZGVudGlmZXIgYW5kIGFuIGVtcHR5IG9uZS4KICAgICBXVEY6OlZlY3RvcjxVQ2hh
cj4mIHB1YmxpY0lkZW50aWZpZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBIVE1MVG9rZW46OkRPQ1RZUEUpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxU
b2tlblR5cGVzOjpET0NUWVBFKTsKICAgICAgICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1fcHVi
bGljSWRlbnRpZmllcjsKICAgICB9CiAKICAgICAvLyBGSVhNRTogRGlzdGluZ3Vpc2ggYmV0d2Vl
biBhIG1pc3Npbmcgc3lzdGVtIGlkZW50aWZlciBhbmQgYW4gZW1wdHkgb25lLgogICAgIFdURjo6
VmVjdG9yPFVDaGFyPiYgc3lzdGVtSWRlbnRpZmllcigpIGNvbnN0CiAgICAgewotICAgICAgICBB
U1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6RE9DVFlQRSk7CisgICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOwogICAgICAgICByZXR1cm4gbV9kb2N0eXBl
RGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyOwogICAgIH0KIAogICAgIGJvb2wgZm9yY2VRdWlya3Mo
KSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OkRPQ1RZ
UEUpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFKTsK
ICAgICAgICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1fZm9yY2VRdWlya3M7CiAgICAgfQogCiBw
cml2YXRlOgotICAgIEhUTUxUb2tlbjo6VHlwZSBtX3R5cGU7CisgICAgSFRNTFRva2VuVHlwZXM6
OlR5cGUgbV90eXBlOwogCiAgICAgdm9pZCBpbml0aWFsaXplQXR0cmlidXRlcyhjb25zdCBIVE1M
VG9rZW46OkF0dHJpYnV0ZUxpc3QmIGF0dHJpYnV0ZXMpOwogICAgIAogICAgIGJvb2wgdXNlc05h
bWUoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdHlwZSA9PSBIVE1MVG9rZW46OlN0
YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW46OkVuZFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRv
a2VuOjpET0NUWVBFOworICAgICAgICByZXR1cm4gbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpT
dGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyB8fCBtX3R5cGUgPT0g
SFRNTFRva2VuVHlwZXM6OkRPQ1RZUEU7CiAgICAgfQogCiAgICAgYm9vbCB1c2VzQXR0cmlidXRl
cygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV90eXBlID09IEhUTUxUb2tlbjo6U3Rh
cnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlbjo6RW5kVGFnOworICAgICAgICByZXR1cm4gbV90
eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlw
ZXM6OkVuZFRhZzsKICAgICB9CiAKICAgICAvLyAibmFtZSIgZm9yIERPQ1RZUEUsIFN0YXJ0VGFn
LCBhbmQgRW5kVGFnCkBAIC01MjYsNyArMjMxLDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBIVE1M
VG9rZW46OkRhdGFWZWN0b3IqIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzOwogCiAgICAgLy8gRm9yIERP
Q1RZUEUKLSAgICBPd25QdHI8SFRNTFRva2VuOjpEb2N0eXBlRGF0YT4gbV9kb2N0eXBlRGF0YTsK
KyAgICBPd25QdHI8SFRNTFRva2VuVHlwZXM6OkRvY3R5cGVEYXRhPiBtX2RvY3R5cGVEYXRhOwog
CiAgICAgLy8gRm9yIFN0YXJ0VGFnIGFuZCBFbmRUYWcKICAgICBib29sIG1fc2VsZkNsb3Npbmc7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuY3BwCmluZGV4IDMw
NWZjYTI2MDM5ZWRiNTA3ODRiYjUzNzRlNzczYmQ4Y2E4YTY5ODUuLjZkNTdlZWFlMWQ4OTBkZGQz
MWYzZmMzNzNhNGY1MDg3OTEyNmNiNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUb2tlbml6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUb2tlbml6ZXIuY3BwCkBAIC0xODcsOCArMTg3LDggQEAgaW5saW5lIGJvb2wgSFRNTFRv
a2VuaXplcjo6cHJvY2Vzc0VudGl0eShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKIAogaW5saW5l
IHZvaWQgSFRNTFRva2VuaXplcjo6c2F2ZUVuZFRhZ05hbWVJZk5lZWRlZCgpCiB7Ci0gICAgQVNT
RVJUKG1fdG9rZW4tPnR5cGUoKSAhPSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQpOwotICAgIGlm
IChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZykKKyAgICBBU1NFUlQobV90
b2tlbi0+dHlwZSgpICE9IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsKKyAgICBpZiAo
bV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZykKICAgICAgICAgbV9h
cHByb3ByaWF0ZUVuZFRhZ05hbWUgPSBtX3Rva2VuLT5uYW1lKCk7CiB9CiAKQEAgLTIyNyw5ICsy
MjcsOSBAQCBib29sIEhUTUxUb2tlbml6ZXI6OmVtaXRFbmRPZkZpbGUoU2VnbWVudGVkU3RyaW5n
JiBzb3VyY2UpCiAKIGJvb2wgSFRNTFRva2VuaXplcjo6Zmx1c2hCdWZmZXJlZEVuZFRhZyhTZWdt
ZW50ZWRTdHJpbmcmIHNvdXJjZSkKIHsKLSAgICBBU1NFUlQobV90b2tlbi0+dHlwZSgpID09IEhU
TUxUb2tlbjo6Q2hhcmFjdGVyIHx8IG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OlVuaW5p
dGlhbGl6ZWQpOworICAgIEFTU0VSVChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6
OkNoYXJhY3RlciB8fCBtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlh
bGl6ZWQpOwogICAgIHNvdXJjZS5hZHZhbmNlKG1fbGluZU51bWJlcik7Ci0gICAgaWYgKG1fdG9r
ZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3RlcikKKyAgICBpZiAobV90b2tlbi0+dHlw
ZSgpID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIG1fdG9rZW4tPmJlZ2luRW5kVGFnKG1fYnVmZmVyZWRFbmRUYWdOYW1lKTsKICAgICBtX2J1
ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigpOwpAQCAtMjU5LDcgKzI1OSw3IEBAIGJvb2wgSFRNTFRv
a2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRv
a2VuKQogewogICAgIC8vIElmIHdlIGhhdmUgYSB0b2tlbiBpbiBwcm9ncmVzcywgdGhlbiB3ZSdy
ZSBzdXBwb3NlZCB0byBiZSBjYWxsZWQgYmFjawogICAgIC8vIHdpdGggdGhlIHNhbWUgdG9rZW4g
c28gd2UgY2FuIGZpbmlzaCBpdC4KLSAgICBBU1NFUlQoIW1fdG9rZW4gfHwgbV90b2tlbiA9PSAm
dG9rZW4gfHwgdG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZCk7CisgICAg
QVNTRVJUKCFtX3Rva2VuIHx8IG1fdG9rZW4gPT0gJnRva2VuIHx8IHRva2VuLnR5cGUoKSA9PSBI
VE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7CiAgICAgbV90b2tlbiA9ICZ0b2tlbjsKIAog
ICAgIGlmICghbV9idWZmZXJlZEVuZFRhZ05hbWUuaXNFbXB0eSgpICYmICFpc0VuZFRhZ0J1ZmZl
cmluZ1N0YXRlKG1fc3RhdGUpKSB7CkBAIC0zMDcsNyArMzA3LDcgQEAgYm9vbCBIVE1MVG9rZW5p
emVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4p
CiAgICAgICAgIGlmIChjYyA9PSAnJicpCiAgICAgICAgICAgICBBRFZBTkNFX1RPKENoYXJhY3Rl
clJlZmVyZW5jZUluRGF0YVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJzwnKSB7Ci0g
ICAgICAgICAgICBpZiAobV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKSB7
CisgICAgICAgICAgICBpZiAobV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDaGFy
YWN0ZXIpIHsKICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIGEgYnVuY2ggb2YgY2hhcmFjdGVy
IHRva2VucyBxdWV1ZWQgdXAgdGhhdCB3ZQogICAgICAgICAgICAgICAgIC8vIGFyZSBlbWl0dGlu
ZyBsYXppbHkgaGVyZS4KICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE2OTIsNyAr
MTY5Miw3IEBAIGlubGluZSB2b2lkIEhUTUxUb2tlbml6ZXI6OnBhcnNlRXJyb3IoKQogCiBpbmxp
bmUgYm9vbCBIVE1MVG9rZW5pemVyOjpoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpCiB7Ci0g
ICAgcmV0dXJuIG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3RlcjsKKyAgICBy
ZXR1cm4gbV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXI7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCmlu
ZGV4IDgyMzAxNDFiMjE2MTJiMjIzZTI1MzA1ZDE3YzkzZGVmMjRjZmQ0NjguLmI3ZWJjZTc5NTQy
ZTVjZTQ1NWFlNzJkNTE5NmU0NDQ0YjBkNjFhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtNDQ2LDEzICs0NDYsMTMgQEAgdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4oSFRNTFRva2VuJiByYXdUb2tl
bikKICAgICAvLyBGSVhNRTogVG9wIGNsZWFyaW5nIHRoZSByYXdUb2tlbiBvbmNlIHdlIHN0YXJ0
IHJ1bm5pbmcgdGhlIHBhcnNlciBvZmYKICAgICAvLyB0aGUgbWFpbiB0aHJlYWQgb3Igb25jZSB3
ZSBzdG9wIGFsbG93aW5nIHN5bmNocm9ub3VzIEphdmFTY3JpcHQKICAgICAvLyBleGVjdXRpb24g
ZnJvbSBwYXJzZU1hcHBlZEF0dHJpYnV0ZS4KLSAgICBpZiAocmF3VG9rZW4udHlwZSgpICE9IEhU
TUxUb2tlbjo6Q2hhcmFjdGVyKQorICAgIGlmIChyYXdUb2tlbi50eXBlKCkgIT0gSFRNTFRva2Vu
VHlwZXM6OkNoYXJhY3RlcikKICAgICAgICAgcmF3VG9rZW4uY2xlYXIoKTsKIAogICAgIGNvbnN0
cnVjdFRyZWVGcm9tQXRvbWljVG9rZW4odG9rZW4pOwogCiAgICAgaWYgKCFyYXdUb2tlbi5pc1Vu
aW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBBU1NFUlQocmF3VG9rZW4udHlwZSgpID09IEhUTUxU
b2tlbjo6Q2hhcmFjdGVyKTsKKyAgICAgICAgQVNTRVJUKHJhd1Rva2VuLnR5cGUoKSA9PSBIVE1M
VG9rZW5UeXBlczo6Q2hhcmFjdGVyKTsKICAgICAgICAgcmF3VG9rZW4uY2xlYXIoKTsKICAgICB9
CiB9CkBAIC00NzEsMjUgKzQ3MSwyNSBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6Y29uc3RydWN0
VHJlZUZyb21BdG9taWNUb2tlbihBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogdm9pZCBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbihBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewogICAgIHN3
aXRjaCAodG9rZW4udHlwZSgpKSB7Ci0gICAgY2FzZSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQ6
CisgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZDoKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuOjpET0NU
WVBFOgorICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEU6CiAgICAgICAgIHByb2Nlc3NE
b2N0eXBlVG9rZW4odG9rZW4pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhUTUxUb2tlbjo6
U3RhcnRUYWc6CisgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWc6CiAgICAgICAgIHBy
b2Nlc3NTdGFydFRhZyh0b2tlbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2Vu
OjpFbmRUYWc6CisgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnOgogICAgICAgICBwcm9j
ZXNzRW5kVGFnKHRva2VuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW46OkNv
bW1lbnQ6CisgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudDoKICAgICAgICAgcHJvY2Vz
c0NvbW1lbnQodG9rZW4pOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBIVE1MVG9rZW46OkNo
YXJhY3RlcjoKKyAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXI6CiAgICAgICAgIHBy
b2Nlc3NDaGFyYWN0ZXIodG9rZW4pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhUTUxUb2tl
bjo6RW5kT2ZGaWxlOgorICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkVuZE9mRmlsZToKICAgICAg
ICAgcHJvY2Vzc0VuZE9mRmlsZSh0b2tlbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTQ5
Nyw3ICs0OTcsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1Rva2VuKEF0b21pY0hU
TUxUb2tlbiYgdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRG9jdHlwZVRv
a2VuKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9
PSBIVE1MVG9rZW46OkRPQ1RZUEUpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRv
a2VuVHlwZXM6OkRPQ1RZUEUpOwogICAgIGlmIChtX2luc2VydGlvbk1vZGUgPT0gSW5pdGlhbE1v
ZGUpIHsKICAgICAgICAgbV90cmVlLmluc2VydERvY3R5cGUodG9rZW4pOwogICAgICAgICBzZXRJ
bnNlcnRpb25Nb2RlKEJlZm9yZUhUTUxNb2RlKTsKQEAgLTUxNCwxNCArNTE0LDE0IEBAIHZvaWQg
SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRG9jdHlwZVRva2VuKEF0b21pY0hUTUxUb2tlbiYgdG9r
ZW4pCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VTdGFydFRhZyhjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBQYXNzUmVmUHRyPE5hbWVkTm9kZU1hcD4gYXR0cmlidXRlcykK
IHsKICAgICAvLyBGSVhNRTogV2UnbGwgbmVlZCBhIGZhbmNpZXIgY29udmVyc2lvbiB0aGFuIGp1
c3QgImxvY2FsTmFtZSIgZm9yIFNWRy9NYXRoTUwgdGFncy4KLSAgICBBdG9taWNIVE1MVG9rZW4g
ZmFrZVRva2VuKEhUTUxUb2tlbjo6U3RhcnRUYWcsIHRhZ05hbWUubG9jYWxOYW1lKCksIGF0dHJp
YnV0ZXMpOworICAgIEF0b21pY0hUTUxUb2tlbiBmYWtlVG9rZW4oSFRNTFRva2VuVHlwZXM6OlN0
YXJ0VGFnLCB0YWdOYW1lLmxvY2FsTmFtZSgpLCBhdHRyaWJ1dGVzKTsKICAgICBwcm9jZXNzU3Rh
cnRUYWcoZmFrZVRva2VuKTsKIH0KIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtl
RW5kVGFnKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpCiB7CiAgICAgLy8gRklYTUU6IFdl
J2xsIG5lZWQgYSBmYW5jaWVyIGNvbnZlcnNpb24gdGhhbiBqdXN0ICJsb2NhbE5hbWUiIGZvciBT
VkcvTWF0aE1MIHRhZ3MuCi0gICAgQXRvbWljSFRNTFRva2VuIGZha2VUb2tlbihIVE1MVG9rZW46
OkVuZFRhZywgdGFnTmFtZS5sb2NhbE5hbWUoKSk7CisgICAgQXRvbWljSFRNTFRva2VuIGZha2VU
b2tlbihIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCB0YWdOYW1lLmxvY2FsTmFtZSgpKTsKICAgICBw
cm9jZXNzRW5kVGFnKGZha2VUb2tlbik7CiB9CiAKQEAgLTUzNiw3ICs1MzYsNyBAQCB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VQRW5kVGFnSWZQSW5CdXR0b25TY29wZSgpCiB7CiAg
ICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluQnV0dG9uU2NvcGUocFRhZy5sb2NhbE5h
bWUoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBBdG9taWNIVE1MVG9rZW4gZW5kUChIVE1MVG9r
ZW46OkVuZFRhZywgcFRhZy5sb2NhbE5hbWUoKSk7CisgICAgQXRvbWljSFRNTFRva2VuIGVuZFAo
SFRNTFRva2VuVHlwZXM6OkVuZFRhZywgcFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgcHJvY2Vzc0Vu
ZFRhZyhlbmRQKTsKIH0KIApAQCAtNTU4LDcgKzU1OCw3IEBAIFBhc3NSZWZQdHI8TmFtZWROb2Rl
TWFwPiBIVE1MVHJlZUJ1aWxkZXI6OmF0dHJpYnV0ZXNGb3JJc2luZGV4SW5wdXQoQXRvbWljSFRN
TFRvCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzSXNpbmRleFN0YXJ0VGFnRm9ySW5C
b2R5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9
PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxU
b2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKHRva2VuLm5hbWUoKSA9PSBpc2luZGV4
VGFnKTsKICAgICBwYXJzZUVycm9yKHRva2VuKTsKICAgICBpZiAobV90cmVlLmZvcm0oKSkKQEAg
LTcyNiw3ICs3MjYsNyBAQCB2b2lkIGFkanVzdEZvcmVpZ25BdHRyaWJ1dGVzKEF0b21pY0hUTUxU
b2tlbiYgdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJ
bkJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgp
ID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRN
TFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBpZiAodG9rZW4ubmFtZSgpID09IGh0bWxUYWcp
IHsKICAgICAgICAgbV90cmVlLmluc2VydEhUTUxIdG1sU3RhcnRUYWdJbkJvZHkodG9rZW4pOwog
ICAgICAgICByZXR1cm47CkBAIC05ODEsNyArOTgxLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NTdGFydFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgIH0K
ICAgICBpZiAodG9rZW4ubmFtZSgpID09IG9wdGdyb3VwVGFnIHx8IHRva2VuLm5hbWUoKSA9PSBv
cHRpb25UYWcpIHsKICAgICAgICAgaWYgKG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5TY29wZShv
cHRpb25UYWcubG9jYWxOYW1lKCkpKSB7Ci0gICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5k
T3B0aW9uKEhUTUxUb2tlbjo6RW5kVGFnLCBvcHRpb25UYWcubG9jYWxOYW1lKCkpOworICAgICAg
ICAgICAgQXRvbWljSFRNTFRva2VuIGVuZE9wdGlvbihIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCBv
cHRpb25UYWcubG9jYWxOYW1lKCkpOwogICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZyhlbmRPcHRp
b24pOwogICAgICAgICB9CiAgICAgICAgIG1fdHJlZS5yZWNvbnN0cnVjdFRoZUFjdGl2ZUZvcm1h
dHRpbmdFbGVtZW50cygpOwpAQCAtMTA1OCw3ICsxMDU4LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OmNsb3NlVGhlQ2VsbCgpCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRU
YWdGb3JJblRhYmxlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgp
ID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSBj
YXB0aW9uVGFnKSB7CiAgICAgICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cG9wVW50aWxUYWJs
ZVNjb3BlTWFya2VyKCk7CiAgICAgICAgIG1fdHJlZS5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMo
KS0+YXBwZW5kTWFya2VyKCk7CkBAIC0xMTMwLDcgKzExMzAsNyBAQCBuYW1lc3BhY2UgewogCiBi
b29sIHNob3VsZFByb2Nlc3NGb3JlaWduQ29udGVudFVzaW5nSW5Cb2R5SW5zZXJ0aW9uTW9kZShB
dG9taWNIVE1MVG9rZW4mIHRva2VuLCBDb250YWluZXJOb2RlKiBjdXJyZW50RWxlbWVudCkKIHsK
LSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFT
U0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBpZiAo
Y3VycmVudEVsZW1lbnQtPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1pVGFnKQogICAgICAgICB8
fCBjdXJyZW50RWxlbWVudC0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bW9UYWcpCiAgICAgICAg
IHx8IGN1cnJlbnRFbGVtZW50LT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptblRhZykKQEAgLTEx
NTIsNyArMTE1Miw3IEBAIGJvb2wgc2hvdWxkUHJvY2Vzc0ZvcmVpZ25Db250ZW50VXNpbmdJbkJv
ZHlJbnNlcnRpb25Nb2RlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4sCiAKIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBB
U1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0
b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBzd2l0Y2ggKGlu
c2VydGlvbk1vZGUoKSkgewogICAgIGNhc2UgSW5pdGlhbE1vZGU6CiAgICAgICAgIEFTU0VSVChp
bnNlcnRpb25Nb2RlKCkgPT0gSW5pdGlhbE1vZGUpOwpAQCAtMTQwOSw3ICsxNDA5LDcgQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2Vu
KQogICAgICAgICAgICAgfHwgdG9rZW4ubmFtZSgpID09IHRyVGFnCiAgICAgICAgICAgICB8fCBp
c1RhYmxlQ2VsbENvbnRleHRUYWcodG9rZW4ubmFtZSgpKSkgewogICAgICAgICAgICAgcGFyc2VF
cnJvcih0b2tlbik7Ci0gICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kU2VsZWN0KEhUTUxU
b2tlbjo6RW5kVGFnLCBzZWxlY3RUYWcubG9jYWxOYW1lKCkpOworICAgICAgICAgICAgQXRvbWlj
SFRNTFRva2VuIGVuZFNlbGVjdChIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCBzZWxlY3RUYWcubG9j
YWxOYW1lKCkpOwogICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZyhlbmRTZWxlY3QpOwogICAgICAg
ICAgICAgcmVwcm9jZXNzU3RhcnRUYWcodG9rZW4pOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MTQyMyw3ICsxNDIzLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhB
dG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICB9CiAgICAgICAgIGlmICh0b2tlbi5uYW1l
KCkgPT0gb3B0aW9uVGFnKSB7CiAgICAgICAgICAgICBpZiAobV90cmVlLmN1cnJlbnROb2RlKCkt
Pmhhc1RhZ05hbWUob3B0aW9uVGFnKSkgewotICAgICAgICAgICAgICAgIEF0b21pY0hUTUxUb2tl
biBlbmRPcHRpb24oSFRNTFRva2VuOjpFbmRUYWcsIG9wdGlvblRhZy5sb2NhbE5hbWUoKSk7Cisg
ICAgICAgICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZE9wdGlvbihIVE1MVG9rZW5UeXBlczo6
RW5kVGFnLCBvcHRpb25UYWcubG9jYWxOYW1lKCkpOwogICAgICAgICAgICAgICAgIHByb2Nlc3NF
bmRUYWcoZW5kT3B0aW9uKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fdHJlZS5pbnNl
cnRIVE1MRWxlbWVudCh0b2tlbik7CkBAIC0xNDMxLDExICsxNDMxLDExIEBAIHZvaWQgSFRNTFRy
ZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAg
ICAgfQogICAgICAgICBpZiAodG9rZW4ubmFtZSgpID09IG9wdGdyb3VwVGFnKSB7CiAgICAgICAg
ICAgICBpZiAobV90cmVlLmN1cnJlbnROb2RlKCktPmhhc1RhZ05hbWUob3B0aW9uVGFnKSkgewot
ICAgICAgICAgICAgICAgIEF0b21pY0hUTUxUb2tlbiBlbmRPcHRpb24oSFRNTFRva2VuOjpFbmRU
YWcsIG9wdGlvblRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgICAgICAgICAgQXRvbWljSFRNTFRv
a2VuIGVuZE9wdGlvbihIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCBvcHRpb25UYWcubG9jYWxOYW1l
KCkpOwogICAgICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcoZW5kT3B0aW9uKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChtX3RyZWUuY3VycmVudE5vZGUoKS0+aGFzVGFnTmFtZShv
cHRncm91cFRhZykpIHsKLSAgICAgICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kT3B0Z3Jv
dXAoSFRNTFRva2VuOjpFbmRUYWcsIG9wdGdyb3VwVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAg
ICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kT3B0Z3JvdXAoSFRNTFRva2VuVHlwZXM6OkVuZFRh
Zywgb3B0Z3JvdXBUYWcubG9jYWxOYW1lKCkpOwogICAgICAgICAgICAgICAgIHByb2Nlc3NFbmRU
YWcoZW5kT3B0Z3JvdXApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV90cmVlLmluc2Vy
dEhUTUxFbGVtZW50KHRva2VuKTsKQEAgLTE0NDMsNyArMTQ0Myw3IEBAIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAg
fQogICAgICAgICBpZiAodG9rZW4ubmFtZSgpID09IHNlbGVjdFRhZykgewogICAgICAgICAgICAg
cGFyc2VFcnJvcih0b2tlbik7Ci0gICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kU2VsZWN0
KEhUTUxUb2tlbjo6RW5kVGFnLCBzZWxlY3RUYWcubG9jYWxOYW1lKCkpOworICAgICAgICAgICAg
QXRvbWljSFRNTFRva2VuIGVuZFNlbGVjdChIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCBzZWxlY3RU
YWcubG9jYWxOYW1lKCkpOwogICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZyhlbmRTZWxlY3QpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xNDU1LDcgKzE0NTUsNyBAQCB2b2lk
IEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4p
CiAgICAgICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEF0b21pY0hUTUxUb2tl
biBlbmRTZWxlY3QoSFRNTFRva2VuOjpFbmRUYWcsIHNlbGVjdFRhZy5sb2NhbE5hbWUoKSk7Cisg
ICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kU2VsZWN0KEhUTUxUb2tlblR5cGVzOjpFbmRU
YWcsIHNlbGVjdFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKGVu
ZFNlbGVjdCk7CiAgICAgICAgICAgICByZXByb2Nlc3NTdGFydFRhZyh0b2tlbik7CiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xNTQwLDcgKzE1NDAsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAKIGJvb2wgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzQm9keUVuZFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4mIHRva2Vu
KQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpOworICAg
IEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CiAgICAgQVNT
RVJUKHRva2VuLm5hbWUoKSA9PSBib2R5VGFnKTsKICAgICBpZiAoIW1fdHJlZS5vcGVuRWxlbWVu
dHMoKS0+aW5TY29wZShib2R5VGFnLmxvY2FsTmFtZSgpKSkgewogICAgICAgICBwYXJzZUVycm9y
KHRva2VuKTsKQEAgLTE1NTMsNyArMTU1Myw3IEBAIGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9j
ZXNzQm9keUVuZFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogCiB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0FueU90aGVyRW5kVGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxU
b2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkVu
ZFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFn
KTsKICAgICBIVE1MRWxlbWVudFN0YWNrOjpFbGVtZW50UmVjb3JkKiByZWNvcmQgPSBtX3RyZWUu
b3BlbkVsZW1lbnRzKCktPnRvcFJlY29yZCgpOwogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIENv
bnRhaW5lck5vZGUqIG5vZGUgPSByZWNvcmQtPm5vZGUoKTsKQEAgLTE3NzAsNyArMTc3MCw3IEBA
IHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpyZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5KCkK
IAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblRhYmxlQm9keShBdG9t
aWNIVE1MVG9rZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRv
a2VuOjpFbmRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6
OkVuZFRhZyk7CiAgICAgaWYgKGlzVGFibGVCb2R5Q29udGV4dFRhZyh0b2tlbi5uYW1lKCkpKSB7
CiAgICAgICAgIGlmICghbV90cmVlLm9wZW5FbGVtZW50cygpLT5pblRhYmxlU2NvcGUodG9rZW4u
bmFtZSgpKSkgewogICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CkBAIC0xODA3LDcgKzE4
MDcsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluVGFibGVCb2R5
KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
RW5kVGFnRm9ySW5Sb3coQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9r
ZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgp
ID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOwogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gdHJU
YWcpIHsKICAgICAgICAgcHJvY2Vzc1RyRW5kVGFnRm9ySW5Sb3coKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMTg0Myw3ICsxODQzLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRU
YWdGb3JJblJvdyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0VuZFRhZ0ZvckluQ2VsbChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewotICAg
IEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpOworICAgIEFTU0VSVCh0
b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CiAgICAgaWYgKGlzVGFibGVD
ZWxsQ29udGV4dFRhZyh0b2tlbi5uYW1lKCkpKSB7CiAgICAgICAgIGlmICghbV90cmVlLm9wZW5F
bGVtZW50cygpLT5pblRhYmxlU2NvcGUodG9rZW4ubmFtZSgpKSkgewogICAgICAgICAgICAgcGFy
c2VFcnJvcih0b2tlbik7CkBAIC0xODgwLDEzICsxODgwLDEzIEBAIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5DZWxsKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAKIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tl
biYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRh
Zyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsK
ICAgICBpZiAodG9rZW4ubmFtZSgpID09IGJvZHlUYWcpIHsKICAgICAgICAgcHJvY2Vzc0JvZHlF
bmRUYWdGb3JJbkJvZHkodG9rZW4pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh0
b2tlbi5uYW1lKCkgPT0gaHRtbFRhZykgewotICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kQm9k
eShIVE1MVG9rZW46OkVuZFRhZywgYm9keVRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIEF0b21p
Y0hUTUxUb2tlbiBlbmRCb2R5KEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIGJvZHlUYWcubG9jYWxO
YW1lKCkpOwogICAgICAgICBpZiAocHJvY2Vzc0JvZHlFbmRUYWdGb3JJbkJvZHkoZW5kQm9keSkp
CiAgICAgICAgICAgICByZXByb2Nlc3NFbmRUYWcodG9rZW4pOwogICAgICAgICByZXR1cm47CkBA
IC0yMDUzLDcgKzIwNTMsNyBAQCBib29sIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1RhYmxlRW5k
VGFnRm9ySW5UYWJsZSgpCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9y
SW5UYWJsZShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBl
KCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRN
TFRva2VuVHlwZXM6OkVuZFRhZyk7CiAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSB0YWJsZVRhZykg
ewogICAgICAgICBwcm9jZXNzVGFibGVFbmRUYWdGb3JJblRhYmxlKCk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTIwNzQsNyArMjA3NCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5k
VGFnRm9ySW5UYWJsZShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewotICAgIEFTU0VS
VCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50
eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CiAgICAgc3dpdGNoIChpbnNlcnRpb25N
b2RlKCkpIHsKICAgICBjYXNlIEluaXRpYWxNb2RlOgogICAgICAgICBBU1NFUlQoaW5zZXJ0aW9u
TW9kZSgpID09IEluaXRpYWxNb2RlKTsKQEAgLTIyNzAsNyArMjI3MCw3IEBAIHZvaWQgSFRNTFRy
ZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAg
ICAgICB8fCBpc1RhYmxlQ2VsbENvbnRleHRUYWcodG9rZW4ubmFtZSgpKSkgewogICAgICAgICAg
ICAgcGFyc2VFcnJvcih0b2tlbik7CiAgICAgICAgICAgICBpZiAobV90cmVlLm9wZW5FbGVtZW50
cygpLT5pblRhYmxlU2NvcGUodG9rZW4ubmFtZSgpKSkgewotICAgICAgICAgICAgICAgIEF0b21p
Y0hUTUxUb2tlbiBlbmRTZWxlY3QoSFRNTFRva2VuOjpFbmRUYWcsIHNlbGVjdFRhZy5sb2NhbE5h
bWUoKSk7CisgICAgICAgICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZFNlbGVjdChIVE1MVG9r
ZW5UeXBlczo6RW5kVGFnLCBzZWxlY3RUYWcubG9jYWxOYW1lKCkpOwogICAgICAgICAgICAgICAg
IHByb2Nlc3NFbmRUYWcoZW5kU2VsZWN0KTsKICAgICAgICAgICAgICAgICByZXByb2Nlc3NFbmRU
YWcodG9rZW4pOwogICAgICAgICAgICAgfQpAQCAtMjQwMiw3ICsyNDAyLDcgQEAgdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnJlc2V0Rm9yZWlnbkluc2VydGlvbk1vZGUoKQogCiB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc0NvbW1lbnQoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBB
U1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6Q29tbWVudCk7CisgICAgQVNTRVJUKHRv
a2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudCk7CiAgICAgaWYgKG1faW5zZXJ0
aW9uTW9kZSA9PSBJbml0aWFsTW9kZQogICAgICAgICB8fCBtX2luc2VydGlvbk1vZGUgPT0gQmVm
b3JlSFRNTE1vZGUKICAgICAgICAgfHwgbV9pbnNlcnRpb25Nb2RlID09IEFmdGVyQWZ0ZXJCb2R5
TW9kZQpAQCAtMjQyNCw3ICsyNDI0LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3ND
b21tZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzQ2hhcmFjdGVyKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRv
a2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3Rlcik7CisgICAgQVNTRVJUKHRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKTsKICAgICBFeHRlcm5hbENoYXJhY3Rl
clRva2VuQnVmZmVyIGJ1ZmZlcih0b2tlbik7CiAgICAgcHJvY2Vzc0NoYXJhY3RlckJ1ZmZlcihi
dWZmZXIpOwogfQpAQCAtMjU4Myw3ICsyNTgzLDcgQEAgUmVwcm9jZXNzQnVmZmVyOgogCiB2b2lk
IEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZShBdG9taWNIVE1MVG9rZW4mIHRva2Vu
KQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRPZkZpbGUpOwor
ICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZE9mRmlsZSk7CiAg
ICAgc3dpdGNoIChpbnNlcnRpb25Nb2RlKCkpIHsKICAgICBjYXNlIEluaXRpYWxNb2RlOgogICAg
ICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluaXRpYWxNb2RlKTsKQEAgLTI2ODEsNyAr
MjY4MSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5pdGlhbCgpCiAKIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9yQmVmb3JlSFRNTCgpCiB7Ci0gICAgQXRvbWlj
SFRNTFRva2VuIHN0YXJ0SFRNTChIVE1MVG9rZW46OlN0YXJ0VGFnLCBodG1sVGFnLmxvY2FsTmFt
ZSgpKTsKKyAgICBBdG9taWNIVE1MVG9rZW4gc3RhcnRIVE1MKEhUTUxUb2tlblR5cGVzOjpTdGFy
dFRhZywgaHRtbFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgbV90cmVlLmluc2VydEhUTUxIdG1sU3Rh
cnRUYWdCZWZvcmVIVE1MKHN0YXJ0SFRNTCk7CiAgICAgc2V0SW5zZXJ0aW9uTW9kZShCZWZvcmVI
ZWFkTW9kZSk7CiAgICAgcHJlcGFyZVRvUmVwcm9jZXNzVG9rZW4oKTsKQEAgLTI2ODksMjggKzI2
ODksMjggQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JCZWZvcmVIVE1MKCkKIAog
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JCZWZvcmVIZWFkKCkKIHsKLSAgICBBdG9t
aWNIVE1MVG9rZW4gc3RhcnRIZWFkKEhUTUxUb2tlbjo6U3RhcnRUYWcsIGhlYWRUYWcubG9jYWxO
YW1lKCkpOworICAgIEF0b21pY0hUTUxUb2tlbiBzdGFydEhlYWQoSFRNTFRva2VuVHlwZXM6OlN0
YXJ0VGFnLCBoZWFkVGFnLmxvY2FsTmFtZSgpKTsKICAgICBwcm9jZXNzU3RhcnRUYWcoc3RhcnRI
ZWFkKTsKICAgICBwcmVwYXJlVG9SZXByb2Nlc3NUb2tlbigpOwogfQogCiB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6ZGVmYXVsdEZvckluSGVhZCgpCiB7Ci0gICAgQXRvbWljSFRNTFRva2VuIGVuZEhl
YWQoSFRNTFRva2VuOjpFbmRUYWcsIGhlYWRUYWcubG9jYWxOYW1lKCkpOworICAgIEF0b21pY0hU
TUxUb2tlbiBlbmRIZWFkKEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIGhlYWRUYWcubG9jYWxOYW1l
KCkpOwogICAgIHByb2Nlc3NFbmRUYWcoZW5kSGVhZCk7CiAgICAgcHJlcGFyZVRvUmVwcm9jZXNz
VG9rZW4oKTsKIH0KIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JJbkhlYWROb3Nj
cmlwdCgpCiB7Ci0gICAgQXRvbWljSFRNTFRva2VuIGVuZE5vc2NyaXB0KEhUTUxUb2tlbjo6RW5k
VGFnLCBub3NjcmlwdFRhZy5sb2NhbE5hbWUoKSk7CisgICAgQXRvbWljSFRNTFRva2VuIGVuZE5v
c2NyaXB0KEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIG5vc2NyaXB0VGFnLmxvY2FsTmFtZSgpKTsK
ICAgICBwcm9jZXNzRW5kVGFnKGVuZE5vc2NyaXB0KTsKICAgICBwcmVwYXJlVG9SZXByb2Nlc3NU
b2tlbigpOwogfQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckFmdGVySGVhZCgp
CiB7Ci0gICAgQXRvbWljSFRNTFRva2VuIHN0YXJ0Qm9keShIVE1MVG9rZW46OlN0YXJ0VGFnLCBi
b2R5VGFnLmxvY2FsTmFtZSgpKTsKKyAgICBBdG9taWNIVE1MVG9rZW4gc3RhcnRCb2R5KEhUTUxU
b2tlblR5cGVzOjpTdGFydFRhZywgYm9keVRhZy5sb2NhbE5hbWUoKSk7CiAgICAgcHJvY2Vzc1N0
YXJ0VGFnKHN0YXJ0Qm9keSk7CiAgICAgbV9mcmFtZXNldE9rID0gdHJ1ZTsKICAgICBwcmVwYXJl
VG9SZXByb2Nlc3NUb2tlbigpOwpAQCAtMjczNiw3ICsyNzM2LDcgQEAgdm9pZCBIVE1MVHJlZUJ1
aWxkZXI6OmRlZmF1bHRGb3JJblRhYmxlVGV4dCgpCiAKIGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzU3RhcnRUYWdGb3JJbkhlYWQoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBB
U1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0
b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBpZiAodG9rZW4u
bmFtZSgpID09IGh0bWxUYWcpIHsKICAgICAgICAgbV90cmVlLmluc2VydEhUTUxIdG1sU3RhcnRU
YWdJbkJvZHkodG9rZW4pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI3ODMsNyArMjc4Myw3
IEBAIGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkhlYWQoQXRvbWlj
SFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmlj
UkNEQVRBU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9r
ZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBl
KCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVs
ZW1lbnQodG9rZW4pOwogICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRv
a2VuaXplcjo6UkNEQVRBU3RhdGUpOwogICAgIG1fb3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gbV9p
bnNlcnRpb25Nb2RlOwpAQCAtMjc5Miw3ICsyNzkyLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NHZW5lcmljUkNEQVRBU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIAog
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUmF3VGV4dFN0YXJ0VGFnKEF0b21p
Y0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9r
ZW46OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVz
OjpTdGFydFRhZyk7CiAgICAgbV90cmVlLmluc2VydEhUTUxFbGVtZW50KHRva2VuKTsKICAgICBt
X3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJBV1RFWFRTdGF0
ZSk7CiAgICAgbV9vcmlnaW5hbEluc2VydGlvbk1vZGUgPSBtX2luc2VydGlvbk1vZGU7CkBAIC0y
ODAxLDcgKzI4MDEsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0dlbmVyaWNSYXdU
ZXh0U3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NTY3JpcHRTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewotICAg
IEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CisgICAgQVNTRVJU
KHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIG1fdHJlZS5p
bnNlcnRTY3JpcHRFbGVtZW50KHRva2VuKTsKICAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNl
dFN0YXRlKEhUTUxUb2tlbml6ZXI6OlNjcmlwdERhdGFTdGF0ZSk7CiAgICAgbV9vcmlnaW5hbElu
c2VydGlvbk1vZGUgPSBtX2luc2VydGlvbk1vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAKaW5kZXggN2NkYmRjNzFjOTkwZTBk
ZjUyZDA5YTJmYjkxM2ZjMjdjZjQ0NDIzNy4uZTgyZmE5MzAxNmIwYTRiNmFjNGU4ODJiMWMxMTc2
YTM4MDU4YjhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFZp
ZXdTb3VyY2VQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxW
aWV3U291cmNlUGFyc2VyLmNwcApAQCAtNzUsNyArNzUsNyBAQCBTdHJpbmcgSFRNTFZpZXdTb3Vy
Y2VQYXJzZXI6OnNvdXJjZUZvclRva2VuKCkKIHZvaWQgSFRNTFZpZXdTb3VyY2VQYXJzZXI6OnVw
ZGF0ZVRva2VuaXplclN0YXRlKCkKIHsKICAgICAvLyBGSVhNRTogVGhlIHRva2VuaXplciBzaG91
bGQgZG8gdGhpcyB3b3JrIGZvciB1cy4KLSAgICBpZiAobV90b2tlbi50eXBlKCkgIT0gSFRNTFRv
a2VuOjpTdGFydFRhZykKKyAgICBpZiAobV90b2tlbi50eXBlKCkgIT0gSFRNTFRva2VuVHlwZXM6
OlN0YXJ0VGFnKQogICAgICAgICByZXR1cm47CiAKICAgICBBdG9taWNTdHJpbmcgdGFnTmFtZSht
X3Rva2VuLm5hbWUoKS5kYXRhKCksIG1fdG9rZW4ubmFtZSgpLnNpemUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcAppbmRleCBkMDNi
NzQ0ZTg3MjExNjQ4YzkyZjUxMzc4YzBiMmI4ZTEzZTgzZWUzLi42M2I1MTYwMjFhNDI0OWYzNWNi
NmRhN2ZlNGFhZjJjMzJmMzhhY2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBUZXh0RG9j
dW1lbnRQYXJzZXI6Omluc2VydEZha2VQcmVFbGVtZW50KCkKICAgICBSZWZQdHI8QXR0cmlidXRl
PiBzdHlsZUF0dHJpYnV0ZSA9IEF0dHJpYnV0ZTo6Y3JlYXRlTWFwcGVkKCJzdHlsZSIsICJ3b3Jk
LXdyYXA6IGJyZWFrLXdvcmQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsiKTsKICAgICBSZWZQdHI8
TmFtZWROb2RlTWFwPiBhdHRyaWJ1dGVzID0gTmFtZWROb2RlTWFwOjpjcmVhdGUoKTsKICAgICBh
dHRyaWJ1dGVzLT5pbnNlcnRBdHRyaWJ1dGUoc3R5bGVBdHRyaWJ1dGUucmVsZWFzZSgpLCBmYWxz
ZSk7Ci0gICAgQXRvbWljSFRNTFRva2VuIGZha2VQcmUoSFRNTFRva2VuOjpTdGFydFRhZywgcHJl
VGFnLmxvY2FsTmFtZSgpLCBhdHRyaWJ1dGVzLnJlbGVhc2UoKSk7CisgICAgQXRvbWljSFRNTFRv
a2VuIGZha2VQcmUoSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnLCBwcmVUYWcubG9jYWxOYW1lKCks
IGF0dHJpYnV0ZXMucmVsZWFzZSgpKTsKIAogICAgIHRyZWVCdWlsZGVyKCktPmNvbnN0cnVjdFRy
ZWVGcm9tQXRvbWljVG9rZW4oZmFrZVByZSk7CiAgICAgbV9oYXZlSW5zZXJ0ZWRGYWtlUHJlRWxl
bWVudCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NB
dWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCmlu
ZGV4IGU4MWVhYmIwOTVlNDIzYzJiZGMxZTg0ODRhYjcwZDZkMTViNTQ4NzEuLmVlMWQyY2UxYTRl
YjU5NmNjZDQ2ZDE2OTA1NDE0ODk0OGUyZjE5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL1hTU0F1ZGl0b3IuY3BwCkBAIC0yMzQsNyArMjM0LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpm
aWx0ZXJUb2tlbkluaXRpYWwoSFRNTFRva2VuJiB0b2tlbikKIHsKICAgICBBU1NFUlQobV9zdGF0
ZSA9PSBJbml0aWFsKTsKIAotICAgIGlmICh0b2tlbi50eXBlKCkgIT0gSFRNTFRva2VuOjpTdGFy
dFRhZykKKyAgICBpZiAodG9rZW4udHlwZSgpICE9IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCBkaWRCbG9ja1NjcmlwdCA9IGVyYXNl
RGFuZ2Vyb3VzQXR0cmlidXRlc0lmSW5qZWN0ZWQodG9rZW4pOwpAQCAtMjY2LDggKzI2Niw4IEBA
IGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW5BZnRlclNjcmlwdFN0YXJ0VGFnKEhUTUxUb2tl
biYgdG9rZW4pCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gQWZ0ZXJTY3JpcHRTdGFydFRhZyk7CiAg
ICAgbV9zdGF0ZSA9IEluaXRpYWw7CiAKLSAgICBpZiAodG9rZW4udHlwZSgpICE9IEhUTUxUb2tl
bjo6Q2hhcmFjdGVyKSB7Ci0gICAgICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
OjpFbmRUYWcgfHwgdG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5kT2ZGaWxlKTsKKyAgICBp
ZiAodG9rZW4udHlwZSgpICE9IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpIHsKKyAgICAgICAg
QVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnIHx8IHRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxlKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApAQCAtMjg2LDcgKzI4Niw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyVG9r
ZW5BZnRlclNjcmlwdFN0YXJ0VGFnKEhUTUxUb2tlbiYgdG9rZW4pCiBib29sIFhTU0F1ZGl0b3I6
OmZpbHRlclNjcmlwdFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKG1fc3Rh
dGUgPT0gSW5pdGlhbCk7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0
YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFy
dFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUodG9rZW4sIHNjcmlwdFRhZykpOwogCiAgICAgaWYg
KGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZCh0b2tlbiwgc3JjQXR0ciwgYmxhbmtVUkwoKS5zdHJp
bmcoKSkpCkBAIC0zMDAsNyArMzAwLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJTY3JpcHRU
b2tlbihIVE1MVG9rZW4mIHRva2VuKQogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJPYmplY3RUb2tl
bihIVE1MVG9rZW4mIHRva2VuKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IEluaXRpYWwpOwot
ICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CisgICAgQVNT
RVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIEFTU0VS
VChoYXNOYW1lKHRva2VuLCBvYmplY3RUYWcpKTsKIAogICAgIGJvb2wgZGlkQmxvY2tTY3JpcHQg
PSBmYWxzZTsKQEAgLTMxNSw3ICszMTUsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlck9iamVj
dFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlclBhcmFtVG9r
ZW4oSFRNTFRva2VuJiB0b2tlbikKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBJbml0aWFsKTsK
LSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFT
U0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBBU1NF
UlQoaGFzTmFtZSh0b2tlbiwgcGFyYW1UYWcpKTsKIAogICAgIHNpemVfdCBpbmRleE9mTmFtZUF0
dHJpYnV0ZTsKQEAgLTMzNCw3ICszMzQsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlclBhcmFt
VG9rZW4oSFRNTFRva2VuJiB0b2tlbikKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyRW1iZWRUb2tl
bihIVE1MVG9rZW4mIHRva2VuKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IEluaXRpYWwpOwot
ICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CisgICAgQVNT
RVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIEFTU0VS
VChoYXNOYW1lKHRva2VuLCBlbWJlZFRhZykpOwogCiAgICAgYm9vbCBkaWRCbG9ja1NjcmlwdCA9
IGZhbHNlOwpAQCAtMzQ4LDcgKzM0OCw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyRW1iZWRU
b2tlbihIVE1MVG9rZW4mIHRva2VuKQogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJBcHBsZXRUb2tl
bihIVE1MVG9rZW4mIHRva2VuKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IEluaXRpYWwpOwot
ICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CisgICAgQVNT
RVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIEFTU0VS
VChoYXNOYW1lKHRva2VuLCBhcHBsZXRUYWcpKTsKIAogICAgIGJvb2wgZGlkQmxvY2tTY3JpcHQg
PSBmYWxzZTsKQEAgLTM2Miw3ICszNjIsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckFwcGxl
dFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlcklmcmFtZVRv
a2VuKEhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gSW5pdGlhbCk7
Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAgICBB
U1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgQVNT
RVJUKGhhc05hbWUodG9rZW4sIGlmcmFtZVRhZykpOwogCiAgICAgcmV0dXJuIGVyYXNlQXR0cmli
dXRlSWZJbmplY3RlZCh0b2tlbiwgc3JjQXR0cik7CkBAIC0zNzEsNyArMzcxLDcgQEAgYm9vbCBY
U1NBdWRpdG9yOjpmaWx0ZXJJZnJhbWVUb2tlbihIVE1MVG9rZW4mIHRva2VuKQogYm9vbCBYU1NB
dWRpdG9yOjpmaWx0ZXJNZXRhVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKIHsKICAgICBBU1NFUlQo
bV9zdGF0ZSA9PSBJbml0aWFsKTsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tl
bjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6
OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZSh0b2tlbiwgbWV0YVRhZykpOwogCiAgICAg
cmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZCh0b2tlbiwgaHR0cF9lcXVpdkF0dHIpOwpA
QCAtMzgwLDcgKzM4MCw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyTWV0YVRva2VuKEhUTUxU
b2tlbiYgdG9rZW4pCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckJhc2VUb2tlbihIVE1MVG9rZW4m
IHRva2VuKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IEluaXRpYWwpOwotICAgIEFTU0VSVCh0
b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHRv
a2VuLCBiYXNlVGFnKSk7CiAKICAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHRv
a2VuLCBocmVmQXR0cik7CkBAIC0zODksNyArMzg5LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0
ZXJCYXNlVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyRm9y
bVRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gSW5pdGlh
bCk7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAg
ICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAg
QVNTRVJUKGhhc05hbWUodG9rZW4sIGZvcm1UYWcpKTsKIAogICAgIHJldHVybiBlcmFzZUF0dHJp
YnV0ZUlmSW5qZWN0ZWQodG9rZW4sIGFjdGlvbkF0dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvTWFya3VwVG9rZW5CYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2QyYWIwZjk2MjUxOWJiZTI0YTVi
NGEzNmE3MjMyYWE3MDNmMjkwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmgKQEAgLTAsMCArMSwzODMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1hcmt1cFRva2VuQmFz
ZV9oCisjZGVmaW5lIE1hcmt1cFRva2VuQmFzZV9oCisKKyNpbmNsdWRlICJOYW1lZE5vZGVNYXAu
aCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEb2N0eXBlRGF0YUJhc2UgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKERvY3R5cGVEYXRhQmFzZSk7CitwdWJsaWM6CisgICAgRG9jdHlw
ZURhdGFCYXNlKCkKKyAgICAgICAgOiBtX2hhc1B1YmxpY0lkZW50aWZpZXIoZmFsc2UpCisgICAg
ICAgICwgbV9oYXNTeXN0ZW1JZGVudGlmaWVyKGZhbHNlKQorICAgIHsKKyAgICB9CisKKyAgICBi
b29sIG1faGFzUHVibGljSWRlbnRpZmllcjsKKyAgICBib29sIG1faGFzU3lzdGVtSWRlbnRpZmll
cjsKKyAgICBXVEY6OlZlY3RvcjxVQ2hhcj4gbV9wdWJsaWNJZGVudGlmaWVyOworICAgIFdURjo6
VmVjdG9yPFVDaGFyPiBtX3N5c3RlbUlkZW50aWZpZXI7Cit9OworICAgIAordGVtcGxhdGU8dHlw
ZW5hbWUgVHlwZVNldCwgdHlwZW5hbWUgRG9jdHlwZURhdGEgPSBEb2N0eXBlRGF0YUJhc2U+Citj
bGFzcyBNYXJrdXBUb2tlbkJhc2UgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1hcmt1cFRv
a2VuQmFzZSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiB0eXBlbmFtZSBUeXBlU2V0OjpUeXBlIFR5cGU7CisKKyAgICBjbGFzcyBSYW5nZSB7Cisg
ICAgcHVibGljOgorICAgICAgICBpbnQgbV9zdGFydDsKKyAgICAgICAgaW50IG1fZW5kOworICAg
IH07CisKKyAgICBjbGFzcyBBdHRyaWJ1dGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgUmFuZ2Ug
bV9uYW1lUmFuZ2U7CisgICAgICAgIFJhbmdlIG1fdmFsdWVSYW5nZTsKKyAgICAgICAgV1RGOjpW
ZWN0b3I8VUNoYXIsIDMyPiBtX25hbWU7CisgICAgICAgIFdURjo6VmVjdG9yPFVDaGFyLCAzMj4g
bV92YWx1ZTsKKyAgICB9OworCisgICAgdHlwZWRlZiBXVEY6OlZlY3RvcjxBdHRyaWJ1dGUsIDEw
PiBBdHRyaWJ1dGVMaXN0OworICAgIHR5cGVkZWYgV1RGOjpWZWN0b3I8VUNoYXIsIDEwMjQ+IERh
dGFWZWN0b3I7CisKKyAgICBNYXJrdXBUb2tlbkJhc2UoKSB7IGNsZWFyKCk7IH0KKyAgICB2aXJ0
dWFsIH5NYXJrdXBUb2tlbkJhc2UoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpCisg
ICAgeworICAgICAgICBtX3R5cGUgPSBUeXBlU2V0OjpVbmluaXRpYWxpemVkOworICAgICAgICBt
X3JhbmdlLm1fc3RhcnQgPSAwOworICAgICAgICBtX3JhbmdlLm1fZW5kID0gMDsKKyAgICAgICAg
bV9iYXNlT2Zmc2V0ID0gMDsKKyAgICAgICAgbV9kYXRhLmNsZWFyKCk7CisgICAgfQorCisgICAg
Ym9vbCBpc1VuaW5pdGlhbGl6ZWQoKSB7IHJldHVybiBtX3R5cGUgPT0gVHlwZVNldDo6VW5pbml0
aWFsaXplZDsgfQorCisgICAgaW50IHN0YXJ0SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3Jhbmdl
Lm1fc3RhcnQ7IH0KKyAgICBpbnQgZW5kSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlLm1f
ZW5kOyB9CisKKyAgICB2b2lkIHNldEJhc2VPZmZzZXQoaW50IG9mZnNldCkKKyAgICB7CisgICAg
ICAgIG1fYmFzZU9mZnNldCA9IG9mZnNldDsKKyAgICB9CisKKyAgICB2b2lkIGVuZChpbnQgZW5k
T2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9yYW5nZS5tX2VuZCA9IGVuZE9mZnNldCAtIG1fYmFz
ZU9mZnNldDsKKyAgICB9CisKKyAgICB2b2lkIG1ha2VFbmRPZkZpbGUoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpVbmluaXRpYWxpemVkKTsKKyAgICAgICAgbV90
eXBlID0gVHlwZVNldDo6RW5kT2ZGaWxlOworICAgIH0KKworICAgIHZvaWQgYmVnaW5TdGFydFRh
ZyhVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpVbmluaXRpYWxpemVkKTsKKyAgICAgICAg
bV90eXBlID0gVHlwZVNldDo6U3RhcnRUYWc7CisgICAgICAgIG1fc2VsZkNsb3NpbmcgPSBmYWxz
ZTsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlID0gMDsKKyAgICAgICAgbV9hdHRyaWJ1dGVz
LmNsZWFyKCk7CisKKyAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBiZWdpbkVuZFRhZyhUIGNoYXJhY3Rl
cnMpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlVuaW5pdGlhbGl6
ZWQpOworICAgICAgICBtX3R5cGUgPSBUeXBlU2V0OjpFbmRUYWc7CisgICAgICAgIG1fc2VsZkNs
b3NpbmcgPSBmYWxzZTsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlID0gMDsKKyAgICAgICAg
bV9hdHRyaWJ1dGVzLmNsZWFyKCk7CisKKyAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXJz
KTsKKyAgICB9CisKKyAgICAvLyBTdGFydGluZyBhIGNoYXJhY3RlciB0b2tlbiB3b3JrcyBzbGln
aHRseSBkaWZmZXJlbnRseSB0aGFuIHN0YXJ0aW5nCisgICAgLy8gb3RoZXIgdHlwZXMgb2YgdG9r
ZW5zIGJlY2F1c2Ugd2Ugd2FudCB0byBzYXZlIGEgcGVyLWNoYXJhY3RlciBicmFuY2guCisgICAg
dm9pZCBlbnN1cmVJc0NoYXJhY3RlclRva2VuKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gVHlwZVNldDo6VW5pbml0aWFsaXplZCB8fCBtX3R5cGUgPT0gVHlwZVNldDo6Q2hhcmFj
dGVyKTsKKyAgICAgICAgbV90eXBlID0gVHlwZVNldDo6Q2hhcmFjdGVyOworICAgIH0KKworICAg
IHZvaWQgYmVnaW5Db21tZW50KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlw
ZVNldDo6VW5pbml0aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9IFR5cGVTZXQ6OkNvbW1lbnQ7
CisgICAgfQorCisgICAgdm9pZCBiZWdpbkRPQ1RZUEUoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBUeXBlU2V0OjpVbmluaXRpYWxpemVkKTsKKyAgICAgICAgbV90eXBlID0gVHlw
ZVNldDo6RE9DVFlQRTsKKyAgICAgICAgbV9kb2N0eXBlRGF0YSA9IGFkb3B0UHRyKG5ldyBEb2N0
eXBlRGF0YSgpKTsKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luRE9DVFlQRShVQ2hhciBjaGFyYWN0
ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICAgICAgYmVnaW5ET0NU
WVBFKCk7CisgICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHZvaWQgYXBwZW5kVG9DaGFyYWN0ZXIoVCBjaGFyYWN0
ZXJzKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpDaGFyYWN0ZXIp
OworICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3RlcnMpOworICAgIH0KKworICAgIHZvaWQg
YXBwZW5kVG9Db21tZW50KFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChj
aGFyYWN0ZXIpOworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OkNvbW1lbnQpOwor
ICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgdm9pZCBhZGRO
ZXdBdHRyaWJ1dGUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpT
dGFydFRhZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6RW5kVGFnKTsKKyAgICAgICAgbV9hdHRyaWJ1
dGVzLmdyb3cobV9hdHRyaWJ1dGVzLnNpemUoKSArIDEpOworICAgICAgICBtX2N1cnJlbnRBdHRy
aWJ1dGUgPSAmbV9hdHRyaWJ1dGVzLmxhc3QoKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIG1f
Y3VycmVudEF0dHJpYnV0ZS0+bV9uYW1lUmFuZ2UubV9zdGFydCA9IDA7CisgICAgICAgIG1fY3Vy
cmVudEF0dHJpYnV0ZS0+bV9uYW1lUmFuZ2UubV9lbmQgPSAwOworICAgICAgICBtX2N1cnJlbnRB
dHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX3N0YXJ0ID0gMDsKKyAgICAgICAgbV9jdXJyZW50QXR0
cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9lbmQgPSAwOworI2VuZGlmCisgICAgfQorCisgICAgdm9p
ZCBiZWdpbkF0dHJpYnV0ZU5hbWUoaW50IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fY3VycmVu
dEF0dHJpYnV0ZS0+bV9uYW1lUmFuZ2UubV9zdGFydCA9IG9mZnNldCAtIG1fYmFzZU9mZnNldDsK
KyAgICB9CisKKyAgICB2b2lkIGVuZEF0dHJpYnV0ZU5hbWUoaW50IG9mZnNldCkKKyAgICB7Cisg
ICAgICAgIGludCBpbmRleCA9IG9mZnNldCAtIG1fYmFzZU9mZnNldDsKKyAgICAgICAgbV9jdXJy
ZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX2VuZCA9IGluZGV4OworICAgICAgICBtX2N1cnJl
bnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX3N0YXJ0ID0gaW5kZXg7CisgICAgICAgIG1fY3Vy
cmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fZW5kID0gaW5kZXg7CisgICAgfQorCisgICAg
dm9pZCBiZWdpbkF0dHJpYnV0ZVZhbHVlKGludCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2N1
cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX3N0YXJ0ID0gb2Zmc2V0IC0gbV9iYXNlT2Zm
c2V0OworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVl
UmFuZ2UubV9lbmQgPSAwOworI2VuZGlmCisgICAgfQorCisgICAgdm9pZCBlbmRBdHRyaWJ1dGVW
YWx1ZShpbnQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3Zh
bHVlUmFuZ2UubV9lbmQgPSBvZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7CisgICAgfQorCisgICAgdm9p
ZCBhcHBlbmRUb0F0dHJpYnV0ZU5hbWUoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6U3Rh
cnRUYWcgfHwgbV90eXBlID09IFR5cGVTZXQ6OkVuZFRhZyk7CisgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgYmUgYWJsZSB0byBhZGQgdGhlIGZvbGxvd2luZyBBU1NFUlQgb25jZSB3ZSBmaXgK
KyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyOTcx
CisgICAgICAgIC8vICAgQVNTRVJUKG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1lUmFuZ2UubV9z
dGFydCk7CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1lLmFwcGVuZChjaGFyYWN0
ZXIpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShVQ2hhciBjaGFy
YWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBUeXBlU2V0OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6RW5kVGFn
KTsKKyAgICAgICAgQVNTRVJUKG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3Rh
cnQpOworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWUuYXBwZW5kKGNoYXJhY3Rl
cik7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKHNpemVfdCBpLCBj
b25zdCBTdHJpbmcmIHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCF2YWx1ZS5pc0VtcHR5
KCkpOworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlN0YXJ0VGFnIHx8IG1fdHlw
ZSA9PSBUeXBlU2V0OjpFbmRUYWcpOworICAgICAgICBtX2F0dHJpYnV0ZXNbaV0ubV92YWx1ZS5h
cHBlbmQodmFsdWUuY2hhcmFjdGVycygpLCB2YWx1ZS5sZW5ndGgoKSk7CisgICAgfQorCisgICAg
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAgICBib29sIHNlbGZDbG9z
aW5nKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6U3Rh
cnRUYWcgfHwgbV90eXBlID09IFR5cGVTZXQ6OkVuZFRhZyk7CisgICAgICAgIHJldHVybiBtX3Nl
bGZDbG9zaW5nOworICAgIH0KKworICAgIHZvaWQgc2V0U2VsZkNsb3NpbmcoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gVHlw
ZVNldDo6RW5kVGFnKTsKKyAgICAgICAgbV9zZWxmQ2xvc2luZyA9IHRydWU7CisgICAgfQorCisg
ICAgY29uc3QgQXR0cmlidXRlTGlzdCYgYXR0cmlidXRlcygpIGNvbnN0CisgICAgeworICAgICAg
ICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBUeXBlU2V0
OjpFbmRUYWcpOworICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzOworICAgIH0KKworICAgIHZv
aWQgZXJhc2VDaGFyYWN0ZXJzKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlw
ZVNldDo6Q2hhcmFjdGVyKTsKKyAgICAgICAgbV9kYXRhLmNsZWFyKCk7CisgICAgfQorCisgICAg
dm9pZCBlcmFzZVZhbHVlT2ZBdHRyaWJ1dGUoc2l6ZV90IGkpCisgICAgeworICAgICAgICBBU1NF
UlQobV90eXBlID09IFR5cGVTZXQ6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBUeXBlU2V0OjpFbmRU
YWcpOworICAgICAgICBtX2F0dHJpYnV0ZXNbaV0ubV92YWx1ZS5jbGVhcigpOworICAgIH0KKwor
ICAgIGNvbnN0IERhdGFWZWN0b3ImIGNoYXJhY3RlcnMoKSBjb25zdAorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpDaGFyYWN0ZXIpOworICAgICAgICByZXR1cm4gbV9k
YXRhOworICAgIH0KKworICAgIGNvbnN0IERhdGFWZWN0b3ImIGNvbW1lbnQoKSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpDb21tZW50KTsKKyAgICAgICAg
cmV0dXJuIG1fZGF0YTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogRGlzdGluZ3Vpc2ggYmV0d2Vl
biBhIG1pc3NpbmcgcHVibGljIGlkZW50aWZlciBhbmQgYW4gZW1wdHkgb25lLgorICAgIGNvbnN0
IFdURjo6VmVjdG9yPFVDaGFyPiYgcHVibGljSWRlbnRpZmllcigpIGNvbnN0CisgICAgeworICAg
ICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OkRPQ1RZUEUpOworICAgICAgICByZXR1cm4g
bV9kb2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyOworICAgIH0KKworICAgIC8vIEZJWE1F
OiBEaXN0aW5ndWlzaCBiZXR3ZWVuIGEgbWlzc2luZyBzeXN0ZW0gaWRlbnRpZmVyIGFuZCBhbiBl
bXB0eSBvbmUuCisgICAgY29uc3QgV1RGOjpWZWN0b3I8VUNoYXI+JiBzeXN0ZW1JZGVudGlmaWVy
KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6RE9DVFlQ
RSk7CisgICAgICAgIHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXI7Cisg
ICAgfQorCisgICAgdm9pZCBzZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpCisgICAg
eworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OkRPQ1RZUEUpOworICAgICAgICBt
X2RvY3R5cGVEYXRhLT5tX2hhc1B1YmxpY0lkZW50aWZpZXIgPSB0cnVlOworICAgICAgICBtX2Rv
Y3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZpZXIuY2xlYXIoKTsKKyAgICB9CisKKyAgICB2b2lk
IHNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gVHlwZVNldDo6RE9DVFlQRSk7CisgICAgICAgIG1fZG9jdHlwZURhdGEtPm1f
aGFzU3lzdGVtSWRlbnRpZmllciA9IHRydWU7CisgICAgICAgIG1fZG9jdHlwZURhdGEtPm1fc3lz
dGVtSWRlbnRpZmllci5jbGVhcigpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kVG9QdWJsaWNJ
ZGVudGlmaWVyKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChjaGFyYWN0
ZXIpOworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OkRPQ1RZUEUpOworICAgICAg
ICBBU1NFUlQobV9kb2N0eXBlRGF0YS0+bV9oYXNQdWJsaWNJZGVudGlmaWVyKTsKKyAgICAgICAg
bV9kb2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyLmFwcGVuZChjaGFyYWN0ZXIpOworICAg
IH0KKworICAgIHZvaWQgYXBwZW5kVG9TeXN0ZW1JZGVudGlmaWVyKFVDaGFyIGNoYXJhY3RlcikK
KyAgICB7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgICAgICBBU1NFUlQobV90eXBl
ID09IFR5cGVTZXQ6OkRPQ1RZUEUpOworICAgICAgICBBU1NFUlQobV9kb2N0eXBlRGF0YS0+bV9o
YXNTeXN0ZW1JZGVudGlmaWVyKTsKKyAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVu
dGlmaWVyLmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0KKworcHJvdGVjdGVkOgorCisjaWZuZGVm
IE5ERUJVRworICAgIHZvaWQgcHJpbnRTdHJpbmcoY29uc3QgRGF0YVZlY3RvciYgc3RyaW5nKSBj
b25zdAorICAgIHsKKyAgICAgICAgRGF0YVZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHN0
cmluZy5iZWdpbigpOworICAgICAgICBmb3IgKDsgaXRlciAhPSBzdHJpbmcuZW5kKCk7ICsraXRl
cikKKyAgICAgICAgICAgIHByaW50ZigiJWxjIiwgd2NoYXJfdCgqaXRlcikpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIHByaW50QXR0cnMoKSBjb25zdAorICAgIHsKKyAgICAgICAgdHlwZW5hbWUg
QXR0cmlidXRlTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fYXR0cmlidXRlcy5iZWdpbigp
OworICAgICAgICBmb3IgKDsgaXRlciAhPSBtX2F0dHJpYnV0ZXMuZW5kKCk7ICsraXRlcikgewor
ICAgICAgICAgICAgcHJpbnRmKCIgIik7CisgICAgICAgICAgICBwcmludFN0cmluZyhpdGVyLT5t
X25hbWUpOworICAgICAgICAgICAgcHJpbnRmKCI9XCIiKTsKKyAgICAgICAgICAgIHByaW50U3Ry
aW5nKGl0ZXItPm1fdmFsdWUpOworICAgICAgICAgICAgcHJpbnRmKCJcIiIpOworICAgICAgICB9
CisgICAgfQorI2VuZGlmIC8vIE5ERUJVRworCisgICAgaW5saW5lIHZvaWQgYXBwZW5kVG9OYW1l
KFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAg
ICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorICAgIAorICAgIGlubGluZSBj
b25zdCBEYXRhVmVjdG9yJiBuYW1lKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Rh
dGE7CisgICAgfQorCisgICAgLy8gRklYTUU6IEknbSBub3Qgc3VyZSB3aGF0IHRoZSBmaW5hbCBy
ZWxhdGlvbnNoaXAgYmV0d2VlbiBIVE1MVG9rZW4gYW5kCisgICAgLy8gQXRvbWljSFRNTFRva2Vu
IHdpbGwgYmUuIEknbSBtYXJraW5nIHRoaXMgYSBmcmllbmQgZm9yIG5vdywgYnV0IHdlJ2xsCisg
ICAgLy8gd2FudCB0byBlbmQgdXAgd2l0aCBhIGNsZWFuZXIgaW50ZXJmYWNlIGJldHdlZW4gdGhl
IHR3byBjbGFzc2VzLgorICAgIGZyaWVuZCBjbGFzcyBBdG9taWNIVE1MVG9rZW47CisKKyAgICBU
eXBlIG1fdHlwZTsKKyAgICBSYW5nZSBtX3JhbmdlOyAvLyBBbHdheXMgc3RhcnRzIGF0IHplcm8u
CisgICAgaW50IG1fYmFzZU9mZnNldDsKKyAgICBEYXRhVmVjdG9yIG1fZGF0YTsKKworICAgIC8v
IEZvciBET0NUWVBFCisgICAgT3duUHRyPERvY3R5cGVEYXRhPiBtX2RvY3R5cGVEYXRhOworCisg
ICAgLy8gRm9yIFN0YXJ0VGFnIGFuZCBFbmRUYWcKKyAgICBib29sIG1fc2VsZkNsb3Npbmc7Cisg
ICAgQXR0cmlidXRlTGlzdCBtX2F0dHJpYnV0ZXM7CisKKyAgICAvLyBBIHBvaW50ZXIgaW50byBt
X2F0dHJpYnV0ZXMgdXNlZCBkdXJpbmcgbGV4aW5nLgorICAgIEF0dHJpYnV0ZSogbV9jdXJyZW50
QXR0cmlidXRlOworfTsKKworfQorCisjZW5kaWYgLy8gTWFya3VwVG9rZW5CYXNlX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MVG9rZW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDI4NTNkOTMwZjdlMzdiZGNh
YTkzZjQ1NTk4ZmI4MmQwZWYyMzBkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL3BhcnNlci9YTUxUb2tlbi5oCkBAIC0wLDAgKzEsMzM4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBYTUxUb2tlbl9oCisjZGVmaW5l
IFhNTFRva2VuX2gKKworI2luY2x1ZGUgIk1hcmt1cFRva2VuQmFzZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFhNTFRva2VuVHlwZXMgeworcHVibGljOgorICAgIGVudW0gVHlw
ZSB7CisgICAgICAgIFVuaW5pdGlhbGl6ZWQsCisgICAgICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlv
biwKKyAgICAgICAgWE1MRGVjbGFyYXRpb24sCisgICAgICAgIERPQ1RZUEUsCisgICAgICAgIEF0
dHJpYnV0ZUxpc3REZWNsYXJhdGlvbiwKKyAgICAgICAgRWxlbWVudERlY2xhcmF0aW9uLAorICAg
ICAgICBFbnRpdHlEZWNsYXJhdGlvbiwKKyAgICAgICAgQ0RBVEEsCisgICAgICAgIFN0YXJ0VGFn
LAorICAgICAgICBFbmRUYWcsCisgICAgICAgIENvbW1lbnQsCisgICAgICAgIENoYXJhY3RlciwK
KyAgICAgICAgRW50aXR5LAorICAgICAgICBFbmRPZkZpbGUsCisgICAgfTsKK307CisKK2NsYXNz
IFhNTFRva2VuIDogcHVibGljIE1hcmt1cFRva2VuQmFzZTxYTUxUb2tlblR5cGVzPiB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoWE1MVG9rZW4pOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorCisgICAgWE1MVG9rZW4oKSA6IE1hcmt1cFRva2VuQmFzZTxYTUxUb2tl
blR5cGVzPigpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAg
IE1hcmt1cFRva2VuQmFzZTxYTUxUb2tlblR5cGVzPjo6Y2xlYXIoKTsKKyAgICAgICAgbV90YXJn
ZXQuY2xlYXIoKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhcHBlbmRUb05hbWUoVUNoYXIgY2hh
cmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpT
dGFydFRhZyB8fCBtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6RW5kVGFnIHx8IG1fdHlwZSA9PSBY
TUxUb2tlblR5cGVzOjpET0NUWVBFIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpFbnRpdHkp
OworICAgICAgICBNYXJrdXBUb2tlbkJhc2U8WE1MVG9rZW5UeXBlcz46OmFwcGVuZFRvTmFtZShj
aGFyYWN0ZXIpOworICAgIH0KKyAgICAKKyAgICBjb25zdCBEYXRhVmVjdG9yJiBuYW1lKCkgY29u
c3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6U3RhcnRU
YWcgfHwgbV90eXBlID09IFhNTFRva2VuVHlwZXM6OkVuZFRhZyB8fCBtX3R5cGUgPT0gWE1MVG9r
ZW5UeXBlczo6RE9DVFlQRSB8fCBtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6RW50aXR5KTsKKyAg
ICAgICAgcmV0dXJuIE1hcmt1cFRva2VuQmFzZTxYTUxUb2tlblR5cGVzPjo6bmFtZSgpOworICAg
IH0KKworICAgIHZvaWQgYmVnaW5ET0NUWVBFKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gWE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9IFhN
TFRva2VuVHlwZXM6OkRPQ1RZUEU7CisgICAgICAgIG1fZG9jdHlwZURhdGEgPSBhZG9wdFB0cihu
ZXcgRG9jdHlwZURhdGEoKSk7CisgICAgfQorCisgICAgdm9pZCBiZWdpbkRPQ1RZUEUoVUNoYXIg
Y2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIGJl
Z2luRE9DVFlQRSgpOworICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQor
CisgICAgdm9pZCBiZWdpblhNTERlY2xhcmF0aW9uKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9
IFhNTFRva2VuVHlwZXM6OlhNTERlY2xhcmF0aW9uOworICAgICAgICBtX3htbERlY2xhcmF0aW9u
RGF0YSA9IGFkb3B0UHRyKG5ldyBYTUxEZWNsYXJhdGlvbkRhdGEoKSk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXBwZW5kVG9YTUxWZXJzaW9uKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAg
ICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2Vu
VHlwZXM6OlhNTERlY2xhcmF0aW9uKTsKKyAgICAgICAgQVNTRVJUKG1feG1sRGVjbGFyYXRpb25E
YXRhKTsKKyAgICAgICAgbV94bWxEZWNsYXJhdGlvbkRhdGEtPm1fdmVyc2lvbi5hcHBlbmQoY2hh
cmFjdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luWE1MRW5jb2RpbmcoVUNoYXIgY2hhcmFj
dGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6WE1MRGVjbGFyYXRpb24pOworICAgICAgICBBU1NFUlQo
bV94bWxEZWNsYXJhdGlvbkRhdGEpOworICAgICAgICBtX3htbERlY2xhcmF0aW9uRGF0YS0+bV9o
YXNFbmNvZGluZyA9IHRydWU7CisgICAgICAgIG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX2VuY29k
aW5nLmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kVG9YTUxFbmNv
ZGluZyhVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsK
KyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpYTUxEZWNsYXJhdGlvbik7
CisgICAgICAgIEFTU0VSVChtX3htbERlY2xhcmF0aW9uRGF0YSk7CisgICAgICAgIEFTU0VSVCht
X3htbERlY2xhcmF0aW9uRGF0YS0+bV9oYXNFbmNvZGluZyk7CisgICAgICAgIG1feG1sRGVjbGFy
YXRpb25EYXRhLT5tX2VuY29kaW5nLmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0KKworICAgIHZv
aWQgc2V0WE1MU3RhbmRhbG9uZShib29sIHN0YW5kYWxvbmUpCisgICAgeworICAgICAgICBBU1NF
UlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlhNTERlY2xhcmF0aW9uKTsKKyAgICAgICAgQVNT
RVJUKG1feG1sRGVjbGFyYXRpb25EYXRhKTsKKyAgICAgICAgbV94bWxEZWNsYXJhdGlvbkRhdGEt
Pm1faGFzU3RhbmRhbG9uZSA9IHRydWU7CisgICAgICAgIG1feG1sRGVjbGFyYXRpb25EYXRhLT5t
X3N0YW5kYWxvbmUgPSBzdGFuZGFsb25lOworICAgIH0KKworICAgIHZvaWQgYmVnaW5Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24oKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tl
blR5cGVzOjpVbmluaXRpYWxpemVkKTsKKyAgICAgICAgbV90eXBlID0gWE1MVG9rZW5UeXBlczo6
UHJvY2Vzc2luZ0luc3RydWN0aW9uOworICAgIH0KKworICAgIHZvaWQgYmVnaW5Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24oVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNoYXJh
Y3Rlcik7CisgICAgICAgIGJlZ2luUHJvY2Vzc2luZ0luc3RydWN0aW9uKCk7CisgICAgICAgIG1f
dGFyZ2V0LmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kVG9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXQoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOwor
ICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICAgICAgbV90YXJnZXQuYXBwZW5kKGNoYXJh
Y3Rlcik7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRUb1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkRh
dGEoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxU
b2tlblR5cGVzOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOworICAgICAgICBBU1NFUlQoY2hhcmFj
dGVyKTsKKyAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0KKworICAgIHZv
aWQgYmVnaW5DREFUQSgpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2Vu
VHlwZXM6OlVuaW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5cGUgPSBYTUxUb2tlblR5cGVzOjpD
REFUQTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFRvQ0RBVEEoVUNoYXIgY2hhcmFjdGVyKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpDREFUQSk7Cisg
ICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rl
cik7CisgICAgfQorCisgICAgdm9pZCBiZWdpbkVudGl0eSgpCisgICAgeworICAgICAgICBBU1NF
UlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5
cGUgPSBYTUxUb2tlblR5cGVzOjpFbnRpdHk7CisgICAgfQorCisgICAgdm9pZCBiZWdpbkVudGl0
eShVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAg
ICAgICAgYmVnaW5FbnRpdHkoKTsKKyAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOwor
ICAgIH0KKworI2lmbmRlZiBOREVCVUcKKyAgICB2b2lkIHByaW50KCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6VW5p
bml0aWFsaXplZDoKKyAgICAgICAgICAgIHByaW50ZigiVU5JVElBTElaRUQiKTsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6UHJvY2Vzc2luZ0luc3Ry
dWN0aW9uOgorICAgICAgICAgICAgcHJpbnRmKCJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246ICIpOwor
ICAgICAgICAgICAgcHJpbnRmKCI8PyIpOworICAgICAgICAgICAgcHJpbnRTdHJpbmcobV90YXJn
ZXQpOworICAgICAgICAgICAgcHJpbnRmKCIgIik7CisgICAgICAgICAgICBwcmludFN0cmluZyht
X2RhdGEpOworICAgICAgICAgICAgcHJpbnRmKCI/PiIpOworICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpYTUxEZWNsYXJhdGlvbjoKKyAgICAgICAgICAg
IHByaW50ZigiWE1MIERlY2xhcmF0aW9uOiAiKTsKKyAgICAgICAgICAgIHByaW50ZigiPD94bWwg
dmVyc2lvbj1cIiIpOworICAgICAgICAgICAgQVNTRVJUKG1feG1sRGVjbGFyYXRpb25EYXRhKTsK
KyAgICAgICAgICAgIHByaW50U3RyaW5nKG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX3ZlcnNpb24p
OworICAgICAgICAgICAgcHJpbnRmKCJcIiIpOworICAgICAgICAgICAgaWYgKG1feG1sRGVjbGFy
YXRpb25EYXRhLT5tX2hhc0VuY29kaW5nKSB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCIgZW5j
b2Rpbmc9XCIiKTsKKyAgICAgICAgICAgICAgICBwcmludFN0cmluZyhtX3htbERlY2xhcmF0aW9u
RGF0YS0+bV9lbmNvZGluZyk7CisgICAgICAgICAgICAgICAgcHJpbnRmKCJcIiIpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX2hhc1N0YW5k
YWxvbmUpCisgICAgICAgICAgICAgICAgcHJpbnRmKCIgc3RhbmRhbG9uZT1cIiVzXCIiLCBtX3ht
bERlY2xhcmF0aW9uRGF0YS0+bV9zdGFuZGFsb25lID8gInllcyIgOiAibm8iKTsKKyAgICAgICAg
ICAgIHByaW50ZigiPz4iKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgWE1M
VG9rZW5UeXBlczo6RE9DVFlQRToKKyAgICAgICAgICAgIHByaW50ZigiRE9DVFlQRTogIik7Cisg
ICAgICAgICAgICBBU1NFUlQobV9kb2N0eXBlRGF0YSk7CisgICAgICAgICAgICBwcmludGYoIjwh
RE9DVFlQRSAiKTsKKyAgICAgICAgICAgIHByaW50U3RyaW5nKG1fZGF0YSk7CisgICAgICAgICAg
ICBpZiAobV9kb2N0eXBlRGF0YS0+bV9oYXNQdWJsaWNJZGVudGlmaWVyKSB7CisgICAgICAgICAg
ICAgICAgcHJpbnRmKCIgUFVCTElDIFwiIik7CisgICAgICAgICAgICAgICAgcHJpbnRTdHJpbmco
bV9kb2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICBwcmlu
dGYoIlwiIik7CisgICAgICAgICAgICAgICAgaWYgKG1fZG9jdHlwZURhdGEtPm1faGFzU3lzdGVt
SWRlbnRpZmllcikgeworICAgICAgICAgICAgICAgICAgICBwcmludGYoIiBcIiIpOworICAgICAg
ICAgICAgICAgICAgICBwcmludFN0cmluZyhtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZp
ZXIpOworICAgICAgICAgICAgICAgICAgICBwcmludGYoIlwiIik7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSBlbHNlIGlmIChtX2RvY3R5cGVEYXRhLT5tX2hhc1N5c3RlbUlkZW50
aWZpZXIpIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIiBTWVNURU0gXCIiKTsKKyAgICAgICAg
ICAgICAgICBwcmludFN0cmluZyhtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXIpOwor
ICAgICAgICAgICAgICAgIHByaW50ZigiXCIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHByaW50ZigiPiIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBYTUxUb2tl
blR5cGVzOjpBdHRyaWJ1dGVMaXN0RGVjbGFyYXRpb246CisgICAgICAgICAgICBwcmludGYoIkF0
dHJpYnV0ZSBMaXN0OiAiKTsKKyAgICAgICAgICAgIHByaW50ZigiPCFBVFRMSVNUPiIpOworICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpFbGVtZW50RGVj
bGFyYXRpb246CisgICAgICAgICAgICBwcmludGYoIkVsZW1lbnQgRGVjbGFyYXRpb246ICIpOwor
ICAgICAgICAgICAgcHJpbnRmKCI8IUVMRU1FTlQ+Iik7CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkVudGl0eURlY2xhcmF0aW9uOgorICAgICAgICAg
ICAgcHJpbnRmKCJFbnRpdHkgRGVjbGFyYXRpb246ICIpOworICAgICAgICAgICAgcHJpbnRmKCI8
IUVOVElUWT4iKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgWE1MVG9rZW5U
eXBlczo6Q0RBVEE6CisgICAgICAgICAgICBwcmludGYoIkNEQVRBOiAiKTsKKyAgICAgICAgICAg
IHByaW50ZigiPCFbQ0RBVEFbIik7CisgICAgICAgICAgICBwcmludFN0cmluZyhtX2RhdGEpOwor
ICAgICAgICAgICAgcHJpbnRmKCJdXT4iKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgWE1MVG9rZW5UeXBlczo6U3RhcnRUYWc6CisgICAgICAgICAgICBwcmludGYoIlN0YXJ0
IFRhZzogIik7CisgICAgICAgICAgICBwcmludGYoIjwiKTsKKyAgICAgICAgICAgIHByaW50U3Ry
aW5nKG1fZGF0YSk7CisgICAgICAgICAgICBwcmludEF0dHJzKCk7CisgICAgICAgICAgICBpZiAo
c2VsZkNsb3NpbmcoKSkKKyAgICAgICAgICAgICAgICBwcmludGYoIi8iKTsKKyAgICAgICAgICAg
IHByaW50ZigiPiIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBYTUxUb2tl
blR5cGVzOjpFbmRUYWc6CisgICAgICAgICAgICBwcmludGYoIkVuZCBUYWc6ICIpOworICAgICAg
ICAgICAgcHJpbnRmKCI8LyIpOworICAgICAgICAgICAgcHJpbnRTdHJpbmcobV9kYXRhKTsKKyAg
ICAgICAgICAgIHByaW50ZigiPiIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBYTUxUb2tlblR5cGVzOjpDb21tZW50OgorICAgICAgICAgICAgcHJpbnRmKCJDb21tZW50OiAi
KTsKKyAgICAgICAgICAgIHByaW50ZigiPCEtLSIpOworICAgICAgICAgICAgcHJpbnRTdHJpbmco
bV9kYXRhKTsKKyAgICAgICAgICAgIHByaW50ZigiLS0+Iik7CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkNoYXJhY3RlcjoKKyAgICAgICAgICAgIHBy
aW50ZigiQ2hhcmFjdGVyczogIik7CisgICAgICAgICAgICBwcmludFN0cmluZyhtX2RhdGEpOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpFbnRpdHk6
CisgICAgICAgICAgICBwcmludGYoIkVudGl0eTogIik7CisgICAgICAgICAgICBwcmludGYoIiYi
KTsKKyAgICAgICAgICAgIHByaW50U3RyaW5nKG1fZGF0YSk7CisgICAgICAgICAgICBwcmludGYo
IjsiKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6
RW5kT2ZGaWxlOgorICAgICAgICAgICAgcHJpbnRmKCJFT0YiKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgcHJpbnRmKCJcbiIpOworICAgIH0KKyNlbmRpZiAvLyBO
REVCVUcKKworcHJpdmF0ZToKKyAgICB0eXBlZGVmIEJhc2VEb2N0eXBlRGF0YSBEb2N0eXBlRGF0
YTsKKworICAgIGNsYXNzIFhNTERlY2xhcmF0aW9uRGF0YSB7CisgICAgICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFhNTERlY2xhcmF0aW9uRGF0YSk7CisgICAgcHVibGljOgorICAgICAgICBYTUxE
ZWNsYXJhdGlvbkRhdGEoKQorICAgICAgICAgICAgOiBtX2hhc1N0YW5kYWxvbmUoZmFsc2UpCisg
ICAgICAgICAgICAsIG1faGFzRW5jb2RpbmcoZmFsc2UpCisgICAgICAgICAgICAsIG1fc3RhbmRh
bG9uZShmYWxzZSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29s
IG1faGFzU3RhbmRhbG9uZTsKKyAgICAgICAgYm9vbCBtX2hhc0VuY29kaW5nOworICAgICAgICBi
b29sIG1fc3RhbmRhbG9uZTsKKyAgICAgICAgV1RGOjpWZWN0b3I8VUNoYXI+IG1fZW5jb2Rpbmc7
CisgICAgICAgIFdURjo6VmVjdG9yPFVDaGFyPiBtX3ZlcnNpb247CisgICAgfTsKKworICAgIC8v
ICJ0YXJnZXQiIGZvciBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24KKyAgICBEYXRhVmVjdG9yIG1fdGFy
Z2V0OworICAgIAorICAgIC8vIEZvciBYTUwgRGVjbGFyYXRpb24KKyAgICBPd25QdHI8WE1MRGVj
bGFyYXRpb25EYXRhPiBtX3htbERlY2xhcmF0aW9uRGF0YTsKK307CisKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101488</attachid>
            <date>2011-07-20 11:34:39 -0700</date>
            <delta_ts>2011-07-20 12:51:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64764-20110720113438.patch</filename>
            <type>text/plain</type>
            <size>86279</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEyMTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNWFmNDRjOWQ2MDMyMGIw
MTFiNWI3N2YwZGE4YTZlYmNkM2JiYjFlLi4xZmZkYzhiYzFhNmIzYWFkMjQ5ZGZkN2RiNTEwZjE1
MmJmZTViMWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY1IEBACisyMDExLTA3LTIwICBKZWZm
cmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgTmV3IFRva2VuIGNsYXNzIGZv
ciBYTUwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0
NzY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBSZWZhY3Rv
ciBIVE1MVG9rZW4gaW50byBNYXJrdXBUb2tlbkJhc2UgYW5kIGFkZCBuZXcgWE1MVG9rZW4KKwor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkU291cmNlKToKKyAgICAgICAgKiBodG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29u
c3RydWN0aW9uU2l0ZTo6aW5zZXJ0RG9jdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29u
c3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29u
c3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudE9uRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnRPbkhUTUxIdG1sRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0U2VsZkNsb3Np
bmdIVE1MRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6
aW5zZXJ0Rm9yZWlnbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlv
blNpdGU6OmNyZWF0ZUhUTUxFbGVtZW50RnJvbVNhdmVkRWxlbWVudCk6CisgICAgICAgICogaHRt
bC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZXRhQ2hhcnNldFBhcnNlcjo6Y2hlY2tGb3JNZXRhQ2hhcnNldCk6CisgICAgICAgICogaHRt
bC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQ
cmVsb2FkU2Nhbm5lcjo6cHJvY2Vzc1Rva2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1M
U291cmNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU291cmNlVHJhY2tlcjo6
c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNvdXJjZVRyYWNrZXI6OnNvdXJjZUZvclRv
a2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUb2tlblR5cGVzOjpEb2N0eXBlRGF0YTo6RG9jdHlwZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRva2VuOjphcHBlbmRUb05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRva2VuOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6Zm9yY2VRdWlya3Mp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpzZXRGb3JjZVF1aXJrcyk6CisgICAgICAg
IChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OkF0b21pY0hUTUxUb2tlbik6CisgICAgICAgIChX
ZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWlj
SFRNTFRva2VuOjpzZWxmQ2xvc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9r
ZW46OmNoYXJhY3RlcnMpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpjb21t
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6cHVibGljSWRlbnRpZmll
cik6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OnN5c3RlbUlkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpmb3JjZVF1aXJrcyk6CisgICAg
ICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OnVzZXNOYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkF0b21pY0hUTUxUb2tlbjo6dXNlc0F0dHJpYnV0ZXMpOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxUb2tlbml6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6
c2F2ZUVuZFRhZ05hbWVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVy
OjpmbHVzaEJ1ZmZlcmVkRW5kVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6
Om5leHRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpoYXZlQnVmZmVy
ZWRDaGFyYWN0ZXJUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZy
b21Ub2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tl
bik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NEb2N0eXBlVG9r
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZVN0YXJ0
VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VFbmRU
YWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZVBFbmRU
YWdJZlBJbkJ1dHRvblNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0lzaW5kZXhTdGFydFRhZ0ZvckluQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluQm9keSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluVGFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQm9keUVuZFRhZ0ZvckluQm9keSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NBbnlPdGhlckVuZFRhZ0Zvcklu
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdG
b3JJblRhYmxlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NFbmRUYWdGb3JJblJvdyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NFbmRUYWdGb3JJbkNlbGwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzRW5kVGFnRm9ySW5Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
ZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc0NvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzQ2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0VuZE9mRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmRl
ZmF1bHRGb3JCZWZvcmVIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6
ZGVmYXVsdEZvckJlZm9yZUhlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
OjpkZWZhdWx0Rm9ySW5IZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6
ZGVmYXVsdEZvckluSGVhZE5vc2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVp
bGRlcjo6ZGVmYXVsdEZvckFmdGVySGVhZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluSGVhZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUkNEQVRBU3RhcnRUYWcpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1Jhd1RleHRTdGFydFRhZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTY3JpcHRTdGFydFRhZyk6
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VQYXJzZXI6OnVwZGF0ZVRva2VuaXplclN0YXRlKToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dERvY3VtZW50UGFyc2VyOjppbnNlcnRGYWtlUHJlRWxlbWVudCk6CisgICAg
ICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU1NB
dWRpdG9yOjpmaWx0ZXJUb2tlbkluaXRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRv
cjo6ZmlsdGVyVG9rZW5BZnRlclNjcmlwdFN0YXJ0VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OlhT
U0F1ZGl0b3I6OmZpbHRlclNjcmlwdFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0
b3I6OmZpbHRlck9iamVjdFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZp
bHRlclBhcmFtVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyRW1i
ZWRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJBcHBsZXRUb2tl
bik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJJZnJhbWVUb2tlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJNZXRhVG9rZW4pOgorICAgICAgICAo
V2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyQmFzZVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6
OlhTU0F1ZGl0b3I6OmZpbHRlckZvcm1Ub2tlbik6CisgICAgICAgICogeG1sL3BhcnNlci9NYXJr
dXBUb2tlbkJhc2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N0eXBlRGF0YUJhc2U6
OkRvY3R5cGVEYXRhQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6Ok1h
cmt1cFRva2VuQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6On5NYXJr
dXBUb2tlbkJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OmlzVW5pbml0aWFsaXplZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OnN0YXJ0SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjplbmRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpN
YXJrdXBUb2tlbkJhc2U6OnNldEJhc2VPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3Vw
VG9rZW5CYXNlOjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjptYWtl
RW5kT2ZGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuQmFzZTo6YmVnaW5TdGFy
dFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OmJlZ2luRW5kVGFnKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuQmFzZTo6ZW5zdXJlSXNDaGFyYWN0ZXJUb2tl
bik6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OmJlZ2luQ29tbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OmJlZ2luRE9DVFlQRSk6CisgICAgICAg
IChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OmFwcGVuZFRvQ2hhcmFjdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1hcmt1cFRva2VuQmFzZTo6YXBwZW5kVG9Db21tZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1hcmt1cFRva2VuQmFzZTo6YWRkTmV3QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1hcmt1cFRva2VuQmFzZTo6YmVnaW5BdHRyaWJ1dGVOYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1hcmt1cFRva2VuQmFzZTo6ZW5kQXR0cmlidXRlTmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNYXJrdXBUb2tlbkJhc2U6OmJlZ2luQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWFya3VwVG9rZW5CYXNlOjplbmRBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNYXJrdXBUb2tlbkJhc2U6OmFwcGVuZFRvQXR0cmlidXRlTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpNYXJrdXBUb2tlbkJhc2U6OmFwcGVuZFRvQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1
cFRva2VuQmFzZTo6c2VsZkNsb3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5C
YXNlOjpzZXRTZWxmQ2xvc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6
OmF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjplcmFzZUNo
YXJhY3RlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjplcmFzZVZhbHVl
T2ZBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjpjaGFyYWN0
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuQmFzZTo6Y29tbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OnB1YmxpY0lkZW50aWZpZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjpzeXN0ZW1JZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1hcmt1cFRva2VuQmFzZTo6c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjpzZXRTeXN0ZW1JZGVudGlm
aWVyVG9FbXB0eVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OmFw
cGVuZFRvUHVibGljSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJh
c2U6OmFwcGVuZFRvU3lzdGVtSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBU
b2tlbkJhc2U6OnByaW50U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuQmFz
ZTo6cHJpbnRBdHRycyk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OmFwcGVu
ZFRvTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6Om5hbWUpOgorICAg
ICAgICAqIHhtbC9wYXJzZXIvWE1MVG9rZW4uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpY
TUxUb2tlbjo6WE1MVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW46OmNsZWFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuOjphcHBlbmRUb05hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MVG9rZW46Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW46OmJlZ2lu
RE9DVFlQRSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6YmVnaW5YTUxEZWNsYXJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6YXBwZW5kVG9YTUxWZXJzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTFRva2VuOjpiZWdpblhNTEVuY29kaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlhNTFRva2VuOjphcHBlbmRUb1hNTEVuY29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlhNTFRva2VuOjpzZXRYTUxTdGFuZGFsb25lKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2Vu
OjpiZWdpblByb2Nlc3NpbmdJbnN0cnVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tl
bjo6YXBwZW5kVG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MVG9rZW46OmFwcGVuZFRvUHJvY2Vzc2luZ0luc3RydWN0aW9uRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpYTUxUb2tlbjo6YmVnaW5DREFUQSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxU
b2tlbjo6YXBwZW5kVG9DREFUQSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6YmVnaW5F
bnRpdHkpOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW46OnByaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlhNTFRva2VuOjpYTUxEZWNsYXJhdGlvbkRhdGE6OlhNTERlY2xhcmF0aW9uRGF0YSk6
CisKIDIwMTEtMDctMTggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBTcGVjaWZ5IGEgY2FzY2FkZSBsaXN0IGNvbnNpc3Rpbmcgb2YgdGhlIGxhc3QgcmVzb3J0IGZv
bnQgZm9yIENvcmUgVGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNDMzMWFk
YTUwM2EzN2RkNTAwMjc2NzkxYmI2MDI5YjZiNjljZmY4OC4uYzZmODkyMmYxOWExMjY5ZDg3MDVj
MGM0YzM1ZTA1NzkyNTM1YWFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0z
ODAwLDYgKzM4MDAsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyVGhyZWFkLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBc
CisJU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaCBcCiAJU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIuaCBcCiAJU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4
IDY2NDk2NGJlNGFlMzg5YjhiMzJiOWU4ZDk4ZjljOGUzMDNhMTc0OWMuLmI4MjI1ZTI4OGY1M2Jm
NDU3YTkyZGU1YzA3NTUzMjkwMDEzMDc5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTYxMDQsNiAr
NjEwNCw3IEBACiAgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCcsCiAg
ICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQuaCcsCiAgICAgICAg
ICAgICAnd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwJywKKyAgICAgICAgICAgICd4bWwvcGFyc2Vy
L01hcmt1cFRva2VuQmFzZS5oJywKICAgICAgICAgICAgICd4bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAneG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5o
JywKICAgICAgICAgICAgICd4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnBybwppbmRleCBlYTY2NjgzNzhhNTY5Yzg2Y2NhN2ZiODAzNTZjOGZiNzIxZDkx
ZDJkLi4zNGJmNDU1YzU3YmJlNjI0ZTkwMjJmZWI2OTYzNThjZWZiYTY3Y2Y4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybwpAQCAtMjQ5Niw2ICsyNDk2LDcgQEAgSEVBREVSUyArPSBcCiAgICAgd29ya2Vycy9Xb3Jr
ZXJSdW5Mb29wLmggXAogICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggXAogICAgIHdv
cmtlcnMvV29ya2VyVGhyZWFkLmggXAorICAgIHhtbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmgg
XAogICAgIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaCBcCiAgICAgeG1sL0RPTVBhcnNl
ci5oIFwKICAgICB4bWwvTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmggXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBjNTQ1YjlmZDczNmNiYTJlNDI0
ZDdlMzU5YTEzMTJmNGIxMDM3NmVkLi40YjcyNmQzOTE0YWE2M2NlMzg1ZmRmYTU2OGNmNjY5MzY2
MzQzMTU2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agpAQCAtNDI0NDksNiArNDI0NDksMTAgQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJ
CQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlx4bWxccGFyc2VyXE1h
cmt1cFRva2VuQmFzZS5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJl
bGF0aXZlUGF0aD0iLi5ceG1sXHBhcnNlclxYTUxEb2N1bWVudFBhcnNlci5oIgogCQkJCQk+CiAJ
CQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDA5NTI3NTgzNWYyMjMxMWFmOGJhNGZhMjM5ODJjNWZhZjVhM2FmZjgu
LjZlZmYxYjYyYjg2NzcwN2Q5ZDc4ZTQ0YjIwNTU5MTA5MDgzOTgzN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ2LDkgKzQ2
LDExIEBACiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAJCTAwMDIyRTY5MTND
RTFCQkEwMDI4MkQ1QiAvKiBDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVNZXRob2RzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDAyMkU2ODEz
Q0UxQkJBMDAyODJENUIgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lTWV0aG9kcy5o
ICovOyB9OworCQkwMDAyRUM1ODEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwMDJFQzU1MTNDM0Y2N0Qw
MDA0MEQ0NyAvKiBYTUxUb2tlbi5oICovOyB9OwogCQkwMDE0NjI4QTEwM0NEMURFMDAwQjIwREIg
LyogT3JpZ2luQWNjZXNzRW50cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDAxNDYyODgxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0Vu
dHJ5LmNwcCAqLzsgfTsKIAkJMDAxNDYyOEIxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vz
c0VudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
MDE0NjI4OTEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuaCAqLzsgfTsKIAkJ
MDAzRjFGRUExMUU2QUI0MzAwODI1OEQ5IC8qIFVzZXJDb250ZW50VHlwZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwM0YxRkU5MTFFNkFCNDMwMDgy
NThEOSAvKiBVc2VyQ29udGVudFR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDBBNjI5QzExM0QwQkVDNzAwNTBBQzUyIC8qIE1hcmt1cFRv
a2VuQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDBBNjI5QzAxM0QwQkVDNzAwNTBBQzUyIC8qIE1hcmt1cFRva2VuQmFzZS5oICovOyB9OwogCQkw
MEI5MzE4NzEzQkE4REIzMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBCOTMxODExM0JBODY3RjAw
MzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmNwcCAqLzsgfTsKIAkJMDBCOTMxODgxM0JBOERC
QTAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEI5MzE4MjEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9j
dW1lbnRQYXJzZXIuaCAqLzsgfTsKIAkJMDBCOTMxODkxM0JBOERCQzAwMzVBOTQ4IC8qIFhNTERv
Y3VtZW50UGFyc2VyTGlieG1sMi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwMEI5MzE4MzEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcCAqLzsgfTsKQEAgLTY0MDgsOSArNjQxMCwxMSBAQAogCiAvKiBCZWdpbiBQ
QlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAkJMDAwMjJFNjgxM0NFMUJCQTAwMjgyRDVCIC8q
IENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZU1ldGhvZHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lTWV0aG9kcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwMDAyRUM1NTEzQzNGNjdEMDAwNDBENDcg
LyogWE1MVG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWE1MVG9rZW4u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDAxNDYyODgxMDNDRDFERTAwMEIyMERC
IC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE9yaWdpbkFjY2Vzc0VudHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDAxNDYyODkxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9yaWdpbkFjY2Vzc0VudHJ5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwM0YxRkU5MTFFNkFCNDMwMDgyNThEOSAvKiBVc2VyQ29u
dGVudFR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJDb250ZW50
VHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDBBNjI5QzAxM0QwQkVDNzAw
NTBBQzUyIC8qIE1hcmt1cFRva2VuQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNYXJrdXBUb2tlbkJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBC
OTMxODExM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTERvY3VtZW50UGFyc2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBCOTMxODIxM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERv
Y3VtZW50UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTERvY3Vt
ZW50UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwQjkzMTgzMTNCQTg2
N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzEwLDYgKzEyNzE0LDcgQEAKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMDAwMjJFNjgxM0NFMUJCQTAwMjgyRDVC
IC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZU1ldGhvZHMuaCAqLywKKwkJCQkwMEE2
MjlDMDEzRDBCRUM3MDA1MEFDNTIgLyogTWFya3VwVG9rZW5CYXNlLmggKi8sCiAJCQkJMDBDQTkz
QjQxM0M2Njk3QzAwRjdGRTk1IC8qIE5ld1hNTERvY3VtZW50UGFyc2VyLmNwcCAqLywKIAkJCQkw
MENBOTNCMTEzQzY2OTE2MDBGN0ZFOTUgLyogTmV3WE1MRG9jdW1lbnRQYXJzZXIuaCAqLywKIAkJ
CQkwMEQwNDY0ODEzQzREMTQ1MDAzMjZGQ0MgLyogWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2Vy
LmNwcCAqLywKQEAgLTEyNzE5LDYgKzEyNzI0LDcgQEAKIAkJCQkwMEI5MzE4MzEzQkE4NjdGMDAz
NUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCAqLywKIAkJCQkwMEI5MzE4NTEz
QkE4NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5jcHAgKi8sCiAJCQkJMDBC
OTMxODYxM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyU2NvcGUuaCAqLywKKwkJ
CQkwMDAyRUM1NTEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCAqLywKIAkJCSk7CiAJCQlw
YXRoID0gcGFyc2VyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIyMTAzLDYgKzIy
MTA5LDcgQEAKIAkJCQlBOEM0QTg0QzA5RDU2NDlEMDAwM0FDOEQgLyogTWFwcGVkQXR0cmlidXRl
RW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REY4MDk5RTY0OTIwMDU2RTU4MSAvKiBt
YXJrdXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3MjhDMzE0MTI2OEU0MzkwMDQxRTg5QiAvKiBN
YXJrdXBBY2N1bXVsYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDBBNjI5QzExM0QwQkVDNzAw
NTBBQzUyIC8qIE1hcmt1cFRva2VuQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkFCRTcyRjUx
MDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0
QTI4QUFDMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkFCRTcyRjcxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTElubGluZUNvbnRh
aW5lckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjMwNzgsNiArMjMwODUsNyBAQAogCQkJ
CUE4MzNDODBEMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTE1QTM2RDcxMTA0NTcyMDAwQjdCNjM5IC8qIFhNTE5TTmFtZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBQ0U1M0VCMEE4RDE4RTcwMDIyOTQ3RCAvKiBYTUxTZXJpYWxpemVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwMDAyRUM1ODEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU5MDVBREMwMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI3RkM2OTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhF
dmFsdWF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBEQTVCMEQyQTMxRjcwMEI5OTE4RiAv
KiBYUGF0aEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAppbmRleCAxYTcwZGZjMTlkNTVhYWQ2Y2Y0MWVl
NzhkMGMyOWU3ZmI1NTlkNmMxLi40MDJmYWI4N2U1YTIwMzE3NzZhZDYyZmIwNzRiOGQzM2NmZDJh
Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5j
cHAKQEAgLTEwNCwyNCArMTA0LDI0IEBAIHZvaWQgSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRk
U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBj
cmVhdGVDb250YWluaW5nVGFibGUoKTsKIAogICAgIHN3aXRjaCAodG9rZW4udHlwZSgpKSB7Ci0g
ICAgY2FzZSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQ6CisgICAgY2FzZSBIVE1MVG9rZW5UeXBl
czo6VW5pbml0aWFsaXplZDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuOjpET0NUWVBFOgorICAgIGNhc2UgSFRNTFRva2Vu
VHlwZXM6OkRPQ1RZUEU6CiAgICAgICAgIHByb2Nlc3NEb2N0eXBlVG9rZW4oc291cmNlLCB0b2tl
bik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuOjpFbmRPZkZpbGU6CisgICAg
Y2FzZSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxlOgogICAgICAgICBpZiAoIW1fdGJvZHktPmhh
c0NoaWxkTm9kZXMoKSkKICAgICAgICAgICAgIGFkZExpbmUoU3RyaW5nKCkpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEhUTUxUb2tlbjo6U3RhcnRUYWc6Ci0gICAgY2FzZSBIVE1MVG9rZW46
OkVuZFRhZzoKKyAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZzoKKyAgICBjYXNlIEhU
TUxUb2tlblR5cGVzOjpFbmRUYWc6CiAgICAgICAgIHByb2Nlc3NUYWdUb2tlbihzb3VyY2UsIHRv
a2VuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW46OkNvbW1lbnQ6CisgICAg
Y2FzZSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudDoKICAgICAgICAgcHJvY2Vzc0NvbW1lbnRUb2tl
bihzb3VyY2UsIHRva2VuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW46OkNo
YXJhY3RlcjoKKyAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXI6CiAgICAgICAgIHBy
b2Nlc3NDaGFyYWN0ZXJUb2tlbihzb3VyY2UsIHRva2VuKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlv
blNpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNp
dGUuY3BwCmluZGV4IDhlOWMyNmEyMWFiZmM4NWE1ZTcwYjIxYTQwODM0Njg1ZDFjN2JjMzIuLjE0
YWRlYmQ1ZTlmZDAwYjczMTY2NWFjNzcyOGIxOTdhMTZiZTQzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKQEAgLTIyMyw3
ICsyMjMsNyBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MQm9keVN0YXJ0
VGFnSW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAKIHZvaWQgSFRNTENvbnN0cnVjdGlv
blNpdGU6Omluc2VydERvY3R5cGUoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NF
UlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RE9DVFlQRSk7CisgICAgQVNTRVJUKHRva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CiAgICAgYXR0YWNoKG1fYXR0YWNo
bWVudFJvb3QsIERvY3VtZW50VHlwZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHRva2VuLm5hbWUoKSwg
U3RyaW5nOjphZG9wdCh0b2tlbi5wdWJsaWNJZGVudGlmaWVyKCkpLCBTdHJpbmc6OmFkb3B0KHRv
a2VuLnN5c3RlbUlkZW50aWZpZXIoKSkpKTsKICAgICAKICAgICAvLyBET0NUWVBFIG5vZGVzIGFy
ZSBvbmx5IHByb2Nlc3NlZCB3aGVuIHBhcnNpbmcgZnJhZ21lbnRzIHcvbyBjb250ZXh0RWxlbWVu
dHMsIHdoaWNoCkBAIC0yNDMsMTkgKzI0MywxOSBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRl
OjppbnNlcnREb2N0eXBlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAKIHZvaWQgSFRNTENvbnN0
cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnQoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAg
ICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6Q29tbWVudCk7CisgICAgQVNTRVJU
KHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudCk7CiAgICAgYXR0YWNoKGN1
cnJlbnROb2RlKCksIENvbW1lbnQ6OmNyZWF0ZShjdXJyZW50Tm9kZSgpLT5kb2N1bWVudCgpLCB0
b2tlbi5jb21tZW50KCkpKTsKIH0KIAogdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0
Q29tbWVudE9uRG9jdW1lbnQoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQo
dG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6Q29tbWVudCk7CisgICAgQVNTRVJUKHRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudCk7CiAgICAgYXR0YWNoKG1fYXR0YWNobWVu
dFJvb3QsIENvbW1lbnQ6OmNyZWF0ZShtX2RvY3VtZW50LCB0b2tlbi5jb21tZW50KCkpKTsKIH0K
IAogdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudE9uSFRNTEh0bWxFbGVt
ZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9
PSBIVE1MVG9rZW46OkNvbW1lbnQpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRv
a2VuVHlwZXM6OkNvbW1lbnQpOwogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IG1fb3BlbkVs
ZW1lbnRzLnJvb3ROb2RlKCk7CiAgICAgYXR0YWNoKHBhcmVudCwgQ29tbWVudDo6Y3JlYXRlKHBh
cmVudC0+ZG9jdW1lbnQoKSwgdG9rZW4uY29tbWVudCgpKSk7CiB9CkBAIC0yOTcsNyArMjk3LDcg
QEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEVsZW1lbnQoQXRvbWljSFRN
TFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0U2VsZkNs
b3NpbmdIVE1MRWxlbWVudChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0
b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIFJlZlB0cjxFbGVtZW50PiBl
bGVtZW50ID0gYXR0YWNoVG9DdXJyZW50KGNyZWF0ZUhUTUxFbGVtZW50KHRva2VuKSk7CiAgICAg
Ly8gTm9ybWFsbHkgSFRNTEVsZW1lbnRTdGFjayBpcyByZXNwb25zaWJsZSBmb3IgY2FsbGluZyBm
aW5pc2hQYXJzaW5nQ2hpbGRyZW4sCiAgICAgLy8gYnV0IHNlbGYtY2xvc2luZyBlbGVtZW50cyBh
cmUgbmV2ZXIgaW4gdGhlIGVsZW1lbnQgc3RhY2sgc28gdGhlIHN0YWNrCkBAIC0zMjYsNyArMzI2
LDcgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0U2NyaXB0RWxlbWVudChBdG9t
aWNIVE1MVG9rZW4mIHRva2VuKQogCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRG
b3JlaWduRWxlbWVudChBdG9taWNIVE1MVG9rZW4mIHRva2VuLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWVzcGFjZVVSSSkKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6
U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0
YXJ0VGFnKTsKICAgICBub3RJbXBsZW1lbnRlZCgpOyAvLyBwYXJzZUVycm9yIHdoZW4geG1sbnMg
b3IgeG1sbnM6eGxpbmsgYXJlIHdyb25nLgogCiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQg
PSBhdHRhY2hUb0N1cnJlbnQoY3JlYXRlRWxlbWVudCh0b2tlbiwgbmFtZXNwYWNlVVJJKSk7CkBA
IC00MjEsNyArNDIxLDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBIVE1MQ29uc3RydWN0aW9uU2l0
ZTo6Y3JlYXRlSFRNTEVsZW1lbnRGcm9tU2F2ZWRFbGVtZW50KEVsZW0KICAgICAvLyBzcGVjIGlt
cGxpZXMgaXQgc2hvdWxkIGJlICIxIi4gIE1pbmVmaWVsZCBtYXRjaGVzIHRoZSBIVE1MNSBzcGVj
IGhlcmUuCiAKICAgICBBU1NFUlQoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpKTsgLy8gb3RoZXJ3
aXNlIGxvY2FsTmFtZSgpIG1pZ2h0IGJlIHdyb25nLgotICAgIEF0b21pY0hUTUxUb2tlbiBmYWtl
VG9rZW4oSFRNTFRva2VuOjpTdGFydFRhZywgZWxlbWVudC0+bG9jYWxOYW1lKCksIGNsb25lQXR0
cmlidXRlcyhlbGVtZW50KSk7CisgICAgQXRvbWljSFRNTFRva2VuIGZha2VUb2tlbihIVE1MVG9r
ZW5UeXBlczo6U3RhcnRUYWcsIGVsZW1lbnQtPmxvY2FsTmFtZSgpLCBjbG9uZUF0dHJpYnV0ZXMo
ZWxlbWVudCkpOwogICAgIHJldHVybiBjcmVhdGVIVE1MRWxlbWVudChmYWtlVG9rZW4pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFy
c2VyLmNwcAppbmRleCA1NDEzNDY2OTk2OTRhOTFjOGYzZjNhMGE3MWFlMzI5NTZkMDJiNzBhLi45
Y2VhYWU5YWYwNjA5YmY3MmJmNjk4N2M5MmE2MDBlYTY3OGI0Y2QwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAKQEAgLTE3
NSw4ICsxNzUsOCBAQCBib29sIEhUTUxNZXRhQ2hhcnNldFBhcnNlcjo6Y2hlY2tGb3JNZXRhQ2hh
cnNldChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogICAgIG1faW5wdXQuYXBwZW5k
KFNlZ21lbnRlZFN0cmluZyhtX2Fzc3VtZWRDb2RlYy0+ZGVjb2RlKGRhdGEsIGxlbmd0aCkpKTsK
IAogICAgIHdoaWxlIChtX3Rva2VuaXplci0+bmV4dFRva2VuKG1faW5wdXQsIG1fdG9rZW4pKSB7
Ci0gICAgICAgIGJvb2wgZW5kID0gbV90b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWc7
Ci0gICAgICAgIGlmIChlbmQgfHwgbV90b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRh
ZykgeworICAgICAgICBib29sIGVuZCA9IG1fdG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVz
OjpFbmRUYWc7CisgICAgICAgIGlmIChlbmQgfHwgbV90b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
VHlwZXM6OlN0YXJ0VGFnKSB7CiAgICAgICAgICAgICBBdG9taWNTdHJpbmcgdGFnTmFtZShtX3Rv
a2VuLm5hbWUoKS5kYXRhKCksIG1fdG9rZW4ubmFtZSgpLnNpemUoKSk7CiAgICAgICAgICAgICBp
ZiAoIWVuZCkgewogICAgICAgICAgICAgICAgIG1fdG9rZW5pemVyLT51cGRhdGVTdGF0ZUZvcih0
YWdOYW1lLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
cmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9h
ZFNjYW5uZXIuY3BwCmluZGV4IDljMzBlZjkyZGUzMTBhMTViNWQ5MWNhMWI5MDA5OTcwMzc5ZjVi
NjEuLmI5NDIxZDg4NDRlNjlhYjcwYjk1YTY5ZjFiMTJhODBkNzJiMTBkY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtMTc0
LDE1ICsxNzQsMTUgQEAgdm9pZCBIVE1MUHJlbG9hZFNjYW5uZXI6OnNjYW4oKQogdm9pZCBIVE1M
UHJlbG9hZFNjYW5uZXI6OnByb2Nlc3NUb2tlbigpCiB7CiAgICAgaWYgKG1faW5TdHlsZSkgewot
ICAgICAgICBpZiAobV90b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIpCisgICAg
ICAgIGlmIChtX3Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKQogICAg
ICAgICAgICAgbV9jc3NTY2FubmVyLnNjYW4obV90b2tlbiwgc2Nhbm5pbmdCb2R5KCkpOwotICAg
ICAgICBlbHNlIGlmIChtX3Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZykgeworICAg
ICAgICBlbHNlIGlmIChtX3Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKSB7
CiAgICAgICAgICAgICBtX2luU3R5bGUgPSBmYWxzZTsKICAgICAgICAgICAgIG1fY3NzU2Nhbm5l
ci5yZXNldCgpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKG1fdG9rZW4udHlwZSgpICE9
IEhUTUxUb2tlbjo6U3RhcnRUYWcpCisgICAgaWYgKG1fdG9rZW4udHlwZSgpICE9IEhUTUxUb2tl
blR5cGVzOjpTdGFydFRhZykKICAgICAgICAgcmV0dXJuOwogCiAgICAgUHJlbG9hZFRhc2sgdGFz
ayhtX3Rva2VuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxT
b3VyY2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTb3VyY2VU
cmFja2VyLmNwcAppbmRleCBjZjQzMTA1ZDM5MjFhNjIyNjVkNmEyYTlmN2E3YWYwZWU1MWI1NWVi
Li43MGNmNzA5MTVhOGJmOGE5OTUwMTg5M2VlY2VjOWYxYzk4YmFmZWExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU291cmNlVHJhY2tlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuY3BwCkBAIC0zNCw3ICsz
NCw3IEBAIEhUTUxTb3VyY2VUcmFja2VyOjpIVE1MU291cmNlVHJhY2tlcigpCiAKIHZvaWQgSFRN
TFNvdXJjZVRyYWNrZXI6OnN0YXJ0KGNvbnN0IEhUTUxJbnB1dFN0cmVhbSYgaW5wdXQsIEhUTUxU
b2tlbiYgdG9rZW4pCiB7Ci0gICAgbV9zb3VyY2VGcm9tUHJldmlvdXNTZWdtZW50cyA9IHRva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQgPyBTdHJpbmcoKSA6IG1fc291cmNl
RnJvbVByZXZpb3VzU2VnbWVudHMgKyBtX3NvdXJjZS50b1N0cmluZygpOworICAgIG1fc291cmNl
RnJvbVByZXZpb3VzU2VnbWVudHMgPSB0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlVu
aW5pdGlhbGl6ZWQgPyBTdHJpbmcoKSA6IG1fc291cmNlRnJvbVByZXZpb3VzU2VnbWVudHMgKyBt
X3NvdXJjZS50b1N0cmluZygpOwogICAgIG1fc291cmNlID0gaW5wdXQuY3VycmVudCgpOwogICAg
IHRva2VuLnNldEJhc2VPZmZzZXQoaW5wdXQuY3VycmVudCgpLm51bWJlck9mQ2hhcmFjdGVyc0Nv
bnN1bWVkKCkgLSBtX3NvdXJjZUZyb21QcmV2aW91c1NlZ21lbnRzLmxlbmd0aCgpKTsKIH0KQEAg
LTQ4LDcgKzQ4LDcgQEAgdm9pZCBIVE1MU291cmNlVHJhY2tlcjo6ZW5kKGNvbnN0IEhUTUxJbnB1
dFN0cmVhbSYgaW5wdXQsIEhUTUxUb2tlbiYgdG9rZW4pCiAKIFN0cmluZyBIVE1MU291cmNlVHJh
Y2tlcjo6c291cmNlRm9yVG9rZW4oY29uc3QgSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBpZiAo
dG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5kT2ZGaWxlKQorICAgIGlmICh0b2tlbi50eXBl
KCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZE9mRmlsZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OyAvLyBIaWRlcyB0aGUgbnVsbCBjaGFyYWN0ZXIgd2UgdXNlIHRvIG1hcmsgdGhlIGVuZCBvZiBm
aWxlLgogCiAgICAgaWYgKCFtX2NhY2hlZFNvdXJjZUZvclRva2VuLmlzRW1wdHkoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKaW5kZXggNjdkYjY0NzA2Zjc5MzNkZjlhN2Jj
ZjgwYzJiYzE5MTM2N2JkNzk0NC4uMTQ3OWQwZDVlMjQyNzg5OWJhMDM5Y2Q1MzAxMDk0NTA0ODRj
MGY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKQEAgLTI2LDE0ICsy
NiwxMSBAQAogI2lmbmRlZiBIVE1MVG9rZW5faAogI2RlZmluZSBIVE1MVG9rZW5faAogCi0jaW5j
bHVkZSAiTmFtZWROb2RlTWFwLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSAiTWFya3VwVG9rZW5CYXNlLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTFRva2VuIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShIVE1MVG9rZW4pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK2NsYXNzIEhUTUxUb2tl
blR5cGVzIHsKIHB1YmxpYzoKICAgICBlbnVtIFR5cGUgewogICAgICAgICBVbmluaXRpYWxpemVk
LApAQCAtNDUsMzM5ICs0Miw0NSBAQCBwdWJsaWM6CiAgICAgICAgIEVuZE9mRmlsZSwKICAgICB9
OwogCi0gICAgY2xhc3MgUmFuZ2UgeworICAgIGNsYXNzIERvY3R5cGVEYXRhIDogcHVibGljIERv
Y3R5cGVEYXRhQmFzZSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERvY3R5cGVEYXRh
KTsKICAgICBwdWJsaWM6Ci0gICAgICAgIGludCBtX3N0YXJ0OwotICAgICAgICBpbnQgbV9lbmQ7
Ci0gICAgfTsKKyAgICAgICAgRG9jdHlwZURhdGEoKQorICAgICAgICAgICAgOiBEb2N0eXBlRGF0
YUJhc2UoKQorICAgICAgICAgICAgLCBtX2ZvcmNlUXVpcmtzKGZhbHNlKQorICAgICAgICB7Cisg
ICAgICAgIH0KIAotICAgIGNsYXNzIEF0dHJpYnV0ZSB7Ci0gICAgcHVibGljOgotICAgICAgICBS
YW5nZSBtX25hbWVSYW5nZTsKLSAgICAgICAgUmFuZ2UgbV92YWx1ZVJhbmdlOwotICAgICAgICBX
VEY6OlZlY3RvcjxVQ2hhciwgMzI+IG1fbmFtZTsKLSAgICAgICAgV1RGOjpWZWN0b3I8VUNoYXIs
IDMyPiBtX3ZhbHVlOworICAgICAgICBib29sIG1fZm9yY2VRdWlya3M7CiAgICAgfTsKK307CiAK
LSAgICB0eXBlZGVmIFdURjo6VmVjdG9yPEF0dHJpYnV0ZSwgMTA+IEF0dHJpYnV0ZUxpc3Q7Ci0g
ICAgdHlwZWRlZiBXVEY6OlZlY3RvcjxVQ2hhciwgMTAyND4gRGF0YVZlY3RvcjsKLQotICAgIEhU
TUxUb2tlbigpIHsgY2xlYXIoKTsgfQotCi0gICAgdm9pZCBjbGVhcigpCi0gICAgewotICAgICAg
ICBtX3R5cGUgPSBVbmluaXRpYWxpemVkOwotICAgICAgICBtX3JhbmdlLm1fc3RhcnQgPSAwOwot
ICAgICAgICBtX3JhbmdlLm1fZW5kID0gMDsKLSAgICAgICAgbV9iYXNlT2Zmc2V0ID0gMDsKLSAg
ICAgICAgbV9kYXRhLmNsZWFyKCk7Ci0gICAgfQotCi0gICAgYm9vbCBpc1VuaW5pdGlhbGl6ZWQo
KSB7IHJldHVybiBtX3R5cGUgPT0gVW5pbml0aWFsaXplZDsgfQotCi0gICAgaW50IHN0YXJ0SW5k
ZXgoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlLm1fc3RhcnQ7IH0KLSAgICBpbnQgZW5kSW5kZXgo
KSBjb25zdCB7IHJldHVybiBtX3JhbmdlLm1fZW5kOyB9Ci0KLSAgICB2b2lkIHNldEJhc2VPZmZz
ZXQoaW50IG9mZnNldCkKLSAgICB7Ci0gICAgICAgIG1fYmFzZU9mZnNldCA9IG9mZnNldDsKLSAg
ICB9Ci0KLSAgICB2b2lkIGVuZChpbnQgZW5kT2Zmc2V0KQotICAgIHsKLSAgICAgICAgbV9yYW5n
ZS5tX2VuZCA9IGVuZE9mZnNldCAtIG1fYmFzZU9mZnNldDsKLSAgICB9Ci0KLSAgICB2b2lkIG1h
a2VFbmRPZkZpbGUoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxp
emVkKTsKLSAgICAgICAgbV90eXBlID0gRW5kT2ZGaWxlOwotICAgIH0KLQotICAgIHZvaWQgYmVn
aW5TdGFydFRhZyhVQ2hhciBjaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQoY2hhcmFj
dGVyKTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxpemVkKTsKLSAgICAgICAg
bV90eXBlID0gU3RhcnRUYWc7Ci0gICAgICAgIG1fc2VsZkNsb3NpbmcgPSBmYWxzZTsKLSAgICAg
ICAgbV9jdXJyZW50QXR0cmlidXRlID0gMDsKLSAgICAgICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7
Ci0KLSAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOwotICAgIH0KLQotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBiZWdpbkVuZFRhZyhUIGNoYXJhY3RlcnMpCi0gICAg
ewotICAgICAgICBBU1NFUlQobV90eXBlID09IFVuaW5pdGlhbGl6ZWQpOwotICAgICAgICBtX3R5
cGUgPSBFbmRUYWc7Ci0gICAgICAgIG1fc2VsZkNsb3NpbmcgPSBmYWxzZTsKLSAgICAgICAgbV9j
dXJyZW50QXR0cmlidXRlID0gMDsKLSAgICAgICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7Ci0KLSAg
ICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXJzKTsKLSAgICB9Ci0KLSAgICAvLyBTdGFydGlu
ZyBhIGNoYXJhY3RlciB0b2tlbiB3b3JrcyBzbGlnaHRseSBkaWZmZXJlbnRseSB0aGFuIHN0YXJ0
aW5nCi0gICAgLy8gb3RoZXIgdHlwZXMgb2YgdG9rZW5zIGJlY2F1c2Ugd2Ugd2FudCB0byBzYXZl
IGEgcGVyLWNoYXJhY3RlciBicmFuY2guCi0gICAgdm9pZCBlbnN1cmVJc0NoYXJhY3RlclRva2Vu
KCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVW5pbml0aWFsaXplZCB8fCBtX3R5
cGUgPT0gQ2hhcmFjdGVyKTsKLSAgICAgICAgbV90eXBlID0gQ2hhcmFjdGVyOwotICAgIH0KLQot
ICAgIHZvaWQgYmVnaW5Db21tZW50KCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
VW5pbml0aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9IENvbW1lbnQ7Ci0gICAgfQotCi0gICAg
dm9pZCBiZWdpbkRPQ1RZUEUoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmlu
aXRpYWxpemVkKTsKLSAgICAgICAgbV90eXBlID0gRE9DVFlQRTsKLSAgICAgICAgbV9kb2N0eXBl
RGF0YSA9IGFkb3B0UHRyKG5ldyBEb2N0eXBlRGF0YSgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGJl
Z2luRE9DVFlQRShVQ2hhciBjaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQoY2hhcmFj
dGVyKTsKLSAgICAgICAgYmVnaW5ET0NUWVBFKCk7Ci0gICAgICAgIG1fZGF0YS5hcHBlbmQoY2hh
cmFjdGVyKTsKLSAgICB9Ci0KK2NsYXNzIEhUTUxUb2tlbiA6IHB1YmxpYyBNYXJrdXBUb2tlbkJh
c2U8SFRNTFRva2VuVHlwZXMsIEhUTUxUb2tlblR5cGVzOjpEb2N0eXBlRGF0YT4geworcHVibGlj
OgogICAgIHZvaWQgYXBwZW5kVG9OYW1lKFVDaGFyIGNoYXJhY3RlcikKICAgICB7Ci0gICAgICAg
IEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8
IG1fdHlwZSA9PSBFbmRUYWcgfHwgbV90eXBlID09IERPQ1RZUEUpOwotICAgICAgICBtX2RhdGEu
YXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAg
ICB2b2lkIGFwcGVuZFRvQ2hhcmFjdGVyKFQgY2hhcmFjdGVycykKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gQ2hhcmFjdGVyKTsKLSAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0
ZXJzKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGVuZFRvQ29tbWVudChVQ2hhciBjaGFyYWN0ZXIp
Ci0gICAgewotICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKLSAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBDb21tZW50KTsKLSAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOwotICAgIH0K
LQotICAgIHZvaWQgYWRkTmV3QXR0cmlidXRlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyk7Ci0gICAgICAgIG1fYXR0cmlidXRl
cy5ncm93KG1fYXR0cmlidXRlcy5zaXplKCkgKyAxKTsKLSAgICAgICAgbV9jdXJyZW50QXR0cmli
dXRlID0gJm1fYXR0cmlidXRlcy5sYXN0KCk7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICBtX2N1
cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fc3RhcnQgPSAwOwotICAgICAgICBtX2N1cnJl
bnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fZW5kID0gMDsKLSAgICAgICAgbV9jdXJyZW50QXR0
cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9zdGFydCA9IDA7Ci0gICAgICAgIG1fY3VycmVudEF0dHJp
YnV0ZS0+bV92YWx1ZVJhbmdlLm1fZW5kID0gMDsKLSNlbmRpZgotICAgIH0KLQotICAgIHZvaWQg
YmVnaW5BdHRyaWJ1dGVOYW1lKGludCBvZmZzZXQpCi0gICAgewotICAgICAgICBtX2N1cnJlbnRB
dHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fc3RhcnQgPSBvZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlw
ZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6
RE9DVFlQRSk7CisgICAgICAgIE1hcmt1cFRva2VuQmFzZTxIVE1MVG9rZW5UeXBlcywgSFRNTFRv
a2VuVHlwZXM6OkRvY3R5cGVEYXRhPjo6YXBwZW5kVG9OYW1lKGNoYXJhY3Rlcik7CiAgICAgfQot
Ci0gICAgdm9pZCBlbmRBdHRyaWJ1dGVOYW1lKGludCBvZmZzZXQpCi0gICAgewotICAgICAgICBp
bnQgaW5kZXggPSBvZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7Ci0gICAgICAgIG1fY3VycmVudEF0dHJp
YnV0ZS0+bV9uYW1lUmFuZ2UubV9lbmQgPSBpbmRleDsKLSAgICAgICAgbV9jdXJyZW50QXR0cmli
dXRlLT5tX3ZhbHVlUmFuZ2UubV9zdGFydCA9IGluZGV4OwotICAgICAgICBtX2N1cnJlbnRBdHRy
aWJ1dGUtPm1fdmFsdWVSYW5nZS5tX2VuZCA9IGluZGV4OwotICAgIH0KLQotICAgIHZvaWQgYmVn
aW5BdHRyaWJ1dGVWYWx1ZShpbnQgb2Zmc2V0KQotICAgIHsKLSAgICAgICAgbV9jdXJyZW50QXR0
cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9zdGFydCA9IG9mZnNldCAtIG1fYmFzZU9mZnNldDsKLSNp
Zm5kZWYgTkRFQlVHCi0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1f
ZW5kID0gMDsKLSNlbmRpZgotICAgIH0KLQotICAgIHZvaWQgZW5kQXR0cmlidXRlVmFsdWUoaW50
IG9mZnNldCkKLSAgICB7Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdl
Lm1fZW5kID0gb2Zmc2V0IC0gbV9iYXNlT2Zmc2V0OwotICAgIH0KLQotICAgIHZvaWQgYXBwZW5k
VG9BdHRyaWJ1dGVOYW1lKFVDaGFyIGNoYXJhY3RlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChj
aGFyYWN0ZXIpOwotICAgICAgICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9
PSBFbmRUYWcpOwotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gYWRkIHRo
ZSBmb2xsb3dpbmcgQVNTRVJUIG9uY2Ugd2UgZml4Ci0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjk3MQotICAgICAgICAvLyAgIEFTU0VSVChtX2N1
cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fc3RhcnQpOwotICAgICAgICBtX2N1cnJlbnRB
dHRyaWJ1dGUtPm1fbmFtZS5hcHBlbmQoY2hhcmFjdGVyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFw
cGVuZFRvQXR0cmlidXRlVmFsdWUoVUNoYXIgY2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKGNoYXJhY3Rlcik7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gU3RhcnRUYWcgfHwgbV90
eXBlID09IEVuZFRhZyk7Ci0gICAgICAgIEFTU0VSVChtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFs
dWVSYW5nZS5tX3N0YXJ0KTsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlLmFw
cGVuZChjaGFyYWN0ZXIpOwotICAgIH0KLQotICAgIHZvaWQgYXBwZW5kVG9BdHRyaWJ1dGVWYWx1
ZShzaXplX3QgaSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgh
dmFsdWUuaXNFbXB0eSgpKTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBTdGFydFRhZyB8fCBt
X3R5cGUgPT0gRW5kVGFnKTsKLSAgICAgICAgbV9hdHRyaWJ1dGVzW2ldLm1fdmFsdWUuYXBwZW5k
KHZhbHVlLmNoYXJhY3RlcnMoKSwgdmFsdWUubGVuZ3RoKCkpOwotICAgIH0KLQotICAgIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotCi0gICAgYm9vbCBzZWxmQ2xvc2luZygp
IGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlw
ZSA9PSBFbmRUYWcpOwotICAgICAgICByZXR1cm4gbV9zZWxmQ2xvc2luZzsKLSAgICB9Ci0KLSAg
ICB2b2lkIHNldFNlbGZDbG9zaW5nKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
SFRNTFRva2VuOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuOjpFbmRUYWcpOwotICAg
ICAgICBtX3NlbGZDbG9zaW5nID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBjb25zdCBBdHRyaWJ1dGVM
aXN0JiBhdHRyaWJ1dGVzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
U3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyk7Ci0gICAgICAgIHJldHVybiBtX2F0dHJpYnV0
ZXM7Ci0gICAgfQotCisgICAgCiAgICAgY29uc3QgRGF0YVZlY3RvciYgbmFtZSgpIGNvbnN0CiAg
ICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRU
YWcgfHwgbV90eXBlID09IERPQ1RZUEUpOwotICAgICAgICByZXR1cm4gbV9kYXRhOwotICAgIH0K
LQotICAgIHZvaWQgZXJhc2VDaGFyYWN0ZXJzKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gQ2hhcmFjdGVyKTsKLSAgICAgICAgbV9kYXRhLmNsZWFyKCk7Ci0gICAgfQotCi0gICAg
dm9pZCBlcmFzZVZhbHVlT2ZBdHRyaWJ1dGUoc2l6ZV90IGkpCi0gICAgewotICAgICAgICBBU1NF
UlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcpOwotICAgICAgICBtX2F0
dHJpYnV0ZXNbaV0ubV92YWx1ZS5jbGVhcigpOwotICAgIH0KLQotICAgIGNvbnN0IERhdGFWZWN0
b3ImIGNoYXJhY3RlcnMoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBD
aGFyYWN0ZXIpOwotICAgICAgICByZXR1cm4gbV9kYXRhOwotICAgIH0KLQotICAgIGNvbnN0IERh
dGFWZWN0b3ImIGNvbW1lbnQoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBDb21tZW50KTsKLSAgICAgICAgcmV0dXJuIG1fZGF0YTsKLSAgICB9Ci0KLSAgICAvLyBGSVhN
RTogRGlzdGluZ3Vpc2ggYmV0d2VlbiBhIG1pc3NpbmcgcHVibGljIGlkZW50aWZlciBhbmQgYW4g
ZW1wdHkgb25lLgotICAgIGNvbnN0IFdURjo6VmVjdG9yPFVDaGFyPiYgcHVibGljSWRlbnRpZmll
cigpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IERPQ1RZUEUpOwotICAg
ICAgICByZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyOwotICAgIH0KLQot
ICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlzaCBiZXR3ZWVuIGEgbWlzc2luZyBzeXN0ZW0gaWRlbnRp
ZmVyIGFuZCBhbiBlbXB0eSBvbmUuCi0gICAgY29uc3QgV1RGOjpWZWN0b3I8VUNoYXI+JiBzeXN0
ZW1JZGVudGlmaWVyKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9D
VFlQRSk7Ci0gICAgICAgIHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXI7
Ci0gICAgfQotCi0gICAgdm9pZCBzZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpCi0g
ICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IERPQ1RZUEUpOwotICAgICAgICBtX2RvY3R5
cGVEYXRhLT5tX2hhc1B1YmxpY0lkZW50aWZpZXIgPSB0cnVlOwotICAgICAgICBtX2RvY3R5cGVE
YXRhLT5tX3B1YmxpY0lkZW50aWZpZXIuY2xlYXIoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFN5
c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gRE9DVFlQRSk7Ci0gICAgICAgIG1fZG9jdHlwZURhdGEtPm1faGFzU3lzdGVtSWRlbnRp
ZmllciA9IHRydWU7Ci0gICAgICAgIG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllci5j
bGVhcigpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRh
ZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRv
a2VuVHlwZXM6OkRPQ1RZUEUpOworICAgICAgICByZXR1cm4gTWFya3VwVG9rZW5CYXNlPEhUTUxU
b2tlblR5cGVzLCBIVE1MVG9rZW5UeXBlczo6RG9jdHlwZURhdGE+OjpuYW1lKCk7CiAgICAgfQog
CiAgICAgYm9vbCBmb3JjZVF1aXJrcygpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90
eXBlID09IERPQ1RZUEUpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVz
OjpET0NUWVBFKTsKICAgICAgICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1fZm9yY2VRdWlya3M7
CiAgICAgfQogCiAgICAgdm9pZCBzZXRGb3JjZVF1aXJrcygpCiAgICAgewotICAgICAgICBBU1NF
UlQobV90eXBlID09IERPQ1RZUEUpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tl
blR5cGVzOjpET0NUWVBFKTsKICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9mb3JjZVF1aXJrcyA9
IHRydWU7CiAgICAgfQogCi0gICAgdm9pZCBhcHBlbmRUb1B1YmxpY0lkZW50aWZpZXIoVUNoYXIg
Y2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0gICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7Ci0gICAgICAgIEFTU0VSVChtX2RvY3R5cGVEYXRhLT5t
X2hhc1B1YmxpY0lkZW50aWZpZXIpOwotICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lk
ZW50aWZpZXIuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRUb1N5
c3RlbUlkZW50aWZpZXIoVUNoYXIgY2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNo
YXJhY3Rlcik7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7Ci0gICAgICAgIEFT
U0VSVChtX2RvY3R5cGVEYXRhLT5tX2hhc1N5c3RlbUlkZW50aWZpZXIpOwotICAgICAgICBtX2Rv
Y3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXIuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIC8vIEZJWE1FOiBJJ20gbm90IHN1cmUgd2hhdCB0aGUgZmluYWwgcmVs
YXRpb25zaGlwIGJldHdlZW4gSFRNTFRva2VuIGFuZAotICAgIC8vIEF0b21pY0hUTUxUb2tlbiB3
aWxsIGJlLiAgSSdtIG1hcmtpbmcgdGhpcyBhIGZyaWVuZCBmb3Igbm93LCBidXQgd2UnbGwKLSAg
ICAvLyB3YW50IHRvIGVuZCB1cCB3aXRoIGEgY2xlYW5lciBpbnRlcmZhY2UgYmV0d2VlbiB0aGUg
dHdvIGNsYXNzZXMuCi0gICAgZnJpZW5kIGNsYXNzIEF0b21pY0hUTUxUb2tlbjsKLQotICAgIGNs
YXNzIERvY3R5cGVEYXRhIHsKLSAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRG9jdHlwZURh
dGEpOwotICAgIHB1YmxpYzoKLSAgICAgICAgRG9jdHlwZURhdGEoKQotICAgICAgICAgICAgOiBt
X2hhc1B1YmxpY0lkZW50aWZpZXIoZmFsc2UpCi0gICAgICAgICAgICAsIG1faGFzU3lzdGVtSWRl
bnRpZmllcihmYWxzZSkKLSAgICAgICAgICAgICwgbV9mb3JjZVF1aXJrcyhmYWxzZSkKLSAgICAg
ICAgewotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBtX2hhc1B1YmxpY0lkZW50aWZpZXI7Ci0g
ICAgICAgIGJvb2wgbV9oYXNTeXN0ZW1JZGVudGlmaWVyOwotICAgICAgICBib29sIG1fZm9yY2VR
dWlya3M7Ci0gICAgICAgIFdURjo6VmVjdG9yPFVDaGFyPiBtX3B1YmxpY0lkZW50aWZpZXI7Ci0g
ICAgICAgIFdURjo6VmVjdG9yPFVDaGFyPiBtX3N5c3RlbUlkZW50aWZpZXI7Ci0gICAgfTsKLQot
ICAgIFR5cGUgbV90eXBlOwotICAgIFJhbmdlIG1fcmFuZ2U7IC8vIEFsd2F5cyBzdGFydHMgYXQg
emVyby4KLSAgICBpbnQgbV9iYXNlT2Zmc2V0OwotCi0gICAgLy8gIm5hbWUiIGZvciBET0NUWVBF
LCBTdGFydFRhZywgYW5kIEVuZFRhZwotICAgIC8vICJjaGFyYWN0ZXJzIiBmb3IgQ2hhcmFjdGVy
Ci0gICAgLy8gImRhdGEiIGZvciBDb21tZW50Ci0gICAgRGF0YVZlY3RvciBtX2RhdGE7Ci0KLSAg
ICAvLyBGb3IgRE9DVFlQRQotICAgIE93blB0cjxEb2N0eXBlRGF0YT4gbV9kb2N0eXBlRGF0YTsK
LQotICAgIC8vIEZvciBTdGFydFRhZyBhbmQgRW5kVGFnCi0gICAgYm9vbCBtX3NlbGZDbG9zaW5n
OwotICAgIEF0dHJpYnV0ZUxpc3QgbV9hdHRyaWJ1dGVzOwotCi0gICAgLy8gQSBwb2ludGVyIGlu
dG8gbV9hdHRyaWJ1dGVzIHVzZWQgZHVyaW5nIGxleGluZy4KLSAgICBBdHRyaWJ1dGUqIG1fY3Vy
cmVudEF0dHJpYnV0ZTsKIH07CiAKIC8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBldmVudHVh
bGx5IGJlIG5hbWVkIEhUTUxUb2tlbiBvbmNlIHdlIG1vdmUgdGhlCkBAIC0zODksMzIgKzkyLDM0
IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3R5cGUodG9rZW4udHlwZSgpKQogICAgIHsKICAgICAg
ICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6
ZWQ6CisgICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQ6CiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIEhUTUxUb2tlbjo6RE9DVFlQRToKKyAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RE9D
VFlQRToKICAgICAgICAgICAgIG1fbmFtZSA9IEF0b21pY1N0cmluZyh0b2tlbi5uYW1lKCkuZGF0
YSgpLCB0b2tlbi5uYW1lKCkuc2l6ZSgpKTsKICAgICAgICAgICAgIG1fZG9jdHlwZURhdGEgPSB0
b2tlbi5tX2RvY3R5cGVEYXRhLnJlbGVhc2UoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEhUTUxUb2tlbjo6RW5kT2ZGaWxlOgorICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVz
OjpFbmRPZkZpbGU6CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW46
OlN0YXJ0VGFnOgotICAgICAgICBjYXNlIEhUTUxUb2tlbjo6RW5kVGFnOiB7CisgICAgICAgIGNh
c2UgSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnOgorICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVz
OjpFbmRUYWc6IHsKICAgICAgICAgICAgIG1fc2VsZkNsb3NpbmcgPSB0b2tlbi5zZWxmQ2xvc2lu
ZygpOwogICAgICAgICAgICAgbV9uYW1lID0gQXRvbWljU3RyaW5nKHRva2VuLm5hbWUoKS5kYXRh
KCksIHRva2VuLm5hbWUoKS5zaXplKCkpOwogICAgICAgICAgICAgaW5pdGlhbGl6ZUF0dHJpYnV0
ZXModG9rZW4uYXR0cmlidXRlcygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgSFRNTFRva2VuOjpDb21tZW50OgorICAgICAgICBjYXNlIEhUTUxUb2tlblR5
cGVzOjpDb21tZW50OgogICAgICAgICAgICAgbV9kYXRhID0gU3RyaW5nKHRva2VuLmNvbW1lbnQo
KS5kYXRhKCksIHRva2VuLmNvbW1lbnQoKS5zaXplKCkpOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgSFRNTFRva2VuOjpDaGFyYWN0ZXI6CisgICAgICAgIGNhc2UgSFRNTFRva2Vu
VHlwZXM6OkNoYXJhY3RlcjoKICAgICAgICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzID0gJnRv
a2VuLmNoYXJhY3RlcnMoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBBdG9taWNIVE1MVG9r
ZW4oSFRNTFRva2VuOjpUeXBlIHR5cGUsIEF0b21pY1N0cmluZyBuYW1lLCBQYXNzUmVmUHRyPE5h
bWVkTm9kZU1hcD4gYXR0cmlidXRlcyA9IDApCisgICAgQXRvbWljSFRNTFRva2VuKEhUTUxUb2tl
blR5cGVzOjpUeXBlIHR5cGUsIEF0b21pY1N0cmluZyBuYW1lLCBQYXNzUmVmUHRyPE5hbWVkTm9k
ZU1hcD4gYXR0cmlidXRlcyA9IDApCiAgICAgICAgIDogbV90eXBlKHR5cGUpCiAgICAgICAgICwg
bV9uYW1lKG5hbWUpCiAgICAgICAgICwgbV9hdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCkBAIC00MjIs
NyArMTI3LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQodXNlc05hbWUoKSk7CiAgICAgfQog
Ci0gICAgSFRNTFRva2VuOjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAg
ICBIVE1MVG9rZW5UeXBlczo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAK
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdAogICAgIHsKQEAgLTQzOCw3ICsx
NDMsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHNlbGZDbG9zaW5nKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0g
SFRNTFRva2VuOjpFbmRUYWcpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5
cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CiAgICAg
ICAgIHJldHVybiBtX3NlbGZDbG9zaW5nOwogICAgIH0KIApAQCAtNDY0LDQ5ICsxNjksNDkgQEAg
cHVibGljOgogCiAgICAgY29uc3QgSFRNTFRva2VuOjpEYXRhVmVjdG9yJiBjaGFyYWN0ZXJzKCkg
Y29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpDaGFyYWN0
ZXIpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIp
OwogICAgICAgICByZXR1cm4gKm1fZXh0ZXJuYWxDaGFyYWN0ZXJzOwogICAgIH0KIAogICAgIGNv
bnN0IFN0cmluZyYgY29tbWVudCgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBl
ID09IEhUTUxUb2tlbjo6Q29tbWVudCk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRv
a2VuVHlwZXM6OkNvbW1lbnQpOwogICAgICAgICByZXR1cm4gbV9kYXRhOwogICAgIH0KIAogICAg
IC8vIEZJWE1FOiBEaXN0aW5ndWlzaCBiZXR3ZWVuIGEgbWlzc2luZyBwdWJsaWMgaWRlbnRpZmVy
IGFuZCBhbiBlbXB0eSBvbmUuCiAgICAgV1RGOjpWZWN0b3I8VUNoYXI+JiBwdWJsaWNJZGVudGlm
aWVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpE
T0NUWVBFKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQ
RSk7CiAgICAgICAgIHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZpZXI7CiAg
ICAgfQogCiAgICAgLy8gRklYTUU6IERpc3Rpbmd1aXNoIGJldHdlZW4gYSBtaXNzaW5nIHN5c3Rl
bSBpZGVudGlmZXIgYW5kIGFuIGVtcHR5IG9uZS4KICAgICBXVEY6OlZlY3RvcjxVQ2hhcj4mIHN5
c3RlbUlkZW50aWZpZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBI
VE1MVG9rZW46OkRPQ1RZUEUpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5
cGVzOjpET0NUWVBFKTsKICAgICAgICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRl
bnRpZmllcjsKICAgICB9CiAKICAgICBib29sIGZvcmNlUXVpcmtzKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpET0NUWVBFKTsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CiAgICAgICAgIHJldHVybiBt
X2RvY3R5cGVEYXRhLT5tX2ZvcmNlUXVpcmtzOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBIVE1M
VG9rZW46OlR5cGUgbV90eXBlOworICAgIEhUTUxUb2tlblR5cGVzOjpUeXBlIG1fdHlwZTsKIAog
ICAgIHZvaWQgaW5pdGlhbGl6ZUF0dHJpYnV0ZXMoY29uc3QgSFRNTFRva2VuOjpBdHRyaWJ1dGVM
aXN0JiBhdHRyaWJ1dGVzKTsKICAgICAKICAgICBib29sIHVzZXNOYW1lKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIHJldHVybiBtX3R5cGUgPT0gSFRNTFRva2VuOjpTdGFydFRhZyB8fCBtX3R5cGUg
PT0gSFRNTFRva2VuOjpFbmRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlbjo6RE9DVFlQRTsKKyAg
ICAgICAgcmV0dXJuIG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBl
ID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpE
T0NUWVBFOwogICAgIH0KIAogICAgIGJvb2wgdXNlc0F0dHJpYnV0ZXMoKSBjb25zdAogICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fdHlwZSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnIHx8IG1fdHlwZSA9
PSBIVE1MVG9rZW46OkVuZFRhZzsKKyAgICAgICAgcmV0dXJuIG1fdHlwZSA9PSBIVE1MVG9rZW5U
eXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWc7CiAgICAg
fQogCiAgICAgLy8gIm5hbWUiIGZvciBET0NUWVBFLCBTdGFydFRhZywgYW5kIEVuZFRhZwpAQCAt
NTI2LDcgKzIzMSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgSFRNTFRva2VuOjpEYXRhVmVjdG9y
KiBtX2V4dGVybmFsQ2hhcmFjdGVyczsKIAogICAgIC8vIEZvciBET0NUWVBFCi0gICAgT3duUHRy
PEhUTUxUb2tlbjo6RG9jdHlwZURhdGE+IG1fZG9jdHlwZURhdGE7CisgICAgT3duUHRyPEhUTUxU
b2tlblR5cGVzOjpEb2N0eXBlRGF0YT4gbV9kb2N0eXBlRGF0YTsKIAogICAgIC8vIEZvciBTdGFy
dFRhZyBhbmQgRW5kVGFnCiAgICAgYm9vbCBtX3NlbGZDbG9zaW5nOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcAppbmRleCAzMDVmY2EyNjAzOWVkYjUwNzg0
YmI1Mzc0ZTc3M2JkOGNhOGE2OTg1Li42ZDU3ZWVhZTFkODkwZGRkMzFmM2ZjMzczYTRmNTA4Nzkx
MjZjYjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5p
emVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNw
cApAQCAtMTg3LDggKzE4Nyw4IEBAIGlubGluZSBib29sIEhUTUxUb2tlbml6ZXI6OnByb2Nlc3NF
bnRpdHkoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiAKIGlubGluZSB2b2lkIEhUTUxUb2tlbml6
ZXI6OnNhdmVFbmRUYWdOYW1lSWZOZWVkZWQoKQogewotICAgIEFTU0VSVChtX3Rva2VuLT50eXBl
KCkgIT0gSFRNTFRva2VuOjpVbmluaXRpYWxpemVkKTsKLSAgICBpZiAobV90b2tlbi0+dHlwZSgp
ID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpCisgICAgQVNTRVJUKG1fdG9rZW4tPnR5cGUoKSAhPSBI
VE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7CisgICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9
PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpCiAgICAgICAgIG1fYXBwcm9wcmlhdGVFbmRUYWdO
YW1lID0gbV90b2tlbi0+bmFtZSgpOwogfQogCkBAIC0yMjcsOSArMjI3LDkgQEAgYm9vbCBIVE1M
VG9rZW5pemVyOjplbWl0RW5kT2ZGaWxlKFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQogCiBib29s
IEhUTUxUb2tlbml6ZXI6OmZsdXNoQnVmZmVyZWRFbmRUYWcoU2VnbWVudGVkU3RyaW5nJiBzb3Vy
Y2UpCiB7Ci0gICAgQVNTRVJUKG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3Rl
ciB8fCBtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpVbmluaXRpYWxpemVkKTsKKyAgICBB
U1NFUlQobV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIgfHwgbV90
b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsKICAgICBzb3Vy
Y2UuYWR2YW5jZShtX2xpbmVOdW1iZXIpOwotICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRN
TFRva2VuOjpDaGFyYWN0ZXIpCisgICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5U
eXBlczo6Q2hhcmFjdGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBtX3Rva2VuLT5iZWdp
bkVuZFRhZyhtX2J1ZmZlcmVkRW5kVGFnTmFtZSk7CiAgICAgbV9idWZmZXJlZEVuZFRhZ05hbWUu
Y2xlYXIoKTsKQEAgLTI1OSw3ICsyNTksNyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tl
bihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKIHsKICAgICAvLyBJ
ZiB3ZSBoYXZlIGEgdG9rZW4gaW4gcHJvZ3Jlc3MsIHRoZW4gd2UncmUgc3VwcG9zZWQgdG8gYmUg
Y2FsbGVkIGJhY2sKICAgICAvLyB3aXRoIHRoZSBzYW1lIHRva2VuIHNvIHdlIGNhbiBmaW5pc2gg
aXQuCi0gICAgQVNTRVJUKCFtX3Rva2VuIHx8IG1fdG9rZW4gPT0gJnRva2VuIHx8IHRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQpOworICAgIEFTU0VSVCghbV90b2tlbiB8
fCBtX3Rva2VuID09ICZ0b2tlbiB8fCB0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlVu
aW5pdGlhbGl6ZWQpOwogICAgIG1fdG9rZW4gPSAmdG9rZW47CiAKICAgICBpZiAoIW1fYnVmZmVy
ZWRFbmRUYWdOYW1lLmlzRW1wdHkoKSAmJiAhaXNFbmRUYWdCdWZmZXJpbmdTdGF0ZShtX3N0YXRl
KSkgewpAQCAtMzA3LDcgKzMwNyw3IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNl
Z21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBpZiAoY2Mg
PT0gJyYnKQogICAgICAgICAgICAgQURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJbkRhdGFT
dGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc8JykgewotICAgICAgICAgICAgaWYgKG1f
dG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3RlcikgeworICAgICAgICAgICAgaWYg
KG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKSB7CiAgICAgICAg
ICAgICAgICAgLy8gV2UgaGF2ZSBhIGJ1bmNoIG9mIGNoYXJhY3RlciB0b2tlbnMgcXVldWVkIHVw
IHRoYXQgd2UKICAgICAgICAgICAgICAgICAvLyBhcmUgZW1pdHRpbmcgbGF6aWx5IGhlcmUuCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNjkyLDcgKzE2OTIsNyBAQCBpbmxpbmUg
dm9pZCBIVE1MVG9rZW5pemVyOjpwYXJzZUVycm9yKCkKIAogaW5saW5lIGJvb2wgSFRNTFRva2Vu
aXplcjo6aGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKQogewotICAgIHJldHVybiBtX3Rva2Vu
LT50eXBlKCkgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXI7CisgICAgcmV0dXJuIG1fdG9rZW4tPnR5
cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCA4MjMwMTQxYjIxNjEy
YjIyM2UyNTMwNWQxN2M5M2RlZjI0Y2ZkNDY4Li5iN2ViY2U3OTU0MmU1Y2U0NTVhZTcyZDUxOTZl
NDQ0NGIwZDYxYTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5jcHAKQEAgLTQ0NiwxMyArNDQ2LDEzIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpj
b25zdHJ1Y3RUcmVlRnJvbVRva2VuKEhUTUxUb2tlbiYgcmF3VG9rZW4pCiAgICAgLy8gRklYTUU6
IFRvcCBjbGVhcmluZyB0aGUgcmF3VG9rZW4gb25jZSB3ZSBzdGFydCBydW5uaW5nIHRoZSBwYXJz
ZXIgb2ZmCiAgICAgLy8gdGhlIG1haW4gdGhyZWFkIG9yIG9uY2Ugd2Ugc3RvcCBhbGxvd2luZyBz
eW5jaHJvbm91cyBKYXZhU2NyaXB0CiAgICAgLy8gZXhlY3V0aW9uIGZyb20gcGFyc2VNYXBwZWRB
dHRyaWJ1dGUuCi0gICAgaWYgKHJhd1Rva2VuLnR5cGUoKSAhPSBIVE1MVG9rZW46OkNoYXJhY3Rl
cikKKyAgICBpZiAocmF3VG9rZW4udHlwZSgpICE9IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIp
CiAgICAgICAgIHJhd1Rva2VuLmNsZWFyKCk7CiAKICAgICBjb25zdHJ1Y3RUcmVlRnJvbUF0b21p
Y1Rva2VuKHRva2VuKTsKIAogICAgIGlmICghcmF3VG9rZW4uaXNVbmluaXRpYWxpemVkKCkpIHsK
LSAgICAgICAgQVNTRVJUKHJhd1Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3Rlcik7
CisgICAgICAgIEFTU0VSVChyYXdUb2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJh
Y3Rlcik7CiAgICAgICAgIHJhd1Rva2VuLmNsZWFyKCk7CiAgICAgfQogfQpAQCAtNDcxLDI1ICs0
NzEsMjUgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tQXRvbWljVG9r
ZW4oQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
VG9rZW4oQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKICAgICBzd2l0Y2ggKHRva2VuLnR5cGUo
KSkgewotICAgIGNhc2UgSFRNTFRva2VuOjpVbmluaXRpYWxpemVkOgorICAgIGNhc2UgSFRNTFRv
a2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEhUTUxUb2tlbjo6RE9DVFlQRToKKyAgICBjYXNlIEhU
TUxUb2tlblR5cGVzOjpET0NUWVBFOgogICAgICAgICBwcm9jZXNzRG9jdHlwZVRva2VuKHRva2Vu
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW46OlN0YXJ0VGFnOgorICAgIGNh
c2UgSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnOgogICAgICAgICBwcm9jZXNzU3RhcnRUYWcodG9r
ZW4pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhUTUxUb2tlbjo6RW5kVGFnOgorICAgIGNh
c2UgSFRNTFRva2VuVHlwZXM6OkVuZFRhZzoKICAgICAgICAgcHJvY2Vzc0VuZFRhZyh0b2tlbik7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuOjpDb21tZW50OgorICAgIGNhc2Ug
SFRNTFRva2VuVHlwZXM6OkNvbW1lbnQ6CiAgICAgICAgIHByb2Nlc3NDb21tZW50KHRva2VuKTsK
ICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSFRNTFRva2VuOjpDaGFyYWN0ZXI6CisgICAgY2Fz
ZSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOgogICAgICAgICBwcm9jZXNzQ2hhcmFjdGVyKHRv
a2VuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW46OkVuZE9mRmlsZToKKyAg
ICBjYXNlIEhUTUxUb2tlblR5cGVzOjpFbmRPZkZpbGU6CiAgICAgICAgIHByb2Nlc3NFbmRPZkZp
bGUodG9rZW4pOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC00OTcsNyArNDk3LDcgQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbihBdG9taWNIVE1MVG9rZW4mIHRva2VuKQog
CiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0RvY3R5cGVUb2tlbihBdG9taWNIVE1MVG9r
ZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpET0NU
WVBFKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBF
KTsKICAgICBpZiAobV9pbnNlcnRpb25Nb2RlID09IEluaXRpYWxNb2RlKSB7CiAgICAgICAgIG1f
dHJlZS5pbnNlcnREb2N0eXBlKHRva2VuKTsKICAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShCZWZv
cmVIVE1MTW9kZSk7CkBAIC01MTQsMTQgKzUxNCwxNCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0RvY3R5cGVUb2tlbihBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogdm9pZCBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NGYWtlU3RhcnRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgUGFzc1JlZlB0cjxOYW1lZE5vZGVNYXA+IGF0dHJpYnV0ZXMpCiB7CiAgICAgLy8gRklYTUU6
IFdlJ2xsIG5lZWQgYSBmYW5jaWVyIGNvbnZlcnNpb24gdGhhbiBqdXN0ICJsb2NhbE5hbWUiIGZv
ciBTVkcvTWF0aE1MIHRhZ3MuCi0gICAgQXRvbWljSFRNTFRva2VuIGZha2VUb2tlbihIVE1MVG9r
ZW46OlN0YXJ0VGFnLCB0YWdOYW1lLmxvY2FsTmFtZSgpLCBhdHRyaWJ1dGVzKTsKKyAgICBBdG9t
aWNIVE1MVG9rZW4gZmFrZVRva2VuKEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZywgdGFnTmFtZS5s
b2NhbE5hbWUoKSwgYXR0cmlidXRlcyk7CiAgICAgcHJvY2Vzc1N0YXJ0VGFnKGZha2VUb2tlbik7
CiB9CiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZUVuZFRhZyhjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lKQogewogICAgIC8vIEZJWE1FOiBXZSdsbCBuZWVkIGEgZmFuY2ll
ciBjb252ZXJzaW9uIHRoYW4ganVzdCAibG9jYWxOYW1lIiBmb3IgU1ZHL01hdGhNTCB0YWdzLgot
ICAgIEF0b21pY0hUTUxUb2tlbiBmYWtlVG9rZW4oSFRNTFRva2VuOjpFbmRUYWcsIHRhZ05hbWUu
bG9jYWxOYW1lKCkpOworICAgIEF0b21pY0hUTUxUb2tlbiBmYWtlVG9rZW4oSFRNTFRva2VuVHlw
ZXM6OkVuZFRhZywgdGFnTmFtZS5sb2NhbE5hbWUoKSk7CiAgICAgcHJvY2Vzc0VuZFRhZyhmYWtl
VG9rZW4pOwogfQogCkBAIC01MzYsNyArNTM2LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NGYWtlUEVuZFRhZ0lmUEluQnV0dG9uU2NvcGUoKQogewogICAgIGlmICghbV90cmVlLm9w
ZW5FbGVtZW50cygpLT5pbkJ1dHRvblNjb3BlKHBUYWcubG9jYWxOYW1lKCkpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgQXRvbWljSFRNTFRva2VuIGVuZFAoSFRNTFRva2VuOjpFbmRUYWcsIHBUYWcu
bG9jYWxOYW1lKCkpOworICAgIEF0b21pY0hUTUxUb2tlbiBlbmRQKEhUTUxUb2tlblR5cGVzOjpF
bmRUYWcsIHBUYWcubG9jYWxOYW1lKCkpOwogICAgIHByb2Nlc3NFbmRUYWcoZW5kUCk7CiB9CiAK
QEAgLTU1OCw3ICs1NTgsNyBAQCBQYXNzUmVmUHRyPE5hbWVkTm9kZU1hcD4gSFRNTFRyZWVCdWls
ZGVyOjphdHRyaWJ1dGVzRm9ySXNpbmRleElucHV0KEF0b21pY0hUTUxUbwogCiB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc0lzaW5kZXhTdGFydFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9r
ZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFy
dFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRU
YWcpOwogICAgIEFTU0VSVCh0b2tlbi5uYW1lKCkgPT0gaXNpbmRleFRhZyk7CiAgICAgcGFyc2VF
cnJvcih0b2tlbik7CiAgICAgaWYgKG1fdHJlZS5mb3JtKCkpCkBAIC03MjYsNyArNzI2LDcgQEAg
dm9pZCBhZGp1c3RGb3JlaWduQXR0cmlidXRlcyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogCiB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxU
b2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0
YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFy
dFRhZyk7CiAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSBodG1sVGFnKSB7CiAgICAgICAgIG1fdHJl
ZS5pbnNlcnRIVE1MSHRtbFN0YXJ0VGFnSW5Cb2R5KHRva2VuKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtOTgxLDcgKzk4MSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdG
b3JJbkJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICB9CiAgICAgaWYgKHRva2VuLm5h
bWUoKSA9PSBvcHRncm91cFRhZyB8fCB0b2tlbi5uYW1lKCkgPT0gb3B0aW9uVGFnKSB7CiAgICAg
ICAgIGlmIChtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluU2NvcGUob3B0aW9uVGFnLmxvY2FsTmFt
ZSgpKSkgewotICAgICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZE9wdGlvbihIVE1MVG9rZW46
OkVuZFRhZywgb3B0aW9uVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAgIEF0b21pY0hUTUxU
b2tlbiBlbmRPcHRpb24oSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgb3B0aW9uVGFnLmxvY2FsTmFt
ZSgpKTsKICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcoZW5kT3B0aW9uKTsKICAgICAgICAgfQog
ICAgICAgICBtX3RyZWUucmVjb25zdHJ1Y3RUaGVBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTsK
QEAgLTEwNTgsNyArMTA1OCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpjbG9zZVRoZUNlbGwo
KQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5UYWJsZShBdG9t
aWNIVE1MVG9rZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRv
a2VuOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBl
czo6U3RhcnRUYWcpOwogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gY2FwdGlvblRhZykgewogICAg
ICAgICBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnBvcFVudGlsVGFibGVTY29wZU1hcmtlcigpOwog
ICAgICAgICBtX3RyZWUuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCktPmFwcGVuZE1hcmtlcigp
OwpAQCAtMTEzMCw3ICsxMTMwLDcgQEAgbmFtZXNwYWNlIHsKIAogYm9vbCBzaG91bGRQcm9jZXNz
Rm9yZWlnbkNvbnRlbnRVc2luZ0luQm9keUluc2VydGlvbk1vZGUoQXRvbWljSFRNTFRva2VuJiB0
b2tlbiwgQ29udGFpbmVyTm9kZSogY3VycmVudEVsZW1lbnQpCiB7Ci0gICAgQVNTRVJUKHRva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgp
ID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgaWYgKGN1cnJlbnRFbGVtZW50LT5o
YXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptaVRhZykKICAgICAgICAgfHwgY3VycmVudEVsZW1lbnQt
Pmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1vVGFnKQogICAgICAgICB8fCBjdXJyZW50RWxlbWVu
dC0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bW5UYWcpCkBAIC0xMTUyLDcgKzExNTIsNyBAQCBi
b29sIHNob3VsZFByb2Nlc3NGb3JlaWduQ29udGVudFVzaW5nSW5Cb2R5SW5zZXJ0aW9uTW9kZShB
dG9taWNIVE1MVG9rZW4mIHRva2VuLAogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0
YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUo
KSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhU
TUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgc3dpdGNoIChpbnNlcnRpb25Nb2RlKCkpIHsK
ICAgICBjYXNlIEluaXRpYWxNb2RlOgogICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09
IEluaXRpYWxNb2RlKTsKQEAgLTE0MDksNyArMTQwOSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIHx8
IHRva2VuLm5hbWUoKSA9PSB0clRhZwogICAgICAgICAgICAgfHwgaXNUYWJsZUNlbGxDb250ZXh0
VGFnKHRva2VuLm5hbWUoKSkpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwotICAg
ICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZFNlbGVjdChIVE1MVG9rZW46OkVuZFRhZywgc2Vs
ZWN0VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAgIEF0b21pY0hUTUxUb2tlbiBlbmRTZWxl
Y3QoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgc2VsZWN0VGFnLmxvY2FsTmFtZSgpKTsKICAgICAg
ICAgICAgIHByb2Nlc3NFbmRUYWcoZW5kU2VsZWN0KTsKICAgICAgICAgICAgIHJlcHJvY2Vzc1N0
YXJ0VGFnKHRva2VuKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0MjMsNyArMTQyMyw3IEBA
IHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0
b2tlbikKICAgICAgICAgfQogICAgICAgICBpZiAodG9rZW4ubmFtZSgpID09IG9wdGlvblRhZykg
ewogICAgICAgICAgICAgaWYgKG1fdHJlZS5jdXJyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKG9wdGlv
blRhZykpIHsKLSAgICAgICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kT3B0aW9uKEhUTUxU
b2tlbjo6RW5kVGFnLCBvcHRpb25UYWcubG9jYWxOYW1lKCkpOworICAgICAgICAgICAgICAgIEF0
b21pY0hUTUxUb2tlbiBlbmRPcHRpb24oSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgb3B0aW9uVGFn
LmxvY2FsTmFtZSgpKTsKICAgICAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKGVuZE9wdGlvbik7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnQodG9r
ZW4pOwpAQCAtMTQzMSwxMSArMTQzMSwxMSBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIH0KICAgICAgICAgaWYg
KHRva2VuLm5hbWUoKSA9PSBvcHRncm91cFRhZykgewogICAgICAgICAgICAgaWYgKG1fdHJlZS5j
dXJyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKG9wdGlvblRhZykpIHsKLSAgICAgICAgICAgICAgICBB
dG9taWNIVE1MVG9rZW4gZW5kT3B0aW9uKEhUTUxUb2tlbjo6RW5kVGFnLCBvcHRpb25UYWcubG9j
YWxOYW1lKCkpOworICAgICAgICAgICAgICAgIEF0b21pY0hUTUxUb2tlbiBlbmRPcHRpb24oSFRN
TFRva2VuVHlwZXM6OkVuZFRhZywgb3B0aW9uVGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAgICAg
ICAgICBwcm9jZXNzRW5kVGFnKGVuZE9wdGlvbik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAobV90cmVlLmN1cnJlbnROb2RlKCktPmhhc1RhZ05hbWUob3B0Z3JvdXBUYWcpKSB7Ci0g
ICAgICAgICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZE9wdGdyb3VwKEhUTUxUb2tlbjo6RW5k
VGFnLCBvcHRncm91cFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgICAgICAgICAgQXRvbWljSFRN
TFRva2VuIGVuZE9wdGdyb3VwKEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIG9wdGdyb3VwVGFnLmxv
Y2FsTmFtZSgpKTsKICAgICAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKGVuZE9wdGdyb3VwKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tl
bik7CkBAIC0xNDQzLDcgKzE0NDMsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0
YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIH0KICAgICAgICAgaWYgKHRv
a2VuLm5hbWUoKSA9PSBzZWxlY3RUYWcpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4p
OwotICAgICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZFNlbGVjdChIVE1MVG9rZW46OkVuZFRh
Zywgc2VsZWN0VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAgIEF0b21pY0hUTUxUb2tlbiBl
bmRTZWxlY3QoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgc2VsZWN0VGFnLmxvY2FsTmFtZSgpKTsK
ICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcoZW5kU2VsZWN0KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMTQ1NSw3ICsxNDU1LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgICAg
IEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kU2VsZWN0KEhUTUxU
b2tlbjo6RW5kVGFnLCBzZWxlY3RUYWcubG9jYWxOYW1lKCkpOworICAgICAgICAgICAgQXRvbWlj
SFRNTFRva2VuIGVuZFNlbGVjdChIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCBzZWxlY3RUYWcubG9j
YWxOYW1lKCkpOwogICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZyhlbmRTZWxlY3QpOwogICAgICAg
ICAgICAgcmVwcm9jZXNzU3RhcnRUYWcodG9rZW4pOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MTU0MCw3ICsxNTQwLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhB
dG9taWNIVE1MVG9rZW4mIHRva2VuKQogCiBib29sIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Jv
ZHlFbmRUYWdGb3JJbkJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQo
dG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlw
ZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOwogICAgIEFTU0VSVCh0b2tlbi5uYW1lKCkg
PT0gYm9keVRhZyk7CiAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluU2NvcGUoYm9k
eVRhZy5sb2NhbE5hbWUoKSkpIHsKICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CkBAIC0xNTUz
LDcgKzE1NTMsNyBAQCBib29sIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0JvZHlFbmRUYWdGb3JJ
bkJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NBbnlPdGhlckVuZFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewot
ICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpOworICAgIEFTU0VS
VCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CiAgICAgSFRNTEVsZW1l
bnRTdGFjazo6RWxlbWVudFJlY29yZCogcmVjb3JkID0gbV90cmVlLm9wZW5FbGVtZW50cygpLT50
b3BSZWNvcmQoKTsKICAgICB3aGlsZSAoMSkgewogICAgICAgICBDb250YWluZXJOb2RlKiBub2Rl
ID0gcmVjb3JkLT5ub2RlKCk7CkBAIC0xNzcwLDcgKzE3NzAsNyBAQCB2b2lkIEhUTUxUcmVlQnVp
bGRlcjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSgpCiAKIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5UYWJsZUJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tl
bikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKKyAg
ICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOwogICAgIGlm
IChpc1RhYmxlQm9keUNvbnRleHRUYWcodG9rZW4ubmFtZSgpKSkgewogICAgICAgICBpZiAoIW1f
dHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJsZVNjb3BlKHRva2VuLm5hbWUoKSkpIHsKICAgICAg
ICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwpAQCAtMTgwNyw3ICsxODA3LDcgQEAgdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblRhYmxlQm9keShBdG9taWNIVE1MVG9rZW4m
IHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluUm93KEF0
b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1M
VG9rZW46OkVuZFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBl
czo6RW5kVGFnKTsKICAgICBpZiAodG9rZW4ubmFtZSgpID09IHRyVGFnKSB7CiAgICAgICAgIHBy
b2Nlc3NUckVuZFRhZ0ZvckluUm93KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE4NDMsNyArMTg0
Myw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5Sb3coQXRvbWlj
SFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdG
b3JJbkNlbGwoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlw
ZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhU
TUxUb2tlblR5cGVzOjpFbmRUYWcpOwogICAgIGlmIChpc1RhYmxlQ2VsbENvbnRleHRUYWcodG9r
ZW4ubmFtZSgpKSkgewogICAgICAgICBpZiAoIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJs
ZVNjb3BlKHRva2VuLm5hbWUoKSkpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwpA
QCAtMTg4MCwxMyArMTg4MCwxMyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRh
Z0ZvckluQ2VsbChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0VuZFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewotICAg
IEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpOworICAgIEFTU0VSVCh0
b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CiAgICAgaWYgKHRva2VuLm5h
bWUoKSA9PSBib2R5VGFnKSB7CiAgICAgICAgIHByb2Nlc3NCb2R5RW5kVGFnRm9ySW5Cb2R5KHRv
a2VuKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodG9rZW4ubmFtZSgpID09IGh0
bWxUYWcpIHsKLSAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZEJvZHkoSFRNTFRva2VuOjpFbmRU
YWcsIGJvZHlUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kQm9k
eShIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCBib2R5VGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAg
aWYgKHByb2Nlc3NCb2R5RW5kVGFnRm9ySW5Cb2R5KGVuZEJvZHkpKQogICAgICAgICAgICAgcmVw
cm9jZXNzRW5kVGFnKHRva2VuKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjA1Myw3ICsyMDUzLDcg
QEAgYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUYWJsZUVuZFRhZ0ZvckluVGFibGUoKQog
CiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluVGFibGUoQXRvbWljSFRN
TFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6
RW5kVGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRU
YWcpOwogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gdGFibGVUYWcpIHsKICAgICAgICAgcHJvY2Vz
c1RhYmxlRW5kVGFnRm9ySW5UYWJsZSgpOwogICAgICAgICByZXR1cm47CkBAIC0yMDc0LDcgKzIw
NzQsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluVGFibGUoQXRv
bWljSFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRU
YWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09
IEhUTUxUb2tlbjo6RW5kVGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tl
blR5cGVzOjpFbmRUYWcpOwogICAgIHN3aXRjaCAoaW5zZXJ0aW9uTW9kZSgpKSB7CiAgICAgY2Fz
ZSBJbml0aWFsTW9kZToKICAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbml0aWFs
TW9kZSk7CkBAIC0yMjcwLDcgKzIyNzAsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c0VuZFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgfHwgaXNUYWJsZUNl
bGxDb250ZXh0VGFnKHRva2VuLm5hbWUoKSkpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9r
ZW4pOwogICAgICAgICAgICAgaWYgKG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJsZVNjb3Bl
KHRva2VuLm5hbWUoKSkpIHsKLSAgICAgICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kU2Vs
ZWN0KEhUTUxUb2tlbjo6RW5kVGFnLCBzZWxlY3RUYWcubG9jYWxOYW1lKCkpOworICAgICAgICAg
ICAgICAgIEF0b21pY0hUTUxUb2tlbiBlbmRTZWxlY3QoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywg
c2VsZWN0VGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKGVu
ZFNlbGVjdCk7CiAgICAgICAgICAgICAgICAgcmVwcm9jZXNzRW5kVGFnKHRva2VuKTsKICAgICAg
ICAgICAgIH0KQEAgLTI0MDIsNyArMjQwMiw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpyZXNl
dEZvcmVpZ25JbnNlcnRpb25Nb2RlKCkKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3ND
b21tZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUo
KSA9PSBIVE1MVG9rZW46OkNvbW1lbnQpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRN
TFRva2VuVHlwZXM6OkNvbW1lbnQpOwogICAgIGlmIChtX2luc2VydGlvbk1vZGUgPT0gSW5pdGlh
bE1vZGUKICAgICAgICAgfHwgbV9pbnNlcnRpb25Nb2RlID09IEJlZm9yZUhUTUxNb2RlCiAgICAg
ICAgIHx8IG1faW5zZXJ0aW9uTW9kZSA9PSBBZnRlckFmdGVyQm9keU1vZGUKQEAgLTI0MjQsNyAr
MjQyNCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ29tbWVudChBdG9taWNIVE1M
VG9rZW4mIHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3RlcihB
dG9taWNIVE1MVG9rZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRN
TFRva2VuOjpDaGFyYWN0ZXIpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
VHlwZXM6OkNoYXJhY3Rlcik7CiAgICAgRXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlciBidWZm
ZXIodG9rZW4pOwogICAgIHByb2Nlc3NDaGFyYWN0ZXJCdWZmZXIoYnVmZmVyKTsKIH0KQEAgLTI1
ODMsNyArMjU4Myw3IEBAIFJlcHJvY2Vzc0J1ZmZlcjoKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NFbmRPZkZpbGUoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQo
dG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5kT2ZGaWxlKTsKKyAgICBBU1NFUlQodG9rZW4u
dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRPZkZpbGUpOwogICAgIHN3aXRjaCAoaW5zZXJ0
aW9uTW9kZSgpKSB7CiAgICAgY2FzZSBJbml0aWFsTW9kZToKICAgICAgICAgQVNTRVJUKGluc2Vy
dGlvbk1vZGUoKSA9PSBJbml0aWFsTW9kZSk7CkBAIC0yNjgxLDcgKzI2ODEsNyBAQCB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckluaXRpYWwoKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6ZGVmYXVsdEZvckJlZm9yZUhUTUwoKQogewotICAgIEF0b21pY0hUTUxUb2tlbiBzdGFydEhU
TUwoSFRNTFRva2VuOjpTdGFydFRhZywgaHRtbFRhZy5sb2NhbE5hbWUoKSk7CisgICAgQXRvbWlj
SFRNTFRva2VuIHN0YXJ0SFRNTChIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcsIGh0bWxUYWcubG9j
YWxOYW1lKCkpOwogICAgIG1fdHJlZS5pbnNlcnRIVE1MSHRtbFN0YXJ0VGFnQmVmb3JlSFRNTChz
dGFydEhUTUwpOwogICAgIHNldEluc2VydGlvbk1vZGUoQmVmb3JlSGVhZE1vZGUpOwogICAgIHBy
ZXBhcmVUb1JlcHJvY2Vzc1Rva2VuKCk7CkBAIC0yNjg5LDI4ICsyNjg5LDI4IEBAIHZvaWQgSFRN
TFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9yQmVmb3JlSFRNTCgpCiAKIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpkZWZhdWx0Rm9yQmVmb3JlSGVhZCgpCiB7Ci0gICAgQXRvbWljSFRNTFRva2VuIHN0YXJ0
SGVhZChIVE1MVG9rZW46OlN0YXJ0VGFnLCBoZWFkVGFnLmxvY2FsTmFtZSgpKTsKKyAgICBBdG9t
aWNIVE1MVG9rZW4gc3RhcnRIZWFkKEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZywgaGVhZFRhZy5s
b2NhbE5hbWUoKSk7CiAgICAgcHJvY2Vzc1N0YXJ0VGFnKHN0YXJ0SGVhZCk7CiAgICAgcHJlcGFy
ZVRvUmVwcm9jZXNzVG9rZW4oKTsKIH0KIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRG
b3JJbkhlYWQoKQogewotICAgIEF0b21pY0hUTUxUb2tlbiBlbmRIZWFkKEhUTUxUb2tlbjo6RW5k
VGFnLCBoZWFkVGFnLmxvY2FsTmFtZSgpKTsKKyAgICBBdG9taWNIVE1MVG9rZW4gZW5kSGVhZChI
VE1MVG9rZW5UeXBlczo6RW5kVGFnLCBoZWFkVGFnLmxvY2FsTmFtZSgpKTsKICAgICBwcm9jZXNz
RW5kVGFnKGVuZEhlYWQpOwogICAgIHByZXBhcmVUb1JlcHJvY2Vzc1Rva2VuKCk7CiB9CiAKIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5IZWFkTm9zY3JpcHQoKQogewotICAgIEF0
b21pY0hUTUxUb2tlbiBlbmROb3NjcmlwdChIVE1MVG9rZW46OkVuZFRhZywgbm9zY3JpcHRUYWcu
bG9jYWxOYW1lKCkpOworICAgIEF0b21pY0hUTUxUb2tlbiBlbmROb3NjcmlwdChIVE1MVG9rZW5U
eXBlczo6RW5kVGFnLCBub3NjcmlwdFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgcHJvY2Vzc0VuZFRh
ZyhlbmROb3NjcmlwdCk7CiAgICAgcHJlcGFyZVRvUmVwcm9jZXNzVG9rZW4oKTsKIH0KIAogdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JBZnRlckhlYWQoKQogewotICAgIEF0b21pY0hU
TUxUb2tlbiBzdGFydEJvZHkoSFRNTFRva2VuOjpTdGFydFRhZywgYm9keVRhZy5sb2NhbE5hbWUo
KSk7CisgICAgQXRvbWljSFRNTFRva2VuIHN0YXJ0Qm9keShIVE1MVG9rZW5UeXBlczo6U3RhcnRU
YWcsIGJvZHlUYWcubG9jYWxOYW1lKCkpOwogICAgIHByb2Nlc3NTdGFydFRhZyhzdGFydEJvZHkp
OwogICAgIG1fZnJhbWVzZXRPayA9IHRydWU7CiAgICAgcHJlcGFyZVRvUmVwcm9jZXNzVG9rZW4o
KTsKQEAgLTI3MzYsNyArMjczNiw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9y
SW5UYWJsZVRleHQoKQogCiBib29sIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9y
SW5IZWFkKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUo
KSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhU
TUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSBodG1sVGFn
KSB7CiAgICAgICAgIG1fdHJlZS5pbnNlcnRIVE1MSHRtbFN0YXJ0VGFnSW5Cb2R5KHRva2VuKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yNzgzLDcgKzI3ODMsNyBAQCBib29sIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5IZWFkKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4p
CiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1JDREFUQVN0YXJ0VGFnKEF0
b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1M
VG9rZW46OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5
cGVzOjpTdGFydFRhZyk7CiAgICAgbV90cmVlLmluc2VydEhUTUxFbGVtZW50KHRva2VuKTsKICAg
ICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJDREFUQVN0
YXRlKTsKICAgICBtX29yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IG1faW5zZXJ0aW9uTW9kZTsKQEAg
LTI3OTIsNyArMjc5Miw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1JD
REFUQVN0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzR2VuZXJpY1Jhd1RleHRTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2Vu
KQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7Cisg
ICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAg
IG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tlbik7CiAgICAgbV9wYXJzZXItPnRva2VuaXpl
cigpLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpSQVdURVhUU3RhdGUpOwogICAgIG1fb3JpZ2lu
YWxJbnNlcnRpb25Nb2RlID0gbV9pbnNlcnRpb25Nb2RlOwpAQCAtMjgwMSw3ICsyODAxLDcgQEAg
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUmF3VGV4dFN0YXJ0VGFnKEF0b21p
Y0hUTUxUb2tlbiYgdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU2NyaXB0
U3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlw
ZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0g
SFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBtX3RyZWUuaW5zZXJ0U2NyaXB0RWxlbWVu
dCh0b2tlbik7CiAgICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9rZW5p
emVyOjpTY3JpcHREYXRhU3RhdGUpOwogICAgIG1fb3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gbV9p
bnNlcnRpb25Nb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFZpZXdTb3VyY2VQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFZp
ZXdTb3VyY2VQYXJzZXIuY3BwCmluZGV4IDdjZGJkYzcxYzk5MGUwZGY1MmQwOWEyZmI5MTNmYzI3
Y2Y0NDQyMzcuLmU4MmZhOTMwMTZiMGE0YjZhYzRlODgyYjFjMTE3NmEzODA1OGI4ZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5j
cHAKQEAgLTc1LDcgKzc1LDcgQEAgU3RyaW5nIEhUTUxWaWV3U291cmNlUGFyc2VyOjpzb3VyY2VG
b3JUb2tlbigpCiB2b2lkIEhUTUxWaWV3U291cmNlUGFyc2VyOjp1cGRhdGVUb2tlbml6ZXJTdGF0
ZSgpCiB7CiAgICAgLy8gRklYTUU6IFRoZSB0b2tlbml6ZXIgc2hvdWxkIGRvIHRoaXMgd29yayBm
b3IgdXMuCi0gICAgaWYgKG1fdG9rZW4udHlwZSgpICE9IEhUTUxUb2tlbjo6U3RhcnRUYWcpCisg
ICAgaWYgKG1fdG9rZW4udHlwZSgpICE9IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZykKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQXRvbWljU3RyaW5nIHRhZ05hbWUobV90b2tlbi5uYW1lKCkuZGF0
YSgpLCBtX3Rva2VuLm5hbWUoKS5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAKaW5kZXggZDAzYjc0NGU4NzIxMTY0OGM5MmY1
MTM3OGMwYjJiOGUxM2U4M2VlMy4uNjNiNTE2MDIxYTQyNDlmMzVjYjZkYTdmZTRhYWYyYzMyZjM4
YWNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQ
YXJzZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgVGV4dERvY3VtZW50UGFyc2VyOjppbnNl
cnRGYWtlUHJlRWxlbWVudCgpCiAgICAgUmVmUHRyPEF0dHJpYnV0ZT4gc3R5bGVBdHRyaWJ1dGUg
PSBBdHRyaWJ1dGU6OmNyZWF0ZU1hcHBlZCgic3R5bGUiLCAid29yZC13cmFwOiBicmVhay13b3Jk
OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7Iik7CiAgICAgUmVmUHRyPE5hbWVkTm9kZU1hcD4gYXR0
cmlidXRlcyA9IE5hbWVkTm9kZU1hcDo6Y3JlYXRlKCk7CiAgICAgYXR0cmlidXRlcy0+aW5zZXJ0
QXR0cmlidXRlKHN0eWxlQXR0cmlidXRlLnJlbGVhc2UoKSwgZmFsc2UpOwotICAgIEF0b21pY0hU
TUxUb2tlbiBmYWtlUHJlKEhUTUxUb2tlbjo6U3RhcnRUYWcsIHByZVRhZy5sb2NhbE5hbWUoKSwg
YXR0cmlidXRlcy5yZWxlYXNlKCkpOworICAgIEF0b21pY0hUTUxUb2tlbiBmYWtlUHJlKEhUTUxU
b2tlblR5cGVzOjpTdGFydFRhZywgcHJlVGFnLmxvY2FsTmFtZSgpLCBhdHRyaWJ1dGVzLnJlbGVh
c2UoKSk7CiAKICAgICB0cmVlQnVpbGRlcigpLT5jb25zdHJ1Y3RUcmVlRnJvbUF0b21pY1Rva2Vu
KGZha2VQcmUpOwogICAgIG1faGF2ZUluc2VydGVkRmFrZVByZUVsZW1lbnQgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAppbmRleCBlODFlYWJiMDk1ZTQy
M2MyYmRjMWU4NDg0YWI3MGQ2ZDE1YjU0ODcxLi5lZTFkMmNlMWE0ZWI1OTZjY2Q0NmQxNjkwNTQx
NDg5NDhlMmYxOWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NB
dWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNw
cApAQCAtMjM0LDcgKzIzNCw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW5Jbml0aWFs
KEhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gSW5pdGlhbCk7CiAK
LSAgICBpZiAodG9rZW4udHlwZSgpICE9IEhUTUxUb2tlbjo6U3RhcnRUYWcpCisgICAgaWYgKHRv
a2VuLnR5cGUoKSAhPSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGJvb2wgZGlkQmxvY2tTY3JpcHQgPSBlcmFzZURhbmdlcm91c0F0dHJpYnV0
ZXNJZkluamVjdGVkKHRva2VuKTsKQEAgLTI2Niw4ICsyNjYsOCBAQCBib29sIFhTU0F1ZGl0b3I6
OmZpbHRlclRva2VuQWZ0ZXJTY3JpcHRTdGFydFRhZyhIVE1MVG9rZW4mIHRva2VuKQogICAgIEFT
U0VSVChtX3N0YXRlID09IEFmdGVyU2NyaXB0U3RhcnRUYWcpOwogICAgIG1fc3RhdGUgPSBJbml0
aWFsOwogCi0gICAgaWYgKHRva2VuLnR5cGUoKSAhPSBIVE1MVG9rZW46OkNoYXJhY3Rlcikgewot
ICAgICAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnIHx8IHRva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZE9mRmlsZSk7CisgICAgaWYgKHRva2VuLnR5cGUoKSAh
PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKSB7CisgICAgICAgIEFTU0VSVCh0b2tlbi50eXBl
KCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyB8fCB0b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
VHlwZXM6OkVuZE9mRmlsZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTI4
Niw3ICsyODYsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlclRva2VuQWZ0ZXJTY3JpcHRTdGFy
dFRhZyhIVE1MVG9rZW4mIHRva2VuKQogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJTY3JpcHRUb2tl
bihIVE1MVG9rZW4mIHRva2VuKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IEluaXRpYWwpOwot
ICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CisgICAgQVNT
RVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIEFTU0VS
VChoYXNOYW1lKHRva2VuLCBzY3JpcHRUYWcpKTsKIAogICAgIGlmIChlcmFzZUF0dHJpYnV0ZUlm
SW5qZWN0ZWQodG9rZW4sIHNyY0F0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCkpKQpAQCAtMzAwLDcg
KzMwMCw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyU2NyaXB0VG9rZW4oSFRNTFRva2VuJiB0
b2tlbikKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyT2JqZWN0VG9rZW4oSFRNTFRva2VuJiB0b2tl
bikKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBJbml0aWFsKTsKLSAgICBBU1NFUlQodG9rZW4u
dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkg
PT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZSh0b2tlbiwg
b2JqZWN0VGFnKSk7CiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CkBAIC0zMTUs
NyArMzE1LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJPYmplY3RUb2tlbihIVE1MVG9rZW4m
IHRva2VuKQogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJQYXJhbVRva2VuKEhUTUxUb2tlbiYgdG9r
ZW4pCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gSW5pdGlhbCk7Ci0gICAgQVNTRVJUKHRva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgp
ID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUodG9rZW4s
IHBhcmFtVGFnKSk7CiAKICAgICBzaXplX3QgaW5kZXhPZk5hbWVBdHRyaWJ1dGU7CkBAIC0zMzQs
NyArMzM0LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJQYXJhbVRva2VuKEhUTUxUb2tlbiYg
dG9rZW4pCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckVtYmVkVG9rZW4oSFRNTFRva2VuJiB0b2tl
bikKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBJbml0aWFsKTsKLSAgICBBU1NFUlQodG9rZW4u
dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkg
PT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZSh0b2tlbiwg
ZW1iZWRUYWcpKTsKIAogICAgIGJvb2wgZGlkQmxvY2tTY3JpcHQgPSBmYWxzZTsKQEAgLTM0OCw3
ICszNDgsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckVtYmVkVG9rZW4oSFRNTFRva2VuJiB0
b2tlbikKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyQXBwbGV0VG9rZW4oSFRNTFRva2VuJiB0b2tl
bikKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBJbml0aWFsKTsKLSAgICBBU1NFUlQodG9rZW4u
dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkg
PT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZSh0b2tlbiwg
YXBwbGV0VGFnKSk7CiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CkBAIC0zNjIs
NyArMzYyLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJBcHBsZXRUb2tlbihIVE1MVG9rZW4m
IHRva2VuKQogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJJZnJhbWVUb2tlbihIVE1MVG9rZW4mIHRv
a2VuKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IEluaXRpYWwpOwotICAgIEFTU0VSVCh0b2tl
bi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUo
KSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHRva2Vu
LCBpZnJhbWVUYWcpKTsKIAogICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQodG9r
ZW4sIHNyY0F0dHIpOwpAQCAtMzcxLDcgKzM3MSw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVy
SWZyYW1lVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyTWV0
YVRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gSW5pdGlh
bCk7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAg
ICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAg
QVNTRVJUKGhhc05hbWUodG9rZW4sIG1ldGFUYWcpKTsKIAogICAgIHJldHVybiBlcmFzZUF0dHJp
YnV0ZUlmSW5qZWN0ZWQodG9rZW4sIGh0dHBfZXF1aXZBdHRyKTsKQEAgLTM4MCw3ICszODAsNyBA
QCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlck1ldGFUb2tlbihIVE1MVG9rZW4mIHRva2VuKQogYm9v
bCBYU1NBdWRpdG9yOjpmaWx0ZXJCYXNlVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKIHsKICAgICBB
U1NFUlQobV9zdGF0ZSA9PSBJbml0aWFsKTsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhU
TUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
VHlwZXM6OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZSh0b2tlbiwgYmFzZVRhZykpOwog
CiAgICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZCh0b2tlbiwgaHJlZkF0dHIpOwpA
QCAtMzg5LDcgKzM4OSw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyQmFzZVRva2VuKEhUTUxU
b2tlbiYgdG9rZW4pCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckZvcm1Ub2tlbihIVE1MVG9rZW4m
IHRva2VuKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IEluaXRpYWwpOwotICAgIEFTU0VSVCh0
b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHRv
a2VuLCBmb3JtVGFnKSk7CiAKICAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHRv
a2VuLCBhY3Rpb25BdHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
TWFya3VwVG9rZW5CYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2Vu
QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdkMmFiMGY5NjI1MTliYmUyNGE1YjRhMzZhNzIzMmFhNzAzZjI5
MDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRv
a2VuQmFzZS5oCkBAIC0wLDAgKzEsMzgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNYXJrdXBUb2tlbkJhc2VfaAorI2RlZmluZSBNYXJr
dXBUb2tlbkJhc2VfaAorCisjaW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgRG9jdHlwZURhdGFCYXNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShEb2N0eXBlRGF0YUJhc2UpOworcHVibGljOgorICAgIERvY3R5cGVEYXRhQmFzZSgpCisgICAg
ICAgIDogbV9oYXNQdWJsaWNJZGVudGlmaWVyKGZhbHNlKQorICAgICAgICAsIG1faGFzU3lzdGVt
SWRlbnRpZmllcihmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBtX2hhc1B1YmxpY0lk
ZW50aWZpZXI7CisgICAgYm9vbCBtX2hhc1N5c3RlbUlkZW50aWZpZXI7CisgICAgV1RGOjpWZWN0
b3I8VUNoYXI+IG1fcHVibGljSWRlbnRpZmllcjsKKyAgICBXVEY6OlZlY3RvcjxVQ2hhcj4gbV9z
eXN0ZW1JZGVudGlmaWVyOworfTsKKyAgICAKK3RlbXBsYXRlPHR5cGVuYW1lIFR5cGVTZXQsIHR5
cGVuYW1lIERvY3R5cGVEYXRhID0gRG9jdHlwZURhdGFCYXNlPgorY2xhc3MgTWFya3VwVG9rZW5C
YXNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNYXJrdXBUb2tlbkJhc2UpOworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHR5cGVkZWYgdHlwZW5hbWUgVHlw
ZVNldDo6VHlwZSBUeXBlOworCisgICAgY2xhc3MgUmFuZ2UgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgaW50IG1fc3RhcnQ7CisgICAgICAgIGludCBtX2VuZDsKKyAgICB9OworCisgICAgY2xhc3Mg
QXR0cmlidXRlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFJhbmdlIG1fbmFtZVJhbmdlOworICAg
ICAgICBSYW5nZSBtX3ZhbHVlUmFuZ2U7CisgICAgICAgIFdURjo6VmVjdG9yPFVDaGFyLCAzMj4g
bV9uYW1lOworICAgICAgICBXVEY6OlZlY3RvcjxVQ2hhciwgMzI+IG1fdmFsdWU7CisgICAgfTsK
KworICAgIHR5cGVkZWYgV1RGOjpWZWN0b3I8QXR0cmlidXRlLCAxMD4gQXR0cmlidXRlTGlzdDsK
KyAgICB0eXBlZGVmIFdURjo6VmVjdG9yPFVDaGFyLCAxMDI0PiBEYXRhVmVjdG9yOworCisgICAg
TWFya3VwVG9rZW5CYXNlKCkgeyBjbGVhcigpOyB9CisgICAgdmlydHVhbCB+TWFya3VwVG9rZW5C
YXNlKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgbV90
eXBlID0gVHlwZVNldDo6VW5pbml0aWFsaXplZDsKKyAgICAgICAgbV9yYW5nZS5tX3N0YXJ0ID0g
MDsKKyAgICAgICAgbV9yYW5nZS5tX2VuZCA9IDA7CisgICAgICAgIG1fYmFzZU9mZnNldCA9IDA7
CisgICAgICAgIG1fZGF0YS5jbGVhcigpOworICAgIH0KKworICAgIGJvb2wgaXNVbmluaXRpYWxp
emVkKCkgeyByZXR1cm4gbV90eXBlID09IFR5cGVTZXQ6OlVuaW5pdGlhbGl6ZWQ7IH0KKworICAg
IGludCBzdGFydEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZS5tX3N0YXJ0OyB9CisgICAg
aW50IGVuZEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZS5tX2VuZDsgfQorCisgICAgdm9p
ZCBzZXRCYXNlT2Zmc2V0KGludCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2Jhc2VPZmZzZXQg
PSBvZmZzZXQ7CisgICAgfQorCisgICAgdm9pZCBlbmQoaW50IGVuZE9mZnNldCkKKyAgICB7Cisg
ICAgICAgIG1fcmFuZ2UubV9lbmQgPSBlbmRPZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7CisgICAgfQor
CisgICAgdm9pZCBtYWtlRW5kT2ZGaWxlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gVHlwZVNldDo6VW5pbml0aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9IFR5cGVTZXQ6OkVu
ZE9mRmlsZTsKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luU3RhcnRUYWcoVUNoYXIgY2hhcmFjdGVy
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gVHlwZVNldDo6VW5pbml0aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9IFR5cGVTZXQ6
OlN0YXJ0VGFnOworICAgICAgICBtX3NlbGZDbG9zaW5nID0gZmFsc2U7CisgICAgICAgIG1fY3Vy
cmVudEF0dHJpYnV0ZSA9IDA7CisgICAgICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOworCisgICAg
ICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorICAgIHZvaWQgYmVnaW5FbmRUYWcoVCBjaGFyYWN0ZXJzKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpVbmluaXRpYWxpemVkKTsKKyAgICAgICAgbV90
eXBlID0gVHlwZVNldDo6RW5kVGFnOworICAgICAgICBtX3NlbGZDbG9zaW5nID0gZmFsc2U7Cisg
ICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9IDA7CisgICAgICAgIG1fYXR0cmlidXRlcy5jbGVh
cigpOworCisgICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVycyk7CisgICAgfQorCisgICAg
Ly8gU3RhcnRpbmcgYSBjaGFyYWN0ZXIgdG9rZW4gd29ya3Mgc2xpZ2h0bHkgZGlmZmVyZW50bHkg
dGhhbiBzdGFydGluZworICAgIC8vIG90aGVyIHR5cGVzIG9mIHRva2VucyBiZWNhdXNlIHdlIHdh
bnQgdG8gc2F2ZSBhIHBlci1jaGFyYWN0ZXIgYnJhbmNoLgorICAgIHZvaWQgZW5zdXJlSXNDaGFy
YWN0ZXJUb2tlbigpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlVu
aW5pdGlhbGl6ZWQgfHwgbV90eXBlID09IFR5cGVTZXQ6OkNoYXJhY3Rlcik7CisgICAgICAgIG1f
dHlwZSA9IFR5cGVTZXQ6OkNoYXJhY3RlcjsKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luQ29tbWVu
dCgpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlVuaW5pdGlhbGl6
ZWQpOworICAgICAgICBtX3R5cGUgPSBUeXBlU2V0OjpDb21tZW50OworICAgIH0KKworICAgIHZv
aWQgYmVnaW5ET0NUWVBFKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNl
dDo6VW5pbml0aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9IFR5cGVTZXQ6OkRPQ1RZUEU7Cisg
ICAgICAgIG1fZG9jdHlwZURhdGEgPSBhZG9wdFB0cihuZXcgRG9jdHlwZURhdGEoKSk7CisgICAg
fQorCisgICAgdm9pZCBiZWdpbkRPQ1RZUEUoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIGJlZ2luRE9DVFlQRSgpOworICAgICAgICBt
X2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KKyAgICB2b2lkIGFwcGVuZFRvQ2hhcmFjdGVyKFQgY2hhcmFjdGVycykKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6Q2hhcmFjdGVyKTsKKyAgICAgICAgbV9kYXRh
LmFwcGVuZChjaGFyYWN0ZXJzKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFRvQ29tbWVudChV
Q2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpDb21tZW50KTsKKyAgICAgICAgbV9kYXRhLmFw
cGVuZChjaGFyYWN0ZXIpOworICAgIH0KKworICAgIHZvaWQgYWRkTmV3QXR0cmlidXRlKCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6U3RhcnRUYWcgfHwgbV90eXBl
ID09IFR5cGVTZXQ6OkVuZFRhZyk7CisgICAgICAgIG1fYXR0cmlidXRlcy5ncm93KG1fYXR0cmli
dXRlcy5zaXplKCkgKyAxKTsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlID0gJm1fYXR0cmli
dXRlcy5sYXN0KCk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUt
Pm1fbmFtZVJhbmdlLm1fc3RhcnQgPSAwOworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1f
bmFtZVJhbmdlLm1fZW5kID0gMDsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVl
UmFuZ2UubV9zdGFydCA9IDA7CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJh
bmdlLm1fZW5kID0gMDsKKyNlbmRpZgorICAgIH0KKworICAgIHZvaWQgYmVnaW5BdHRyaWJ1dGVO
YW1lKGludCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFt
ZVJhbmdlLm1fc3RhcnQgPSBvZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7CisgICAgfQorCisgICAgdm9p
ZCBlbmRBdHRyaWJ1dGVOYW1lKGludCBvZmZzZXQpCisgICAgeworICAgICAgICBpbnQgaW5kZXgg
PSBvZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9u
YW1lUmFuZ2UubV9lbmQgPSBpbmRleDsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3Zh
bHVlUmFuZ2UubV9zdGFydCA9IGluZGV4OworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1f
dmFsdWVSYW5nZS5tX2VuZCA9IGluZGV4OworICAgIH0KKworICAgIHZvaWQgYmVnaW5BdHRyaWJ1
dGVWYWx1ZShpbnQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5t
X3ZhbHVlUmFuZ2UubV9zdGFydCA9IG9mZnNldCAtIG1fYmFzZU9mZnNldDsKKyNpZm5kZWYgTkRF
QlVHCisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fZW5kID0gMDsK
KyNlbmRpZgorICAgIH0KKworICAgIHZvaWQgZW5kQXR0cmlidXRlVmFsdWUoaW50IG9mZnNldCkK
KyAgICB7CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fZW5kID0g
b2Zmc2V0IC0gbV9iYXNlT2Zmc2V0OworICAgIH0KKworICAgIHZvaWQgYXBwZW5kVG9BdHRyaWJ1
dGVOYW1lKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIp
OworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9
PSBUeXBlU2V0OjpFbmRUYWcpOworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUg
dG8gYWRkIHRoZSBmb2xsb3dpbmcgQVNTRVJUIG9uY2Ugd2UgZml4CisgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjk3MQorICAgICAgICAvLyAgIEFT
U0VSVChtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fc3RhcnQpOworICAgICAgICBt
X2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAg
ICB2b2lkIGFwcGVuZFRvQXR0cmlidXRlVmFsdWUoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNl
dDo6U3RhcnRUYWcgfHwgbV90eXBlID09IFR5cGVTZXQ6OkVuZFRhZyk7CisgICAgICAgIEFTU0VS
VChtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX3N0YXJ0KTsKKyAgICAgICAgbV9j
dXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlLmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0KKworICAg
IHZvaWQgYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShzaXplX3QgaSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCghdmFsdWUuaXNFbXB0eSgpKTsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6RW5k
VGFnKTsKKyAgICAgICAgbV9hdHRyaWJ1dGVzW2ldLm1fdmFsdWUuYXBwZW5kKHZhbHVlLmNoYXJh
Y3RlcnMoKSwgdmFsdWUubGVuZ3RoKCkpOworICAgIH0KKworICAgIFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQorCisgICAgYm9vbCBzZWxmQ2xvc2luZygpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9
PSBUeXBlU2V0OjpFbmRUYWcpOworICAgICAgICByZXR1cm4gbV9zZWxmQ2xvc2luZzsKKyAgICB9
CisKKyAgICB2b2lkIHNldFNlbGZDbG9zaW5nKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gVHlwZVNldDo6U3RhcnRUYWcgfHwgbV90eXBlID09IFR5cGVTZXQ6OkVuZFRhZyk7Cisg
ICAgICAgIG1fc2VsZkNsb3NpbmcgPSB0cnVlOworICAgIH0KKworICAgIGNvbnN0IEF0dHJpYnV0
ZUxpc3QmIGF0dHJpYnV0ZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBUeXBlU2V0OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6RW5kVGFnKTsKKyAgICAg
ICAgcmV0dXJuIG1fYXR0cmlidXRlczsKKyAgICB9CisKKyAgICB2b2lkIGVyYXNlQ2hhcmFjdGVy
cygpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OkNoYXJhY3Rlcik7
CisgICAgICAgIG1fZGF0YS5jbGVhcigpOworICAgIH0KKworICAgIHZvaWQgZXJhc2VWYWx1ZU9m
QXR0cmlidXRlKHNpemVfdCBpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBl
U2V0OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6RW5kVGFnKTsKKyAgICAgICAgbV9h
dHRyaWJ1dGVzW2ldLm1fdmFsdWUuY2xlYXIoKTsKKyAgICB9CisKKyAgICBjb25zdCBEYXRhVmVj
dG9yJiBjaGFyYWN0ZXJzKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
VHlwZVNldDo6Q2hhcmFjdGVyKTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YTsKKyAgICB9CisKKyAg
ICBjb25zdCBEYXRhVmVjdG9yJiBjb21tZW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gVHlwZVNldDo6Q29tbWVudCk7CisgICAgICAgIHJldHVybiBtX2RhdGE7Cisg
ICAgfQorCisgICAgLy8gRklYTUU6IERpc3Rpbmd1aXNoIGJldHdlZW4gYSBtaXNzaW5nIHB1Ymxp
YyBpZGVudGlmZXIgYW5kIGFuIGVtcHR5IG9uZS4KKyAgICBjb25zdCBXVEY6OlZlY3RvcjxVQ2hh
cj4mIHB1YmxpY0lkZW50aWZpZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBUeXBlU2V0OjpET0NUWVBFKTsKKyAgICAgICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1f
cHVibGljSWRlbnRpZmllcjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogRGlzdGluZ3Vpc2ggYmV0
d2VlbiBhIG1pc3Npbmcgc3lzdGVtIGlkZW50aWZlciBhbmQgYW4gZW1wdHkgb25lLgorICAgIGNv
bnN0IFdURjo6VmVjdG9yPFVDaGFyPiYgc3lzdGVtSWRlbnRpZmllcigpIGNvbnN0CisgICAgewor
ICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OkRPQ1RZUEUpOworICAgICAgICByZXR1
cm4gbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyOworICAgIH0KKworICAgIHZvaWQg
c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBUeXBlU2V0OjpET0NUWVBFKTsKKyAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9o
YXNQdWJsaWNJZGVudGlmaWVyID0gdHJ1ZTsKKyAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9wdWJs
aWNJZGVudGlmaWVyLmNsZWFyKCk7CisgICAgfQorCisgICAgdm9pZCBzZXRTeXN0ZW1JZGVudGlm
aWVyVG9FbXB0eVN0cmluZygpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVT
ZXQ6OkRPQ1RZUEUpOworICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2hhc1N5c3RlbUlkZW50aWZp
ZXIgPSB0cnVlOworICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXIuY2xl
YXIoKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFRvUHVibGljSWRlbnRpZmllcihVQ2hhciBj
aGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpET0NUWVBFKTsKKyAgICAgICAgQVNTRVJUKG1fZG9jdHlw
ZURhdGEtPm1faGFzUHVibGljSWRlbnRpZmllcik7CisgICAgICAgIG1fZG9jdHlwZURhdGEtPm1f
cHVibGljSWRlbnRpZmllci5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGFw
cGVuZFRvU3lzdGVtSWRlbnRpZmllcihVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBB
U1NFUlQoY2hhcmFjdGVyKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpET0NU
WVBFKTsKKyAgICAgICAgQVNTRVJUKG1fZG9jdHlwZURhdGEtPm1faGFzU3lzdGVtSWRlbnRpZmll
cik7CisgICAgICAgIG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllci5hcHBlbmQoY2hh
cmFjdGVyKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKworI2lmbmRlZiBOREVCVUcKKyAgICB2b2lk
IHByaW50U3RyaW5nKGNvbnN0IERhdGFWZWN0b3ImIHN0cmluZykgY29uc3QKKyAgICB7CisgICAg
ICAgIERhdGFWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBzdHJpbmcuYmVnaW4oKTsKKyAg
ICAgICAgZm9yICg7IGl0ZXIgIT0gc3RyaW5nLmVuZCgpOyArK2l0ZXIpCisgICAgICAgICAgICBw
cmludGYoIiVsYyIsIHdjaGFyX3QoKml0ZXIpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBwcmlu
dEF0dHJzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHR5cGVuYW1lIEF0dHJpYnV0ZUxpc3Q6OmNv
bnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX2F0dHJpYnV0ZXMuYmVnaW4oKTsKKyAgICAgICAgZm9yICg7
IGl0ZXIgIT0gbV9hdHRyaWJ1dGVzLmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgICAgIHByaW50
ZigiICIpOworICAgICAgICAgICAgcHJpbnRTdHJpbmcoaXRlci0+bV9uYW1lKTsKKyAgICAgICAg
ICAgIHByaW50ZigiPVwiIik7CisgICAgICAgICAgICBwcmludFN0cmluZyhpdGVyLT5tX3ZhbHVl
KTsKKyAgICAgICAgICAgIHByaW50ZigiXCIiKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZiAv
LyBOREVCVUcKKworICAgIGlubGluZSB2b2lkIGFwcGVuZFRvTmFtZShVQ2hhciBjaGFyYWN0ZXIp
CisgICAgeworICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICAgICAgbV9kYXRhLmFwcGVu
ZChjaGFyYWN0ZXIpOworICAgIH0KKyAgICAKKyAgICBpbmxpbmUgY29uc3QgRGF0YVZlY3RvciYg
bmFtZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKworICAg
IC8vIEZJWE1FOiBJJ20gbm90IHN1cmUgd2hhdCB0aGUgZmluYWwgcmVsYXRpb25zaGlwIGJldHdl
ZW4gSFRNTFRva2VuIGFuZAorICAgIC8vIEF0b21pY0hUTUxUb2tlbiB3aWxsIGJlLiBJJ20gbWFy
a2luZyB0aGlzIGEgZnJpZW5kIGZvciBub3csIGJ1dCB3ZSdsbAorICAgIC8vIHdhbnQgdG8gZW5k
IHVwIHdpdGggYSBjbGVhbmVyIGludGVyZmFjZSBiZXR3ZWVuIHRoZSB0d28gY2xhc3Nlcy4KKyAg
ICBmcmllbmQgY2xhc3MgQXRvbWljSFRNTFRva2VuOworCisgICAgVHlwZSBtX3R5cGU7CisgICAg
UmFuZ2UgbV9yYW5nZTsgLy8gQWx3YXlzIHN0YXJ0cyBhdCB6ZXJvLgorICAgIGludCBtX2Jhc2VP
ZmZzZXQ7CisgICAgRGF0YVZlY3RvciBtX2RhdGE7CisKKyAgICAvLyBGb3IgRE9DVFlQRQorICAg
IE93blB0cjxEb2N0eXBlRGF0YT4gbV9kb2N0eXBlRGF0YTsKKworICAgIC8vIEZvciBTdGFydFRh
ZyBhbmQgRW5kVGFnCisgICAgYm9vbCBtX3NlbGZDbG9zaW5nOworICAgIEF0dHJpYnV0ZUxpc3Qg
bV9hdHRyaWJ1dGVzOworCisgICAgLy8gQSBwb2ludGVyIGludG8gbV9hdHRyaWJ1dGVzIHVzZWQg
ZHVyaW5nIGxleGluZy4KKyAgICBBdHRyaWJ1dGUqIG1fY3VycmVudEF0dHJpYnV0ZTsKK307CisK
K30KKworI2VuZGlmIC8vIE1hcmt1cFRva2VuQmFzZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TFRva2VuLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQyODUzZDkzMGY3ZTM3YmRjYWE5M2Y0NTU5OGZiODJkMGVm
MjMwZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9r
ZW4uaApAQCAtMCwwICsxLDMzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUs
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgWE1MVG9rZW5faAorI2RlZmluZSBYTUxUb2tlbl9oCisKKyNp
bmNsdWRlICJNYXJrdXBUb2tlbkJhc2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBYTUxUb2tlblR5cGVzIHsKK3B1YmxpYzoKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBVbmlu
aXRpYWxpemVkLAorICAgICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24sCisgICAgICAgIFhNTERl
Y2xhcmF0aW9uLAorICAgICAgICBET0NUWVBFLAorICAgICAgICBBdHRyaWJ1dGVMaXN0RGVjbGFy
YXRpb24sCisgICAgICAgIEVsZW1lbnREZWNsYXJhdGlvbiwKKyAgICAgICAgRW50aXR5RGVjbGFy
YXRpb24sCisgICAgICAgIENEQVRBLAorICAgICAgICBTdGFydFRhZywKKyAgICAgICAgRW5kVGFn
LAorICAgICAgICBDb21tZW50LAorICAgICAgICBDaGFyYWN0ZXIsCisgICAgICAgIEVudGl0eSwK
KyAgICAgICAgRW5kT2ZGaWxlLAorICAgIH07Cit9OworCitjbGFzcyBYTUxUb2tlbiA6IHB1Ymxp
YyBNYXJrdXBUb2tlbkJhc2U8WE1MVG9rZW5UeXBlcz4geworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFhNTFRva2VuKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKwor
ICAgIFhNTFRva2VuKCkgOiBNYXJrdXBUb2tlbkJhc2U8WE1MVG9rZW5UeXBlcz4oKSB7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBNYXJrdXBUb2tlbkJhc2U8
WE1MVG9rZW5UeXBlcz46OmNsZWFyKCk7CisgICAgICAgIG1fdGFyZ2V0LmNsZWFyKCk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXBwZW5kVG9OYW1lKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBl
ID09IFhNTFRva2VuVHlwZXM6OkVuZFRhZyB8fCBtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6RE9D
VFlQRSB8fCBtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6RW50aXR5KTsKKyAgICAgICAgTWFya3Vw
VG9rZW5CYXNlPFhNTFRva2VuVHlwZXM+OjphcHBlbmRUb05hbWUoY2hhcmFjdGVyKTsKKyAgICB9
CisgICAgCisgICAgY29uc3QgRGF0YVZlY3RvciYgbmFtZSgpIGNvbnN0CisgICAgeworICAgICAg
ICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBY
TUxUb2tlblR5cGVzOjpFbmRUYWcgfHwgbV90eXBlID09IFhNTFRva2VuVHlwZXM6OkRPQ1RZUEUg
fHwgbV90eXBlID09IFhNTFRva2VuVHlwZXM6OkVudGl0eSk7CisgICAgICAgIHJldHVybiBNYXJr
dXBUb2tlbkJhc2U8WE1MVG9rZW5UeXBlcz46Om5hbWUoKTsKKyAgICB9CisKKyAgICB2b2lkIGJl
Z2luRE9DVFlQRSgpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlw
ZXM6OlVuaW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5cGUgPSBYTUxUb2tlblR5cGVzOjpET0NU
WVBFOworICAgICAgICBtX2RvY3R5cGVEYXRhID0gYWRvcHRQdHIobmV3IERvY3R5cGVEYXRhKCkp
OworICAgIH0KKworICAgIHZvaWQgYmVnaW5ET0NUWVBFKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7
CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgICAgICBiZWdpbkRPQ1RZUEUoKTsKKyAg
ICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0KKworICAgIHZvaWQgYmVnaW5Y
TUxEZWNsYXJhdGlvbigpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2Vu
VHlwZXM6OlVuaW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5cGUgPSBYTUxUb2tlblR5cGVzOjpY
TUxEZWNsYXJhdGlvbjsKKyAgICAgICAgbV94bWxEZWNsYXJhdGlvbkRhdGEgPSBhZG9wdFB0cihu
ZXcgWE1MRGVjbGFyYXRpb25EYXRhKCkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFwcGVuZFRv
WE1MVmVyc2lvbihVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoY2hhcmFj
dGVyKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpYTUxEZWNsYXJh
dGlvbik7CisgICAgICAgIEFTU0VSVChtX3htbERlY2xhcmF0aW9uRGF0YSk7CisgICAgICAgIG1f
eG1sRGVjbGFyYXRpb25EYXRhLT5tX3ZlcnNpb24uYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQor
CisgICAgdm9pZCBiZWdpblhNTEVuY29kaW5nKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAg
ICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2Vu
VHlwZXM6OlhNTERlY2xhcmF0aW9uKTsKKyAgICAgICAgQVNTRVJUKG1feG1sRGVjbGFyYXRpb25E
YXRhKTsKKyAgICAgICAgbV94bWxEZWNsYXJhdGlvbkRhdGEtPm1faGFzRW5jb2RpbmcgPSB0cnVl
OworICAgICAgICBtX3htbERlY2xhcmF0aW9uRGF0YS0+bV9lbmNvZGluZy5hcHBlbmQoY2hhcmFj
dGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFRvWE1MRW5jb2RpbmcoVUNoYXIgY2hhcmFj
dGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6WE1MRGVjbGFyYXRpb24pOworICAgICAgICBBU1NFUlQo
bV94bWxEZWNsYXJhdGlvbkRhdGEpOworICAgICAgICBBU1NFUlQobV94bWxEZWNsYXJhdGlvbkRh
dGEtPm1faGFzRW5jb2RpbmcpOworICAgICAgICBtX3htbERlY2xhcmF0aW9uRGF0YS0+bV9lbmNv
ZGluZy5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIHNldFhNTFN0YW5kYWxv
bmUoYm9vbCBzdGFuZGFsb25lKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxU
b2tlblR5cGVzOjpYTUxEZWNsYXJhdGlvbik7CisgICAgICAgIEFTU0VSVChtX3htbERlY2xhcmF0
aW9uRGF0YSk7CisgICAgICAgIG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX2hhc1N0YW5kYWxvbmUg
PSB0cnVlOworICAgICAgICBtX3htbERlY2xhcmF0aW9uRGF0YS0+bV9zdGFuZGFsb25lID0gc3Rh
bmRhbG9uZTsKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luUHJvY2Vzc2luZ0luc3RydWN0aW9uKCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6VW5pbml0aWFs
aXplZCk7CisgICAgICAgIG1fdHlwZSA9IFhNTFRva2VuVHlwZXM6OlByb2Nlc3NpbmdJbnN0cnVj
dGlvbjsKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luUHJvY2Vzc2luZ0luc3RydWN0aW9uKFVDaGFy
IGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgICAgICBi
ZWdpblByb2Nlc3NpbmdJbnN0cnVjdGlvbigpOworICAgICAgICBtX3RhcmdldC5hcHBlbmQoY2hh
cmFjdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFRvUHJvY2Vzc2luZ0luc3RydWN0aW9u
VGFyZ2V0KFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
WE1MVG9rZW5UeXBlczo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKTsKKyAgICAgICAgQVNTRVJUKGNo
YXJhY3Rlcik7CisgICAgICAgIG1fdGFyZ2V0LmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0KKwor
ICAgIHZvaWQgYXBwZW5kVG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25EYXRhKFVDaGFyIGNoYXJhY3Rl
cikKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6UHJvY2Vz
c2luZ0luc3RydWN0aW9uKTsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIG1f
ZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luQ0RBVEEoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpVbmluaXRpYWxp
emVkKTsKKyAgICAgICAgbV90eXBlID0gWE1MVG9rZW5UeXBlczo6Q0RBVEE7CisgICAgfQorCisg
ICAgdm9pZCBhcHBlbmRUb0NEQVRBKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6Q0RBVEEpOworICAgICAgICBBU1NFUlQoY2hh
cmFjdGVyKTsKKyAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0KKworICAg
IHZvaWQgYmVnaW5FbnRpdHkoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxU
b2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsKKyAgICAgICAgbV90eXBlID0gWE1MVG9rZW5UeXBl
czo6RW50aXR5OworICAgIH0KKworICAgIHZvaWQgYmVnaW5FbnRpdHkoVUNoYXIgY2hhcmFjdGVy
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIGJlZ2luRW50aXR5
KCk7CisgICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyNpZm5kZWYg
TkRFQlVHCisgICAgdm9pZCBwcmludCgpIGNvbnN0CisgICAgeworICAgICAgICBzd2l0Y2ggKG1f
dHlwZSkgeworICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQ6CisgICAg
ICAgICAgICBwcmludGYoIlVOSVRJQUxJWkVEIik7CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjoKKyAgICAgICAg
ICAgIHByaW50ZigiUHJvY2Vzc2luZ0luc3RydWN0aW9uOiAiKTsKKyAgICAgICAgICAgIHByaW50
ZigiPD8iKTsKKyAgICAgICAgICAgIHByaW50U3RyaW5nKG1fdGFyZ2V0KTsKKyAgICAgICAgICAg
IHByaW50ZigiICIpOworICAgICAgICAgICAgcHJpbnRTdHJpbmcobV9kYXRhKTsKKyAgICAgICAg
ICAgIHByaW50ZigiPz4iKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgWE1M
VG9rZW5UeXBlczo6WE1MRGVjbGFyYXRpb246CisgICAgICAgICAgICBwcmludGYoIlhNTCBEZWNs
YXJhdGlvbjogIik7CisgICAgICAgICAgICBwcmludGYoIjw/eG1sIHZlcnNpb249XCIiKTsKKyAg
ICAgICAgICAgIEFTU0VSVChtX3htbERlY2xhcmF0aW9uRGF0YSk7CisgICAgICAgICAgICBwcmlu
dFN0cmluZyhtX3htbERlY2xhcmF0aW9uRGF0YS0+bV92ZXJzaW9uKTsKKyAgICAgICAgICAgIHBy
aW50ZigiXCIiKTsKKyAgICAgICAgICAgIGlmIChtX3htbERlY2xhcmF0aW9uRGF0YS0+bV9oYXNF
bmNvZGluZykgeworICAgICAgICAgICAgICAgIHByaW50ZigiIGVuY29kaW5nPVwiIik7CisgICAg
ICAgICAgICAgICAgcHJpbnRTdHJpbmcobV94bWxEZWNsYXJhdGlvbkRhdGEtPm1fZW5jb2Rpbmcp
OworICAgICAgICAgICAgICAgIHByaW50ZigiXCIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmIChtX3htbERlY2xhcmF0aW9uRGF0YS0+bV9oYXNTdGFuZGFsb25lKQorICAgICAgICAg
ICAgICAgIHByaW50ZigiIHN0YW5kYWxvbmU9XCIlc1wiIiwgbV94bWxEZWNsYXJhdGlvbkRhdGEt
Pm1fc3RhbmRhbG9uZSA/ICJ5ZXMiIDogIm5vIik7CisgICAgICAgICAgICBwcmludGYoIj8+Iik7
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkRPQ1RZ
UEU6CisgICAgICAgICAgICBwcmludGYoIkRPQ1RZUEU6ICIpOworICAgICAgICAgICAgQVNTRVJU
KG1fZG9jdHlwZURhdGEpOworICAgICAgICAgICAgcHJpbnRmKCI8IURPQ1RZUEUgIik7CisgICAg
ICAgICAgICBwcmludFN0cmluZyhtX2RhdGEpOworICAgICAgICAgICAgaWYgKG1fZG9jdHlwZURh
dGEtPm1faGFzUHVibGljSWRlbnRpZmllcikgeworICAgICAgICAgICAgICAgIHByaW50ZigiIFBV
QkxJQyBcIiIpOworICAgICAgICAgICAgICAgIHByaW50U3RyaW5nKG1fZG9jdHlwZURhdGEtPm1f
cHVibGljSWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgcHJpbnRmKCJcIiIpOworICAgICAg
ICAgICAgICAgIGlmIChtX2RvY3R5cGVEYXRhLT5tX2hhc1N5c3RlbUlkZW50aWZpZXIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgcHJpbnRmKCIgXCIiKTsKKyAgICAgICAgICAgICAgICAgICAgcHJp
bnRTdHJpbmcobV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyKTsKKyAgICAgICAgICAg
ICAgICAgICAgcHJpbnRmKCJcIiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAobV9kb2N0eXBlRGF0YS0+bV9oYXNTeXN0ZW1JZGVudGlmaWVyKSB7CisgICAgICAg
ICAgICAgICAgcHJpbnRmKCIgU1lTVEVNIFwiIik7CisgICAgICAgICAgICAgICAgcHJpbnRTdHJp
bmcobV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICBw
cmludGYoIlwiIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcmludGYoIj4iKTsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6QXR0cmlidXRl
TGlzdERlY2xhcmF0aW9uOgorICAgICAgICAgICAgcHJpbnRmKCJBdHRyaWJ1dGUgTGlzdDogIik7
CisgICAgICAgICAgICBwcmludGYoIjwhQVRUTElTVD4iKTsKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6RWxlbWVudERlY2xhcmF0aW9uOgorICAgICAg
ICAgICAgcHJpbnRmKCJFbGVtZW50IERlY2xhcmF0aW9uOiAiKTsKKyAgICAgICAgICAgIHByaW50
ZigiPCFFTEVNRU5UPiIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBYTUxU
b2tlblR5cGVzOjpFbnRpdHlEZWNsYXJhdGlvbjoKKyAgICAgICAgICAgIHByaW50ZigiRW50aXR5
IERlY2xhcmF0aW9uOiAiKTsKKyAgICAgICAgICAgIHByaW50ZigiPCFFTlRJVFk+Iik7CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkNEQVRBOgorICAg
ICAgICAgICAgcHJpbnRmKCJDREFUQTogIik7CisgICAgICAgICAgICBwcmludGYoIjwhW0NEQVRB
WyIpOworICAgICAgICAgICAgcHJpbnRTdHJpbmcobV9kYXRhKTsKKyAgICAgICAgICAgIHByaW50
ZigiXV0+Iik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFhNTFRva2VuVHlw
ZXM6OlN0YXJ0VGFnOgorICAgICAgICAgICAgcHJpbnRmKCJTdGFydCBUYWc6ICIpOworICAgICAg
ICAgICAgcHJpbnRmKCI8Iik7CisgICAgICAgICAgICBwcmludFN0cmluZyhtX2RhdGEpOworICAg
ICAgICAgICAgcHJpbnRBdHRycygpOworICAgICAgICAgICAgaWYgKHNlbGZDbG9zaW5nKCkpCisg
ICAgICAgICAgICAgICAgcHJpbnRmKCIvIik7CisgICAgICAgICAgICBwcmludGYoIj4iKTsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6RW5kVGFnOgor
ICAgICAgICAgICAgcHJpbnRmKCJFbmQgVGFnOiAiKTsKKyAgICAgICAgICAgIHByaW50ZigiPC8i
KTsKKyAgICAgICAgICAgIHByaW50U3RyaW5nKG1fZGF0YSk7CisgICAgICAgICAgICBwcmludGYo
Ij4iKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6
Q29tbWVudDoKKyAgICAgICAgICAgIHByaW50ZigiQ29tbWVudDogIik7CisgICAgICAgICAgICBw
cmludGYoIjwhLS0iKTsKKyAgICAgICAgICAgIHByaW50U3RyaW5nKG1fZGF0YSk7CisgICAgICAg
ICAgICBwcmludGYoIi0tPiIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBY
TUxUb2tlblR5cGVzOjpDaGFyYWN0ZXI6CisgICAgICAgICAgICBwcmludGYoIkNoYXJhY3RlcnM6
ICIpOworICAgICAgICAgICAgcHJpbnRTdHJpbmcobV9kYXRhKTsKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6RW50aXR5OgorICAgICAgICAgICAgcHJp
bnRmKCJFbnRpdHk6ICIpOworICAgICAgICAgICAgcHJpbnRmKCImIik7CisgICAgICAgICAgICBw
cmludFN0cmluZyhtX2RhdGEpOworICAgICAgICAgICAgcHJpbnRmKCI7Iik7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkVuZE9mRmlsZToKKyAgICAg
ICAgICAgIHByaW50ZigiRU9GIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIHByaW50ZigiXG4iKTsKKyAgICB9CisjZW5kaWYgLy8gTkRFQlVHCisKK3ByaXZhdGU6
CisgICAgdHlwZWRlZiBCYXNlRG9jdHlwZURhdGEgRG9jdHlwZURhdGE7CisKKyAgICBjbGFzcyBY
TUxEZWNsYXJhdGlvbkRhdGEgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShYTUxEZWNs
YXJhdGlvbkRhdGEpOworICAgIHB1YmxpYzoKKyAgICAgICAgWE1MRGVjbGFyYXRpb25EYXRhKCkK
KyAgICAgICAgICAgIDogbV9oYXNTdGFuZGFsb25lKGZhbHNlKQorICAgICAgICAgICAgLCBtX2hh
c0VuY29kaW5nKGZhbHNlKQorICAgICAgICAgICAgLCBtX3N0YW5kYWxvbmUoZmFsc2UpCisgICAg
ICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBtX2hhc1N0YW5kYWxvbmU7
CisgICAgICAgIGJvb2wgbV9oYXNFbmNvZGluZzsKKyAgICAgICAgYm9vbCBtX3N0YW5kYWxvbmU7
CisgICAgICAgIFdURjo6VmVjdG9yPFVDaGFyPiBtX2VuY29kaW5nOworICAgICAgICBXVEY6OlZl
Y3RvcjxVQ2hhcj4gbV92ZXJzaW9uOworICAgIH07CisKKyAgICAvLyAidGFyZ2V0IiBmb3IgUHJv
Y2Vzc2luZ0luc3RydWN0aW9uCisgICAgRGF0YVZlY3RvciBtX3RhcmdldDsKKyAgICAKKyAgICAv
LyBGb3IgWE1MIERlY2xhcmF0aW9uCisgICAgT3duUHRyPFhNTERlY2xhcmF0aW9uRGF0YT4gbV94
bWxEZWNsYXJhdGlvbkRhdGE7Cit9OworCit9CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101497</attachid>
            <date>2011-07-20 12:51:12 -0700</date>
            <delta_ts>2011-07-20 13:35:12 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-64764-20110720125111.patch</filename>
            <type>text/plain</type>
            <size>86220</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEyMTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNWFmNDRjOWQ2MDMyMGIw
MTFiNWI3N2YwZGE4YTZlYmNkM2JiYjFlLi4xZmZkYzhiYzFhNmIzYWFkMjQ5ZGZkN2RiNTEwZjE1
MmJmZTViMWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY1IEBACisyMDExLTA3LTIwICBKZWZm
cmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgTmV3IFRva2VuIGNsYXNzIGZv
ciBYTUwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0
NzY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBSZWZhY3Rv
ciBIVE1MVG9rZW4gaW50byBNYXJrdXBUb2tlbkJhc2UgYW5kIGFkZCBuZXcgWE1MVG9rZW4KKwor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkU291cmNlKToKKyAgICAgICAgKiBodG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29u
c3RydWN0aW9uU2l0ZTo6aW5zZXJ0RG9jdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29u
c3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29u
c3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudE9uRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnRPbkhUTUxIdG1sRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0U2VsZkNsb3Np
bmdIVE1MRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6
aW5zZXJ0Rm9yZWlnbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlv
blNpdGU6OmNyZWF0ZUhUTUxFbGVtZW50RnJvbVNhdmVkRWxlbWVudCk6CisgICAgICAgICogaHRt
bC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZXRhQ2hhcnNldFBhcnNlcjo6Y2hlY2tGb3JNZXRhQ2hhcnNldCk6CisgICAgICAgICogaHRt
bC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQ
cmVsb2FkU2Nhbm5lcjo6cHJvY2Vzc1Rva2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1M
U291cmNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU291cmNlVHJhY2tlcjo6
c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNvdXJjZVRyYWNrZXI6OnNvdXJjZUZvclRv
a2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUb2tlblR5cGVzOjpEb2N0eXBlRGF0YTo6RG9jdHlwZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRva2VuOjphcHBlbmRUb05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRva2VuOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6Zm9yY2VRdWlya3Mp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpzZXRGb3JjZVF1aXJrcyk6CisgICAgICAg
IChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OkF0b21pY0hUTUxUb2tlbik6CisgICAgICAgIChX
ZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWlj
SFRNTFRva2VuOjpzZWxmQ2xvc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9r
ZW46OmNoYXJhY3RlcnMpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpjb21t
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6cHVibGljSWRlbnRpZmll
cik6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OnN5c3RlbUlkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpmb3JjZVF1aXJrcyk6CisgICAg
ICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OnVzZXNOYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkF0b21pY0hUTUxUb2tlbjo6dXNlc0F0dHJpYnV0ZXMpOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxUb2tlbml6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6
c2F2ZUVuZFRhZ05hbWVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVy
OjpmbHVzaEJ1ZmZlcmVkRW5kVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6
Om5leHRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpoYXZlQnVmZmVy
ZWRDaGFyYWN0ZXJUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZy
b21Ub2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tl
bik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NEb2N0eXBlVG9r
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZVN0YXJ0
VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VFbmRU
YWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZVBFbmRU
YWdJZlBJbkJ1dHRvblNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0lzaW5kZXhTdGFydFRhZ0ZvckluQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluQm9keSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluVGFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQm9keUVuZFRhZ0ZvckluQm9keSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NBbnlPdGhlckVuZFRhZ0Zvcklu
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdG
b3JJblRhYmxlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NFbmRUYWdGb3JJblJvdyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NFbmRUYWdGb3JJbkNlbGwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzRW5kVGFnRm9ySW5Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
ZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc0NvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzQ2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0VuZE9mRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmRl
ZmF1bHRGb3JCZWZvcmVIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6
ZGVmYXVsdEZvckJlZm9yZUhlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
OjpkZWZhdWx0Rm9ySW5IZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6
ZGVmYXVsdEZvckluSGVhZE5vc2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVp
bGRlcjo6ZGVmYXVsdEZvckFmdGVySGVhZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluSGVhZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUkNEQVRBU3RhcnRUYWcpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1Jhd1RleHRTdGFydFRhZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTY3JpcHRTdGFydFRhZyk6
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VQYXJzZXI6OnVwZGF0ZVRva2VuaXplclN0YXRlKToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dERvY3VtZW50UGFyc2VyOjppbnNlcnRGYWtlUHJlRWxlbWVudCk6CisgICAg
ICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU1NB
dWRpdG9yOjpmaWx0ZXJUb2tlbkluaXRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRv
cjo6ZmlsdGVyVG9rZW5BZnRlclNjcmlwdFN0YXJ0VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OlhT
U0F1ZGl0b3I6OmZpbHRlclNjcmlwdFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0
b3I6OmZpbHRlck9iamVjdFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZp
bHRlclBhcmFtVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyRW1i
ZWRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJBcHBsZXRUb2tl
bik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJJZnJhbWVUb2tlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJNZXRhVG9rZW4pOgorICAgICAgICAo
V2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyQmFzZVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6
OlhTU0F1ZGl0b3I6OmZpbHRlckZvcm1Ub2tlbik6CisgICAgICAgICogeG1sL3BhcnNlci9NYXJr
dXBUb2tlbkJhc2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N0eXBlRGF0YUJhc2U6
OkRvY3R5cGVEYXRhQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6Ok1h
cmt1cFRva2VuQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6On5NYXJr
dXBUb2tlbkJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OmlzVW5pbml0aWFsaXplZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OnN0YXJ0SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjplbmRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpN
YXJrdXBUb2tlbkJhc2U6OnNldEJhc2VPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3Vw
VG9rZW5CYXNlOjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjptYWtl
RW5kT2ZGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuQmFzZTo6YmVnaW5TdGFy
dFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OmJlZ2luRW5kVGFnKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuQmFzZTo6ZW5zdXJlSXNDaGFyYWN0ZXJUb2tl
bik6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OmJlZ2luQ29tbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OmJlZ2luRE9DVFlQRSk6CisgICAgICAg
IChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OmFwcGVuZFRvQ2hhcmFjdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1hcmt1cFRva2VuQmFzZTo6YXBwZW5kVG9Db21tZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1hcmt1cFRva2VuQmFzZTo6YWRkTmV3QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1hcmt1cFRva2VuQmFzZTo6YmVnaW5BdHRyaWJ1dGVOYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1hcmt1cFRva2VuQmFzZTo6ZW5kQXR0cmlidXRlTmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNYXJrdXBUb2tlbkJhc2U6OmJlZ2luQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWFya3VwVG9rZW5CYXNlOjplbmRBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNYXJrdXBUb2tlbkJhc2U6OmFwcGVuZFRvQXR0cmlidXRlTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpNYXJrdXBUb2tlbkJhc2U6OmFwcGVuZFRvQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1
cFRva2VuQmFzZTo6c2VsZkNsb3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5C
YXNlOjpzZXRTZWxmQ2xvc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6
OmF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjplcmFzZUNo
YXJhY3RlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjplcmFzZVZhbHVl
T2ZBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjpjaGFyYWN0
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuQmFzZTo6Y29tbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OnB1YmxpY0lkZW50aWZpZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjpzeXN0ZW1JZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1hcmt1cFRva2VuQmFzZTo6c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5CYXNlOjpzZXRTeXN0ZW1JZGVudGlm
aWVyVG9FbXB0eVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OmFw
cGVuZFRvUHVibGljSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJh
c2U6OmFwcGVuZFRvU3lzdGVtSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBU
b2tlbkJhc2U6OnByaW50U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuQmFz
ZTo6cHJpbnRBdHRycyk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OmFwcGVu
ZFRvTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6Om5hbWUpOgorICAg
ICAgICAqIHhtbC9wYXJzZXIvWE1MVG9rZW4uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpY
TUxUb2tlbjo6WE1MVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW46OmNsZWFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuOjphcHBlbmRUb05hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MVG9rZW46Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW46OmJlZ2lu
RE9DVFlQRSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6YmVnaW5YTUxEZWNsYXJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6YXBwZW5kVG9YTUxWZXJzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTFRva2VuOjpiZWdpblhNTEVuY29kaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlhNTFRva2VuOjphcHBlbmRUb1hNTEVuY29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlhNTFRva2VuOjpzZXRYTUxTdGFuZGFsb25lKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2Vu
OjpiZWdpblByb2Nlc3NpbmdJbnN0cnVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tl
bjo6YXBwZW5kVG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MVG9rZW46OmFwcGVuZFRvUHJvY2Vzc2luZ0luc3RydWN0aW9uRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpYTUxUb2tlbjo6YmVnaW5DREFUQSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxU
b2tlbjo6YXBwZW5kVG9DREFUQSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbjo6YmVnaW5F
bnRpdHkpOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW46OnByaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlhNTFRva2VuOjpYTUxEZWNsYXJhdGlvbkRhdGE6OlhNTERlY2xhcmF0aW9uRGF0YSk6
CisKIDIwMTEtMDctMTggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBTcGVjaWZ5IGEgY2FzY2FkZSBsaXN0IGNvbnNpc3Rpbmcgb2YgdGhlIGxhc3QgcmVzb3J0IGZv
bnQgZm9yIENvcmUgVGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNDMzMWFk
YTUwM2EzN2RkNTAwMjc2NzkxYmI2MDI5YjZiNjljZmY4OC4uYzZmODkyMmYxOWExMjY5ZDg3MDVj
MGM0YzM1ZTA1NzkyNTM1YWFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0z
ODAwLDYgKzM4MDAsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyVGhyZWFkLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBc
CisJU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaCBcCiAJU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIuaCBcCiAJU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4
IDY2NDk2NGJlNGFlMzg5YjhiMzJiOWU4ZDk4ZjljOGUzMDNhMTc0OWMuLmI4MjI1ZTI4OGY1M2Jm
NDU3YTkyZGU1YzA3NTUzMjkwMDEzMDc5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTYxMDQsNiAr
NjEwNCw3IEBACiAgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCcsCiAg
ICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQuaCcsCiAgICAgICAg
ICAgICAnd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwJywKKyAgICAgICAgICAgICd4bWwvcGFyc2Vy
L01hcmt1cFRva2VuQmFzZS5oJywKICAgICAgICAgICAgICd4bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAneG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5o
JywKICAgICAgICAgICAgICd4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnBybwppbmRleCBlYTY2NjgzNzhhNTY5Yzg2Y2NhN2ZiODAzNTZjOGZiNzIxZDkx
ZDJkLi4zNGJmNDU1YzU3YmJlNjI0ZTkwMjJmZWI2OTYzNThjZWZiYTY3Y2Y4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybwpAQCAtMjQ5Niw2ICsyNDk2LDcgQEAgSEVBREVSUyArPSBcCiAgICAgd29ya2Vycy9Xb3Jr
ZXJSdW5Mb29wLmggXAogICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggXAogICAgIHdv
cmtlcnMvV29ya2VyVGhyZWFkLmggXAorICAgIHhtbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmgg
XAogICAgIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaCBcCiAgICAgeG1sL0RPTVBhcnNl
ci5oIFwKICAgICB4bWwvTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmggXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBjNTQ1YjlmZDczNmNiYTJlNDI0
ZDdlMzU5YTEzMTJmNGIxMDM3NmVkLi40YjcyNmQzOTE0YWE2M2NlMzg1ZmRmYTU2OGNmNjY5MzY2
MzQzMTU2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agpAQCAtNDI0NDksNiArNDI0NDksMTAgQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJ
CQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlx4bWxccGFyc2VyXE1h
cmt1cFRva2VuQmFzZS5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJl
bGF0aXZlUGF0aD0iLi5ceG1sXHBhcnNlclxYTUxEb2N1bWVudFBhcnNlci5oIgogCQkJCQk+CiAJ
CQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDA5NTI3NTgzNWYyMjMxMWFmOGJhNGZhMjM5ODJjNWZhZjVhM2FmZjgu
LjZlZmYxYjYyYjg2NzcwN2Q5ZDc4ZTQ0YjIwNTU5MTA5MDgzOTgzN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ2LDkgKzQ2
LDExIEBACiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAJCTAwMDIyRTY5MTND
RTFCQkEwMDI4MkQ1QiAvKiBDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVNZXRob2RzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDAyMkU2ODEz
Q0UxQkJBMDAyODJENUIgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lTWV0aG9kcy5o
ICovOyB9OworCQkwMDAyRUM1ODEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwMDJFQzU1MTNDM0Y2N0Qw
MDA0MEQ0NyAvKiBYTUxUb2tlbi5oICovOyB9OwogCQkwMDE0NjI4QTEwM0NEMURFMDAwQjIwREIg
LyogT3JpZ2luQWNjZXNzRW50cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDAxNDYyODgxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0Vu
dHJ5LmNwcCAqLzsgfTsKIAkJMDAxNDYyOEIxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vz
c0VudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
MDE0NjI4OTEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuaCAqLzsgfTsKIAkJ
MDAzRjFGRUExMUU2QUI0MzAwODI1OEQ5IC8qIFVzZXJDb250ZW50VHlwZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwM0YxRkU5MTFFNkFCNDMwMDgy
NThEOSAvKiBVc2VyQ29udGVudFR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDBBNjI5QzExM0QwQkVDNzAwNTBBQzUyIC8qIE1hcmt1cFRv
a2VuQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDBBNjI5QzAxM0QwQkVDNzAwNTBBQzUyIC8qIE1hcmt1cFRva2VuQmFzZS5oICovOyB9OwogCQkw
MEI5MzE4NzEzQkE4REIzMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBCOTMxODExM0JBODY3RjAw
MzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmNwcCAqLzsgfTsKIAkJMDBCOTMxODgxM0JBOERC
QTAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEI5MzE4MjEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9j
dW1lbnRQYXJzZXIuaCAqLzsgfTsKIAkJMDBCOTMxODkxM0JBOERCQzAwMzVBOTQ4IC8qIFhNTERv
Y3VtZW50UGFyc2VyTGlieG1sMi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwMEI5MzE4MzEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcCAqLzsgfTsKQEAgLTY0MDgsOSArNjQxMCwxMSBAQAogCiAvKiBCZWdpbiBQ
QlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAkJMDAwMjJFNjgxM0NFMUJCQTAwMjgyRDVCIC8q
IENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZU1ldGhvZHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lTWV0aG9kcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwMDAyRUM1NTEzQzNGNjdEMDAwNDBENDcg
LyogWE1MVG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWE1MVG9rZW4u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDAxNDYyODgxMDNDRDFERTAwMEIyMERC
IC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE9yaWdpbkFjY2Vzc0VudHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDAxNDYyODkxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9yaWdpbkFjY2Vzc0VudHJ5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwM0YxRkU5MTFFNkFCNDMwMDgyNThEOSAvKiBVc2VyQ29u
dGVudFR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJDb250ZW50
VHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDBBNjI5QzAxM0QwQkVDNzAw
NTBBQzUyIC8qIE1hcmt1cFRva2VuQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNYXJrdXBUb2tlbkJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBC
OTMxODExM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTERvY3VtZW50UGFyc2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBCOTMxODIxM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERv
Y3VtZW50UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTERvY3Vt
ZW50UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwQjkzMTgzMTNCQTg2
N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzEwLDYgKzEyNzE0LDcgQEAKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMDAwMjJFNjgxM0NFMUJCQTAwMjgyRDVC
IC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZU1ldGhvZHMuaCAqLywKKwkJCQkwMEE2
MjlDMDEzRDBCRUM3MDA1MEFDNTIgLyogTWFya3VwVG9rZW5CYXNlLmggKi8sCiAJCQkJMDBDQTkz
QjQxM0M2Njk3QzAwRjdGRTk1IC8qIE5ld1hNTERvY3VtZW50UGFyc2VyLmNwcCAqLywKIAkJCQkw
MENBOTNCMTEzQzY2OTE2MDBGN0ZFOTUgLyogTmV3WE1MRG9jdW1lbnRQYXJzZXIuaCAqLywKIAkJ
CQkwMEQwNDY0ODEzQzREMTQ1MDAzMjZGQ0MgLyogWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2Vy
LmNwcCAqLywKQEAgLTEyNzE5LDYgKzEyNzI0LDcgQEAKIAkJCQkwMEI5MzE4MzEzQkE4NjdGMDAz
NUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCAqLywKIAkJCQkwMEI5MzE4NTEz
QkE4NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5jcHAgKi8sCiAJCQkJMDBC
OTMxODYxM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyU2NvcGUuaCAqLywKKwkJ
CQkwMDAyRUM1NTEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCAqLywKIAkJCSk7CiAJCQlw
YXRoID0gcGFyc2VyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIyMTAzLDYgKzIy
MTA5LDcgQEAKIAkJCQlBOEM0QTg0QzA5RDU2NDlEMDAwM0FDOEQgLyogTWFwcGVkQXR0cmlidXRl
RW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REY4MDk5RTY0OTIwMDU2RTU4MSAvKiBt
YXJrdXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3MjhDMzE0MTI2OEU0MzkwMDQxRTg5QiAvKiBN
YXJrdXBBY2N1bXVsYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDBBNjI5QzExM0QwQkVDNzAw
NTBBQzUyIC8qIE1hcmt1cFRva2VuQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkFCRTcyRjUx
MDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0
QTI4QUFDMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkFCRTcyRjcxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTElubGluZUNvbnRh
aW5lckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjMwNzgsNiArMjMwODUsNyBAQAogCQkJ
CUE4MzNDODBEMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTE1QTM2RDcxMTA0NTcyMDAwQjdCNjM5IC8qIFhNTE5TTmFtZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBQ0U1M0VCMEE4RDE4RTcwMDIyOTQ3RCAvKiBYTUxTZXJpYWxpemVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwMDAyRUM1ODEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU5MDVBREMwMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI3RkM2OTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhF
dmFsdWF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBEQTVCMEQyQTMxRjcwMEI5OTE4RiAv
KiBYUGF0aEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAppbmRleCAxYTcwZGZjMTlkNTVhYWQ2Y2Y0MWVl
NzhkMGMyOWU3ZmI1NTlkNmMxLi40MDJmYWI4N2U1YTIwMzE3NzZhZDYyZmIwNzRiOGQzM2NmZDJh
Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5j
cHAKQEAgLTEwNCwyNCArMTA0LDI0IEBAIHZvaWQgSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRk
U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBj
cmVhdGVDb250YWluaW5nVGFibGUoKTsKIAogICAgIHN3aXRjaCAodG9rZW4udHlwZSgpKSB7Ci0g
ICAgY2FzZSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQ6CisgICAgY2FzZSBIVE1MVG9rZW5UeXBl
czo6VW5pbml0aWFsaXplZDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuOjpET0NUWVBFOgorICAgIGNhc2UgSFRNTFRva2Vu
VHlwZXM6OkRPQ1RZUEU6CiAgICAgICAgIHByb2Nlc3NEb2N0eXBlVG9rZW4oc291cmNlLCB0b2tl
bik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuOjpFbmRPZkZpbGU6CisgICAg
Y2FzZSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxlOgogICAgICAgICBpZiAoIW1fdGJvZHktPmhh
c0NoaWxkTm9kZXMoKSkKICAgICAgICAgICAgIGFkZExpbmUoU3RyaW5nKCkpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEhUTUxUb2tlbjo6U3RhcnRUYWc6Ci0gICAgY2FzZSBIVE1MVG9rZW46
OkVuZFRhZzoKKyAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZzoKKyAgICBjYXNlIEhU
TUxUb2tlblR5cGVzOjpFbmRUYWc6CiAgICAgICAgIHByb2Nlc3NUYWdUb2tlbihzb3VyY2UsIHRv
a2VuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW46OkNvbW1lbnQ6CisgICAg
Y2FzZSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudDoKICAgICAgICAgcHJvY2Vzc0NvbW1lbnRUb2tl
bihzb3VyY2UsIHRva2VuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW46OkNo
YXJhY3RlcjoKKyAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXI6CiAgICAgICAgIHBy
b2Nlc3NDaGFyYWN0ZXJUb2tlbihzb3VyY2UsIHRva2VuKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlv
blNpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNp
dGUuY3BwCmluZGV4IDhlOWMyNmEyMWFiZmM4NWE1ZTcwYjIxYTQwODM0Njg1ZDFjN2JjMzIuLjE0
YWRlYmQ1ZTlmZDAwYjczMTY2NWFjNzcyOGIxOTdhMTZiZTQzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKQEAgLTIyMyw3
ICsyMjMsNyBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MQm9keVN0YXJ0
VGFnSW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAKIHZvaWQgSFRNTENvbnN0cnVjdGlv
blNpdGU6Omluc2VydERvY3R5cGUoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NF
UlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RE9DVFlQRSk7CisgICAgQVNTRVJUKHRva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CiAgICAgYXR0YWNoKG1fYXR0YWNo
bWVudFJvb3QsIERvY3VtZW50VHlwZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHRva2VuLm5hbWUoKSwg
U3RyaW5nOjphZG9wdCh0b2tlbi5wdWJsaWNJZGVudGlmaWVyKCkpLCBTdHJpbmc6OmFkb3B0KHRv
a2VuLnN5c3RlbUlkZW50aWZpZXIoKSkpKTsKICAgICAKICAgICAvLyBET0NUWVBFIG5vZGVzIGFy
ZSBvbmx5IHByb2Nlc3NlZCB3aGVuIHBhcnNpbmcgZnJhZ21lbnRzIHcvbyBjb250ZXh0RWxlbWVu
dHMsIHdoaWNoCkBAIC0yNDMsMTkgKzI0MywxOSBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRl
OjppbnNlcnREb2N0eXBlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAKIHZvaWQgSFRNTENvbnN0
cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnQoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAg
ICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6Q29tbWVudCk7CisgICAgQVNTRVJU
KHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudCk7CiAgICAgYXR0YWNoKGN1
cnJlbnROb2RlKCksIENvbW1lbnQ6OmNyZWF0ZShjdXJyZW50Tm9kZSgpLT5kb2N1bWVudCgpLCB0
b2tlbi5jb21tZW50KCkpKTsKIH0KIAogdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0
Q29tbWVudE9uRG9jdW1lbnQoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQo
dG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6Q29tbWVudCk7CisgICAgQVNTRVJUKHRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudCk7CiAgICAgYXR0YWNoKG1fYXR0YWNobWVu
dFJvb3QsIENvbW1lbnQ6OmNyZWF0ZShtX2RvY3VtZW50LCB0b2tlbi5jb21tZW50KCkpKTsKIH0K
IAogdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudE9uSFRNTEh0bWxFbGVt
ZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9
PSBIVE1MVG9rZW46OkNvbW1lbnQpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRv
a2VuVHlwZXM6OkNvbW1lbnQpOwogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IG1fb3BlbkVs
ZW1lbnRzLnJvb3ROb2RlKCk7CiAgICAgYXR0YWNoKHBhcmVudCwgQ29tbWVudDo6Y3JlYXRlKHBh
cmVudC0+ZG9jdW1lbnQoKSwgdG9rZW4uY29tbWVudCgpKSk7CiB9CkBAIC0yOTcsNyArMjk3LDcg
QEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEVsZW1lbnQoQXRvbWljSFRN
TFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0U2VsZkNs
b3NpbmdIVE1MRWxlbWVudChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0
b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIFJlZlB0cjxFbGVtZW50PiBl
bGVtZW50ID0gYXR0YWNoVG9DdXJyZW50KGNyZWF0ZUhUTUxFbGVtZW50KHRva2VuKSk7CiAgICAg
Ly8gTm9ybWFsbHkgSFRNTEVsZW1lbnRTdGFjayBpcyByZXNwb25zaWJsZSBmb3IgY2FsbGluZyBm
aW5pc2hQYXJzaW5nQ2hpbGRyZW4sCiAgICAgLy8gYnV0IHNlbGYtY2xvc2luZyBlbGVtZW50cyBh
cmUgbmV2ZXIgaW4gdGhlIGVsZW1lbnQgc3RhY2sgc28gdGhlIHN0YWNrCkBAIC0zMjYsNyArMzI2
LDcgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0U2NyaXB0RWxlbWVudChBdG9t
aWNIVE1MVG9rZW4mIHRva2VuKQogCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRG
b3JlaWduRWxlbWVudChBdG9taWNIVE1MVG9rZW4mIHRva2VuLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWVzcGFjZVVSSSkKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6
U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0
YXJ0VGFnKTsKICAgICBub3RJbXBsZW1lbnRlZCgpOyAvLyBwYXJzZUVycm9yIHdoZW4geG1sbnMg
b3IgeG1sbnM6eGxpbmsgYXJlIHdyb25nLgogCiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQg
PSBhdHRhY2hUb0N1cnJlbnQoY3JlYXRlRWxlbWVudCh0b2tlbiwgbmFtZXNwYWNlVVJJKSk7CkBA
IC00MjEsNyArNDIxLDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBIVE1MQ29uc3RydWN0aW9uU2l0
ZTo6Y3JlYXRlSFRNTEVsZW1lbnRGcm9tU2F2ZWRFbGVtZW50KEVsZW0KICAgICAvLyBzcGVjIGlt
cGxpZXMgaXQgc2hvdWxkIGJlICIxIi4gIE1pbmVmaWVsZCBtYXRjaGVzIHRoZSBIVE1MNSBzcGVj
IGhlcmUuCiAKICAgICBBU1NFUlQoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpKTsgLy8gb3RoZXJ3
aXNlIGxvY2FsTmFtZSgpIG1pZ2h0IGJlIHdyb25nLgotICAgIEF0b21pY0hUTUxUb2tlbiBmYWtl
VG9rZW4oSFRNTFRva2VuOjpTdGFydFRhZywgZWxlbWVudC0+bG9jYWxOYW1lKCksIGNsb25lQXR0
cmlidXRlcyhlbGVtZW50KSk7CisgICAgQXRvbWljSFRNTFRva2VuIGZha2VUb2tlbihIVE1MVG9r
ZW5UeXBlczo6U3RhcnRUYWcsIGVsZW1lbnQtPmxvY2FsTmFtZSgpLCBjbG9uZUF0dHJpYnV0ZXMo
ZWxlbWVudCkpOwogICAgIHJldHVybiBjcmVhdGVIVE1MRWxlbWVudChmYWtlVG9rZW4pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFy
c2VyLmNwcAppbmRleCA1NDEzNDY2OTk2OTRhOTFjOGYzZjNhMGE3MWFlMzI5NTZkMDJiNzBhLi45
Y2VhYWU5YWYwNjA5YmY3MmJmNjk4N2M5MmE2MDBlYTY3OGI0Y2QwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAKQEAgLTE3
NSw4ICsxNzUsOCBAQCBib29sIEhUTUxNZXRhQ2hhcnNldFBhcnNlcjo6Y2hlY2tGb3JNZXRhQ2hh
cnNldChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogICAgIG1faW5wdXQuYXBwZW5k
KFNlZ21lbnRlZFN0cmluZyhtX2Fzc3VtZWRDb2RlYy0+ZGVjb2RlKGRhdGEsIGxlbmd0aCkpKTsK
IAogICAgIHdoaWxlIChtX3Rva2VuaXplci0+bmV4dFRva2VuKG1faW5wdXQsIG1fdG9rZW4pKSB7
Ci0gICAgICAgIGJvb2wgZW5kID0gbV90b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWc7
Ci0gICAgICAgIGlmIChlbmQgfHwgbV90b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRh
ZykgeworICAgICAgICBib29sIGVuZCA9IG1fdG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVz
OjpFbmRUYWc7CisgICAgICAgIGlmIChlbmQgfHwgbV90b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
VHlwZXM6OlN0YXJ0VGFnKSB7CiAgICAgICAgICAgICBBdG9taWNTdHJpbmcgdGFnTmFtZShtX3Rv
a2VuLm5hbWUoKS5kYXRhKCksIG1fdG9rZW4ubmFtZSgpLnNpemUoKSk7CiAgICAgICAgICAgICBp
ZiAoIWVuZCkgewogICAgICAgICAgICAgICAgIG1fdG9rZW5pemVyLT51cGRhdGVTdGF0ZUZvcih0
YWdOYW1lLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
cmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9h
ZFNjYW5uZXIuY3BwCmluZGV4IDljMzBlZjkyZGUzMTBhMTViNWQ5MWNhMWI5MDA5OTcwMzc5ZjVi
NjEuLmI5NDIxZDg4NDRlNjlhYjcwYjk1YTY5ZjFiMTJhODBkNzJiMTBkY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtMTc0
LDE1ICsxNzQsMTUgQEAgdm9pZCBIVE1MUHJlbG9hZFNjYW5uZXI6OnNjYW4oKQogdm9pZCBIVE1M
UHJlbG9hZFNjYW5uZXI6OnByb2Nlc3NUb2tlbigpCiB7CiAgICAgaWYgKG1faW5TdHlsZSkgewot
ICAgICAgICBpZiAobV90b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIpCisgICAg
ICAgIGlmIChtX3Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKQogICAg
ICAgICAgICAgbV9jc3NTY2FubmVyLnNjYW4obV90b2tlbiwgc2Nhbm5pbmdCb2R5KCkpOwotICAg
ICAgICBlbHNlIGlmIChtX3Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZykgeworICAg
ICAgICBlbHNlIGlmIChtX3Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKSB7
CiAgICAgICAgICAgICBtX2luU3R5bGUgPSBmYWxzZTsKICAgICAgICAgICAgIG1fY3NzU2Nhbm5l
ci5yZXNldCgpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKG1fdG9rZW4udHlwZSgpICE9
IEhUTUxUb2tlbjo6U3RhcnRUYWcpCisgICAgaWYgKG1fdG9rZW4udHlwZSgpICE9IEhUTUxUb2tl
blR5cGVzOjpTdGFydFRhZykKICAgICAgICAgcmV0dXJuOwogCiAgICAgUHJlbG9hZFRhc2sgdGFz
ayhtX3Rva2VuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxT
b3VyY2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTb3VyY2VU
cmFja2VyLmNwcAppbmRleCBjZjQzMTA1ZDM5MjFhNjIyNjVkNmEyYTlmN2E3YWYwZWU1MWI1NWVi
Li43MGNmNzA5MTVhOGJmOGE5OTUwMTg5M2VlY2VjOWYxYzk4YmFmZWExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU291cmNlVHJhY2tlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuY3BwCkBAIC0zNCw3ICsz
NCw3IEBAIEhUTUxTb3VyY2VUcmFja2VyOjpIVE1MU291cmNlVHJhY2tlcigpCiAKIHZvaWQgSFRN
TFNvdXJjZVRyYWNrZXI6OnN0YXJ0KGNvbnN0IEhUTUxJbnB1dFN0cmVhbSYgaW5wdXQsIEhUTUxU
b2tlbiYgdG9rZW4pCiB7Ci0gICAgbV9zb3VyY2VGcm9tUHJldmlvdXNTZWdtZW50cyA9IHRva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQgPyBTdHJpbmcoKSA6IG1fc291cmNl
RnJvbVByZXZpb3VzU2VnbWVudHMgKyBtX3NvdXJjZS50b1N0cmluZygpOworICAgIG1fc291cmNl
RnJvbVByZXZpb3VzU2VnbWVudHMgPSB0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlVu
aW5pdGlhbGl6ZWQgPyBTdHJpbmcoKSA6IG1fc291cmNlRnJvbVByZXZpb3VzU2VnbWVudHMgKyBt
X3NvdXJjZS50b1N0cmluZygpOwogICAgIG1fc291cmNlID0gaW5wdXQuY3VycmVudCgpOwogICAg
IHRva2VuLnNldEJhc2VPZmZzZXQoaW5wdXQuY3VycmVudCgpLm51bWJlck9mQ2hhcmFjdGVyc0Nv
bnN1bWVkKCkgLSBtX3NvdXJjZUZyb21QcmV2aW91c1NlZ21lbnRzLmxlbmd0aCgpKTsKIH0KQEAg
LTQ4LDcgKzQ4LDcgQEAgdm9pZCBIVE1MU291cmNlVHJhY2tlcjo6ZW5kKGNvbnN0IEhUTUxJbnB1
dFN0cmVhbSYgaW5wdXQsIEhUTUxUb2tlbiYgdG9rZW4pCiAKIFN0cmluZyBIVE1MU291cmNlVHJh
Y2tlcjo6c291cmNlRm9yVG9rZW4oY29uc3QgSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBpZiAo
dG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5kT2ZGaWxlKQorICAgIGlmICh0b2tlbi50eXBl
KCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZE9mRmlsZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OyAvLyBIaWRlcyB0aGUgbnVsbCBjaGFyYWN0ZXIgd2UgdXNlIHRvIG1hcmsgdGhlIGVuZCBvZiBm
aWxlLgogCiAgICAgaWYgKCFtX2NhY2hlZFNvdXJjZUZvclRva2VuLmlzRW1wdHkoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKaW5kZXggNjdkYjY0NzA2Zjc5MzNkZjlhN2Jj
ZjgwYzJiYzE5MTM2N2JkNzk0NC4uMTQ3OWQwZDVlMjQyNzg5OWJhMDM5Y2Q1MzAxMDk0NTA0ODRj
MGY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKQEAgLTI2LDE0ICsy
NiwxMSBAQAogI2lmbmRlZiBIVE1MVG9rZW5faAogI2RlZmluZSBIVE1MVG9rZW5faAogCi0jaW5j
bHVkZSAiTmFtZWROb2RlTWFwLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSAiTWFya3VwVG9rZW5CYXNlLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTFRva2VuIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShIVE1MVG9rZW4pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK2NsYXNzIEhUTUxUb2tl
blR5cGVzIHsKIHB1YmxpYzoKICAgICBlbnVtIFR5cGUgewogICAgICAgICBVbmluaXRpYWxpemVk
LApAQCAtNDUsMzM5ICs0Miw0NSBAQCBwdWJsaWM6CiAgICAgICAgIEVuZE9mRmlsZSwKICAgICB9
OwogCi0gICAgY2xhc3MgUmFuZ2UgeworICAgIGNsYXNzIERvY3R5cGVEYXRhIDogcHVibGljIERv
Y3R5cGVEYXRhQmFzZSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERvY3R5cGVEYXRh
KTsKICAgICBwdWJsaWM6Ci0gICAgICAgIGludCBtX3N0YXJ0OwotICAgICAgICBpbnQgbV9lbmQ7
Ci0gICAgfTsKKyAgICAgICAgRG9jdHlwZURhdGEoKQorICAgICAgICAgICAgOiBEb2N0eXBlRGF0
YUJhc2UoKQorICAgICAgICAgICAgLCBtX2ZvcmNlUXVpcmtzKGZhbHNlKQorICAgICAgICB7Cisg
ICAgICAgIH0KIAotICAgIGNsYXNzIEF0dHJpYnV0ZSB7Ci0gICAgcHVibGljOgotICAgICAgICBS
YW5nZSBtX25hbWVSYW5nZTsKLSAgICAgICAgUmFuZ2UgbV92YWx1ZVJhbmdlOwotICAgICAgICBX
VEY6OlZlY3RvcjxVQ2hhciwgMzI+IG1fbmFtZTsKLSAgICAgICAgV1RGOjpWZWN0b3I8VUNoYXIs
IDMyPiBtX3ZhbHVlOworICAgICAgICBib29sIG1fZm9yY2VRdWlya3M7CiAgICAgfTsKK307CiAK
LSAgICB0eXBlZGVmIFdURjo6VmVjdG9yPEF0dHJpYnV0ZSwgMTA+IEF0dHJpYnV0ZUxpc3Q7Ci0g
ICAgdHlwZWRlZiBXVEY6OlZlY3RvcjxVQ2hhciwgMTAyND4gRGF0YVZlY3RvcjsKLQotICAgIEhU
TUxUb2tlbigpIHsgY2xlYXIoKTsgfQotCi0gICAgdm9pZCBjbGVhcigpCi0gICAgewotICAgICAg
ICBtX3R5cGUgPSBVbmluaXRpYWxpemVkOwotICAgICAgICBtX3JhbmdlLm1fc3RhcnQgPSAwOwot
ICAgICAgICBtX3JhbmdlLm1fZW5kID0gMDsKLSAgICAgICAgbV9iYXNlT2Zmc2V0ID0gMDsKLSAg
ICAgICAgbV9kYXRhLmNsZWFyKCk7Ci0gICAgfQotCi0gICAgYm9vbCBpc1VuaW5pdGlhbGl6ZWQo
KSB7IHJldHVybiBtX3R5cGUgPT0gVW5pbml0aWFsaXplZDsgfQotCi0gICAgaW50IHN0YXJ0SW5k
ZXgoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlLm1fc3RhcnQ7IH0KLSAgICBpbnQgZW5kSW5kZXgo
KSBjb25zdCB7IHJldHVybiBtX3JhbmdlLm1fZW5kOyB9Ci0KLSAgICB2b2lkIHNldEJhc2VPZmZz
ZXQoaW50IG9mZnNldCkKLSAgICB7Ci0gICAgICAgIG1fYmFzZU9mZnNldCA9IG9mZnNldDsKLSAg
ICB9Ci0KLSAgICB2b2lkIGVuZChpbnQgZW5kT2Zmc2V0KQotICAgIHsKLSAgICAgICAgbV9yYW5n
ZS5tX2VuZCA9IGVuZE9mZnNldCAtIG1fYmFzZU9mZnNldDsKLSAgICB9Ci0KLSAgICB2b2lkIG1h
a2VFbmRPZkZpbGUoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxp
emVkKTsKLSAgICAgICAgbV90eXBlID0gRW5kT2ZGaWxlOwotICAgIH0KLQotICAgIHZvaWQgYmVn
aW5TdGFydFRhZyhVQ2hhciBjaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQoY2hhcmFj
dGVyKTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxpemVkKTsKLSAgICAgICAg
bV90eXBlID0gU3RhcnRUYWc7Ci0gICAgICAgIG1fc2VsZkNsb3NpbmcgPSBmYWxzZTsKLSAgICAg
ICAgbV9jdXJyZW50QXR0cmlidXRlID0gMDsKLSAgICAgICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7
Ci0KLSAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOwotICAgIH0KLQotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBiZWdpbkVuZFRhZyhUIGNoYXJhY3RlcnMpCi0gICAg
ewotICAgICAgICBBU1NFUlQobV90eXBlID09IFVuaW5pdGlhbGl6ZWQpOwotICAgICAgICBtX3R5
cGUgPSBFbmRUYWc7Ci0gICAgICAgIG1fc2VsZkNsb3NpbmcgPSBmYWxzZTsKLSAgICAgICAgbV9j
dXJyZW50QXR0cmlidXRlID0gMDsKLSAgICAgICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7Ci0KLSAg
ICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXJzKTsKLSAgICB9Ci0KLSAgICAvLyBTdGFydGlu
ZyBhIGNoYXJhY3RlciB0b2tlbiB3b3JrcyBzbGlnaHRseSBkaWZmZXJlbnRseSB0aGFuIHN0YXJ0
aW5nCi0gICAgLy8gb3RoZXIgdHlwZXMgb2YgdG9rZW5zIGJlY2F1c2Ugd2Ugd2FudCB0byBzYXZl
IGEgcGVyLWNoYXJhY3RlciBicmFuY2guCi0gICAgdm9pZCBlbnN1cmVJc0NoYXJhY3RlclRva2Vu
KCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVW5pbml0aWFsaXplZCB8fCBtX3R5
cGUgPT0gQ2hhcmFjdGVyKTsKLSAgICAgICAgbV90eXBlID0gQ2hhcmFjdGVyOwotICAgIH0KLQot
ICAgIHZvaWQgYmVnaW5Db21tZW50KCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
VW5pbml0aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9IENvbW1lbnQ7Ci0gICAgfQotCi0gICAg
dm9pZCBiZWdpbkRPQ1RZUEUoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmlu
aXRpYWxpemVkKTsKLSAgICAgICAgbV90eXBlID0gRE9DVFlQRTsKLSAgICAgICAgbV9kb2N0eXBl
RGF0YSA9IGFkb3B0UHRyKG5ldyBEb2N0eXBlRGF0YSgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGJl
Z2luRE9DVFlQRShVQ2hhciBjaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQoY2hhcmFj
dGVyKTsKLSAgICAgICAgYmVnaW5ET0NUWVBFKCk7Ci0gICAgICAgIG1fZGF0YS5hcHBlbmQoY2hh
cmFjdGVyKTsKLSAgICB9Ci0KK2NsYXNzIEhUTUxUb2tlbiA6IHB1YmxpYyBNYXJrdXBUb2tlbkJh
c2U8SFRNTFRva2VuVHlwZXMsIEhUTUxUb2tlblR5cGVzOjpEb2N0eXBlRGF0YT4geworcHVibGlj
OgogICAgIHZvaWQgYXBwZW5kVG9OYW1lKFVDaGFyIGNoYXJhY3RlcikKICAgICB7Ci0gICAgICAg
IEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8
IG1fdHlwZSA9PSBFbmRUYWcgfHwgbV90eXBlID09IERPQ1RZUEUpOwotICAgICAgICBtX2RhdGEu
YXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAg
ICB2b2lkIGFwcGVuZFRvQ2hhcmFjdGVyKFQgY2hhcmFjdGVycykKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gQ2hhcmFjdGVyKTsKLSAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0
ZXJzKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGVuZFRvQ29tbWVudChVQ2hhciBjaGFyYWN0ZXIp
Ci0gICAgewotICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKLSAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBDb21tZW50KTsKLSAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOwotICAgIH0K
LQotICAgIHZvaWQgYWRkTmV3QXR0cmlidXRlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyk7Ci0gICAgICAgIG1fYXR0cmlidXRl
cy5ncm93KG1fYXR0cmlidXRlcy5zaXplKCkgKyAxKTsKLSAgICAgICAgbV9jdXJyZW50QXR0cmli
dXRlID0gJm1fYXR0cmlidXRlcy5sYXN0KCk7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICBtX2N1
cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fc3RhcnQgPSAwOwotICAgICAgICBtX2N1cnJl
bnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fZW5kID0gMDsKLSAgICAgICAgbV9jdXJyZW50QXR0
cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9zdGFydCA9IDA7Ci0gICAgICAgIG1fY3VycmVudEF0dHJp
YnV0ZS0+bV92YWx1ZVJhbmdlLm1fZW5kID0gMDsKLSNlbmRpZgotICAgIH0KLQotICAgIHZvaWQg
YmVnaW5BdHRyaWJ1dGVOYW1lKGludCBvZmZzZXQpCi0gICAgewotICAgICAgICBtX2N1cnJlbnRB
dHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fc3RhcnQgPSBvZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlw
ZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6
RE9DVFlQRSk7CisgICAgICAgIE1hcmt1cFRva2VuQmFzZTxIVE1MVG9rZW5UeXBlcywgSFRNTFRv
a2VuVHlwZXM6OkRvY3R5cGVEYXRhPjo6YXBwZW5kVG9OYW1lKGNoYXJhY3Rlcik7CiAgICAgfQot
Ci0gICAgdm9pZCBlbmRBdHRyaWJ1dGVOYW1lKGludCBvZmZzZXQpCi0gICAgewotICAgICAgICBp
bnQgaW5kZXggPSBvZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7Ci0gICAgICAgIG1fY3VycmVudEF0dHJp
YnV0ZS0+bV9uYW1lUmFuZ2UubV9lbmQgPSBpbmRleDsKLSAgICAgICAgbV9jdXJyZW50QXR0cmli
dXRlLT5tX3ZhbHVlUmFuZ2UubV9zdGFydCA9IGluZGV4OwotICAgICAgICBtX2N1cnJlbnRBdHRy
aWJ1dGUtPm1fdmFsdWVSYW5nZS5tX2VuZCA9IGluZGV4OwotICAgIH0KLQotICAgIHZvaWQgYmVn
aW5BdHRyaWJ1dGVWYWx1ZShpbnQgb2Zmc2V0KQotICAgIHsKLSAgICAgICAgbV9jdXJyZW50QXR0
cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9zdGFydCA9IG9mZnNldCAtIG1fYmFzZU9mZnNldDsKLSNp
Zm5kZWYgTkRFQlVHCi0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1f
ZW5kID0gMDsKLSNlbmRpZgotICAgIH0KLQotICAgIHZvaWQgZW5kQXR0cmlidXRlVmFsdWUoaW50
IG9mZnNldCkKLSAgICB7Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdl
Lm1fZW5kID0gb2Zmc2V0IC0gbV9iYXNlT2Zmc2V0OwotICAgIH0KLQotICAgIHZvaWQgYXBwZW5k
VG9BdHRyaWJ1dGVOYW1lKFVDaGFyIGNoYXJhY3RlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChj
aGFyYWN0ZXIpOwotICAgICAgICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9
PSBFbmRUYWcpOwotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gYWRkIHRo
ZSBmb2xsb3dpbmcgQVNTRVJUIG9uY2Ugd2UgZml4Ci0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjk3MQotICAgICAgICAvLyAgIEFTU0VSVChtX2N1
cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fc3RhcnQpOwotICAgICAgICBtX2N1cnJlbnRB
dHRyaWJ1dGUtPm1fbmFtZS5hcHBlbmQoY2hhcmFjdGVyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFw
cGVuZFRvQXR0cmlidXRlVmFsdWUoVUNoYXIgY2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKGNoYXJhY3Rlcik7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gU3RhcnRUYWcgfHwgbV90
eXBlID09IEVuZFRhZyk7Ci0gICAgICAgIEFTU0VSVChtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFs
dWVSYW5nZS5tX3N0YXJ0KTsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlLmFw
cGVuZChjaGFyYWN0ZXIpOwotICAgIH0KLQotICAgIHZvaWQgYXBwZW5kVG9BdHRyaWJ1dGVWYWx1
ZShzaXplX3QgaSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgh
dmFsdWUuaXNFbXB0eSgpKTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBTdGFydFRhZyB8fCBt
X3R5cGUgPT0gRW5kVGFnKTsKLSAgICAgICAgbV9hdHRyaWJ1dGVzW2ldLm1fdmFsdWUuYXBwZW5k
KHZhbHVlLmNoYXJhY3RlcnMoKSwgdmFsdWUubGVuZ3RoKCkpOwotICAgIH0KLQotICAgIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotCi0gICAgYm9vbCBzZWxmQ2xvc2luZygp
IGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlw
ZSA9PSBFbmRUYWcpOwotICAgICAgICByZXR1cm4gbV9zZWxmQ2xvc2luZzsKLSAgICB9Ci0KLSAg
ICB2b2lkIHNldFNlbGZDbG9zaW5nKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
SFRNTFRva2VuOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuOjpFbmRUYWcpOwotICAg
ICAgICBtX3NlbGZDbG9zaW5nID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBjb25zdCBBdHRyaWJ1dGVM
aXN0JiBhdHRyaWJ1dGVzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
U3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyk7Ci0gICAgICAgIHJldHVybiBtX2F0dHJpYnV0
ZXM7Ci0gICAgfQotCisgICAgCiAgICAgY29uc3QgRGF0YVZlY3RvciYgbmFtZSgpIGNvbnN0CiAg
ICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRU
YWcgfHwgbV90eXBlID09IERPQ1RZUEUpOwotICAgICAgICByZXR1cm4gbV9kYXRhOwotICAgIH0K
LQotICAgIHZvaWQgZXJhc2VDaGFyYWN0ZXJzKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gQ2hhcmFjdGVyKTsKLSAgICAgICAgbV9kYXRhLmNsZWFyKCk7Ci0gICAgfQotCi0gICAg
dm9pZCBlcmFzZVZhbHVlT2ZBdHRyaWJ1dGUoc2l6ZV90IGkpCi0gICAgewotICAgICAgICBBU1NF
UlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcpOwotICAgICAgICBtX2F0
dHJpYnV0ZXNbaV0ubV92YWx1ZS5jbGVhcigpOwotICAgIH0KLQotICAgIGNvbnN0IERhdGFWZWN0
b3ImIGNoYXJhY3RlcnMoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBD
aGFyYWN0ZXIpOwotICAgICAgICByZXR1cm4gbV9kYXRhOwotICAgIH0KLQotICAgIGNvbnN0IERh
dGFWZWN0b3ImIGNvbW1lbnQoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBDb21tZW50KTsKLSAgICAgICAgcmV0dXJuIG1fZGF0YTsKLSAgICB9Ci0KLSAgICAvLyBGSVhN
RTogRGlzdGluZ3Vpc2ggYmV0d2VlbiBhIG1pc3NpbmcgcHVibGljIGlkZW50aWZlciBhbmQgYW4g
ZW1wdHkgb25lLgotICAgIGNvbnN0IFdURjo6VmVjdG9yPFVDaGFyPiYgcHVibGljSWRlbnRpZmll
cigpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IERPQ1RZUEUpOwotICAg
ICAgICByZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyOwotICAgIH0KLQot
ICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlzaCBiZXR3ZWVuIGEgbWlzc2luZyBzeXN0ZW0gaWRlbnRp
ZmVyIGFuZCBhbiBlbXB0eSBvbmUuCi0gICAgY29uc3QgV1RGOjpWZWN0b3I8VUNoYXI+JiBzeXN0
ZW1JZGVudGlmaWVyKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9D
VFlQRSk7Ci0gICAgICAgIHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXI7
Ci0gICAgfQotCi0gICAgdm9pZCBzZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpCi0g
ICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IERPQ1RZUEUpOwotICAgICAgICBtX2RvY3R5
cGVEYXRhLT5tX2hhc1B1YmxpY0lkZW50aWZpZXIgPSB0cnVlOwotICAgICAgICBtX2RvY3R5cGVE
YXRhLT5tX3B1YmxpY0lkZW50aWZpZXIuY2xlYXIoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFN5
c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gRE9DVFlQRSk7Ci0gICAgICAgIG1fZG9jdHlwZURhdGEtPm1faGFzU3lzdGVtSWRlbnRp
ZmllciA9IHRydWU7Ci0gICAgICAgIG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllci5j
bGVhcigpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRh
ZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRv
a2VuVHlwZXM6OkRPQ1RZUEUpOworICAgICAgICByZXR1cm4gTWFya3VwVG9rZW5CYXNlPEhUTUxU
b2tlblR5cGVzLCBIVE1MVG9rZW5UeXBlczo6RG9jdHlwZURhdGE+OjpuYW1lKCk7CiAgICAgfQog
CiAgICAgYm9vbCBmb3JjZVF1aXJrcygpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90
eXBlID09IERPQ1RZUEUpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVz
OjpET0NUWVBFKTsKICAgICAgICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1fZm9yY2VRdWlya3M7
CiAgICAgfQogCiAgICAgdm9pZCBzZXRGb3JjZVF1aXJrcygpCiAgICAgewotICAgICAgICBBU1NF
UlQobV90eXBlID09IERPQ1RZUEUpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tl
blR5cGVzOjpET0NUWVBFKTsKICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9mb3JjZVF1aXJrcyA9
IHRydWU7CiAgICAgfQogCi0gICAgdm9pZCBhcHBlbmRUb1B1YmxpY0lkZW50aWZpZXIoVUNoYXIg
Y2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0gICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7Ci0gICAgICAgIEFTU0VSVChtX2RvY3R5cGVEYXRhLT5t
X2hhc1B1YmxpY0lkZW50aWZpZXIpOwotICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lk
ZW50aWZpZXIuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRUb1N5
c3RlbUlkZW50aWZpZXIoVUNoYXIgY2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNo
YXJhY3Rlcik7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7Ci0gICAgICAgIEFT
U0VSVChtX2RvY3R5cGVEYXRhLT5tX2hhc1N5c3RlbUlkZW50aWZpZXIpOwotICAgICAgICBtX2Rv
Y3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXIuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIC8vIEZJWE1FOiBJJ20gbm90IHN1cmUgd2hhdCB0aGUgZmluYWwgcmVs
YXRpb25zaGlwIGJldHdlZW4gSFRNTFRva2VuIGFuZAotICAgIC8vIEF0b21pY0hUTUxUb2tlbiB3
aWxsIGJlLiAgSSdtIG1hcmtpbmcgdGhpcyBhIGZyaWVuZCBmb3Igbm93LCBidXQgd2UnbGwKLSAg
ICAvLyB3YW50IHRvIGVuZCB1cCB3aXRoIGEgY2xlYW5lciBpbnRlcmZhY2UgYmV0d2VlbiB0aGUg
dHdvIGNsYXNzZXMuCi0gICAgZnJpZW5kIGNsYXNzIEF0b21pY0hUTUxUb2tlbjsKLQotICAgIGNs
YXNzIERvY3R5cGVEYXRhIHsKLSAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRG9jdHlwZURh
dGEpOwotICAgIHB1YmxpYzoKLSAgICAgICAgRG9jdHlwZURhdGEoKQotICAgICAgICAgICAgOiBt
X2hhc1B1YmxpY0lkZW50aWZpZXIoZmFsc2UpCi0gICAgICAgICAgICAsIG1faGFzU3lzdGVtSWRl
bnRpZmllcihmYWxzZSkKLSAgICAgICAgICAgICwgbV9mb3JjZVF1aXJrcyhmYWxzZSkKLSAgICAg
ICAgewotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBtX2hhc1B1YmxpY0lkZW50aWZpZXI7Ci0g
ICAgICAgIGJvb2wgbV9oYXNTeXN0ZW1JZGVudGlmaWVyOwotICAgICAgICBib29sIG1fZm9yY2VR
dWlya3M7Ci0gICAgICAgIFdURjo6VmVjdG9yPFVDaGFyPiBtX3B1YmxpY0lkZW50aWZpZXI7Ci0g
ICAgICAgIFdURjo6VmVjdG9yPFVDaGFyPiBtX3N5c3RlbUlkZW50aWZpZXI7Ci0gICAgfTsKLQot
ICAgIFR5cGUgbV90eXBlOwotICAgIFJhbmdlIG1fcmFuZ2U7IC8vIEFsd2F5cyBzdGFydHMgYXQg
emVyby4KLSAgICBpbnQgbV9iYXNlT2Zmc2V0OwotCi0gICAgLy8gIm5hbWUiIGZvciBET0NUWVBF
LCBTdGFydFRhZywgYW5kIEVuZFRhZwotICAgIC8vICJjaGFyYWN0ZXJzIiBmb3IgQ2hhcmFjdGVy
Ci0gICAgLy8gImRhdGEiIGZvciBDb21tZW50Ci0gICAgRGF0YVZlY3RvciBtX2RhdGE7Ci0KLSAg
ICAvLyBGb3IgRE9DVFlQRQotICAgIE93blB0cjxEb2N0eXBlRGF0YT4gbV9kb2N0eXBlRGF0YTsK
LQotICAgIC8vIEZvciBTdGFydFRhZyBhbmQgRW5kVGFnCi0gICAgYm9vbCBtX3NlbGZDbG9zaW5n
OwotICAgIEF0dHJpYnV0ZUxpc3QgbV9hdHRyaWJ1dGVzOwotCi0gICAgLy8gQSBwb2ludGVyIGlu
dG8gbV9hdHRyaWJ1dGVzIHVzZWQgZHVyaW5nIGxleGluZy4KLSAgICBBdHRyaWJ1dGUqIG1fY3Vy
cmVudEF0dHJpYnV0ZTsKIH07CiAKIC8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBldmVudHVh
bGx5IGJlIG5hbWVkIEhUTUxUb2tlbiBvbmNlIHdlIG1vdmUgdGhlCkBAIC0zODksMzIgKzkyLDM0
IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3R5cGUodG9rZW4udHlwZSgpKQogICAgIHsKICAgICAg
ICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6
ZWQ6CisgICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQ6CiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIEhUTUxUb2tlbjo6RE9DVFlQRToKKyAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RE9D
VFlQRToKICAgICAgICAgICAgIG1fbmFtZSA9IEF0b21pY1N0cmluZyh0b2tlbi5uYW1lKCkuZGF0
YSgpLCB0b2tlbi5uYW1lKCkuc2l6ZSgpKTsKICAgICAgICAgICAgIG1fZG9jdHlwZURhdGEgPSB0
b2tlbi5tX2RvY3R5cGVEYXRhLnJlbGVhc2UoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEhUTUxUb2tlbjo6RW5kT2ZGaWxlOgorICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVz
OjpFbmRPZkZpbGU6CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW46
OlN0YXJ0VGFnOgotICAgICAgICBjYXNlIEhUTUxUb2tlbjo6RW5kVGFnOiB7CisgICAgICAgIGNh
c2UgSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnOgorICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVz
OjpFbmRUYWc6IHsKICAgICAgICAgICAgIG1fc2VsZkNsb3NpbmcgPSB0b2tlbi5zZWxmQ2xvc2lu
ZygpOwogICAgICAgICAgICAgbV9uYW1lID0gQXRvbWljU3RyaW5nKHRva2VuLm5hbWUoKS5kYXRh
KCksIHRva2VuLm5hbWUoKS5zaXplKCkpOwogICAgICAgICAgICAgaW5pdGlhbGl6ZUF0dHJpYnV0
ZXModG9rZW4uYXR0cmlidXRlcygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgSFRNTFRva2VuOjpDb21tZW50OgorICAgICAgICBjYXNlIEhUTUxUb2tlblR5
cGVzOjpDb21tZW50OgogICAgICAgICAgICAgbV9kYXRhID0gU3RyaW5nKHRva2VuLmNvbW1lbnQo
KS5kYXRhKCksIHRva2VuLmNvbW1lbnQoKS5zaXplKCkpOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgSFRNTFRva2VuOjpDaGFyYWN0ZXI6CisgICAgICAgIGNhc2UgSFRNTFRva2Vu
VHlwZXM6OkNoYXJhY3RlcjoKICAgICAgICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzID0gJnRv
a2VuLmNoYXJhY3RlcnMoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBBdG9taWNIVE1MVG9r
ZW4oSFRNTFRva2VuOjpUeXBlIHR5cGUsIEF0b21pY1N0cmluZyBuYW1lLCBQYXNzUmVmUHRyPE5h
bWVkTm9kZU1hcD4gYXR0cmlidXRlcyA9IDApCisgICAgQXRvbWljSFRNTFRva2VuKEhUTUxUb2tl
blR5cGVzOjpUeXBlIHR5cGUsIEF0b21pY1N0cmluZyBuYW1lLCBQYXNzUmVmUHRyPE5hbWVkTm9k
ZU1hcD4gYXR0cmlidXRlcyA9IDApCiAgICAgICAgIDogbV90eXBlKHR5cGUpCiAgICAgICAgICwg
bV9uYW1lKG5hbWUpCiAgICAgICAgICwgbV9hdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCkBAIC00MjIs
NyArMTI3LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQodXNlc05hbWUoKSk7CiAgICAgfQog
Ci0gICAgSFRNTFRva2VuOjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAg
ICBIVE1MVG9rZW5UeXBlczo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAK
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdAogICAgIHsKQEAgLTQzOCw3ICsx
NDMsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHNlbGZDbG9zaW5nKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0g
SFRNTFRva2VuOjpFbmRUYWcpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5
cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CiAgICAg
ICAgIHJldHVybiBtX3NlbGZDbG9zaW5nOwogICAgIH0KIApAQCAtNDY0LDQ5ICsxNjksNDkgQEAg
cHVibGljOgogCiAgICAgY29uc3QgSFRNTFRva2VuOjpEYXRhVmVjdG9yJiBjaGFyYWN0ZXJzKCkg
Y29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpDaGFyYWN0
ZXIpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIp
OwogICAgICAgICByZXR1cm4gKm1fZXh0ZXJuYWxDaGFyYWN0ZXJzOwogICAgIH0KIAogICAgIGNv
bnN0IFN0cmluZyYgY29tbWVudCgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBl
ID09IEhUTUxUb2tlbjo6Q29tbWVudCk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRv
a2VuVHlwZXM6OkNvbW1lbnQpOwogICAgICAgICByZXR1cm4gbV9kYXRhOwogICAgIH0KIAogICAg
IC8vIEZJWE1FOiBEaXN0aW5ndWlzaCBiZXR3ZWVuIGEgbWlzc2luZyBwdWJsaWMgaWRlbnRpZmVy
IGFuZCBhbiBlbXB0eSBvbmUuCiAgICAgV1RGOjpWZWN0b3I8VUNoYXI+JiBwdWJsaWNJZGVudGlm
aWVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpE
T0NUWVBFKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQ
RSk7CiAgICAgICAgIHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZpZXI7CiAg
ICAgfQogCiAgICAgLy8gRklYTUU6IERpc3Rpbmd1aXNoIGJldHdlZW4gYSBtaXNzaW5nIHN5c3Rl
bSBpZGVudGlmZXIgYW5kIGFuIGVtcHR5IG9uZS4KICAgICBXVEY6OlZlY3RvcjxVQ2hhcj4mIHN5
c3RlbUlkZW50aWZpZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBI
VE1MVG9rZW46OkRPQ1RZUEUpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5
cGVzOjpET0NUWVBFKTsKICAgICAgICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRl
bnRpZmllcjsKICAgICB9CiAKICAgICBib29sIGZvcmNlUXVpcmtzKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpET0NUWVBFKTsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CiAgICAgICAgIHJldHVybiBt
X2RvY3R5cGVEYXRhLT5tX2ZvcmNlUXVpcmtzOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBIVE1M
VG9rZW46OlR5cGUgbV90eXBlOworICAgIEhUTUxUb2tlblR5cGVzOjpUeXBlIG1fdHlwZTsKIAog
ICAgIHZvaWQgaW5pdGlhbGl6ZUF0dHJpYnV0ZXMoY29uc3QgSFRNTFRva2VuOjpBdHRyaWJ1dGVM
aXN0JiBhdHRyaWJ1dGVzKTsKICAgICAKICAgICBib29sIHVzZXNOYW1lKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIHJldHVybiBtX3R5cGUgPT0gSFRNTFRva2VuOjpTdGFydFRhZyB8fCBtX3R5cGUg
PT0gSFRNTFRva2VuOjpFbmRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlbjo6RE9DVFlQRTsKKyAg
ICAgICAgcmV0dXJuIG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBl
ID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpE
T0NUWVBFOwogICAgIH0KIAogICAgIGJvb2wgdXNlc0F0dHJpYnV0ZXMoKSBjb25zdAogICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fdHlwZSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnIHx8IG1fdHlwZSA9
PSBIVE1MVG9rZW46OkVuZFRhZzsKKyAgICAgICAgcmV0dXJuIG1fdHlwZSA9PSBIVE1MVG9rZW5U
eXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWc7CiAgICAg
fQogCiAgICAgLy8gIm5hbWUiIGZvciBET0NUWVBFLCBTdGFydFRhZywgYW5kIEVuZFRhZwpAQCAt
NTI2LDcgKzIzMSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgSFRNTFRva2VuOjpEYXRhVmVjdG9y
KiBtX2V4dGVybmFsQ2hhcmFjdGVyczsKIAogICAgIC8vIEZvciBET0NUWVBFCi0gICAgT3duUHRy
PEhUTUxUb2tlbjo6RG9jdHlwZURhdGE+IG1fZG9jdHlwZURhdGE7CisgICAgT3duUHRyPEhUTUxU
b2tlblR5cGVzOjpEb2N0eXBlRGF0YT4gbV9kb2N0eXBlRGF0YTsKIAogICAgIC8vIEZvciBTdGFy
dFRhZyBhbmQgRW5kVGFnCiAgICAgYm9vbCBtX3NlbGZDbG9zaW5nOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcAppbmRleCAzMDVmY2EyNjAzOWVkYjUwNzg0
YmI1Mzc0ZTc3M2JkOGNhOGE2OTg1Li42ZDU3ZWVhZTFkODkwZGRkMzFmM2ZjMzczYTRmNTA4Nzkx
MjZjYjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5p
emVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNw
cApAQCAtMTg3LDggKzE4Nyw4IEBAIGlubGluZSBib29sIEhUTUxUb2tlbml6ZXI6OnByb2Nlc3NF
bnRpdHkoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiAKIGlubGluZSB2b2lkIEhUTUxUb2tlbml6
ZXI6OnNhdmVFbmRUYWdOYW1lSWZOZWVkZWQoKQogewotICAgIEFTU0VSVChtX3Rva2VuLT50eXBl
KCkgIT0gSFRNTFRva2VuOjpVbmluaXRpYWxpemVkKTsKLSAgICBpZiAobV90b2tlbi0+dHlwZSgp
ID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpCisgICAgQVNTRVJUKG1fdG9rZW4tPnR5cGUoKSAhPSBI
VE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7CisgICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9
PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpCiAgICAgICAgIG1fYXBwcm9wcmlhdGVFbmRUYWdO
YW1lID0gbV90b2tlbi0+bmFtZSgpOwogfQogCkBAIC0yMjcsOSArMjI3LDkgQEAgYm9vbCBIVE1M
VG9rZW5pemVyOjplbWl0RW5kT2ZGaWxlKFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQogCiBib29s
IEhUTUxUb2tlbml6ZXI6OmZsdXNoQnVmZmVyZWRFbmRUYWcoU2VnbWVudGVkU3RyaW5nJiBzb3Vy
Y2UpCiB7Ci0gICAgQVNTRVJUKG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3Rl
ciB8fCBtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpVbmluaXRpYWxpemVkKTsKKyAgICBB
U1NFUlQobV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIgfHwgbV90
b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsKICAgICBzb3Vy
Y2UuYWR2YW5jZShtX2xpbmVOdW1iZXIpOwotICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRN
TFRva2VuOjpDaGFyYWN0ZXIpCisgICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5U
eXBlczo6Q2hhcmFjdGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBtX3Rva2VuLT5iZWdp
bkVuZFRhZyhtX2J1ZmZlcmVkRW5kVGFnTmFtZSk7CiAgICAgbV9idWZmZXJlZEVuZFRhZ05hbWUu
Y2xlYXIoKTsKQEAgLTI1OSw3ICsyNTksNyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tl
bihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKIHsKICAgICAvLyBJ
ZiB3ZSBoYXZlIGEgdG9rZW4gaW4gcHJvZ3Jlc3MsIHRoZW4gd2UncmUgc3VwcG9zZWQgdG8gYmUg
Y2FsbGVkIGJhY2sKICAgICAvLyB3aXRoIHRoZSBzYW1lIHRva2VuIHNvIHdlIGNhbiBmaW5pc2gg
aXQuCi0gICAgQVNTRVJUKCFtX3Rva2VuIHx8IG1fdG9rZW4gPT0gJnRva2VuIHx8IHRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQpOworICAgIEFTU0VSVCghbV90b2tlbiB8
fCBtX3Rva2VuID09ICZ0b2tlbiB8fCB0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlVu
aW5pdGlhbGl6ZWQpOwogICAgIG1fdG9rZW4gPSAmdG9rZW47CiAKICAgICBpZiAoIW1fYnVmZmVy
ZWRFbmRUYWdOYW1lLmlzRW1wdHkoKSAmJiAhaXNFbmRUYWdCdWZmZXJpbmdTdGF0ZShtX3N0YXRl
KSkgewpAQCAtMzA3LDcgKzMwNyw3IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNl
Z21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBpZiAoY2Mg
PT0gJyYnKQogICAgICAgICAgICAgQURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJbkRhdGFT
dGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc8JykgewotICAgICAgICAgICAgaWYgKG1f
dG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3RlcikgeworICAgICAgICAgICAgaWYg
KG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKSB7CiAgICAgICAg
ICAgICAgICAgLy8gV2UgaGF2ZSBhIGJ1bmNoIG9mIGNoYXJhY3RlciB0b2tlbnMgcXVldWVkIHVw
IHRoYXQgd2UKICAgICAgICAgICAgICAgICAvLyBhcmUgZW1pdHRpbmcgbGF6aWx5IGhlcmUuCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNjkyLDcgKzE2OTIsNyBAQCBpbmxpbmUg
dm9pZCBIVE1MVG9rZW5pemVyOjpwYXJzZUVycm9yKCkKIAogaW5saW5lIGJvb2wgSFRNTFRva2Vu
aXplcjo6aGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKQogewotICAgIHJldHVybiBtX3Rva2Vu
LT50eXBlKCkgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXI7CisgICAgcmV0dXJuIG1fdG9rZW4tPnR5
cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCA4MjMwMTQxYjIxNjEy
YjIyM2UyNTMwNWQxN2M5M2RlZjI0Y2ZkNDY4Li5iN2ViY2U3OTU0MmU1Y2U0NTVhZTcyZDUxOTZl
NDQ0NGIwZDYxYTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5jcHAKQEAgLTQ0NiwxMyArNDQ2LDEzIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpj
b25zdHJ1Y3RUcmVlRnJvbVRva2VuKEhUTUxUb2tlbiYgcmF3VG9rZW4pCiAgICAgLy8gRklYTUU6
IFRvcCBjbGVhcmluZyB0aGUgcmF3VG9rZW4gb25jZSB3ZSBzdGFydCBydW5uaW5nIHRoZSBwYXJz
ZXIgb2ZmCiAgICAgLy8gdGhlIG1haW4gdGhyZWFkIG9yIG9uY2Ugd2Ugc3RvcCBhbGxvd2luZyBz
eW5jaHJvbm91cyBKYXZhU2NyaXB0CiAgICAgLy8gZXhlY3V0aW9uIGZyb20gcGFyc2VNYXBwZWRB
dHRyaWJ1dGUuCi0gICAgaWYgKHJhd1Rva2VuLnR5cGUoKSAhPSBIVE1MVG9rZW46OkNoYXJhY3Rl
cikKKyAgICBpZiAocmF3VG9rZW4udHlwZSgpICE9IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIp
CiAgICAgICAgIHJhd1Rva2VuLmNsZWFyKCk7CiAKICAgICBjb25zdHJ1Y3RUcmVlRnJvbUF0b21p
Y1Rva2VuKHRva2VuKTsKIAogICAgIGlmICghcmF3VG9rZW4uaXNVbmluaXRpYWxpemVkKCkpIHsK
LSAgICAgICAgQVNTRVJUKHJhd1Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3Rlcik7
CisgICAgICAgIEFTU0VSVChyYXdUb2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJh
Y3Rlcik7CiAgICAgICAgIHJhd1Rva2VuLmNsZWFyKCk7CiAgICAgfQogfQpAQCAtNDcxLDI1ICs0
NzEsMjUgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tQXRvbWljVG9r
ZW4oQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
VG9rZW4oQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKICAgICBzd2l0Y2ggKHRva2VuLnR5cGUo
KSkgewotICAgIGNhc2UgSFRNTFRva2VuOjpVbmluaXRpYWxpemVkOgorICAgIGNhc2UgSFRNTFRv
a2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEhUTUxUb2tlbjo6RE9DVFlQRToKKyAgICBjYXNlIEhU
TUxUb2tlblR5cGVzOjpET0NUWVBFOgogICAgICAgICBwcm9jZXNzRG9jdHlwZVRva2VuKHRva2Vu
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW46OlN0YXJ0VGFnOgorICAgIGNh
c2UgSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnOgogICAgICAgICBwcm9jZXNzU3RhcnRUYWcodG9r
ZW4pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhUTUxUb2tlbjo6RW5kVGFnOgorICAgIGNh
c2UgSFRNTFRva2VuVHlwZXM6OkVuZFRhZzoKICAgICAgICAgcHJvY2Vzc0VuZFRhZyh0b2tlbik7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuOjpDb21tZW50OgorICAgIGNhc2Ug
SFRNTFRva2VuVHlwZXM6OkNvbW1lbnQ6CiAgICAgICAgIHByb2Nlc3NDb21tZW50KHRva2VuKTsK
ICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSFRNTFRva2VuOjpDaGFyYWN0ZXI6CisgICAgY2Fz
ZSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOgogICAgICAgICBwcm9jZXNzQ2hhcmFjdGVyKHRv
a2VuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW46OkVuZE9mRmlsZToKKyAg
ICBjYXNlIEhUTUxUb2tlblR5cGVzOjpFbmRPZkZpbGU6CiAgICAgICAgIHByb2Nlc3NFbmRPZkZp
bGUodG9rZW4pOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC00OTcsNyArNDk3LDcgQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbihBdG9taWNIVE1MVG9rZW4mIHRva2VuKQog
CiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0RvY3R5cGVUb2tlbihBdG9taWNIVE1MVG9r
ZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpET0NU
WVBFKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBF
KTsKICAgICBpZiAobV9pbnNlcnRpb25Nb2RlID09IEluaXRpYWxNb2RlKSB7CiAgICAgICAgIG1f
dHJlZS5pbnNlcnREb2N0eXBlKHRva2VuKTsKICAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShCZWZv
cmVIVE1MTW9kZSk7CkBAIC01MTQsMTQgKzUxNCwxNCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0RvY3R5cGVUb2tlbihBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogdm9pZCBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NGYWtlU3RhcnRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgUGFzc1JlZlB0cjxOYW1lZE5vZGVNYXA+IGF0dHJpYnV0ZXMpCiB7CiAgICAgLy8gRklYTUU6
IFdlJ2xsIG5lZWQgYSBmYW5jaWVyIGNvbnZlcnNpb24gdGhhbiBqdXN0ICJsb2NhbE5hbWUiIGZv
ciBTVkcvTWF0aE1MIHRhZ3MuCi0gICAgQXRvbWljSFRNTFRva2VuIGZha2VUb2tlbihIVE1MVG9r
ZW46OlN0YXJ0VGFnLCB0YWdOYW1lLmxvY2FsTmFtZSgpLCBhdHRyaWJ1dGVzKTsKKyAgICBBdG9t
aWNIVE1MVG9rZW4gZmFrZVRva2VuKEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZywgdGFnTmFtZS5s
b2NhbE5hbWUoKSwgYXR0cmlidXRlcyk7CiAgICAgcHJvY2Vzc1N0YXJ0VGFnKGZha2VUb2tlbik7
CiB9CiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZUVuZFRhZyhjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lKQogewogICAgIC8vIEZJWE1FOiBXZSdsbCBuZWVkIGEgZmFuY2ll
ciBjb252ZXJzaW9uIHRoYW4ganVzdCAibG9jYWxOYW1lIiBmb3IgU1ZHL01hdGhNTCB0YWdzLgot
ICAgIEF0b21pY0hUTUxUb2tlbiBmYWtlVG9rZW4oSFRNTFRva2VuOjpFbmRUYWcsIHRhZ05hbWUu
bG9jYWxOYW1lKCkpOworICAgIEF0b21pY0hUTUxUb2tlbiBmYWtlVG9rZW4oSFRNTFRva2VuVHlw
ZXM6OkVuZFRhZywgdGFnTmFtZS5sb2NhbE5hbWUoKSk7CiAgICAgcHJvY2Vzc0VuZFRhZyhmYWtl
VG9rZW4pOwogfQogCkBAIC01MzYsNyArNTM2LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NGYWtlUEVuZFRhZ0lmUEluQnV0dG9uU2NvcGUoKQogewogICAgIGlmICghbV90cmVlLm9w
ZW5FbGVtZW50cygpLT5pbkJ1dHRvblNjb3BlKHBUYWcubG9jYWxOYW1lKCkpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgQXRvbWljSFRNTFRva2VuIGVuZFAoSFRNTFRva2VuOjpFbmRUYWcsIHBUYWcu
bG9jYWxOYW1lKCkpOworICAgIEF0b21pY0hUTUxUb2tlbiBlbmRQKEhUTUxUb2tlblR5cGVzOjpF
bmRUYWcsIHBUYWcubG9jYWxOYW1lKCkpOwogICAgIHByb2Nlc3NFbmRUYWcoZW5kUCk7CiB9CiAK
QEAgLTU1OCw3ICs1NTgsNyBAQCBQYXNzUmVmUHRyPE5hbWVkTm9kZU1hcD4gSFRNTFRyZWVCdWls
ZGVyOjphdHRyaWJ1dGVzRm9ySXNpbmRleElucHV0KEF0b21pY0hUTUxUbwogCiB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc0lzaW5kZXhTdGFydFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9r
ZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFy
dFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRU
YWcpOwogICAgIEFTU0VSVCh0b2tlbi5uYW1lKCkgPT0gaXNpbmRleFRhZyk7CiAgICAgcGFyc2VF
cnJvcih0b2tlbik7CiAgICAgaWYgKG1fdHJlZS5mb3JtKCkpCkBAIC03MjYsNyArNzI2LDcgQEAg
dm9pZCBhZGp1c3RGb3JlaWduQXR0cmlidXRlcyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogCiB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxU
b2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0
YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFy
dFRhZyk7CiAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSBodG1sVGFnKSB7CiAgICAgICAgIG1fdHJl
ZS5pbnNlcnRIVE1MSHRtbFN0YXJ0VGFnSW5Cb2R5KHRva2VuKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtOTgxLDcgKzk4MSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdG
b3JJbkJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICB9CiAgICAgaWYgKHRva2VuLm5h
bWUoKSA9PSBvcHRncm91cFRhZyB8fCB0b2tlbi5uYW1lKCkgPT0gb3B0aW9uVGFnKSB7CiAgICAg
ICAgIGlmIChtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluU2NvcGUob3B0aW9uVGFnLmxvY2FsTmFt
ZSgpKSkgewotICAgICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZE9wdGlvbihIVE1MVG9rZW46
OkVuZFRhZywgb3B0aW9uVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAgIEF0b21pY0hUTUxU
b2tlbiBlbmRPcHRpb24oSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgb3B0aW9uVGFnLmxvY2FsTmFt
ZSgpKTsKICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcoZW5kT3B0aW9uKTsKICAgICAgICAgfQog
ICAgICAgICBtX3RyZWUucmVjb25zdHJ1Y3RUaGVBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTsK
QEAgLTEwNTgsNyArMTA1OCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpjbG9zZVRoZUNlbGwo
KQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5UYWJsZShBdG9t
aWNIVE1MVG9rZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRv
a2VuOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBl
czo6U3RhcnRUYWcpOwogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gY2FwdGlvblRhZykgewogICAg
ICAgICBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnBvcFVudGlsVGFibGVTY29wZU1hcmtlcigpOwog
ICAgICAgICBtX3RyZWUuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCktPmFwcGVuZE1hcmtlcigp
OwpAQCAtMTEzMCw3ICsxMTMwLDcgQEAgbmFtZXNwYWNlIHsKIAogYm9vbCBzaG91bGRQcm9jZXNz
Rm9yZWlnbkNvbnRlbnRVc2luZ0luQm9keUluc2VydGlvbk1vZGUoQXRvbWljSFRNTFRva2VuJiB0
b2tlbiwgQ29udGFpbmVyTm9kZSogY3VycmVudEVsZW1lbnQpCiB7Ci0gICAgQVNTRVJUKHRva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgp
ID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgaWYgKGN1cnJlbnRFbGVtZW50LT5o
YXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptaVRhZykKICAgICAgICAgfHwgY3VycmVudEVsZW1lbnQt
Pmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1vVGFnKQogICAgICAgICB8fCBjdXJyZW50RWxlbWVu
dC0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bW5UYWcpCkBAIC0xMTUyLDcgKzExNTIsNyBAQCBi
b29sIHNob3VsZFByb2Nlc3NGb3JlaWduQ29udGVudFVzaW5nSW5Cb2R5SW5zZXJ0aW9uTW9kZShB
dG9taWNIVE1MVG9rZW4mIHRva2VuLAogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0
YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUo
KSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhU
TUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgc3dpdGNoIChpbnNlcnRpb25Nb2RlKCkpIHsK
ICAgICBjYXNlIEluaXRpYWxNb2RlOgogICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09
IEluaXRpYWxNb2RlKTsKQEAgLTE0MDksNyArMTQwOSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIHx8
IHRva2VuLm5hbWUoKSA9PSB0clRhZwogICAgICAgICAgICAgfHwgaXNUYWJsZUNlbGxDb250ZXh0
VGFnKHRva2VuLm5hbWUoKSkpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwotICAg
ICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZFNlbGVjdChIVE1MVG9rZW46OkVuZFRhZywgc2Vs
ZWN0VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAgIEF0b21pY0hUTUxUb2tlbiBlbmRTZWxl
Y3QoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgc2VsZWN0VGFnLmxvY2FsTmFtZSgpKTsKICAgICAg
ICAgICAgIHByb2Nlc3NFbmRUYWcoZW5kU2VsZWN0KTsKICAgICAgICAgICAgIHJlcHJvY2Vzc1N0
YXJ0VGFnKHRva2VuKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0MjMsNyArMTQyMyw3IEBA
IHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0
b2tlbikKICAgICAgICAgfQogICAgICAgICBpZiAodG9rZW4ubmFtZSgpID09IG9wdGlvblRhZykg
ewogICAgICAgICAgICAgaWYgKG1fdHJlZS5jdXJyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKG9wdGlv
blRhZykpIHsKLSAgICAgICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kT3B0aW9uKEhUTUxU
b2tlbjo6RW5kVGFnLCBvcHRpb25UYWcubG9jYWxOYW1lKCkpOworICAgICAgICAgICAgICAgIEF0
b21pY0hUTUxUb2tlbiBlbmRPcHRpb24oSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgb3B0aW9uVGFn
LmxvY2FsTmFtZSgpKTsKICAgICAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKGVuZE9wdGlvbik7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnQodG9r
ZW4pOwpAQCAtMTQzMSwxMSArMTQzMSwxMSBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIH0KICAgICAgICAgaWYg
KHRva2VuLm5hbWUoKSA9PSBvcHRncm91cFRhZykgewogICAgICAgICAgICAgaWYgKG1fdHJlZS5j
dXJyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKG9wdGlvblRhZykpIHsKLSAgICAgICAgICAgICAgICBB
dG9taWNIVE1MVG9rZW4gZW5kT3B0aW9uKEhUTUxUb2tlbjo6RW5kVGFnLCBvcHRpb25UYWcubG9j
YWxOYW1lKCkpOworICAgICAgICAgICAgICAgIEF0b21pY0hUTUxUb2tlbiBlbmRPcHRpb24oSFRN
TFRva2VuVHlwZXM6OkVuZFRhZywgb3B0aW9uVGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAgICAg
ICAgICBwcm9jZXNzRW5kVGFnKGVuZE9wdGlvbik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAobV90cmVlLmN1cnJlbnROb2RlKCktPmhhc1RhZ05hbWUob3B0Z3JvdXBUYWcpKSB7Ci0g
ICAgICAgICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZE9wdGdyb3VwKEhUTUxUb2tlbjo6RW5k
VGFnLCBvcHRncm91cFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgICAgICAgICAgQXRvbWljSFRN
TFRva2VuIGVuZE9wdGdyb3VwKEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIG9wdGdyb3VwVGFnLmxv
Y2FsTmFtZSgpKTsKICAgICAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKGVuZE9wdGdyb3VwKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tl
bik7CkBAIC0xNDQzLDcgKzE0NDMsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0
YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIH0KICAgICAgICAgaWYgKHRv
a2VuLm5hbWUoKSA9PSBzZWxlY3RUYWcpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4p
OwotICAgICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZFNlbGVjdChIVE1MVG9rZW46OkVuZFRh
Zywgc2VsZWN0VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAgIEF0b21pY0hUTUxUb2tlbiBl
bmRTZWxlY3QoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgc2VsZWN0VGFnLmxvY2FsTmFtZSgpKTsK
ICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcoZW5kU2VsZWN0KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMTQ1NSw3ICsxNDU1LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgICAg
IEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kU2VsZWN0KEhUTUxU
b2tlbjo6RW5kVGFnLCBzZWxlY3RUYWcubG9jYWxOYW1lKCkpOworICAgICAgICAgICAgQXRvbWlj
SFRNTFRva2VuIGVuZFNlbGVjdChIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCBzZWxlY3RUYWcubG9j
YWxOYW1lKCkpOwogICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZyhlbmRTZWxlY3QpOwogICAgICAg
ICAgICAgcmVwcm9jZXNzU3RhcnRUYWcodG9rZW4pOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MTU0MCw3ICsxNTQwLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhB
dG9taWNIVE1MVG9rZW4mIHRva2VuKQogCiBib29sIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Jv
ZHlFbmRUYWdGb3JJbkJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQo
dG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlw
ZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOwogICAgIEFTU0VSVCh0b2tlbi5uYW1lKCkg
PT0gYm9keVRhZyk7CiAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluU2NvcGUoYm9k
eVRhZy5sb2NhbE5hbWUoKSkpIHsKICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CkBAIC0xNTUz
LDcgKzE1NTMsNyBAQCBib29sIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0JvZHlFbmRUYWdGb3JJ
bkJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NBbnlPdGhlckVuZFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewot
ICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpOworICAgIEFTU0VS
VCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CiAgICAgSFRNTEVsZW1l
bnRTdGFjazo6RWxlbWVudFJlY29yZCogcmVjb3JkID0gbV90cmVlLm9wZW5FbGVtZW50cygpLT50
b3BSZWNvcmQoKTsKICAgICB3aGlsZSAoMSkgewogICAgICAgICBDb250YWluZXJOb2RlKiBub2Rl
ID0gcmVjb3JkLT5ub2RlKCk7CkBAIC0xNzcwLDcgKzE3NzAsNyBAQCB2b2lkIEhUTUxUcmVlQnVp
bGRlcjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSgpCiAKIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5UYWJsZUJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tl
bikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKKyAg
ICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOwogICAgIGlm
IChpc1RhYmxlQm9keUNvbnRleHRUYWcodG9rZW4ubmFtZSgpKSkgewogICAgICAgICBpZiAoIW1f
dHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJsZVNjb3BlKHRva2VuLm5hbWUoKSkpIHsKICAgICAg
ICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwpAQCAtMTgwNyw3ICsxODA3LDcgQEAgdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblRhYmxlQm9keShBdG9taWNIVE1MVG9rZW4m
IHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluUm93KEF0
b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1M
VG9rZW46OkVuZFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBl
czo6RW5kVGFnKTsKICAgICBpZiAodG9rZW4ubmFtZSgpID09IHRyVGFnKSB7CiAgICAgICAgIHBy
b2Nlc3NUckVuZFRhZ0ZvckluUm93KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE4NDMsNyArMTg0
Myw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5Sb3coQXRvbWlj
SFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdG
b3JJbkNlbGwoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlw
ZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhU
TUxUb2tlblR5cGVzOjpFbmRUYWcpOwogICAgIGlmIChpc1RhYmxlQ2VsbENvbnRleHRUYWcodG9r
ZW4ubmFtZSgpKSkgewogICAgICAgICBpZiAoIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJs
ZVNjb3BlKHRva2VuLm5hbWUoKSkpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwpA
QCAtMTg4MCwxMyArMTg4MCwxMyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRh
Z0ZvckluQ2VsbChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0VuZFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewotICAg
IEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpOworICAgIEFTU0VSVCh0
b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CiAgICAgaWYgKHRva2VuLm5h
bWUoKSA9PSBib2R5VGFnKSB7CiAgICAgICAgIHByb2Nlc3NCb2R5RW5kVGFnRm9ySW5Cb2R5KHRv
a2VuKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodG9rZW4ubmFtZSgpID09IGh0
bWxUYWcpIHsKLSAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZEJvZHkoSFRNTFRva2VuOjpFbmRU
YWcsIGJvZHlUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kQm9k
eShIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCBib2R5VGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAg
aWYgKHByb2Nlc3NCb2R5RW5kVGFnRm9ySW5Cb2R5KGVuZEJvZHkpKQogICAgICAgICAgICAgcmVw
cm9jZXNzRW5kVGFnKHRva2VuKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjA1Myw3ICsyMDUzLDcg
QEAgYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUYWJsZUVuZFRhZ0ZvckluVGFibGUoKQog
CiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluVGFibGUoQXRvbWljSFRN
TFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6
RW5kVGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRU
YWcpOwogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gdGFibGVUYWcpIHsKICAgICAgICAgcHJvY2Vz
c1RhYmxlRW5kVGFnRm9ySW5UYWJsZSgpOwogICAgICAgICByZXR1cm47CkBAIC0yMDc0LDcgKzIw
NzQsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluVGFibGUoQXRv
bWljSFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRU
YWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09
IEhUTUxUb2tlbjo6RW5kVGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tl
blR5cGVzOjpFbmRUYWcpOwogICAgIHN3aXRjaCAoaW5zZXJ0aW9uTW9kZSgpKSB7CiAgICAgY2Fz
ZSBJbml0aWFsTW9kZToKICAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbml0aWFs
TW9kZSk7CkBAIC0yMjcwLDcgKzIyNzAsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c0VuZFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgfHwgaXNUYWJsZUNl
bGxDb250ZXh0VGFnKHRva2VuLm5hbWUoKSkpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9r
ZW4pOwogICAgICAgICAgICAgaWYgKG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJsZVNjb3Bl
KHRva2VuLm5hbWUoKSkpIHsKLSAgICAgICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kU2Vs
ZWN0KEhUTUxUb2tlbjo6RW5kVGFnLCBzZWxlY3RUYWcubG9jYWxOYW1lKCkpOworICAgICAgICAg
ICAgICAgIEF0b21pY0hUTUxUb2tlbiBlbmRTZWxlY3QoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywg
c2VsZWN0VGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKGVu
ZFNlbGVjdCk7CiAgICAgICAgICAgICAgICAgcmVwcm9jZXNzRW5kVGFnKHRva2VuKTsKICAgICAg
ICAgICAgIH0KQEAgLTI0MDIsNyArMjQwMiw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpyZXNl
dEZvcmVpZ25JbnNlcnRpb25Nb2RlKCkKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3ND
b21tZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUo
KSA9PSBIVE1MVG9rZW46OkNvbW1lbnQpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRN
TFRva2VuVHlwZXM6OkNvbW1lbnQpOwogICAgIGlmIChtX2luc2VydGlvbk1vZGUgPT0gSW5pdGlh
bE1vZGUKICAgICAgICAgfHwgbV9pbnNlcnRpb25Nb2RlID09IEJlZm9yZUhUTUxNb2RlCiAgICAg
ICAgIHx8IG1faW5zZXJ0aW9uTW9kZSA9PSBBZnRlckFmdGVyQm9keU1vZGUKQEAgLTI0MjQsNyAr
MjQyNCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ29tbWVudChBdG9taWNIVE1M
VG9rZW4mIHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3RlcihB
dG9taWNIVE1MVG9rZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRN
TFRva2VuOjpDaGFyYWN0ZXIpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
VHlwZXM6OkNoYXJhY3Rlcik7CiAgICAgRXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlciBidWZm
ZXIodG9rZW4pOwogICAgIHByb2Nlc3NDaGFyYWN0ZXJCdWZmZXIoYnVmZmVyKTsKIH0KQEAgLTI1
ODMsNyArMjU4Myw3IEBAIFJlcHJvY2Vzc0J1ZmZlcjoKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NFbmRPZkZpbGUoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQo
dG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5kT2ZGaWxlKTsKKyAgICBBU1NFUlQodG9rZW4u
dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRPZkZpbGUpOwogICAgIHN3aXRjaCAoaW5zZXJ0
aW9uTW9kZSgpKSB7CiAgICAgY2FzZSBJbml0aWFsTW9kZToKICAgICAgICAgQVNTRVJUKGluc2Vy
dGlvbk1vZGUoKSA9PSBJbml0aWFsTW9kZSk7CkBAIC0yNjgxLDcgKzI2ODEsNyBAQCB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckluaXRpYWwoKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6ZGVmYXVsdEZvckJlZm9yZUhUTUwoKQogewotICAgIEF0b21pY0hUTUxUb2tlbiBzdGFydEhU
TUwoSFRNTFRva2VuOjpTdGFydFRhZywgaHRtbFRhZy5sb2NhbE5hbWUoKSk7CisgICAgQXRvbWlj
SFRNTFRva2VuIHN0YXJ0SFRNTChIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcsIGh0bWxUYWcubG9j
YWxOYW1lKCkpOwogICAgIG1fdHJlZS5pbnNlcnRIVE1MSHRtbFN0YXJ0VGFnQmVmb3JlSFRNTChz
dGFydEhUTUwpOwogICAgIHNldEluc2VydGlvbk1vZGUoQmVmb3JlSGVhZE1vZGUpOwogICAgIHBy
ZXBhcmVUb1JlcHJvY2Vzc1Rva2VuKCk7CkBAIC0yNjg5LDI4ICsyNjg5LDI4IEBAIHZvaWQgSFRN
TFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9yQmVmb3JlSFRNTCgpCiAKIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpkZWZhdWx0Rm9yQmVmb3JlSGVhZCgpCiB7Ci0gICAgQXRvbWljSFRNTFRva2VuIHN0YXJ0
SGVhZChIVE1MVG9rZW46OlN0YXJ0VGFnLCBoZWFkVGFnLmxvY2FsTmFtZSgpKTsKKyAgICBBdG9t
aWNIVE1MVG9rZW4gc3RhcnRIZWFkKEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZywgaGVhZFRhZy5s
b2NhbE5hbWUoKSk7CiAgICAgcHJvY2Vzc1N0YXJ0VGFnKHN0YXJ0SGVhZCk7CiAgICAgcHJlcGFy
ZVRvUmVwcm9jZXNzVG9rZW4oKTsKIH0KIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRG
b3JJbkhlYWQoKQogewotICAgIEF0b21pY0hUTUxUb2tlbiBlbmRIZWFkKEhUTUxUb2tlbjo6RW5k
VGFnLCBoZWFkVGFnLmxvY2FsTmFtZSgpKTsKKyAgICBBdG9taWNIVE1MVG9rZW4gZW5kSGVhZChI
VE1MVG9rZW5UeXBlczo6RW5kVGFnLCBoZWFkVGFnLmxvY2FsTmFtZSgpKTsKICAgICBwcm9jZXNz
RW5kVGFnKGVuZEhlYWQpOwogICAgIHByZXBhcmVUb1JlcHJvY2Vzc1Rva2VuKCk7CiB9CiAKIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5IZWFkTm9zY3JpcHQoKQogewotICAgIEF0
b21pY0hUTUxUb2tlbiBlbmROb3NjcmlwdChIVE1MVG9rZW46OkVuZFRhZywgbm9zY3JpcHRUYWcu
bG9jYWxOYW1lKCkpOworICAgIEF0b21pY0hUTUxUb2tlbiBlbmROb3NjcmlwdChIVE1MVG9rZW5U
eXBlczo6RW5kVGFnLCBub3NjcmlwdFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgcHJvY2Vzc0VuZFRh
ZyhlbmROb3NjcmlwdCk7CiAgICAgcHJlcGFyZVRvUmVwcm9jZXNzVG9rZW4oKTsKIH0KIAogdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JBZnRlckhlYWQoKQogewotICAgIEF0b21pY0hU
TUxUb2tlbiBzdGFydEJvZHkoSFRNTFRva2VuOjpTdGFydFRhZywgYm9keVRhZy5sb2NhbE5hbWUo
KSk7CisgICAgQXRvbWljSFRNTFRva2VuIHN0YXJ0Qm9keShIVE1MVG9rZW5UeXBlczo6U3RhcnRU
YWcsIGJvZHlUYWcubG9jYWxOYW1lKCkpOwogICAgIHByb2Nlc3NTdGFydFRhZyhzdGFydEJvZHkp
OwogICAgIG1fZnJhbWVzZXRPayA9IHRydWU7CiAgICAgcHJlcGFyZVRvUmVwcm9jZXNzVG9rZW4o
KTsKQEAgLTI3MzYsNyArMjczNiw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9y
SW5UYWJsZVRleHQoKQogCiBib29sIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9y
SW5IZWFkKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUo
KSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhU
TUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSBodG1sVGFn
KSB7CiAgICAgICAgIG1fdHJlZS5pbnNlcnRIVE1MSHRtbFN0YXJ0VGFnSW5Cb2R5KHRva2VuKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yNzgzLDcgKzI3ODMsNyBAQCBib29sIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5IZWFkKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4p
CiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1JDREFUQVN0YXJ0VGFnKEF0
b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1M
VG9rZW46OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5
cGVzOjpTdGFydFRhZyk7CiAgICAgbV90cmVlLmluc2VydEhUTUxFbGVtZW50KHRva2VuKTsKICAg
ICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJDREFUQVN0
YXRlKTsKICAgICBtX29yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IG1faW5zZXJ0aW9uTW9kZTsKQEAg
LTI3OTIsNyArMjc5Miw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1JD
REFUQVN0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzR2VuZXJpY1Jhd1RleHRTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2Vu
KQogewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7Cisg
ICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAg
IG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tlbik7CiAgICAgbV9wYXJzZXItPnRva2VuaXpl
cigpLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpSQVdURVhUU3RhdGUpOwogICAgIG1fb3JpZ2lu
YWxJbnNlcnRpb25Nb2RlID0gbV9pbnNlcnRpb25Nb2RlOwpAQCAtMjgwMSw3ICsyODAxLDcgQEAg
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUmF3VGV4dFN0YXJ0VGFnKEF0b21p
Y0hUTUxUb2tlbiYgdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU2NyaXB0
U3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlw
ZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0g
SFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBtX3RyZWUuaW5zZXJ0U2NyaXB0RWxlbWVu
dCh0b2tlbik7CiAgICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9rZW5p
emVyOjpTY3JpcHREYXRhU3RhdGUpOwogICAgIG1fb3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gbV9p
bnNlcnRpb25Nb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFZpZXdTb3VyY2VQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFZp
ZXdTb3VyY2VQYXJzZXIuY3BwCmluZGV4IDdjZGJkYzcxYzk5MGUwZGY1MmQwOWEyZmI5MTNmYzI3
Y2Y0NDQyMzcuLmU4MmZhOTMwMTZiMGE0YjZhYzRlODgyYjFjMTE3NmEzODA1OGI4ZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5j
cHAKQEAgLTc1LDcgKzc1LDcgQEAgU3RyaW5nIEhUTUxWaWV3U291cmNlUGFyc2VyOjpzb3VyY2VG
b3JUb2tlbigpCiB2b2lkIEhUTUxWaWV3U291cmNlUGFyc2VyOjp1cGRhdGVUb2tlbml6ZXJTdGF0
ZSgpCiB7CiAgICAgLy8gRklYTUU6IFRoZSB0b2tlbml6ZXIgc2hvdWxkIGRvIHRoaXMgd29yayBm
b3IgdXMuCi0gICAgaWYgKG1fdG9rZW4udHlwZSgpICE9IEhUTUxUb2tlbjo6U3RhcnRUYWcpCisg
ICAgaWYgKG1fdG9rZW4udHlwZSgpICE9IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZykKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQXRvbWljU3RyaW5nIHRhZ05hbWUobV90b2tlbi5uYW1lKCkuZGF0
YSgpLCBtX3Rva2VuLm5hbWUoKS5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAKaW5kZXggZDAzYjc0NGU4NzIxMTY0OGM5MmY1
MTM3OGMwYjJiOGUxM2U4M2VlMy4uNjNiNTE2MDIxYTQyNDlmMzVjYjZkYTdmZTRhYWYyYzMyZjM4
YWNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQ
YXJzZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgVGV4dERvY3VtZW50UGFyc2VyOjppbnNl
cnRGYWtlUHJlRWxlbWVudCgpCiAgICAgUmVmUHRyPEF0dHJpYnV0ZT4gc3R5bGVBdHRyaWJ1dGUg
PSBBdHRyaWJ1dGU6OmNyZWF0ZU1hcHBlZCgic3R5bGUiLCAid29yZC13cmFwOiBicmVhay13b3Jk
OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7Iik7CiAgICAgUmVmUHRyPE5hbWVkTm9kZU1hcD4gYXR0
cmlidXRlcyA9IE5hbWVkTm9kZU1hcDo6Y3JlYXRlKCk7CiAgICAgYXR0cmlidXRlcy0+aW5zZXJ0
QXR0cmlidXRlKHN0eWxlQXR0cmlidXRlLnJlbGVhc2UoKSwgZmFsc2UpOwotICAgIEF0b21pY0hU
TUxUb2tlbiBmYWtlUHJlKEhUTUxUb2tlbjo6U3RhcnRUYWcsIHByZVRhZy5sb2NhbE5hbWUoKSwg
YXR0cmlidXRlcy5yZWxlYXNlKCkpOworICAgIEF0b21pY0hUTUxUb2tlbiBmYWtlUHJlKEhUTUxU
b2tlblR5cGVzOjpTdGFydFRhZywgcHJlVGFnLmxvY2FsTmFtZSgpLCBhdHRyaWJ1dGVzLnJlbGVh
c2UoKSk7CiAKICAgICB0cmVlQnVpbGRlcigpLT5jb25zdHJ1Y3RUcmVlRnJvbUF0b21pY1Rva2Vu
KGZha2VQcmUpOwogICAgIG1faGF2ZUluc2VydGVkRmFrZVByZUVsZW1lbnQgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAppbmRleCBlODFlYWJiMDk1ZTQy
M2MyYmRjMWU4NDg0YWI3MGQ2ZDE1YjU0ODcxLi5lZTFkMmNlMWE0ZWI1OTZjY2Q0NmQxNjkwNTQx
NDg5NDhlMmYxOWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NB
dWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNw
cApAQCAtMjM0LDcgKzIzNCw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW5Jbml0aWFs
KEhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gSW5pdGlhbCk7CiAK
LSAgICBpZiAodG9rZW4udHlwZSgpICE9IEhUTUxUb2tlbjo6U3RhcnRUYWcpCisgICAgaWYgKHRv
a2VuLnR5cGUoKSAhPSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGJvb2wgZGlkQmxvY2tTY3JpcHQgPSBlcmFzZURhbmdlcm91c0F0dHJpYnV0
ZXNJZkluamVjdGVkKHRva2VuKTsKQEAgLTI2Niw4ICsyNjYsOCBAQCBib29sIFhTU0F1ZGl0b3I6
OmZpbHRlclRva2VuQWZ0ZXJTY3JpcHRTdGFydFRhZyhIVE1MVG9rZW4mIHRva2VuKQogICAgIEFT
U0VSVChtX3N0YXRlID09IEFmdGVyU2NyaXB0U3RhcnRUYWcpOwogICAgIG1fc3RhdGUgPSBJbml0
aWFsOwogCi0gICAgaWYgKHRva2VuLnR5cGUoKSAhPSBIVE1MVG9rZW46OkNoYXJhY3Rlcikgewot
ICAgICAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnIHx8IHRva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZE9mRmlsZSk7CisgICAgaWYgKHRva2VuLnR5cGUoKSAh
PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKSB7CisgICAgICAgIEFTU0VSVCh0b2tlbi50eXBl
KCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyB8fCB0b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
VHlwZXM6OkVuZE9mRmlsZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTI4
Niw3ICsyODYsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlclRva2VuQWZ0ZXJTY3JpcHRTdGFy
dFRhZyhIVE1MVG9rZW4mIHRva2VuKQogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJTY3JpcHRUb2tl
bihIVE1MVG9rZW4mIHRva2VuKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IEluaXRpYWwpOwot
ICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CisgICAgQVNT
RVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIEFTU0VS
VChoYXNOYW1lKHRva2VuLCBzY3JpcHRUYWcpKTsKIAogICAgIGlmIChlcmFzZUF0dHJpYnV0ZUlm
SW5qZWN0ZWQodG9rZW4sIHNyY0F0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCkpKQpAQCAtMzAwLDcg
KzMwMCw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyU2NyaXB0VG9rZW4oSFRNTFRva2VuJiB0
b2tlbikKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyT2JqZWN0VG9rZW4oSFRNTFRva2VuJiB0b2tl
bikKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBJbml0aWFsKTsKLSAgICBBU1NFUlQodG9rZW4u
dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkg
PT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZSh0b2tlbiwg
b2JqZWN0VGFnKSk7CiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CkBAIC0zMTUs
NyArMzE1LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJPYmplY3RUb2tlbihIVE1MVG9rZW4m
IHRva2VuKQogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJQYXJhbVRva2VuKEhUTUxUb2tlbiYgdG9r
ZW4pCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gSW5pdGlhbCk7Ci0gICAgQVNTRVJUKHRva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSgp
ID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUodG9rZW4s
IHBhcmFtVGFnKSk7CiAKICAgICBzaXplX3QgaW5kZXhPZk5hbWVBdHRyaWJ1dGU7CkBAIC0zMzQs
NyArMzM0LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJQYXJhbVRva2VuKEhUTUxUb2tlbiYg
dG9rZW4pCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckVtYmVkVG9rZW4oSFRNTFRva2VuJiB0b2tl
bikKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBJbml0aWFsKTsKLSAgICBBU1NFUlQodG9rZW4u
dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkg
PT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZSh0b2tlbiwg
ZW1iZWRUYWcpKTsKIAogICAgIGJvb2wgZGlkQmxvY2tTY3JpcHQgPSBmYWxzZTsKQEAgLTM0OCw3
ICszNDgsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckVtYmVkVG9rZW4oSFRNTFRva2VuJiB0
b2tlbikKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyQXBwbGV0VG9rZW4oSFRNTFRva2VuJiB0b2tl
bikKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBJbml0aWFsKTsKLSAgICBBU1NFUlQodG9rZW4u
dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkg
PT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZSh0b2tlbiwg
YXBwbGV0VGFnKSk7CiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CkBAIC0zNjIs
NyArMzYyLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJBcHBsZXRUb2tlbihIVE1MVG9rZW4m
IHRva2VuKQogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJJZnJhbWVUb2tlbihIVE1MVG9rZW4mIHRv
a2VuKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IEluaXRpYWwpOwotICAgIEFTU0VSVCh0b2tl
bi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5cGUo
KSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHRva2Vu
LCBpZnJhbWVUYWcpKTsKIAogICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQodG9r
ZW4sIHNyY0F0dHIpOwpAQCAtMzcxLDcgKzM3MSw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVy
SWZyYW1lVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyTWV0
YVRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gSW5pdGlh
bCk7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKKyAg
ICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAg
QVNTRVJUKGhhc05hbWUodG9rZW4sIG1ldGFUYWcpKTsKIAogICAgIHJldHVybiBlcmFzZUF0dHJp
YnV0ZUlmSW5qZWN0ZWQodG9rZW4sIGh0dHBfZXF1aXZBdHRyKTsKQEAgLTM4MCw3ICszODAsNyBA
QCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlck1ldGFUb2tlbihIVE1MVG9rZW4mIHRva2VuKQogYm9v
bCBYU1NBdWRpdG9yOjpmaWx0ZXJCYXNlVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKIHsKICAgICBB
U1NFUlQobV9zdGF0ZSA9PSBJbml0aWFsKTsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhU
TUxUb2tlbjo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
VHlwZXM6OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZSh0b2tlbiwgYmFzZVRhZykpOwog
CiAgICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZCh0b2tlbiwgaHJlZkF0dHIpOwpA
QCAtMzg5LDcgKzM4OSw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyQmFzZVRva2VuKEhUTUxU
b2tlbiYgdG9rZW4pCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckZvcm1Ub2tlbihIVE1MVG9rZW4m
IHRva2VuKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IEluaXRpYWwpOwotICAgIEFTU0VSVCh0
b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHRv
a2VuLCBmb3JtVGFnKSk7CiAKICAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHRv
a2VuLCBhY3Rpb25BdHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
TWFya3VwVG9rZW5CYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2Vu
QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdkMmFiMGY5NjI1MTliYmUyNGE1YjRhMzZhNzIzMmFhNzAzZjI5
MDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRv
a2VuQmFzZS5oCkBAIC0wLDAgKzEsMzgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNYXJrdXBUb2tlbkJhc2VfaAorI2RlZmluZSBNYXJr
dXBUb2tlbkJhc2VfaAorCisjaW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgRG9jdHlwZURhdGFCYXNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShEb2N0eXBlRGF0YUJhc2UpOworcHVibGljOgorICAgIERvY3R5cGVEYXRhQmFzZSgpCisgICAg
ICAgIDogbV9oYXNQdWJsaWNJZGVudGlmaWVyKGZhbHNlKQorICAgICAgICAsIG1faGFzU3lzdGVt
SWRlbnRpZmllcihmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBtX2hhc1B1YmxpY0lk
ZW50aWZpZXI7CisgICAgYm9vbCBtX2hhc1N5c3RlbUlkZW50aWZpZXI7CisgICAgV1RGOjpWZWN0
b3I8VUNoYXI+IG1fcHVibGljSWRlbnRpZmllcjsKKyAgICBXVEY6OlZlY3RvcjxVQ2hhcj4gbV9z
eXN0ZW1JZGVudGlmaWVyOworfTsKKyAgICAKK3RlbXBsYXRlPHR5cGVuYW1lIFR5cGVTZXQsIHR5
cGVuYW1lIERvY3R5cGVEYXRhID0gRG9jdHlwZURhdGFCYXNlPgorY2xhc3MgTWFya3VwVG9rZW5C
YXNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNYXJrdXBUb2tlbkJhc2UpOworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHR5cGVkZWYgdHlwZW5hbWUgVHlw
ZVNldDo6VHlwZSBUeXBlOworCisgICAgY2xhc3MgUmFuZ2UgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgaW50IG1fc3RhcnQ7CisgICAgICAgIGludCBtX2VuZDsKKyAgICB9OworCisgICAgY2xhc3Mg
QXR0cmlidXRlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFJhbmdlIG1fbmFtZVJhbmdlOworICAg
ICAgICBSYW5nZSBtX3ZhbHVlUmFuZ2U7CisgICAgICAgIFdURjo6VmVjdG9yPFVDaGFyLCAzMj4g
bV9uYW1lOworICAgICAgICBXVEY6OlZlY3RvcjxVQ2hhciwgMzI+IG1fdmFsdWU7CisgICAgfTsK
KworICAgIHR5cGVkZWYgV1RGOjpWZWN0b3I8QXR0cmlidXRlLCAxMD4gQXR0cmlidXRlTGlzdDsK
KyAgICB0eXBlZGVmIFdURjo6VmVjdG9yPFVDaGFyLCAxMDI0PiBEYXRhVmVjdG9yOworCisgICAg
TWFya3VwVG9rZW5CYXNlKCkgeyBjbGVhcigpOyB9CisgICAgdmlydHVhbCB+TWFya3VwVG9rZW5C
YXNlKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgbV90
eXBlID0gVHlwZVNldDo6VW5pbml0aWFsaXplZDsKKyAgICAgICAgbV9yYW5nZS5tX3N0YXJ0ID0g
MDsKKyAgICAgICAgbV9yYW5nZS5tX2VuZCA9IDA7CisgICAgICAgIG1fYmFzZU9mZnNldCA9IDA7
CisgICAgICAgIG1fZGF0YS5jbGVhcigpOworICAgIH0KKworICAgIGJvb2wgaXNVbmluaXRpYWxp
emVkKCkgeyByZXR1cm4gbV90eXBlID09IFR5cGVTZXQ6OlVuaW5pdGlhbGl6ZWQ7IH0KKworICAg
IGludCBzdGFydEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZS5tX3N0YXJ0OyB9CisgICAg
aW50IGVuZEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZS5tX2VuZDsgfQorCisgICAgdm9p
ZCBzZXRCYXNlT2Zmc2V0KGludCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2Jhc2VPZmZzZXQg
PSBvZmZzZXQ7CisgICAgfQorCisgICAgdm9pZCBlbmQoaW50IGVuZE9mZnNldCkKKyAgICB7Cisg
ICAgICAgIG1fcmFuZ2UubV9lbmQgPSBlbmRPZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7CisgICAgfQor
CisgICAgdm9pZCBtYWtlRW5kT2ZGaWxlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gVHlwZVNldDo6VW5pbml0aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9IFR5cGVTZXQ6OkVu
ZE9mRmlsZTsKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luU3RhcnRUYWcoVUNoYXIgY2hhcmFjdGVy
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gVHlwZVNldDo6VW5pbml0aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9IFR5cGVTZXQ6
OlN0YXJ0VGFnOworICAgICAgICBtX3NlbGZDbG9zaW5nID0gZmFsc2U7CisgICAgICAgIG1fY3Vy
cmVudEF0dHJpYnV0ZSA9IDA7CisgICAgICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOworCisgICAg
ICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorICAgIHZvaWQgYmVnaW5FbmRUYWcoVCBjaGFyYWN0ZXJzKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpVbmluaXRpYWxpemVkKTsKKyAgICAgICAgbV90
eXBlID0gVHlwZVNldDo6RW5kVGFnOworICAgICAgICBtX3NlbGZDbG9zaW5nID0gZmFsc2U7Cisg
ICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9IDA7CisgICAgICAgIG1fYXR0cmlidXRlcy5jbGVh
cigpOworCisgICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVycyk7CisgICAgfQorCisgICAg
Ly8gU3RhcnRpbmcgYSBjaGFyYWN0ZXIgdG9rZW4gd29ya3Mgc2xpZ2h0bHkgZGlmZmVyZW50bHkg
dGhhbiBzdGFydGluZworICAgIC8vIG90aGVyIHR5cGVzIG9mIHRva2VucyBiZWNhdXNlIHdlIHdh
bnQgdG8gc2F2ZSBhIHBlci1jaGFyYWN0ZXIgYnJhbmNoLgorICAgIHZvaWQgZW5zdXJlSXNDaGFy
YWN0ZXJUb2tlbigpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlVu
aW5pdGlhbGl6ZWQgfHwgbV90eXBlID09IFR5cGVTZXQ6OkNoYXJhY3Rlcik7CisgICAgICAgIG1f
dHlwZSA9IFR5cGVTZXQ6OkNoYXJhY3RlcjsKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luQ29tbWVu
dCgpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlVuaW5pdGlhbGl6
ZWQpOworICAgICAgICBtX3R5cGUgPSBUeXBlU2V0OjpDb21tZW50OworICAgIH0KKworICAgIHZv
aWQgYmVnaW5ET0NUWVBFKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNl
dDo6VW5pbml0aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9IFR5cGVTZXQ6OkRPQ1RZUEU7Cisg
ICAgICAgIG1fZG9jdHlwZURhdGEgPSBhZG9wdFB0cihuZXcgRG9jdHlwZURhdGEoKSk7CisgICAg
fQorCisgICAgdm9pZCBiZWdpbkRPQ1RZUEUoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIGJlZ2luRE9DVFlQRSgpOworICAgICAgICBt
X2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KKyAgICB2b2lkIGFwcGVuZFRvQ2hhcmFjdGVyKFQgY2hhcmFjdGVycykKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6Q2hhcmFjdGVyKTsKKyAgICAgICAgbV9kYXRh
LmFwcGVuZChjaGFyYWN0ZXJzKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFRvQ29tbWVudChV
Q2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpDb21tZW50KTsKKyAgICAgICAgbV9kYXRhLmFw
cGVuZChjaGFyYWN0ZXIpOworICAgIH0KKworICAgIHZvaWQgYWRkTmV3QXR0cmlidXRlKCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6U3RhcnRUYWcgfHwgbV90eXBl
ID09IFR5cGVTZXQ6OkVuZFRhZyk7CisgICAgICAgIG1fYXR0cmlidXRlcy5ncm93KG1fYXR0cmli
dXRlcy5zaXplKCkgKyAxKTsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlID0gJm1fYXR0cmli
dXRlcy5sYXN0KCk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUt
Pm1fbmFtZVJhbmdlLm1fc3RhcnQgPSAwOworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1f
bmFtZVJhbmdlLm1fZW5kID0gMDsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVl
UmFuZ2UubV9zdGFydCA9IDA7CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJh
bmdlLm1fZW5kID0gMDsKKyNlbmRpZgorICAgIH0KKworICAgIHZvaWQgYmVnaW5BdHRyaWJ1dGVO
YW1lKGludCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFt
ZVJhbmdlLm1fc3RhcnQgPSBvZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7CisgICAgfQorCisgICAgdm9p
ZCBlbmRBdHRyaWJ1dGVOYW1lKGludCBvZmZzZXQpCisgICAgeworICAgICAgICBpbnQgaW5kZXgg
PSBvZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9u
YW1lUmFuZ2UubV9lbmQgPSBpbmRleDsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3Zh
bHVlUmFuZ2UubV9zdGFydCA9IGluZGV4OworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1f
dmFsdWVSYW5nZS5tX2VuZCA9IGluZGV4OworICAgIH0KKworICAgIHZvaWQgYmVnaW5BdHRyaWJ1
dGVWYWx1ZShpbnQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5t
X3ZhbHVlUmFuZ2UubV9zdGFydCA9IG9mZnNldCAtIG1fYmFzZU9mZnNldDsKKyNpZm5kZWYgTkRF
QlVHCisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fZW5kID0gMDsK
KyNlbmRpZgorICAgIH0KKworICAgIHZvaWQgZW5kQXR0cmlidXRlVmFsdWUoaW50IG9mZnNldCkK
KyAgICB7CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fZW5kID0g
b2Zmc2V0IC0gbV9iYXNlT2Zmc2V0OworICAgIH0KKworICAgIHZvaWQgYXBwZW5kVG9BdHRyaWJ1
dGVOYW1lKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIp
OworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9
PSBUeXBlU2V0OjpFbmRUYWcpOworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUg
dG8gYWRkIHRoZSBmb2xsb3dpbmcgQVNTRVJUIG9uY2Ugd2UgZml4CisgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjk3MQorICAgICAgICAvLyAgIEFT
U0VSVChtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fc3RhcnQpOworICAgICAgICBt
X2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAg
ICB2b2lkIGFwcGVuZFRvQXR0cmlidXRlVmFsdWUoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNl
dDo6U3RhcnRUYWcgfHwgbV90eXBlID09IFR5cGVTZXQ6OkVuZFRhZyk7CisgICAgICAgIEFTU0VS
VChtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX3N0YXJ0KTsKKyAgICAgICAgbV9j
dXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlLmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0KKworICAg
IHZvaWQgYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShzaXplX3QgaSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCghdmFsdWUuaXNFbXB0eSgpKTsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6RW5k
VGFnKTsKKyAgICAgICAgbV9hdHRyaWJ1dGVzW2ldLm1fdmFsdWUuYXBwZW5kKHZhbHVlLmNoYXJh
Y3RlcnMoKSwgdmFsdWUubGVuZ3RoKCkpOworICAgIH0KKworICAgIFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQorCisgICAgYm9vbCBzZWxmQ2xvc2luZygpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9
PSBUeXBlU2V0OjpFbmRUYWcpOworICAgICAgICByZXR1cm4gbV9zZWxmQ2xvc2luZzsKKyAgICB9
CisKKyAgICB2b2lkIHNldFNlbGZDbG9zaW5nKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gVHlwZVNldDo6U3RhcnRUYWcgfHwgbV90eXBlID09IFR5cGVTZXQ6OkVuZFRhZyk7Cisg
ICAgICAgIG1fc2VsZkNsb3NpbmcgPSB0cnVlOworICAgIH0KKworICAgIGNvbnN0IEF0dHJpYnV0
ZUxpc3QmIGF0dHJpYnV0ZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBUeXBlU2V0OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6RW5kVGFnKTsKKyAgICAg
ICAgcmV0dXJuIG1fYXR0cmlidXRlczsKKyAgICB9CisKKyAgICB2b2lkIGVyYXNlQ2hhcmFjdGVy
cygpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OkNoYXJhY3Rlcik7
CisgICAgICAgIG1fZGF0YS5jbGVhcigpOworICAgIH0KKworICAgIHZvaWQgZXJhc2VWYWx1ZU9m
QXR0cmlidXRlKHNpemVfdCBpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBl
U2V0OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6RW5kVGFnKTsKKyAgICAgICAgbV9h
dHRyaWJ1dGVzW2ldLm1fdmFsdWUuY2xlYXIoKTsKKyAgICB9CisKKyAgICBjb25zdCBEYXRhVmVj
dG9yJiBjaGFyYWN0ZXJzKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
VHlwZVNldDo6Q2hhcmFjdGVyKTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YTsKKyAgICB9CisKKyAg
ICBjb25zdCBEYXRhVmVjdG9yJiBjb21tZW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gVHlwZVNldDo6Q29tbWVudCk7CisgICAgICAgIHJldHVybiBtX2RhdGE7Cisg
ICAgfQorCisgICAgLy8gRklYTUU6IERpc3Rpbmd1aXNoIGJldHdlZW4gYSBtaXNzaW5nIHB1Ymxp
YyBpZGVudGlmZXIgYW5kIGFuIGVtcHR5IG9uZS4KKyAgICBjb25zdCBXVEY6OlZlY3RvcjxVQ2hh
cj4mIHB1YmxpY0lkZW50aWZpZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBUeXBlU2V0OjpET0NUWVBFKTsKKyAgICAgICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1f
cHVibGljSWRlbnRpZmllcjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogRGlzdGluZ3Vpc2ggYmV0
d2VlbiBhIG1pc3Npbmcgc3lzdGVtIGlkZW50aWZlciBhbmQgYW4gZW1wdHkgb25lLgorICAgIGNv
bnN0IFdURjo6VmVjdG9yPFVDaGFyPiYgc3lzdGVtSWRlbnRpZmllcigpIGNvbnN0CisgICAgewor
ICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OkRPQ1RZUEUpOworICAgICAgICByZXR1
cm4gbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyOworICAgIH0KKworICAgIHZvaWQg
c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBUeXBlU2V0OjpET0NUWVBFKTsKKyAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9o
YXNQdWJsaWNJZGVudGlmaWVyID0gdHJ1ZTsKKyAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9wdWJs
aWNJZGVudGlmaWVyLmNsZWFyKCk7CisgICAgfQorCisgICAgdm9pZCBzZXRTeXN0ZW1JZGVudGlm
aWVyVG9FbXB0eVN0cmluZygpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVT
ZXQ6OkRPQ1RZUEUpOworICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2hhc1N5c3RlbUlkZW50aWZp
ZXIgPSB0cnVlOworICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXIuY2xl
YXIoKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFRvUHVibGljSWRlbnRpZmllcihVQ2hhciBj
aGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpET0NUWVBFKTsKKyAgICAgICAgQVNTRVJUKG1fZG9jdHlw
ZURhdGEtPm1faGFzUHVibGljSWRlbnRpZmllcik7CisgICAgICAgIG1fZG9jdHlwZURhdGEtPm1f
cHVibGljSWRlbnRpZmllci5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGFw
cGVuZFRvU3lzdGVtSWRlbnRpZmllcihVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBB
U1NFUlQoY2hhcmFjdGVyKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpET0NU
WVBFKTsKKyAgICAgICAgQVNTRVJUKG1fZG9jdHlwZURhdGEtPm1faGFzU3lzdGVtSWRlbnRpZmll
cik7CisgICAgICAgIG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllci5hcHBlbmQoY2hh
cmFjdGVyKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKworI2lmbmRlZiBOREVCVUcKKyAgICB2b2lk
IHByaW50U3RyaW5nKGNvbnN0IERhdGFWZWN0b3ImIHN0cmluZykgY29uc3QKKyAgICB7CisgICAg
ICAgIERhdGFWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBzdHJpbmcuYmVnaW4oKTsKKyAg
ICAgICAgZm9yICg7IGl0ZXIgIT0gc3RyaW5nLmVuZCgpOyArK2l0ZXIpCisgICAgICAgICAgICBw
cmludGYoIiVsYyIsIHdjaGFyX3QoKml0ZXIpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBwcmlu
dEF0dHJzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHR5cGVuYW1lIEF0dHJpYnV0ZUxpc3Q6OmNv
bnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX2F0dHJpYnV0ZXMuYmVnaW4oKTsKKyAgICAgICAgZm9yICg7
IGl0ZXIgIT0gbV9hdHRyaWJ1dGVzLmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgICAgIHByaW50
ZigiICIpOworICAgICAgICAgICAgcHJpbnRTdHJpbmcoaXRlci0+bV9uYW1lKTsKKyAgICAgICAg
ICAgIHByaW50ZigiPVwiIik7CisgICAgICAgICAgICBwcmludFN0cmluZyhpdGVyLT5tX3ZhbHVl
KTsKKyAgICAgICAgICAgIHByaW50ZigiXCIiKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZiAv
LyBOREVCVUcKKworICAgIGlubGluZSB2b2lkIGFwcGVuZFRvTmFtZShVQ2hhciBjaGFyYWN0ZXIp
CisgICAgeworICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICAgICAgbV9kYXRhLmFwcGVu
ZChjaGFyYWN0ZXIpOworICAgIH0KKyAgICAKKyAgICBpbmxpbmUgY29uc3QgRGF0YVZlY3RvciYg
bmFtZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKworICAg
IC8vIEZJWE1FOiBJJ20gbm90IHN1cmUgd2hhdCB0aGUgZmluYWwgcmVsYXRpb25zaGlwIGJldHdl
ZW4gSFRNTFRva2VuIGFuZAorICAgIC8vIEF0b21pY0hUTUxUb2tlbiB3aWxsIGJlLiBJJ20gbWFy
a2luZyB0aGlzIGEgZnJpZW5kIGZvciBub3csIGJ1dCB3ZSdsbAorICAgIC8vIHdhbnQgdG8gZW5k
IHVwIHdpdGggYSBjbGVhbmVyIGludGVyZmFjZSBiZXR3ZWVuIHRoZSB0d28gY2xhc3Nlcy4KKyAg
ICBmcmllbmQgY2xhc3MgQXRvbWljSFRNTFRva2VuOworCisgICAgVHlwZSBtX3R5cGU7CisgICAg
UmFuZ2UgbV9yYW5nZTsgLy8gQWx3YXlzIHN0YXJ0cyBhdCB6ZXJvLgorICAgIGludCBtX2Jhc2VP
ZmZzZXQ7CisgICAgRGF0YVZlY3RvciBtX2RhdGE7CisKKyAgICAvLyBGb3IgRE9DVFlQRQorICAg
IE93blB0cjxEb2N0eXBlRGF0YT4gbV9kb2N0eXBlRGF0YTsKKworICAgIC8vIEZvciBTdGFydFRh
ZyBhbmQgRW5kVGFnCisgICAgYm9vbCBtX3NlbGZDbG9zaW5nOworICAgIEF0dHJpYnV0ZUxpc3Qg
bV9hdHRyaWJ1dGVzOworCisgICAgLy8gQSBwb2ludGVyIGludG8gbV9hdHRyaWJ1dGVzIHVzZWQg
ZHVyaW5nIGxleGluZy4KKyAgICBBdHRyaWJ1dGUqIG1fY3VycmVudEF0dHJpYnV0ZTsKK307CisK
K30KKworI2VuZGlmIC8vIE1hcmt1cFRva2VuQmFzZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TFRva2VuLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q0NzM3NmZmYWNkZTRlYjdlZTZjMGVjODg0MzBkNGYxYjQ2
OWZkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9r
ZW4uaApAQCAtMCwwICsxLDMzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUs
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgWE1MVG9rZW5faAorI2RlZmluZSBYTUxUb2tlbl9oCisKKyNp
bmNsdWRlICJNYXJrdXBUb2tlbkJhc2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBYTUxUb2tlblR5cGVzIHsKK3B1YmxpYzoKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBVbmlu
aXRpYWxpemVkLAorICAgICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24sCisgICAgICAgIFhNTERl
Y2xhcmF0aW9uLAorICAgICAgICBET0NUWVBFLAorICAgICAgICBBdHRyaWJ1dGVMaXN0RGVjbGFy
YXRpb24sCisgICAgICAgIEVsZW1lbnREZWNsYXJhdGlvbiwKKyAgICAgICAgRW50aXR5RGVjbGFy
YXRpb24sCisgICAgICAgIENEQVRBLAorICAgICAgICBTdGFydFRhZywKKyAgICAgICAgRW5kVGFn
LAorICAgICAgICBDb21tZW50LAorICAgICAgICBDaGFyYWN0ZXIsCisgICAgICAgIEVudGl0eSwK
KyAgICAgICAgRW5kT2ZGaWxlLAorICAgIH07Cit9OworCitjbGFzcyBYTUxUb2tlbiA6IHB1Ymxp
YyBNYXJrdXBUb2tlbkJhc2U8WE1MVG9rZW5UeXBlcz4geworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFhNTFRva2VuKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgTWFya3VwVG9rZW5CYXNlPFhN
TFRva2VuVHlwZXM+OjpjbGVhcigpOworICAgICAgICBtX3RhcmdldC5jbGVhcigpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGFwcGVuZFRvTmFtZShVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAg
ICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9
PSBYTUxUb2tlblR5cGVzOjpFbmRUYWcgfHwgbV90eXBlID09IFhNTFRva2VuVHlwZXM6OkRPQ1RZ
UEUgfHwgbV90eXBlID09IFhNTFRva2VuVHlwZXM6OkVudGl0eSk7CisgICAgICAgIE1hcmt1cFRv
a2VuQmFzZTxYTUxUb2tlblR5cGVzPjo6YXBwZW5kVG9OYW1lKGNoYXJhY3Rlcik7CisgICAgfQor
ICAgIAorICAgIGNvbnN0IERhdGFWZWN0b3ImIG5hbWUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gWE1M
VG9rZW5UeXBlczo6RW5kVGFnIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpET0NUWVBFIHx8
IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpFbnRpdHkpOworICAgICAgICByZXR1cm4gTWFya3Vw
VG9rZW5CYXNlPFhNTFRva2VuVHlwZXM+OjpuYW1lKCk7CisgICAgfQorCisgICAgdm9pZCBiZWdp
bkRPQ1RZUEUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVz
OjpVbmluaXRpYWxpemVkKTsKKyAgICAgICAgbV90eXBlID0gWE1MVG9rZW5UeXBlczo6RE9DVFlQ
RTsKKyAgICAgICAgbV9kb2N0eXBlRGF0YSA9IGFkb3B0UHRyKG5ldyBEb2N0eXBlRGF0YSgpKTsK
KyAgICB9CisKKyAgICB2b2lkIGJlZ2luRE9DVFlQRShVQ2hhciBjaGFyYWN0ZXIpCisgICAgewor
ICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICAgICAgYmVnaW5ET0NUWVBFKCk7CisgICAg
ICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luWE1M
RGVjbGFyYXRpb24oKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5
cGVzOjpVbmluaXRpYWxpemVkKTsKKyAgICAgICAgbV90eXBlID0gWE1MVG9rZW5UeXBlczo6WE1M
RGVjbGFyYXRpb247CisgICAgICAgIG1feG1sRGVjbGFyYXRpb25EYXRhID0gYWRvcHRQdHIobmV3
IFhNTERlY2xhcmF0aW9uRGF0YSgpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhcHBlbmRUb1hN
TFZlcnNpb24oVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3Rl
cik7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6WE1MRGVjbGFyYXRp
b24pOworICAgICAgICBBU1NFUlQobV94bWxEZWNsYXJhdGlvbkRhdGEpOworICAgICAgICBtX3ht
bERlY2xhcmF0aW9uRGF0YS0+bV92ZXJzaW9uLmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0KKwor
ICAgIHZvaWQgYmVnaW5YTUxFbmNvZGluZyhVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAg
ICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5
cGVzOjpYTUxEZWNsYXJhdGlvbik7CisgICAgICAgIEFTU0VSVChtX3htbERlY2xhcmF0aW9uRGF0
YSk7CisgICAgICAgIG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX2hhc0VuY29kaW5nID0gdHJ1ZTsK
KyAgICAgICAgbV94bWxEZWNsYXJhdGlvbkRhdGEtPm1fZW5jb2RpbmcuYXBwZW5kKGNoYXJhY3Rl
cik7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRUb1hNTEVuY29kaW5nKFVDaGFyIGNoYXJhY3Rl
cikKKyAgICB7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgICAgICBBU1NFUlQobV90
eXBlID09IFhNTFRva2VuVHlwZXM6OlhNTERlY2xhcmF0aW9uKTsKKyAgICAgICAgQVNTRVJUKG1f
eG1sRGVjbGFyYXRpb25EYXRhKTsKKyAgICAgICAgQVNTRVJUKG1feG1sRGVjbGFyYXRpb25EYXRh
LT5tX2hhc0VuY29kaW5nKTsKKyAgICAgICAgbV94bWxEZWNsYXJhdGlvbkRhdGEtPm1fZW5jb2Rp
bmcuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgdm9pZCBzZXRYTUxTdGFuZGFsb25l
KGJvb2wgc3RhbmRhbG9uZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9r
ZW5UeXBlczo6WE1MRGVjbGFyYXRpb24pOworICAgICAgICBBU1NFUlQobV94bWxEZWNsYXJhdGlv
bkRhdGEpOworICAgICAgICBtX3htbERlY2xhcmF0aW9uRGF0YS0+bV9oYXNTdGFuZGFsb25lID0g
dHJ1ZTsKKyAgICAgICAgbV94bWxEZWNsYXJhdGlvbkRhdGEtPm1fc3RhbmRhbG9uZSA9IHN0YW5k
YWxvbmU7CisgICAgfQorCisgICAgdm9pZCBiZWdpblByb2Nlc3NpbmdJbnN0cnVjdGlvbigpCisg
ICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6
ZWQpOworICAgICAgICBtX3R5cGUgPSBYTUxUb2tlblR5cGVzOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b247CisgICAgfQorCisgICAgdm9pZCBiZWdpblByb2Nlc3NpbmdJbnN0cnVjdGlvbihVQ2hhciBj
aGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICAgICAgYmVn
aW5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oKTsKKyAgICAgICAgbV90YXJnZXQuYXBwZW5kKGNoYXJh
Y3Rlcik7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRUb1Byb2Nlc3NpbmdJbnN0cnVjdGlvblRh
cmdldChVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFhN
TFRva2VuVHlwZXM6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbik7CisgICAgICAgIEFTU0VSVChjaGFy
YWN0ZXIpOworICAgICAgICBtX3RhcmdldC5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAg
ICB2b2lkIGFwcGVuZFRvUHJvY2Vzc2luZ0luc3RydWN0aW9uRGF0YShVQ2hhciBjaGFyYWN0ZXIp
CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlByb2Nlc3Np
bmdJbnN0cnVjdGlvbik7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgICAgICBtX2Rh
dGEuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgdm9pZCBiZWdpbkNEQVRBKCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXpl
ZCk7CisgICAgICAgIG1fdHlwZSA9IFhNTFRva2VuVHlwZXM6OkNEQVRBOworICAgIH0KKworICAg
IHZvaWQgYXBwZW5kVG9DREFUQShVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NF
UlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OkNEQVRBKTsKKyAgICAgICAgQVNTRVJUKGNoYXJh
Y3Rlcik7CisgICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB2
b2lkIGJlZ2luRW50aXR5KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9r
ZW5UeXBlczo6VW5pbml0aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9IFhNTFRva2VuVHlwZXM6
OkVudGl0eTsKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luRW50aXR5KFVDaGFyIGNoYXJhY3RlcikK
KyAgICB7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgICAgICBiZWdpbkVudGl0eSgp
OworICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisjaWZuZGVmIE5E
RUJVRworICAgIHZvaWQgcHJpbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX3R5
cGUpIHsKKyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkOgorICAgICAg
ICAgICAgcHJpbnRmKCJVTklUSUFMSVpFRCIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBYTUxUb2tlblR5cGVzOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246CisgICAgICAgICAg
ICBwcmludGYoIlByb2Nlc3NpbmdJbnN0cnVjdGlvbjogIik7CisgICAgICAgICAgICBwcmludGYo
Ijw/Iik7CisgICAgICAgICAgICBwcmludFN0cmluZyhtX3RhcmdldCk7CisgICAgICAgICAgICBw
cmludGYoIiAiKTsKKyAgICAgICAgICAgIHByaW50U3RyaW5nKG1fZGF0YSk7CisgICAgICAgICAg
ICBwcmludGYoIj8+Iik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFhNTFRv
a2VuVHlwZXM6OlhNTERlY2xhcmF0aW9uOgorICAgICAgICAgICAgcHJpbnRmKCJYTUwgRGVjbGFy
YXRpb246ICIpOworICAgICAgICAgICAgcHJpbnRmKCI8P3htbCB2ZXJzaW9uPVwiIik7CisgICAg
ICAgICAgICBBU1NFUlQobV94bWxEZWNsYXJhdGlvbkRhdGEpOworICAgICAgICAgICAgcHJpbnRT
dHJpbmcobV94bWxEZWNsYXJhdGlvbkRhdGEtPm1fdmVyc2lvbik7CisgICAgICAgICAgICBwcmlu
dGYoIlwiIik7CisgICAgICAgICAgICBpZiAobV94bWxEZWNsYXJhdGlvbkRhdGEtPm1faGFzRW5j
b2RpbmcpIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIiBlbmNvZGluZz1cIiIpOworICAgICAg
ICAgICAgICAgIHByaW50U3RyaW5nKG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX2VuY29kaW5nKTsK
KyAgICAgICAgICAgICAgICBwcmludGYoIlwiIik7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAobV94bWxEZWNsYXJhdGlvbkRhdGEtPm1faGFzU3RhbmRhbG9uZSkKKyAgICAgICAgICAg
ICAgICBwcmludGYoIiBzdGFuZGFsb25lPVwiJXNcIiIsIG1feG1sRGVjbGFyYXRpb25EYXRhLT5t
X3N0YW5kYWxvbmUgPyAieWVzIiA6ICJubyIpOworICAgICAgICAgICAgcHJpbnRmKCI/PiIpOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpET0NUWVBF
OgorICAgICAgICAgICAgcHJpbnRmKCJET0NUWVBFOiAiKTsKKyAgICAgICAgICAgIEFTU0VSVCht
X2RvY3R5cGVEYXRhKTsKKyAgICAgICAgICAgIHByaW50ZigiPCFET0NUWVBFICIpOworICAgICAg
ICAgICAgcHJpbnRTdHJpbmcobV9kYXRhKTsKKyAgICAgICAgICAgIGlmIChtX2RvY3R5cGVEYXRh
LT5tX2hhc1B1YmxpY0lkZW50aWZpZXIpIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIiBQVUJM
SUMgXCIiKTsKKyAgICAgICAgICAgICAgICBwcmludFN0cmluZyhtX2RvY3R5cGVEYXRhLT5tX3B1
YmxpY0lkZW50aWZpZXIpOworICAgICAgICAgICAgICAgIHByaW50ZigiXCIiKTsKKyAgICAgICAg
ICAgICAgICBpZiAobV9kb2N0eXBlRGF0YS0+bV9oYXNTeXN0ZW1JZGVudGlmaWVyKSB7CisgICAg
ICAgICAgICAgICAgICAgIHByaW50ZigiIFwiIik7CisgICAgICAgICAgICAgICAgICAgIHByaW50
U3RyaW5nKG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllcik7CisgICAgICAgICAgICAg
ICAgICAgIHByaW50ZigiXCIiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVs
c2UgaWYgKG1fZG9jdHlwZURhdGEtPm1faGFzU3lzdGVtSWRlbnRpZmllcikgeworICAgICAgICAg
ICAgICAgIHByaW50ZigiIFNZU1RFTSBcIiIpOworICAgICAgICAgICAgICAgIHByaW50U3RyaW5n
KG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgcHJp
bnRmKCJcIiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJpbnRmKCI+Iik7CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkF0dHJpYnV0ZUxp
c3REZWNsYXJhdGlvbjoKKyAgICAgICAgICAgIHByaW50ZigiQXR0cmlidXRlIExpc3Q6ICIpOwor
ICAgICAgICAgICAgcHJpbnRmKCI8IUFUVExJU1Q+Iik7CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkVsZW1lbnREZWNsYXJhdGlvbjoKKyAgICAgICAg
ICAgIHByaW50ZigiRWxlbWVudCBEZWNsYXJhdGlvbjogIik7CisgICAgICAgICAgICBwcmludGYo
IjwhRUxFTUVOVD4iKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgWE1MVG9r
ZW5UeXBlczo6RW50aXR5RGVjbGFyYXRpb246CisgICAgICAgICAgICBwcmludGYoIkVudGl0eSBE
ZWNsYXJhdGlvbjogIik7CisgICAgICAgICAgICBwcmludGYoIjwhRU5USVRZPiIpOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpDREFUQToKKyAgICAg
ICAgICAgIHByaW50ZigiQ0RBVEE6ICIpOworICAgICAgICAgICAgcHJpbnRmKCI8IVtDREFUQVsi
KTsKKyAgICAgICAgICAgIHByaW50U3RyaW5nKG1fZGF0YSk7CisgICAgICAgICAgICBwcmludGYo
Il1dPiIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVz
OjpTdGFydFRhZzoKKyAgICAgICAgICAgIHByaW50ZigiU3RhcnQgVGFnOiAiKTsKKyAgICAgICAg
ICAgIHByaW50ZigiPCIpOworICAgICAgICAgICAgcHJpbnRTdHJpbmcobV9kYXRhKTsKKyAgICAg
ICAgICAgIHByaW50QXR0cnMoKTsKKyAgICAgICAgICAgIGlmIChzZWxmQ2xvc2luZygpKQorICAg
ICAgICAgICAgICAgIHByaW50ZigiLyIpOworICAgICAgICAgICAgcHJpbnRmKCI+Iik7CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkVuZFRhZzoKKyAg
ICAgICAgICAgIHByaW50ZigiRW5kIFRhZzogIik7CisgICAgICAgICAgICBwcmludGYoIjwvIik7
CisgICAgICAgICAgICBwcmludFN0cmluZyhtX2RhdGEpOworICAgICAgICAgICAgcHJpbnRmKCI+
Iik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkNv
bW1lbnQ6CisgICAgICAgICAgICBwcmludGYoIkNvbW1lbnQ6ICIpOworICAgICAgICAgICAgcHJp
bnRmKCI8IS0tIik7CisgICAgICAgICAgICBwcmludFN0cmluZyhtX2RhdGEpOworICAgICAgICAg
ICAgcHJpbnRmKCItLT4iKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgWE1M
VG9rZW5UeXBlczo6Q2hhcmFjdGVyOgorICAgICAgICAgICAgcHJpbnRmKCJDaGFyYWN0ZXJzOiAi
KTsKKyAgICAgICAgICAgIHByaW50U3RyaW5nKG1fZGF0YSk7CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkVudGl0eToKKyAgICAgICAgICAgIHByaW50
ZigiRW50aXR5OiAiKTsKKyAgICAgICAgICAgIHByaW50ZigiJiIpOworICAgICAgICAgICAgcHJp
bnRTdHJpbmcobV9kYXRhKTsKKyAgICAgICAgICAgIHByaW50ZigiOyIpOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpFbmRPZkZpbGU6CisgICAgICAg
ICAgICBwcmludGYoIkVPRiIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAg
ICAgICBwcmludGYoIlxuIik7CisgICAgfQorI2VuZGlmIC8vIE5ERUJVRworCitwcml2YXRlOgor
ICAgIHR5cGVkZWYgQmFzZURvY3R5cGVEYXRhIERvY3R5cGVEYXRhOworCisgICAgY2xhc3MgWE1M
RGVjbGFyYXRpb25EYXRhIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoWE1MRGVjbGFy
YXRpb25EYXRhKTsKKyAgICBwdWJsaWM6CisgICAgICAgIFhNTERlY2xhcmF0aW9uRGF0YSgpCisg
ICAgICAgICAgICA6IG1faGFzU3RhbmRhbG9uZShmYWxzZSkKKyAgICAgICAgICAgICwgbV9oYXNF
bmNvZGluZyhmYWxzZSkKKyAgICAgICAgICAgICwgbV9zdGFuZGFsb25lKGZhbHNlKQorICAgICAg
ICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgbV9oYXNTdGFuZGFsb25lOwor
ICAgICAgICBib29sIG1faGFzRW5jb2Rpbmc7CisgICAgICAgIGJvb2wgbV9zdGFuZGFsb25lOwor
ICAgICAgICBXVEY6OlZlY3RvcjxVQ2hhcj4gbV9lbmNvZGluZzsKKyAgICAgICAgV1RGOjpWZWN0
b3I8VUNoYXI+IG1fdmVyc2lvbjsKKyAgICB9OworCisgICAgLy8gInRhcmdldCIgZm9yIFByb2Nl
c3NpbmdJbnN0cnVjdGlvbgorICAgIERhdGFWZWN0b3IgbV90YXJnZXQ7CisgICAgCisgICAgLy8g
Rm9yIFhNTCBEZWNsYXJhdGlvbgorICAgIE93blB0cjxYTUxEZWNsYXJhdGlvbkRhdGE+IG1feG1s
RGVjbGFyYXRpb25EYXRhOworfTsKKworfQorCisjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>