<?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>43618</bug_id>
          
          <creation_ts>2010-08-06 04:50:08 -0700</creation_ts>
          <short_desc>Generalize SVGPathParser to allow more than just strings as input source</short_desc>
          <delta_ts>2010-08-06 23:27:54 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>261197</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-06 04:50:08 -0700</bug_when>
    <thetext>Refactor SVGPathParser to transform different sources into different SVGPathConsumer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261206</commentid>
    <comment_count>1</comment_count>
      <attachid>63715</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-06 05:19:32 -0700</bug_when>
    <thetext>Created attachment 63715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261238</commentid>
    <comment_count>2</comment_count>
      <attachid>63719</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-06 07:13:14 -0700</bug_when>
    <thetext>Created attachment 63719
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261246</commentid>
    <comment_count>3</comment_count>
      <attachid>63719</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-06 07:35:17 -0700</bug_when>
    <thetext>Comment on attachment 63719
Patch

Looks like you&apos;re almost there, a small design problem remains:

The SVGPathSource passed to parsePathDataFromSource, is stored in an OwnPtr in SVGPathParser. As SVGPathParser is a static object in SVGPathParserFactory, no one will delete the SVGPathSource.
How about changing the design a little, by storing a SVGPathSource* pointer in SVGPathParser, just like it&apos;s done for SVGPathConsumer, plus a new setCurrentSource(SVGPathSource*) method.

Then you&apos;d only need to modify SVGPathParserFactory, from:
bool ok = parser-&gt;parsePathDataFromSource(SVGPathStringSource::create(d), NormalizedParsing);

to:
OwnPtr&lt;SVGPathSource&gt; source = SVGPathStringSource::create(d);
bool ok = parser-&gt;parsePathDataFromSource(source, NormalizedParsing);
...

This way it&apos;s guaranteed that source is going to die, after the build* methods are finished.

Some const issues:
WebCore/svg/SVGPathSource.h:32
 +      virtual bool hasMoreData() = 0;
This should be const.

WebCore/svg/SVGPathSource.h:35
 +      virtual bool moveToNextToken() = 0;
Ditto.

WebCore/svg/SVGPathSource.h:36
 +      virtual SVGPathSegType parseSVGSegmentType() = 0;
for consistency, it should be:
virtual bool parseSVGSegmentType(SVGPathSegType&amp; result) = 0;

WebCore/svg/SVGPathSource.h:37
 +      virtual SVGPathSegType nextCommand(SVGPathSegType) = 0;
maybe write &apos;previousCommand&apos; as parameter name?

WebCore/svg/SVGPathStringSource.cpp:111
 +      if ((*m_current == &apos;+&apos; || *m_current == &apos;-&apos; || *m_current == &apos;.&apos; || (*m_current &gt;= &apos;0&apos; &amp;&amp; *m_current &lt;= &apos;9&apos;))
Useless outer brace.

Other than these small issues, it looks great! Looking forward to the bytestream patches :-)
Not setting r- officially, as you wanted me to wait for EWS results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261247</commentid>
    <comment_count>4</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-06 07:36:31 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 63719 [details])
&gt; Looks like you&apos;re almost there, a small design problem remains:
&gt; 
&gt; The SVGPathSource passed to parsePathDataFromSource, is stored in an OwnPtr in SVGPathParser. As SVGPathParser is a static object in SVGPathParserFactory, no one will delete the SVGPathSource.
&gt; How about changing the design a little, by storing a SVGPathSource* pointer in SVGPathParser, just like it&apos;s done for SVGPathConsumer, plus a new setCurrentSource(SVGPathSource*) method.
&gt; 
&gt; Then you&apos;d only need to modify SVGPathParserFactory, from:
&gt; bool ok = parser-&gt;parsePathDataFromSource(SVGPathStringSource::create(d), NormalizedParsing);
&gt; 
&gt; to:
&gt; OwnPtr&lt;SVGPathSource&gt; source = SVGPathStringSource::create(d);
&gt; bool ok = parser-&gt;parsePathDataFromSource(source, NormalizedParsing);
&gt; ...

ops, i wanted to write:
OwnPtr&lt;SVGPathSource&gt; source = SVGPathStringSource::create(d);
parser-&gt;setCurrentSource(source.get());
bool ok = parser-&gt;parsePathData(NormalizedParsing);
...

sorry :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261252</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-06 07:49:57 -0700</bug_when>
    <thetext>Attachment 63719 did not build on mac:
Build output: http://queues.webkit.org/results/3669014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261260</commentid>
    <comment_count>6</comment_count>
      <attachid>63719</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-06 08:01:41 -0700</bug_when>
    <thetext>Comment on attachment 63719
Patch

No idea, why the mac build failed. Dirk, you might want to redo the Xcode updates? Do you have access to a mac?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261297</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-06 09:29:20 -0700</bug_when>
    <thetext>&gt;  +      if ((*m_current == &apos;+&apos; || *m_current == &apos;-&apos; || *m_current == &apos;.&apos; || (*m_current &gt;= &apos;0&apos; &amp;&amp; *m_current &lt;= &apos;9&apos;))
&gt; Useless outer brace.
maybe for (*m_current &gt;= &apos;0&apos; &amp;&amp; *m_current &lt;= &apos;9&apos;), but not the outer braces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261518</commentid>
    <comment_count>8</comment_count>
      <attachid>63768</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-06 15:16:25 -0700</bug_when>
    <thetext>Created attachment 63768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261521</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-06 15:19:59 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 63719 [details])
&gt; Looks like you&apos;re almost there, a small design problem remains:
&gt; 
&gt; The SVGPathSource passed to parsePathDataFromSource, is stored in an OwnPtr in SVGPathParser. As SVGPathParser is a static object in SVGPathParserFactory, no one will delete the SVGPathSource.
&gt; How about changing the design a little, by storing a SVGPathSource* pointer in SVGPathParser, just like it&apos;s done for SVGPathConsumer, plus a new setCurrentSource(SVGPathSource*) method.
&gt; 
done.

&gt; 
&gt; This way it&apos;s guaranteed that source is going to die, after the build* methods are finished.
&gt; 
&gt; Some const issues:
&gt; WebCore/svg/SVGPathSource.h:32
&gt;  +      virtual bool hasMoreData() = 0;
&gt; This should be const.
done.

&gt; 
&gt; WebCore/svg/SVGPathSource.h:35
&gt;  +      virtual bool moveToNextToken() = 0;
&gt; Ditto.
moveToNextToken is base uppon skipOptionalSpaces, can&apos;t const it.

&gt; 
&gt; WebCore/svg/SVGPathSource.h:36
&gt;  +      virtual SVGPathSegType parseSVGSegmentType() = 0;
&gt; for consistency, it should be:
&gt; virtual bool parseSVGSegmentType(SVGPathSegType&amp; result) = 0;
done

&gt; 
&gt; WebCore/svg/SVGPathSource.h:37
&gt;  +      virtual SVGPathSegType nextCommand(SVGPathSegType) = 0;
&gt; maybe write &apos;previousCommand&apos; as parameter name?
done

&gt; 
&gt; WebCore/svg/SVGPathStringSource.cpp:111
&gt;  +      if ((*m_current == &apos;+&apos; || *m_current == &apos;-&apos; || *m_current == &apos;.&apos; || (*m_current &gt;= &apos;0&apos; &amp;&amp; *m_current &lt;= &apos;9&apos;))
&gt; Useless outer brace.
done

Builds on Mac for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261667</commentid>
    <comment_count>10</comment_count>
      <attachid>63806</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-06 22:43:02 -0700</bug_when>
    <thetext>Created attachment 63806
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261672</commentid>
    <comment_count>11</comment_count>
      <attachid>63806</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-06 23:12:11 -0700</bug_when>
    <thetext>Comment on attachment 63806
Patch

r=me, some minor nitpicks before you land:

WebCore/ChangeLog:12
 +          Moved the SVGPathSegType enumeration from SVGPathSeg class for a common use across
Moved the SVGPathSegType enum from SVGPathSeg class in WebCore namespace, for easier access throughout the SVG code.

WebCore/ChangeLog:15
 +          No new tests added.
Doesn&apos;t affect any tests, sounds better, creates less worries :-)

WebCore/svg/SVGPathParser.cpp:320
 +      ASSERT(m_source);
Also add ASSERT(m_consumer) here.

WebCore/svg/SVGPathParser.h:44
 +      void setCurrentSource(SVGPathSource* source) { m_source = source;}
Space should be added before ned brace.

WebCore/svg/SVGPathStringSource.cpp:131
 +      if ((*m_current == &apos;+&apos; || *m_current == &apos;-&apos; || *m_current == &apos;.&apos; || *m_current &gt;= &apos;0&apos; &amp;&amp; *m_current &lt;= &apos;9&apos;)

Ah,  I misread before, didn&apos;t see there was another statement on the next line. Please readd the braces around *m_current &gt;= &apos;0&apos; ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261673</commentid>
    <comment_count>12</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-06 23:27:54 -0700</bug_when>
    <thetext>Committed r64898: &lt;http://trac.webkit.org/changeset/64898&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63715</attachid>
            <date>2010-08-06 05:19:32 -0700</date>
            <delta_ts>2010-08-06 07:13:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43618-20100806141930.patch</filename>
            <type>text/plain</type>
            <size>90165</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDgzNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTA3IEBACisyMDEwLTA4LTA2ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVm
YWN0b3IgU1ZHUGF0aFBhcnNlciB0byB0cmFuc2Zvcm0gZGlmZmVyZW50IHNvdXJjZXMgaW50byBk
aWZmZXJlbnQgU1ZHUGF0aENvbnN1bWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00MzYxOAorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQor
CisgICAgICAgICogQW5kcm9pZC5tazoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogc3ZnL1NWR0FsbEluT25lLmNw
cDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyk6CisgICAgICAg
ICogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVNb3Rpb25FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICog
c3ZnL1NWR0dseXBoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVBhdGhEYXRh
KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUGF0aEJ1aWxkZXI6OlNWR1BhdGhCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dGhCdWlsZGVyOjptb3ZlVG8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJ1aWxkZXI6Omxp
bmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnVpbGRlcjo6Y3VydmVUb0N1YmljKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCdWlsZGVyOjpjbG9zZVBhdGgpOgorICAgICAgICAq
IHN2Zy9TVkdQYXRoQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJ1aWxkZXI6
OnNldEN1cnJlbnRQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCdWlsZGVyOjphcmNU
byk6CisgICAgICAgICogc3ZnL1NWR1BhdGhDb25zdW1lci5oOgorICAgICAgICAqIHN2Zy9TVkdQ
YXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OlNWR1BhdGhQYXJzZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aFBhcnNlcjo6cGFyc2VDbG9zZVBhdGhTZWdtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhQYXJzZXI6OnBhcnNlTW92ZVRvU2VnbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXRoUGFyc2VyOjpwYXJzZUxpbmVUb1NlZ21lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGF0aFBhcnNlcjo6cGFyc2VMaW5lVG9Ib3Jpem9udGFsU2VnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoUGFyc2VyOjpwYXJzZUxpbmVUb1ZlcnRpY2FsU2VnbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2VyOjpwYXJzZUN1cnZlVG9DdWJpY1NlZ21lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6cGFyc2VDdXJ2ZVRvQ3ViaWNTbW9v
dGhTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OnBhcnNlQ3VydmVU
b1F1YWRyYXRpY1NlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6cGFy
c2VDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YXRoUGFyc2VyOjpwYXJzZUFyY1RvU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
UGFyc2VyOjpwYXJzZVBhdGhEYXRhRnJvbVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YXRoUGFyc2VyOjpkZWNvbXBvc2VBcmNUb0N1YmljKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFBh
cnNlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6c2V0Q3VycmVudENvbnN1
bWVyKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Omdsb2JhbFNWR1BhdGhCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
Omdsb2JhbFNWR1BhdGhTZWdMaXN0QnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpnbG9iYWxT
VkdQYXRoUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXJGYWN0b3J5Ojpz
ZWxmKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXJGYWN0b3J5OjpTVkdQYXRoUGFy
c2VyRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2VyRmFjdG9yeTo6flNW
R1BhdGhQYXJzZXJGYWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXJGYWN0
b3J5OjpidWlsZFBhdGhGcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJz
ZXJGYWN0b3J5OjpidWlsZFNWR1BhdGhTZWdMaXN0RnJvbVN0cmluZyk6CisgICAgICAgICogc3Zn
L1NWR1BhdGhQYXJzZXJGYWN0b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2Vn
Lmg6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZzo6
flNWR1BhdGhTZWcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZzo6KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdGhTZWc6OnBhdGhTZWdUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BhdGhTZWc6OnBhdGhTZWdUeXBlQXNMZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aFNlZzo6dG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZzo6YXNzb2NpYXRl
ZEF0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZzo6U1ZHUGF0aFNl
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnU2luZ2xlQ29vcmQ6OlNWR1BhdGhTZWdT
aW5nbGVDb29yZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnU2luZ2xlQ29vcmQ6OnNl
dFgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ1NpbmdsZUNvb3JkOjp4KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdTaW5nbGVDb29yZDo6c2V0WSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXRoU2VnU2luZ2xlQ29vcmQ6OnkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aFNlZ1NpbmdsZUNvb3JkOjp0b1N0cmluZyk6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0OjpnZXRQYXRoU2VnQXRMZW5n
dGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3Q6OnRvUGF0aERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3Q6OmNyZWF0ZUFuaW1hdGVkKToKKyAgICAgICAg
KiBzdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dGhTZWdMaXN0QnVpbGRlcjo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6bW92ZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BhdGhTZWdMaXN0QnVpbGRlcjo6bGluZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhT
ZWdMaXN0QnVpbGRlcjo6Y3VydmVUb0N1YmljKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhT
ZWdMaXN0QnVpbGRlcjo6Y3VydmVUb0N1YmljU21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BhdGhTZWdMaXN0QnVpbGRlcjo6Y3VydmVUb1F1YWRyYXRpYyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWNTbW9vdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjphcmNUbyk6CisgICAgICAgICogc3Zn
L1NWR1BhdGhTZWdMaXN0QnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xp
c3RCdWlsZGVyOjpzZXRDdXJyZW50U1ZHUGF0aFNlZ0xpc3QpOgorICAgICAgICAqIHN2Zy9TVkdQ
YXRoU291cmNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNvdXJjZTo6flNW
R1BhdGhTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNvdXJjZTo6U1ZHUGF0aFNv
dXJjZSk6CisgICAgICAgICogc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdTb3VyY2U6OlNWR1BhdGhTdHJpbmdTb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ1NvdXJjZTo6flNWR1BhdGhTdHJpbmdT
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ1NvdXJjZTo6ZW5kT2ZTdHJl
YW0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VGbG9hdCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUZsYWcpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ1NvdXJjZTo6c2tpcFNwYWNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZVNWR1NlZ21lbnRUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdTb3VyY2U6Omhhc1JlbWFpbmluZ0Nvb3JkaW5h
dGVzSW5DdXJyZW50Q29tbWFuZCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2Uu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nU291cmNlOjpjcmVhdGUp
OgorCiAyMDEwLTA4LTA2ICBEdW1pdHJ1IERhbmlsaXVjICA8ZHVtaUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYkNvcmUvQW5kcm9pZC5t
awo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0FuZHJvaWQubWsJKHJldmlzaW9uIDY0Nzg4KQorKysg
V2ViQ29yZS9BbmRyb2lkLm1rCSh3b3JraW5nIGNvcHkpCkBAIC04NjUsNiArODY1LDcgQEAgTE9D
QUxfU1JDX0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJc3ZnL1NWR1BhdGhCdWlsZGVy
LmNwcCBcCiAJc3ZnL1NWR1BhdGhFbGVtZW50LmNwcCBcCiAJc3ZnL1NWR1BhdGhQYXJzZXIuY3Bw
IFwKKwlzdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwIFwKIAlzdmcvU1ZHUGF0aFNlZ0FyYy5j
cHAgXAogCXN2Zy9TVkdQYXRoU2VnQ2xvc2VQYXRoLmNwcCBcCiAJc3ZnL1NWR1BhdGhTZWdDdXJ2
ZXRvQ3ViaWMuY3BwIFwKQEAgLTg3Nyw2ICs4NzgsNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChM
T0NBTF9TUkNfRklMRVMpIFwKIAlzdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwIFwKIAlzdmcvU1ZHUGF0
aFNlZ0xpc3RCdWlsZGVyLmNwcCBcCiAJc3ZnL1NWR1BhdGhTZWdNb3ZldG8uY3BwIFwKKwlzdmcv
U1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAgXAogCXN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAgXAog
CXN2Zy9TVkdQb2ludExpc3QuY3BwIFwKIAlzdmcvU1ZHUG9seUVsZW1lbnQuY3BwIFwKSW5kZXg6
IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQkocmV2aXNpb24gNjQ3ODgpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5n
IGNvcHkpCkBAIC00MDUzLDYgKzQwNTMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNv
cmUvc3ZnL1NWR1BhdGhFbGVtZW50LmggXAogCVdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIuY3Bw
IFwKIAlXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmggXAorCVdlYkNvcmUvc3ZnL1NWR1BhdGhQ
YXJzZXJGYWN0b3J5LmNwcCBcCisJV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuaCBc
CiAJV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZy5oIFwKIAlXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQXJj
LmNwcCBcCiAJV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0FyYy5oIFwKQEAgLTQwNzgsNiArNDA4MCw5
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWls
ZGVyLmggXAogCVdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdNb3ZldG8uY3BwIFwKIAlXZWJDb3JlL3N2
Zy9TVkdQYXRoU2VnTW92ZXRvLmggXAorCVdlYkNvcmUvc3ZnL1NWR1BhdGhTb3VyY2UuaCBcCisJ
V2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAgXAorCVdlYkNvcmUvc3ZnL1NWR1Bh
dGhTdHJpbmdTb3VyY2UuaCBcCiAJV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwIFwK
IAlXZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oIFwKIAlXZWJDb3JlL3N2Zy9TVkdQb2lu
dExpc3QuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA2NDc4OCkKKysrIFdlYkNvcmUvV2ViQ29yZS5n
eXBpCSh3b3JraW5nIGNvcHkpCkBAIC0zODA3LDYgKzM4MDcsOCBAQAogICAgICAgICAgICAgJ3N2
Zy9TVkdQYXRoRWxlbWVudC5oJywKICAgICAgICAgICAgICdzdmcvU1ZHUGF0aFBhcnNlci5jcHAn
LAogICAgICAgICAgICAgJ3N2Zy9TVkdQYXRoUGFyc2VyLmgnLAorICAgICAgICAgICAgJ3N2Zy9T
VkdQYXRoUGFyc2VyRmFjdG9yeS5jcHAnLAorICAgICAgICAgICAgJ3N2Zy9TVkdQYXRoUGFyc2Vy
RmFjdG9yeS5oJywKICAgICAgICAgICAgICdzdmcvU1ZHUGF0aFNlZy5oJywKICAgICAgICAgICAg
ICdzdmcvU1ZHUGF0aFNlZ0FyYy5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdQYXRoU2VnQXJj
LmgnLApAQCAtMzgzMiw2ICszODM0LDkgQEAKICAgICAgICAgICAgICdzdmcvU1ZHUGF0aFNlZ0xp
c3RCdWlsZGVyLmgnLAogICAgICAgICAgICAgJ3N2Zy9TVkdQYXRoU2VnTW92ZXRvLmNwcCcsCiAg
ICAgICAgICAgICAnc3ZnL1NWR1BhdGhTZWdNb3ZldG8uaCcsCisgICAgICAgICAgICAnc3ZnL1NW
R1BhdGhTb3VyY2UuaCcsCisgICAgICAgICAgICAnc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuY3Bw
JywKKyAgICAgICAgICAgICdzdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5oJywKICAgICAgICAgICAg
ICdzdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdzdmcvU1ZHUGF0dGVy
bkVsZW1lbnQuaCcsCiAgICAgICAgICAgICAnc3ZnL1NWR1BvaW50TGlzdC5jcHAnLApJbmRleDog
V2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShy
ZXZpc2lvbiA2NDc4OCkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAg
LTI4MzUsNiArMjgzNSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkc9MSkgewogICAg
ICAgICBzdmcvU1ZHUGF0aEJ1aWxkZXIuY3BwIFwKICAgICAgICAgc3ZnL1NWR1BhdGhFbGVtZW50
LmNwcCBcCiAgICAgICAgIHN2Zy9TVkdQYXRoUGFyc2VyLmNwcCBcCisgICAgICAgIHN2Zy9TVkdQ
YXRoUGFyc2VyRmFjdG9yeS5jcHAgXAogICAgICAgICBzdmcvU1ZHUGF0aFNlZ0FyYy5jcHAgXAog
ICAgICAgICBzdmcvU1ZHUGF0aFNlZ0Nsb3NlUGF0aC5jcHAgXAogICAgICAgICBzdmcvU1ZHUGF0
aFNlZ0N1cnZldG9DdWJpYy5jcHAgXApAQCAtMjg0Nyw2ICsyODQ4LDcgQEAgY29udGFpbnMoREVG
SU5FUywgRU5BQkxFX1NWRz0xKSB7CiAgICAgICAgIHN2Zy9TVkdQYXRoU2VnTGlzdC5jcHAgXAog
ICAgICAgICBzdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmNwcCBcCiAgICAgICAgIHN2Zy9TVkdQ
YXRoU2VnTW92ZXRvLmNwcCBcCisgICAgICAgIHN2Zy9TVkdQYXRoU3RyaW5nU291cmNlLmNwcCBc
CiAgICAgICAgIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAgXAogICAgICAgICBzdmcvU1ZHUG9p
bnRMaXN0LmNwcCBcCiAgICAgICAgIHN2Zy9TVkdQb2x5RWxlbWVudC5jcHAgXApJbmRleDogV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA2NDc4OCkKKysrIFdlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ5MTQx
LDYgKzQ5MTQxLDEwIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHN2Z1xTVkdQYXRoUGFyc2VyRmFjdG9yeS5oIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXFNWR1BhdGhTZWcuaCIN
CiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC00OTE5Myw2ICs0OTE5NywxNCBAQAogCQkJCT4NCiAJ
CQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZHUGF0aFNv
dXJjZS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cc3ZnXFNWR1BhdGhTdHJpbmdTb3VyY2UuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdQYXR0ZXJuRWxlbWVudC5oIg0K
IAkJCQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiA2NDgzOCkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsNiArMTkwLDExIEBACiAJ
CTA4QzkyNTFBMEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4QzkyNTE4MEZDQzdDNEEwMDQ4MERF
QyAvKiBGaWx0ZXJFZmZlY3QuaCAqLzsgfTsKIAkJMDhDRDYxQkMwRUQzOTI5QzAwMkRERjUxIC8q
IFdNTFRhc2tFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4Q0Q2MUI4MEVEMzkyOUMwMDJEREY1MSAvKiBXTUxUYXNrRWxlbWVudC5jcHAg
Ki87IH07CiAJCTA4Q0Q2MUJEMEVEMzkyOUMwMDJEREY1MSAvKiBXTUxUYXNrRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhDRDYxQjkwRUQz
OTI5QzAwMkRERjUxIC8qIFdNTFRhc2tFbGVtZW50LmggKi87IH07CisJCTA4REE5N0NDMTIwQzMz
ODUwMDI1NUFFOCAvKiBTVkdQYXRoUGFyc2VyRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOERBOTdDQTEyMEMzMzg1MDAyNTVBRTggLyog
U1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwICovOyB9OworCQkwOERBOTdDRDEyMEMzMzg1MDAyNTVB
RTggLyogU1ZHUGF0aFBhcnNlckZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4REE5N0NCMTIwQzMzODUwMDI1NUFFOCAvKiBTVkdQYXRoUGFy
c2VyRmFjdG9yeS5oICovOyB9OworCQkwOERBOTdENTEyMEMzMzk4MDAyNTVBRTggLyogU1ZHUGF0
aFNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDhEQTk3RDIxMjBDMzM5ODAwMjU1QUU4IC8qIFNWR1BhdGhTb3VyY2UuaCAqLzsgfTsKKwkJMDhE
QTk3RDYxMjBDMzM5ODAwMjU1QUU4IC8qIFNWR1BhdGhTdHJpbmdTb3VyY2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhEQTk3RDMxMjBDMzM5ODAw
MjU1QUU4IC8qIFNWR1BhdGhTdHJpbmdTb3VyY2UuY3BwICovOyB9OworCQkwOERBOTdENzEyMEMz
Mzk4MDAyNTVBRTggLyogU1ZHUGF0aFN0cmluZ1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhEQTk3RDQxMjBDMzM5ODAwMjU1QUU4IC8qIFNW
R1BhdGhTdHJpbmdTb3VyY2UuaCAqLzsgfTsKIAkJMDhEQUI5QkExMTAzRDlBNTAwM0U3QUJBIC8q
IFJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4REFCOUI4MTEwM0Q5QTUwMDNFN0FCQSAvKiBS
ZW5kZXJTVkdTaGFkb3dUcmVlUm9vdENvbnRhaW5lci5jcHAgKi87IH07CiAJCTA4REFCOUJCMTEw
M0Q5QTUwMDNFN0FCQSAvKiBSZW5kZXJTVkdTaGFkb3dUcmVlUm9vdENvbnRhaW5lci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhEQUI5QjkxMTAzRDlB
NTAwM0U3QUJBIC8qIFJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyLmggKi87IH07CiAJ
CTA4REFCOUMyMTEwM0Q5QzEwMDNFN0FCQSAvKiBTVkdTaGFkb3dUcmVlRWxlbWVudHMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhEQUI5QzAxMTAz
RDlDMTAwM0U3QUJBIC8qIFNWR1NoYWRvd1RyZWVFbGVtZW50cy5jcHAgKi87IH07CkBAIC0xNDEz
LDExICsxNDE4LDkgQEAKIAkJN0FFRDNFMDYwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZy
b250ZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QUVEM0UwNDBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCAqLzsgfTsKIAkJ
N0FGRDRBOEIxMTMxQzI3NjAwMzVCODgzIC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkQ0QThBMTEzMUMyNzYwMDM1
Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0FGRDRGRjQxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERl
YnVnTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJODFCRTIwOTgx
MUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MUJFMjA5MzExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vy
c29yLmNwcCAqLzsgfTsKIAkJODFCRTIwOTcxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFCRTIwOTIx
MUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvci5oICovOyB9OwogCQk4MUJFMjA5ODExRjRBQjhE
MDA5MTVERkEgLyogSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFCRTIwOTMxMUY0QUI4RDAwOTE1REZBIC8qIElE
QkN1cnNvckJhY2tlbmRJbXBsLmNwcCAqLzsgfTsKLQkJODFCRTIwOTkxMUY0QUI4RDAwOTE1REZB
IC8qIElEQkN1cnNvckJhY2tlbmRJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MUJFMjA5NDExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29yQmFj
a2VuZEltcGwuaCAqLzsgfTsKLQkJODFCRTIwOUIxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgxQkUyMDk2MTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlLmggKi87IH07CisJCTgxQkUyMDk5MTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MUJFMjA5NDExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZS5oICovOyB9OwogCQk4MUJFMjBEMjExRjRCQzMyMDA5MTVERkEgLyogSlNJREJDdXJzb3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFCRTIw
QTcxMUY0QjY2RjAwOTE1REZBIC8qIEpTSURCQ3Vyc29yLmNwcCAqLzsgfTsKIAkJODFCRTIwRDMx
MUY0QkMzMjAwOTE1REZBIC8qIEpTSURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MUJFMjBBODExRjRCNjZGMDA5MTVERkEgLyogSlNJREJD
dXJzb3IuaCAqLzsgfTsKIAkJODJCNjU4OTgxMTg5RTM5MjAwRTA1MkExIC8qIEluc3BlY3RvckNT
U1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MkI2NTg5NzExODlFMzkyMDBFMDUyQTEgLyogSW5zcGVjdG9yQ1NTU3RvcmUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTg2MSw2ICs1ODY0LDEx
IEBACiAJCTA4QzkyNTE4MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmlsdGVyRWZmZWN0Lmg7IHBhdGggPSBmaWx0ZXJz
L0ZpbHRlckVmZmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOENENjFCODBF
RDM5MjlDMDAyRERGNTEgLyogV01MVGFza0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV01MVGFza0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwOENENjFCOTBFRDM5MjlDMDAyRERGNTEgLyogV01MVGFza0VsZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV01MVGFza0VsZW1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDhEQTk3Q0ExMjBDMzM4NTAwMjU1QUU4IC8qIFNWR1Bh
dGhQYXJzZXJGYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MDhEQTk3Q0IxMjBDMzM4NTAwMjU1QUU4IC8qIFNWR1BhdGhQYXJzZXJGYWN0b3J5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4REE5N0QyMTIwQzMzOTgwMDI1NUFFOCAvKiBTVkdQ
YXRoU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1BhdGhTb3Vy
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDhEQTk3RDMxMjBDMzM5ODAwMjU1
QUU4IC8qIFNWR1BhdGhTdHJpbmdTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTA4REE5N0Q0MTIwQzMzOTgwMDI1NUFFOCAvKiBTVkdQYXRoU3RyaW5nU291cmNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1BhdGhTdHJpbmdTb3VyY2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhEQUI5QjgxMTAzRDlBNTAwM0U3QUJB
IC8qIFJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhEQUI5QjkxMTAzRDlBNTAwM0U3QUJB
IC8qIFJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4REFCOUMwMTEwM0Q5QzEwMDNFN0FCQSAvKiBTVkdT
aGFkb3dUcmVlRWxlbWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU1ZHU2hhZG93VHJlZUVsZW1lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTcyMjAsNyArNzIyOCw2IEBACiAJCTdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4MyAvKiBTY3Jp
cHREZWJ1Z0xpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlw
dERlYnVnTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODFCRTIwOTIx
MUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJREJDdXJzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODFCRTIw
OTMxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkN1cnNvckJhY2tlbmRJbXBsLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODFCRTIwOTQxMUY0QUI4RDAwOTE1REZBIC8qIElE
QkN1cnNvckJhY2tlbmRJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElE
QkN1cnNvckJhY2tlbmRJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgxQkUy
MDk0MTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODFCRTIwOUMxMUY0QUJCRDAwOTE1REZBIC8q
IElEQkN1cnNvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSURCQ3Vyc29yLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODFCRTIwQTcxMUY0QjY2RjAwOTE1REZBIC8qIEpT
SURCQ3Vyc29yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSURC
Q3Vyc29yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMDQzLDggKzEwMDUw
LDggQEAKIAkJQjY1NjYyNjgxMjBCMTE1QTAwNkVBODVDIC8qIElEQlRyYW5zYWN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQlRyYW5zYWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI2NTY2MjY5MTIwQjExNUEwMDZFQTg1QyAvKiBJREJUcmFu
c2FjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSURCVHJhbnNhY3Rpb24uaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNjU2NjI2RDEyMEIxMTZCMDA2RUE4NUMgLyog
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlCNjU2NjI2RTEyMEIxMjI3MDA2RUE4NUMgLyogSlNJREJUcmFuc2Fj
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0lEQlRyYW5zYWN0aW9u
Lmg7IHBhdGggPSBKU0lEQlRyYW5zYWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUI2NTY2MjZGMTIwQjEyMjcwMDZFQTg1QyAvKiBKU0lEQlRyYW5zYWN0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTSURCVHJhbnNhY3Rpb24uY3BwOyBw
YXRoID0gSlNJREJUcmFuc2FjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUI2NTY2MjZFMTIwQjEyMjcwMDZFQTg1QyAvKiBKU0lEQlRyYW5zYWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSURCVHJhbnNhY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQjY1NjYyNkYxMjBCMTIyNzAwNkVBODVDIC8qIEpTSURCVHJhbnNh
Y3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJREJUcmFu
c2FjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI3MzRCMTgwMTE5Qjk5
MTEwMDY1ODdCRCAvKiBGb250VHJhbnNjb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBGb250VHJhbnNjb2Rlci5jcHA7IHBhdGggPSB0cmFuc2NvZGVyL0ZvbnRU
cmFuc2NvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjczNEIxODIxMTlC
OTkxRDAwNjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEZvbnRUcmFuc2NvZGVyLmg7IHBhdGggPSB0cmFuc2NvZGVyL0ZvbnRUcmFuc2Nv
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI3NzZENDNBMTEwNDUyNUQwMEJF
QjBFQyAvKiBQcmludENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UHJpbnRDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTM3MSw3ICsx
MTM3OCw2IEBACiAJCTFBRTgyRUM5MENBQUUxNzcwMDIyMzdBRSAvKiBzdG9yYWdlICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQogCQkJCUI1QjVEQzY3MTE5QkIz
RDUwMDJBODc5MCAvKiBBYnN0cmFjdERhdGFiYXNlLmNwcCAqLywKIAkJCQlCNUI1REM2ODExOUJC
M0Q1MDAyQTg3OTAgLyogQWJzdHJhY3REYXRhYmFzZS5oICovLAogCQkJCTUxNDE4NUVEMENENjVG
MDQwMDc2M0M5OSAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAgKi8sCkBAIC0xMTQxMiwxMiAr
MTE0MTgsMTEgQEAKIAkJCQlDNTg1QTY5OTExRDRGQjNEMDA0QzNFNEIgLyogSURCQW55LmggKi8s
CiAJCQkJQzU4NUE2OUExMUQ0RkIzRDAwNEMzRTRCIC8qIElEQkFueS5pZGwgKi8sCiAJCQkJQzU4
NUE2OUIxMUQ0RkIzRDAwNEMzRTRCIC8qIElEQkNhbGxiYWNrcy5oICovLAotCQkJCTgxQkUyMDky
MTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3IuY3BwICovLAorCQkJCTgxQkUyMDkyMTFGNEFC
OEQwMDkxNURGQSAvKiBJREJDdXJzb3IuaCAqLywKIAkJCQk4MUJFMjA5MjExRjRBQjhEMDA5MTVE
RkEgLyogSURCQ3Vyc29yLmggKi8sCiAJCQkJODFCRTIwOUMxMUY0QUJCRDAwOTE1REZBIC8qIElE
QkN1cnNvci5pZGwgKi8sCiAJCQkJODFCRTIwOTMxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNv
ckJhY2tlbmRJbXBsLmNwcCAqLywKLQkJCQk4MUJFMjA5NDExRjRBQjhEMDA5MTVERkEgLyogSURC
Q3Vyc29yQmFja2VuZEltcGwuaCAqLywKLQkJCQk4MUJFMjA5NTExRjRBQjhEMDA5MTVERkEgLyog
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oICovLAorCQkJCTgxQkUyMDk0MTFGNEFCOEQwMDkx
NURGQSAvKiBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmggKi8sCiAJCQkJQzU4NUE2QTMxMUQ0
RkIzRDAwNEMzRTRCIC8qIElEQkRhdGFiYXNlLmNwcCAqLywKIAkJCQlDNTg1QTZBNDExRDRGQjNE
MDA0QzNFNEIgLyogSURCRGF0YWJhc2UuaCAqLywKIAkJCQlDNTg1QTZBNTExRDRGQjNEMDA0QzNF
NEIgLyogSURCRGF0YWJhc2UuaWRsICovLApAQCAtMTUyNTcsNiArMTUyNjIsOCBAQAogCQkJCUIy
MjI3OEM0MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQYXRoRWxlbWVudC5pZGwgKi8sCiAJCQkJODQ3
NkM5RUQxMURGNkE1ODAwNTU1QjAyIC8qIFNWR1BhdGhQYXJzZXIuY3BwICovLAogCQkJCTg0NzZD
OUVFMTFERjZBNTgwMDU1NUIwMiAvKiBTVkdQYXRoUGFyc2VyLmggKi8sCisJCQkJMDhEQTk3Q0Ex
MjBDMzM4NTAwMjU1QUU4IC8qIFNWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcCAqLywKKwkJCQkwOERB
OTdDQjEyMEMzMzg1MDAyNTVBRTggLyogU1ZHUGF0aFBhcnNlckZhY3RvcnkuaCAqLywKIAkJCQlB
OEJDRkQwNDEyMEEwNDYxMDBCNUYxMjIgLyogU1ZHUGF0aFNlZy5jcHAgKi8sCiAJCQkJQjIyMjc4
QzUwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhdGhTZWcuaCAqLywKIAkJCQlCMjIyNzhDNjBEMDBC
RjIwMDA3MUI3ODIgLyogU1ZHUGF0aFNlZy5pZGwgKi8sCkBAIC0xNTMwNCw2ICsxNTMxMSw5IEBA
CiAJCQkJQjIyMjc4RUUwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BhdGhTZWdNb3ZldG8uaCAqLywK
IAkJCQlCMjIyNzhFRjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ01vdmV0b0Ficy5pZGwg
Ki8sCiAJCQkJQjIyMjc4RjAwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BhdGhTZWdNb3ZldG9SZWwu
aWRsICovLAorCQkJCTA4REE5N0QyMTIwQzMzOTgwMDI1NUFFOCAvKiBTVkdQYXRoU291cmNlLmgg
Ki8sCisJCQkJMDhEQTk3RDMxMjBDMzM5ODAwMjU1QUU4IC8qIFNWR1BhdGhTdHJpbmdTb3VyY2Uu
Y3BwICovLAorCQkJCTA4REE5N0Q0MTIwQzMzOTgwMDI1NUFFOCAvKiBTVkdQYXRoU3RyaW5nU291
cmNlLmggKi8sCiAJCQkJQjIyMjc4RjEwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BhdHRlcm5FbGVt
ZW50LmNwcCAqLywKIAkJCQlCMjIyNzhGMjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUGF0dGVybkVs
ZW1lbnQuaCAqLywKIAkJCQlCMjIyNzhGMzBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUGF0dGVybkVs
ZW1lbnQuaWRsICovLApAQCAtMTg2MjUsOCArMTg2MzUsNyBAQAogCQkJCUM1ODVBNjYzMTFENEZB
QzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
NTg1QTZDRjExRDRGQjNEMDA0QzNFNEIgLyogSURCQ2FsbGJhY2tzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4MUJFMjA5NzExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29yLmggaW4gSGVhZGVycyAq
LywKLQkJCQk4MUJFMjA5OTExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29yQmFja2VuZEltcGwu
aCBpbiBIZWFkZXJzICovLAotCQkJCTgxQkUyMDlCMTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4MUJFMjA5OTExRjRBQjhE
MDA5MTVERkEgLyogSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQzU4NUE2RDgxMUQ0RkIzRDAwNEMzRTRCIC8qIElEQkRhdGFiYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCNjE3NjI2MjEyMDM0OTA4MDBFRjkxMTQgLyogSURCRGF0YWJhc2VCYWNrZW5kSW1w
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjYxNzYyNTQxMjAzMzc0RjAwRUY5MTE0IC8qIElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xOTczNSw2ICsxOTc0
NCw3IEBACiAJCQkJODQ3NkM5RUMxMURGNkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhDb25zdW1lci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBNTkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDc2QzlGMDExREY2QTU4MDA1NTVCMDIgLyog
U1ZHUGF0aFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDhEQTk3Q0QxMjBDMzM4NTAwMjU1
QUU4IC8qIFNWR1BhdGhQYXJzZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E1
QjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIy
MjdBNUUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdBcmMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyMjI3QTYyMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnQ2xvc2VQYXRoLmggaW4g
SGVhZGVycyAqLywKQEAgLTE5NzQ4LDYgKzE5NzU4LDggQEAKIAkJCQlCMjIyN0E4MTBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzZDOUU2
MTFERjZBMEIwMDU1NUIwMiAvKiBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyMjI3QTg0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTW92ZXRvLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwOERBOTdENTEyMEMzMzk4MDAyNTVBRTggLyogU1ZHUGF0aFNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDhEQTk3RDcxMjBDMzM5ODAwMjU1QUU4IC8qIFNWR1Bh
dGhTdHJpbmdTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTg4MEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdQYXR0ZXJuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI1NTk5OTUw
RDAwRDhCQTAwQkI4MjVDIC8qIFNWR1BvaW50TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyMjI3QThDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2ludExpc3QuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjEwNjIsNyArMjEwNzQsNyBAQAogCQkJCTUxRTFFQ0MwMEM5MUM5MDQwMERDMjU1
QiAvKiBJY29uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1ODVBNkNDMTFENEZCM0Qw
MDRDM0U0QiAvKiBJREJBbnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU4NUE2NjIxMUQ0RkFD
NTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
ODFCRTIwOTgxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk4MUJFMjA5ODExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29yQmFja2VuZEltcGwuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODFCRTIwOTgxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNv
ckJhY2tlbmRJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI2OTFDMUY5MTIwNkQ0QTAwMDI1
RDk4MCAvKiBJREJEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTg1QTZENTExRDRG
QjNEMDA0QzNFNEIgLyogSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTIyMTg0LDYgKzIyMTk2LDcgQEAKIAkJCQk4NDc2QzlFQTExREY2QTI5MDA1NTVCMDIgLyog
U1ZHUGF0aEJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBNTgwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR1BhdGhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0NzZDOUVG
MTFERjZBNTgwMDU1NUIwMiAvKiBTVkdQYXRoUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTA4REE5N0NDMTIwQzMzODUwMDI1NUFFOCAvKiBTVkdQYXRoUGFyc2VyRmFjdG9yeS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBOEJDRkQwNTEyMEEwNDYxMDBCNUYxMjIgLyogU1ZHUGF0aFNlZy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E1RDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0
aFNlZ0FyYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E2MTBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHUGF0aFNlZ0Nsb3NlUGF0aC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTIyMTk3LDYgKzIy
MjEwLDcgQEAKIAkJCQlCMjIyN0E4MDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODQ3NkM5RTUxMURGNkEwQjAwNTU1QjAyIC8qIFNWR1Bh
dGhTZWdMaXN0QnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E4MzBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHUGF0aFNlZ01vdmV0by5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwOERB
OTdENjEyMEMzMzk4MDAyNTVBRTggLyogU1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCMjIyN0E4NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0dGVybkVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBOEIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1Bv
aW50TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E4RTBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHUG9seUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3Bw
CShyZXZpc2lvbiA2NDc4OCkKKysrIFdlYkNvcmUvc3ZnL1NWR0FsbEluT25lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEwLDYgKzExMCw3IEBACiAjaW5jbHVkZSAiU1ZHUGF0aEJ1aWxkZXIuY3Bw
IgogI2luY2x1ZGUgIlNWR1BhdGhFbGVtZW50LmNwcCIKICNpbmNsdWRlICJTVkdQYXRoUGFyc2Vy
LmNwcCIKKyNpbmNsdWRlICJTVkdQYXRoUGFyc2VyRmFjdG9yeS5jcHAiCiAjaW5jbHVkZSAiU1ZH
UGF0aFNlZ0FyYy5jcHAiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0Nsb3NlUGF0aC5jcHAiCiAjaW5j
bHVkZSAiU1ZHUGF0aFNlZ0N1cnZldG9DdWJpYy5jcHAiCkBAIC0xMjIsNiArMTIzLDcgQEAKICNp
bmNsdWRlICJTVkdQYXRoU2VnTGlzdC5jcHAiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3RCdWls
ZGVyLmNwcCIKICNpbmNsdWRlICJTVkdQYXRoU2VnTW92ZXRvLmNwcCIKKyNpbmNsdWRlICJTVkdQ
YXRoU3RyaW5nU291cmNlLmNwcCIKICNpbmNsdWRlICJTVkdQYXR0ZXJuRWxlbWVudC5jcHAiCiAj
aW5jbHVkZSAiU1ZHUG9pbnRMaXN0LmNwcCIKICNpbmNsdWRlICJTVkdQb2x5RWxlbWVudC5jcHAi
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NDc4OCkKKysrIFdl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCAr
MjcsOCBAQAogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIlNWR0NvbG9y
LmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFBh
cnNlckZhY3RvcnkuaCIKICNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdC5oIgotI2luY2x1ZGUgIlNW
R1BhdGhTZWdMaXN0QnVpbGRlci5oIgogI2luY2x1ZGUgIlNWR1BvaW50TGlzdC5oIgogI2luY2x1
ZGUgPG1hdGguaD4KIApAQCAtMTkwLDExICsxOTAsMTAgQEAgYm9vbCBTVkdBbmltYXRlRWxlbWVu
dDo6Y2FsY3VsYXRlRnJvbUFuZAogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX3Byb3BlcnR5
VHlwZSA9PSBQYXRoUHJvcGVydHkpIHsKICAgICAgICAgbV9mcm9tUGF0aCA9IFNWR1BhdGhTZWdM
aXN0OjpjcmVhdGUoU1ZHTmFtZXM6OmRBdHRyKTsKLSAgICAgICAgU1ZHUGF0aFNlZ0xpc3RCdWls
ZGVyIGZyb21QYXJzZXIobV9mcm9tUGF0aC5nZXQoKSk7Ci0gICAgICAgIGlmIChmcm9tUGFyc2Vy
LmJ1aWxkKGZyb21TdHJpbmcsIFVuYWx0ZXJlZFBhcnNpbmcpKSB7CisgICAgICAgIFNWR1BhdGhQ
YXJzZXJGYWN0b3J5KiBmYWN0b3J5ID0gU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsKKyAg
ICAgICAgaWYgKGZhY3RvcnktPmJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tU3RyaW5nKGZyb21TdHJp
bmcsIG1fZnJvbVBhdGguZ2V0KCksIFVuYWx0ZXJlZFBhcnNpbmcpKSB7CiAgICAgICAgICAgICBt
X3RvUGF0aCA9IFNWR1BhdGhTZWdMaXN0OjpjcmVhdGUoU1ZHTmFtZXM6OmRBdHRyKTsKLSAgICAg
ICAgICAgIFNWR1BhdGhTZWdMaXN0QnVpbGRlciB0b1BhcnNlcihtX3RvUGF0aC5nZXQoKSk7Ci0g
ICAgICAgICAgICBpZiAodG9QYXJzZXIuYnVpbGQodG9TdHJpbmcsIFVuYWx0ZXJlZFBhcnNpbmcp
KQorICAgICAgICAgICAgaWYgKGZhY3RvcnktPmJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tU3RyaW5n
KHRvU3RyaW5nLCBtX3RvUGF0aC5nZXQoKSwgVW5hbHRlcmVkUGFyc2luZykpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgbV9mcm9tUGF0aC5jbGVhcigp
OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAkocmV2aXNpb24g
NjQ3ODgpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2Uu
aCIKICNpbmNsdWRlICJTVkdNUGF0aEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGls
aXRpZXMuaCIKLSNpbmNsdWRlICJTVkdQYXRoQnVpbGRlci5oIgorI2luY2x1ZGUgIlNWR1BhdGhQ
YXJzZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aEVsZW1lbnQuaCIKICNpbmNsdWRlICJT
VkdUcmFuc2Zvcm1MaXN0LmgiCiAjaW5jbHVkZSA8bWF0aC5oPgpAQCAtODcsOSArODcsOCBAQCB2
b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpwYXJzZU1hcHBlCiB7CiAgICAgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBTVkdOYW1lczo6cGF0aEF0dHIpIHsKICAgICAgICAgbV9wYXRoID0gUGF0aCgp
OwotICAgICAgICBTVkdQYXRoQnVpbGRlciBidWlsZGVyKG1fcGF0aCk7Ci0gICAgICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgYW5hbHlzZSB0aGUgcmV0dXJuZWQgdmFsdWUuCi0gICAgICAgIGJ1aWxk
ZXIuYnVpbGQoYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIFNWR1BhdGhQYXJzZXJGYWN0b3J5KiBm
YWN0b3J5ID0gU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsKKyAgICAgICAgZmFjdG9yeS0+
YnVpbGRQYXRoRnJvbVN0cmluZyhhdHRyLT52YWx1ZSgpLCBtX3BhdGgpOwogICAgIH0gZWxzZQog
ICAgICAgICBTVkdBbmltYXRpb25FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsK
IH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmNwcAkocmV2aXNpb24gNjQ3ODgpCisrKyBXZWJD
b3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3
IEBACiAjaW5jbHVkZSAiU1ZHRm9udEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdGb250RmFjZUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgotI2luY2x1ZGUgIlNWR1BhdGhCdWlsZGVy
LmgiCisjaW5jbHVkZSAiU1ZHUGF0aFBhcnNlckZhY3RvcnkuaCIKICNpbmNsdWRlICJTaW1wbGVG
b250RGF0YS5oIgogI2luY2x1ZGUgIlhNTE5hbWVzLmgiCiAKQEAgLTEwMiwxMCArMTAyLDggQEAg
c3RhdGljIGlubGluZSBTVkdHbHlwaElkZW50aWZpZXI6Ok9yaWVudAogc3RhdGljIGlubGluZSBQ
YXRoIHBhcnNlUGF0aERhdGEoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBQYXRo
IHJlc3VsdDsKLSAgICBTVkdQYXRoQnVpbGRlciBidWlsZGVyKHJlc3VsdCk7Ci0gICAgLy8gRklY
TUU6IFdlIHNob3VsZCBhbmFseXNlIHRoZSByZXR1cm5lZCB2YWx1ZS4KLSAgICBidWlsZGVyLmJ1
aWxkKHZhbHVlKTsKLQorICAgIFNWR1BhdGhQYXJzZXJGYWN0b3J5KiBmYWN0b3J5ID0gU1ZHUGF0
aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsKKyAgICBmYWN0b3J5LT5idWlsZFBhdGhGcm9tU3RyaW5n
KHZhbHVlLCByZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR1BhdGhCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRo
QnVpbGRlci5jcHAJKHJldmlzaW9uIDY0Nzg4KQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aEJ1aWxk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw0OSArMjYsNDUgQEAKICNpZiBFTkFCTEUoU1ZH
KQogI2luY2x1ZGUgIlNWR1BhdGhCdWlsZGVyLmgiCiAKLSNpbmNsdWRlICJTVkdQYXRoUGFyc2Vy
LmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHUGF0aEJ1aWxkZXI6OlNWR1BhdGhCdWls
ZGVyKFBhdGgmIHBhdGgpCi0gICAgOiBtX3BhdGgocGF0aCkKLXsKLX0KLQotYm9vbCBTVkdQYXRo
QnVpbGRlcjo6YnVpbGQoY29uc3QgU3RyaW5nJiBkKQorU1ZHUGF0aEJ1aWxkZXI6OlNWR1BhdGhC
dWlsZGVyKCkKKyAgICA6IG1fcGF0aCgwKQogewotICAgIFNWR1BhdGhQYXJzZXIgcGFyc2VyKHRo
aXMpOwotICAgIHJldHVybiBwYXJzZXIucGFyc2VQYXRoRGF0YVN0cmluZyhkLCB0cnVlKTsKIH0K
IAotdm9pZCBTVkdQYXRoQnVpbGRlcjo6bW92ZVRvKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBi
b29sIGNsb3NlZCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCit2b2lkIFNWR1BhdGhCdWlsZGVy
Ojptb3ZlVG8oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIGJvb2wgY2xvc2VkLCBQYXRo
Q29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKLSAgICBtX2N1cnJlbnQgPSBtb2RlID09IEFic29sdXRl
Q29vcmRpbmF0ZXMgPyBwb2ludCA6IG1fY3VycmVudCArIHBvaW50OworICAgIEFTU0VSVChtX3Bh
dGgpOworICAgIG1fY3VycmVudCA9IG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcyA/IHRhcmdl
dFBvaW50IDogbV9jdXJyZW50ICsgdGFyZ2V0UG9pbnQ7CiAgICAgaWYgKGNsb3NlZCkKLSAgICAg
ICAgbV9wYXRoLmNsb3NlU3VicGF0aCgpOwotICAgIG1fcGF0aC5tb3ZlVG8obV9jdXJyZW50KTsK
KyAgICAgICAgbV9wYXRoLT5jbG9zZVN1YnBhdGgoKTsKKyAgICBtX3BhdGgtPm1vdmVUbyhtX2N1
cnJlbnQpOwogfQogCi12b2lkIFNWR1BhdGhCdWlsZGVyOjpsaW5lVG8oY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQordm9pZCBTVkdQYXRoQnVpbGRlcjo6
bGluZVRvKGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUg
bW9kZSkKIHsKLSAgICBtX2N1cnJlbnQgPSBtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMgPyBw
b2ludCA6IG1fY3VycmVudCArIHBvaW50OwotICAgIG1fcGF0aC5hZGRMaW5lVG8obV9jdXJyZW50
KTsKKyAgICBBU1NFUlQobV9wYXRoKTsKKyAgICBtX2N1cnJlbnQgPSBtb2RlID09IEFic29sdXRl
Q29vcmRpbmF0ZXMgPyB0YXJnZXRQb2ludCA6IG1fY3VycmVudCArIHRhcmdldFBvaW50OworICAg
IG1fcGF0aC0+YWRkTGluZVRvKG1fY3VycmVudCk7CiB9CiAKLXZvaWQgU1ZHUGF0aEJ1aWxkZXI6
OmN1cnZlVG9DdWJpYyhjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50MiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2Rl
KQordm9pZCBTVkdQYXRoQnVpbGRlcjo6Y3VydmVUb0N1YmljKGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50MSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQ
b2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CisgICAgQVNTRVJUKG1fcGF0aCk7CiAg
ICAgaWYgKG1vZGUgPT0gUmVsYXRpdmVDb29yZGluYXRlcykgewotICAgICAgICBtX3BhdGguYWRk
QmV6aWVyQ3VydmVUbyhtX2N1cnJlbnQgKyBwb2ludDEsIG1fY3VycmVudCArIHBvaW50MiwgbV9j
dXJyZW50ICsgcG9pbnQpOwotICAgICAgICBtX2N1cnJlbnQgKz0gcG9pbnQ7CisgICAgICAgIG1f
cGF0aC0+YWRkQmV6aWVyQ3VydmVUbyhtX2N1cnJlbnQgKyBwb2ludDEsIG1fY3VycmVudCArIHBv
aW50MiwgbV9jdXJyZW50ICsgdGFyZ2V0UG9pbnQpOworICAgICAgICBtX2N1cnJlbnQgKz0gdGFy
Z2V0UG9pbnQ7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9jdXJyZW50ID0gcG9pbnQ7Ci0gICAg
ICAgIG1fcGF0aC5hZGRCZXppZXJDdXJ2ZVRvKHBvaW50MSwgcG9pbnQyLCBtX2N1cnJlbnQpOwor
ICAgICAgICBtX2N1cnJlbnQgPSB0YXJnZXRQb2ludDsKKyAgICAgICAgbV9wYXRoLT5hZGRCZXpp
ZXJDdXJ2ZVRvKHBvaW50MSwgcG9pbnQyLCBtX2N1cnJlbnQpOwogICAgIH0gICAgCiB9CiAKIHZv
aWQgU1ZHUGF0aEJ1aWxkZXI6OmNsb3NlUGF0aCgpCiB7Ci0gICAgbV9wYXRoLmNsb3NlU3VicGF0
aCgpOworICAgIEFTU0VSVChtX3BhdGgpOworICAgIG1fcGF0aC0+Y2xvc2VTdWJwYXRoKCk7CiB9
CiAKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhCdWlsZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHUGF0aEJ1aWxkZXIuaAkocmV2aXNpb24gNjQ3ODgpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdQYXRoQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsMTEgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdQYXRoQnVpbGRlciA6IHByaXZhdGUg
U1ZHUGF0aENvbnN1bWVyIHsKK2NsYXNzIFNWR1BhdGhCdWlsZGVyIDogcHVibGljIFNWR1BhdGhD
b25zdW1lciB7CiBwdWJsaWM6Ci0gICAgU1ZHUGF0aEJ1aWxkZXIoUGF0aCYpOwotICAgIGJvb2wg
YnVpbGQoY29uc3QgU3RyaW5nJik7CisgICAgU1ZHUGF0aEJ1aWxkZXIoKTsKKworICAgIHZvaWQg
c2V0Q3VycmVudFBhdGgoUGF0aCogcGF0aCkgeyBtX3BhdGggPSBwYXRoOyB9CiAKIHByaXZhdGU6
CiAgICAgLy8gVXNlZCBpbiBVbmFsdGVyZWRQYXJpc25nL05vcm1hbGl6ZWRQYXJzaW5nIG1vZGVz
LgpAQCAtNTAsOSArNTEsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjdXJ2ZVRvQ3Vi
aWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRp
bmF0ZU1vZGUpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgY3Vy
dmVUb1F1YWRyYXRpYyhjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIFBhdGhD
b29yZGluYXRlTW9kZSkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBjdXJ2ZVRvUXVhZHJhdGljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0
ZU1vZGUpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYXJjVG8o
Y29uc3QgRmxvYXRQb2ludCYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGJvb2wsIGJvb2wsIFBhdGhD
b29yZGluYXRlTW9kZSkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBhcmNUbyhmbG9hdCwgZmxvYXQsIGZsb2F0LCBib29sLCBib29sLCBjb25zdCBGbG9hdFBvaW50
JiwgUGF0aENvb3JkaW5hdGVNb2RlKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKLSAgICBQ
YXRoJiBtX3BhdGg7CisgICAgUGF0aCogbV9wYXRoOwogICAgIEZsb2F0UG9pbnQgbV9jdXJyZW50
OwogfTsKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aENvbnN1bWVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHUGF0aENvbnN1bWVyLmgJKHJldmlzaW9uIDY0Nzg4KQorKysgV2Vi
Q29yZS9zdmcvU1ZHUGF0aENvbnN1bWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcg
QEAKIAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDcgKzQw
LDcgQEAgZW51bSBQYXRoUGFyc2luZ01vZGUgewogICAgIFVuYWx0ZXJlZFBhcnNpbmcKIH07CiAK
LWNsYXNzIFNWR1BhdGhDb25zdW1lciB7CitjbGFzcyBTVkdQYXRoQ29uc3VtZXIgOiBwdWJsaWMg
Tm9uY29weWFibGUgewogcHVibGljOgogICAgIC8vIFVzZWQgaW4gVW5hbHRlcmVkUGFyaXNuZy9O
b3JtYWxpemVkUGFyc2luZyBtb2Rlcy4KICAgICB2aXJ0dWFsIHZvaWQgbW92ZVRvKGNvbnN0IEZs
b2F0UG9pbnQmLCBib29sIGNsb3NlZCwgUGF0aENvb3JkaW5hdGVNb2RlKSA9IDA7CkBAIC01NCw3
ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY3VydmVUb0N1YmljU21vb3RoKGNv
bnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cnZlVG9RdWFkcmF0aWMoY29uc3QgRmxvYXRQb2ludCYs
IGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgY3VydmVUb1F1YWRyYXRpY1Ntb290aChjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3Jk
aW5hdGVNb2RlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFyY1RvKGNvbnN0IEZsb2F0UG9pbnQm
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcs
IFBhdGhDb29yZGluYXRlTW9kZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmNUbyhmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcsIGNvbnN0IEZs
b2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIFNW
R1BhdGhDb25zdW1lcigpIHsgfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2aXNpb24g
NjQ3ODgpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJQYXRoLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgorI2luY2x1ZGUgIlNWR1Bh
dGhQYXJzZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0FyYy5oIgogI2luY2x1ZGUg
IlNWR1BhdGhTZWdDbG9zZVBhdGguaCIKICNpbmNsdWRlICJTVkdQYXRoU2VnQ3VydmV0b0N1Ymlj
LmgiCkBAIC0xNzMsOCArMTc0LDggQEAgdm9pZCBTVkdQYXRoRWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dAogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmRBdHRyKSB7CiAgICAg
ICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgICAgIHBhdGhTZWdMaXN0KCktPmNsZWFyKGVjKTsK
LSAgICAgICAgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyIHBhcnNlcihwYXRoU2VnTGlzdCgpKTsKLSAg
ICAgICAgaWYgKCFwYXJzZXIuYnVpbGQoYXR0ci0+dmFsdWUoKSwgTm9ybWFsaXplZFBhcnNpbmcp
KQorICAgICAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSogZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJG
YWN0b3J5OjpzZWxmKCk7CisgICAgICAgIGlmICghZmFjdG9yeS0+YnVpbGRTVkdQYXRoU2VnTGlz
dEZyb21TdHJpbmcoYXR0ci0+dmFsdWUoKSwgcGF0aFNlZ0xpc3QoKSwgTm9ybWFsaXplZFBhcnNp
bmcpKQogICAgICAgICAgICAgZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5yZXBv
cnRFcnJvcigiUHJvYmxlbSBwYXJzaW5nIGQ9XCIiICsgYXR0ci0+dmFsdWUoKSArICJcIiIpOwog
ICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpwYXRoTGVuZ3RoQXR0cikg
ewogICAgICAgICBzZXRQYXRoTGVuZ3RoQmFzZVZhbHVlKGF0dHItPnZhbHVlKCkudG9GbG9hdCgp
KTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIuY3BwCShyZXZpc2lvbiA2NDc4OCkKKysrIFdlYkNvcmUv
c3ZnL1NWR1BhdGhQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNSArMjcsMTMgQEAK
ICNpbmNsdWRlICJTVkdQYXRoUGFyc2VyLmgiCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0u
aCIKLSNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4
dHJhcy5oPgogCiBzdGF0aWMgY29uc3QgZmxvYXQgZ09uZU92ZXJUaHJlZSA9IDEgLyAzLmY7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHUGF0aFBhcnNlcjo6U1ZHUGF0aFBhcnNlcihTVkdQ
YXRoQ29uc3VtZXIqIGNvbnN1bWVyKQotICAgIDogbV9jb25zdW1lcihjb25zdW1lcikKK1NWR1Bh
dGhQYXJzZXI6OlNWR1BhdGhQYXJzZXIoKQogewogfQogCkBAIC00Niw5ICs0NCw5IEBAIFNWR1Bh
dGhQYXJzZXI6On5TVkdQYXRoUGFyc2VyKCkKIHZvaWQgU1ZHUGF0aFBhcnNlcjo6cGFyc2VDbG9z
ZVBhdGhTZWdtZW50KCkKIHsKICAgICAvLyBSZXNldCBtX2N1cnJlbnRQb2ludCBmb3IgdGhlIG5l
eHQgcGF0aC4KLSAgICBpZiAobV9ub3JtYWxpemVkKQorICAgIGlmIChtX3BhdGhQYXJzaW5nTW9k
ZSA9PSBOb3JtYWxpemVkUGFyc2luZykKICAgICAgICAgbV9jdXJyZW50UG9pbnQgPSBtX3N1YlBh
dGhQb2ludDsKLSAgICBtX3BhdGhDbG9zZWQgPSB0cnVlOworICAgIG1fY2xvc2VQYXRoID0gdHJ1
ZTsKICAgICBtX2NvbnN1bWVyLT5jbG9zZVBhdGgoKTsKIH0KIApAQCAtNTYsMjAgKzU0LDIwIEBA
IGJvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VNb3ZlVG9TZWdtZW50KCkKIHsKICAgICBmbG9hdCB0
b1g7CiAgICAgZmxvYXQgdG9ZOwotICAgIGlmICghcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5kLCB0
b1gpIHx8ICFwYXJzZU51bWJlcihtX3B0ciwgbV9lbmQsIHRvWSkpCisgICAgaWYgKCFtX3NvdXJj
ZS0+cGFyc2VGbG9hdCh0b1gpIHx8ICFtX3NvdXJjZS0+cGFyc2VGbG9hdCh0b1kpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBGbG9hdFBvaW50IHRvUG9pbnQodG9YLCB0b1kpOwotICAg
IGlmIChtX25vcm1hbGl6ZWQpIHsKKyAgICBpZiAobV9wYXRoUGFyc2luZ01vZGUgPT0gTm9ybWFs
aXplZFBhcnNpbmcpIHsKICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZWxhdGl2ZUNvb3JkaW5hdGVz
KQogICAgICAgICAgICAgbV9jdXJyZW50UG9pbnQgKz0gdG9Qb2ludDsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgbV9jdXJyZW50UG9pbnQgPSB0b1BvaW50OwogICAgICAgICBtX3N1YlBhdGhQ
b2ludCA9IG1fY3VycmVudFBvaW50OwotICAgICAgICBtX2NvbnN1bWVyLT5tb3ZlVG8obV9jdXJy
ZW50UG9pbnQsIG1fcGF0aENsb3NlZCwgQWJzb2x1dGVDb29yZGluYXRlcyk7CisgICAgICAgIG1f
Y29uc3VtZXItPm1vdmVUbyhtX2N1cnJlbnRQb2ludCwgbV9jbG9zZVBhdGgsIEFic29sdXRlQ29v
cmRpbmF0ZXMpOwogICAgIH0gZWxzZQotICAgICAgICBtX2NvbnN1bWVyLT5tb3ZlVG8odG9Qb2lu
dCwgbV9wYXRoQ2xvc2VkLCBtX21vZGUpOwotICAgIG1fcGF0aENsb3NlZCA9IGZhbHNlOworICAg
ICAgICBtX2NvbnN1bWVyLT5tb3ZlVG8odG9Qb2ludCwgbV9jbG9zZVBhdGgsIG1fbW9kZSk7Cisg
ICAgbV9jbG9zZVBhdGggPSBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNzcsMTEg
Kzc1LDExIEBAIGJvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VMaW5lVG9TZWdtZW50KCkKIHsKICAg
ICBmbG9hdCB0b1g7CiAgICAgZmxvYXQgdG9ZOwotICAgIGlmICghcGFyc2VOdW1iZXIobV9wdHIs
IG1fZW5kLCB0b1gpIHx8ICFwYXJzZU51bWJlcihtX3B0ciwgbV9lbmQsIHRvWSkpCisgICAgaWYg
KCFtX3NvdXJjZS0+cGFyc2VGbG9hdCh0b1gpIHx8ICFtX3NvdXJjZS0+cGFyc2VGbG9hdCh0b1kp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBGbG9hdFBvaW50IHRvUG9pbnQodG9YLCB0
b1kpOwotICAgIGlmIChtX25vcm1hbGl6ZWQpIHsKKyAgICBpZiAobV9wYXRoUGFyc2luZ01vZGUg
PT0gTm9ybWFsaXplZFBhcnNpbmcpIHsKICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZWxhdGl2ZUNv
b3JkaW5hdGVzKQogICAgICAgICAgICAgbV9jdXJyZW50UG9pbnQgKz0gdG9Qb2ludDsKICAgICAg
ICAgZWxzZQpAQCAtOTUsMTAgKzkzLDEwIEBAIGJvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VMaW5l
VG9TZWdtZW50KCkKIGJvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VMaW5lVG9Ib3Jpem9udGFsU2Vn
bWVudCgpCiB7CiAgICAgZmxvYXQgdG9YOwotICAgIGlmICghcGFyc2VOdW1iZXIobV9wdHIsIG1f
ZW5kLCB0b1gpKQorICAgIGlmICghbV9zb3VyY2UtPnBhcnNlRmxvYXQodG9YKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKG1fbm9ybWFsaXplZCkgeworICAgIGlmIChtX3BhdGhQ
YXJzaW5nTW9kZSA9PSBOb3JtYWxpemVkUGFyc2luZykgewogICAgICAgICBpZiAobV9tb2RlID09
IFJlbGF0aXZlQ29vcmRpbmF0ZXMpCiAgICAgICAgICAgICBtX2N1cnJlbnRQb2ludC5tb3ZlKHRv
WCwgMCk7CiAgICAgICAgIGVsc2UKQEAgLTExMiwxMCArMTEwLDEwIEBAIGJvb2wgU1ZHUGF0aFBh
cnNlcjo6cGFyc2VMaW5lVG9Ib3Jpem9udGEKIGJvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VMaW5l
VG9WZXJ0aWNhbFNlZ21lbnQoKQogewogICAgIGZsb2F0IHRvWTsKLSAgICBpZiAoIXBhcnNlTnVt
YmVyKG1fcHRyLCBtX2VuZCwgdG9ZKSkKKyAgICBpZiAoIW1fc291cmNlLT5wYXJzZUZsb2F0KHRv
WSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChtX25vcm1hbGl6ZWQpIHsKKyAg
ICBpZiAobV9wYXRoUGFyc2luZ01vZGUgPT0gTm9ybWFsaXplZFBhcnNpbmcpIHsKICAgICAgICAg
aWYgKG1fbW9kZSA9PSBSZWxhdGl2ZUNvb3JkaW5hdGVzKQogICAgICAgICAgICAgbV9jdXJyZW50
UG9pbnQubW92ZSgwLCB0b1kpOwogICAgICAgICBlbHNlCkBAIC0xMzQsMjkgKzEzMiwyOSBAQCBi
b29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlQ3VydmVUb0N1YmljU2VnCiAgICAgZmxvYXQgeTI7CiAg
ICAgZmxvYXQgdG9YOwogICAgIGZsb2F0IHRvWTsgCi0gICAgaWYgKCFwYXJzZU51bWJlcihtX3B0
ciwgbV9lbmQsIHgxKQotICAgICAgICB8fCAhcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5kLCB5MSkK
LSAgICAgICAgfHwgIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwgeDIpCi0gICAgICAgIHx8ICFw
YXJzZU51bWJlcihtX3B0ciwgbV9lbmQsIHkyKQotICAgICAgICB8fCAhcGFyc2VOdW1iZXIobV9w
dHIsIG1fZW5kLCB0b1gpCi0gICAgICAgIHx8ICFwYXJzZU51bWJlcihtX3B0ciwgbV9lbmQsIHRv
WSkpCisgICAgaWYgKCFtX3NvdXJjZS0+cGFyc2VGbG9hdCh4MSkKKyAgICAgICAgfHwgIW1fc291
cmNlLT5wYXJzZUZsb2F0KHkxKQorICAgICAgICB8fCAhbV9zb3VyY2UtPnBhcnNlRmxvYXQoeDIp
CisgICAgICAgIHx8ICFtX3NvdXJjZS0+cGFyc2VGbG9hdCh5MikKKyAgICAgICAgfHwgIW1fc291
cmNlLT5wYXJzZUZsb2F0KHRvWCkKKyAgICAgICAgfHwgIW1fc291cmNlLT5wYXJzZUZsb2F0KHRv
WSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEZsb2F0UG9pbnQgcG9pbnQxKHgxLCB5
MSk7CiAgICAgRmxvYXRQb2ludCBwb2ludDIoeDIsIHkyKTsKLSAgICBGbG9hdFBvaW50IHBvaW50
Myh0b1gsIHRvWSk7Ci0gICAgaWYgKG1fbm9ybWFsaXplZCkgeworICAgIEZsb2F0UG9pbnQgdGFy
Z2V0UG9pbnQodG9YLCB0b1kpOworICAgIGlmIChtX3BhdGhQYXJzaW5nTW9kZSA9PSBOb3JtYWxp
emVkUGFyc2luZykgewogICAgICAgICBpZiAobV9tb2RlID09IFJlbGF0aXZlQ29vcmRpbmF0ZXMp
IHsKICAgICAgICAgICAgIHBvaW50MSArPSBtX2N1cnJlbnRQb2ludDsKICAgICAgICAgICAgIHBv
aW50MiArPSBtX2N1cnJlbnRQb2ludDsKLSAgICAgICAgICAgIHBvaW50MyArPSBtX2N1cnJlbnRQ
b2ludDsKKyAgICAgICAgICAgIHRhcmdldFBvaW50ICs9IG1fY3VycmVudFBvaW50OwogICAgICAg
ICB9Ci0gICAgICAgIG1fY29uc3VtZXItPmN1cnZlVG9DdWJpYyhwb2ludDEsIHBvaW50MiwgcG9p
bnQzLCBBYnNvbHV0ZUNvb3JkaW5hdGVzKTsKKyAgICAgICAgbV9jb25zdW1lci0+Y3VydmVUb0N1
YmljKHBvaW50MSwgcG9pbnQyLCB0YXJnZXRQb2ludCwgQWJzb2x1dGVDb29yZGluYXRlcyk7CiAK
ICAgICAgICAgbV9jb250cm9sUG9pbnQgPSBwb2ludDI7Ci0gICAgICAgIG1fY3VycmVudFBvaW50
ID0gcG9pbnQzOworICAgICAgICBtX2N1cnJlbnRQb2ludCA9IHRhcmdldFBvaW50OwogICAgIH0g
ZWxzZQotICAgICAgICBtX2NvbnN1bWVyLT5jdXJ2ZVRvQ3ViaWMocG9pbnQxLCBwb2ludDIsIHBv
aW50MywgbV9tb2RlKTsKKyAgICAgICAgbV9jb25zdW1lci0+Y3VydmVUb0N1YmljKHBvaW50MSwg
cG9pbnQyLCB0YXJnZXRQb2ludCwgbV9tb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MTY2LDM1ICsxNjQsMzUgQEAgYm9vbCBTVkdQYXRoUGFyc2VyOjpwYXJzZUN1cnZlVG9DdWJpY1Nt
bwogICAgIGZsb2F0IHkyOwogICAgIGZsb2F0IHRvWDsKICAgICBmbG9hdCB0b1k7IAotICAgIGlm
ICghcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5kLCB4MikKLSAgICAgICAgfHwgIXBhcnNlTnVtYmVy
KG1fcHRyLCBtX2VuZCwgeTIpCi0gICAgICAgIHx8ICFwYXJzZU51bWJlcihtX3B0ciwgbV9lbmQs
IHRvWCkKLSAgICAgICAgfHwgIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwgdG9ZKSkKKyAgICBp
ZiAoIW1fc291cmNlLT5wYXJzZUZsb2F0KHgyKQorICAgICAgICB8fCAhbV9zb3VyY2UtPnBhcnNl
RmxvYXQoeTIpCisgICAgICAgIHx8ICFtX3NvdXJjZS0+cGFyc2VGbG9hdCh0b1gpCisgICAgICAg
IHx8ICFtX3NvdXJjZS0+cGFyc2VGbG9hdCh0b1kpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBpZiAobV9sYXN0Q29tbWFuZCAhPSAnYycKLSAgICAgICAgJiYgbV9sYXN0Q29tbWFuZCAh
PSAnQycKLSAgICAgICAgJiYgbV9sYXN0Q29tbWFuZCAhPSAncycKLSAgICAgICAgJiYgbV9sYXN0
Q29tbWFuZCAhPSAnUycpCisgICAgaWYgKG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9D
dWJpY0FicworICAgICAgICAmJiBtX2xhc3RDb21tYW5kICE9IFBhdGhTZWdDdXJ2ZVRvQ3ViaWNS
ZWwKKyAgICAgICAgJiYgbV9sYXN0Q29tbWFuZCAhPSBQYXRoU2VnQ3VydmVUb0N1YmljU21vb3Ro
QWJzCisgICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290
aFJlbCkKICAgICAgICAgbV9jb250cm9sUG9pbnQgPSBtX2N1cnJlbnRQb2ludDsKIAogICAgIEZs
b2F0UG9pbnQgcG9pbnQyKHgyLCB5Mik7Ci0gICAgRmxvYXRQb2ludCBwb2ludDModG9YLCB0b1kp
OwotICAgIGlmIChtX25vcm1hbGl6ZWQpIHsKKyAgICBGbG9hdFBvaW50IHRhcmdldFBvaW50KHRv
WCwgdG9ZKTsKKyAgICBpZiAobV9wYXRoUGFyc2luZ01vZGUgPT0gTm9ybWFsaXplZFBhcnNpbmcp
IHsKICAgICAgICAgRmxvYXRQb2ludCBwb2ludDEgPSBtX2N1cnJlbnRQb2ludDsKICAgICAgICAg
cG9pbnQxLnNjYWxlKDIsIDIpOwogICAgICAgICBwb2ludDEubW92ZSgtbV9jb250cm9sUG9pbnQu
eCgpLCAtbV9jb250cm9sUG9pbnQueSgpKTsKICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZWxhdGl2
ZUNvb3JkaW5hdGVzKSB7CiAgICAgICAgICAgICBwb2ludDIgKz0gbV9jdXJyZW50UG9pbnQ7Ci0g
ICAgICAgICAgICBwb2ludDMgKz0gbV9jdXJyZW50UG9pbnQ7CisgICAgICAgICAgICB0YXJnZXRQ
b2ludCArPSBtX2N1cnJlbnRQb2ludDsKICAgICAgICAgfQogCi0gICAgICAgIG1fY29uc3VtZXIt
PmN1cnZlVG9DdWJpYyhwb2ludDEsIHBvaW50MiwgcG9pbnQzLCBBYnNvbHV0ZUNvb3JkaW5hdGVz
KTsKKyAgICAgICAgbV9jb25zdW1lci0+Y3VydmVUb0N1YmljKHBvaW50MSwgcG9pbnQyLCB0YXJn
ZXRQb2ludCwgQWJzb2x1dGVDb29yZGluYXRlcyk7CiAKICAgICAgICAgbV9jb250cm9sUG9pbnQg
PSBwb2ludDI7Ci0gICAgICAgIG1fY3VycmVudFBvaW50ID0gcG9pbnQzOworICAgICAgICBtX2N1
cnJlbnRQb2ludCA9IHRhcmdldFBvaW50OwogICAgIH0gZWxzZQotICAgICAgICBtX2NvbnN1bWVy
LT5jdXJ2ZVRvQ3ViaWNTbW9vdGgocG9pbnQyLCBwb2ludDMsIG1fbW9kZSk7CisgICAgICAgIG1f
Y29uc3VtZXItPmN1cnZlVG9DdWJpY1Ntb290aChwb2ludDIsIHRhcmdldFBvaW50LCBtX21vZGUp
OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yMDQsMzMgKzIwMiwzMyBAQCBib29sIFNWR1Bh
dGhQYXJzZXI6OnBhcnNlQ3VydmVUb1F1YWRyYXRpCiAgICAgZmxvYXQgeTE7CiAgICAgZmxvYXQg
dG9YOwogICAgIGZsb2F0IHRvWTsKLSAgICBpZiAoIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwg
eDEpCi0gICAgICAgIHx8ICFwYXJzZU51bWJlcihtX3B0ciwgbV9lbmQsIHkxKQotICAgICAgICB8
fCAhcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5kLCB0b1gpCi0gICAgICAgIHx8ICFwYXJzZU51bWJl
cihtX3B0ciwgbV9lbmQsIHRvWSkpCisgICAgaWYgKCFtX3NvdXJjZS0+cGFyc2VGbG9hdCh4MSkK
KyAgICAgICAgfHwgIW1fc291cmNlLT5wYXJzZUZsb2F0KHkxKQorICAgICAgICB8fCAhbV9zb3Vy
Y2UtPnBhcnNlRmxvYXQodG9YKQorICAgICAgICB8fCAhbV9zb3VyY2UtPnBhcnNlRmxvYXQodG9Z
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRmxvYXRQb2ludCBwb2ludDModG9YLCB0
b1kpOwotICAgIGlmIChtX25vcm1hbGl6ZWQpIHsKKyAgICBGbG9hdFBvaW50IHRhcmdldFBvaW50
KHRvWCwgdG9ZKTsKKyAgICBpZiAobV9wYXRoUGFyc2luZ01vZGUgPT0gTm9ybWFsaXplZFBhcnNp
bmcpIHsKICAgICAgICAgRmxvYXRQb2ludCBwb2ludDEgPSBtX2N1cnJlbnRQb2ludDsKICAgICAg
ICAgcG9pbnQxLm1vdmUoMiAqIHgxLCAyICogeTEpOwogICAgICAgICBGbG9hdFBvaW50IHBvaW50
Mih0b1ggKyAyICogeDEsIHRvWSArIDIgKiB5MSk7CiAgICAgICAgIGlmIChtX21vZGUgPT0gUmVs
YXRpdmVDb29yZGluYXRlcykgewogICAgICAgICAgICAgcG9pbnQxLm1vdmUoMiAqIG1fY3VycmVu
dFBvaW50LngoKSwgMiAqIG1fY3VycmVudFBvaW50LnkoKSk7CiAgICAgICAgICAgICBwb2ludDIu
bW92ZSgzICogbV9jdXJyZW50UG9pbnQueCgpLCAzICogbV9jdXJyZW50UG9pbnQueSgpKTsKLSAg
ICAgICAgICAgIHBvaW50MyArPSBtX2N1cnJlbnRQb2ludDsKKyAgICAgICAgICAgIHRhcmdldFBv
aW50ICs9IG1fY3VycmVudFBvaW50OwogICAgICAgICB9CiAgICAgICAgIHBvaW50MS5zY2FsZShn
T25lT3ZlclRocmVlLCBnT25lT3ZlclRocmVlKTsKICAgICAgICAgcG9pbnQyLnNjYWxlKGdPbmVP
dmVyVGhyZWUsIGdPbmVPdmVyVGhyZWUpOwogCi0gICAgICAgIG1fY29uc3VtZXItPmN1cnZlVG9D
dWJpYyhwb2ludDEsIHBvaW50MiwgcG9pbnQzLCBBYnNvbHV0ZUNvb3JkaW5hdGVzKTsKKyAgICAg
ICAgbV9jb25zdW1lci0+Y3VydmVUb0N1YmljKHBvaW50MSwgcG9pbnQyLCB0YXJnZXRQb2ludCwg
QWJzb2x1dGVDb29yZGluYXRlcyk7CiAKICAgICAgICAgbV9jb250cm9sUG9pbnQgPSBGbG9hdFBv
aW50KHgxLCB5MSk7CiAgICAgICAgIGlmIChtX21vZGUgPT0gUmVsYXRpdmVDb29yZGluYXRlcykK
ICAgICAgICAgICAgIG1fY29udHJvbFBvaW50ICs9IG1fY3VycmVudFBvaW50OwotICAgICAgICBt
X2N1cnJlbnRQb2ludCA9IHBvaW50MzsKKyAgICAgICAgbV9jdXJyZW50UG9pbnQgPSB0YXJnZXRQ
b2ludDsKICAgICB9IGVsc2UKLSAgICAgICAgbV9jb25zdW1lci0+Y3VydmVUb1F1YWRyYXRpYyhG
bG9hdFBvaW50KHgxLCB5MSksIHBvaW50MywgbV9tb2RlKTsKKyAgICAgICAgbV9jb25zdW1lci0+
Y3VydmVUb1F1YWRyYXRpYyhGbG9hdFBvaW50KHgxLCB5MSksIHRhcmdldFBvaW50LCBtX21vZGUp
OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yMzgsMzIgKzIzNiwzMyBAQCBib29sIFNWR1Bh
dGhQYXJzZXI6OnBhcnNlQ3VydmVUb1F1YWRyYXRpCiB7CiAgICAgZmxvYXQgdG9YOwogICAgIGZs
b2F0IHRvWTsKLSAgICBpZiAoIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwgdG9YKSB8fCAhcGFy
c2VOdW1iZXIobV9wdHIsIG1fZW5kLCB0b1kpKQorICAgIGlmICghbV9zb3VyY2UtPnBhcnNlRmxv
YXQodG9YKSB8fCAhbV9zb3VyY2UtPnBhcnNlRmxvYXQodG9ZKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmIChtX2xhc3RDb21tYW5kICE9ICdxJwotICAgICAgICAmJiBtX2xhc3RDb21t
YW5kICE9ICdRJwotICAgICAgICAmJiBtX2xhc3RDb21tYW5kICE9ICd0JwotICAgICAgICAmJiBt
X2xhc3RDb21tYW5kICE9ICdUJykKKworICAgIGlmIChtX2xhc3RDb21tYW5kICE9IFBhdGhTZWdD
dXJ2ZVRvUXVhZHJhdGljQWJzCisgICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1
cnZlVG9RdWFkcmF0aWNSZWwKKyAgICAgICAgJiYgbV9sYXN0Q29tbWFuZCAhPSBQYXRoU2VnQ3Vy
dmVUb1F1YWRyYXRpY1Ntb290aEFicworICAgICAgICAmJiBtX2xhc3RDb21tYW5kICE9IFBhdGhT
ZWdDdXJ2ZVRvUXVhZHJhdGljU21vb3RoUmVsKQogICAgICAgICBtX2NvbnRyb2xQb2ludCA9IG1f
Y3VycmVudFBvaW50OwogCi0gICAgaWYgKG1fbm9ybWFsaXplZCkgeworICAgIGlmIChtX3BhdGhQ
YXJzaW5nTW9kZSA9PSBOb3JtYWxpemVkUGFyc2luZykgewogICAgICAgICBGbG9hdFBvaW50IGN1
YmljUG9pbnQgPSBtX2N1cnJlbnRQb2ludDsKICAgICAgICAgY3ViaWNQb2ludC5zY2FsZSgyLCAy
KTsKICAgICAgICAgY3ViaWNQb2ludC5tb3ZlKC1tX2NvbnRyb2xQb2ludC54KCksIC1tX2NvbnRy
b2xQb2ludC55KCkpOwogICAgICAgICBGbG9hdFBvaW50IHBvaW50MShtX2N1cnJlbnRQb2ludC54
KCkgKyAyICogY3ViaWNQb2ludC54KCksIG1fY3VycmVudFBvaW50LnkoKSArIDIgKiBjdWJpY1Bv
aW50LnkoKSk7CiAgICAgICAgIEZsb2F0UG9pbnQgcG9pbnQyKHRvWCArIDIgKiBjdWJpY1BvaW50
LngoKSwgdG9ZICsgMiAqIGN1YmljUG9pbnQueSgpKTsKLSAgICAgICAgRmxvYXRQb2ludCBwb2lu
dDModG9YLCB0b1kpOworICAgICAgICBGbG9hdFBvaW50IHRhcmdldFBvaW50KHRvWCwgdG9ZKTsK
ICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZWxhdGl2ZUNvb3JkaW5hdGVzKSB7CiAgICAgICAgICAg
ICBwb2ludDIgKz0gbV9jdXJyZW50UG9pbnQ7Ci0gICAgICAgICAgICBwb2ludDMgKz0gbV9jdXJy
ZW50UG9pbnQ7CisgICAgICAgICAgICB0YXJnZXRQb2ludCArPSBtX2N1cnJlbnRQb2ludDsKICAg
ICAgICAgfQogICAgICAgICBwb2ludDEuc2NhbGUoZ09uZU92ZXJUaHJlZSwgZ09uZU92ZXJUaHJl
ZSk7CiAgICAgICAgIHBvaW50Mi5zY2FsZShnT25lT3ZlclRocmVlLCBnT25lT3ZlclRocmVlKTsK
IAotICAgICAgICBtX2NvbnN1bWVyLT5jdXJ2ZVRvQ3ViaWMocG9pbnQxLCBwb2ludDIsIHBvaW50
MywgQWJzb2x1dGVDb29yZGluYXRlcyk7CisgICAgICAgIG1fY29uc3VtZXItPmN1cnZlVG9DdWJp
Yyhwb2ludDEsIHBvaW50MiwgdGFyZ2V0UG9pbnQsIEFic29sdXRlQ29vcmRpbmF0ZXMpOwogCiAg
ICAgICAgIG1fY29udHJvbFBvaW50ID0gY3ViaWNQb2ludDsKLSAgICAgICAgbV9jdXJyZW50UG9p
bnQgPSBwb2ludDM7CisgICAgICAgIG1fY3VycmVudFBvaW50ID0gdGFyZ2V0UG9pbnQ7CiAgICAg
fSBlbHNlCiAgICAgICAgIG1fY29uc3VtZXItPmN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoRmxvYXRQ
b2ludCh0b1gsIHRvWSksIG1fbW9kZSk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNzgsMTE1ICsy
NzcsMTI1IEBAIGJvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VBcmNUb1NlZ21lbnQoKQogICAgIGZs
b2F0IHJ5OwogICAgIGZsb2F0IHRvWDsKICAgICBmbG9hdCB0b1k7Ci0gICAgaWYgKCFwYXJzZU51
bWJlcihtX3B0ciwgbV9lbmQsIHJ4KQotICAgICAgICB8fCAhcGFyc2VOdW1iZXIobV9wdHIsIG1f
ZW5kLCByeSkKLSAgICAgICAgfHwgIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwgYW5nbGUpCi0g
ICAgICAgIHx8ICFwYXJzZUFyY0ZsYWcobV9wdHIsIG1fZW5kLCBsYXJnZUFyYykKLSAgICAgICAg
fHwgIXBhcnNlQXJjRmxhZyhtX3B0ciwgbV9lbmQsIHN3ZWVwKQotICAgICAgICB8fCAhcGFyc2VO
dW1iZXIobV9wdHIsIG1fZW5kLCB0b1gpCi0gICAgICAgIHx8ICFwYXJzZU51bWJlcihtX3B0ciwg
bV9lbmQsIHRvWSkpCisgICAgaWYgKCFtX3NvdXJjZS0+cGFyc2VGbG9hdChyeCkKKyAgICAgICAg
fHwgIW1fc291cmNlLT5wYXJzZUZsb2F0KHJ5KQorICAgICAgICB8fCAhbV9zb3VyY2UtPnBhcnNl
RmxvYXQoYW5nbGUpCisgICAgICAgIHx8ICFtX3NvdXJjZS0+cGFyc2VGbGFnKGxhcmdlQXJjKQor
ICAgICAgICB8fCAhbV9zb3VyY2UtPnBhcnNlRmxhZyhzd2VlcCkKKyAgICAgICAgfHwgIW1fc291
cmNlLT5wYXJzZUZsb2F0KHRvWCkKKyAgICAgICAgfHwgIW1fc291cmNlLT5wYXJzZUZsb2F0KHRv
WSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEZsb2F0UG9pbnQgcG9pbnQyID0gRmxv
YXRQb2ludCh0b1gsIHRvWSk7CisgICAgRmxvYXRQb2ludCB0YXJnZXRQb2ludCA9IEZsb2F0UG9p
bnQodG9YLCB0b1kpOwogICAgIC8vIElmIHJ4ID0gMCBvciByeSA9IDAgdGhlbiB0aGlzIGFyYyBp
cyB0cmVhdGVkIGFzIGEgc3RyYWlnaHQgbGluZSBzZWdtZW50IChhICJsaW5ldG8iKSBqb2luaW5n
IHRoZSBlbmRwb2ludHMuCiAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2ltcGxub3Rl
Lmh0bWwjQXJjT3V0T2ZSYW5nZVBhcmFtZXRlcnMKICAgICByeCA9IGZhYnNmKHJ4KTsKICAgICBy
eSA9IGZhYnNmKHJ5KTsKICAgICBpZiAoIXJ4IHx8ICFyeSkgewotICAgICAgICBpZiAobV9ub3Jt
YWxpemVkKSB7CisgICAgICAgIGlmIChtX3BhdGhQYXJzaW5nTW9kZSA9PSBOb3JtYWxpemVkUGFy
c2luZykgewogICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZWxhdGl2ZUNvb3JkaW5hdGVzKQot
ICAgICAgICAgICAgICAgIG1fY3VycmVudFBvaW50ICs9IHBvaW50MjsKKyAgICAgICAgICAgICAg
ICBtX2N1cnJlbnRQb2ludCArPSB0YXJnZXRQb2ludDsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBtX2N1cnJlbnRQb2ludCA9IHBvaW50MjsKKyAgICAgICAgICAgICAgICBtX2N1
cnJlbnRQb2ludCA9IHRhcmdldFBvaW50OwogICAgICAgICAgICAgbV9jb25zdW1lci0+bGluZVRv
KG1fY3VycmVudFBvaW50LCBBYnNvbHV0ZUNvb3JkaW5hdGVzKTsKICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBtX2NvbnN1bWVyLT5saW5lVG8ocG9pbnQyLCBtX21vZGUpOworICAgICAgICAg
ICAgbV9jb25zdW1lci0+bGluZVRvKHRhcmdldFBvaW50LCBtX21vZGUpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAobV9ub3JtYWxpemVkKSB7CisgICAgaWYgKG1fcGF0
aFBhcnNpbmdNb2RlID09IE5vcm1hbGl6ZWRQYXJzaW5nKSB7CiAgICAgICAgIEZsb2F0UG9pbnQg
cG9pbnQxID0gbV9jdXJyZW50UG9pbnQ7CiAgICAgICAgIGlmIChtX21vZGUgPT0gUmVsYXRpdmVD
b29yZGluYXRlcykKLSAgICAgICAgICAgIHBvaW50MiArPSBtX2N1cnJlbnRQb2ludDsKLSAgICAg
ICAgbV9jdXJyZW50UG9pbnQgPSBwb2ludDI7Ci0gICAgICAgIHJldHVybiBkZWNvbXBvc2VBcmNU
b0N1YmljKGFuZ2xlLCByeCwgcnksIHBvaW50MSwgcG9pbnQyLCBsYXJnZUFyYywgc3dlZXApOwor
ICAgICAgICAgICAgdGFyZ2V0UG9pbnQgKz0gbV9jdXJyZW50UG9pbnQ7CisgICAgICAgIG1fY3Vy
cmVudFBvaW50ID0gdGFyZ2V0UG9pbnQ7CisgICAgICAgIHJldHVybiBkZWNvbXBvc2VBcmNUb0N1
YmljKGFuZ2xlLCByeCwgcnksIHBvaW50MSwgdGFyZ2V0UG9pbnQsIGxhcmdlQXJjLCBzd2VlcCk7
CiAgICAgfQotICAgIG1fY29uc3VtZXItPmFyY1RvKHBvaW50MiwgcngsIHJ5LCBhbmdsZSwgbGFy
Z2VBcmMsIHN3ZWVwLCBtX21vZGUpOworICAgIG1fY29uc3VtZXItPmFyY1RvKHJ4LCByeSwgYW5n
bGUsIGxhcmdlQXJjLCBzd2VlcCwgdGFyZ2V0UG9pbnQsIG1fbW9kZSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VQYXRoRGF0YVN0cmluZyhjb25zdCBT
dHJpbmcmIHMsIGJvb2wgbm9ybWFsaXplZCkKK2Jvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VQYXRo
RGF0YUZyb21Tb3VyY2UoUGFzc093blB0cjxTVkdQYXRoU291cmNlPiBzb3VyY2UsIFBhdGhQYXJz
aW5nTW9kZSBwYXRoUGFyc2luZ01vZGUpCiB7Ci0gICAgbV9wdHIgPSBzLmNoYXJhY3RlcnMoKTsK
LSAgICBtX2VuZCA9IG1fcHRyICsgcy5sZW5ndGgoKTsKLSAgICBtX25vcm1hbGl6ZWQgPSBub3Jt
YWxpemVkOworICAgIEFTU0VSVChzb3VyY2UpOworCisgICAgbV9zb3VyY2UgPSBzb3VyY2U7Cisg
ICAgbV9wYXRoUGFyc2luZ01vZGUgPSBwYXRoUGFyc2luZ01vZGU7CiAKICAgICBtX2NvbnRyb2xQ
b2ludCA9IEZsb2F0UG9pbnQoKTsKICAgICBtX2N1cnJlbnRQb2ludCA9IEZsb2F0UG9pbnQoKTsK
ICAgICBtX3N1YlBhdGhQb2ludCA9IEZsb2F0UG9pbnQoKTsKLSAgICBtX3BhdGhDbG9zZWQgPSB0
cnVlOworICAgIG1fY2xvc2VQYXRoID0gdHJ1ZTsKIAogICAgIC8vIFNraXAgYW55IGxlYWRpbmcg
c3BhY2VzLgotICAgIGlmICghc2tpcE9wdGlvbmFsU3BhY2VzKG1fcHRyLCBtX2VuZCkpCisgICAg
aWYgKCFtX3NvdXJjZS0+c2tpcFNwYWNlcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBjaGFyIGNvbW1hbmQgPSAqKG1fcHRyKyspOwotICAgIG1fbGFzdENvbW1hbmQgPSAnICc7Cisg
ICAgU1ZHUGF0aFNlZ1R5cGUgY29tbWFuZCA9IG1fc291cmNlLT5wYXJzZVNWR1NlZ21lbnRUeXBl
KCk7CisgICAgbV9sYXN0Q29tbWFuZCA9IFBhdGhTZWdVbmtub3duOworCiAgICAgLy8gUGF0aCBt
dXN0IHN0YXJ0IHdpdGggbW92ZXRvLgotICAgIGlmIChjb21tYW5kICE9ICdtJyAmJiBjb21tYW5k
ICE9ICdNJykKKyAgICBpZiAoY29tbWFuZCAhPSBQYXRoU2VnTW92ZVRvQWJzICYmIGNvbW1hbmQg
IT0gUGF0aFNlZ01vdmVUb1JlbCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgd2hpbGUg
KHRydWUpIHsKICAgICAgICAgLy8gU2tpcCBzcGFjZXMgYmV0d2VlbiBjb21tYW5kIGFuZCBmaXJz
dCBjb29yZGluYXRlLgotICAgICAgICBza2lwT3B0aW9uYWxTcGFjZXMobV9wdHIsIG1fZW5kKTsK
LSAgICAgICAgbV9tb2RlID0gY29tbWFuZCA+PSAnYScgJiYgY29tbWFuZCA8PSAneicgPyBSZWxh
dGl2ZUNvb3JkaW5hdGVzIDogQWJzb2x1dGVDb29yZGluYXRlczsKKyAgICAgICAgbV9zb3VyY2Ut
PnNraXBTcGFjZXMoKTsKKyAgICAgICAgbV9tb2RlID0gQWJzb2x1dGVDb29yZGluYXRlczsKICAg
ICAgICAgc3dpdGNoIChjb21tYW5kKSB7Ci0gICAgICAgIGNhc2UgJ20nOgotICAgICAgICBjYXNl
ICdNJzoKKyAgICAgICAgY2FzZSBQYXRoU2VnTW92ZVRvUmVsOgorICAgICAgICAgICAgbV9tb2Rl
ID0gUmVsYXRpdmVDb29yZGluYXRlczsKKyAgICAgICAgY2FzZSBQYXRoU2VnTW92ZVRvQWJzOgog
ICAgICAgICAgICAgaWYgKCFwYXJzZU1vdmVUb1NlZ21lbnQoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnbCc6Ci0gICAg
ICAgIGNhc2UgJ0wnOgorICAgICAgICBjYXNlIFBhdGhTZWdMaW5lVG9SZWw6CisgICAgICAgICAg
ICBtX21vZGUgPSBSZWxhdGl2ZUNvb3JkaW5hdGVzOworICAgICAgICBjYXNlIFBhdGhTZWdMaW5l
VG9BYnM6CiAgICAgICAgICAgICBpZiAoIXBhcnNlTGluZVRvU2VnbWVudCgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICdo
JzoKLSAgICAgICAgY2FzZSAnSCc6CisgICAgICAgIGNhc2UgUGF0aFNlZ0xpbmVUb0hvcml6b250
YWxSZWw6CisgICAgICAgICAgICBtX21vZGUgPSBSZWxhdGl2ZUNvb3JkaW5hdGVzOworICAgICAg
ICBjYXNlIFBhdGhTZWdMaW5lVG9Ib3Jpem9udGFsQWJzOgogICAgICAgICAgICAgaWYgKCFwYXJz
ZUxpbmVUb0hvcml6b250YWxTZWdtZW50KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3YnOgotICAgICAgICBjYXNlICdW
JzoKKyAgICAgICAgY2FzZSBQYXRoU2VnTGluZVRvVmVydGljYWxSZWw6CisgICAgICAgICAgICBt
X21vZGUgPSBSZWxhdGl2ZUNvb3JkaW5hdGVzOworICAgICAgICBjYXNlIFBhdGhTZWdMaW5lVG9W
ZXJ0aWNhbEFiczoKICAgICAgICAgICAgIGlmICghcGFyc2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSAneic6Ci0gICAgICAgIGNhc2UgJ1onOgorICAgICAgICBjYXNlIFBhdGhTZWdD
bG9zZVBhdGg6CiAgICAgICAgICAgICBwYXJzZUNsb3NlUGF0aFNlZ21lbnQoKTsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlICdjJzoKLSAgICAgICAgY2FzZSAnQyc6CisgICAgICAg
IGNhc2UgUGF0aFNlZ0N1cnZlVG9DdWJpY1JlbDoKKyAgICAgICAgICAgIG1fbW9kZSA9IFJlbGF0
aXZlQ29vcmRpbmF0ZXM7CisgICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9DdWJpY0FiczoKICAg
ICAgICAgICAgIGlmICghcGFyc2VDdXJ2ZVRvQ3ViaWNTZWdtZW50KCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3MnOgot
ICAgICAgICBjYXNlICdTJzoKKyAgICAgICAgY2FzZSBQYXRoU2VnQ3VydmVUb0N1YmljU21vb3Ro
UmVsOgorICAgICAgICAgICAgbV9tb2RlID0gUmVsYXRpdmVDb29yZGluYXRlczsKKyAgICAgICAg
Y2FzZSBQYXRoU2VnQ3VydmVUb0N1YmljU21vb3RoQWJzOgogICAgICAgICAgICAgaWYgKCFwYXJz
ZUN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAncSc6Ci0gICAgICAgIGNhc2Ug
J1EnOgorICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljUmVsOgorICAgICAgICAg
ICAgbV9tb2RlID0gUmVsYXRpdmVDb29yZGluYXRlczsKKyAgICAgICAgY2FzZSBQYXRoU2VnQ3Vy
dmVUb1F1YWRyYXRpY0FiczoKICAgICAgICAgICAgIGlmICghcGFyc2VDdXJ2ZVRvUXVhZHJhdGlj
U2VnbWVudCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlICd0JzoKLSAgICAgICAgY2FzZSAnVCc6CisgICAgICAgIGNhc2Ug
UGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhSZWw6CisgICAgICAgICAgICBtX21vZGUgPSBS
ZWxhdGl2ZUNvb3JkaW5hdGVzOworICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGlj
U21vb3RoQWJzOgogICAgICAgICAgICAgaWYgKCFwYXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGhT
ZWdtZW50KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgJ2EnOgotICAgICAgICBjYXNlICdBJzoKKyAgICAgICAgY2FzZSBQ
YXRoU2VnQXJjUmVsOgorICAgICAgICAgICAgbV9tb2RlID0gUmVsYXRpdmVDb29yZGluYXRlczsK
KyAgICAgICAgY2FzZSBQYXRoU2VnQXJjQWJzOgogICAgICAgICAgICAgaWYgKCFwYXJzZUFyY1Rv
U2VnbWVudCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMzk1LDIzICs0MDQsMjYgQEAgYm9vbCBTVkdQYXRoUGFyc2VyOjpwYXJzZVBhdGhE
YXRhU3RyaW5nKAogICAgICAgICB9CiAgICAgICAgIG1fbGFzdENvbW1hbmQgPSBjb21tYW5kOwog
Ci0gICAgICAgIGlmIChtX3B0ciA+PSBtX2VuZCkKKyAgICAgICAgaWYgKG1fc291cmNlLT5lbmRP
ZlN0cmVhbSgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgLy8gQ2hlY2sg
Zm9yIHJlbWFpbmluZyBjb29yZGluYXRlcyBpbiB0aGUgY3VycmVudCBjb21tYW5kLgotICAgICAg
ICBpZiAoKCptX3B0ciA9PSAnKycgfHwgKm1fcHRyID09ICctJyB8fCAqbV9wdHIgPT0gJy4nIHx8
ICgqbV9wdHIgPj0gJzAnICYmICptX3B0ciA8PSAnOScpKQotICAgICAgICAgICAgJiYgY29tbWFu
ZCAhPSAneicgJiYgY29tbWFuZCAhPSAnWicpIHsKLSAgICAgICAgICAgIGlmIChjb21tYW5kID09
ICdNJykKLSAgICAgICAgICAgICAgICBjb21tYW5kID0gJ0wnOwotICAgICAgICAgICAgZWxzZSBp
ZiAoY29tbWFuZCA9PSAnbScpCi0gICAgICAgICAgICAgICAgY29tbWFuZCA9ICdsJzsKKyAgICAg
ICAgaWYgKG1fc291cmNlLT5oYXNSZW1haW5pbmdDb29yZGluYXRlc0luQ3VycmVudENvbW1hbmQo
KSAmJiBjb21tYW5kICE9IFBhdGhTZWdDbG9zZVBhdGgpIHsKKyAgICAgICAgICAgIGlmIChjb21t
YW5kID09IFBhdGhTZWdNb3ZlVG9BYnMpCisgICAgICAgICAgICAgICAgY29tbWFuZCA9IFBhdGhT
ZWdMaW5lVG9BYnM7CisgICAgICAgICAgICBlbHNlIGlmIChjb21tYW5kID09IFBhdGhTZWdNb3Zl
VG9SZWwpCisgICAgICAgICAgICAgICAgY29tbWFuZCA9IFBhdGhTZWdMaW5lVG9SZWw7CiAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgY29tbWFuZCA9ICoobV9wdHIrKyk7CisgICAgICAgICAg
ICBjb21tYW5kID0gbV9zb3VyY2UtPnBhcnNlU1ZHU2VnbWVudFR5cGUoKTsKIAotICAgICAgICBp
ZiAobV9sYXN0Q29tbWFuZCAhPSAnQycgJiYgbV9sYXN0Q29tbWFuZCAhPSAnYycKLSAgICAgICAg
ICAgICYmIG1fbGFzdENvbW1hbmQgIT0gJ1MnICYmIG1fbGFzdENvbW1hbmQgIT0gJ3MnCi0gICAg
ICAgICAgICAmJiBtX2xhc3RDb21tYW5kICE9ICdRJyAmJiBtX2xhc3RDb21tYW5kICE9ICdxJwot
ICAgICAgICAgICAgJiYgbV9sYXN0Q29tbWFuZCAhPSAnVCcgJiYgbV9sYXN0Q29tbWFuZCAhPSAn
dCcpCisgICAgICAgIGlmIChtX2xhc3RDb21tYW5kICE9IFBhdGhTZWdDdXJ2ZVRvQ3ViaWNBYnMK
KyAgICAgICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9DdWJpY1JlbAor
ICAgICAgICAgICAgJiYgbV9sYXN0Q29tbWFuZCAhPSBQYXRoU2VnQ3VydmVUb0N1YmljU21vb3Ro
QWJzCisgICAgICAgICAgICAmJiBtX2xhc3RDb21tYW5kICE9IFBhdGhTZWdDdXJ2ZVRvQ3ViaWNT
bW9vdGhSZWwKKyAgICAgICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9R
dWFkcmF0aWNBYnMKKyAgICAgICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZl
VG9RdWFkcmF0aWNSZWwKKyAgICAgICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1
cnZlVG9RdWFkcmF0aWNTbW9vdGhBYnMKKyAgICAgICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0g
UGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhSZWwpCiAgICAgICAgICAgICBtX2NvbnRyb2xQ
b2ludCA9IG1fY3VycmVudFBvaW50OwogICAgIH0KIApAQCAtNDkyLDEzICs1MDQsMTMgQEAgYm9v
bCBTVkdQYXRoUGFyc2VyOjpkZWNvbXBvc2VBcmNUb0N1YmljKAogCiAgICAgICAgIHBvaW50MSA9
IEZsb2F0UG9pbnQoY29zU3RhcnRUaGV0YSAtIHQgKiBzaW5TdGFydFRoZXRhLCBzaW5TdGFydFRo
ZXRhICsgdCAqIGNvc1N0YXJ0VGhldGEpOwogICAgICAgICBwb2ludDEubW92ZShjZW50ZXJQb2lu
dC54KCksIGNlbnRlclBvaW50LnkoKSk7Ci0gICAgICAgIEZsb2F0UG9pbnQgcG9pbnQzID0gRmxv
YXRQb2ludChjb3NFbmRUaGV0YSwgc2luRW5kVGhldGEpOwotICAgICAgICBwb2ludDMubW92ZShj
ZW50ZXJQb2ludC54KCksIGNlbnRlclBvaW50LnkoKSk7Ci0gICAgICAgIHBvaW50MiA9IHBvaW50
MzsKKyAgICAgICAgRmxvYXRQb2ludCB0YXJnZXRQb2ludCA9IEZsb2F0UG9pbnQoY29zRW5kVGhl
dGEsIHNpbkVuZFRoZXRhKTsKKyAgICAgICAgdGFyZ2V0UG9pbnQubW92ZShjZW50ZXJQb2ludC54
KCksIGNlbnRlclBvaW50LnkoKSk7CisgICAgICAgIHBvaW50MiA9IHRhcmdldFBvaW50OwogICAg
ICAgICBwb2ludDIubW92ZSh0ICogc2luRW5kVGhldGEsIC10ICogY29zRW5kVGhldGEpOwogCiAg
ICAgICAgIG1fY29uc3VtZXItPmN1cnZlVG9DdWJpYyhwb2ludFRyYW5zZm9ybS5tYXBQb2ludChw
b2ludDEpLCBwb2ludFRyYW5zZm9ybS5tYXBQb2ludChwb2ludDIpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcG9pbnRUcmFuc2Zvcm0ubWFwUG9pbnQocG9pbnQzKSwgQWJzb2x1
dGVDb29yZGluYXRlcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludFRy
YW5zZm9ybS5tYXBQb2ludCh0YXJnZXRQb2ludCksIEFic29sdXRlQ29vcmRpbmF0ZXMpOwogICAg
IH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmgJKHJldmlzaW9uIDY0
Nzg4KQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NywxNSArMjcsMjAgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aENvbnN1bWVyLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNlZy5o
IgorI2luY2x1ZGUgIlNWR1BhdGhTb3VyY2UuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFNWR1BhdGhQYXJzZXIgeworY2xhc3MgU1ZHUGF0aFBhcnNlciA6IHB1YmxpYyBOb25j
b3B5YWJsZSB7CiBwdWJsaWM6Ci0gICAgU1ZHUGF0aFBhcnNlcihTVkdQYXRoQ29uc3VtZXIqKTsK
KyAgICBTVkdQYXRoUGFyc2VyKCk7CiAgICAgflNWR1BhdGhQYXJzZXIoKTsKIAotICAgIGJvb2wg
cGFyc2VQYXRoRGF0YVN0cmluZyhjb25zdCBTdHJpbmcmLCBib29sIG5vcm1hbGl6ZWQgPSBmYWxz
ZSk7CisgICAgYm9vbCBwYXJzZVBhdGhEYXRhRnJvbVNvdXJjZShQYXNzT3duUHRyPFNWR1BhdGhT
b3VyY2U+IHNvdXJjZSwgUGF0aFBhcnNpbmdNb2RlIHBhdGhQYXJzaW5nTW9kZSk7CisgICAgdm9p
ZCBzZXRDdXJyZW50Q29uc3VtZXIoU1ZHUGF0aENvbnN1bWVyKiBjb25zdW1lcikgeyBtX2NvbnN1
bWVyID0gY29uc3VtZXI7IH0KIAogcHJpdmF0ZToKICAgICBib29sIGRlY29tcG9zZUFyY1RvQ3Vi
aWMoZmxvYXQsIGZsb2F0LCBmbG9hdCwgRmxvYXRQb2ludCYsIEZsb2F0UG9pbnQmLCBib29sIGxh
cmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcpOwpAQCAtNTAsMTMgKzU1LDEyIEBAIHByaXZhdGU6
CiAgICAgYm9vbCBwYXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50KCk7CiAgICAgYm9v
bCBwYXJzZUFyY1RvU2VnbWVudCgpOwogCisgICAgT3duUHRyPFNWR1BhdGhTb3VyY2U+IG1fc291
cmNlOwogICAgIFNWR1BhdGhDb25zdW1lciogbV9jb25zdW1lcjsKICAgICBQYXRoQ29vcmRpbmF0
ZU1vZGUgbV9tb2RlOwotICAgIGNvbnN0IFVDaGFyKiBtX3B0cjsKLSAgICBjb25zdCBVQ2hhciog
bV9lbmQ7Ci0gICAgY2hhciBtX2xhc3RDb21tYW5kOwotICAgIGJvb2wgbV9ub3JtYWxpemVkOwot
ICAgIGJvb2wgbV9wYXRoQ2xvc2VkOworICAgIFBhdGhQYXJzaW5nTW9kZSBtX3BhdGhQYXJzaW5n
TW9kZTsKKyAgICBTVkdQYXRoU2VnVHlwZSBtX2xhc3RDb21tYW5kOworICAgIGJvb2wgbV9jbG9z
ZVBhdGg7CiAgICAgRmxvYXRQb2ludCBtX2NvbnRyb2xQb2ludDsKICAgICBGbG9hdFBvaW50IG1f
Y3VycmVudFBvaW50OwogICAgIEZsb2F0UG9pbnQgbV9zdWJQYXRoUG9pbnQ7CkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdQYXRoUGFyc2VyRmFjdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdmcv
U1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNWRykK
KyNpbmNsdWRlICJTVkdQYXRoUGFyc2VyRmFjdG9yeS5oIgorCisjaW5jbHVkZSAiU1ZHUGF0aEJ1
aWxkZXIuaCIKKyNpbmNsdWRlICJTVkdQYXRoUGFyc2VyLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNl
Z0xpc3RCdWlsZGVyLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFN0cmluZ1NvdXJjZS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBTVkdQYXRoQnVpbGRlciogZ2xvYmFsU1ZHUGF0aEJ1
aWxkZXIoKQoreworICAgIHN0YXRpYyBTVkdQYXRoQnVpbGRlciogc19idWlsZGVyID0gMDsKKyAg
ICBpZiAoIXNfYnVpbGRlcikKKyAgICAgICAgc19idWlsZGVyID0gbmV3IFNWR1BhdGhCdWlsZGVy
OworCisgICAgcmV0dXJuIHNfYnVpbGRlcjsKK30KKworc3RhdGljIFNWR1BhdGhTZWdMaXN0QnVp
bGRlciogZ2xvYmFsU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyKCkKK3sKKyAgICBzdGF0aWMgU1ZHUGF0
aFNlZ0xpc3RCdWlsZGVyKiBzX2J1aWxkZXIgPSAwOworICAgIGlmICghc19idWlsZGVyKQorICAg
ICAgICBzX2J1aWxkZXIgPSBuZXcgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOworCisgICAgcmV0dXJu
IHNfYnVpbGRlcjsKK30KKworc3RhdGljIFNWR1BhdGhQYXJzZXIqIGdsb2JhbFNWR1BhdGhQYXJz
ZXIoKQoreworICAgIHN0YXRpYyBTVkdQYXRoUGFyc2VyKiBzX3BhcnNlciA9IDA7CisgICAgaWYg
KCFzX3BhcnNlcikKKyAgICAgICAgc19wYXJzZXIgPSBuZXcgU1ZHUGF0aFBhcnNlcjsKKworICAg
IHJldHVybiBzX3BhcnNlcjsKK30KKworU1ZHUGF0aFBhcnNlckZhY3RvcnkqIFNWR1BhdGhQYXJz
ZXJGYWN0b3J5OjpzZWxmKCkKK3sKKyAgICBzdGF0aWMgU1ZHUGF0aFBhcnNlckZhY3RvcnkqIHNf
aW5zdGFuY2UgPSAwOworICAgIGlmICghc19pbnN0YW5jZSkKKyAgICAgICAgc19pbnN0YW5jZSA9
IG5ldyBTVkdQYXRoUGFyc2VyRmFjdG9yeTsKKworICAgIHJldHVybiBzX2luc3RhbmNlOworfQor
CitTVkdQYXRoUGFyc2VyRmFjdG9yeTo6U1ZHUGF0aFBhcnNlckZhY3RvcnkoKQoreworfQorCitT
VkdQYXRoUGFyc2VyRmFjdG9yeTo6flNWR1BhdGhQYXJzZXJGYWN0b3J5KCkKK3sKK30KKworYm9v
bCBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6YnVpbGRQYXRoRnJvbVN0cmluZyhjb25zdCBTdHJpbmcm
IGQsIFBhdGgmIHJlc3VsdCkKK3sKKyAgICBpZiAoZC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIFNWR1BhdGhCdWlsZGVyKiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0aEJ1
aWxkZXIoKTsKKyAgICBidWlsZGVyLT5zZXRDdXJyZW50UGF0aCgmcmVzdWx0KTsKKworICAgIFNW
R1BhdGhQYXJzZXIqIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQYXJzZXIoKTsKKyAgICBwYXJzZXIt
PnNldEN1cnJlbnRDb25zdW1lcihidWlsZGVyKTsKKworICAgIHJldHVybiBwYXJzZXItPnBhcnNl
UGF0aERhdGFGcm9tU291cmNlKFNWR1BhdGhTdHJpbmdTb3VyY2U6OmNyZWF0ZShkKSwgTm9ybWFs
aXplZFBhcnNpbmcpOworfQorCitib29sIFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpidWlsZFNWR1Bh
dGhTZWdMaXN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIGQsIFNWR1BhdGhTZWdMaXN0KiByZXN1
bHQsIFBhdGhQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSkKK3sKKyAgICBBU1NFUlQocmVzdWx0KTsK
KyAgICBpZiAoZC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFNWR1Bh
dGhTZWdMaXN0QnVpbGRlciogYnVpbGRlciA9IGdsb2JhbFNWR1BhdGhTZWdMaXN0QnVpbGRlcigp
OworICAgIGJ1aWxkZXItPnNldEN1cnJlbnRTVkdQYXRoU2VnTGlzdChyZXN1bHQpOworCisgICAg
U1ZHUGF0aFBhcnNlciogcGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcigpOworICAgIHBhcnNl
ci0+c2V0Q3VycmVudENvbnN1bWVyKGJ1aWxkZXIpOworCisgICAgcmV0dXJuIHBhcnNlci0+cGFy
c2VQYXRoRGF0YUZyb21Tb3VyY2UoU1ZHUGF0aFN0cmluZ1NvdXJjZTo6Y3JlYXRlKGQpLCBwYXJz
aW5nTW9kZSk7Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFy
c2VyRmFjdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0
b3J5LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyRmFjdG9yeS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNl
YXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVm
IFNWR1BhdGhQYXJzZXJGYWN0b3J5X2gKKyNkZWZpbmUgU1ZHUGF0aFBhcnNlckZhY3RvcnlfaAor
CisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJQYXRoLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKKyNpbmNsdWRlICJTVkdQYXRoQ29uc3VtZXIuaCIKKyNpbmNsdWRlICJTVkdQYXRo
U2VnTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNWR1BhdGhQYXJzZXJG
YWN0b3J5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU1ZHUGF0aFBhcnNlckZhY3RvcnkqIHNlbGYo
KTsKKworICAgIGJvb2wgYnVpbGRQYXRoRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmLCBQYXRoJik7
CisKKyAgICBib29sIGJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYs
IFNWR1BhdGhTZWdMaXN0KiwgUGF0aFBhcnNpbmdNb2RlKTsKKworcHJpdmF0ZToKKyAgICBTVkdQ
YXRoUGFyc2VyRmFjdG9yeSgpOworICAgIH5TVkdQYXRoUGFyc2VyRmFjdG9yeSgpOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykKKyNlbmRpZiAv
LyBTVkdQYXRoUGFyc2VyRmFjdG9yeV9oCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZy5oCShyZXZpc2lvbiA2NDc4OCkK
KysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNjMgKzI4
LDg4IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewotICAgIGNsYXNzIFNWR1BhdGhFbGVtZW50OwotICAgIGNsYXNzIFNWR1N0eWxlZEVsZW1lbnQ7
CiAKLSAgICBjbGFzcyBTVkdQYXRoU2VnIDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHUGF0aFNlZz4g
ewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+U1ZHUGF0aFNlZygpIHsgfQotCi0gICAg
ICAgIGVudW0gU1ZHUGF0aFNlZ1R5cGUgewotICAgICAgICAgICAgUEFUSFNFR19VTktOT1dOICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMCwKLSAgICAgICAgICAgIFBBVEhTRUdfQ0xPU0VQQVRI
ICAgICAgICAgICAgICAgICAgICAgICA9IDEsCi0gICAgICAgICAgICBQQVRIU0VHX01PVkVUT19B
QlMgICAgICAgICAgICAgICAgICAgICAgPSAyLAotICAgICAgICAgICAgUEFUSFNFR19NT1ZFVE9f
UkVMICAgICAgICAgICAgICAgICAgICAgID0gMywKLSAgICAgICAgICAgIFBBVEhTRUdfTElORVRP
X0FCUyAgICAgICAgICAgICAgICAgICAgICA9IDQsCi0gICAgICAgICAgICBQQVRIU0VHX0xJTkVU
T19SRUwgICAgICAgICAgICAgICAgICAgICAgPSA1LAotICAgICAgICAgICAgUEFUSFNFR19DVVJW
RVRPX0NVQklDX0FCUyAgICAgICAgICAgICAgID0gNiwKLSAgICAgICAgICAgIFBBVEhTRUdfQ1VS
VkVUT19DVUJJQ19SRUwgICAgICAgICAgICAgICA9IDcsCi0gICAgICAgICAgICBQQVRIU0VHX0NV
UlZFVE9fUVVBRFJBVElDX0FCUyAgICAgICAgICAgPSA4LAotICAgICAgICAgICAgUEFUSFNFR19D
VVJWRVRPX1FVQURSQVRJQ19SRUwgICAgICAgICAgID0gOSwKLSAgICAgICAgICAgIFBBVEhTRUdf
QVJDX0FCUyAgICAgICAgICAgICAgICAgICAgICAgICA9IDEwLAotICAgICAgICAgICAgUEFUSFNF
R19BUkNfUkVMICAgICAgICAgICAgICAgICAgICAgICAgID0gMTEsCi0gICAgICAgICAgICBQQVRI
U0VHX0xJTkVUT19IT1JJWk9OVEFMX0FCUyAgICAgICAgICAgPSAxMiwKLSAgICAgICAgICAgIFBB
VEhTRUdfTElORVRPX0hPUklaT05UQUxfUkVMICAgICAgICAgICA9IDEzLAotICAgICAgICAgICAg
UEFUSFNFR19MSU5FVE9fVkVSVElDQUxfQUJTICAgICAgICAgICAgID0gMTQsCi0gICAgICAgICAg
ICBQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9SRUwgICAgICAgICAgICAgPSAxNSwKLSAgICAgICAg
ICAgIFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfQUJTICAgICAgICA9IDE2LAotICAgICAg
ICAgICAgUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9SRUwgICAgICAgID0gMTcsCi0gICAg
ICAgICAgICBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9BQlMgICAgPSAxOCwKLSAg
ICAgICAgICAgIFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX1JFTCAgICA9IDE5Ci0g
ICAgICAgIH07Ci0KLSAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIFBBVEhTRUdfVU5LTk9XTjsgfQotICAgICAgICB2aXJ0dWFsIFN0cmlu
ZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3QgeyByZXR1cm4gIiI7IH0KLSAgICAgICAgdmly
dHVhbCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiAiIjsgfQotCi0gICAgICAgIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkgY29uc3QgeyByZXR1
cm4gU1ZHTmFtZXM6OmRBdHRyOyB9Ci0gICAgICAgIAotICAgIHByb3RlY3RlZDoKLSAgICAgICAg
U1ZHUGF0aFNlZygpIHsgfQorZW51bSBTVkdQYXRoU2VnVHlwZSB7CisgICAgUGF0aFNlZ1Vua25v
d24gPSAwLAorICAgIFBhdGhTZWdDbG9zZVBhdGggPSAxLAorICAgIFBhdGhTZWdNb3ZlVG9BYnMg
PSAyLAorICAgIFBhdGhTZWdNb3ZlVG9SZWwgPSAzLAorICAgIFBhdGhTZWdMaW5lVG9BYnMgPSA0
LAorICAgIFBhdGhTZWdMaW5lVG9SZWwgPSA1LAorICAgIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNBYnMg
PSA2LAorICAgIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNSZWwgPSA3LAorICAgIFBhdGhTZWdDdXJ2ZVRv
UXVhZHJhdGljQWJzID0gOCwKKyAgICBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1JlbCA9IDksCisg
ICAgUGF0aFNlZ0FyY0FicyA9IDEwLAorICAgIFBhdGhTZWdBcmNSZWwgPSAxMSwKKyAgICBQYXRo
U2VnTGluZVRvSG9yaXpvbnRhbEFicyA9IDEyLAorICAgIFBhdGhTZWdMaW5lVG9Ib3Jpem9udGFs
UmVsID0gMTMsCisgICAgUGF0aFNlZ0xpbmVUb1ZlcnRpY2FsQWJzID0gMTQsCisgICAgUGF0aFNl
Z0xpbmVUb1ZlcnRpY2FsUmVsID0gMTUsCisgICAgUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aEFi
cyA9IDE2LAorICAgIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9vdGhSZWwgPSAxNywKKyAgICBQYXRo
U2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290aEFicyA9IDE4LAorICAgIFBhdGhTZWdDdXJ2ZVRvUXVh
ZHJhdGljU21vb3RoUmVsID0gMTkKK307CisKK2NsYXNzIFNWR1BhdGhFbGVtZW50OworY2xhc3Mg
U1ZHU3R5bGVkRWxlbWVudDsKKworY2xhc3MgU1ZHUGF0aFNlZyA6IHB1YmxpYyBSZWZDb3VudGVk
PFNWR1BhdGhTZWc+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TVkdQYXRoU2VnKCkgeyB9CisK
KyAgICAvLyBGb3J3YXJkIGRlY2xhcmUgdGhlc2UgZW51bXMgaW4gdGhlIHczYyBuYW1pbmcgc2No
ZW1lLCBmb3IgSURMIGdlbmVyYXRpb24KKyAgICBlbnVtIHsKKyAgICAgICAgUEFUSFNFR19VTktO
T1dOID0gUGF0aFNlZ1Vua25vd24sCisgICAgICAgIFBBVEhTRUdfQ0xPU0VQQVRIID0gUGF0aFNl
Z0Nsb3NlUGF0aCwKKyAgICAgICAgUEFUSFNFR19NT1ZFVE9fQUJTID0gUGF0aFNlZ01vdmVUb0Fi
cywKKyAgICAgICAgUEFUSFNFR19NT1ZFVE9fUkVMID0gUGF0aFNlZ01vdmVUb1JlbCwKKyAgICAg
ICAgUEFUSFNFR19MSU5FVE9fQUJTID0gUGF0aFNlZ0xpbmVUb0FicywKKyAgICAgICAgUEFUSFNF
R19MSU5FVE9fUkVMID0gUGF0aFNlZ0xpbmVUb1JlbCwKKyAgICAgICAgUEFUSFNFR19DVVJWRVRP
X0NVQklDX0FCUyA9IFBhdGhTZWdDdXJ2ZVRvQ3ViaWNBYnMsCisgICAgICAgIFBBVEhTRUdfQ1VS
VkVUT19DVUJJQ19SRUwgPSBQYXRoU2VnQ3VydmVUb0N1YmljUmVsLAorICAgICAgICBQQVRIU0VH
X0NVUlZFVE9fUVVBRFJBVElDX0FCUyA9IFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljQWJzLAorICAg
ICAgICBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1JFTCA9IFBhdGhTZWdDdXJ2ZVRvUXVhZHJh
dGljUmVsLAorICAgICAgICBQQVRIU0VHX0FSQ19BQlMgPSBQYXRoU2VnQXJjQWJzLAorICAgICAg
ICBQQVRIU0VHX0FSQ19SRUwgPSBQYXRoU2VnQXJjUmVsLAorICAgICAgICBQQVRIU0VHX0xJTkVU
T19IT1JJWk9OVEFMX0FCUyA9IFBhdGhTZWdMaW5lVG9Ib3Jpem9udGFsQWJzLAorICAgICAgICBQ
QVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX1JFTCA9IFBhdGhTZWdMaW5lVG9Ib3Jpem9udGFsUmVs
LAorICAgICAgICBQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9BQlMgPSBQYXRoU2VnTGluZVRvVmVy
dGljYWxBYnMsCisgICAgICAgIFBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX1JFTCA9IFBhdGhTZWdM
aW5lVG9WZXJ0aWNhbFJlbCwKKyAgICAgICAgUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9B
QlMgPSBQYXRoU2VnQ3VydmVUb0N1YmljU21vb3RoQWJzLAorICAgICAgICBQQVRIU0VHX0NVUlZF
VE9fQ1VCSUNfU01PT1RIX1JFTCA9IFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9vdGhSZWwsCisgICAg
ICAgIFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX0FCUyA9IFBhdGhTZWdDdXJ2ZVRv
UXVhZHJhdGljU21vb3RoQWJzLAorICAgICAgICBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NN
T09USF9SRUwgPSBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290aFJlbAogICAgIH07CiAKLSAg
ICBjbGFzcyBTVkdQYXRoU2VnU2luZ2xlQ29vcmQgOiBwdWJsaWMgU1ZHUGF0aFNlZyB7IAotICAg
IHB1YmxpYzoKLSAgICAgICAgU1ZHUGF0aFNlZ1NpbmdsZUNvb3JkKGZsb2F0IHgsIGZsb2F0IHkp
Ci0gICAgICAgIDogU1ZHUGF0aFNlZygpICwgbV94KHgpICwgbV95KHkpIHt9Ci0KLSAgICAgICAg
dm9pZCBzZXRYKGZsb2F0IHgpIHsgbV94ID0geDsgfQotICAgICAgICBmbG9hdCB4KCkgY29uc3Qg
eyByZXR1cm4gbV94OyB9Ci0KLSAgICAgICAgdm9pZCBzZXRZKGZsb2F0IHkpIHsgbV95ID0geTsg
fQotICAgICAgICBmbG9hdCB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9Ci0KLSAgICAgICAgdmly
dHVhbCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBwYXRoU2VnVHlwZUFzTGV0dGVy
KCkgKyBTdHJpbmc6OmZvcm1hdCgiICUuNmxnICUuNmxnIiwgbV94LCBtX3kpOyB9Ci0KLSAgICBw
cml2YXRlOgotICAgICAgICBmbG9hdCBtX3g7Ci0gICAgICAgIGZsb2F0IG1feTsKLSAgICB9Owor
ICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCB7IHJldHVybiBQ
QVRIU0VHX1VOS05PV047IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVy
KCkgY29uc3QgeyByZXR1cm4gIiI7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyB0b1N0cmluZygpIGNv
bnN0IHsgcmV0dXJuICIiOyB9CisKKyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhc3NvY2lhdGVk
QXR0cmlidXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIFNWR05hbWVzOjpkQXR0cjsgfQorICAgIAor
cHJvdGVjdGVkOgorICAgIFNWR1BhdGhTZWcoKSB7IH0KK307CisKK2NsYXNzIFNWR1BhdGhTZWdT
aW5nbGVDb29yZCA6IHB1YmxpYyBTVkdQYXRoU2VnIHsgCitwdWJsaWM6CisgICAgU1ZHUGF0aFNl
Z1NpbmdsZUNvb3JkKGZsb2F0IHgsIGZsb2F0IHkpCisgICAgOiBTVkdQYXRoU2VnKCkgLCBtX3go
eCkgLCBtX3koeSkge30KKworICAgIHZvaWQgc2V0WChmbG9hdCB4KSB7IG1feCA9IHg7IH0KKyAg
ICBmbG9hdCB4KCkgY29uc3QgeyByZXR1cm4gbV94OyB9CisKKyAgICB2b2lkIHNldFkoZmxvYXQg
eSkgeyBtX3kgPSB5OyB9CisgICAgZmxvYXQgeSgpIGNvbnN0IHsgcmV0dXJuIG1feTsgfQorCisg
ICAgdmlydHVhbCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBwYXRoU2VnVHlwZUFz
TGV0dGVyKCkgKyBTdHJpbmc6OmZvcm1hdCgiICUuNmxnICUuNmxnIiwgbV94LCBtX3kpOyB9CisK
K3ByaXZhdGU6CisgICAgZmxvYXQgbV94OworICAgIGZsb2F0IG1feTsKK307CiAKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmNwcAkocmV2aXNpb24gNjQ3
ODgpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY0LDE5ICs2NCwxOSBAQCB1bnNpZ25lZCBTVkdQYXRoU2VnTGlzdDo6Z2V0UGF0aFNlZ0F0TGVu
CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgZmxvYXQgc2VnbWVudExlbmd0aCA9IDA7
CiAgICAgICAgIHN3aXRjaCAoc2VnbWVudC0+cGF0aFNlZ1R5cGUoKSkgewotICAgICAgICBjYXNl
IFNWR1BhdGhTZWc6OlBBVEhTRUdfTU9WRVRPX0FCUzoKKyAgICAgICAgY2FzZSBQYXRoU2VnTW92
ZVRvQWJzOgogICAgICAgICB7CiAgICAgICAgICAgICBTVkdQYXRoU2VnTW92ZXRvQWJzKiBtb3Zl
VG8gPSBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTW92ZXRvQWJzKj4oc2VnbWVudCk7CiAgICAgICAg
ICAgICBzZWdtZW50TGVuZ3RoID0gdHJhdmVyc2FsU3RhdGUubW92ZVRvKEZsb2F0UG9pbnQobW92
ZVRvLT54KCksIG1vdmVUby0+eSgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQot
ICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTElORVRPX0FCUzoKKyAgICAgICAgY2Fz
ZSBQYXRoU2VnTGluZVRvQWJzOgogICAgICAgICB7CiAgICAgICAgICAgICBTVkdQYXRoU2VnTGlu
ZXRvQWJzKiBsaW5lVG8gPSBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTGluZXRvQWJzKj4oc2VnbWVu
dCk7CiAgICAgICAgICAgICBzZWdtZW50TGVuZ3RoID0gdHJhdmVyc2FsU3RhdGUubGluZVRvKEZs
b2F0UG9pbnQobGluZVRvLT54KCksIGxpbmVUby0+eSgpKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQotICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQ1VSVkVUT19DVUJJ
Q19BQlM6CisgICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9DdWJpY0FiczoKICAgICAgICAgewog
ICAgICAgICAgICAgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicyogY3VydmVUbyA9IHN0YXRpY19j
YXN0PFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMqPihzZWdtZW50KTsKICAgICAgICAgICAgIHNl
Z21lbnRMZW5ndGggPSB0cmF2ZXJzYWxTdGF0ZS5jdWJpY0JlemllclRvKEZsb2F0UG9pbnQoY3Vy
dmVUby0+eDEoKSwgY3VydmVUby0+eTEoKSksCkBAIC04NCw3ICs4NCw3IEBAIHVuc2lnbmVkIFNW
R1BhdGhTZWdMaXN0OjpnZXRQYXRoU2VnQXRMZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRmxvYXRQb2ludChjdXJ2ZVRvLT54KCksIGN1cnZlVG8tPnkoKSkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRI
U0VHX0NMT1NFUEFUSDoKKyAgICAgICAgY2FzZSBQYXRoU2VnQ2xvc2VQYXRoOgogICAgICAgICAg
ICAgc2VnbWVudExlbmd0aCA9IHRyYXZlcnNhbFN0YXRlLmNsb3NlU3VicGF0aCgpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0xMTYsNDggKzExNiw0NCBAQCBQYXRo
IFNWR1BhdGhTZWdMaXN0Ojp0b1BhdGhEYXRhKCkKICAgICAgICAgaWYgKGVjKQogICAgICAgICAg
ICAgcmV0dXJuIFBhdGgoKTsKICAgICAgICAgc3dpdGNoIChzZWdtZW50LT5wYXRoU2VnVHlwZSgp
KSB7Ci0gICAgICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTU9WRVRPX0FCUzoKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBTVkdQYXRoU2VnTW92ZXRvQWJzKiBtb3ZlVG8g
PSBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTW92ZXRvQWJzKj4oc2VnbWVudCk7Ci0gICAgICAgICAg
ICAgICAgRmxvYXRQb2ludCBlbmRQb2ludChtb3ZlVG8tPngoKSwgbW92ZVRvLT55KCkpOwotICAg
ICAgICAgICAgICAgIHBhdGhEYXRhLm1vdmVUbyhlbmRQb2ludCk7Ci0gICAgICAgICAgICAgICAg
cHJldmlvdXNFbmRQb2ludCA9IGVuZFBvaW50OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0xJTkVUT19B
QlM6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgU1ZHUGF0aFNlZ0xpbmV0b0Ficyog
bGluZVRvID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0xpbmV0b0Ficyo+KHNlZ21lbnQpOwotICAg
ICAgICAgICAgICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQobGluZVRvLT54KCksIGxpbmVUby0+eSgp
KTsKLSAgICAgICAgICAgICAgICBwYXRoRGF0YS5hZGRMaW5lVG8oZW5kUG9pbnQpOwotICAgICAg
ICAgICAgICAgIHByZXZpb3VzRW5kUG9pbnQgPSBlbmRQb2ludDsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNF
R19DVVJWRVRPX0NVQklDX0FCUzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBTVkdQ
YXRoU2VnQ3VydmV0b0N1YmljQWJzKiBjdXJ2ZVRvID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0N1
cnZldG9DdWJpY0Ficyo+KHNlZ21lbnQpOwotICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQgZW5k
UG9pbnQoY3VydmVUby0+eCgpLCBjdXJ2ZVRvLT55KCkpOwotICAgICAgICAgICAgICAgIHBhdGhE
YXRhLmFkZEJlemllckN1cnZlVG8oRmxvYXRQb2ludChjdXJ2ZVRvLT54MSgpLCBjdXJ2ZVRvLT55
MSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0UG9p
bnQoY3VydmVUby0+eDIoKSwgY3VydmVUby0+eTIoKSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbmRQb2ludCk7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNF
bmRQb2ludCA9IGVuZFBvaW50OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfUkVM
OgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNS
ZWwqIGN1cnZlVG8gPSBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsKj4oc2Vn
bWVudCk7Ci0gICAgICAgICAgICAgICAgRmxvYXRTaXplIGVuZFBvaW50KGN1cnZlVG8tPngoKSwg
Y3VydmVUby0+eSgpKTsKLSAgICAgICAgICAgICAgICBwYXRoRGF0YS5hZGRCZXppZXJDdXJ2ZVRv
KHByZXZpb3VzRW5kUG9pbnQgKyBGbG9hdFNpemUoY3VydmVUby0+eDEoKSwgY3VydmVUby0+eTEo
KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0Vu
ZFBvaW50ICsgRmxvYXRTaXplKGN1cnZlVG8tPngyKCksIGN1cnZlVG8tPnkyKCkpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNFbmRQb2ludCArIGVu
ZFBvaW50KTsKLSAgICAgICAgICAgICAgICBwcmV2aW91c0VuZFBvaW50ICs9IGVuZFBvaW50Owot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBT
VkdQYXRoU2VnOjpQQVRIU0VHX0NMT1NFUEFUSDoKLSAgICAgICAgICAgICAgICBwYXRoRGF0YS5j
bG9zZVN1YnBhdGgoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGZhbHNlKTsgLy8gRklYTUU6IFRoaXMgb25seSB3
b3JrcyB3aXRoIG5vcm1hbGl6ZWQvcHJvY2Vzc2VkIHBhdGggZGF0YS4KLSAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBQYXRoU2VnTW92ZVRvQWJzOiB7CisgICAgICAgICAgICBT
VkdQYXRoU2VnTW92ZXRvQWJzKiBtb3ZlVG8gPSBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTW92ZXRv
QWJzKj4oc2VnbWVudCk7CisgICAgICAgICAgICBGbG9hdFBvaW50IGVuZFBvaW50KG1vdmVUby0+
eCgpLCBtb3ZlVG8tPnkoKSk7CisgICAgICAgICAgICBwYXRoRGF0YS5tb3ZlVG8oZW5kUG9pbnQp
OworICAgICAgICAgICAgcHJldmlvdXNFbmRQb2ludCA9IGVuZFBvaW50OworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBQYXRoU2VnTGluZVRvQWJzOiB7CisgICAg
ICAgICAgICBTVkdQYXRoU2VnTGluZXRvQWJzKiBsaW5lVG8gPSBzdGF0aWNfY2FzdDxTVkdQYXRo
U2VnTGluZXRvQWJzKj4oc2VnbWVudCk7CisgICAgICAgICAgICBGbG9hdFBvaW50IGVuZFBvaW50
KGxpbmVUby0+eCgpLCBsaW5lVG8tPnkoKSk7CisgICAgICAgICAgICBwYXRoRGF0YS5hZGRMaW5l
VG8oZW5kUG9pbnQpOworICAgICAgICAgICAgcHJldmlvdXNFbmRQb2ludCA9IGVuZFBvaW50Owor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBQYXRoU2VnQ3VydmVU
b0N1YmljQWJzOiB7CisgICAgICAgICAgICBTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzKiBjdXJ2
ZVRvID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficyo+KHNlZ21lbnQpOwor
ICAgICAgICAgICAgRmxvYXRQb2ludCBlbmRQb2ludChjdXJ2ZVRvLT54KCksIGN1cnZlVG8tPnko
KSk7CisgICAgICAgICAgICBwYXRoRGF0YS5hZGRCZXppZXJDdXJ2ZVRvKEZsb2F0UG9pbnQoY3Vy
dmVUby0+eDEoKSwgY3VydmVUby0+eTEoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZsb2F0UG9pbnQoY3VydmVUby0+eDIoKSwgY3VydmVUby0+eTIoKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZFBvaW50KTsKKyAgICAgICAgICAg
IHByZXZpb3VzRW5kUG9pbnQgPSBlbmRQb2ludDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9DdWJpY1JlbDogeworICAgICAgICAgICAg
U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCogY3VydmVUbyA9IHN0YXRpY19jYXN0PFNWR1BhdGhT
ZWdDdXJ2ZXRvQ3ViaWNSZWwqPihzZWdtZW50KTsKKyAgICAgICAgICAgIEZsb2F0U2l6ZSBlbmRQ
b2ludChjdXJ2ZVRvLT54KCksIGN1cnZlVG8tPnkoKSk7CisgICAgICAgICAgICBwYXRoRGF0YS5h
ZGRCZXppZXJDdXJ2ZVRvKHByZXZpb3VzRW5kUG9pbnQgKyBGbG9hdFNpemUoY3VydmVUby0+eDEo
KSwgY3VydmVUby0+eTEoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHByZXZpb3VzRW5kUG9pbnQgKyBGbG9hdFNpemUoY3VydmVUby0+eDIoKSwgY3VydmVUby0+eTIo
KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzRW5kUG9p
bnQgKyBlbmRQb2ludCk7CisgICAgICAgICAgICBwcmV2aW91c0VuZFBvaW50ICs9IGVuZFBvaW50
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBQYXRoU2VnQ2xv
c2VQYXRoOgorICAgICAgICAgICAgcGF0aERhdGEuY2xvc2VTdWJwYXRoKCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVChmYWxzZSk7IC8v
IEZJWE1FOiBUaGlzIG9ubHkgd29ya3Mgd2l0aCBub3JtYWxpemVkL3Byb2Nlc3NlZCBwYXRoIGRh
dGEuCisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KICAgICAKQEAgLTIxMyw2
OCArMjA5LDY4IEBAIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0xpc3Q+IFNWR1BhdGhTZWdMaXMKICAg
ICAgICAgU1ZHUGF0aFNlZyogdG8gPSB0b0xpc3QtPmdldEl0ZW0obiwgZWMpLmdldCgpOwogICAg
ICAgICBpZiAoZWMpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKGZyb20tPnBh
dGhTZWdUeXBlKCkgPT0gU1ZHUGF0aFNlZzo6UEFUSFNFR19VTktOT1dOIHx8IGZyb20tPnBhdGhT
ZWdUeXBlKCkgIT0gdG8tPnBhdGhTZWdUeXBlKCkpCisgICAgICAgIGlmIChmcm9tLT5wYXRoU2Vn
VHlwZSgpID09IFBhdGhTZWdVbmtub3duIHx8IGZyb20tPnBhdGhTZWdUeXBlKCkgIT0gdG8tPnBh
dGhTZWdUeXBlKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgUmVmUHRyPFNWR1Bh
dGhTZWc+IHNlZ21lbnQgPSAwOwotICAgICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PFNWR1BhdGhT
ZWc6OlNWR1BhdGhTZWdUeXBlPihmcm9tLT5wYXRoU2VnVHlwZSgpKSkgewotICAgICAgICBjYXNl
IFNWR1BhdGhTZWc6OlBBVEhTRUdfQ0xPU0VQQVRIOgorICAgICAgICBzd2l0Y2ggKHN0YXRpY19j
YXN0PFNWR1BhdGhTZWdUeXBlPihmcm9tLT5wYXRoU2VnVHlwZSgpKSkgeworICAgICAgICBjYXNl
IFBhdGhTZWdDbG9zZVBhdGg6CiAgICAgICAgICAgICBzZWdtZW50ID0gU1ZHUGF0aFNlZ0Nsb3Nl
UGF0aDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdQYXRo
U2VnOjpQQVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX0FCUzoKKyAgICAgICAgY2FzZSBQYXRoU2Vn
TGluZVRvSG9yaXpvbnRhbEFiczoKICAgICAgICAgICAgIHNlZ21lbnQgPSBCTEVORFBBVEhTRUcx
KFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzLCB4KTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfUkVMOgor
ICAgICAgICBjYXNlIFBhdGhTZWdMaW5lVG9Ib3Jpem9udGFsUmVsOgogICAgICAgICAgICAgc2Vn
bWVudCA9IEJMRU5EUEFUSFNFRzEoU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwsIHgpOwog
ICAgICAgICAgICAgYnJlYWs7ICAgCi0gICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19M
SU5FVE9fVkVSVElDQUxfQUJTOgorICAgICAgICBjYXNlIFBhdGhTZWdMaW5lVG9WZXJ0aWNhbEFi
czoKICAgICAgICAgICAgIHNlZ21lbnQgPSBCTEVORFBBVEhTRUcxKFNWR1BhdGhTZWdMaW5ldG9W
ZXJ0aWNhbEFicywgeSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdQYXRo
U2VnOjpQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9SRUw6CisgICAgICAgIGNhc2UgUGF0aFNlZ0xp
bmVUb1ZlcnRpY2FsUmVsOgogICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzEoU1ZH
UGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsLCB5KTsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAg
Ci0gICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19NT1ZFVE9fQUJTOgorICAgICAgICBj
YXNlIFBhdGhTZWdNb3ZlVG9BYnM6CiAgICAgICAgICAgICBzZWdtZW50ID0gQkxFTkRQQVRIU0VH
MihTVkdQYXRoU2VnTW92ZXRvQWJzLCB4LCB5KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTU9WRVRPX1JFTDoKKyAgICAgICAgY2FzZSBQYXRo
U2VnTW92ZVRvUmVsOgogICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzIoU1ZHUGF0
aFNlZ01vdmV0b1JlbCwgeCwgeSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBT
VkdQYXRoU2VnOjpQQVRIU0VHX0xJTkVUT19BQlM6CisgICAgICAgIGNhc2UgUGF0aFNlZ0xpbmVU
b0FiczoKICAgICAgICAgICAgIHNlZ21lbnQgPSBCTEVORFBBVEhTRUcyKFNWR1BhdGhTZWdMaW5l
dG9BYnMsIHgsIHkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHUGF0aFNl
Zzo6UEFUSFNFR19MSU5FVE9fUkVMOgorICAgICAgICBjYXNlIFBhdGhTZWdMaW5lVG9SZWw6CiAg
ICAgICAgICAgICBzZWdtZW50ID0gQkxFTkRQQVRIU0VHMihTVkdQYXRoU2VnTGluZXRvUmVsLCB4
LCB5KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhT
RUdfQ1VSVkVUT19DVUJJQ19BQlM6CisgICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9DdWJpY0Fi
czoKICAgICAgICAgICAgIHNlZ21lbnQgPSBCTEVORFBBVEhTRUc2KFNWR1BhdGhTZWdDdXJ2ZXRv
Q3ViaWNBYnMsIHgsIHksIHgxLCB5MSwgeDIsIHkyKTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQ1VSVkVUT19DVUJJQ19SRUw6CisgICAgICAg
IGNhc2UgUGF0aFNlZ0N1cnZlVG9DdWJpY1JlbDoKICAgICAgICAgICAgIHNlZ21lbnQgPSBCTEVO
RFBBVEhTRUc2KFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwsIHgsIHksIHgxLCB5MSwgeDIsIHky
KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdf
Q1VSVkVUT19DVUJJQ19TTU9PVEhfQUJTOgorICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2ZVRvQ3Vi
aWNTbW9vdGhBYnM6CiAgICAgICAgICAgICBzZWdtZW50ID0gQkxFTkRQQVRIU0VHNChTVkdQYXRo
U2VnQ3VydmV0b0N1YmljU21vb3RoQWJzLCB4LCB5LCB4MiwgeTIpOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09U
SF9SRUw6CisgICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aFJlbDoKICAgICAg
ICAgICAgIHNlZ21lbnQgPSBCTEVORFBBVEhTRUc0KFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9v
dGhSZWwsIHgsIHksIHgyLCB5Mik7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBT
VkdQYXRoU2VnOjpQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX0FCUzoKKyAgICAgICAgY2FzZSBQ
YXRoU2VnQ3VydmVUb1F1YWRyYXRpY0FiczoKICAgICAgICAgICAgIHNlZ21lbnQgPSBCTEVORFBB
VEhTRUc0KFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzLCB4LCB5LCB4MSwgeTEpOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DVVJWRVRP
X1FVQURSQVRJQ19SRUw6CisgICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNSZWw6
CiAgICAgICAgICAgICBzZWdtZW50ID0gQkxFTkRQQVRIU0VHNChTVkdQYXRoU2VnQ3VydmV0b1F1
YWRyYXRpY1JlbCwgeCwgeSwgeDEsIHkxKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX0FCUzoKKyAg
ICAgICAgY2FzZSBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290aEFiczoKICAgICAgICAgICAg
IHNlZ21lbnQgPSBCTEVORFBBVEhTRUcyKFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3Ro
QWJzLCB4LCB5KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR1BhdGhTZWc6
OlBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX1JFTDoKKyAgICAgICAgY2FzZSBQYXRo
U2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290aFJlbDoKICAgICAgICAgICAgIHNlZ21lbnQgPSBCTEVO
RFBBVEhTRUcyKFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsLCB4LCB5KTsKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQVJDX0FC
UzoKKyAgICAgICAgY2FzZSBQYXRoU2VnQXJjQWJzOgogICAgICAgICAgICAgc2VnbWVudCA9IEJM
RU5EUEFUSFNFRzcoU1ZHUGF0aFNlZ0FyY0FicywgeCwgeSwgcjEsIHIyLCBhbmdsZSwgbGFyZ2VB
cmNGbGFnLCBzd2VlcEZsYWcpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZH
UGF0aFNlZzo6UEFUSFNFR19BUkNfUkVMOgorICAgICAgICBjYXNlIFBhdGhTZWdBcmNSZWw6CiAg
ICAgICAgICAgICBzZWdtZW50ID0gQkxFTkRQQVRIU0VHNyhTVkdQYXRoU2VnQXJjUmVsLCB4LCB5
LCByMSwgcjIsIGFuZ2xlLCBsYXJnZUFyY0ZsYWcsIHN3ZWVwRmxhZyk7CiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX1VOS05PV046CisgICAgICAg
IGNhc2UgUGF0aFNlZ1Vua25vd246CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgfQogICAgICAgICByZXN1bHQtPmFwcGVuZEl0ZW0oc2VnbWVudCwgZWMpOwpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwCShyZXZpc2lvbiA2NDc4OCkKKysr
IFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0QnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJT
VkdQYXRoRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR1BhdGhQYXJzZXIuaCIKICNpbmNsdWRlICJT
VkdQYXRoU2VnQXJjLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0Nsb3NlUGF0aC5oIgogI2luY2x1
ZGUgIlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWMuaCIKQEAgLTQzLDM3ICs0MiwyNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6U1ZHUGF0aFNlZ0xpc3RC
dWlsZGVyKFNWR1BhdGhTZWdMaXN0KiBzZWdMaXN0KQotICAgIDogbV9wYXRoU2VnTGlzdChzZWdM
aXN0KQorU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXIoKQogewog
fQogCi1ib29sIFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6YnVpbGQoY29uc3QgU3RyaW5nJiBkLCBQ
YXRoUGFyc2luZ01vZGUgcGFyc2luZ01vZGUpCi17Ci0gICAgaWYgKCFtX3BhdGhTZWdMaXN0KQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBTVkdQYXRoUGFyc2VyIHBhcnNlcih0aGlzKTsK
LSAgICByZXR1cm4gcGFyc2VyLnBhcnNlUGF0aERhdGFTdHJpbmcoZCwgcGFyc2luZ01vZGUgPT0g
Tm9ybWFsaXplZFBhcnNpbmcpOwotfQotCi12b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6bW92
ZVRvKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBib29sLCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9k
ZSkKK3ZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjptb3ZlVG8oY29uc3QgRmxvYXRQb2ludCYg
dGFyZ2V0UG9pbnQsIGJvb2wsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0g
ICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNW
R1BhdGhTZWdNb3ZldG9BYnMocG9pbnQueCgpLCBwb2ludC55KCkpLCBlYyk7CisgICAgICAgIG1f
cGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdN
b3ZldG9BYnModGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCkpLCBlYyk7CiAgICAgZWxz
ZQotICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVh
dGVTVkdQYXRoU2VnTW92ZXRvUmVsKHBvaW50LngoKSwgcG9pbnQueSgpKSwgZWMpOworICAgICAg
ICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRo
U2VnTW92ZXRvUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSwgZWMpOwogICAg
IEFTU0VSVCghZWMpOwogfQogCi12b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6bGluZVRvKGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKK3ZvaWQgU1ZH
UGF0aFNlZ0xpc3RCdWlsZGVyOjpsaW5lVG8oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQs
IFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwog
ICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fcGF0aFNlZ0xp
c3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9BYnMo
cG9pbnQueCgpLCBwb2ludC55KCkpLCBlYyk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVu
ZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9BYnModGFyZ2V0UG9p
bnQueCgpLCB0YXJnZXRQb2ludC55KCkpLCBlYyk7CiAgICAgZWxzZQotICAgICAgICBtX3BhdGhT
ZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnTGluZXRv
UmVsKHBvaW50LngoKSwgcG9pbnQueSgpKSwgZWMpOworICAgICAgICBtX3BhdGhTZWdMaXN0LT5h
cHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnTGluZXRvUmVsKHRhcmdl
dFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSwgZWMpOwogICAgIEFTU0VSVCghZWMpOwogfQog
CkBAIC05Nyw1MyArODYsNTMgQEAgdm9pZCBTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmxpbmVUb1Zl
cnRpYwogICAgIEFTU0VSVCghZWMpOwogfQogCi12b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6
Y3VydmVUb0N1YmljKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQyLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUp
Cit2b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6Y3VydmVUb0N1YmljKGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyLCBjb25zdCBGbG9hdFBvaW50JiB0
YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcykKLSAgICAgICAg
bV9wYXRoU2VnTGlzdC0+YXBwZW5kSXRlbShTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNl
Z0N1cnZldG9DdWJpY0Ficyhwb2ludC54KCksIHBvaW50LnkoKSwgcG9pbnQxLngoKSwgcG9pbnQx
LnkoKSwgcG9pbnQyLngoKSwgcG9pbnQyLnkoKSksIGVjKTsKKyAgICAgICAgbV9wYXRoU2VnTGlz
dC0+YXBwZW5kSXRlbShTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJp
Y0Ficyh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgcG9pbnQxLngoKSwgcG9pbnQx
LnkoKSwgcG9pbnQyLngoKSwgcG9pbnQyLnkoKSksIGVjKTsKICAgICBlbHNlCi0gICAgICAgIG1f
cGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdD
dXJ2ZXRvQ3ViaWNSZWwocG9pbnQueCgpLCBwb2ludC55KCksIHBvaW50MS54KCksIHBvaW50MS55
KCksIHBvaW50Mi54KCksIHBvaW50Mi55KCkpLCBlYyk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3Qt
PmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNS
ZWwodGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIHBvaW50MS54KCksIHBvaW50MS55
KCksIHBvaW50Mi54KCksIHBvaW50Mi55KCkpLCBlYyk7CiAgICAgQVNTRVJUKCFlYyk7CiB9CiAK
LXZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWNTbW9vdGgoY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MiwgUGF0aENvb3JkaW5hdGVN
b2RlIG1vZGUpCit2b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6Y3VydmVUb0N1YmljU21vb3Ro
KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MiwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQs
IFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwog
ICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fcGF0aFNlZ0xp
c3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3Vi
aWNTbW9vdGhBYnMocG9pbnQyLngoKSwgcG9pbnQyLnkoKSwgcG9pbnQueCgpLCBwb2ludC55KCkp
LCBlYyk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6
OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnModGFyZ2V0UG9pbnQueCgpLCB0
YXJnZXRQb2ludC55KCksIHBvaW50Mi54KCksIHBvaW50Mi55KCkpLCBlYyk7CiAgICAgZWxzZQot
ICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVT
VkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsKHBvaW50Mi54KCksIHBvaW50Mi55KCksIHBv
aW50LngoKSwgcG9pbnQueSgpKSwgZWMpOworICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJ
dGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVs
KHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBwb2ludDIueCgpLCBwb2ludDIueSgp
KSwgZWMpOwogICAgIEFTU0VSVCghZWMpOwogfQogCi12b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRl
cjo6Y3VydmVUb1F1YWRyYXRpYyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQxLCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKK3ZvaWQgU1ZHUGF0aFNlZ0xp
c3RCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJhdGljKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29u
c3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRp
bmF0ZXMpCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6
OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzKHBvaW50MS54KCksIHBvaW50MS55
KCksIHBvaW50LngoKSwgcG9pbnQueSgpKSwgZWMpOworICAgICAgICBtX3BhdGhTZWdMaXN0LT5h
cHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRp
Y0Ficyh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgcG9pbnQxLngoKSwgcG9pbnQx
LnkoKSksIGVjKTsKICAgICBlbHNlCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0o
U1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsKHBvaW50
MS54KCksIHBvaW50MS55KCksIHBvaW50LngoKSwgcG9pbnQueSgpKSwgZWMpOworICAgICAgICBt
X3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2Vn
Q3VydmV0b1F1YWRyYXRpY1JlbCh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgcG9p
bnQxLngoKSwgcG9pbnQxLnkoKSksIGVjKTsKICAgICBBU1NFUlQoIWVjKTsKIH0KIAotdm9pZCBT
VkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQordm9pZCBTVkdQYXRoU2VnTGlz
dEJ1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0
UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fcGF0
aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2
ZXRvUXVhZHJhdGljU21vb3RoQWJzKHBvaW50LngoKSwgcG9pbnQueSgpKSwgZWMpOworICAgICAg
ICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRo
U2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicyh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50
LnkoKSksIGVjKTsKICAgICBlbHNlCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0o
U1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVs
KHBvaW50LngoKSwgcG9pbnQueSgpKSwgZWMpOworICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBl
bmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Nt
b290aFJlbCh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSksIGVjKTsKICAgICBBU1NF
UlQoIWVjKTsKIH0KIAotdm9pZCBTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmFyY1RvKGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50LCBmbG9hdCByMSwgZmxvYXQgcjIsIGZsb2F0IGFuZ2xlLCBib29sIGxh
cmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQordm9p
ZCBTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmFyY1RvKGZsb2F0IHIxLCBmbG9hdCByMiwgZmxvYXQg
YW5nbGUsIGJvb2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3ZWVwRmxhZywgY29uc3QgRmxvYXRQb2lu
dCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAg
ICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1Bh
dGhTZWdBcmNBYnMocG9pbnQueCgpLCBwb2ludC55KCksIHIxLCByMiwgYW5nbGUsIGxhcmdlQXJj
RmxhZywgc3dlZXBGbGFnKSwgZWMpOworICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVt
KFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQXJjQWJzKHRhcmdldFBvaW50LngoKSwg
dGFyZ2V0UG9pbnQueSgpLCByMSwgcjIsIGFuZ2xlLCBsYXJnZUFyY0ZsYWcsIHN3ZWVwRmxhZyks
IGVjKTsKICAgICBlbHNlCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0
aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdBcmNSZWwocG9pbnQueCgpLCBwb2ludC55KCksIHIx
LCByMiwgYW5nbGUsIGxhcmdlQXJjRmxhZywgc3dlZXBGbGFnKSwgZWMpOworICAgICAgICBtX3Bh
dGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQXJj
UmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCByMSwgcjIsIGFuZ2xlLCBsYXJn
ZUFyY0ZsYWcsIHN3ZWVwRmxhZyksIGVjKTsKICAgICBBU1NFUlQoIWVjKTsKIH0KIApJbmRleDog
V2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmgJKHJldmlzaW9uIDY0Nzg4KQorKysgV2ViQ29y
ZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICsz
MSwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR1BhdGhTZWdMaXN0QnVp
bGRlciA6IHByaXZhdGUgU1ZHUGF0aENvbnN1bWVyIHsKK2NsYXNzIFNWR1BhdGhTZWdMaXN0QnVp
bGRlciA6IHB1YmxpYyBTVkdQYXRoQ29uc3VtZXIgewogcHVibGljOgotICAgIFNWR1BhdGhTZWdM
aXN0QnVpbGRlcihTVkdQYXRoU2VnTGlzdCopOwotICAgIGJvb2wgYnVpbGQoY29uc3QgU3RyaW5n
JiwgUGF0aFBhcnNpbmdNb2RlKTsKKyAgICBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIoKTsKKworICAg
IHZvaWQgc2V0Q3VycmVudFNWR1BhdGhTZWdMaXN0KFNWR1BhdGhTZWdMaXN0KiBwYXRoU2VnTGlz
dCkgeyBtX3BhdGhTZWdMaXN0ID0gcGF0aFNlZ0xpc3Q7IH0KIAogcHJpdmF0ZToKICAgICAvLyBV
c2VkIGluIFVuYWx0ZXJlZFBhcmlzbmcvTm9ybWFsaXplZFBhcnNpbmcgbW9kZXMuCkBAIC01MCw3
ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGN1cnZlVG9DdWJpY1Ntb290aChj
b25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSk7
CiAgICAgdmlydHVhbCB2b2lkIGN1cnZlVG9RdWFkcmF0aWMoY29uc3QgRmxvYXRQb2ludCYsIGNv
bnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpOwogICAgIHZpcnR1YWwgdm9pZCBj
dXJ2ZVRvUXVhZHJhdGljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1v
ZGUpOwotICAgIHZpcnR1YWwgdm9pZCBhcmNUbyhjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQsIGZs
b2F0LCBmbG9hdCwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dlZXBGbGFnLCBQYXRoQ29vcmRp
bmF0ZU1vZGUpOworICAgIHZpcnR1YWwgdm9pZCBhcmNUbyhmbG9hdCwgZmxvYXQsIGZsb2F0LCBi
b29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcsIGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRo
Q29vcmRpbmF0ZU1vZGUpOwogCiAgICAgU1ZHUGF0aFNlZ0xpc3QqIG1fcGF0aFNlZ0xpc3Q7CiB9
OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR1BhdGhTb3VyY2UuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3ZnL1NWR1Bh
dGhTb3VyY2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KworI2lmbmRlZiBTVkdQYXRoU291cmNlX2gKKyNkZWZpbmUgU1ZHUGF0aFNvdXJjZV9oCisKKyNp
ZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR1BhdGhTZWcuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBTVkdQYXRoU291cmNlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5TVkdQYXRoU291cmNlKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wg
ZW5kT2ZTdHJlYW0oKSA9IDA7CisgICAgdmlydHVhbCBib29sIHBhcnNlRmxvYXQoZmxvYXQmIHJl
c3VsdCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwYXJzZUZsYWcoYm9vbCYgcmVzdWx0KSA9IDA7
CisgICAgdmlydHVhbCBTVkdQYXRoU2VnVHlwZSBwYXJzZVNWR1NlZ21lbnRUeXBlKCkgPSAwOwor
CisgICAgLy8gU1ZHUGF0aFN0cmluZ1NvdXJjZSBzcGVjaWZpYy4KKyAgICB2aXJ0dWFsIGJvb2wg
c2tpcFNwYWNlcygpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzUmVtYWluaW5nQ29vcmRpbmF0
ZXNJbkN1cnJlbnRDb21tYW5kKCkgPSAwOworCitwdWJsaWM6CisgICAgU1ZHUGF0aFNvdXJjZSgp
IHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNW
RykKKyNlbmRpZiAvLyBTVkdQYXRoU291cmNlX2gKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhT
dHJpbmdTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdT
b3VyY2UuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ1NvdXJj
ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR1BhdGhT
dHJpbmdTb3VyY2UuaCIKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAi
U1ZHUGFyc2VyVXRpbGl0aWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1ZHUGF0aFN0
cmluZ1NvdXJjZTo6U1ZHUGF0aFN0cmluZ1NvdXJjZShjb25zdCBTdHJpbmcmIHN0cmluZykKKyAg
ICA6IG1fc3RyaW5nKHN0cmluZykKKyAgICAsIG1fcHRyKHN0cmluZy5jaGFyYWN0ZXJzKCkpCisg
ICAgLCBtX2VuZChtX3B0ciArIHN0cmluZy5sZW5ndGgoKSkKK3sKKyAgICBBU1NFUlQoIXN0cmlu
Zy5pc0VtcHR5KCkpOworfQorCitTVkdQYXRoU3RyaW5nU291cmNlOjp+U1ZHUGF0aFN0cmluZ1Nv
dXJjZSgpCit7Cit9CisKK2Jvb2wgU1ZHUGF0aFN0cmluZ1NvdXJjZTo6ZW5kT2ZTdHJlYW0oKQor
eworICAgIHJldHVybiAobV9wdHIgPj0gbV9lbmQpOworfQorCitib29sIFNWR1BhdGhTdHJpbmdT
b3VyY2U6OnBhcnNlRmxvYXQoZmxvYXQmIHJlc3VsdCkKK3sKKyAgICByZXR1cm4gcGFyc2VOdW1i
ZXIobV9wdHIsIG1fZW5kLCByZXN1bHQpOworfQorCitib29sIFNWR1BhdGhTdHJpbmdTb3VyY2U6
OnBhcnNlRmxhZyhib29sJiByZXN1bHQpCit7CisgICAgcmV0dXJuIHBhcnNlQXJjRmxhZyhtX3B0
ciwgbV9lbmQsIHJlc3VsdCk7Cit9CisKK2Jvb2wgU1ZHUGF0aFN0cmluZ1NvdXJjZTo6c2tpcFNw
YWNlcygpCit7CisgICAgcmV0dXJuIHNraXBPcHRpb25hbFNwYWNlcyhtX3B0ciwgbV9lbmQpOwor
fQorCitTVkdQYXRoU2VnVHlwZSBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZVNWR1NlZ21lbnRU
eXBlKCkKK3sKKyAgICBzd2l0Y2ggKCoobV9wdHIrKykpIHsKKyAgICBjYXNlICdaJzoKKyAgICBj
YXNlICd6JzoKKyAgICAgICAgcmV0dXJuIFBhdGhTZWdDbG9zZVBhdGg7CisgICAgY2FzZSAnTSc6
CisgICAgICAgIHJldHVybiBQYXRoU2VnTW92ZVRvQWJzOworICAgIGNhc2UgJ20nOgorICAgICAg
ICByZXR1cm4gUGF0aFNlZ01vdmVUb1JlbDsKKyAgICBjYXNlICdMJzoKKyAgICAgICAgcmV0dXJu
IFBhdGhTZWdMaW5lVG9BYnM7CisgICAgY2FzZSAnbCc6CisgICAgICAgIHJldHVybiBQYXRoU2Vn
TGluZVRvUmVsOworICAgIGNhc2UgJ0MnOgorICAgICAgICByZXR1cm4gUGF0aFNlZ0N1cnZlVG9D
dWJpY0FiczsKKyAgICBjYXNlICdjJzoKKyAgICAgICAgcmV0dXJuIFBhdGhTZWdDdXJ2ZVRvQ3Vi
aWNSZWw7CisgICAgY2FzZSAnUSc6CisgICAgICAgIHJldHVybiBQYXRoU2VnQ3VydmVUb1F1YWRy
YXRpY0FiczsKKyAgICBjYXNlICdxJzoKKyAgICAgICAgcmV0dXJuIFBhdGhTZWdDdXJ2ZVRvUXVh
ZHJhdGljUmVsOworICAgIGNhc2UgJ0EnOgorICAgICAgICByZXR1cm4gUGF0aFNlZ0FyY0FiczsK
KyAgICBjYXNlICdhJzoKKyAgICAgICAgcmV0dXJuIFBhdGhTZWdBcmNSZWw7CisgICAgY2FzZSAn
SCc6CisgICAgICAgIHJldHVybiBQYXRoU2VnTGluZVRvSG9yaXpvbnRhbEFiczsKKyAgICBjYXNl
ICdoJzoKKyAgICAgICAgcmV0dXJuIFBhdGhTZWdMaW5lVG9Ib3Jpem9udGFsUmVsOworICAgIGNh
c2UgJ1YnOgorICAgICAgICByZXR1cm4gUGF0aFNlZ0xpbmVUb1ZlcnRpY2FsQWJzOworICAgIGNh
c2UgJ3YnOgorICAgICAgICByZXR1cm4gUGF0aFNlZ0xpbmVUb1ZlcnRpY2FsUmVsOworICAgIGNh
c2UgJ1MnOgorICAgICAgICByZXR1cm4gUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aEFiczsKKyAg
ICBjYXNlICdzJzoKKyAgICAgICAgcmV0dXJuIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9vdGhSZWw7
CisgICAgY2FzZSAnVCc6CisgICAgICAgIHJldHVybiBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1Nt
b290aEFiczsKKyAgICBjYXNlICd0JzoKKyAgICAgICAgcmV0dXJuIFBhdGhTZWdDdXJ2ZVRvUXVh
ZHJhdGljU21vb3RoUmVsOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBQYXRoU2VnVW5r
bm93bjsKKyAgICB9Cit9CisKK2Jvb2wgU1ZHUGF0aFN0cmluZ1NvdXJjZTo6aGFzUmVtYWluaW5n
Q29vcmRpbmF0ZXNJbkN1cnJlbnRDb21tYW5kKCkKK3sKKyAgICByZXR1cm4gKCptX3B0ciA9PSAn
KycgfHwgKm1fcHRyID09ICctJyB8fCAqbV9wdHIgPT0gJy4nIHx8ICgqbV9wdHIgPj0gJzAnICYm
ICptX3B0ciA8PSAnOScpKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdQYXRoU3RyaW5nU291cmNlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3N2Zy9T
VkdQYXRoU3RyaW5nU291cmNlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpZm5kZWYgU1ZHUGF0aFN0cmluZ1NvdXJjZV9oCisjZGVmaW5lIFNWR1Bh
dGhTdHJpbmdTb3VyY2VfaAorCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJTVkdQYXRoU291
cmNlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBTVkdQYXRoU3RyaW5nU291cmNlIDogcHVibGljIFNWR1BhdGhTb3VyY2Ugewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR1BhdGhTdHJpbmdTb3VyY2U+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIHN0cmluZykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgU1ZHUGF0aFN0cmluZ1NvdXJjZShzdHJpbmcpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5T
VkdQYXRoU3RyaW5nU291cmNlKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgZW5kT2ZTdHJlYW0oKTsK
KyAgICB2aXJ0dWFsIGJvb2wgcGFyc2VGbG9hdChmbG9hdCYgcmVzdWx0KTsKKyAgICB2aXJ0dWFs
IGJvb2wgcGFyc2VGbGFnKGJvb2wmIHJlc3VsdCk7CisgICAgdmlydHVhbCBib29sIHNraXBTcGFj
ZXMoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzUmVtYWluaW5nQ29vcmRpbmF0ZXNJbkN1cnJlbnRD
b21tYW5kKCk7CisgICAgdmlydHVhbCBTVkdQYXRoU2VnVHlwZSBwYXJzZVNWR1NlZ21lbnRUeXBl
KCk7CisKK3ByaXZhdGU6CisgICAgU1ZHUGF0aFN0cmluZ1NvdXJjZShjb25zdCBTdHJpbmcmKTsK
KyAgICBTdHJpbmcgbV9zdHJpbmc7CisKKyAgICBjb25zdCBVQ2hhciogbV9wdHI7CisgICAgY29u
c3QgVUNoYXIqIG1fZW5kOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFNWRykKKyNlbmRpZiAvLyBTVkdQYXRoU3RyaW5nU291cmNlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63719</attachid>
            <date>2010-08-06 07:13:14 -0700</date>
            <delta_ts>2010-08-06 15:16:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43618-20100806161312.patch</filename>
            <type>text/plain</type>
            <size>82410</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDgzOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTE1IEBACisyMDEwLTA4LTA2ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2Vu
ZXJhbGl6ZSBTVkdQYXRoUGFyc2VyIHRvIGFsbG93IG1vcmUgdGhhbiBqdXN0IHN0cmluZ3MgYXMg
aW5wdXQgc291cmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MzYxOAorCisgICAgICAgIEdlbmVyYWxpemUgU1ZHUGF0aFBhcnNlciwgYnkgYWxsb3dp
bmcgZGlmZmVyZW50IHBhcnNpbmcgc291cmNlcyB0aGFuIGp1c3Qgc3RyaW5ncy4KKyAgICAgICAg
Rm9yIG5vdyBvbmx5IGEgU1ZHUGF0aFN0cmluZ1NvdXJjZSBpcyBhdmFpbGFibGUsIHBhcnNpbmcg
ZnJvbSBieXRlc3RyZWFtcyBmb2xsb3dzIHNvb24uCisgICAgICAgIEVhY2ggY2xpZW50IHRoYXQg
d2FudHMgdG8gcGFyc2Ugc3RyaW5ncywgbGlrZSBQYXRoIG9yIFNWR1BhdGhTZWdMaXN0IG9iamVj
dHMsIG9ubHkKKyAgICAgICAgbmVlZHMgdG8gdXNlIHRoZSBuZXcgY2VudHJhbCBTVkdQYXRoUGFy
c2VyRmFjdG9yeSwgd2hpY2ggZ2x1ZXMgY29uc3VtZXIgYW5kIHNvdXJjZXMgdG9nZXRoZXIuCisg
ICAgICAgIE1vdmVkIHRoZSBTVkdQYXRoU2VnVHlwZSBlbnVtZXJhdGlvbiBmcm9tIFNWR1BhdGhT
ZWcgY2xhc3MgZm9yIGEgY29tbW9uIHVzZSBhY3Jvc3MKKyAgICAgICAgdGhlIFNWRyBjb2RlLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyBhZGRlZC4KKworICAgICAgICAqIEFuZHJvaWQubWs6Cisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorICAgICAgICAq
IHN2Zy9TVkdBbGxJbk9uZS5jcHA6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5k
VG9WYWx1ZXMpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdHbHlwaEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cGFyc2VQYXRoRGF0YSk6CisgICAgICAgICogc3ZnL1NWR1BhdGhCdWlsZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCdWlsZGVyOjpTVkdQYXRoQnVpbGRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdQYXRoQnVpbGRlcjo6bW92ZVRvKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdGhCdWlsZGVyOjpsaW5lVG8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJ1aWxk
ZXI6OmN1cnZlVG9DdWJpYyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnVpbGRlcjo6Y2xv
c2VQYXRoKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BhdGhCdWlsZGVyOjpzZXRDdXJyZW50UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXRoQnVpbGRlcjo6YXJjVG8pOgorICAgICAgICAqIHN2Zy9TVkdQYXRoQ29uc3VtZXIuaDoK
KyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0aEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0
aFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2VyOjpTVkdQYXRoUGFy
c2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OnBhcnNlQ2xvc2VQYXRoU2Vn
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2VyOjpwYXJzZU1vdmVUb1NlZ21l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6cGFyc2VMaW5lVG9TZWdtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OnBhcnNlTGluZVRvSG9yaXpvbnRh
bFNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6cGFyc2VMaW5lVG9W
ZXJ0aWNhbFNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6cGFyc2VD
dXJ2ZVRvQ3ViaWNTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OnBh
cnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
UGFyc2VyOjpwYXJzZUN1cnZlVG9RdWFkcmF0aWNTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdGhQYXJzZXI6OnBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6cGFyc2VBcmNUb1NlZ21lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6cGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6ZGVjb21wb3NlQXJjVG9DdWJpYyk6CisgICAg
ICAgICogc3ZnL1NWR1BhdGhQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJz
ZXI6OnNldEN1cnJlbnRDb25zdW1lcik6CisgICAgICAgICogc3ZnL1NWR1BhdGhQYXJzZXJGYWN0
b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnbG9iYWxTVkdQYXRoQnVpbGRlcik6
CisgICAgICAgIChXZWJDb3JlOjpnbG9iYWxTVkdQYXRoU2VnTGlzdEJ1aWxkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Z2xvYmFsU1ZHUGF0aFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YXRoUGFyc2VyRmFjdG9yeTo6c2VsZik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2Vy
RmFjdG9yeTo6U1ZHUGF0aFBhcnNlckZhY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aFBhcnNlckZhY3Rvcnk6On5TVkdQYXRoUGFyc2VyRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYXRoUGFyc2VyRmFjdG9yeTo6YnVpbGRQYXRoRnJvbVN0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdQYXRoUGFyc2VyRmFjdG9yeTo6YnVpbGRTVkdQYXRoU2VnTGlzdEZyb21TdHJp
bmcpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoUGFyc2VyRmFjdG9yeS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvU1ZHUGF0aFNlZy5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhTZWc6On5TVkdQYXRoU2VnKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dGhTZWc6Oik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnOjpwYXRoU2VnVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnOjpwYXRoU2VnVHlwZUFzTGV0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhTZWc6OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BhdGhTZWc6OmFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BhdGhTZWc6OlNWR1BhdGhTZWcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ1Npbmds
ZUNvb3JkOjpTVkdQYXRoU2VnU2luZ2xlQ29vcmQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aFNlZ1NpbmdsZUNvb3JkOjpzZXRYKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdTaW5n
bGVDb29yZDo6eCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnU2luZ2xlQ29vcmQ6OnNl
dFkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ1NpbmdsZUNvb3JkOjp5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdTaW5nbGVDb29yZDo6dG9TdHJpbmcpOgorICAgICAgICAq
IHN2Zy9TVkdQYXRoU2VnTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlz
dDo6Z2V0UGF0aFNlZ0F0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0
Ojp0b1BhdGhEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0OjpjcmVhdGVB
bmltYXRlZCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0QnVpbGRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OlNWR1BhdGhTZWdMaXN0QnVpbGRl
cik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6Om1vdmVUbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmxpbmVUbyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9DdWJpYyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9DdWJpY1Ntb290aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJh
dGljU21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6YXJj
VG8pOgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6c2V0Q3VycmVudFNWR1BhdGhTZWdMaXN0KToK
KyAgICAgICAgKiBzdmcvU1ZHUGF0aFNvdXJjZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdGhTb3VyY2U6On5TVkdQYXRoU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dGhTb3VyY2U6OlNWR1BhdGhTb3VyY2UpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoU3RyaW5nU291
cmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nU291cmNlOjpT
VkdQYXRoU3RyaW5nU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdTb3Vy
Y2U6On5TVkdQYXRoU3RyaW5nU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJp
bmdTb3VyY2U6OmVuZE9mU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdT
b3VyY2U6OnBhcnNlRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ1NvdXJj
ZTo6cGFyc2VGbGFnKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdTb3VyY2U6OnNr
aXBTcGFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VT
VkdTZWdtZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nU291cmNlOjpo
YXNSZW1haW5pbmdDb29yZGluYXRlc0luQ3VycmVudENvbW1hbmQpOgorICAgICAgICAqIHN2Zy9T
VkdQYXRoU3RyaW5nU291cmNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0
cmluZ1NvdXJjZTo6Y3JlYXRlKToKKwogMjAxMC0wOC0wNiAgRHVtaXRydSBEYW5pbGl1YyAgPGR1
bWlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCB0aGUgIkdUSyBMaW51
eCA2NC1iaXQgRGVidWciIGJvdC4KSW5kZXg6IFdlYkNvcmUvQW5kcm9pZC5tawo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL0FuZHJvaWQubWsJKHJldmlzaW9uIDY0ODM5KQorKysgV2ViQ29yZS9BbmRy
b2lkLm1rCSh3b3JraW5nIGNvcHkpCkBAIC04NjgsNiArODY4LDcgQEAgTE9DQUxfU1JDX0ZJTEVT
IDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJc3ZnL1NWR1BhdGhCdWlsZGVyLmNwcCBcCiAJc3Zn
L1NWR1BhdGhFbGVtZW50LmNwcCBcCiAJc3ZnL1NWR1BhdGhQYXJzZXIuY3BwIFwKKwlzdmcvU1ZH
UGF0aFBhcnNlckZhY3RvcnkuY3BwIFwKIAlzdmcvU1ZHUGF0aFNlZy5jcHAgXAogCXN2Zy9TVkdQ
YXRoU2VnQXJjLmNwcCBcCiAJc3ZnL1NWR1BhdGhTZWdDbG9zZVBhdGguY3BwIFwKQEAgLTg4MSw2
ICs4ODIsNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NBTF9TUkNfRklMRVMpIFwKIAlzdmcv
U1ZHUGF0aFNlZ0xpc3QuY3BwIFwKIAlzdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmNwcCBcCiAJ
c3ZnL1NWR1BhdGhTZWdNb3ZldG8uY3BwIFwKKwlzdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAg
XAogCXN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAgXAogCXN2Zy9TVkdQb2ludExpc3QuY3BwIFwK
IAlzdmcvU1ZHUG9seUVsZW1lbnQuY3BwIFwKSW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNjQ4MzkpCisr
KyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC00MDYxLDYgKzQwNjEs
OCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50Lmgg
XAogCVdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIuY3BwIFwKIAlXZWJDb3JlL3N2Zy9TVkdQYXRo
UGFyc2VyLmggXAorCVdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcCBcCisJV2Vi
Q29yZS9zdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuaCBcCiAJV2ViQ29yZS9zdmcvU1ZHUGF0aFNl
Zy5jcHAgXAogCVdlYkNvcmUvc3ZnL1NWR1BhdGhTZWcuaCBcCiAJV2ViQ29yZS9zdmcvU1ZHUGF0
aFNlZ0FyYy5jcHAgXApAQCAtNDA4Nyw2ICs0MDg5LDkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuaCBcCiAJV2ViQ29yZS9zdmcvU1ZH
UGF0aFNlZ01vdmV0by5jcHAgXAogCVdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdNb3ZldG8uaCBcCisJ
V2ViQ29yZS9zdmcvU1ZHUGF0aFNvdXJjZS5oIFwKKwlXZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5n
U291cmNlLmNwcCBcCisJV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5oIFwKIAlXZWJD
b3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAgXAogCVdlYkNvcmUvc3ZnL1NWR1BhdHRlcm5F
bGVtZW50LmggXAogCVdlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdC5jcHAgXApJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlz
aW9uIDY0ODM5KQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTM4
MTMsNiArMzgxMyw4IEBACiAgICAgICAgICAgICAnc3ZnL1NWR1BhdGhFbGVtZW50LmgnLAogICAg
ICAgICAgICAgJ3N2Zy9TVkdQYXRoUGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAnc3ZnL1NWR1Bh
dGhQYXJzZXIuaCcsCisgICAgICAgICAgICAnc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcCcs
CisgICAgICAgICAgICAnc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmgnLAogICAgICAgICAgICAg
J3N2Zy9TVkdQYXRoU2VnLmNwcCcsCiAgICAgICAgICAgICAnc3ZnL1NWR1BhdGhTZWcuaCcsCiAg
ICAgICAgICAgICAnc3ZnL1NWR1BhdGhTZWdBcmMuY3BwJywKQEAgLTM4MzksNiArMzg0MSw5IEBA
CiAgICAgICAgICAgICAnc3ZnL1NWR1BhdGhTZWdMaXN0QnVpbGRlci5oJywKICAgICAgICAgICAg
ICdzdmcvU1ZHUGF0aFNlZ01vdmV0by5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdQYXRoU2Vn
TW92ZXRvLmgnLAorICAgICAgICAgICAgJ3N2Zy9TVkdQYXRoU291cmNlLmgnLAorICAgICAgICAg
ICAgJ3N2Zy9TVkdQYXRoU3RyaW5nU291cmNlLmNwcCcsCisgICAgICAgICAgICAnc3ZnL1NWR1Bh
dGhTdHJpbmdTb3VyY2UuaCcsCiAgICAgICAgICAgICAnc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNw
cCcsCiAgICAgICAgICAgICAnc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgnLAogICAgICAgICAgICAg
J3N2Zy9TVkdQb2ludExpc3QuY3BwJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNjQ4MzkpCisrKyBXZWJDb3Jl
L1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yODQxLDYgKzI4NDEsNyBAQCBjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfU1ZHPTEpIHsKICAgICAgICAgc3ZnL1NWR1BhdGhCdWlsZGVyLmNw
cCBcCiAgICAgICAgIHN2Zy9TVkdQYXRoRWxlbWVudC5jcHAgXAogICAgICAgICBzdmcvU1ZHUGF0
aFBhcnNlci5jcHAgXAorICAgICAgICBzdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwIFwKICAg
ICAgICAgc3ZnL1NWR1BhdGhTZWcuY3BwIFwKICAgICAgICAgc3ZnL1NWR1BhdGhTZWdBcmMuY3Bw
IFwKICAgICAgICAgc3ZnL1NWR1BhdGhTZWdDbG9zZVBhdGguY3BwIFwKQEAgLTI4NTQsNiArMjg1
NSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkc9MSkgewogICAgICAgICBzdmcvU1ZH
UGF0aFNlZ0xpc3QuY3BwIFwKICAgICAgICAgc3ZnL1NWR1BhdGhTZWdMaXN0QnVpbGRlci5jcHAg
XAogICAgICAgICBzdmcvU1ZHUGF0aFNlZ01vdmV0by5jcHAgXAorICAgICAgICBzdmcvU1ZHUGF0
aFN0cmluZ1NvdXJjZS5jcHAgXAogICAgICAgICBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwIFwK
ICAgICAgICAgc3ZnL1NWR1BvaW50TGlzdC5jcHAgXAogICAgICAgICBzdmcvU1ZHUG9seUVsZW1l
bnQuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNp
b24gNjQ4MzkpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OTE5Nyw2ICs0OTE5NywxMCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZHUGF0aFBhcnNlckZhY3Rvcnku
aCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHN2Z1xTVkdQYXRoU2VnLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtNDkyNDksNiArNDky
NTMsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cc3ZnXFNWR1BhdGhTb3VyY2UuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdQYXRoU3RyaW5nU291cmNlLmgiDQorCQkJ
CT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZH
UGF0dGVybkVsZW1lbnQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjQ4MzkpCisrKyBXZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
NTg2MSw2ICs1ODYxLDExIEBACiAJCTA4QzkyNTE4MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJF
ZmZlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmlsdGVyRWZmZWN0Lmg7
IHBhdGggPSBmaWx0ZXJzL0ZpbHRlckVmZmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwOENENjFCODBFRDM5MjlDMDAyRERGNTEgLyogV01MVGFza0VsZW1lbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV01MVGFza0VsZW1lbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOENENjFCOTBFRDM5MjlDMDAyRERGNTEgLyogV01M
VGFza0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV01MVGFza0Vs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDhEQTk3Q0ExMjBDMzM4NTAw
MjU1QUU4IC8qIFNWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMDhEQTk3Q0IxMjBDMzM4NTAwMjU1QUU4IC8qIFNWR1BhdGhQYXJzZXJG
YWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1BhdGhQYXJzZXJG
YWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4REE5N0QyMTIwQzMzOTgw
MDI1NUFFOCAvKiBTVkdQYXRoU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNWR1BhdGhTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDhEQTk3
RDMxMjBDMzM5ODAwMjU1QUU4IC8qIFNWR1BhdGhTdHJpbmdTb3VyY2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4REE5N0Q0MTIwQzMzOTgwMDI1NUFFOCAvKiBTVkdQ
YXRoU3RyaW5nU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Bh
dGhTdHJpbmdTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhEQUI5Qjgx
MTAzRDlBNTAwM0U3QUJBIC8qIFJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR1NoYWRvd1RyZWVS
b290Q29udGFpbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhEQUI5Qjkx
MTAzRDlBNTAwM0U3QUJBIC8qIFJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29u
dGFpbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4REFCOUMwMTEwM0Q5QzEw
MDNFN0FCQSAvKiBTVkdTaGFkb3dUcmVlRWxlbWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU1ZHU2hhZG93VHJlZUVsZW1lbnRzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MjU3LDYgKzE1MjYyLDggQEAKIAkJCQlCMjIyNzhDNDBEMDBC
RjIwMDA3MUI3ODIgLyogU1ZHUGF0aEVsZW1lbnQuaWRsICovLAogCQkJCTg0NzZDOUVEMTFERjZB
NTgwMDU1NUIwMiAvKiBTVkdQYXRoUGFyc2VyLmNwcCAqLywKIAkJCQk4NDc2QzlFRTExREY2QTU4
MDA1NTVCMDIgLyogU1ZHUGF0aFBhcnNlci5oICovLAorCQkJCTA4REE5N0NBMTIwQzMzODUwMDI1
NUFFOCAvKiBTVkdQYXRoUGFyc2VyRmFjdG9yeS5jcHAgKi8sCisJCQkJMDhEQTk3Q0IxMjBDMzM4
NTAwMjU1QUU4IC8qIFNWR1BhdGhQYXJzZXJGYWN0b3J5LmggKi8sCiAJCQkJQThCQ0ZEMDQxMjBB
MDQ2MTAwQjVGMTIyIC8qIFNWR1BhdGhTZWcuY3BwICovLAogCQkJCUIyMjI3OEM1MEQwMEJGMjAw
MDcxQjc4MiAvKiBTVkdQYXRoU2VnLmggKi8sCiAJCQkJQjIyMjc4QzYwRDAwQkYyMDAwNzFCNzgy
IC8qIFNWR1BhdGhTZWcuaWRsICovLApAQCAtMTUzMDQsNiArMTUzMTEsOSBAQAogCQkJCUIyMjI3
OEVFMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTW92ZXRvLmggKi8sCiAJCQkJQjIyMjc4
RUYwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BhdGhTZWdNb3ZldG9BYnMuaWRsICovLAogCQkJCUIy
MjI3OEYwMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTW92ZXRvUmVsLmlkbCAqLywKKwkJ
CQkwOERBOTdEMjEyMEMzMzk4MDAyNTVBRTggLyogU1ZHUGF0aFNvdXJjZS5oICovLAorCQkJCTA4
REE5N0QzMTIwQzMzOTgwMDI1NUFFOCAvKiBTVkdQYXRoU3RyaW5nU291cmNlLmNwcCAqLywKKwkJ
CQkwOERBOTdENDEyMEMzMzk4MDAyNTVBRTggLyogU1ZHUGF0aFN0cmluZ1NvdXJjZS5oICovLAog
CQkJCUIyMjI3OEYxMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQYXR0ZXJuRWxlbWVudC5jcHAgKi8s
CiAJCQkJQjIyMjc4RjIwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50LmggKi8s
CiAJCQkJQjIyMjc4RjMwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50LmlkbCAq
LywKQEAgLTE5NzM1LDYgKzE5NzQ1LDcgQEAKIAkJCQk4NDc2QzlFQzExREY2QTI5MDA1NTVCMDIg
LyogU1ZHUGF0aENvbnN1bWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E1OTBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHUGF0aEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzZDOUYw
MTFERjZBNTgwMDU1NUIwMiAvKiBTVkdQYXRoUGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
OERBOTdDRDEyMEMzMzg1MDAyNTVBRTggLyogU1ZHUGF0aFBhcnNlckZhY3RvcnkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyMjI3QTVCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMjIyN0E1RTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0Fy
Yy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBNjIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1Bh
dGhTZWdDbG9zZVBhdGguaCBpbiBIZWFkZXJzICovLApAQCAtMTk3NDgsNiArMTk3NTksOCBAQAog
CQkJCUIyMjI3QTgxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTGlzdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODQ3NkM5RTYxMURGNkEwQjAwNTU1QjAyIC8qIFNWR1BhdGhTZWdMaXN0QnVp
bGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBODQwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R1BhdGhTZWdNb3ZldG8uaCBpbiBIZWFkZXJzICovLAorCQkJCTA4REE5N0Q1MTIwQzMzOTgwMDI1
NUFFOCAvKiBTVkdQYXRoU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwOERBOTdENzEyMEMz
Mzk4MDAyNTVBRTggLyogU1ZHUGF0aFN0cmluZ1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjIyMjdBODgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjU1OTk5NTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHUG9pbnRMaWdodFNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBOEMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1Bv
aW50TGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjE4NCw2ICsyMjE5Nyw3IEBACiAJCQkJODQ3
NkM5RUExMURGNkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyMjI3QTU4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NDc2QzlFRjExREY2QTU4MDA1NTVCMDIgLyogU1ZHUGF0aFBhcnNl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwOERBOTdDQzEyMEMzMzg1MDAyNTVBRTggLyogU1ZH
UGF0aFBhcnNlckZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThCQ0ZEMDUxMjBBMDQ2
MTAwQjVGMTIyIC8qIFNWR1BhdGhTZWcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBNUQw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdBcmMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjIyMjdBNjEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdDbG9zZVBhdGguY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0yMjE5Nyw2ICsyMjIxMSw3IEBACiAJCQkJQjIyMjdBODAwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR1BhdGhTZWdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0NzZDOUU1
MTFERjZBMEIwMDU1NUIwMiAvKiBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjIyMjdBODMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdNb3ZldG8uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMDhEQTk3RDYxMjBDMzM5ODAwMjU1QUU4IC8qIFNWR1BhdGhT
dHJpbmdTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBODcwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QThC
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2ludExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjIyMjdBOEUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BvbHlFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLApJbmRleDogV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR0FsbEluT25lLmNwcAkocmV2aXNpb24gNjQ4MzkpCisrKyBXZWJDb3JlL3N2
Zy9TVkdBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsNyBAQAogI2lu
Y2x1ZGUgIlNWR1BhdGhCdWlsZGVyLmNwcCIKICNpbmNsdWRlICJTVkdQYXRoRWxlbWVudC5jcHAi
CiAjaW5jbHVkZSAiU1ZHUGF0aFBhcnNlci5jcHAiCisjaW5jbHVkZSAiU1ZHUGF0aFBhcnNlckZh
Y3RvcnkuY3BwIgogI2luY2x1ZGUgIlNWR1BhdGhTZWcuY3BwIgogI2luY2x1ZGUgIlNWR1BhdGhT
ZWdBcmMuY3BwIgogI2luY2x1ZGUgIlNWR1BhdGhTZWdDbG9zZVBhdGguY3BwIgpAQCAtMTIzLDYg
KzEyNCw3IEBACiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3QuY3BwIgogI2luY2x1ZGUgIlNWR1Bh
dGhTZWdMaXN0QnVpbGRlci5jcHAiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ01vdmV0by5jcHAiCisj
aW5jbHVkZSAiU1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAiCiAjaW5jbHVkZSAiU1ZHUGF0dGVybkVs
ZW1lbnQuY3BwIgogI2luY2x1ZGUgIlNWR1BvaW50TGlzdC5jcHAiCiAjaW5jbHVkZSAiU1ZHUG9s
eUVsZW1lbnQuY3BwIgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAkocmV2aXNpb24g
NjQ4MzkpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNs
dWRlICJTVkdDb2xvci5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgorI2luY2x1
ZGUgIlNWR1BhdGhQYXJzZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3QuaCIK
LSNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdEJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdQb2ludExp
c3QuaCIKICNpbmNsdWRlIDxtYXRoLmg+CiAKQEAgLTE5MCwxMSArMTkwLDEwIEBAIGJvb2wgU1ZH
QW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmQKICAgICAgICAgfQogICAgIH0gZWxzZSBp
ZiAobV9wcm9wZXJ0eVR5cGUgPT0gUGF0aFByb3BlcnR5KSB7CiAgICAgICAgIG1fZnJvbVBhdGgg
PSBTVkdQYXRoU2VnTGlzdDo6Y3JlYXRlKFNWR05hbWVzOjpkQXR0cik7Ci0gICAgICAgIFNWR1Bh
dGhTZWdMaXN0QnVpbGRlciBmcm9tUGFyc2VyKG1fZnJvbVBhdGguZ2V0KCkpOwotICAgICAgICBp
ZiAoZnJvbVBhcnNlci5idWlsZChmcm9tU3RyaW5nLCBVbmFsdGVyZWRQYXJzaW5nKSkgeworICAg
ICAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSogZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5
OjpzZWxmKCk7CisgICAgICAgIGlmIChmYWN0b3J5LT5idWlsZFNWR1BhdGhTZWdMaXN0RnJvbVN0
cmluZyhmcm9tU3RyaW5nLCBtX2Zyb21QYXRoLmdldCgpLCBVbmFsdGVyZWRQYXJzaW5nKSkgewog
ICAgICAgICAgICAgbV90b1BhdGggPSBTVkdQYXRoU2VnTGlzdDo6Y3JlYXRlKFNWR05hbWVzOjpk
QXR0cik7Ci0gICAgICAgICAgICBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIgdG9QYXJzZXIobV90b1Bh
dGguZ2V0KCkpOwotICAgICAgICAgICAgaWYgKHRvUGFyc2VyLmJ1aWxkKHRvU3RyaW5nLCBVbmFs
dGVyZWRQYXJzaW5nKSkKKyAgICAgICAgICAgIGlmIChmYWN0b3J5LT5idWlsZFNWR1BhdGhTZWdM
aXN0RnJvbVN0cmluZyh0b1N0cmluZywgbV90b1BhdGguZ2V0KCksIFVuYWx0ZXJlZFBhcnNpbmcp
KQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIG1fZnJv
bVBhdGguY2xlYXIoKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5j
cHAJKHJldmlzaW9uIDY0ODM5KQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiU1ZHRWxl
bWVudEluc3RhbmNlLmgiCiAjaW5jbHVkZSAiU1ZHTVBhdGhFbGVtZW50LmgiCiAjaW5jbHVkZSAi
U1ZHUGFyc2VyVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiU1ZHUGF0aEJ1aWxkZXIuaCIKKyNpbmNs
dWRlICJTVkdQYXRoUGFyc2VyRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNWR1BhdGhFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgPG1hdGguaD4KQEAgLTg3
LDkgKzg3LDggQEAgdm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6cGFyc2VNYXBwZQogewog
ICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnBhdGhBdHRyKSB7CiAgICAgICAgIG1f
cGF0aCA9IFBhdGgoKTsKLSAgICAgICAgU1ZHUGF0aEJ1aWxkZXIgYnVpbGRlcihtX3BhdGgpOwot
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFuYWx5c2UgdGhlIHJldHVybmVkIHZhbHVlLgot
ICAgICAgICBidWlsZGVyLmJ1aWxkKGF0dHItPnZhbHVlKCkpOworICAgICAgICBTVkdQYXRoUGFy
c2VyRmFjdG9yeSogZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7CisgICAg
ICAgIGZhY3RvcnktPmJ1aWxkUGF0aEZyb21TdHJpbmcoYXR0ci0+dmFsdWUoKSwgbV9wYXRoKTsK
ICAgICB9IGVsc2UKICAgICAgICAgU1ZHQW5pbWF0aW9uRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUoYXR0cik7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5jcHAJKHJldmlzaW9uIDY0
ODM5KQorKysgV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIlNWR0ZvbnRFbGVtZW50LmgiCiAjaW5jbHVkZSAi
U1ZHRm9udEZhY2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKLSNpbmNsdWRlICJT
VkdQYXRoQnVpbGRlci5oIgorI2luY2x1ZGUgIlNWR1BhdGhQYXJzZXJGYWN0b3J5LmgiCiAjaW5j
bHVkZSAiU2ltcGxlRm9udERhdGEuaCIKICNpbmNsdWRlICJYTUxOYW1lcy5oIgogCkBAIC0xMDIs
MTAgKzEwMiw4IEBAIHN0YXRpYyBpbmxpbmUgU1ZHR2x5cGhJZGVudGlmaWVyOjpPcmllbnQKIHN0
YXRpYyBpbmxpbmUgUGF0aCBwYXJzZVBhdGhEYXRhKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
CiB7CiAgICAgUGF0aCByZXN1bHQ7Ci0gICAgU1ZHUGF0aEJ1aWxkZXIgYnVpbGRlcihyZXN1bHQp
OwotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYW5hbHlzZSB0aGUgcmV0dXJuZWQgdmFsdWUuCi0g
ICAgYnVpbGRlci5idWlsZCh2YWx1ZSk7Ci0KKyAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSogZmFj
dG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7CisgICAgZmFjdG9yeS0+YnVpbGRQ
YXRoRnJvbVN0cmluZyh2YWx1ZSwgcmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHUGF0aEJ1aWxkZXIuY3BwCShyZXZpc2lvbiA2NDgzOSkKKysrIFdlYkNvcmUvc3Zn
L1NWR1BhdGhCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNDkgKzI2LDQ1IEBACiAj
aWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdQYXRoQnVpbGRlci5oIgogCi0jaW5jbHVkZSAi
U1ZHUGF0aFBhcnNlci5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR1BhdGhCdWlsZGVy
OjpTVkdQYXRoQnVpbGRlcihQYXRoJiBwYXRoKQotICAgIDogbV9wYXRoKHBhdGgpCi17Ci19Ci0K
LWJvb2wgU1ZHUGF0aEJ1aWxkZXI6OmJ1aWxkKGNvbnN0IFN0cmluZyYgZCkKK1NWR1BhdGhCdWls
ZGVyOjpTVkdQYXRoQnVpbGRlcigpCisgICAgOiBtX3BhdGgoMCkKIHsKLSAgICBTVkdQYXRoUGFy
c2VyIHBhcnNlcih0aGlzKTsKLSAgICByZXR1cm4gcGFyc2VyLnBhcnNlUGF0aERhdGFTdHJpbmco
ZCwgdHJ1ZSk7CiB9CiAKLXZvaWQgU1ZHUGF0aEJ1aWxkZXI6Om1vdmVUbyhjb25zdCBGbG9hdFBv
aW50JiBwb2ludCwgYm9vbCBjbG9zZWQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQordm9pZCBT
VkdQYXRoQnVpbGRlcjo6bW92ZVRvKGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBib29s
IGNsb3NlZCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7Ci0gICAgbV9jdXJyZW50ID0gbW9k
ZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzID8gcG9pbnQgOiBtX2N1cnJlbnQgKyBwb2ludDsKKyAg
ICBBU1NFUlQobV9wYXRoKTsKKyAgICBtX2N1cnJlbnQgPSBtb2RlID09IEFic29sdXRlQ29vcmRp
bmF0ZXMgPyB0YXJnZXRQb2ludCA6IG1fY3VycmVudCArIHRhcmdldFBvaW50OwogICAgIGlmIChj
bG9zZWQpCi0gICAgICAgIG1fcGF0aC5jbG9zZVN1YnBhdGgoKTsKLSAgICBtX3BhdGgubW92ZVRv
KG1fY3VycmVudCk7CisgICAgICAgIG1fcGF0aC0+Y2xvc2VTdWJwYXRoKCk7CisgICAgbV9wYXRo
LT5tb3ZlVG8obV9jdXJyZW50KTsKIH0KIAotdm9pZCBTVkdQYXRoQnVpbGRlcjo6bGluZVRvKGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKK3ZvaWQgU1ZH
UGF0aEJ1aWxkZXI6OmxpbmVUbyhjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENv
b3JkaW5hdGVNb2RlIG1vZGUpCiB7Ci0gICAgbV9jdXJyZW50ID0gbW9kZSA9PSBBYnNvbHV0ZUNv
b3JkaW5hdGVzID8gcG9pbnQgOiBtX2N1cnJlbnQgKyBwb2ludDsKLSAgICBtX3BhdGguYWRkTGlu
ZVRvKG1fY3VycmVudCk7CisgICAgQVNTRVJUKG1fcGF0aCk7CisgICAgbV9jdXJyZW50ID0gbW9k
ZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzID8gdGFyZ2V0UG9pbnQgOiBtX2N1cnJlbnQgKyB0YXJn
ZXRQb2ludDsKKyAgICBtX3BhdGgtPmFkZExpbmVUbyhtX2N1cnJlbnQpOwogfQogCi12b2lkIFNW
R1BhdGhCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludDIsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBQYXRoQ29vcmRp
bmF0ZU1vZGUgbW9kZSkKK3ZvaWQgU1ZHUGF0aEJ1aWxkZXI6OmN1cnZlVG9DdWJpYyhjb25zdCBG
bG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MiwgY29uc3QgRmxvYXRQ
b2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogeworICAgIEFTU0VS
VChtX3BhdGgpOwogICAgIGlmIChtb2RlID09IFJlbGF0aXZlQ29vcmRpbmF0ZXMpIHsKLSAgICAg
ICAgbV9wYXRoLmFkZEJlemllckN1cnZlVG8obV9jdXJyZW50ICsgcG9pbnQxLCBtX2N1cnJlbnQg
KyBwb2ludDIsIG1fY3VycmVudCArIHBvaW50KTsKLSAgICAgICAgbV9jdXJyZW50ICs9IHBvaW50
OworICAgICAgICBtX3BhdGgtPmFkZEJlemllckN1cnZlVG8obV9jdXJyZW50ICsgcG9pbnQxLCBt
X2N1cnJlbnQgKyBwb2ludDIsIG1fY3VycmVudCArIHRhcmdldFBvaW50KTsKKyAgICAgICAgbV9j
dXJyZW50ICs9IHRhcmdldFBvaW50OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fY3VycmVudCA9
IHBvaW50OwotICAgICAgICBtX3BhdGguYWRkQmV6aWVyQ3VydmVUbyhwb2ludDEsIHBvaW50Miwg
bV9jdXJyZW50KTsKKyAgICAgICAgbV9jdXJyZW50ID0gdGFyZ2V0UG9pbnQ7CisgICAgICAgIG1f
cGF0aC0+YWRkQmV6aWVyQ3VydmVUbyhwb2ludDEsIHBvaW50MiwgbV9jdXJyZW50KTsKICAgICB9
ICAgIAogfQogCiB2b2lkIFNWR1BhdGhCdWlsZGVyOjpjbG9zZVBhdGgoKQogewotICAgIG1fcGF0
aC5jbG9zZVN1YnBhdGgoKTsKKyAgICBBU1NFUlQobV9wYXRoKTsKKyAgICBtX3BhdGgtPmNsb3Nl
U3VicGF0aCgpOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoQnVpbGRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhCdWlsZGVyLmgJKHJldmlzaW9uIDY0ODM5
KQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aEJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
MTAgKzMxLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHUGF0aEJ1aWxk
ZXIgOiBwcml2YXRlIFNWR1BhdGhDb25zdW1lciB7CitjbGFzcyBTVkdQYXRoQnVpbGRlciA6IHB1
YmxpYyBTVkdQYXRoQ29uc3VtZXIgewogcHVibGljOgotICAgIFNWR1BhdGhCdWlsZGVyKFBhdGgm
KTsKLSAgICBib29sIGJ1aWxkKGNvbnN0IFN0cmluZyYpOworICAgIFNWR1BhdGhCdWlsZGVyKCk7
CisKKyAgICB2b2lkIHNldEN1cnJlbnRQYXRoKFBhdGgqIHBhdGgpIHsgbV9wYXRoID0gcGF0aDsg
fQogCiBwcml2YXRlOgogICAgIC8vIFVzZWQgaW4gVW5hbHRlcmVkUGFyaXNuZy9Ob3JtYWxpemVk
UGFyc2luZyBtb2Rlcy4KQEAgLTUwLDkgKzUxLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgY3VydmVUb0N1YmljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50
JiwgUGF0aENvb3JkaW5hdGVNb2RlKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmly
dHVhbCB2b2lkIGN1cnZlVG9RdWFkcmF0aWMoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0
UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgY3VydmVUb1F1YWRyYXRpY1Ntb290aChjb25zdCBGbG9hdFBvaW50Jiwg
UGF0aENvb3JkaW5hdGVNb2RlKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIGFyY1RvKGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBib29s
LCBib29sLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgYXJjVG8oZmxvYXQsIGZsb2F0LCBmbG9hdCwgYm9vbCwgYm9vbCwgY29u
c3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQogCi0gICAgUGF0aCYgbV9wYXRoOworICAgIFBhdGgqIG1fcGF0aDsKICAgICBGbG9hdFBv
aW50IG1fY3VycmVudDsKIH07CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhDb25zdW1lci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhDb25zdW1lci5oCShyZXZpc2lvbiA2
NDgzOSkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhDb25zdW1lci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw3IEBACiAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIkZsb2F0UG9pbnQu
aCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0zOSw3ICs0MCw3IEBAIGVudW0gUGF0aFBhcnNpbmdNb2RlIHsKICAgICBVbmFsdGVyZWRQ
YXJzaW5nCiB9OwogCi1jbGFzcyBTVkdQYXRoQ29uc3VtZXIgeworY2xhc3MgU1ZHUGF0aENvbnN1
bWVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKICAgICAvLyBVc2VkIGluIFVuYWx0
ZXJlZFBhcmlzbmcvTm9ybWFsaXplZFBhcnNpbmcgbW9kZXMuCiAgICAgdmlydHVhbCB2b2lkIG1v
dmVUbyhjb25zdCBGbG9hdFBvaW50JiwgYm9vbCBjbG9zZWQsIFBhdGhDb29yZGluYXRlTW9kZSkg
PSAwOwpAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGN1cnZlVG9D
dWJpY1Ntb290aChjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29y
ZGluYXRlTW9kZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJ2ZVRvUXVhZHJhdGljKGNvbnN0
IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoY29uc3QgRmxvYXRQb2lu
dCYsIFBhdGhDb29yZGluYXRlTW9kZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhcmNUbyhjb25z
dCBGbG9hdFBvaW50JiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJv
b2wgc3dlZXBGbGFnLCBQYXRoQ29vcmRpbmF0ZU1vZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
YXJjVG8oZmxvYXQsIGZsb2F0LCBmbG9hdCwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dlZXBG
bGFnLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSA9IDA7CiAKIHByb3Rl
Y3RlZDoKICAgICBTVkdQYXRoQ29uc3VtZXIoKSB7IH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1Bh
dGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5j
cHAJKHJldmlzaW9uIDY0ODM5KQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyUGF0aC5oIgog
I2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKKyNp
bmNsdWRlICJTVkdQYXRoUGFyc2VyRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNWR1BhdGhTZWdBcmMu
aCIKICNpbmNsdWRlICJTVkdQYXRoU2VnQ2xvc2VQYXRoLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNl
Z0N1cnZldG9DdWJpYy5oIgpAQCAtMTczLDggKzE3NCw4IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6
OnBhcnNlTWFwcGVkQXR0cmlidXQKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpk
QXR0cikgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwogICAgICAgICBwYXRoU2VnTGlzdCgp
LT5jbGVhcihlYyk7Ci0gICAgICAgIFNWR1BhdGhTZWdMaXN0QnVpbGRlciBwYXJzZXIocGF0aFNl
Z0xpc3QoKSk7Ci0gICAgICAgIGlmICghcGFyc2VyLmJ1aWxkKGF0dHItPnZhbHVlKCksIE5vcm1h
bGl6ZWRQYXJzaW5nKSkKKyAgICAgICAgU1ZHUGF0aFBhcnNlckZhY3RvcnkqIGZhY3RvcnkgPSBT
VkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpOworICAgICAgICBpZiAoIWZhY3RvcnktPmJ1aWxk
U1ZHUGF0aFNlZ0xpc3RGcm9tU3RyaW5nKGF0dHItPnZhbHVlKCksIHBhdGhTZWdMaXN0KCksIE5v
cm1hbGl6ZWRQYXJzaW5nKSkKICAgICAgICAgICAgIGRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVu
c2lvbnMoKS0+cmVwb3J0RXJyb3IoIlByb2JsZW0gcGFyc2luZyBkPVwiIiArIGF0dHItPnZhbHVl
KCkgKyAiXCIiKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6cGF0
aExlbmd0aEF0dHIpIHsKICAgICAgICAgc2V0UGF0aExlbmd0aEJhc2VWYWx1ZShhdHRyLT52YWx1
ZSgpLnRvRmxvYXQoKSk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmNwcAkocmV2aXNpb24gNjQ4Mzkp
CisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcs
MTUgKzI3LDE0IEBACiAjaW5jbHVkZSAiU1ZHUGF0aFBhcnNlci5oIgogCiAjaW5jbHVkZSAiQWZm
aW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogc3RhdGljIGNvbnN0IGZsb2F0IGdPbmVPdmVyVGhyZWUg
PSAxIC8gMy5mOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR1BhdGhQYXJzZXI6OlNWR1Bh
dGhQYXJzZXIoU1ZHUGF0aENvbnN1bWVyKiBjb25zdW1lcikKLSAgICA6IG1fY29uc3VtZXIoY29u
c3VtZXIpCitTVkdQYXRoUGFyc2VyOjpTVkdQYXRoUGFyc2VyKCkKKyAgICA6IG1fY29uc3VtZXIo
MCkKIHsKIH0KIApAQCAtNDYsOSArNDUsOSBAQCBTVkdQYXRoUGFyc2VyOjp+U1ZHUGF0aFBhcnNl
cigpCiB2b2lkIFNWR1BhdGhQYXJzZXI6OnBhcnNlQ2xvc2VQYXRoU2VnbWVudCgpCiB7CiAgICAg
Ly8gUmVzZXQgbV9jdXJyZW50UG9pbnQgZm9yIHRoZSBuZXh0IHBhdGguCi0gICAgaWYgKG1fbm9y
bWFsaXplZCkKKyAgICBpZiAobV9wYXRoUGFyc2luZ01vZGUgPT0gTm9ybWFsaXplZFBhcnNpbmcp
CiAgICAgICAgIG1fY3VycmVudFBvaW50ID0gbV9zdWJQYXRoUG9pbnQ7Ci0gICAgbV9wYXRoQ2xv
c2VkID0gdHJ1ZTsKKyAgICBtX2Nsb3NlUGF0aCA9IHRydWU7CiAgICAgbV9jb25zdW1lci0+Y2xv
c2VQYXRoKCk7CiB9CiAKQEAgLTU2LDIwICs1NSwyMCBAQCBib29sIFNWR1BhdGhQYXJzZXI6OnBh
cnNlTW92ZVRvU2VnbWVudCgpCiB7CiAgICAgZmxvYXQgdG9YOwogICAgIGZsb2F0IHRvWTsKLSAg
ICBpZiAoIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwgdG9YKSB8fCAhcGFyc2VOdW1iZXIobV9w
dHIsIG1fZW5kLCB0b1kpKQorICAgIGlmICghbV9zb3VyY2UtPnBhcnNlRmxvYXQodG9YKSB8fCAh
bV9zb3VyY2UtPnBhcnNlRmxvYXQodG9ZKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
RmxvYXRQb2ludCB0b1BvaW50KHRvWCwgdG9ZKTsKLSAgICBpZiAobV9ub3JtYWxpemVkKSB7Cisg
ICAgaWYgKG1fcGF0aFBhcnNpbmdNb2RlID09IE5vcm1hbGl6ZWRQYXJzaW5nKSB7CiAgICAgICAg
IGlmIChtX21vZGUgPT0gUmVsYXRpdmVDb29yZGluYXRlcykKICAgICAgICAgICAgIG1fY3VycmVu
dFBvaW50ICs9IHRvUG9pbnQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fY3VycmVudFBv
aW50ID0gdG9Qb2ludDsKICAgICAgICAgbV9zdWJQYXRoUG9pbnQgPSBtX2N1cnJlbnRQb2ludDsK
LSAgICAgICAgbV9jb25zdW1lci0+bW92ZVRvKG1fY3VycmVudFBvaW50LCBtX3BhdGhDbG9zZWQs
IEFic29sdXRlQ29vcmRpbmF0ZXMpOworICAgICAgICBtX2NvbnN1bWVyLT5tb3ZlVG8obV9jdXJy
ZW50UG9pbnQsIG1fY2xvc2VQYXRoLCBBYnNvbHV0ZUNvb3JkaW5hdGVzKTsKICAgICB9IGVsc2UK
LSAgICAgICAgbV9jb25zdW1lci0+bW92ZVRvKHRvUG9pbnQsIG1fcGF0aENsb3NlZCwgbV9tb2Rl
KTsKLSAgICBtX3BhdGhDbG9zZWQgPSBmYWxzZTsKKyAgICAgICAgbV9jb25zdW1lci0+bW92ZVRv
KHRvUG9pbnQsIG1fY2xvc2VQYXRoLCBtX21vZGUpOworICAgIG1fY2xvc2VQYXRoID0gZmFsc2U7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTc3LDExICs3NiwxMSBAQCBib29sIFNWR1BhdGhQ
YXJzZXI6OnBhcnNlTGluZVRvU2VnbWVudCgpCiB7CiAgICAgZmxvYXQgdG9YOwogICAgIGZsb2F0
IHRvWTsKLSAgICBpZiAoIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwgdG9YKSB8fCAhcGFyc2VO
dW1iZXIobV9wdHIsIG1fZW5kLCB0b1kpKQorICAgIGlmICghbV9zb3VyY2UtPnBhcnNlRmxvYXQo
dG9YKSB8fCAhbV9zb3VyY2UtPnBhcnNlRmxvYXQodG9ZKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgRmxvYXRQb2ludCB0b1BvaW50KHRvWCwgdG9ZKTsKLSAgICBpZiAobV9ub3JtYWxp
emVkKSB7CisgICAgaWYgKG1fcGF0aFBhcnNpbmdNb2RlID09IE5vcm1hbGl6ZWRQYXJzaW5nKSB7
CiAgICAgICAgIGlmIChtX21vZGUgPT0gUmVsYXRpdmVDb29yZGluYXRlcykKICAgICAgICAgICAg
IG1fY3VycmVudFBvaW50ICs9IHRvUG9pbnQ7CiAgICAgICAgIGVsc2UKQEAgLTk1LDEwICs5NCwx
MCBAQCBib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlTGluZVRvU2VnbWVudCgpCiBib29sIFNWR1Bh
dGhQYXJzZXI6OnBhcnNlTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQoKQogewogICAgIGZsb2F0IHRv
WDsKLSAgICBpZiAoIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwgdG9YKSkKKyAgICBpZiAoIW1f
c291cmNlLT5wYXJzZUZsb2F0KHRvWCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlm
IChtX25vcm1hbGl6ZWQpIHsKKyAgICBpZiAobV9wYXRoUGFyc2luZ01vZGUgPT0gTm9ybWFsaXpl
ZFBhcnNpbmcpIHsKICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZWxhdGl2ZUNvb3JkaW5hdGVzKQog
ICAgICAgICAgICAgbV9jdXJyZW50UG9pbnQubW92ZSh0b1gsIDApOwogICAgICAgICBlbHNlCkBA
IC0xMTIsMTAgKzExMSwxMCBAQCBib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlTGluZVRvSG9yaXpv
bnRhCiBib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlTGluZVRvVmVydGljYWxTZWdtZW50KCkKIHsK
ICAgICBmbG9hdCB0b1k7Ci0gICAgaWYgKCFwYXJzZU51bWJlcihtX3B0ciwgbV9lbmQsIHRvWSkp
CisgICAgaWYgKCFtX3NvdXJjZS0+cGFyc2VGbG9hdCh0b1kpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBpZiAobV9ub3JtYWxpemVkKSB7CisgICAgaWYgKG1fcGF0aFBhcnNpbmdNb2Rl
ID09IE5vcm1hbGl6ZWRQYXJzaW5nKSB7CiAgICAgICAgIGlmIChtX21vZGUgPT0gUmVsYXRpdmVD
b29yZGluYXRlcykKICAgICAgICAgICAgIG1fY3VycmVudFBvaW50Lm1vdmUoMCwgdG9ZKTsKICAg
ICAgICAgZWxzZQpAQCAtMTM0LDI5ICsxMzMsMjkgQEAgYm9vbCBTVkdQYXRoUGFyc2VyOjpwYXJz
ZUN1cnZlVG9DdWJpY1NlZwogICAgIGZsb2F0IHkyOwogICAgIGZsb2F0IHRvWDsKICAgICBmbG9h
dCB0b1k7IAotICAgIGlmICghcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5kLCB4MSkKLSAgICAgICAg
fHwgIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwgeTEpCi0gICAgICAgIHx8ICFwYXJzZU51bWJl
cihtX3B0ciwgbV9lbmQsIHgyKQotICAgICAgICB8fCAhcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5k
LCB5MikKLSAgICAgICAgfHwgIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwgdG9YKQotICAgICAg
ICB8fCAhcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5kLCB0b1kpKQorICAgIGlmICghbV9zb3VyY2Ut
PnBhcnNlRmxvYXQoeDEpCisgICAgICAgIHx8ICFtX3NvdXJjZS0+cGFyc2VGbG9hdCh5MSkKKyAg
ICAgICAgfHwgIW1fc291cmNlLT5wYXJzZUZsb2F0KHgyKQorICAgICAgICB8fCAhbV9zb3VyY2Ut
PnBhcnNlRmxvYXQoeTIpCisgICAgICAgIHx8ICFtX3NvdXJjZS0+cGFyc2VGbG9hdCh0b1gpCisg
ICAgICAgIHx8ICFtX3NvdXJjZS0+cGFyc2VGbG9hdCh0b1kpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBGbG9hdFBvaW50IHBvaW50MSh4MSwgeTEpOwogICAgIEZsb2F0UG9pbnQgcG9p
bnQyKHgyLCB5Mik7Ci0gICAgRmxvYXRQb2ludCBwb2ludDModG9YLCB0b1kpOwotICAgIGlmICht
X25vcm1hbGl6ZWQpIHsKKyAgICBGbG9hdFBvaW50IHRhcmdldFBvaW50KHRvWCwgdG9ZKTsKKyAg
ICBpZiAobV9wYXRoUGFyc2luZ01vZGUgPT0gTm9ybWFsaXplZFBhcnNpbmcpIHsKICAgICAgICAg
aWYgKG1fbW9kZSA9PSBSZWxhdGl2ZUNvb3JkaW5hdGVzKSB7CiAgICAgICAgICAgICBwb2ludDEg
Kz0gbV9jdXJyZW50UG9pbnQ7CiAgICAgICAgICAgICBwb2ludDIgKz0gbV9jdXJyZW50UG9pbnQ7
Ci0gICAgICAgICAgICBwb2ludDMgKz0gbV9jdXJyZW50UG9pbnQ7CisgICAgICAgICAgICB0YXJn
ZXRQb2ludCArPSBtX2N1cnJlbnRQb2ludDsKICAgICAgICAgfQotICAgICAgICBtX2NvbnN1bWVy
LT5jdXJ2ZVRvQ3ViaWMocG9pbnQxLCBwb2ludDIsIHBvaW50MywgQWJzb2x1dGVDb29yZGluYXRl
cyk7CisgICAgICAgIG1fY29uc3VtZXItPmN1cnZlVG9DdWJpYyhwb2ludDEsIHBvaW50MiwgdGFy
Z2V0UG9pbnQsIEFic29sdXRlQ29vcmRpbmF0ZXMpOwogCiAgICAgICAgIG1fY29udHJvbFBvaW50
ID0gcG9pbnQyOwotICAgICAgICBtX2N1cnJlbnRQb2ludCA9IHBvaW50MzsKKyAgICAgICAgbV9j
dXJyZW50UG9pbnQgPSB0YXJnZXRQb2ludDsKICAgICB9IGVsc2UKLSAgICAgICAgbV9jb25zdW1l
ci0+Y3VydmVUb0N1YmljKHBvaW50MSwgcG9pbnQyLCBwb2ludDMsIG1fbW9kZSk7CisgICAgICAg
IG1fY29uc3VtZXItPmN1cnZlVG9DdWJpYyhwb2ludDEsIHBvaW50MiwgdGFyZ2V0UG9pbnQsIG1f
bW9kZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE2NiwzNSArMTY1LDM1IEBAIGJvb2wg
U1ZHUGF0aFBhcnNlcjo6cGFyc2VDdXJ2ZVRvQ3ViaWNTbW8KICAgICBmbG9hdCB5MjsKICAgICBm
bG9hdCB0b1g7CiAgICAgZmxvYXQgdG9ZOyAKLSAgICBpZiAoIXBhcnNlTnVtYmVyKG1fcHRyLCBt
X2VuZCwgeDIpCi0gICAgICAgIHx8ICFwYXJzZU51bWJlcihtX3B0ciwgbV9lbmQsIHkyKQotICAg
ICAgICB8fCAhcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5kLCB0b1gpCi0gICAgICAgIHx8ICFwYXJz
ZU51bWJlcihtX3B0ciwgbV9lbmQsIHRvWSkpCisgICAgaWYgKCFtX3NvdXJjZS0+cGFyc2VGbG9h
dCh4MikKKyAgICAgICAgfHwgIW1fc291cmNlLT5wYXJzZUZsb2F0KHkyKQorICAgICAgICB8fCAh
bV9zb3VyY2UtPnBhcnNlRmxvYXQodG9YKQorICAgICAgICB8fCAhbV9zb3VyY2UtPnBhcnNlRmxv
YXQodG9ZKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKG1fbGFzdENvbW1hbmQg
IT0gJ2MnCi0gICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gJ0MnCi0gICAgICAgICYmIG1fbGFz
dENvbW1hbmQgIT0gJ3MnCi0gICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gJ1MnKQorICAgIGlm
IChtX2xhc3RDb21tYW5kICE9IFBhdGhTZWdDdXJ2ZVRvQ3ViaWNBYnMKKyAgICAgICAgJiYgbV9s
YXN0Q29tbWFuZCAhPSBQYXRoU2VnQ3VydmVUb0N1YmljUmVsCisgICAgICAgICYmIG1fbGFzdENv
bW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aEFicworICAgICAgICAmJiBtX2xhc3RD
b21tYW5kICE9IFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9vdGhSZWwpCiAgICAgICAgIG1fY29udHJv
bFBvaW50ID0gbV9jdXJyZW50UG9pbnQ7CiAKICAgICBGbG9hdFBvaW50IHBvaW50Mih4MiwgeTIp
OwotICAgIEZsb2F0UG9pbnQgcG9pbnQzKHRvWCwgdG9ZKTsKLSAgICBpZiAobV9ub3JtYWxpemVk
KSB7CisgICAgRmxvYXRQb2ludCB0YXJnZXRQb2ludCh0b1gsIHRvWSk7CisgICAgaWYgKG1fcGF0
aFBhcnNpbmdNb2RlID09IE5vcm1hbGl6ZWRQYXJzaW5nKSB7CiAgICAgICAgIEZsb2F0UG9pbnQg
cG9pbnQxID0gbV9jdXJyZW50UG9pbnQ7CiAgICAgICAgIHBvaW50MS5zY2FsZSgyLCAyKTsKICAg
ICAgICAgcG9pbnQxLm1vdmUoLW1fY29udHJvbFBvaW50LngoKSwgLW1fY29udHJvbFBvaW50Lnko
KSk7CiAgICAgICAgIGlmIChtX21vZGUgPT0gUmVsYXRpdmVDb29yZGluYXRlcykgewogICAgICAg
ICAgICAgcG9pbnQyICs9IG1fY3VycmVudFBvaW50OwotICAgICAgICAgICAgcG9pbnQzICs9IG1f
Y3VycmVudFBvaW50OworICAgICAgICAgICAgdGFyZ2V0UG9pbnQgKz0gbV9jdXJyZW50UG9pbnQ7
CiAgICAgICAgIH0KIAotICAgICAgICBtX2NvbnN1bWVyLT5jdXJ2ZVRvQ3ViaWMocG9pbnQxLCBw
b2ludDIsIHBvaW50MywgQWJzb2x1dGVDb29yZGluYXRlcyk7CisgICAgICAgIG1fY29uc3VtZXIt
PmN1cnZlVG9DdWJpYyhwb2ludDEsIHBvaW50MiwgdGFyZ2V0UG9pbnQsIEFic29sdXRlQ29vcmRp
bmF0ZXMpOwogCiAgICAgICAgIG1fY29udHJvbFBvaW50ID0gcG9pbnQyOwotICAgICAgICBtX2N1
cnJlbnRQb2ludCA9IHBvaW50MzsKKyAgICAgICAgbV9jdXJyZW50UG9pbnQgPSB0YXJnZXRQb2lu
dDsKICAgICB9IGVsc2UKLSAgICAgICAgbV9jb25zdW1lci0+Y3VydmVUb0N1YmljU21vb3RoKHBv
aW50MiwgcG9pbnQzLCBtX21vZGUpOworICAgICAgICBtX2NvbnN1bWVyLT5jdXJ2ZVRvQ3ViaWNT
bW9vdGgocG9pbnQyLCB0YXJnZXRQb2ludCwgbV9tb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtMjA0LDMzICsyMDMsMzMgQEAgYm9vbCBTVkdQYXRoUGFyc2VyOjpwYXJzZUN1cnZlVG9R
dWFkcmF0aQogICAgIGZsb2F0IHkxOwogICAgIGZsb2F0IHRvWDsKICAgICBmbG9hdCB0b1k7Ci0g
ICAgaWYgKCFwYXJzZU51bWJlcihtX3B0ciwgbV9lbmQsIHgxKQotICAgICAgICB8fCAhcGFyc2VO
dW1iZXIobV9wdHIsIG1fZW5kLCB5MSkKLSAgICAgICAgfHwgIXBhcnNlTnVtYmVyKG1fcHRyLCBt
X2VuZCwgdG9YKQotICAgICAgICB8fCAhcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5kLCB0b1kpKQor
ICAgIGlmICghbV9zb3VyY2UtPnBhcnNlRmxvYXQoeDEpCisgICAgICAgIHx8ICFtX3NvdXJjZS0+
cGFyc2VGbG9hdCh5MSkKKyAgICAgICAgfHwgIW1fc291cmNlLT5wYXJzZUZsb2F0KHRvWCkKKyAg
ICAgICAgfHwgIW1fc291cmNlLT5wYXJzZUZsb2F0KHRvWSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIEZsb2F0UG9pbnQgcG9pbnQzKHRvWCwgdG9ZKTsKLSAgICBpZiAobV9ub3JtYWxp
emVkKSB7CisgICAgRmxvYXRQb2ludCB0YXJnZXRQb2ludCh0b1gsIHRvWSk7CisgICAgaWYgKG1f
cGF0aFBhcnNpbmdNb2RlID09IE5vcm1hbGl6ZWRQYXJzaW5nKSB7CiAgICAgICAgIEZsb2F0UG9p
bnQgcG9pbnQxID0gbV9jdXJyZW50UG9pbnQ7CiAgICAgICAgIHBvaW50MS5tb3ZlKDIgKiB4MSwg
MiAqIHkxKTsKICAgICAgICAgRmxvYXRQb2ludCBwb2ludDIodG9YICsgMiAqIHgxLCB0b1kgKyAy
ICogeTEpOwogICAgICAgICBpZiAobV9tb2RlID09IFJlbGF0aXZlQ29vcmRpbmF0ZXMpIHsKICAg
ICAgICAgICAgIHBvaW50MS5tb3ZlKDIgKiBtX2N1cnJlbnRQb2ludC54KCksIDIgKiBtX2N1cnJl
bnRQb2ludC55KCkpOwogICAgICAgICAgICAgcG9pbnQyLm1vdmUoMyAqIG1fY3VycmVudFBvaW50
LngoKSwgMyAqIG1fY3VycmVudFBvaW50LnkoKSk7Ci0gICAgICAgICAgICBwb2ludDMgKz0gbV9j
dXJyZW50UG9pbnQ7CisgICAgICAgICAgICB0YXJnZXRQb2ludCArPSBtX2N1cnJlbnRQb2ludDsK
ICAgICAgICAgfQogICAgICAgICBwb2ludDEuc2NhbGUoZ09uZU92ZXJUaHJlZSwgZ09uZU92ZXJU
aHJlZSk7CiAgICAgICAgIHBvaW50Mi5zY2FsZShnT25lT3ZlclRocmVlLCBnT25lT3ZlclRocmVl
KTsKIAotICAgICAgICBtX2NvbnN1bWVyLT5jdXJ2ZVRvQ3ViaWMocG9pbnQxLCBwb2ludDIsIHBv
aW50MywgQWJzb2x1dGVDb29yZGluYXRlcyk7CisgICAgICAgIG1fY29uc3VtZXItPmN1cnZlVG9D
dWJpYyhwb2ludDEsIHBvaW50MiwgdGFyZ2V0UG9pbnQsIEFic29sdXRlQ29vcmRpbmF0ZXMpOwog
CiAgICAgICAgIG1fY29udHJvbFBvaW50ID0gRmxvYXRQb2ludCh4MSwgeTEpOwogICAgICAgICBp
ZiAobV9tb2RlID09IFJlbGF0aXZlQ29vcmRpbmF0ZXMpCiAgICAgICAgICAgICBtX2NvbnRyb2xQ
b2ludCArPSBtX2N1cnJlbnRQb2ludDsKLSAgICAgICAgbV9jdXJyZW50UG9pbnQgPSBwb2ludDM7
CisgICAgICAgIG1fY3VycmVudFBvaW50ID0gdGFyZ2V0UG9pbnQ7CiAgICAgfSBlbHNlCi0gICAg
ICAgIG1fY29uc3VtZXItPmN1cnZlVG9RdWFkcmF0aWMoRmxvYXRQb2ludCh4MSwgeTEpLCBwb2lu
dDMsIG1fbW9kZSk7CisgICAgICAgIG1fY29uc3VtZXItPmN1cnZlVG9RdWFkcmF0aWMoRmxvYXRQ
b2ludCh4MSwgeTEpLCB0YXJnZXRQb2ludCwgbV9tb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtMjM4LDMyICsyMzcsMzMgQEAgYm9vbCBTVkdQYXRoUGFyc2VyOjpwYXJzZUN1cnZlVG9R
dWFkcmF0aQogewogICAgIGZsb2F0IHRvWDsKICAgICBmbG9hdCB0b1k7Ci0gICAgaWYgKCFwYXJz
ZU51bWJlcihtX3B0ciwgbV9lbmQsIHRvWCkgfHwgIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwg
dG9ZKSkKKyAgICBpZiAoIW1fc291cmNlLT5wYXJzZUZsb2F0KHRvWCkgfHwgIW1fc291cmNlLT5w
YXJzZUZsb2F0KHRvWSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9sYXN0Q29t
bWFuZCAhPSAncScKLSAgICAgICAgJiYgbV9sYXN0Q29tbWFuZCAhPSAnUScKLSAgICAgICAgJiYg
bV9sYXN0Q29tbWFuZCAhPSAndCcKLSAgICAgICAgJiYgbV9sYXN0Q29tbWFuZCAhPSAnVCcpCisK
KyAgICBpZiAobV9sYXN0Q29tbWFuZCAhPSBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY0FicworICAg
ICAgICAmJiBtX2xhc3RDb21tYW5kICE9IFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljUmVsCisgICAg
ICAgICYmIG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhBYnMK
KyAgICAgICAgJiYgbV9sYXN0Q29tbWFuZCAhPSBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290
aFJlbCkKICAgICAgICAgbV9jb250cm9sUG9pbnQgPSBtX2N1cnJlbnRQb2ludDsKIAotICAgIGlm
IChtX25vcm1hbGl6ZWQpIHsKKyAgICBpZiAobV9wYXRoUGFyc2luZ01vZGUgPT0gTm9ybWFsaXpl
ZFBhcnNpbmcpIHsKICAgICAgICAgRmxvYXRQb2ludCBjdWJpY1BvaW50ID0gbV9jdXJyZW50UG9p
bnQ7CiAgICAgICAgIGN1YmljUG9pbnQuc2NhbGUoMiwgMik7CiAgICAgICAgIGN1YmljUG9pbnQu
bW92ZSgtbV9jb250cm9sUG9pbnQueCgpLCAtbV9jb250cm9sUG9pbnQueSgpKTsKICAgICAgICAg
RmxvYXRQb2ludCBwb2ludDEobV9jdXJyZW50UG9pbnQueCgpICsgMiAqIGN1YmljUG9pbnQueCgp
LCBtX2N1cnJlbnRQb2ludC55KCkgKyAyICogY3ViaWNQb2ludC55KCkpOwogICAgICAgICBGbG9h
dFBvaW50IHBvaW50Mih0b1ggKyAyICogY3ViaWNQb2ludC54KCksIHRvWSArIDIgKiBjdWJpY1Bv
aW50LnkoKSk7Ci0gICAgICAgIEZsb2F0UG9pbnQgcG9pbnQzKHRvWCwgdG9ZKTsKKyAgICAgICAg
RmxvYXRQb2ludCB0YXJnZXRQb2ludCh0b1gsIHRvWSk7CiAgICAgICAgIGlmIChtX21vZGUgPT0g
UmVsYXRpdmVDb29yZGluYXRlcykgewogICAgICAgICAgICAgcG9pbnQyICs9IG1fY3VycmVudFBv
aW50OwotICAgICAgICAgICAgcG9pbnQzICs9IG1fY3VycmVudFBvaW50OworICAgICAgICAgICAg
dGFyZ2V0UG9pbnQgKz0gbV9jdXJyZW50UG9pbnQ7CiAgICAgICAgIH0KICAgICAgICAgcG9pbnQx
LnNjYWxlKGdPbmVPdmVyVGhyZWUsIGdPbmVPdmVyVGhyZWUpOwogICAgICAgICBwb2ludDIuc2Nh
bGUoZ09uZU92ZXJUaHJlZSwgZ09uZU92ZXJUaHJlZSk7CiAKLSAgICAgICAgbV9jb25zdW1lci0+
Y3VydmVUb0N1YmljKHBvaW50MSwgcG9pbnQyLCBwb2ludDMsIEFic29sdXRlQ29vcmRpbmF0ZXMp
OworICAgICAgICBtX2NvbnN1bWVyLT5jdXJ2ZVRvQ3ViaWMocG9pbnQxLCBwb2ludDIsIHRhcmdl
dFBvaW50LCBBYnNvbHV0ZUNvb3JkaW5hdGVzKTsKIAogICAgICAgICBtX2NvbnRyb2xQb2ludCA9
IGN1YmljUG9pbnQ7Ci0gICAgICAgIG1fY3VycmVudFBvaW50ID0gcG9pbnQzOworICAgICAgICBt
X2N1cnJlbnRQb2ludCA9IHRhcmdldFBvaW50OwogICAgIH0gZWxzZQogICAgICAgICBtX2NvbnN1
bWVyLT5jdXJ2ZVRvUXVhZHJhdGljU21vb3RoKEZsb2F0UG9pbnQodG9YLCB0b1kpLCBtX21vZGUp
OwogICAgIHJldHVybiB0cnVlOwpAQCAtMjc4LDExNSArMjc4LDEyNSBAQCBib29sIFNWR1BhdGhQ
YXJzZXI6OnBhcnNlQXJjVG9TZWdtZW50KCkKICAgICBmbG9hdCByeTsKICAgICBmbG9hdCB0b1g7
CiAgICAgZmxvYXQgdG9ZOwotICAgIGlmICghcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5kLCByeCkK
LSAgICAgICAgfHwgIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwgcnkpCi0gICAgICAgIHx8ICFw
YXJzZU51bWJlcihtX3B0ciwgbV9lbmQsIGFuZ2xlKQotICAgICAgICB8fCAhcGFyc2VBcmNGbGFn
KG1fcHRyLCBtX2VuZCwgbGFyZ2VBcmMpCi0gICAgICAgIHx8ICFwYXJzZUFyY0ZsYWcobV9wdHIs
IG1fZW5kLCBzd2VlcCkKLSAgICAgICAgfHwgIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwgdG9Y
KQotICAgICAgICB8fCAhcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5kLCB0b1kpKQorICAgIGlmICgh
bV9zb3VyY2UtPnBhcnNlRmxvYXQocngpCisgICAgICAgIHx8ICFtX3NvdXJjZS0+cGFyc2VGbG9h
dChyeSkKKyAgICAgICAgfHwgIW1fc291cmNlLT5wYXJzZUZsb2F0KGFuZ2xlKQorICAgICAgICB8
fCAhbV9zb3VyY2UtPnBhcnNlRmxhZyhsYXJnZUFyYykKKyAgICAgICAgfHwgIW1fc291cmNlLT5w
YXJzZUZsYWcoc3dlZXApCisgICAgICAgIHx8ICFtX3NvdXJjZS0+cGFyc2VGbG9hdCh0b1gpCisg
ICAgICAgIHx8ICFtX3NvdXJjZS0+cGFyc2VGbG9hdCh0b1kpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBGbG9hdFBvaW50IHBvaW50MiA9IEZsb2F0UG9pbnQodG9YLCB0b1kpOworICAg
IEZsb2F0UG9pbnQgdGFyZ2V0UG9pbnQgPSBGbG9hdFBvaW50KHRvWCwgdG9ZKTsKICAgICAvLyBJ
ZiByeCA9IDAgb3IgcnkgPSAwIHRoZW4gdGhpcyBhcmMgaXMgdHJlYXRlZCBhcyBhIHN0cmFpZ2h0
IGxpbmUgc2VnbWVudCAoYSAibGluZXRvIikgam9pbmluZyB0aGUgZW5kcG9pbnRzLgogICAgIC8v
IGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9pbXBsbm90ZS5odG1sI0FyY091dE9mUmFuZ2VQYXJh
bWV0ZXJzCiAgICAgcnggPSBmYWJzZihyeCk7CiAgICAgcnkgPSBmYWJzZihyeSk7CiAgICAgaWYg
KCFyeCB8fCAhcnkpIHsKLSAgICAgICAgaWYgKG1fbm9ybWFsaXplZCkgeworICAgICAgICBpZiAo
bV9wYXRoUGFyc2luZ01vZGUgPT0gTm9ybWFsaXplZFBhcnNpbmcpIHsKICAgICAgICAgICAgIGlm
IChtX21vZGUgPT0gUmVsYXRpdmVDb29yZGluYXRlcykKLSAgICAgICAgICAgICAgICBtX2N1cnJl
bnRQb2ludCArPSBwb2ludDI7CisgICAgICAgICAgICAgICAgbV9jdXJyZW50UG9pbnQgKz0gdGFy
Z2V0UG9pbnQ7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9jdXJyZW50UG9p
bnQgPSBwb2ludDI7CisgICAgICAgICAgICAgICAgbV9jdXJyZW50UG9pbnQgPSB0YXJnZXRQb2lu
dDsKICAgICAgICAgICAgIG1fY29uc3VtZXItPmxpbmVUbyhtX2N1cnJlbnRQb2ludCwgQWJzb2x1
dGVDb29yZGluYXRlcyk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9jb25zdW1lci0+
bGluZVRvKHBvaW50MiwgbV9tb2RlKTsKKyAgICAgICAgICAgIG1fY29uc3VtZXItPmxpbmVUbyh0
YXJnZXRQb2ludCwgbV9tb2RlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAg
aWYgKG1fbm9ybWFsaXplZCkgeworICAgIGlmIChtX3BhdGhQYXJzaW5nTW9kZSA9PSBOb3JtYWxp
emVkUGFyc2luZykgewogICAgICAgICBGbG9hdFBvaW50IHBvaW50MSA9IG1fY3VycmVudFBvaW50
OwogICAgICAgICBpZiAobV9tb2RlID09IFJlbGF0aXZlQ29vcmRpbmF0ZXMpCi0gICAgICAgICAg
ICBwb2ludDIgKz0gbV9jdXJyZW50UG9pbnQ7Ci0gICAgICAgIG1fY3VycmVudFBvaW50ID0gcG9p
bnQyOwotICAgICAgICByZXR1cm4gZGVjb21wb3NlQXJjVG9DdWJpYyhhbmdsZSwgcngsIHJ5LCBw
b2ludDEsIHBvaW50MiwgbGFyZ2VBcmMsIHN3ZWVwKTsKKyAgICAgICAgICAgIHRhcmdldFBvaW50
ICs9IG1fY3VycmVudFBvaW50OworICAgICAgICBtX2N1cnJlbnRQb2ludCA9IHRhcmdldFBvaW50
OworICAgICAgICByZXR1cm4gZGVjb21wb3NlQXJjVG9DdWJpYyhhbmdsZSwgcngsIHJ5LCBwb2lu
dDEsIHRhcmdldFBvaW50LCBsYXJnZUFyYywgc3dlZXApOwogICAgIH0KLSAgICBtX2NvbnN1bWVy
LT5hcmNUbyhwb2ludDIsIHJ4LCByeSwgYW5nbGUsIGxhcmdlQXJjLCBzd2VlcCwgbV9tb2RlKTsK
KyAgICBtX2NvbnN1bWVyLT5hcmNUbyhyeCwgcnksIGFuZ2xlLCBsYXJnZUFyYywgc3dlZXAsIHRh
cmdldFBvaW50LCBtX21vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFNWR1BhdGhQ
YXJzZXI6OnBhcnNlUGF0aERhdGFTdHJpbmcoY29uc3QgU3RyaW5nJiBzLCBib29sIG5vcm1hbGl6
ZWQpCitib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlUGF0aERhdGFGcm9tU291cmNlKFBhc3NPd25Q
dHI8U1ZHUGF0aFNvdXJjZT4gc291cmNlLCBQYXRoUGFyc2luZ01vZGUgcGF0aFBhcnNpbmdNb2Rl
KQogewotICAgIG1fcHRyID0gcy5jaGFyYWN0ZXJzKCk7Ci0gICAgbV9lbmQgPSBtX3B0ciArIHMu
bGVuZ3RoKCk7Ci0gICAgbV9ub3JtYWxpemVkID0gbm9ybWFsaXplZDsKKyAgICBBU1NFUlQoc291
cmNlKTsKKworICAgIG1fc291cmNlID0gc291cmNlOworICAgIG1fcGF0aFBhcnNpbmdNb2RlID0g
cGF0aFBhcnNpbmdNb2RlOwogCiAgICAgbV9jb250cm9sUG9pbnQgPSBGbG9hdFBvaW50KCk7CiAg
ICAgbV9jdXJyZW50UG9pbnQgPSBGbG9hdFBvaW50KCk7CiAgICAgbV9zdWJQYXRoUG9pbnQgPSBG
bG9hdFBvaW50KCk7Ci0gICAgbV9wYXRoQ2xvc2VkID0gdHJ1ZTsKKyAgICBtX2Nsb3NlUGF0aCA9
IHRydWU7CiAKICAgICAvLyBTa2lwIGFueSBsZWFkaW5nIHNwYWNlcy4KLSAgICBpZiAoIXNraXBP
cHRpb25hbFNwYWNlcyhtX3B0ciwgbV9lbmQpKQorICAgIGlmICghbV9zb3VyY2UtPm1vdmVUb05l
eHRUb2tlbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjaGFyIGNvbW1hbmQgPSAq
KG1fcHRyKyspOwotICAgIG1fbGFzdENvbW1hbmQgPSAnICc7CisgICAgU1ZHUGF0aFNlZ1R5cGUg
Y29tbWFuZCA9IG1fc291cmNlLT5wYXJzZVNWR1NlZ21lbnRUeXBlKCk7CisgICAgbV9sYXN0Q29t
bWFuZCA9IFBhdGhTZWdVbmtub3duOworCiAgICAgLy8gUGF0aCBtdXN0IHN0YXJ0IHdpdGggbW92
ZXRvLgotICAgIGlmIChjb21tYW5kICE9ICdtJyAmJiBjb21tYW5kICE9ICdNJykKKyAgICBpZiAo
Y29tbWFuZCAhPSBQYXRoU2VnTW92ZVRvQWJzICYmIGNvbW1hbmQgIT0gUGF0aFNlZ01vdmVUb1Jl
bCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAg
Ly8gU2tpcCBzcGFjZXMgYmV0d2VlbiBjb21tYW5kIGFuZCBmaXJzdCBjb29yZGluYXRlLgotICAg
ICAgICBza2lwT3B0aW9uYWxTcGFjZXMobV9wdHIsIG1fZW5kKTsKLSAgICAgICAgbV9tb2RlID0g
Y29tbWFuZCA+PSAnYScgJiYgY29tbWFuZCA8PSAneicgPyBSZWxhdGl2ZUNvb3JkaW5hdGVzIDog
QWJzb2x1dGVDb29yZGluYXRlczsKKyAgICAgICAgbV9zb3VyY2UtPm1vdmVUb05leHRUb2tlbigp
OworICAgICAgICBtX21vZGUgPSBBYnNvbHV0ZUNvb3JkaW5hdGVzOwogICAgICAgICBzd2l0Y2gg
KGNvbW1hbmQpIHsKLSAgICAgICAgY2FzZSAnbSc6Ci0gICAgICAgIGNhc2UgJ00nOgorICAgICAg
ICBjYXNlIFBhdGhTZWdNb3ZlVG9SZWw6CisgICAgICAgICAgICBtX21vZGUgPSBSZWxhdGl2ZUNv
b3JkaW5hdGVzOworICAgICAgICBjYXNlIFBhdGhTZWdNb3ZlVG9BYnM6CiAgICAgICAgICAgICBp
ZiAoIXBhcnNlTW92ZVRvU2VnbWVudCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICdsJzoKLSAgICAgICAgY2FzZSAnTCc6
CisgICAgICAgIGNhc2UgUGF0aFNlZ0xpbmVUb1JlbDoKKyAgICAgICAgICAgIG1fbW9kZSA9IFJl
bGF0aXZlQ29vcmRpbmF0ZXM7CisgICAgICAgIGNhc2UgUGF0aFNlZ0xpbmVUb0FiczoKICAgICAg
ICAgICAgIGlmICghcGFyc2VMaW5lVG9TZWdtZW50KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ2gnOgotICAgICAgICBj
YXNlICdIJzoKKyAgICAgICAgY2FzZSBQYXRoU2VnTGluZVRvSG9yaXpvbnRhbFJlbDoKKyAgICAg
ICAgICAgIG1fbW9kZSA9IFJlbGF0aXZlQ29vcmRpbmF0ZXM7CisgICAgICAgIGNhc2UgUGF0aFNl
Z0xpbmVUb0hvcml6b250YWxBYnM6CiAgICAgICAgICAgICBpZiAoIXBhcnNlTGluZVRvSG9yaXpv
bnRhbFNlZ21lbnQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSAndic6Ci0gICAgICAgIGNhc2UgJ1YnOgorICAgICAgICBj
YXNlIFBhdGhTZWdMaW5lVG9WZXJ0aWNhbFJlbDoKKyAgICAgICAgICAgIG1fbW9kZSA9IFJlbGF0
aXZlQ29vcmRpbmF0ZXM7CisgICAgICAgIGNhc2UgUGF0aFNlZ0xpbmVUb1ZlcnRpY2FsQWJzOgog
ICAgICAgICAgICAgaWYgKCFwYXJzZUxpbmVUb1ZlcnRpY2FsU2VnbWVudCgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICd6
JzoKLSAgICAgICAgY2FzZSAnWic6CisgICAgICAgIGNhc2UgUGF0aFNlZ0Nsb3NlUGF0aDoKICAg
ICAgICAgICAgIHBhcnNlQ2xvc2VQYXRoU2VnbWVudCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgJ2MnOgotICAgICAgICBjYXNlICdDJzoKKyAgICAgICAgY2FzZSBQYXRoU2Vn
Q3VydmVUb0N1YmljUmVsOgorICAgICAgICAgICAgbV9tb2RlID0gUmVsYXRpdmVDb29yZGluYXRl
czsKKyAgICAgICAgY2FzZSBQYXRoU2VnQ3VydmVUb0N1YmljQWJzOgogICAgICAgICAgICAgaWYg
KCFwYXJzZUN1cnZlVG9DdWJpY1NlZ21lbnQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAncyc6Ci0gICAgICAgIGNhc2Ug
J1MnOgorICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9vdGhSZWw6CisgICAgICAg
ICAgICBtX21vZGUgPSBSZWxhdGl2ZUNvb3JkaW5hdGVzOworICAgICAgICBjYXNlIFBhdGhTZWdD
dXJ2ZVRvQ3ViaWNTbW9vdGhBYnM6CiAgICAgICAgICAgICBpZiAoIXBhcnNlQ3VydmVUb0N1Ymlj
U21vb3RoU2VnbWVudCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlICdxJzoKLSAgICAgICAgY2FzZSAnUSc6CisgICAgICAg
IGNhc2UgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNSZWw6CisgICAgICAgICAgICBtX21vZGUgPSBS
ZWxhdGl2ZUNvb3JkaW5hdGVzOworICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGlj
QWJzOgogICAgICAgICAgICAgaWYgKCFwYXJzZUN1cnZlVG9RdWFkcmF0aWNTZWdtZW50KCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgJ3QnOgotICAgICAgICBjYXNlICdUJzoKKyAgICAgICAgY2FzZSBQYXRoU2VnQ3VydmVU
b1F1YWRyYXRpY1Ntb290aFJlbDoKKyAgICAgICAgICAgIG1fbW9kZSA9IFJlbGF0aXZlQ29vcmRp
bmF0ZXM7CisgICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhBYnM6CiAg
ICAgICAgICAgICBpZiAoIXBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSAnYSc6Ci0gICAgICAgIGNhc2UgJ0EnOgorICAgICAgICBjYXNlIFBhdGhTZWdBcmNSZWw6
CisgICAgICAgICAgICBtX21vZGUgPSBSZWxhdGl2ZUNvb3JkaW5hdGVzOworICAgICAgICBjYXNl
IFBhdGhTZWdBcmNBYnM6CiAgICAgICAgICAgICBpZiAoIXBhcnNlQXJjVG9TZWdtZW50KCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zOTUs
MjMgKzQwNSwxOSBAQCBib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlUGF0aERhdGFTdHJpbmcoCiAg
ICAgICAgIH0KICAgICAgICAgbV9sYXN0Q29tbWFuZCA9IGNvbW1hbmQ7CiAKLSAgICAgICAgaWYg
KG1fcHRyID49IG1fZW5kKQorICAgICAgICBpZiAoIW1fc291cmNlLT5oYXNNb3JlRGF0YSgpKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgLy8gQ2hlY2sgZm9yIHJlbWFpbmlu
ZyBjb29yZGluYXRlcyBpbiB0aGUgY3VycmVudCBjb21tYW5kLgotICAgICAgICBpZiAoKCptX3B0
ciA9PSAnKycgfHwgKm1fcHRyID09ICctJyB8fCAqbV9wdHIgPT0gJy4nIHx8ICgqbV9wdHIgPj0g
JzAnICYmICptX3B0ciA8PSAnOScpKQotICAgICAgICAgICAgJiYgY29tbWFuZCAhPSAneicgJiYg
Y29tbWFuZCAhPSAnWicpIHsKLSAgICAgICAgICAgIGlmIChjb21tYW5kID09ICdNJykKLSAgICAg
ICAgICAgICAgICBjb21tYW5kID0gJ0wnOwotICAgICAgICAgICAgZWxzZSBpZiAoY29tbWFuZCA9
PSAnbScpCi0gICAgICAgICAgICAgICAgY29tbWFuZCA9ICdsJzsKLSAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBjb21tYW5kID0gKihtX3B0cisrKTsKKyAgICAgICAgY29tbWFuZCA9IG1fc291
cmNlLT5uZXh0Q29tbWFuZChjb21tYW5kKTsKIAotICAgICAgICBpZiAobV9sYXN0Q29tbWFuZCAh
PSAnQycgJiYgbV9sYXN0Q29tbWFuZCAhPSAnYycKLSAgICAgICAgICAgICYmIG1fbGFzdENvbW1h
bmQgIT0gJ1MnICYmIG1fbGFzdENvbW1hbmQgIT0gJ3MnCi0gICAgICAgICAgICAmJiBtX2xhc3RD
b21tYW5kICE9ICdRJyAmJiBtX2xhc3RDb21tYW5kICE9ICdxJwotICAgICAgICAgICAgJiYgbV9s
YXN0Q29tbWFuZCAhPSAnVCcgJiYgbV9sYXN0Q29tbWFuZCAhPSAndCcpCisgICAgICAgIGlmICht
X2xhc3RDb21tYW5kICE9IFBhdGhTZWdDdXJ2ZVRvQ3ViaWNBYnMKKyAgICAgICAgICAgICYmIG1f
bGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9DdWJpY1JlbAorICAgICAgICAgICAgJiYgbV9s
YXN0Q29tbWFuZCAhPSBQYXRoU2VnQ3VydmVUb0N1YmljU21vb3RoQWJzCisgICAgICAgICAgICAm
JiBtX2xhc3RDb21tYW5kICE9IFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9vdGhSZWwKKyAgICAgICAg
ICAgICYmIG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNBYnMKKyAgICAg
ICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNSZWwKKyAg
ICAgICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9v
dGhBYnMKKyAgICAgICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9RdWFk
cmF0aWNTbW9vdGhSZWwpCiAgICAgICAgICAgICBtX2NvbnRyb2xQb2ludCA9IG1fY3VycmVudFBv
aW50OwogICAgIH0KIApAQCAtNDkyLDEzICs0OTgsMTMgQEAgYm9vbCBTVkdQYXRoUGFyc2VyOjpk
ZWNvbXBvc2VBcmNUb0N1YmljKAogCiAgICAgICAgIHBvaW50MSA9IEZsb2F0UG9pbnQoY29zU3Rh
cnRUaGV0YSAtIHQgKiBzaW5TdGFydFRoZXRhLCBzaW5TdGFydFRoZXRhICsgdCAqIGNvc1N0YXJ0
VGhldGEpOwogICAgICAgICBwb2ludDEubW92ZShjZW50ZXJQb2ludC54KCksIGNlbnRlclBvaW50
LnkoKSk7Ci0gICAgICAgIEZsb2F0UG9pbnQgcG9pbnQzID0gRmxvYXRQb2ludChjb3NFbmRUaGV0
YSwgc2luRW5kVGhldGEpOwotICAgICAgICBwb2ludDMubW92ZShjZW50ZXJQb2ludC54KCksIGNl
bnRlclBvaW50LnkoKSk7Ci0gICAgICAgIHBvaW50MiA9IHBvaW50MzsKKyAgICAgICAgRmxvYXRQ
b2ludCB0YXJnZXRQb2ludCA9IEZsb2F0UG9pbnQoY29zRW5kVGhldGEsIHNpbkVuZFRoZXRhKTsK
KyAgICAgICAgdGFyZ2V0UG9pbnQubW92ZShjZW50ZXJQb2ludC54KCksIGNlbnRlclBvaW50Lnko
KSk7CisgICAgICAgIHBvaW50MiA9IHRhcmdldFBvaW50OwogICAgICAgICBwb2ludDIubW92ZSh0
ICogc2luRW5kVGhldGEsIC10ICogY29zRW5kVGhldGEpOwogCiAgICAgICAgIG1fY29uc3VtZXIt
PmN1cnZlVG9DdWJpYyhwb2ludFRyYW5zZm9ybS5tYXBQb2ludChwb2ludDEpLCBwb2ludFRyYW5z
Zm9ybS5tYXBQb2ludChwb2ludDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cG9pbnRUcmFuc2Zvcm0ubWFwUG9pbnQocG9pbnQzKSwgQWJzb2x1dGVDb29yZGluYXRlcyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludFRyYW5zZm9ybS5tYXBQb2ludCh0
YXJnZXRQb2ludCksIEFic29sdXRlQ29vcmRpbmF0ZXMpOwogICAgIH0KICAgICByZXR1cm4gdHJ1
ZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmgJKHJldmlzaW9uIDY0ODM5KQorKysgV2ViQ29yZS9z
dmcvU1ZHUGF0aFBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNSArMjcsMjAgQEAKICNp
ZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU1ZH
UGF0aENvbnN1bWVyLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNlZy5oIgorI2luY2x1ZGUgIlNWR1Bh
dGhTb3VyY2UuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR1BhdGhQYXJz
ZXIgeworY2xhc3MgU1ZHUGF0aFBhcnNlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6
Ci0gICAgU1ZHUGF0aFBhcnNlcihTVkdQYXRoQ29uc3VtZXIqKTsKKyAgICBTVkdQYXRoUGFyc2Vy
KCk7CiAgICAgflNWR1BhdGhQYXJzZXIoKTsKIAotICAgIGJvb2wgcGFyc2VQYXRoRGF0YVN0cmlu
Zyhjb25zdCBTdHJpbmcmLCBib29sIG5vcm1hbGl6ZWQgPSBmYWxzZSk7CisgICAgYm9vbCBwYXJz
ZVBhdGhEYXRhRnJvbVNvdXJjZShQYXNzT3duUHRyPFNWR1BhdGhTb3VyY2U+IHNvdXJjZSwgUGF0
aFBhcnNpbmdNb2RlIHBhdGhQYXJzaW5nTW9kZSk7CisgICAgdm9pZCBzZXRDdXJyZW50Q29uc3Vt
ZXIoU1ZHUGF0aENvbnN1bWVyKiBjb25zdW1lcikgeyBtX2NvbnN1bWVyID0gY29uc3VtZXI7IH0K
IAogcHJpdmF0ZToKICAgICBib29sIGRlY29tcG9zZUFyY1RvQ3ViaWMoZmxvYXQsIGZsb2F0LCBm
bG9hdCwgRmxvYXRQb2ludCYsIEZsb2F0UG9pbnQmLCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBz
d2VlcEZsYWcpOwpAQCAtNTAsMTMgKzU1LDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBwYXJzZUN1
cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50KCk7CiAgICAgYm9vbCBwYXJzZUFyY1RvU2VnbWVu
dCgpOwogCisgICAgT3duUHRyPFNWR1BhdGhTb3VyY2U+IG1fc291cmNlOwogICAgIFNWR1BhdGhD
b25zdW1lciogbV9jb25zdW1lcjsKICAgICBQYXRoQ29vcmRpbmF0ZU1vZGUgbV9tb2RlOwotICAg
IGNvbnN0IFVDaGFyKiBtX3B0cjsKLSAgICBjb25zdCBVQ2hhciogbV9lbmQ7Ci0gICAgY2hhciBt
X2xhc3RDb21tYW5kOwotICAgIGJvb2wgbV9ub3JtYWxpemVkOwotICAgIGJvb2wgbV9wYXRoQ2xv
c2VkOworICAgIFBhdGhQYXJzaW5nTW9kZSBtX3BhdGhQYXJzaW5nTW9kZTsKKyAgICBTVkdQYXRo
U2VnVHlwZSBtX2xhc3RDb21tYW5kOworICAgIGJvb2wgbV9jbG9zZVBhdGg7CiAgICAgRmxvYXRQ
b2ludCBtX2NvbnRyb2xQb2ludDsKICAgICBGbG9hdFBvaW50IG1fY3VycmVudFBvaW50OwogICAg
IEZsb2F0UG9pbnQgbV9zdWJQYXRoUG9pbnQ7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFy
c2VyRmFjdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlckZh
Y3RvcnkuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlckZhY3Rv
cnkuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJTVkdQYXRo
UGFyc2VyRmFjdG9yeS5oIgorCisjaW5jbHVkZSAiU1ZHUGF0aEJ1aWxkZXIuaCIKKyNpbmNsdWRl
ICJTVkdQYXRoUGFyc2VyLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmgiCisj
aW5jbHVkZSAiU1ZHUGF0aFN0cmluZ1NvdXJjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0YXRpYyBTVkdQYXRoQnVpbGRlciogZ2xvYmFsU1ZHUGF0aEJ1aWxkZXIoKQoreworICAgIHN0
YXRpYyBTVkdQYXRoQnVpbGRlciogc19idWlsZGVyID0gMDsKKyAgICBpZiAoIXNfYnVpbGRlcikK
KyAgICAgICAgc19idWlsZGVyID0gbmV3IFNWR1BhdGhCdWlsZGVyOworCisgICAgcmV0dXJuIHNf
YnVpbGRlcjsKK30KKworc3RhdGljIFNWR1BhdGhTZWdMaXN0QnVpbGRlciogZ2xvYmFsU1ZHUGF0
aFNlZ0xpc3RCdWlsZGVyKCkKK3sKKyAgICBzdGF0aWMgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyKiBz
X2J1aWxkZXIgPSAwOworICAgIGlmICghc19idWlsZGVyKQorICAgICAgICBzX2J1aWxkZXIgPSBu
ZXcgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOworCisgICAgcmV0dXJuIHNfYnVpbGRlcjsKK30KKwor
c3RhdGljIFNWR1BhdGhQYXJzZXIqIGdsb2JhbFNWR1BhdGhQYXJzZXIoKQoreworICAgIHN0YXRp
YyBTVkdQYXRoUGFyc2VyKiBzX3BhcnNlciA9IDA7CisgICAgaWYgKCFzX3BhcnNlcikKKyAgICAg
ICAgc19wYXJzZXIgPSBuZXcgU1ZHUGF0aFBhcnNlcjsKKworICAgIHJldHVybiBzX3BhcnNlcjsK
K30KKworU1ZHUGF0aFBhcnNlckZhY3RvcnkqIFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCkK
K3sKKyAgICBzdGF0aWMgU1ZHUGF0aFBhcnNlckZhY3RvcnkqIHNfaW5zdGFuY2UgPSAwOworICAg
IGlmICghc19pbnN0YW5jZSkKKyAgICAgICAgc19pbnN0YW5jZSA9IG5ldyBTVkdQYXRoUGFyc2Vy
RmFjdG9yeTsKKworICAgIHJldHVybiBzX2luc3RhbmNlOworfQorCitTVkdQYXRoUGFyc2VyRmFj
dG9yeTo6U1ZHUGF0aFBhcnNlckZhY3RvcnkoKQoreworfQorCitTVkdQYXRoUGFyc2VyRmFjdG9y
eTo6flNWR1BhdGhQYXJzZXJGYWN0b3J5KCkKK3sKK30KKworYm9vbCBTVkdQYXRoUGFyc2VyRmFj
dG9yeTo6YnVpbGRQYXRoRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIGQsIFBhdGgmIHJlc3VsdCkK
K3sKKyAgICBpZiAoZC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFNW
R1BhdGhCdWlsZGVyKiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0aEJ1aWxkZXIoKTsKKyAgICBidWls
ZGVyLT5zZXRDdXJyZW50UGF0aCgmcmVzdWx0KTsKKworICAgIFNWR1BhdGhQYXJzZXIqIHBhcnNl
ciA9IGdsb2JhbFNWR1BhdGhQYXJzZXIoKTsKKyAgICBwYXJzZXItPnNldEN1cnJlbnRDb25zdW1l
cihidWlsZGVyKTsKKworICAgIGJvb2wgb2sgPSBwYXJzZXItPnBhcnNlUGF0aERhdGFGcm9tU291
cmNlKFNWR1BhdGhTdHJpbmdTb3VyY2U6OmNyZWF0ZShkKSwgTm9ybWFsaXplZFBhcnNpbmcpOwor
ICAgIHBhcnNlci0+c2V0Q3VycmVudENvbnN1bWVyKDApOworICAgIGJ1aWxkZXItPnNldEN1cnJl
bnRQYXRoKDApOworICAgIHJldHVybiBvazsKK30KKworYm9vbCBTVkdQYXRoUGFyc2VyRmFjdG9y
eTo6YnVpbGRTVkdQYXRoU2VnTGlzdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBkLCBTVkdQYXRo
U2VnTGlzdCogcmVzdWx0LCBQYXRoUGFyc2luZ01vZGUgcGFyc2luZ01vZGUpCit7CisgICAgQVNT
RVJUKHJlc3VsdCk7CisgICAgaWYgKGQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIqIGJ1aWxkZXIgPSBnbG9iYWxTVkdQYXRoU2Vn
TGlzdEJ1aWxkZXIoKTsKKyAgICBidWlsZGVyLT5zZXRDdXJyZW50U1ZHUGF0aFNlZ0xpc3QocmVz
dWx0KTsKKworICAgIFNWR1BhdGhQYXJzZXIqIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQYXJzZXIo
KTsKKyAgICBwYXJzZXItPnNldEN1cnJlbnRDb25zdW1lcihidWlsZGVyKTsKKworICAgIGJvb2wg
b2sgPSBwYXJzZXItPnBhcnNlUGF0aERhdGFGcm9tU291cmNlKFNWR1BhdGhTdHJpbmdTb3VyY2U6
OmNyZWF0ZShkKSwgcGFyc2luZ01vZGUpOworICAgIHBhcnNlci0+c2V0Q3VycmVudENvbnN1bWVy
KDApOworICAgIGJ1aWxkZXItPnNldEN1cnJlbnRTVkdQYXRoU2VnTGlzdCgwKTsKKyAgICByZXR1
cm4gb2s7Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2Vy
RmFjdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5
LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyRmFjdG9yeS5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFNW
R1BhdGhQYXJzZXJGYWN0b3J5X2gKKyNkZWZpbmUgU1ZHUGF0aFBhcnNlckZhY3RvcnlfaAorCisj
aWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJQYXRoLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKKyNpbmNsdWRlICJTVkdQYXRoQ29uc3VtZXIuaCIKKyNpbmNsdWRlICJTVkdQYXRoU2Vn
TGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNWR1BhdGhQYXJzZXJGYWN0
b3J5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU1ZHUGF0aFBhcnNlckZhY3RvcnkqIHNlbGYoKTsK
KworICAgIGJvb2wgYnVpbGRQYXRoRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmLCBQYXRoJik7CisK
KyAgICBib29sIGJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYsIFNW
R1BhdGhTZWdMaXN0KiwgUGF0aFBhcnNpbmdNb2RlKTsKKworcHJpdmF0ZToKKyAgICBTVkdQYXRo
UGFyc2VyRmFjdG9yeSgpOworICAgIH5TVkdQYXRoUGFyc2VyRmFjdG9yeSgpOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykKKyNlbmRpZiAvLyBT
VkdQYXRoUGFyc2VyRmFjdG9yeV9oCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZy5oCShyZXZpc2lvbiA2NDgzOSkKKysr
IFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNzAgKzI1LDk1
IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewot
ICAgIGNsYXNzIFN0cmluZzsKLSAgICBjbGFzcyBTVkdQYXRoRWxlbWVudDsKLSAgICBjbGFzcyBT
VkdTdHlsZWRFbGVtZW50OwotICAgIGNsYXNzIFF1YWxpZmllZE5hbWU7Ci0KLSAgICBjbGFzcyBT
VkdQYXRoU2VnIDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHUGF0aFNlZz4gewotICAgIHB1YmxpYzoK
LSAgICAgICAgdmlydHVhbCB+U1ZHUGF0aFNlZygpOwotCi0gICAgICAgIGVudW0gU1ZHUGF0aFNl
Z1R5cGUgewotICAgICAgICAgICAgUEFUSFNFR19VTktOT1dOICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMCwKLSAgICAgICAgICAgIFBBVEhTRUdfQ0xPU0VQQVRIICAgICAgICAgICAgICAgICAg
ICAgICA9IDEsCi0gICAgICAgICAgICBQQVRIU0VHX01PVkVUT19BQlMgICAgICAgICAgICAgICAg
ICAgICAgPSAyLAotICAgICAgICAgICAgUEFUSFNFR19NT1ZFVE9fUkVMICAgICAgICAgICAgICAg
ICAgICAgID0gMywKLSAgICAgICAgICAgIFBBVEhTRUdfTElORVRPX0FCUyAgICAgICAgICAgICAg
ICAgICAgICA9IDQsCi0gICAgICAgICAgICBQQVRIU0VHX0xJTkVUT19SRUwgICAgICAgICAgICAg
ICAgICAgICAgPSA1LAotICAgICAgICAgICAgUEFUSFNFR19DVVJWRVRPX0NVQklDX0FCUyAgICAg
ICAgICAgICAgID0gNiwKLSAgICAgICAgICAgIFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19SRUwgICAg
ICAgICAgICAgICA9IDcsCi0gICAgICAgICAgICBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX0FC
UyAgICAgICAgICAgPSA4LAotICAgICAgICAgICAgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19S
RUwgICAgICAgICAgID0gOSwKLSAgICAgICAgICAgIFBBVEhTRUdfQVJDX0FCUyAgICAgICAgICAg
ICAgICAgICAgICAgICA9IDEwLAotICAgICAgICAgICAgUEFUSFNFR19BUkNfUkVMICAgICAgICAg
ICAgICAgICAgICAgICAgID0gMTEsCi0gICAgICAgICAgICBQQVRIU0VHX0xJTkVUT19IT1JJWk9O
VEFMX0FCUyAgICAgICAgICAgPSAxMiwKLSAgICAgICAgICAgIFBBVEhTRUdfTElORVRPX0hPUkla
T05UQUxfUkVMICAgICAgICAgICA9IDEzLAotICAgICAgICAgICAgUEFUSFNFR19MSU5FVE9fVkVS
VElDQUxfQUJTICAgICAgICAgICAgID0gMTQsCi0gICAgICAgICAgICBQQVRIU0VHX0xJTkVUT19W
RVJUSUNBTF9SRUwgICAgICAgICAgICAgPSAxNSwKLSAgICAgICAgICAgIFBBVEhTRUdfQ1VSVkVU
T19DVUJJQ19TTU9PVEhfQUJTICAgICAgICA9IDE2LAotICAgICAgICAgICAgUEFUSFNFR19DVVJW
RVRPX0NVQklDX1NNT09USF9SRUwgICAgICAgID0gMTcsCi0gICAgICAgICAgICBQQVRIU0VHX0NV
UlZFVE9fUVVBRFJBVElDX1NNT09USF9BQlMgICAgPSAxOCwKLSAgICAgICAgICAgIFBBVEhTRUdf
Q1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX1JFTCAgICA9IDE5Ci0gICAgICAgIH07Ci0KLSAgICAg
ICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0OwotICAgICAgICB2
aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1
YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0KLSAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSBjb25zdDsKLSAgICAgICAgCi0gICAgcHJvdGVj
dGVkOgotICAgICAgICBTVkdQYXRoU2VnKCkgeyB9Ci0gICAgfTsKIAotICAgIGNsYXNzIFNWR1Bh
dGhTZWdTaW5nbGVDb29yZCA6IHB1YmxpYyBTVkdQYXRoU2VnIHsgCi0gICAgcHVibGljOgotICAg
ICAgICBTVkdQYXRoU2VnU2luZ2xlQ29vcmQoZmxvYXQgeCwgZmxvYXQgeSkKLSAgICAgICAgICAg
IDogU1ZHUGF0aFNlZygpCi0gICAgICAgICAgICAsIG1feCh4KQotICAgICAgICAgICAgLCBtX3ko
eSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBzZXRYKGZsb2F0IHgpIHsg
bV94ID0geDsgfQotICAgICAgICBmbG9hdCB4KCkgY29uc3QgeyByZXR1cm4gbV94OyB9Ci0KLSAg
ICAgICAgdm9pZCBzZXRZKGZsb2F0IHkpIHsgbV95ID0geTsgfQotICAgICAgICBmbG9hdCB5KCkg
Y29uc3QgeyByZXR1cm4gbV95OyB9Ci0KLSAgICAgICAgdmlydHVhbCBTdHJpbmcgdG9TdHJpbmco
KSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGZsb2F0IG1feDsKLSAgICAgICAgZmxv
YXQgbV95OworZW51bSBTVkdQYXRoU2VnVHlwZSB7CisgICAgUGF0aFNlZ1Vua25vd24gPSAwLAor
ICAgIFBhdGhTZWdDbG9zZVBhdGggPSAxLAorICAgIFBhdGhTZWdNb3ZlVG9BYnMgPSAyLAorICAg
IFBhdGhTZWdNb3ZlVG9SZWwgPSAzLAorICAgIFBhdGhTZWdMaW5lVG9BYnMgPSA0LAorICAgIFBh
dGhTZWdMaW5lVG9SZWwgPSA1LAorICAgIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNBYnMgPSA2LAorICAg
IFBhdGhTZWdDdXJ2ZVRvQ3ViaWNSZWwgPSA3LAorICAgIFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGlj
QWJzID0gOCwKKyAgICBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1JlbCA9IDksCisgICAgUGF0aFNl
Z0FyY0FicyA9IDEwLAorICAgIFBhdGhTZWdBcmNSZWwgPSAxMSwKKyAgICBQYXRoU2VnTGluZVRv
SG9yaXpvbnRhbEFicyA9IDEyLAorICAgIFBhdGhTZWdMaW5lVG9Ib3Jpem9udGFsUmVsID0gMTMs
CisgICAgUGF0aFNlZ0xpbmVUb1ZlcnRpY2FsQWJzID0gMTQsCisgICAgUGF0aFNlZ0xpbmVUb1Zl
cnRpY2FsUmVsID0gMTUsCisgICAgUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aEFicyA9IDE2LAor
ICAgIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9vdGhSZWwgPSAxNywKKyAgICBQYXRoU2VnQ3VydmVU
b1F1YWRyYXRpY1Ntb290aEFicyA9IDE4LAorICAgIFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljU21v
b3RoUmVsID0gMTkKK307CisKK2NsYXNzIFN0cmluZzsKK2NsYXNzIFNWR1BhdGhFbGVtZW50Owor
Y2xhc3MgU1ZHU3R5bGVkRWxlbWVudDsKK2NsYXNzIFF1YWxpZmllZE5hbWU7CisKK2NsYXNzIFNW
R1BhdGhTZWcgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdQYXRoU2VnPiB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+U1ZHUGF0aFNlZygpOworCisgICAgLy8gRm9yd2FyZCBkZWNsYXJlIHRoZXNlIGVu
dW1zIGluIHRoZSB3M2MgbmFtaW5nIHNjaGVtZSwgZm9yIElETCBnZW5lcmF0aW9uCisgICAgZW51
bSB7CisgICAgICAgIFBBVEhTRUdfVU5LTk9XTiA9IFBhdGhTZWdVbmtub3duLAorICAgICAgICBQ
QVRIU0VHX0NMT1NFUEFUSCA9IFBhdGhTZWdDbG9zZVBhdGgsCisgICAgICAgIFBBVEhTRUdfTU9W
RVRPX0FCUyA9IFBhdGhTZWdNb3ZlVG9BYnMsCisgICAgICAgIFBBVEhTRUdfTU9WRVRPX1JFTCA9
IFBhdGhTZWdNb3ZlVG9SZWwsCisgICAgICAgIFBBVEhTRUdfTElORVRPX0FCUyA9IFBhdGhTZWdM
aW5lVG9BYnMsCisgICAgICAgIFBBVEhTRUdfTElORVRPX1JFTCA9IFBhdGhTZWdMaW5lVG9SZWws
CisgICAgICAgIFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19BQlMgPSBQYXRoU2VnQ3VydmVUb0N1Ymlj
QWJzLAorICAgICAgICBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfUkVMID0gUGF0aFNlZ0N1cnZlVG9D
dWJpY1JlbCwKKyAgICAgICAgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19BQlMgPSBQYXRoU2Vn
Q3VydmVUb1F1YWRyYXRpY0FicywKKyAgICAgICAgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19S
RUwgPSBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1JlbCwKKyAgICAgICAgUEFUSFNFR19BUkNfQUJT
ID0gUGF0aFNlZ0FyY0FicywKKyAgICAgICAgUEFUSFNFR19BUkNfUkVMID0gUGF0aFNlZ0FyY1Jl
bCwKKyAgICAgICAgUEFUSFNFR19MSU5FVE9fSE9SSVpPTlRBTF9BQlMgPSBQYXRoU2VnTGluZVRv
SG9yaXpvbnRhbEFicywKKyAgICAgICAgUEFUSFNFR19MSU5FVE9fSE9SSVpPTlRBTF9SRUwgPSBQ
YXRoU2VnTGluZVRvSG9yaXpvbnRhbFJlbCwKKyAgICAgICAgUEFUSFNFR19MSU5FVE9fVkVSVElD
QUxfQUJTID0gUGF0aFNlZ0xpbmVUb1ZlcnRpY2FsQWJzLAorICAgICAgICBQQVRIU0VHX0xJTkVU
T19WRVJUSUNBTF9SRUwgPSBQYXRoU2VnTGluZVRvVmVydGljYWxSZWwsCisgICAgICAgIFBBVEhT
RUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfQUJTID0gUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aEFi
cywKKyAgICAgICAgUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9SRUwgPSBQYXRoU2VnQ3Vy
dmVUb0N1YmljU21vb3RoUmVsLAorICAgICAgICBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NN
T09USF9BQlMgPSBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290aEFicywKKyAgICAgICAgUEFU
SFNFR19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfUkVMID0gUGF0aFNlZ0N1cnZlVG9RdWFkcmF0
aWNTbW9vdGhSZWwKICAgICB9OwogCisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IHBhdGhT
ZWdUeXBlKCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigp
IGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CisKKyAgICBjb25z
dCBRdWFsaWZpZWROYW1lJiBhc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpIGNvbnN0OworICAgIAor
cHJvdGVjdGVkOgorICAgIFNWR1BhdGhTZWcoKSB7IH0KK307CisKK2NsYXNzIFNWR1BhdGhTZWdT
aW5nbGVDb29yZCA6IHB1YmxpYyBTVkdQYXRoU2VnIHsgCitwdWJsaWM6CisgICAgU1ZHUGF0aFNl
Z1NpbmdsZUNvb3JkKGZsb2F0IHgsIGZsb2F0IHkpCisgICAgICAgIDogbV94KHgpCisgICAgICAg
ICwgbV95KHkpCisgICAgeworICAgIH0KKworICAgIHZvaWQgc2V0WChmbG9hdCB4KSB7IG1feCA9
IHg7IH0KKyAgICBmbG9hdCB4KCkgY29uc3QgeyByZXR1cm4gbV94OyB9CisKKyAgICB2b2lkIHNl
dFkoZmxvYXQgeSkgeyBtX3kgPSB5OyB9CisgICAgZmxvYXQgeSgpIGNvbnN0IHsgcmV0dXJuIG1f
eTsgfQorCisgICAgdmlydHVhbCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKKworcHJpdmF0ZToK
KyAgICBmbG9hdCBtX3g7CisgICAgZmxvYXQgbV95OworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhT
ZWdMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5jcHAJ
KHJldmlzaW9uIDY0ODM5KQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NCwxOSArNjQsMTkgQEAgdW5zaWduZWQgU1ZHUGF0aFNlZ0xpc3Q6Omdl
dFBhdGhTZWdBdExlbgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGZsb2F0IHNlZ21l
bnRMZW5ndGggPSAwOwogICAgICAgICBzd2l0Y2ggKHNlZ21lbnQtPnBhdGhTZWdUeXBlKCkpIHsK
LSAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX01PVkVUT19BQlM6CisgICAgICAgIGNh
c2UgUGF0aFNlZ01vdmVUb0FiczoKICAgICAgICAgewogICAgICAgICAgICAgU1ZHUGF0aFNlZ01v
dmV0b0FicyogbW92ZVRvID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ01vdmV0b0Ficyo+KHNlZ21l
bnQpOwogICAgICAgICAgICAgc2VnbWVudExlbmd0aCA9IHRyYXZlcnNhbFN0YXRlLm1vdmVUbyhG
bG9hdFBvaW50KG1vdmVUby0+eCgpLCBtb3ZlVG8tPnkoKSkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0xJTkVUT19BQlM6
CisgICAgICAgIGNhc2UgUGF0aFNlZ0xpbmVUb0FiczoKICAgICAgICAgewogICAgICAgICAgICAg
U1ZHUGF0aFNlZ0xpbmV0b0FicyogbGluZVRvID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0xpbmV0
b0Ficyo+KHNlZ21lbnQpOwogICAgICAgICAgICAgc2VnbWVudExlbmd0aCA9IHRyYXZlcnNhbFN0
YXRlLmxpbmVUbyhGbG9hdFBvaW50KGxpbmVUby0+eCgpLCBsaW5lVG8tPnkoKSkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VH
X0NVUlZFVE9fQ1VCSUNfQUJTOgorICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNBYnM6
CiAgICAgICAgIHsKICAgICAgICAgICAgIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMqIGN1cnZl
VG8gPSBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzKj4oc2VnbWVudCk7CiAg
ICAgICAgICAgICBzZWdtZW50TGVuZ3RoID0gdHJhdmVyc2FsU3RhdGUuY3ViaWNCZXppZXJUbyhG
bG9hdFBvaW50KGN1cnZlVG8tPngxKCksIGN1cnZlVG8tPnkxKCkpLApAQCAtODQsNyArODQsNyBA
QCB1bnNpZ25lZCBTVkdQYXRoU2VnTGlzdDo6Z2V0UGF0aFNlZ0F0TGVuCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQoY3VydmVUby0+eCgpLCBjdXJ2ZVRv
LT55KCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgU1ZH
UGF0aFNlZzo6UEFUSFNFR19DTE9TRVBBVEg6CisgICAgICAgIGNhc2UgUGF0aFNlZ0Nsb3NlUGF0
aDoKICAgICAgICAgICAgIHNlZ21lbnRMZW5ndGggPSB0cmF2ZXJzYWxTdGF0ZS5jbG9zZVN1YnBh
dGgoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtMTE2LDQ4ICsx
MTYsNDQgQEAgUGF0aCBTVkdQYXRoU2VnTGlzdDo6dG9QYXRoRGF0YSgpCiAgICAgICAgIGlmIChl
YykKICAgICAgICAgICAgIHJldHVybiBQYXRoKCk7CiAgICAgICAgIHN3aXRjaCAoc2VnbWVudC0+
cGF0aFNlZ1R5cGUoKSkgewotICAgICAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX01P
VkVUT19BQlM6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgU1ZHUGF0aFNlZ01vdmV0
b0FicyogbW92ZVRvID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ01vdmV0b0Ficyo+KHNlZ21lbnQp
OwotICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQobW92ZVRvLT54KCksIG1vdmVU
by0+eSgpKTsKLSAgICAgICAgICAgICAgICBwYXRoRGF0YS5tb3ZlVG8oZW5kUG9pbnQpOwotICAg
ICAgICAgICAgICAgIHByZXZpb3VzRW5kUG9pbnQgPSBlbmRQb2ludDsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFU
SFNFR19MSU5FVE9fQUJTOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFNWR1BhdGhT
ZWdMaW5ldG9BYnMqIGxpbmVUbyA9IHN0YXRpY19jYXN0PFNWR1BhdGhTZWdMaW5ldG9BYnMqPihz
ZWdtZW50KTsKLSAgICAgICAgICAgICAgICBGbG9hdFBvaW50IGVuZFBvaW50KGxpbmVUby0+eCgp
LCBsaW5lVG8tPnkoKSk7Ci0gICAgICAgICAgICAgICAgcGF0aERhdGEuYWRkTGluZVRvKGVuZFBv
aW50KTsKLSAgICAgICAgICAgICAgICBwcmV2aW91c0VuZFBvaW50ID0gZW5kUG9pbnQ7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIFNWR1Bh
dGhTZWc6OlBBVEhTRUdfQ1VSVkVUT19DVUJJQ19BQlM6Ci0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicyogY3VydmVUbyA9IHN0YXRpY19jYXN0
PFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMqPihzZWdtZW50KTsKLSAgICAgICAgICAgICAgICBG
bG9hdFBvaW50IGVuZFBvaW50KGN1cnZlVG8tPngoKSwgY3VydmVUby0+eSgpKTsKLSAgICAgICAg
ICAgICAgICBwYXRoRGF0YS5hZGRCZXppZXJDdXJ2ZVRvKEZsb2F0UG9pbnQoY3VydmVUby0+eDEo
KSwgY3VydmVUby0+eTEoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBGbG9hdFBvaW50KGN1cnZlVG8tPngyKCksIGN1cnZlVG8tPnkyKCkpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kUG9pbnQpOwotICAgICAgICAgICAg
ICAgIHByZXZpb3VzRW5kUG9pbnQgPSBlbmRQb2ludDsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DVVJW
RVRPX0NVQklDX1JFTDoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBTVkdQYXRoU2Vn
Q3VydmV0b0N1YmljUmVsKiBjdXJ2ZVRvID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0N1cnZldG9D
dWJpY1JlbCo+KHNlZ21lbnQpOwotICAgICAgICAgICAgICAgIEZsb2F0U2l6ZSBlbmRQb2ludChj
dXJ2ZVRvLT54KCksIGN1cnZlVG8tPnkoKSk7Ci0gICAgICAgICAgICAgICAgcGF0aERhdGEuYWRk
QmV6aWVyQ3VydmVUbyhwcmV2aW91c0VuZFBvaW50ICsgRmxvYXRTaXplKGN1cnZlVG8tPngxKCks
IGN1cnZlVG8tPnkxKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJldmlvdXNFbmRQb2ludCArIEZsb2F0U2l6ZShjdXJ2ZVRvLT54MigpLCBjdXJ2ZVRvLT55
MigpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3Vz
RW5kUG9pbnQgKyBlbmRQb2ludCk7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNFbmRQb2ludCAr
PSBlbmRQb2ludDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DTE9TRVBBVEg6Ci0gICAgICAgICAgICAg
ICAgcGF0aERhdGEuY2xvc2VTdWJwYXRoKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIEFTU0VSVChmYWxzZSk7IC8vIEZJWE1F
OiBUaGlzIG9ubHkgd29ya3Mgd2l0aCBub3JtYWxpemVkL3Byb2Nlc3NlZCBwYXRoIGRhdGEuCi0g
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUGF0aFNlZ01vdmVUb0Ficzogewor
ICAgICAgICAgICAgU1ZHUGF0aFNlZ01vdmV0b0FicyogbW92ZVRvID0gc3RhdGljX2Nhc3Q8U1ZH
UGF0aFNlZ01vdmV0b0Ficyo+KHNlZ21lbnQpOworICAgICAgICAgICAgRmxvYXRQb2ludCBlbmRQ
b2ludChtb3ZlVG8tPngoKSwgbW92ZVRvLT55KCkpOworICAgICAgICAgICAgcGF0aERhdGEubW92
ZVRvKGVuZFBvaW50KTsKKyAgICAgICAgICAgIHByZXZpb3VzRW5kUG9pbnQgPSBlbmRQb2ludDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgUGF0aFNlZ0xpbmVU
b0FiczogeworICAgICAgICAgICAgU1ZHUGF0aFNlZ0xpbmV0b0FicyogbGluZVRvID0gc3RhdGlj
X2Nhc3Q8U1ZHUGF0aFNlZ0xpbmV0b0Ficyo+KHNlZ21lbnQpOworICAgICAgICAgICAgRmxvYXRQ
b2ludCBlbmRQb2ludChsaW5lVG8tPngoKSwgbGluZVRvLT55KCkpOworICAgICAgICAgICAgcGF0
aERhdGEuYWRkTGluZVRvKGVuZFBvaW50KTsKKyAgICAgICAgICAgIHByZXZpb3VzRW5kUG9pbnQg
PSBlbmRQb2ludDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
UGF0aFNlZ0N1cnZlVG9DdWJpY0FiczogeworICAgICAgICAgICAgU1ZHUGF0aFNlZ0N1cnZldG9D
dWJpY0FicyogY3VydmVUbyA9IHN0YXRpY19jYXN0PFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMq
PihzZWdtZW50KTsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQoY3VydmVUby0+eCgp
LCBjdXJ2ZVRvLT55KCkpOworICAgICAgICAgICAgcGF0aERhdGEuYWRkQmV6aWVyQ3VydmVUbyhG
bG9hdFBvaW50KGN1cnZlVG8tPngxKCksIGN1cnZlVG8tPnkxKCkpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFBvaW50KGN1cnZlVG8tPngyKCksIGN1cnZlVG8t
PnkyKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRQb2ludCk7
CisgICAgICAgICAgICBwcmV2aW91c0VuZFBvaW50ID0gZW5kUG9pbnQ7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNSZWw6IHsK
KyAgICAgICAgICAgIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwqIGN1cnZlVG8gPSBzdGF0aWNf
Y2FzdDxTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsKj4oc2VnbWVudCk7CisgICAgICAgICAgICBG
bG9hdFNpemUgZW5kUG9pbnQoY3VydmVUby0+eCgpLCBjdXJ2ZVRvLT55KCkpOworICAgICAgICAg
ICAgcGF0aERhdGEuYWRkQmV6aWVyQ3VydmVUbyhwcmV2aW91c0VuZFBvaW50ICsgRmxvYXRTaXpl
KGN1cnZlVG8tPngxKCksIGN1cnZlVG8tPnkxKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwcmV2aW91c0VuZFBvaW50ICsgRmxvYXRTaXplKGN1cnZlVG8tPngyKCks
IGN1cnZlVG8tPnkyKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
cmV2aW91c0VuZFBvaW50ICsgZW5kUG9pbnQpOworICAgICAgICAgICAgcHJldmlvdXNFbmRQb2lu
dCArPSBlbmRQb2ludDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNh
c2UgUGF0aFNlZ0Nsb3NlUGF0aDoKKyAgICAgICAgICAgIHBhdGhEYXRhLmNsb3NlU3VicGF0aCgp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NF
UlQoZmFsc2UpOyAvLyBGSVhNRTogVGhpcyBvbmx5IHdvcmtzIHdpdGggbm9ybWFsaXplZC9wcm9j
ZXNzZWQgcGF0aCBkYXRhLgorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAg
ICAgCkBAIC0yMTMsNjggKzIwOSw2OCBAQCBQYXNzUmVmUHRyPFNWR1BhdGhTZWdMaXN0PiBTVkdQ
YXRoU2VnTGlzCiAgICAgICAgIFNWR1BhdGhTZWcqIHRvID0gdG9MaXN0LT5nZXRJdGVtKG4sIGVj
KS5nZXQoKTsKICAgICAgICAgaWYgKGVjKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAg
IGlmIChmcm9tLT5wYXRoU2VnVHlwZSgpID09IFNWR1BhdGhTZWc6OlBBVEhTRUdfVU5LTk9XTiB8
fCBmcm9tLT5wYXRoU2VnVHlwZSgpICE9IHRvLT5wYXRoU2VnVHlwZSgpKQorICAgICAgICBpZiAo
ZnJvbS0+cGF0aFNlZ1R5cGUoKSA9PSBQYXRoU2VnVW5rbm93biB8fCBmcm9tLT5wYXRoU2VnVHlw
ZSgpICE9IHRvLT5wYXRoU2VnVHlwZSgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
IFJlZlB0cjxTVkdQYXRoU2VnPiBzZWdtZW50ID0gMDsKLSAgICAgICAgc3dpdGNoIChzdGF0aWNf
Y2FzdDxTVkdQYXRoU2VnOjpTVkdQYXRoU2VnVHlwZT4oZnJvbS0+cGF0aFNlZ1R5cGUoKSkpIHsK
LSAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0NMT1NFUEFUSDoKKyAgICAgICAgc3dp
dGNoIChzdGF0aWNfY2FzdDxTVkdQYXRoU2VnVHlwZT4oZnJvbS0+cGF0aFNlZ1R5cGUoKSkpIHsK
KyAgICAgICAgY2FzZSBQYXRoU2VnQ2xvc2VQYXRoOgogICAgICAgICAgICAgc2VnbWVudCA9IFNW
R1BhdGhTZWdDbG9zZVBhdGg6OmNyZWF0ZSgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19MSU5FVE9fSE9SSVpPTlRBTF9BQlM6CisgICAgICAg
IGNhc2UgUGF0aFNlZ0xpbmVUb0hvcml6b250YWxBYnM6CiAgICAgICAgICAgICBzZWdtZW50ID0g
QkxFTkRQQVRIU0VHMShTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicywgeCk7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0xJTkVUT19IT1JJ
Wk9OVEFMX1JFTDoKKyAgICAgICAgY2FzZSBQYXRoU2VnTGluZVRvSG9yaXpvbnRhbFJlbDoKICAg
ICAgICAgICAgIHNlZ21lbnQgPSBCTEVORFBBVEhTRUcxKFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9u
dGFsUmVsLCB4KTsKICAgICAgICAgICAgIGJyZWFrOyAgIAotICAgICAgICBjYXNlIFNWR1BhdGhT
ZWc6OlBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX0FCUzoKKyAgICAgICAgY2FzZSBQYXRoU2VnTGlu
ZVRvVmVydGljYWxBYnM6CiAgICAgICAgICAgICBzZWdtZW50ID0gQkxFTkRQQVRIU0VHMShTVkdQ
YXRoU2VnTGluZXRvVmVydGljYWxBYnMsIHkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19MSU5FVE9fVkVSVElDQUxfUkVMOgorICAgICAgICBj
YXNlIFBhdGhTZWdMaW5lVG9WZXJ0aWNhbFJlbDoKICAgICAgICAgICAgIHNlZ21lbnQgPSBCTEVO
RFBBVEhTRUcxKFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCwgeSk7CiAgICAgICAgICAgICBi
cmVhazsgICAgICAgIAotICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTU9WRVRPX0FC
UzoKKyAgICAgICAgY2FzZSBQYXRoU2VnTW92ZVRvQWJzOgogICAgICAgICAgICAgc2VnbWVudCA9
IEJMRU5EUEFUSFNFRzIoU1ZHUGF0aFNlZ01vdmV0b0FicywgeCwgeSk7CiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX01PVkVUT19SRUw6CisgICAg
ICAgIGNhc2UgUGF0aFNlZ01vdmVUb1JlbDoKICAgICAgICAgICAgIHNlZ21lbnQgPSBCTEVORFBB
VEhTRUcyKFNWR1BhdGhTZWdNb3ZldG9SZWwsIHgsIHkpOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19MSU5FVE9fQUJTOgorICAgICAgICBjYXNl
IFBhdGhTZWdMaW5lVG9BYnM6CiAgICAgICAgICAgICBzZWdtZW50ID0gQkxFTkRQQVRIU0VHMihT
VkdQYXRoU2VnTGluZXRvQWJzLCB4LCB5KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTElORVRPX1JFTDoKKyAgICAgICAgY2FzZSBQYXRoU2Vn
TGluZVRvUmVsOgogICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzIoU1ZHUGF0aFNl
Z0xpbmV0b1JlbCwgeCwgeSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdQ
YXRoU2VnOjpQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfQUJTOgorICAgICAgICBjYXNlIFBhdGhTZWdD
dXJ2ZVRvQ3ViaWNBYnM6CiAgICAgICAgICAgICBzZWdtZW50ID0gQkxFTkRQQVRIU0VHNihTVkdQ
YXRoU2VnQ3VydmV0b0N1YmljQWJzLCB4LCB5LCB4MSwgeTEsIHgyLCB5Mik7CiAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0NVUlZFVE9fQ1VCSUNf
UkVMOgorICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNSZWw6CiAgICAgICAgICAgICBz
ZWdtZW50ID0gQkxFTkRQQVRIU0VHNihTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsLCB4LCB5LCB4
MSwgeTEsIHgyLCB5Mik7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdQYXRo
U2VnOjpQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX0FCUzoKKyAgICAgICAgY2FzZSBQYXRo
U2VnQ3VydmVUb0N1YmljU21vb3RoQWJzOgogICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFU
SFNFRzQoU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicywgeCwgeSwgeDIsIHkyKTsKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQ1VSVkVU
T19DVUJJQ19TTU9PVEhfUkVMOgorICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9v
dGhSZWw6CiAgICAgICAgICAgICBzZWdtZW50ID0gQkxFTkRQQVRIU0VHNChTVkdQYXRoU2VnQ3Vy
dmV0b0N1YmljU21vb3RoUmVsLCB4LCB5LCB4MiwgeTIpOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19BQlM6Cisg
ICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNBYnM6CiAgICAgICAgICAgICBzZWdt
ZW50ID0gQkxFTkRQQVRIU0VHNChTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0FicywgeCwgeSwg
eDEsIHkxKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBB
VEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfUkVMOgorICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2ZVRv
UXVhZHJhdGljUmVsOgogICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzQoU1ZHUGF0
aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwsIHgsIHksIHgxLCB5MSk7CiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NN
T09USF9BQlM6CisgICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhBYnM6
CiAgICAgICAgICAgICBzZWdtZW50ID0gQkxFTkRQQVRIU0VHMihTVkdQYXRoU2VnQ3VydmV0b1F1
YWRyYXRpY1Ntb290aEFicywgeCwgeSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9SRUw6CisgICAg
ICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhSZWw6CiAgICAgICAgICAgICBz
ZWdtZW50ID0gQkxFTkRQQVRIU0VHMihTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJl
bCwgeCwgeSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQ
QVRIU0VHX0FSQ19BQlM6CisgICAgICAgIGNhc2UgUGF0aFNlZ0FyY0FiczoKICAgICAgICAgICAg
IHNlZ21lbnQgPSBCTEVORFBBVEhTRUc3KFNWR1BhdGhTZWdBcmNBYnMsIHgsIHksIHIxLCByMiwg
YW5nbGUsIGxhcmdlQXJjRmxhZywgc3dlZXBGbGFnKTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQVJDX1JFTDoKKyAgICAgICAgY2FzZSBQYXRo
U2VnQXJjUmVsOgogICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzcoU1ZHUGF0aFNl
Z0FyY1JlbCwgeCwgeSwgcjEsIHIyLCBhbmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcpOwog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19VTktO
T1dOOgorICAgICAgICBjYXNlIFBhdGhTZWdVbmtub3duOgogICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICAgICAgcmVzdWx0LT5hcHBlbmRJdGVtKHNlZ21l
bnQsIGVjKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0QnVpbGRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmNwcAkocmV2aXNp
b24gNjQ4MzkpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CiAjaW5jbHVkZSAiU1ZHUGF0aEVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdQYXRoUGFyc2VyLmgi
CiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0FyYy5oIgogI2luY2x1ZGUgIlNWR1BhdGhTZWdDbG9zZVBh
dGguaCIKICNpbmNsdWRlICJTVkdQYXRoU2VnQ3VydmV0b0N1YmljLmgiCkBAIC00Myw0MiArNDIs
MzYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OlNW
R1BhdGhTZWdMaXN0QnVpbGRlcihTVkdQYXRoU2VnTGlzdCogc2VnTGlzdCkKLSAgICA6IG1fcGF0
aFNlZ0xpc3Qoc2VnTGlzdCkKK1NWR1BhdGhTZWdMaXN0QnVpbGRlcjo6U1ZHUGF0aFNlZ0xpc3RC
dWlsZGVyKCkKKyAgICA6IG1fcGF0aFNlZ0xpc3QoMCkKIHsKIH0KIAotYm9vbCBTVkdQYXRoU2Vn
TGlzdEJ1aWxkZXI6OmJ1aWxkKGNvbnN0IFN0cmluZyYgZCwgUGF0aFBhcnNpbmdNb2RlIHBhcnNp
bmdNb2RlKQotewotICAgIGlmICghbV9wYXRoU2VnTGlzdCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgU1ZHUGF0aFBhcnNlciBwYXJzZXIodGhpcyk7Ci0gICAgcmV0dXJuIHBhcnNlci5w
YXJzZVBhdGhEYXRhU3RyaW5nKGQsIHBhcnNpbmdNb2RlID09IE5vcm1hbGl6ZWRQYXJzaW5nKTsK
LX0KLQotdm9pZCBTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6Om1vdmVUbyhjb25zdCBGbG9hdFBvaW50
JiBwb2ludCwgYm9vbCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCit2b2lkIFNWR1BhdGhTZWdM
aXN0QnVpbGRlcjo6bW92ZVRvKGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBib29sLCBQ
YXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKKyAgICBBU1NFUlQobV9wYXRoU2VnTGlzdCk7CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVDb29yZGlu
YXRlcykKLSAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kSXRlbShTVkdQYXRoRWxlbWVudDo6
Y3JlYXRlU1ZHUGF0aFNlZ01vdmV0b0Ficyhwb2ludC54KCksIHBvaW50LnkoKSksIGVjKTsKKyAg
ICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kSXRlbShTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZH
UGF0aFNlZ01vdmV0b0Ficyh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSksIGVjKTsK
ICAgICBlbHNlCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1l
bnQ6OmNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9SZWwocG9pbnQueCgpLCBwb2ludC55KCkpLCBlYyk7
CisgICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0
ZVNWR1BhdGhTZWdNb3ZldG9SZWwodGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCkpLCBl
Yyk7CiAgICAgQVNTRVJUKCFlYyk7CiB9CiAKLXZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjps
aW5lVG8oY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQor
dm9pZCBTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmxpbmVUbyhjb25zdCBGbG9hdFBvaW50JiB0YXJn
ZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CisgICAgQVNTRVJUKG1fcGF0aFNl
Z0xpc3QpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmIChtb2RlID09IEFic29s
dXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0
aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9BYnMocG9pbnQueCgpLCBwb2ludC55KCkp
LCBlYyk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6
OmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9BYnModGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55
KCkpLCBlYyk7CiAgICAgZWxzZQotICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNW
R1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnTGluZXRvUmVsKHBvaW50LngoKSwgcG9pbnQu
eSgpKSwgZWMpOworICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVt
ZW50OjpjcmVhdGVTVkdQYXRoU2VnTGluZXRvUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9p
bnQueSgpKSwgZWMpOwogICAgIEFTU0VSVCghZWMpOwogfQogCiB2b2lkIFNWR1BhdGhTZWdMaXN0
QnVpbGRlcjo6bGluZVRvSG9yaXpvbnRhbChmbG9hdCB4LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9k
ZSkKIHsKKyAgICBBU1NFUlQobV9wYXRoU2VnTGlzdCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcykKICAgICAgICAgbV9wYXRo
U2VnTGlzdC0+YXBwZW5kSXRlbShTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0xpbmV0
b0hvcml6b250YWxBYnMoeCksIGVjKTsKQEAgLTg5LDYgKzgyLDcgQEAgdm9pZCBTVkdQYXRoU2Vn
TGlzdEJ1aWxkZXI6OmxpbmVUb0hvcml6bwogCiB2b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6
bGluZVRvVmVydGljYWwoZmxvYXQgeSwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CisgICAg
QVNTRVJUKG1fcGF0aFNlZ0xpc3QpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlm
IChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCiAgICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFw
cGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFi
cyh5KSwgZWMpOwpAQCAtOTcsNTggKzkxLDY0IEBAIHZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVy
OjpsaW5lVG9WZXJ0aWMKICAgICBBU1NFUlQoIWVjKTsKIH0KIAotdm9pZCBTVkdQYXRoU2VnTGlz
dEJ1aWxkZXI6OmN1cnZlVG9DdWJpYyhjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50MiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIFBhdGhDb29yZGluYXRl
TW9kZSBtb2RlKQordm9pZCBTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9DdWJpYyhjb25z
dCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MiwgY29uc3QgRmxv
YXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogeworICAgIEFT
U0VSVChtX3BhdGhTZWdMaXN0KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAo
bW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBl
bmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzKHBv
aW50LngoKSwgcG9pbnQueSgpLCBwb2ludDEueCgpLCBwb2ludDEueSgpLCBwb2ludDIueCgpLCBw
b2ludDIueSgpKSwgZWMpOworICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1Bh
dGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzKHRhcmdldFBvaW50Lngo
KSwgdGFyZ2V0UG9pbnQueSgpLCBwb2ludDEueCgpLCBwb2ludDEueSgpLCBwb2ludDIueCgpLCBw
b2ludDIueSgpKSwgZWMpOwogICAgIGVsc2UKLSAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5k
SXRlbShTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbChwb2lu
dC54KCksIHBvaW50LnkoKSwgcG9pbnQxLngoKSwgcG9pbnQxLnkoKSwgcG9pbnQyLngoKSwgcG9p
bnQyLnkoKSksIGVjKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kSXRlbShTVkdQYXRo
RWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCh0YXJnZXRQb2ludC54KCks
IHRhcmdldFBvaW50LnkoKSwgcG9pbnQxLngoKSwgcG9pbnQxLnkoKSwgcG9pbnQyLngoKSwgcG9p
bnQyLnkoKSksIGVjKTsKICAgICBBU1NFUlQoIWVjKTsKIH0KIAotdm9pZCBTVkdQYXRoU2VnTGlz
dEJ1aWxkZXI6OmN1cnZlVG9DdWJpY1Ntb290aChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQyLCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKK3ZvaWQgU1ZH
UGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQyLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2Rl
IG1vZGUpCiB7CisgICAgQVNTRVJUKG1fcGF0aFNlZ0xpc3QpOwogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1f
cGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdD
dXJ2ZXRvQ3ViaWNTbW9vdGhBYnMocG9pbnQyLngoKSwgcG9pbnQyLnkoKSwgcG9pbnQueCgpLCBw
b2ludC55KCkpLCBlYyk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0
aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnModGFyZ2V0UG9p
bnQueCgpLCB0YXJnZXRQb2ludC55KCksIHBvaW50Mi54KCksIHBvaW50Mi55KCkpLCBlYyk7CiAg
ICAgZWxzZQotICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50
OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsKHBvaW50Mi54KCksIHBvaW50
Mi55KCksIHBvaW50LngoKSwgcG9pbnQueSgpKSwgZWMpOworICAgICAgICBtX3BhdGhTZWdMaXN0
LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1Ymlj
U21vb3RoUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBwb2ludDIueCgpLCBw
b2ludDIueSgpKSwgZWMpOwogICAgIEFTU0VSVCghZWMpOwogfQogCi12b2lkIFNWR1BhdGhTZWdM
aXN0QnVpbGRlcjo6Y3VydmVUb1F1YWRyYXRpYyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQxLCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKK3ZvaWQgU1ZH
UGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJhdGljKGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50MSwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBt
b2RlKQogeworICAgIEFTU0VSVChtX3BhdGhTZWdMaXN0KTsKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3Bh
dGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3Vy
dmV0b1F1YWRyYXRpY0Ficyhwb2ludDEueCgpLCBwb2ludDEueSgpLCBwb2ludC54KCksIHBvaW50
LnkoKSksIGVjKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kSXRlbShTVkdQYXRoRWxl
bWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnModGFyZ2V0UG9pbnQueCgp
LCB0YXJnZXRQb2ludC55KCksIHBvaW50MS54KCksIHBvaW50MS55KCkpLCBlYyk7CiAgICAgZWxz
ZQotICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVh
dGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbChwb2ludDEueCgpLCBwb2ludDEueSgpLCBw
b2ludC54KCksIHBvaW50LnkoKSksIGVjKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5k
SXRlbShTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwo
dGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIHBvaW50MS54KCksIHBvaW50MS55KCkp
LCBlYyk7CiAgICAgQVNTRVJUKCFlYyk7CiB9CiAKLXZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVy
OjpjdXJ2ZVRvUXVhZHJhdGljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBQYXRoQ29v
cmRpbmF0ZU1vZGUgbW9kZSkKK3ZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvUXVh
ZHJhdGljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0
ZU1vZGUgbW9kZSkKIHsKKyAgICBBU1NFUlQobV9wYXRoU2VnTGlzdCk7CiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcykKLSAgICAg
ICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kSXRlbShTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0
aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMocG9pbnQueCgpLCBwb2ludC55KCkpLCBlYyk7
CisgICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0
ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzKHRhcmdldFBvaW50LngoKSwgdGFy
Z2V0UG9pbnQueSgpKSwgZWMpOwogICAgIGVsc2UKLSAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBw
ZW5kSXRlbShTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNT
bW9vdGhSZWwocG9pbnQueCgpLCBwb2ludC55KCkpLCBlYyk7CisgICAgICAgIG1fcGF0aFNlZ0xp
c3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVh
ZHJhdGljU21vb3RoUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSwgZWMpOwog
ICAgIEFTU0VSVCghZWMpOwogfQogCi12b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6YXJjVG8o
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHIxLCBmbG9hdCByMiwgZmxvYXQgYW5nbGUs
IGJvb2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3ZWVwRmxhZywgUGF0aENvb3JkaW5hdGVNb2RlIG1v
ZGUpCit2b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6YXJjVG8oZmxvYXQgcjEsIGZsb2F0IHIy
LCBmbG9hdCBhbmdsZSwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dlZXBGbGFnLCBjb25zdCBG
bG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CisgICAg
QVNTRVJUKG1fcGF0aFNlZ0xpc3QpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlm
IChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFw
cGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdBcmNBYnMocG9pbnQueCgp
LCBwb2ludC55KCksIHIxLCByMiwgYW5nbGUsIGxhcmdlQXJjRmxhZywgc3dlZXBGbGFnKSwgZWMp
OworICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVh
dGVTVkdQYXRoU2VnQXJjQWJzKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCByMSwg
cjIsIGFuZ2xlLCBsYXJnZUFyY0ZsYWcsIHN3ZWVwRmxhZyksIGVjKTsKICAgICBlbHNlCi0gICAg
ICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1Bh
dGhTZWdBcmNSZWwocG9pbnQueCgpLCBwb2ludC55KCksIHIxLCByMiwgYW5nbGUsIGxhcmdlQXJj
RmxhZywgc3dlZXBGbGFnKSwgZWMpOworICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVt
KFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQXJjUmVsKHRhcmdldFBvaW50LngoKSwg
dGFyZ2V0UG9pbnQueSgpLCByMSwgcjIsIGFuZ2xlLCBsYXJnZUFyY0ZsYWcsIHN3ZWVwRmxhZyks
IGVjKTsKICAgICBBU1NFUlQoIWVjKTsKIH0KIAogdm9pZCBTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6
OmNsb3NlUGF0aCgpCiB7CisgICAgQVNTRVJUKG1fcGF0aFNlZ0xpc3QpOwogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1l
bnQ6OmNyZWF0ZVNWR1BhdGhTZWdDbG9zZVBhdGgoKSwgZWMpOwogICAgIEFTU0VSVCghZWMpOwpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmgJKHJldmlzaW9uIDY0ODM5KQorKysg
V2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDEwICszMSwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR1BhdGhTZWdM
aXN0QnVpbGRlciA6IHByaXZhdGUgU1ZHUGF0aENvbnN1bWVyIHsKK2NsYXNzIFNWR1BhdGhTZWdM
aXN0QnVpbGRlciA6IHB1YmxpYyBTVkdQYXRoQ29uc3VtZXIgewogcHVibGljOgotICAgIFNWR1Bh
dGhTZWdMaXN0QnVpbGRlcihTVkdQYXRoU2VnTGlzdCopOwotICAgIGJvb2wgYnVpbGQoY29uc3Qg
U3RyaW5nJiwgUGF0aFBhcnNpbmdNb2RlKTsKKyAgICBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIoKTsK
KworICAgIHZvaWQgc2V0Q3VycmVudFNWR1BhdGhTZWdMaXN0KFNWR1BhdGhTZWdMaXN0KiBwYXRo
U2VnTGlzdCkgeyBtX3BhdGhTZWdMaXN0ID0gcGF0aFNlZ0xpc3Q7IH0KIAogcHJpdmF0ZToKICAg
ICAvLyBVc2VkIGluIFVuYWx0ZXJlZFBhcmlzbmcvTm9ybWFsaXplZFBhcnNpbmcgbW9kZXMuCkBA
IC01MCw3ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGN1cnZlVG9DdWJpY1Nt
b290aChjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRl
TW9kZSk7CiAgICAgdmlydHVhbCB2b2lkIGN1cnZlVG9RdWFkcmF0aWMoY29uc3QgRmxvYXRQb2lu
dCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpOwogICAgIHZpcnR1YWwg
dm9pZCBjdXJ2ZVRvUXVhZHJhdGljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRp
bmF0ZU1vZGUpOwotICAgIHZpcnR1YWwgdm9pZCBhcmNUbyhjb25zdCBGbG9hdFBvaW50JiwgZmxv
YXQsIGZsb2F0LCBmbG9hdCwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dlZXBGbGFnLCBQYXRo
Q29vcmRpbmF0ZU1vZGUpOworICAgIHZpcnR1YWwgdm9pZCBhcmNUbyhmbG9hdCwgZmxvYXQsIGZs
b2F0LCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcsIGNvbnN0IEZsb2F0UG9pbnQm
LCBQYXRoQ29vcmRpbmF0ZU1vZGUpOwogCiAgICAgU1ZHUGF0aFNlZ0xpc3QqIG1fcGF0aFNlZ0xp
c3Q7CiB9OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNvdXJjZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR1BhdGhTb3VyY2UuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3Zn
L1NWR1BhdGhTb3VyY2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI2lmbmRlZiBTVkdQYXRoU291cmNlX2gKKyNkZWZpbmUgU1ZHUGF0aFNvdXJjZV9o
CisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR1BhdGhTZWcuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBTVkdQYXRoU291cmNlIDogcHVibGljIE5vbmNvcHlhYmxlIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TVkdQYXRoU291cmNlKCkgeyB9CisKKyAgICB2aXJ0dWFs
IGJvb2wgaGFzTW9yZURhdGEoKSA9IDA7CisgICAgdmlydHVhbCBib29sIHBhcnNlRmxvYXQoZmxv
YXQmIHJlc3VsdCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwYXJzZUZsYWcoYm9vbCYgcmVzdWx0
KSA9IDA7CisgICAgdmlydHVhbCBib29sIG1vdmVUb05leHRUb2tlbigpID0gMDsKKyAgICB2aXJ0
dWFsIFNWR1BhdGhTZWdUeXBlIHBhcnNlU1ZHU2VnbWVudFR5cGUoKSA9IDA7CisgICAgdmlydHVh
bCBTVkdQYXRoU2VnVHlwZSBuZXh0Q29tbWFuZChTVkdQYXRoU2VnVHlwZSkgPSAwOworCitwdWJs
aWM6CisgICAgU1ZHUGF0aFNvdXJjZSgpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykKKyNlbmRpZiAvLyBTVkdQYXRoU291cmNlX2gKSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9zdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTI0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEw
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
U1ZHKQorI2luY2x1ZGUgIlNWR1BhdGhTdHJpbmdTb3VyY2UuaCIKKworI2luY2x1ZGUgIlNWR1Bh
cnNlclV0aWxpdGllcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NWR1BhdGhTdHJpbmdT
b3VyY2U6OlNWR1BhdGhTdHJpbmdTb3VyY2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAgOiBt
X3N0cmluZyhzdHJpbmcpCisgICAgLCBtX2N1cnJlbnQoc3RyaW5nLmNoYXJhY3RlcnMoKSkKKyAg
ICAsIG1fZW5kKG1fY3VycmVudCArIHN0cmluZy5sZW5ndGgoKSkKK3sKKyAgICBBU1NFUlQoIXN0
cmluZy5pc0VtcHR5KCkpOworfQorCitTVkdQYXRoU3RyaW5nU291cmNlOjp+U1ZHUGF0aFN0cmlu
Z1NvdXJjZSgpCit7Cit9CisKK2Jvb2wgU1ZHUGF0aFN0cmluZ1NvdXJjZTo6aGFzTW9yZURhdGEo
KQoreworICAgIHJldHVybiBtX2N1cnJlbnQgPCBtX2VuZDsKK30KKworYm9vbCBTVkdQYXRoU3Ry
aW5nU291cmNlOjpwYXJzZUZsb2F0KGZsb2F0JiByZXN1bHQpCit7CisgICAgcmV0dXJuIHBhcnNl
TnVtYmVyKG1fY3VycmVudCwgbV9lbmQsIHJlc3VsdCk7Cit9CisKK2Jvb2wgU1ZHUGF0aFN0cmlu
Z1NvdXJjZTo6cGFyc2VGbGFnKGJvb2wmIHJlc3VsdCkKK3sKKyAgICByZXR1cm4gcGFyc2VBcmNG
bGFnKG1fY3VycmVudCwgbV9lbmQsIHJlc3VsdCk7Cit9CisKK2Jvb2wgU1ZHUGF0aFN0cmluZ1Nv
dXJjZTo6bW92ZVRvTmV4dFRva2VuKCkKK3sKKyAgICByZXR1cm4gc2tpcE9wdGlvbmFsU3BhY2Vz
KG1fY3VycmVudCwgbV9lbmQpOworfQorCitTVkdQYXRoU2VnVHlwZSBTVkdQYXRoU3RyaW5nU291
cmNlOjpwYXJzZVNWR1NlZ21lbnRUeXBlKCkKK3sKKyAgICBzd2l0Y2ggKCoobV9jdXJyZW50Kysp
KSB7CisgICAgY2FzZSAnWic6CisgICAgY2FzZSAneic6CisgICAgICAgIHJldHVybiBQYXRoU2Vn
Q2xvc2VQYXRoOworICAgIGNhc2UgJ00nOgorICAgICAgICByZXR1cm4gUGF0aFNlZ01vdmVUb0Fi
czsKKyAgICBjYXNlICdtJzoKKyAgICAgICAgcmV0dXJuIFBhdGhTZWdNb3ZlVG9SZWw7CisgICAg
Y2FzZSAnTCc6CisgICAgICAgIHJldHVybiBQYXRoU2VnTGluZVRvQWJzOworICAgIGNhc2UgJ2wn
OgorICAgICAgICByZXR1cm4gUGF0aFNlZ0xpbmVUb1JlbDsKKyAgICBjYXNlICdDJzoKKyAgICAg
ICAgcmV0dXJuIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNBYnM7CisgICAgY2FzZSAnYyc6CisgICAgICAg
IHJldHVybiBQYXRoU2VnQ3VydmVUb0N1YmljUmVsOworICAgIGNhc2UgJ1EnOgorICAgICAgICBy
ZXR1cm4gUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNBYnM7CisgICAgY2FzZSAncSc6CisgICAgICAg
IHJldHVybiBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1JlbDsKKyAgICBjYXNlICdBJzoKKyAgICAg
ICAgcmV0dXJuIFBhdGhTZWdBcmNBYnM7CisgICAgY2FzZSAnYSc6CisgICAgICAgIHJldHVybiBQ
YXRoU2VnQXJjUmVsOworICAgIGNhc2UgJ0gnOgorICAgICAgICByZXR1cm4gUGF0aFNlZ0xpbmVU
b0hvcml6b250YWxBYnM7CisgICAgY2FzZSAnaCc6CisgICAgICAgIHJldHVybiBQYXRoU2VnTGlu
ZVRvSG9yaXpvbnRhbFJlbDsKKyAgICBjYXNlICdWJzoKKyAgICAgICAgcmV0dXJuIFBhdGhTZWdM
aW5lVG9WZXJ0aWNhbEFiczsKKyAgICBjYXNlICd2JzoKKyAgICAgICAgcmV0dXJuIFBhdGhTZWdM
aW5lVG9WZXJ0aWNhbFJlbDsKKyAgICBjYXNlICdTJzoKKyAgICAgICAgcmV0dXJuIFBhdGhTZWdD
dXJ2ZVRvQ3ViaWNTbW9vdGhBYnM7CisgICAgY2FzZSAncyc6CisgICAgICAgIHJldHVybiBQYXRo
U2VnQ3VydmVUb0N1YmljU21vb3RoUmVsOworICAgIGNhc2UgJ1QnOgorICAgICAgICByZXR1cm4g
UGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhBYnM7CisgICAgY2FzZSAndCc6CisgICAgICAg
IHJldHVybiBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290aFJlbDsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gUGF0aFNlZ1Vua25vd247CisgICAgfQorfQorCitTVkdQYXRoU2VnVHlw
ZSBTVkdQYXRoU3RyaW5nU291cmNlOjpuZXh0Q29tbWFuZChTVkdQYXRoU2VnVHlwZSBwcmV2aW91
c0NvbW1hbmQpCit7CisgICAgLy8gQ2hlY2sgZm9yIHJlbWFpbmluZyBjb29yZGluYXRlcyBpbiB0
aGUgY3VycmVudCBjb21tYW5kLgorICAgIGlmICgoKm1fY3VycmVudCA9PSAnKycgfHwgKm1fY3Vy
cmVudCA9PSAnLScgfHwgKm1fY3VycmVudCA9PSAnLicgfHwgKCptX2N1cnJlbnQgPj0gJzAnICYm
ICptX2N1cnJlbnQgPD0gJzknKSkKKyAgICAgICAgJiYgcHJldmlvdXNDb21tYW5kICE9IFBhdGhT
ZWdDbG9zZVBhdGgpIHsKKyAgICAgICAgaWYgKHByZXZpb3VzQ29tbWFuZCA9PSBQYXRoU2VnTW92
ZVRvQWJzKQorICAgICAgICAgICAgcmV0dXJuIFBhdGhTZWdMaW5lVG9BYnM7CisgICAgICAgIGlm
IChwcmV2aW91c0NvbW1hbmQgPT0gUGF0aFNlZ01vdmVUb1JlbCkKKyAgICAgICAgICAgIHJldHVy
biBQYXRoU2VnTGluZVRvUmVsOworICAgICAgICByZXR1cm4gcHJldmlvdXNDb21tYW5kOworICAg
IH0KKyAgICByZXR1cm4gcGFyc2VTVkdTZWdtZW50VHlwZSgpOworfQorCit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoU1ZHKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuaAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBTVkdQYXRoU3RyaW5nU291
cmNlX2gKKyNkZWZpbmUgU1ZHUGF0aFN0cmluZ1NvdXJjZV9oCisKKyNpZiBFTkFCTEUoU1ZHKQor
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNvdXJjZS5oIgor
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgU1ZHUGF0aFN0cmluZ1NvdXJjZSA6IHB1YmxpYyBTVkdQYXRoU291cmNlIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc093blB0cjxTVkdQYXRoU3RyaW5nU291cmNlPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR1Bh
dGhTdHJpbmdTb3VyY2Uoc3RyaW5nKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+U1ZHUGF0aFN0
cmluZ1NvdXJjZSgpOworCisgICAgdmlydHVhbCBib29sIGhhc01vcmVEYXRhKCk7CisgICAgdmly
dHVhbCBib29sIHBhcnNlRmxvYXQoZmxvYXQmIHJlc3VsdCk7CisgICAgdmlydHVhbCBib29sIHBh
cnNlRmxhZyhib29sJiByZXN1bHQpOworICAgIHZpcnR1YWwgYm9vbCBtb3ZlVG9OZXh0VG9rZW4o
KTsKKyAgICB2aXJ0dWFsIFNWR1BhdGhTZWdUeXBlIHBhcnNlU1ZHU2VnbWVudFR5cGUoKTsKKyAg
ICB2aXJ0dWFsIFNWR1BhdGhTZWdUeXBlIG5leHRDb21tYW5kKFNWR1BhdGhTZWdUeXBlKTsKKwor
cHJpdmF0ZToKKyAgICBTVkdQYXRoU3RyaW5nU291cmNlKGNvbnN0IFN0cmluZyYpOworICAgIFN0
cmluZyBtX3N0cmluZzsKKworICAgIGNvbnN0IFVDaGFyKiBtX2N1cnJlbnQ7CisgICAgY29uc3Qg
VUNoYXIqIG1fZW5kOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFNWRykKKyNlbmRpZiAvLyBTVkdQYXRoU3RyaW5nU291cmNlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63768</attachid>
            <date>2010-08-06 15:16:25 -0700</date>
            <delta_ts>2010-08-06 22:42:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43618-20100807001622.patch</filename>
            <type>text/plain</type>
            <size>92532</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDg3MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTE1IEBACisyMDEwLTA4LTA2ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2Vu
ZXJhbGl6ZSBTVkdQYXRoUGFyc2VyIHRvIGFsbG93IG1vcmUgdGhhbiBqdXN0IHN0cmluZ3MgYXMg
aW5wdXQgc291cmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MzYxOAorCisgICAgICAgIEdlbmVyYWxpemUgU1ZHUGF0aFBhcnNlciwgYnkgYWxsb3dp
bmcgZGlmZmVyZW50IHBhcnNpbmcgc291cmNlcyB0aGFuIGp1c3Qgc3RyaW5ncy4KKyAgICAgICAg
Rm9yIG5vdyBvbmx5IGEgU1ZHUGF0aFN0cmluZ1NvdXJjZSBpcyBhdmFpbGFibGUsIHBhcnNpbmcg
ZnJvbSBieXRlc3RyZWFtcyBmb2xsb3dzIHNvb24uCisgICAgICAgIEVhY2ggY2xpZW50IHRoYXQg
d2FudHMgdG8gcGFyc2Ugc3RyaW5ncywgbGlrZSBQYXRoIG9yIFNWR1BhdGhTZWdMaXN0IG9iamVj
dHMsIG9ubHkKKyAgICAgICAgbmVlZHMgdG8gdXNlIHRoZSBuZXcgY2VudHJhbCBTVkdQYXRoUGFy
c2VyRmFjdG9yeSwgd2hpY2ggZ2x1ZXMgY29uc3VtZXIgYW5kIHNvdXJjZXMgdG9nZXRoZXIuCisg
ICAgICAgIE1vdmVkIHRoZSBTVkdQYXRoU2VnVHlwZSBlbnVtZXJhdGlvbiBmcm9tIFNWR1BhdGhT
ZWcgY2xhc3MgZm9yIGEgY29tbW9uIHVzZSBhY3Jvc3MKKyAgICAgICAgdGhlIFNWRyBjb2RlLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyBhZGRlZC4KKworICAgICAgICAqIEFuZHJvaWQubWs6Cisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorICAgICAgICAq
IHN2Zy9TVkdBbGxJbk9uZS5jcHA6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5k
VG9WYWx1ZXMpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdHbHlwaEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cGFyc2VQYXRoRGF0YSk6CisgICAgICAgICogc3ZnL1NWR1BhdGhCdWlsZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCdWlsZGVyOjpTVkdQYXRoQnVpbGRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdQYXRoQnVpbGRlcjo6bW92ZVRvKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdGhCdWlsZGVyOjpsaW5lVG8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJ1aWxk
ZXI6OmN1cnZlVG9DdWJpYyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnVpbGRlcjo6Y2xv
c2VQYXRoKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BhdGhCdWlsZGVyOjpzZXRDdXJyZW50UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXRoQnVpbGRlcjo6YXJjVG8pOgorICAgICAgICAqIHN2Zy9TVkdQYXRoQ29uc3VtZXIuaDoK
KyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0aEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0
aFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2VyOjpTVkdQYXRoUGFy
c2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OnBhcnNlQ2xvc2VQYXRoU2Vn
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2VyOjpwYXJzZU1vdmVUb1NlZ21l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6cGFyc2VMaW5lVG9TZWdtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OnBhcnNlTGluZVRvSG9yaXpvbnRh
bFNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6cGFyc2VMaW5lVG9W
ZXJ0aWNhbFNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6cGFyc2VD
dXJ2ZVRvQ3ViaWNTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OnBh
cnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
UGFyc2VyOjpwYXJzZUN1cnZlVG9RdWFkcmF0aWNTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdGhQYXJzZXI6OnBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6cGFyc2VBcmNUb1NlZ21lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6cGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6ZGVjb21wb3NlQXJjVG9DdWJpYyk6CisgICAg
ICAgICogc3ZnL1NWR1BhdGhQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJz
ZXI6OnNldEN1cnJlbnRDb25zdW1lcik6CisgICAgICAgICogc3ZnL1NWR1BhdGhQYXJzZXJGYWN0
b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnbG9iYWxTVkdQYXRoQnVpbGRlcik6
CisgICAgICAgIChXZWJDb3JlOjpnbG9iYWxTVkdQYXRoU2VnTGlzdEJ1aWxkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Z2xvYmFsU1ZHUGF0aFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YXRoUGFyc2VyRmFjdG9yeTo6c2VsZik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2Vy
RmFjdG9yeTo6U1ZHUGF0aFBhcnNlckZhY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aFBhcnNlckZhY3Rvcnk6On5TVkdQYXRoUGFyc2VyRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYXRoUGFyc2VyRmFjdG9yeTo6YnVpbGRQYXRoRnJvbVN0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdQYXRoUGFyc2VyRmFjdG9yeTo6YnVpbGRTVkdQYXRoU2VnTGlzdEZyb21TdHJp
bmcpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoUGFyc2VyRmFjdG9yeS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvU1ZHUGF0aFNlZy5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhTZWc6On5TVkdQYXRoU2VnKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dGhTZWc6Oik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnOjpwYXRoU2VnVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnOjpwYXRoU2VnVHlwZUFzTGV0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhTZWc6OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BhdGhTZWc6OmFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BhdGhTZWc6OlNWR1BhdGhTZWcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ1Npbmds
ZUNvb3JkOjpTVkdQYXRoU2VnU2luZ2xlQ29vcmQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aFNlZ1NpbmdsZUNvb3JkOjpzZXRYKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdTaW5n
bGVDb29yZDo6eCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnU2luZ2xlQ29vcmQ6OnNl
dFkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ1NpbmdsZUNvb3JkOjp5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdTaW5nbGVDb29yZDo6dG9TdHJpbmcpOgorICAgICAgICAq
IHN2Zy9TVkdQYXRoU2VnTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlz
dDo6Z2V0UGF0aFNlZ0F0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0
Ojp0b1BhdGhEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0OjpjcmVhdGVB
bmltYXRlZCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0QnVpbGRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OlNWR1BhdGhTZWdMaXN0QnVpbGRl
cik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6Om1vdmVUbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmxpbmVUbyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9DdWJpYyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9DdWJpY1Ntb290aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJh
dGljU21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6YXJj
VG8pOgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6c2V0Q3VycmVudFNWR1BhdGhTZWdMaXN0KToK
KyAgICAgICAgKiBzdmcvU1ZHUGF0aFNvdXJjZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdGhTb3VyY2U6On5TVkdQYXRoU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dGhTb3VyY2U6OlNWR1BhdGhTb3VyY2UpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoU3RyaW5nU291
cmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nU291cmNlOjpT
VkdQYXRoU3RyaW5nU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdTb3Vy
Y2U6On5TVkdQYXRoU3RyaW5nU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJp
bmdTb3VyY2U6OmVuZE9mU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdT
b3VyY2U6OnBhcnNlRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ1NvdXJj
ZTo6cGFyc2VGbGFnKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdTb3VyY2U6OnNr
aXBTcGFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VT
VkdTZWdtZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nU291cmNlOjpo
YXNSZW1haW5pbmdDb29yZGluYXRlc0luQ3VycmVudENvbW1hbmQpOgorICAgICAgICAqIHN2Zy9T
VkdQYXRoU3RyaW5nU291cmNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0
cmluZ1NvdXJjZTo6Y3JlYXRlKToKKwogMjAxMC0wOC0wNiAgVG9ueSBHZW50aWxjb3JlICA8dG9u
eWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRl
eDogV2ViQ29yZS9BbmRyb2lkLm1rCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQW5kcm9pZC5tawko
cmV2aXNpb24gNjQ4NzMpCisrKyBXZWJDb3JlL0FuZHJvaWQubWsJKHdvcmtpbmcgY29weSkKQEAg
LTg3Myw2ICs4NzMsNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NBTF9TUkNfRklMRVMpIFwK
IAlzdmcvU1ZHUGF0aEJ1aWxkZXIuY3BwIFwKIAlzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwIFwKIAlz
dmcvU1ZHUGF0aFBhcnNlci5jcHAgXAorCXN2Zy9TVkdQYXRoUGFyc2VyRmFjdG9yeS5jcHAgXAog
CXN2Zy9TVkdQYXRoU2VnLmNwcCBcCiAJc3ZnL1NWR1BhdGhTZWdBcmMuY3BwIFwKIAlzdmcvU1ZH
UGF0aFNlZ0Nsb3NlUGF0aC5jcHAgXApAQCAtODg2LDYgKzg4Nyw3IEBAIExPQ0FMX1NSQ19GSUxF
UyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCXN2Zy9TVkdQYXRoU2VnTGlzdC5jcHAgXAogCXN2
Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwIFwKIAlzdmcvU1ZHUGF0aFNlZ01vdmV0by5jcHAg
XAorCXN2Zy9TVkdQYXRoU3RyaW5nU291cmNlLmNwcCBcCiAJc3ZnL1NWR1BhdHRlcm5FbGVtZW50
LmNwcCBcCiAJc3ZnL1NWR1BvaW50TGlzdC5jcHAgXAogCXN2Zy9TVkdQb2x5RWxlbWVudC5jcHAg
XApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCShyZXZpc2lvbiA2NDg3MykKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0J
KHdvcmtpbmcgY29weSkKQEAgLTQwNzksNiArNDA3OSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaCBcCiAJV2ViQ29yZS9zdmcvU1ZHUGF0aFBh
cnNlci5jcHAgXAogCVdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIuaCBcCisJV2ViQ29yZS9zdmcv
U1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwIFwKKwlXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyRmFj
dG9yeS5oIFwKIAlXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnLmNwcCBcCiAJV2ViQ29yZS9zdmcvU1ZH
UGF0aFNlZy5oIFwKIAlXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQXJjLmNwcCBcCkBAIC00MTA1LDYg
KzQxMDcsOSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdM
aXN0QnVpbGRlci5oIFwKIAlXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTW92ZXRvLmNwcCBcCiAJV2Vi
Q29yZS9zdmcvU1ZHUGF0aFNlZ01vdmV0by5oIFwKKwlXZWJDb3JlL3N2Zy9TVkdQYXRoU291cmNl
LmggXAorCVdlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuY3BwIFwKKwlXZWJDb3JlL3N2
Zy9TVkdQYXRoU3RyaW5nU291cmNlLmggXAogCVdlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50
LmNwcCBcCiAJV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaCBcCiAJV2ViQ29yZS9zdmcv
U1ZHUG9pbnRMaXN0LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNjQ4NzMpCisrKyBXZWJDb3JlL1dl
YkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzgzMyw2ICszODMzLDggQEAKICAgICAgICAg
ICAgICdzdmcvU1ZHUGF0aEVsZW1lbnQuaCcsCiAgICAgICAgICAgICAnc3ZnL1NWR1BhdGhQYXJz
ZXIuY3BwJywKICAgICAgICAgICAgICdzdmcvU1ZHUGF0aFBhcnNlci5oJywKKyAgICAgICAgICAg
ICdzdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwJywKKyAgICAgICAgICAgICdzdmcvU1ZHUGF0
aFBhcnNlckZhY3RvcnkuaCcsCiAgICAgICAgICAgICAnc3ZnL1NWR1BhdGhTZWcuY3BwJywKICAg
ICAgICAgICAgICdzdmcvU1ZHUGF0aFNlZy5oJywKICAgICAgICAgICAgICdzdmcvU1ZHUGF0aFNl
Z0FyYy5jcHAnLApAQCAtMzg1OSw2ICszODYxLDkgQEAKICAgICAgICAgICAgICdzdmcvU1ZHUGF0
aFNlZ0xpc3RCdWlsZGVyLmgnLAogICAgICAgICAgICAgJ3N2Zy9TVkdQYXRoU2VnTW92ZXRvLmNw
cCcsCiAgICAgICAgICAgICAnc3ZnL1NWR1BhdGhTZWdNb3ZldG8uaCcsCisgICAgICAgICAgICAn
c3ZnL1NWR1BhdGhTb3VyY2UuaCcsCisgICAgICAgICAgICAnc3ZnL1NWR1BhdGhTdHJpbmdTb3Vy
Y2UuY3BwJywKKyAgICAgICAgICAgICdzdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5oJywKICAgICAg
ICAgICAgICdzdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdzdmcvU1ZH
UGF0dGVybkVsZW1lbnQuaCcsCiAgICAgICAgICAgICAnc3ZnL1NWR1BvaW50TGlzdC5jcHAnLApJ
bmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUu
cHJvCShyZXZpc2lvbiA2NDg3MykKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29w
eSkKQEAgLTI4NTUsNiArMjg1NSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkc9MSkg
ewogICAgICAgICBzdmcvU1ZHUGF0aEJ1aWxkZXIuY3BwIFwKICAgICAgICAgc3ZnL1NWR1BhdGhF
bGVtZW50LmNwcCBcCiAgICAgICAgIHN2Zy9TVkdQYXRoUGFyc2VyLmNwcCBcCisgICAgICAgIHN2
Zy9TVkdQYXRoUGFyc2VyRmFjdG9yeS5jcHAgXAogICAgICAgICBzdmcvU1ZHUGF0aFNlZy5jcHAg
XAogICAgICAgICBzdmcvU1ZHUGF0aFNlZ0FyYy5jcHAgXAogICAgICAgICBzdmcvU1ZHUGF0aFNl
Z0Nsb3NlUGF0aC5jcHAgXApAQCAtMjg2OCw2ICsyODY5LDcgQEAgY29udGFpbnMoREVGSU5FUywg
RU5BQkxFX1NWRz0xKSB7CiAgICAgICAgIHN2Zy9TVkdQYXRoU2VnTGlzdC5jcHAgXAogICAgICAg
ICBzdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmNwcCBcCiAgICAgICAgIHN2Zy9TVkdQYXRoU2Vn
TW92ZXRvLmNwcCBcCisgICAgICAgIHN2Zy9TVkdQYXRoU3RyaW5nU291cmNlLmNwcCBcCiAgICAg
ICAgIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAgXAogICAgICAgICBzdmcvU1ZHUG9pbnRMaXN0
LmNwcCBcCiAgICAgICAgIHN2Zy9TVkdQb2x5RWxlbWVudC5jcHAgXApJbmRleDogV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA2NDg3MykKKysrIFdlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ5NDUzLDYgKzQ5
NDUzLDEwIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHN2Z1xTVkdQYXRoUGFyc2VyRmFjdG9yeS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0K
KwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXFNWR1BhdGhTZWcuaCINCiAJCQkJ
Pg0KIAkJCTwvRmlsZT4NCkBAIC00OTUwNSw2ICs0OTUwOSwxNCBAQAogCQkJCT4NCiAJCQk8L0Zp
bGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZHUGF0aFNvdXJjZS5o
Ig0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
c3ZnXFNWR1BhdGhTdHJpbmdTb3VyY2UuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdQYXR0ZXJuRWxlbWVudC5oIg0KIAkJCQk+
DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiA2NDg3MykKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIzLDExICsxNDIzLDkgQEAKIAkJN0FF
RDNFMDYwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUVEM0UwNDBGQkIxRUFBMDBEMkIw
M0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCAqLzsgfTsKIAkJN0FGRDRBOEIxMTMxQzI3NjAwMzVC
ODgzIC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBRkQ0QThBMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3Bv
aW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
N0FGRDRGRjQxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkQ0RkYzMTEzMjc3QjYw
MDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJODFCRTIwOTgxMUY0QUI4RDAwOTE1REZBIC8qIElE
QkN1cnNvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MUJFMjA5MzExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29yLmNwcCAqLzsgfTsKIAkJODFC
RTIwOTcxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFCRTIwOTIxMUY0QUI4RDAwOTE1REZBIC8qIElE
QkN1cnNvci5oICovOyB9OwogCQk4MUJFMjA5ODExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29y
QmFja2VuZEltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODFCRTIwOTMxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvckJhY2tlbmRJbXBsLmNw
cCAqLzsgfTsKLQkJODFCRTIwOTkxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvckJhY2tlbmRJ
bXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MUJF
MjA5NDExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29yQmFja2VuZEltcGwuaCAqLzsgfTsKLQkJ
ODFCRTIwOUIxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxQkUyMDk2MTFG
NEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmggKi87IH07CisJCTgx
QkUyMDk5MTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MUJFMjA5NDExRjRB
QjhEMDA5MTVERkEgLyogSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oICovOyB9OwogCQk4MUJF
MjBEMjExRjRCQzMyMDA5MTVERkEgLyogSlNJREJDdXJzb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFCRTIwQTcxMUY0QjY2RjAwOTE1REZBIC8q
IEpTSURCQ3Vyc29yLmNwcCAqLzsgfTsKIAkJODFCRTIwRDMxMUY0QkMzMjAwOTE1REZBIC8qIEpT
SURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MUJFMjBBODExRjRCNjZGMDA5MTVERkEgLyogSlNJREJDdXJzb3IuaCAqLzsgfTsKIAkJODJC
NjU4OTgxMTg5RTM5MjAwRTA1MkExIC8qIEluc3BlY3RvckNTU1N0b3JlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MkI2NTg5NzExODlFMzkyMDBFMDUy
QTEgLyogSW5zcGVjdG9yQ1NTU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMTQ0MSw2ICsxNDM5LDExIEBACiAJCTg0MjI0MThFMTA3RTc4
NkYwMDc2NkE4NyAvKiBET01TVkdGRU1vcnBob2xvZ3lFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MjI0MThCMTA3RTc4NkYw
MDc2NkE4NyAvKiBET01TVkdGRU1vcnBob2xvZ3lFbGVtZW50SW50ZXJuYWwuaCAqLzsgfTsKIAkJ
ODQyMjQxOTMxMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQyMjQxOTAxMDdF
NzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwICovOyB9OwogCQk4NDIy
NDE5NDEwN0U3OEE3MDA3NjZBODcgLyogU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQyMjQxOTExMDdFNzhBNzAw
NzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaCAqLzsgfTsKKwkJODQzMDBCRDMxMjBD
OUE3MTAwMjE5NTRBIC8qIFNWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MzAwQkQxMTIwQzlBNzEwMDIxOTU0QSAv
KiBTVkdQYXRoUGFyc2VyRmFjdG9yeS5jcHAgKi87IH07CisJCTg0MzAwQkQ0MTIwQzlBNzEwMDIx
OTU0QSAvKiBTVkdQYXRoUGFyc2VyRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODQzMDBCRDIxMjBDOUE3MTAwMjE5NTRBIC8qIFNWR1BhdGhQ
YXJzZXJGYWN0b3J5LmggKi87IH07CisJCTg0MzAwQkQ2MTIwQzlBQUMwMDIxOTU0QSAvKiBTVkdQ
YXRoU3RyaW5nU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NDMwMEJENTEyMEM5QUFDMDAyMTk1NEEgLyogU1ZHUGF0aFN0cmluZ1NvdXJjZS5o
ICovOyB9OworCQk4NDMwMEJEODEyMEM5QUQ0MDAyMTk1NEEgLyogU1ZHUGF0aFNvdXJjZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQzMDBCRDcxMjBD
OUFENDAwMjE5NTRBIC8qIFNWR1BhdGhTb3VyY2UuaCAqLzsgfTsKKwkJODQzMDBCREExMjBDOUFF
RDAwMjE5NTRBIC8qIFNWR1BhdGhTdHJpbmdTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQzMDBCRDkxMjBDOUFFRDAwMjE5NTRBIC8qIFNW
R1BhdGhTdHJpbmdTb3VyY2UuY3BwICovOyB9OwogCQk4NDVFNzJGODBGRDI2MUVFMDBBODdENzkg
LyogRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NDVFNzJGNzBGRDI2MUVFMDBBODdENzkgLyogRmlsdGVyLmggKi87IH07CiAJCTg0NUU3MkZC
MEZEMjYyMzkwMEE4N0Q3OSAvKiBTVkdGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ1RTcyRjkwRkQyNjIzOTAwQTg3RDc5IC8qIFNWR0Zp
bHRlci5jcHAgKi87IH07CiAJCTg0NUU3MkZDMEZEMjYyMzkwMEE4N0Q3OSAvKiBTVkdGaWx0ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0NUU3MkZB
MEZEMjYyMzkwMEE4N0Q3OSAvKiBTVkdGaWx0ZXIuaCAqLzsgfTsKQEAgLTcyNDksNyArNzI1Miw2
IEBACiAJCTdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdERlYnVnTGlzdGVuZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODFCRTIwOTIxMUY0QUI4RDAwOTE1REZBIC8q
IElEQkN1cnNvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJDdXJzb3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODFCRTIwOTMxMUY0QUI4RDAwOTE1REZB
IC8qIElEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IElEQkN1cnNvckJhY2tlbmRJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJODFCRTIwOTQxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvckJhY2tlbmRJbXBs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkN1cnNvckJhY2tlbmRJbXBs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgxQkUyMDk0MTFGNEFCOEQwMDkxNURG
QSAvKiBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODFCRTIwOUMxMUY0QUJCRDAwOTE1REZBIC8qIElEQkN1cnNvci5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gSURCQ3Vyc29yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODFCRTIwQTcxMUY0QjY2RjAwOTE1REZBIC8qIEpTSURCQ3Vyc29yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSURCQ3Vyc29yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcyNjYsNiArNzI2OCwxMSBAQAogCQk4NDIyNDE5MDEw
N0U3OEE3MDA3NjZBODcgLyogU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQyMjQxOTExMDdFNzhBNzAwNzY2QTg3IC8qIFNW
R0ZFTW9ycGhvbG9neUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
NDIyNDE5MjEwN0U3OEE3MDA3NjZBODcgLyogU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg0MzAwQkQxMTIwQzlBNzEwMDIxOTU0QSAvKiBTVkdQYXRo
UGFyc2VyRmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
VkdQYXRoUGFyc2VyRmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg0
MzAwQkQyMTIwQzlBNzEwMDIxOTU0QSAvKiBTVkdQYXRoUGFyc2VyRmFjdG9yeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoUGFyc2VyRmFjdG9yeS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4NDMwMEJENTEyMEM5QUFDMDAyMTk1NEEgLyogU1ZHUGF0
aFN0cmluZ1NvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRo
U3RyaW5nU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg0MzAwQkQ3MTIw
QzlBRDQwMDIxOTU0QSAvKiBTVkdQYXRoU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNWR1BhdGhTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODQzMDBCRDkxMjBDOUFFRDAwMjE5NTRBIC8qIFNWR1BhdGhTdHJpbmdTb3VyY2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0NUU3MkY3MEZEMjYxRUUwMEE4N0Q3OSAv
KiBGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmlsdGVyLmg7IHBh
dGggPSBmaWx0ZXJzL0ZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NDVF
NzJGOTBGRDI2MjM5MDBBODdENzkgLyogU1ZHRmlsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0ZpbHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg0NUU3MkZBMEZEMjYyMzkwMEE4N0Q3OSAvKiBTVkdGaWx0ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMDA3Nyw4ICsxMDA4NCw4IEBACiAJCUI2NTY2MjY4MTIwQjExNUEwMDZFQTg1
QyAvKiBJREJUcmFuc2FjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
REJUcmFuc2FjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNjU2NjI2OTEy
MEIxMTVBMDA2RUE4NUMgLyogSURCVHJhbnNhY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IElEQlRyYW5zYWN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjY1
NjYyNkQxMjBCMTE2QjAwNkVBODVDIC8qIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjY1NjYyNkUxMjBCMTIy
NzAwNkVBODVDIC8qIEpTSURCVHJhbnNhY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gSlNJREJUcmFuc2FjdGlvbi5oOyBwYXRoID0gSlNJREJUcmFuc2FjdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCNjU2NjI2RjEyMEIxMjI3MDA2RUE4NUMgLyog
SlNJREJUcmFuc2FjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBKU0lEQlRyYW5zYWN0aW9uLmNwcDsgcGF0aCA9IEpTSURCVHJhbnNhY3Rpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNjU2NjI2RTEyMEIxMjI3MDA2RUE4NUMgLyogSlNJ
REJUcmFuc2FjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0lEQlRy
YW5zYWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI2NTY2MjZGMTIwQjEy
MjcwMDZFQTg1QyAvKiBKU0lEQlRyYW5zYWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTSURCVHJhbnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCNzM0QjE4MDExOUI5OTExMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRm9udFRyYW5zY29kZXIuY3Bw
OyBwYXRoID0gdHJhbnNjb2Rlci9Gb250VHJhbnNjb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUI3MzRCMTgyMTE5Qjk5MUQwMDY1ODdCRCAvKiBGb250VHJhbnNjb2Rlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGb250VHJhbnNjb2Rlci5oOyBwYXRo
ID0gdHJhbnNjb2Rlci9Gb250VHJhbnNjb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCNzc2RDQzQTExMDQ1MjVEMDBCRUIwRUMgLyogUHJpbnRDb250ZXh0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaW50Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTE0MDgsNyArMTE0MTUsNiBAQAogCQkxQUU4MkVDOTBDQUFFMTc3MDAy
MjM3QUUgLyogc3RvcmFnZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCi0KIAkJCQlCNUI1REM2NzExOUJCM0Q1MDAyQTg3OTAgLyogQWJzdHJhY3REYXRhYmFzZS5j
cHAgKi8sCiAJCQkJQjVCNURDNjgxMTlCQjNENTAwMkE4NzkwIC8qIEFic3RyYWN0RGF0YWJhc2Uu
aCAqLywKIAkJCQk1MTQxODVFRDBDRDY1RjA0MDA3NjNDOTkgLyogQ2hhbmdlVmVyc2lvbldyYXBw
ZXIuY3BwICovLApAQCAtMTE0NDksMTIgKzExNDU1LDExIEBACiAJCQkJQzU4NUE2OTkxMUQ0RkIz
RDAwNEMzRTRCIC8qIElEQkFueS5oICovLAogCQkJCUM1ODVBNjlBMTFENEZCM0QwMDRDM0U0QiAv
KiBJREJBbnkuaWRsICovLAogCQkJCUM1ODVBNjlCMTFENEZCM0QwMDRDM0U0QiAvKiBJREJDYWxs
YmFja3MuaCAqLywKLQkJCQk4MUJFMjA5MjExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29yLmNw
cCAqLywKKwkJCQk4MUJFMjA5MjExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29yLmggKi8sCiAJ
CQkJODFCRTIwOTIxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvci5oICovLAogCQkJCTgxQkUy
MDlDMTFGNEFCQkQwMDkxNURGQSAvKiBJREJDdXJzb3IuaWRsICovLAogCQkJCTgxQkUyMDkzMTFG
NEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgKi8sCi0JCQkJODFCRTIw
OTQxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvckJhY2tlbmRJbXBsLmggKi8sCi0JCQkJODFC
RTIwOTUxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCAqLywK
KwkJCQk4MUJFMjA5NDExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZS5oICovLAogCQkJCUM1ODVBNkEzMTFENEZCM0QwMDRDM0U0QiAvKiBJREJEYXRhYmFzZS5jcHAg
Ki8sCiAJCQkJQzU4NUE2QTQxMUQ0RkIzRDAwNEMzRTRCIC8qIElEQkRhdGFiYXNlLmggKi8sCiAJ
CQkJQzU4NUE2QTUxMUQ0RkIzRDAwNEMzRTRCIC8qIElEQkRhdGFiYXNlLmlkbCAqLywKQEAgLTE1
Mjk4LDYgKzE1MzAzLDggQEAKIAkJCQlCMjIyNzhDNDBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHUGF0
aEVsZW1lbnQuaWRsICovLAogCQkJCTg0NzZDOUVEMTFERjZBNTgwMDU1NUIwMiAvKiBTVkdQYXRo
UGFyc2VyLmNwcCAqLywKIAkJCQk4NDc2QzlFRTExREY2QTU4MDA1NTVCMDIgLyogU1ZHUGF0aFBh
cnNlci5oICovLAorCQkJCTg0MzAwQkQxMTIwQzlBNzEwMDIxOTU0QSAvKiBTVkdQYXRoUGFyc2Vy
RmFjdG9yeS5jcHAgKi8sCisJCQkJODQzMDBCRDIxMjBDOUE3MTAwMjE5NTRBIC8qIFNWR1BhdGhQ
YXJzZXJGYWN0b3J5LmggKi8sCiAJCQkJQThCQ0ZEMDQxMjBBMDQ2MTAwQjVGMTIyIC8qIFNWR1Bh
dGhTZWcuY3BwICovLAogCQkJCUIyMjI3OEM1MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQYXRoU2Vn
LmggKi8sCiAJCQkJQjIyMjc4QzYwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhdGhTZWcuaWRsICov
LApAQCAtMTUzNDUsNiArMTUzNTIsOSBAQAogCQkJCUIyMjI3OEVFMEQwMEJGMjEwMDcxQjc4MiAv
KiBTVkdQYXRoU2VnTW92ZXRvLmggKi8sCiAJCQkJQjIyMjc4RUYwRDAwQkYyMTAwNzFCNzgyIC8q
IFNWR1BhdGhTZWdNb3ZldG9BYnMuaWRsICovLAogCQkJCUIyMjI3OEYwMEQwMEJGMjEwMDcxQjc4
MiAvKiBTVkdQYXRoU2VnTW92ZXRvUmVsLmlkbCAqLywKKwkJCQk4NDMwMEJENzEyMEM5QUQ0MDAy
MTk1NEEgLyogU1ZHUGF0aFNvdXJjZS5oICovLAorCQkJCTg0MzAwQkQ5MTIwQzlBRUQwMDIxOTU0
QSAvKiBTVkdQYXRoU3RyaW5nU291cmNlLmNwcCAqLywKKwkJCQk4NDMwMEJENTEyMEM5QUFDMDAy
MTk1NEEgLyogU1ZHUGF0aFN0cmluZ1NvdXJjZS5oICovLAogCQkJCUIyMjI3OEYxMEQwMEJGMjEw
MDcxQjc4MiAvKiBTVkdQYXR0ZXJuRWxlbWVudC5jcHAgKi8sCiAJCQkJQjIyMjc4RjIwRDAwQkYy
MTAwNzFCNzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50LmggKi8sCiAJCQkJQjIyMjc4RjMwRDAwQkYy
MTAwNzFCNzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50LmlkbCAqLywKQEAgLTE4Njg1LDggKzE4Njk1
LDcgQEAKIAkJCQlDNTg1QTY2MzExRDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxpdGll
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU4NUE2Q0YxMUQ0RkIzRDAwNEMzRTRCIC8qIElEQkNh
bGxiYWNrcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODFCRTIwOTcxMUY0QUI4RDAwOTE1REZBIC8q
IElEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODFCRTIwOTkxMUY0QUI4RDAwOTE1REZB
IC8qIElEQkN1cnNvckJhY2tlbmRJbXBsLmggaW4gSGVhZGVycyAqLywKLQkJCQk4MUJFMjA5QjEx
RjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJODFCRTIwOTkxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvckJhY2tlbmRJbnRl
cmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1ODVBNkQ4MTFENEZCM0QwMDRDM0U0QiAvKiBJ
REJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjYxNzYyNjIxMjAzNDkwODAwRUY5MTE0
IC8qIElEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUI2MTc2MjU0
MTIwMzM3NEYwMEVGOTExNCAvKiBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTk3OTgsNiArMTk4MDcsNyBAQAogCQkJCTg0NzZDOUVDMTFERjZBMjkwMDU1
NUIwMiAvKiBTVkdQYXRoQ29uc3VtZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTU5MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3
NkM5RjAxMURGNkE1ODAwNTU1QjAyIC8qIFNWR1BhdGhQYXJzZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTg0MzAwQkQ0MTIwQzlBNzEwMDIxOTU0QSAvKiBTVkdQYXRoUGFyc2VyRmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBNUIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWcu
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTVFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRo
U2VnQXJjLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E2MjBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHUGF0aFNlZ0Nsb3NlUGF0aC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xOTgxMSw2ICsxOTgyMSw4
IEBACiAJCQkJQjIyMjdBODEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdMaXN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NDc2QzlFNjExREY2QTBCMDA1NTVCMDIgLyogU1ZHUGF0aFNlZ0xp
c3RCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E4NDBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHUGF0aFNlZ01vdmV0by5oIGluIEhlYWRlcnMgKi8sCisJCQkJODQzMDBCRDgxMjBDOUFE
NDAwMjE5NTRBIC8qIFNWR1BhdGhTb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTg0MzAwQkQ2
MTIwQzlBQUMwMDIxOTU0QSAvKiBTVkdQYXRoU3RyaW5nU291cmNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyN0E4ODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0dGVybkVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyNTU5OTk1MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdQb2ludExpZ2h0
U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E4QzBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHUG9pbnRMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTIxMTI5LDcgKzIxMTQxLDcgQEAKIAkJ
CQk1MUUxRUNDMDBDOTFDOTA0MDBEQzI1NUIgLyogSWNvblJlY29yZC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDNTg1QTZDQzExRDRGQjNEMDA0QzNFNEIgLyogSURCQW55LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUM1ODVBNjYyMTFENEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVz
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTgxQkUyMDk4MTFGNEFCOEQwMDkxNURGQSAvKiBJREJD
dXJzb3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODFCRTIwOTgxMUY0QUI4RDAwOTE1REZBIC8q
IElEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgxQkUyMDk4MTFG
NEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCNjkxQzFGOTEyMDZENEEwMDAyNUQ5ODAgLyogSURCRGF0YWJhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQzU4NUE2RDUxMUQ0RkIzRDAwNEMzRTRCIC8qIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yMjI1Nyw2ICsyMjI2OSw3IEBACiAJCQkJODQ3
NkM5RUExMURGNkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyMjI3QTU4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NDc2QzlFRjExREY2QTU4MDA1NTVCMDIgLyogU1ZHUGF0aFBhcnNl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4NDMwMEJEMzEyMEM5QTcxMDAyMTk1NEEgLyogU1ZH
UGF0aFBhcnNlckZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThCQ0ZEMDUxMjBBMDQ2
MTAwQjVGMTIyIC8qIFNWR1BhdGhTZWcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBNUQw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdBcmMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjIyMjdBNjEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdDbG9zZVBhdGguY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0yMjI3MCw2ICsyMjI4Myw3IEBACiAJCQkJQjIyMjdBODAwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR1BhdGhTZWdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0NzZDOUU1
MTFERjZBMEIwMDU1NUIwMiAvKiBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjIyMjdBODMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdNb3ZldG8uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJODQzMDBCREExMjBDOUFFRDAwMjE5NTRBIC8qIFNWR1BhdGhT
dHJpbmdTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBODcwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QThC
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2ludExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjIyMjdBOEUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BvbHlFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLApJbmRleDogV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR0FsbEluT25lLmNwcAkocmV2aXNpb24gNjQ4NzMpCisrKyBXZWJDb3JlL3N2
Zy9TVkdBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsNyBAQAogI2lu
Y2x1ZGUgIlNWR1BhdGhCdWlsZGVyLmNwcCIKICNpbmNsdWRlICJTVkdQYXRoRWxlbWVudC5jcHAi
CiAjaW5jbHVkZSAiU1ZHUGF0aFBhcnNlci5jcHAiCisjaW5jbHVkZSAiU1ZHUGF0aFBhcnNlckZh
Y3RvcnkuY3BwIgogI2luY2x1ZGUgIlNWR1BhdGhTZWcuY3BwIgogI2luY2x1ZGUgIlNWR1BhdGhT
ZWdBcmMuY3BwIgogI2luY2x1ZGUgIlNWR1BhdGhTZWdDbG9zZVBhdGguY3BwIgpAQCAtMTIzLDYg
KzEyNCw3IEBACiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3QuY3BwIgogI2luY2x1ZGUgIlNWR1Bh
dGhTZWdMaXN0QnVpbGRlci5jcHAiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ01vdmV0by5jcHAiCisj
aW5jbHVkZSAiU1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAiCiAjaW5jbHVkZSAiU1ZHUGF0dGVybkVs
ZW1lbnQuY3BwIgogI2luY2x1ZGUgIlNWR1BvaW50TGlzdC5jcHAiCiAjaW5jbHVkZSAiU1ZHUG9s
eUVsZW1lbnQuY3BwIgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAkocmV2aXNpb24g
NjQ4NzMpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNs
dWRlICJTVkdDb2xvci5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgorI2luY2x1
ZGUgIlNWR1BhdGhQYXJzZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3QuaCIK
LSNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdEJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdQb2ludExp
c3QuaCIKICNpbmNsdWRlIDxtYXRoLmg+CiAKQEAgLTE5MCwxMSArMTkwLDEwIEBAIGJvb2wgU1ZH
QW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmQKICAgICAgICAgfQogICAgIH0gZWxzZSBp
ZiAobV9wcm9wZXJ0eVR5cGUgPT0gUGF0aFByb3BlcnR5KSB7CiAgICAgICAgIG1fZnJvbVBhdGgg
PSBTVkdQYXRoU2VnTGlzdDo6Y3JlYXRlKFNWR05hbWVzOjpkQXR0cik7Ci0gICAgICAgIFNWR1Bh
dGhTZWdMaXN0QnVpbGRlciBmcm9tUGFyc2VyKG1fZnJvbVBhdGguZ2V0KCkpOwotICAgICAgICBp
ZiAoZnJvbVBhcnNlci5idWlsZChmcm9tU3RyaW5nLCBVbmFsdGVyZWRQYXJzaW5nKSkgeworICAg
ICAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSogZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5
OjpzZWxmKCk7CisgICAgICAgIGlmIChmYWN0b3J5LT5idWlsZFNWR1BhdGhTZWdMaXN0RnJvbVN0
cmluZyhmcm9tU3RyaW5nLCBtX2Zyb21QYXRoLmdldCgpLCBVbmFsdGVyZWRQYXJzaW5nKSkgewog
ICAgICAgICAgICAgbV90b1BhdGggPSBTVkdQYXRoU2VnTGlzdDo6Y3JlYXRlKFNWR05hbWVzOjpk
QXR0cik7Ci0gICAgICAgICAgICBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIgdG9QYXJzZXIobV90b1Bh
dGguZ2V0KCkpOwotICAgICAgICAgICAgaWYgKHRvUGFyc2VyLmJ1aWxkKHRvU3RyaW5nLCBVbmFs
dGVyZWRQYXJzaW5nKSkKKyAgICAgICAgICAgIGlmIChmYWN0b3J5LT5idWlsZFNWR1BhdGhTZWdM
aXN0RnJvbVN0cmluZyh0b1N0cmluZywgbV90b1BhdGguZ2V0KCksIFVuYWx0ZXJlZFBhcnNpbmcp
KQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIG1fZnJv
bVBhdGguY2xlYXIoKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5j
cHAJKHJldmlzaW9uIDY0ODczKQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiU1ZHRWxl
bWVudEluc3RhbmNlLmgiCiAjaW5jbHVkZSAiU1ZHTVBhdGhFbGVtZW50LmgiCiAjaW5jbHVkZSAi
U1ZHUGFyc2VyVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiU1ZHUGF0aEJ1aWxkZXIuaCIKKyNpbmNs
dWRlICJTVkdQYXRoUGFyc2VyRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNWR1BhdGhFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgPG1hdGguaD4KQEAgLTg3
LDkgKzg3LDggQEAgdm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6cGFyc2VNYXBwZQogewog
ICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnBhdGhBdHRyKSB7CiAgICAgICAgIG1f
cGF0aCA9IFBhdGgoKTsKLSAgICAgICAgU1ZHUGF0aEJ1aWxkZXIgYnVpbGRlcihtX3BhdGgpOwot
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFuYWx5c2UgdGhlIHJldHVybmVkIHZhbHVlLgot
ICAgICAgICBidWlsZGVyLmJ1aWxkKGF0dHItPnZhbHVlKCkpOworICAgICAgICBTVkdQYXRoUGFy
c2VyRmFjdG9yeSogZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7CisgICAg
ICAgIGZhY3RvcnktPmJ1aWxkUGF0aEZyb21TdHJpbmcoYXR0ci0+dmFsdWUoKSwgbV9wYXRoKTsK
ICAgICB9IGVsc2UKICAgICAgICAgU1ZHQW5pbWF0aW9uRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUoYXR0cik7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5jcHAJKHJldmlzaW9uIDY0
ODczKQorKysgV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIlNWR0ZvbnRFbGVtZW50LmgiCiAjaW5jbHVkZSAi
U1ZHRm9udEZhY2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKLSNpbmNsdWRlICJT
VkdQYXRoQnVpbGRlci5oIgorI2luY2x1ZGUgIlNWR1BhdGhQYXJzZXJGYWN0b3J5LmgiCiAjaW5j
bHVkZSAiU2ltcGxlRm9udERhdGEuaCIKICNpbmNsdWRlICJYTUxOYW1lcy5oIgogCkBAIC0xMDIs
MTAgKzEwMiw4IEBAIHN0YXRpYyBpbmxpbmUgU1ZHR2x5cGhJZGVudGlmaWVyOjpPcmllbnQKIHN0
YXRpYyBpbmxpbmUgUGF0aCBwYXJzZVBhdGhEYXRhKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
CiB7CiAgICAgUGF0aCByZXN1bHQ7Ci0gICAgU1ZHUGF0aEJ1aWxkZXIgYnVpbGRlcihyZXN1bHQp
OwotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYW5hbHlzZSB0aGUgcmV0dXJuZWQgdmFsdWUuCi0g
ICAgYnVpbGRlci5idWlsZCh2YWx1ZSk7Ci0KKyAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSogZmFj
dG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7CisgICAgZmFjdG9yeS0+YnVpbGRQ
YXRoRnJvbVN0cmluZyh2YWx1ZSwgcmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHUGF0aEJ1aWxkZXIuY3BwCShyZXZpc2lvbiA2NDg3MykKKysrIFdlYkNvcmUvc3Zn
L1NWR1BhdGhCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNDkgKzI2LDQ1IEBACiAj
aWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdQYXRoQnVpbGRlci5oIgogCi0jaW5jbHVkZSAi
U1ZHUGF0aFBhcnNlci5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR1BhdGhCdWlsZGVy
OjpTVkdQYXRoQnVpbGRlcihQYXRoJiBwYXRoKQotICAgIDogbV9wYXRoKHBhdGgpCi17Ci19Ci0K
LWJvb2wgU1ZHUGF0aEJ1aWxkZXI6OmJ1aWxkKGNvbnN0IFN0cmluZyYgZCkKK1NWR1BhdGhCdWls
ZGVyOjpTVkdQYXRoQnVpbGRlcigpCisgICAgOiBtX3BhdGgoMCkKIHsKLSAgICBTVkdQYXRoUGFy
c2VyIHBhcnNlcih0aGlzKTsKLSAgICByZXR1cm4gcGFyc2VyLnBhcnNlUGF0aERhdGFTdHJpbmco
ZCwgdHJ1ZSk7CiB9CiAKLXZvaWQgU1ZHUGF0aEJ1aWxkZXI6Om1vdmVUbyhjb25zdCBGbG9hdFBv
aW50JiBwb2ludCwgYm9vbCBjbG9zZWQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQordm9pZCBT
VkdQYXRoQnVpbGRlcjo6bW92ZVRvKGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBib29s
IGNsb3NlZCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7Ci0gICAgbV9jdXJyZW50ID0gbW9k
ZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzID8gcG9pbnQgOiBtX2N1cnJlbnQgKyBwb2ludDsKKyAg
ICBBU1NFUlQobV9wYXRoKTsKKyAgICBtX2N1cnJlbnQgPSBtb2RlID09IEFic29sdXRlQ29vcmRp
bmF0ZXMgPyB0YXJnZXRQb2ludCA6IG1fY3VycmVudCArIHRhcmdldFBvaW50OwogICAgIGlmIChj
bG9zZWQpCi0gICAgICAgIG1fcGF0aC5jbG9zZVN1YnBhdGgoKTsKLSAgICBtX3BhdGgubW92ZVRv
KG1fY3VycmVudCk7CisgICAgICAgIG1fcGF0aC0+Y2xvc2VTdWJwYXRoKCk7CisgICAgbV9wYXRo
LT5tb3ZlVG8obV9jdXJyZW50KTsKIH0KIAotdm9pZCBTVkdQYXRoQnVpbGRlcjo6bGluZVRvKGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKK3ZvaWQgU1ZH
UGF0aEJ1aWxkZXI6OmxpbmVUbyhjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENv
b3JkaW5hdGVNb2RlIG1vZGUpCiB7Ci0gICAgbV9jdXJyZW50ID0gbW9kZSA9PSBBYnNvbHV0ZUNv
b3JkaW5hdGVzID8gcG9pbnQgOiBtX2N1cnJlbnQgKyBwb2ludDsKLSAgICBtX3BhdGguYWRkTGlu
ZVRvKG1fY3VycmVudCk7CisgICAgQVNTRVJUKG1fcGF0aCk7CisgICAgbV9jdXJyZW50ID0gbW9k
ZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzID8gdGFyZ2V0UG9pbnQgOiBtX2N1cnJlbnQgKyB0YXJn
ZXRQb2ludDsKKyAgICBtX3BhdGgtPmFkZExpbmVUbyhtX2N1cnJlbnQpOwogfQogCi12b2lkIFNW
R1BhdGhCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludDIsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBQYXRoQ29vcmRp
bmF0ZU1vZGUgbW9kZSkKK3ZvaWQgU1ZHUGF0aEJ1aWxkZXI6OmN1cnZlVG9DdWJpYyhjb25zdCBG
bG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MiwgY29uc3QgRmxvYXRQ
b2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogeworICAgIEFTU0VS
VChtX3BhdGgpOwogICAgIGlmIChtb2RlID09IFJlbGF0aXZlQ29vcmRpbmF0ZXMpIHsKLSAgICAg
ICAgbV9wYXRoLmFkZEJlemllckN1cnZlVG8obV9jdXJyZW50ICsgcG9pbnQxLCBtX2N1cnJlbnQg
KyBwb2ludDIsIG1fY3VycmVudCArIHBvaW50KTsKLSAgICAgICAgbV9jdXJyZW50ICs9IHBvaW50
OworICAgICAgICBtX3BhdGgtPmFkZEJlemllckN1cnZlVG8obV9jdXJyZW50ICsgcG9pbnQxLCBt
X2N1cnJlbnQgKyBwb2ludDIsIG1fY3VycmVudCArIHRhcmdldFBvaW50KTsKKyAgICAgICAgbV9j
dXJyZW50ICs9IHRhcmdldFBvaW50OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fY3VycmVudCA9
IHBvaW50OwotICAgICAgICBtX3BhdGguYWRkQmV6aWVyQ3VydmVUbyhwb2ludDEsIHBvaW50Miwg
bV9jdXJyZW50KTsKKyAgICAgICAgbV9jdXJyZW50ID0gdGFyZ2V0UG9pbnQ7CisgICAgICAgIG1f
cGF0aC0+YWRkQmV6aWVyQ3VydmVUbyhwb2ludDEsIHBvaW50MiwgbV9jdXJyZW50KTsKICAgICB9
ICAgIAogfQogCiB2b2lkIFNWR1BhdGhCdWlsZGVyOjpjbG9zZVBhdGgoKQogewotICAgIG1fcGF0
aC5jbG9zZVN1YnBhdGgoKTsKKyAgICBBU1NFUlQobV9wYXRoKTsKKyAgICBtX3BhdGgtPmNsb3Nl
U3VicGF0aCgpOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoQnVpbGRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhCdWlsZGVyLmgJKHJldmlzaW9uIDY0ODcz
KQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aEJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
MTAgKzMxLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHUGF0aEJ1aWxk
ZXIgOiBwcml2YXRlIFNWR1BhdGhDb25zdW1lciB7CitjbGFzcyBTVkdQYXRoQnVpbGRlciA6IHB1
YmxpYyBTVkdQYXRoQ29uc3VtZXIgewogcHVibGljOgotICAgIFNWR1BhdGhCdWlsZGVyKFBhdGgm
KTsKLSAgICBib29sIGJ1aWxkKGNvbnN0IFN0cmluZyYpOworICAgIFNWR1BhdGhCdWlsZGVyKCk7
CisKKyAgICB2b2lkIHNldEN1cnJlbnRQYXRoKFBhdGgqIHBhdGgpIHsgbV9wYXRoID0gcGF0aDsg
fQogCiBwcml2YXRlOgogICAgIC8vIFVzZWQgaW4gVW5hbHRlcmVkUGFyaXNuZy9Ob3JtYWxpemVk
UGFyc2luZyBtb2Rlcy4KQEAgLTUwLDkgKzUxLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgY3VydmVUb0N1YmljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50
JiwgUGF0aENvb3JkaW5hdGVNb2RlKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmly
dHVhbCB2b2lkIGN1cnZlVG9RdWFkcmF0aWMoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0
UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgY3VydmVUb1F1YWRyYXRpY1Ntb290aChjb25zdCBGbG9hdFBvaW50Jiwg
UGF0aENvb3JkaW5hdGVNb2RlKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIGFyY1RvKGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBib29s
LCBib29sLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgYXJjVG8oZmxvYXQsIGZsb2F0LCBmbG9hdCwgYm9vbCwgYm9vbCwgY29u
c3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQogCi0gICAgUGF0aCYgbV9wYXRoOworICAgIFBhdGgqIG1fcGF0aDsKICAgICBGbG9hdFBv
aW50IG1fY3VycmVudDsKIH07CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhDb25zdW1lci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhDb25zdW1lci5oCShyZXZpc2lvbiA2
NDg3MykKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhDb25zdW1lci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw3IEBACiAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIkZsb2F0UG9pbnQu
aCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0zOSw3ICs0MCw3IEBAIGVudW0gUGF0aFBhcnNpbmdNb2RlIHsKICAgICBVbmFsdGVyZWRQ
YXJzaW5nCiB9OwogCi1jbGFzcyBTVkdQYXRoQ29uc3VtZXIgeworY2xhc3MgU1ZHUGF0aENvbnN1
bWVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKICAgICAvLyBVc2VkIGluIFVuYWx0
ZXJlZFBhcmlzbmcvTm9ybWFsaXplZFBhcnNpbmcgbW9kZXMuCiAgICAgdmlydHVhbCB2b2lkIG1v
dmVUbyhjb25zdCBGbG9hdFBvaW50JiwgYm9vbCBjbG9zZWQsIFBhdGhDb29yZGluYXRlTW9kZSkg
PSAwOwpAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGN1cnZlVG9D
dWJpY1Ntb290aChjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29y
ZGluYXRlTW9kZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJ2ZVRvUXVhZHJhdGljKGNvbnN0
IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoY29uc3QgRmxvYXRQb2lu
dCYsIFBhdGhDb29yZGluYXRlTW9kZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhcmNUbyhjb25z
dCBGbG9hdFBvaW50JiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJv
b2wgc3dlZXBGbGFnLCBQYXRoQ29vcmRpbmF0ZU1vZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
YXJjVG8oZmxvYXQsIGZsb2F0LCBmbG9hdCwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dlZXBG
bGFnLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSA9IDA7CiAKIHByb3Rl
Y3RlZDoKICAgICBTVkdQYXRoQ29uc3VtZXIoKSB7IH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1Bh
dGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5j
cHAJKHJldmlzaW9uIDY0ODczKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyUGF0aC5oIgog
I2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKKyNp
bmNsdWRlICJTVkdQYXRoUGFyc2VyRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNWR1BhdGhTZWdBcmMu
aCIKICNpbmNsdWRlICJTVkdQYXRoU2VnQ2xvc2VQYXRoLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNl
Z0N1cnZldG9DdWJpYy5oIgpAQCAtMTczLDggKzE3NCw4IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6
OnBhcnNlTWFwcGVkQXR0cmlidXQKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpk
QXR0cikgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwogICAgICAgICBwYXRoU2VnTGlzdCgp
LT5jbGVhcihlYyk7Ci0gICAgICAgIFNWR1BhdGhTZWdMaXN0QnVpbGRlciBwYXJzZXIocGF0aFNl
Z0xpc3QoKSk7Ci0gICAgICAgIGlmICghcGFyc2VyLmJ1aWxkKGF0dHItPnZhbHVlKCksIE5vcm1h
bGl6ZWRQYXJzaW5nKSkKKyAgICAgICAgU1ZHUGF0aFBhcnNlckZhY3RvcnkqIGZhY3RvcnkgPSBT
VkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpOworICAgICAgICBpZiAoIWZhY3RvcnktPmJ1aWxk
U1ZHUGF0aFNlZ0xpc3RGcm9tU3RyaW5nKGF0dHItPnZhbHVlKCksIHBhdGhTZWdMaXN0KCksIE5v
cm1hbGl6ZWRQYXJzaW5nKSkKICAgICAgICAgICAgIGRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVu
c2lvbnMoKS0+cmVwb3J0RXJyb3IoIlByb2JsZW0gcGFyc2luZyBkPVwiIiArIGF0dHItPnZhbHVl
KCkgKyAiXCIiKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6cGF0
aExlbmd0aEF0dHIpIHsKICAgICAgICAgc2V0UGF0aExlbmd0aEJhc2VWYWx1ZShhdHRyLT52YWx1
ZSgpLnRvRmxvYXQoKSk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmNwcAkocmV2aXNpb24gNjQ4NzMp
CisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcs
MTUgKzI3LDE0IEBACiAjaW5jbHVkZSAiU1ZHUGF0aFBhcnNlci5oIgogCiAjaW5jbHVkZSAiQWZm
aW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogc3RhdGljIGNvbnN0IGZsb2F0IGdPbmVPdmVyVGhyZWUg
PSAxIC8gMy5mOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR1BhdGhQYXJzZXI6OlNWR1Bh
dGhQYXJzZXIoU1ZHUGF0aENvbnN1bWVyKiBjb25zdW1lcikKLSAgICA6IG1fY29uc3VtZXIoY29u
c3VtZXIpCitTVkdQYXRoUGFyc2VyOjpTVkdQYXRoUGFyc2VyKCkKKyAgICA6IG1fY29uc3VtZXIo
MCkKIHsKIH0KIApAQCAtNDYsOSArNDUsOSBAQCBTVkdQYXRoUGFyc2VyOjp+U1ZHUGF0aFBhcnNl
cigpCiB2b2lkIFNWR1BhdGhQYXJzZXI6OnBhcnNlQ2xvc2VQYXRoU2VnbWVudCgpCiB7CiAgICAg
Ly8gUmVzZXQgbV9jdXJyZW50UG9pbnQgZm9yIHRoZSBuZXh0IHBhdGguCi0gICAgaWYgKG1fbm9y
bWFsaXplZCkKKyAgICBpZiAobV9wYXRoUGFyc2luZ01vZGUgPT0gTm9ybWFsaXplZFBhcnNpbmcp
CiAgICAgICAgIG1fY3VycmVudFBvaW50ID0gbV9zdWJQYXRoUG9pbnQ7Ci0gICAgbV9wYXRoQ2xv
c2VkID0gdHJ1ZTsKKyAgICBtX2Nsb3NlUGF0aCA9IHRydWU7CiAgICAgbV9jb25zdW1lci0+Y2xv
c2VQYXRoKCk7CiB9CiAKQEAgLTU2LDIwICs1NSwyMCBAQCBib29sIFNWR1BhdGhQYXJzZXI6OnBh
cnNlTW92ZVRvU2VnbWVudCgpCiB7CiAgICAgZmxvYXQgdG9YOwogICAgIGZsb2F0IHRvWTsKLSAg
ICBpZiAoIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwgdG9YKSB8fCAhcGFyc2VOdW1iZXIobV9w
dHIsIG1fZW5kLCB0b1kpKQorICAgIGlmICghbV9zb3VyY2UtPnBhcnNlRmxvYXQodG9YKSB8fCAh
bV9zb3VyY2UtPnBhcnNlRmxvYXQodG9ZKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
RmxvYXRQb2ludCB0b1BvaW50KHRvWCwgdG9ZKTsKLSAgICBpZiAobV9ub3JtYWxpemVkKSB7Cisg
ICAgaWYgKG1fcGF0aFBhcnNpbmdNb2RlID09IE5vcm1hbGl6ZWRQYXJzaW5nKSB7CiAgICAgICAg
IGlmIChtX21vZGUgPT0gUmVsYXRpdmVDb29yZGluYXRlcykKICAgICAgICAgICAgIG1fY3VycmVu
dFBvaW50ICs9IHRvUG9pbnQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fY3VycmVudFBv
aW50ID0gdG9Qb2ludDsKICAgICAgICAgbV9zdWJQYXRoUG9pbnQgPSBtX2N1cnJlbnRQb2ludDsK
LSAgICAgICAgbV9jb25zdW1lci0+bW92ZVRvKG1fY3VycmVudFBvaW50LCBtX3BhdGhDbG9zZWQs
IEFic29sdXRlQ29vcmRpbmF0ZXMpOworICAgICAgICBtX2NvbnN1bWVyLT5tb3ZlVG8obV9jdXJy
ZW50UG9pbnQsIG1fY2xvc2VQYXRoLCBBYnNvbHV0ZUNvb3JkaW5hdGVzKTsKICAgICB9IGVsc2UK
LSAgICAgICAgbV9jb25zdW1lci0+bW92ZVRvKHRvUG9pbnQsIG1fcGF0aENsb3NlZCwgbV9tb2Rl
KTsKLSAgICBtX3BhdGhDbG9zZWQgPSBmYWxzZTsKKyAgICAgICAgbV9jb25zdW1lci0+bW92ZVRv
KHRvUG9pbnQsIG1fY2xvc2VQYXRoLCBtX21vZGUpOworICAgIG1fY2xvc2VQYXRoID0gZmFsc2U7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTc3LDExICs3NiwxMSBAQCBib29sIFNWR1BhdGhQ
YXJzZXI6OnBhcnNlTGluZVRvU2VnbWVudCgpCiB7CiAgICAgZmxvYXQgdG9YOwogICAgIGZsb2F0
IHRvWTsKLSAgICBpZiAoIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwgdG9YKSB8fCAhcGFyc2VO
dW1iZXIobV9wdHIsIG1fZW5kLCB0b1kpKQorICAgIGlmICghbV9zb3VyY2UtPnBhcnNlRmxvYXQo
dG9YKSB8fCAhbV9zb3VyY2UtPnBhcnNlRmxvYXQodG9ZKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgRmxvYXRQb2ludCB0b1BvaW50KHRvWCwgdG9ZKTsKLSAgICBpZiAobV9ub3JtYWxp
emVkKSB7CisgICAgaWYgKG1fcGF0aFBhcnNpbmdNb2RlID09IE5vcm1hbGl6ZWRQYXJzaW5nKSB7
CiAgICAgICAgIGlmIChtX21vZGUgPT0gUmVsYXRpdmVDb29yZGluYXRlcykKICAgICAgICAgICAg
IG1fY3VycmVudFBvaW50ICs9IHRvUG9pbnQ7CiAgICAgICAgIGVsc2UKQEAgLTk1LDEwICs5NCwx
MCBAQCBib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlTGluZVRvU2VnbWVudCgpCiBib29sIFNWR1Bh
dGhQYXJzZXI6OnBhcnNlTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQoKQogewogICAgIGZsb2F0IHRv
WDsKLSAgICBpZiAoIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwgdG9YKSkKKyAgICBpZiAoIW1f
c291cmNlLT5wYXJzZUZsb2F0KHRvWCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlm
IChtX25vcm1hbGl6ZWQpIHsKKyAgICBpZiAobV9wYXRoUGFyc2luZ01vZGUgPT0gTm9ybWFsaXpl
ZFBhcnNpbmcpIHsKICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZWxhdGl2ZUNvb3JkaW5hdGVzKQog
ICAgICAgICAgICAgbV9jdXJyZW50UG9pbnQubW92ZSh0b1gsIDApOwogICAgICAgICBlbHNlCkBA
IC0xMTIsMTAgKzExMSwxMCBAQCBib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlTGluZVRvSG9yaXpv
bnRhCiBib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlTGluZVRvVmVydGljYWxTZWdtZW50KCkKIHsK
ICAgICBmbG9hdCB0b1k7Ci0gICAgaWYgKCFwYXJzZU51bWJlcihtX3B0ciwgbV9lbmQsIHRvWSkp
CisgICAgaWYgKCFtX3NvdXJjZS0+cGFyc2VGbG9hdCh0b1kpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBpZiAobV9ub3JtYWxpemVkKSB7CisgICAgaWYgKG1fcGF0aFBhcnNpbmdNb2Rl
ID09IE5vcm1hbGl6ZWRQYXJzaW5nKSB7CiAgICAgICAgIGlmIChtX21vZGUgPT0gUmVsYXRpdmVD
b29yZGluYXRlcykKICAgICAgICAgICAgIG1fY3VycmVudFBvaW50Lm1vdmUoMCwgdG9ZKTsKICAg
ICAgICAgZWxzZQpAQCAtMTM0LDI5ICsxMzMsMjkgQEAgYm9vbCBTVkdQYXRoUGFyc2VyOjpwYXJz
ZUN1cnZlVG9DdWJpY1NlZwogICAgIGZsb2F0IHkyOwogICAgIGZsb2F0IHRvWDsKICAgICBmbG9h
dCB0b1k7IAotICAgIGlmICghcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5kLCB4MSkKLSAgICAgICAg
fHwgIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwgeTEpCi0gICAgICAgIHx8ICFwYXJzZU51bWJl
cihtX3B0ciwgbV9lbmQsIHgyKQotICAgICAgICB8fCAhcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5k
LCB5MikKLSAgICAgICAgfHwgIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwgdG9YKQotICAgICAg
ICB8fCAhcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5kLCB0b1kpKQorICAgIGlmICghbV9zb3VyY2Ut
PnBhcnNlRmxvYXQoeDEpCisgICAgICAgIHx8ICFtX3NvdXJjZS0+cGFyc2VGbG9hdCh5MSkKKyAg
ICAgICAgfHwgIW1fc291cmNlLT5wYXJzZUZsb2F0KHgyKQorICAgICAgICB8fCAhbV9zb3VyY2Ut
PnBhcnNlRmxvYXQoeTIpCisgICAgICAgIHx8ICFtX3NvdXJjZS0+cGFyc2VGbG9hdCh0b1gpCisg
ICAgICAgIHx8ICFtX3NvdXJjZS0+cGFyc2VGbG9hdCh0b1kpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBGbG9hdFBvaW50IHBvaW50MSh4MSwgeTEpOwogICAgIEZsb2F0UG9pbnQgcG9p
bnQyKHgyLCB5Mik7Ci0gICAgRmxvYXRQb2ludCBwb2ludDModG9YLCB0b1kpOwotICAgIGlmICht
X25vcm1hbGl6ZWQpIHsKKyAgICBGbG9hdFBvaW50IHRhcmdldFBvaW50KHRvWCwgdG9ZKTsKKyAg
ICBpZiAobV9wYXRoUGFyc2luZ01vZGUgPT0gTm9ybWFsaXplZFBhcnNpbmcpIHsKICAgICAgICAg
aWYgKG1fbW9kZSA9PSBSZWxhdGl2ZUNvb3JkaW5hdGVzKSB7CiAgICAgICAgICAgICBwb2ludDEg
Kz0gbV9jdXJyZW50UG9pbnQ7CiAgICAgICAgICAgICBwb2ludDIgKz0gbV9jdXJyZW50UG9pbnQ7
Ci0gICAgICAgICAgICBwb2ludDMgKz0gbV9jdXJyZW50UG9pbnQ7CisgICAgICAgICAgICB0YXJn
ZXRQb2ludCArPSBtX2N1cnJlbnRQb2ludDsKICAgICAgICAgfQotICAgICAgICBtX2NvbnN1bWVy
LT5jdXJ2ZVRvQ3ViaWMocG9pbnQxLCBwb2ludDIsIHBvaW50MywgQWJzb2x1dGVDb29yZGluYXRl
cyk7CisgICAgICAgIG1fY29uc3VtZXItPmN1cnZlVG9DdWJpYyhwb2ludDEsIHBvaW50MiwgdGFy
Z2V0UG9pbnQsIEFic29sdXRlQ29vcmRpbmF0ZXMpOwogCiAgICAgICAgIG1fY29udHJvbFBvaW50
ID0gcG9pbnQyOwotICAgICAgICBtX2N1cnJlbnRQb2ludCA9IHBvaW50MzsKKyAgICAgICAgbV9j
dXJyZW50UG9pbnQgPSB0YXJnZXRQb2ludDsKICAgICB9IGVsc2UKLSAgICAgICAgbV9jb25zdW1l
ci0+Y3VydmVUb0N1YmljKHBvaW50MSwgcG9pbnQyLCBwb2ludDMsIG1fbW9kZSk7CisgICAgICAg
IG1fY29uc3VtZXItPmN1cnZlVG9DdWJpYyhwb2ludDEsIHBvaW50MiwgdGFyZ2V0UG9pbnQsIG1f
bW9kZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE2NiwzNSArMTY1LDM1IEBAIGJvb2wg
U1ZHUGF0aFBhcnNlcjo6cGFyc2VDdXJ2ZVRvQ3ViaWNTbW8KICAgICBmbG9hdCB5MjsKICAgICBm
bG9hdCB0b1g7CiAgICAgZmxvYXQgdG9ZOyAKLSAgICBpZiAoIXBhcnNlTnVtYmVyKG1fcHRyLCBt
X2VuZCwgeDIpCi0gICAgICAgIHx8ICFwYXJzZU51bWJlcihtX3B0ciwgbV9lbmQsIHkyKQotICAg
ICAgICB8fCAhcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5kLCB0b1gpCi0gICAgICAgIHx8ICFwYXJz
ZU51bWJlcihtX3B0ciwgbV9lbmQsIHRvWSkpCisgICAgaWYgKCFtX3NvdXJjZS0+cGFyc2VGbG9h
dCh4MikKKyAgICAgICAgfHwgIW1fc291cmNlLT5wYXJzZUZsb2F0KHkyKQorICAgICAgICB8fCAh
bV9zb3VyY2UtPnBhcnNlRmxvYXQodG9YKQorICAgICAgICB8fCAhbV9zb3VyY2UtPnBhcnNlRmxv
YXQodG9ZKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKG1fbGFzdENvbW1hbmQg
IT0gJ2MnCi0gICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gJ0MnCi0gICAgICAgICYmIG1fbGFz
dENvbW1hbmQgIT0gJ3MnCi0gICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gJ1MnKQorICAgIGlm
IChtX2xhc3RDb21tYW5kICE9IFBhdGhTZWdDdXJ2ZVRvQ3ViaWNBYnMKKyAgICAgICAgJiYgbV9s
YXN0Q29tbWFuZCAhPSBQYXRoU2VnQ3VydmVUb0N1YmljUmVsCisgICAgICAgICYmIG1fbGFzdENv
bW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aEFicworICAgICAgICAmJiBtX2xhc3RD
b21tYW5kICE9IFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9vdGhSZWwpCiAgICAgICAgIG1fY29udHJv
bFBvaW50ID0gbV9jdXJyZW50UG9pbnQ7CiAKICAgICBGbG9hdFBvaW50IHBvaW50Mih4MiwgeTIp
OwotICAgIEZsb2F0UG9pbnQgcG9pbnQzKHRvWCwgdG9ZKTsKLSAgICBpZiAobV9ub3JtYWxpemVk
KSB7CisgICAgRmxvYXRQb2ludCB0YXJnZXRQb2ludCh0b1gsIHRvWSk7CisgICAgaWYgKG1fcGF0
aFBhcnNpbmdNb2RlID09IE5vcm1hbGl6ZWRQYXJzaW5nKSB7CiAgICAgICAgIEZsb2F0UG9pbnQg
cG9pbnQxID0gbV9jdXJyZW50UG9pbnQ7CiAgICAgICAgIHBvaW50MS5zY2FsZSgyLCAyKTsKICAg
ICAgICAgcG9pbnQxLm1vdmUoLW1fY29udHJvbFBvaW50LngoKSwgLW1fY29udHJvbFBvaW50Lnko
KSk7CiAgICAgICAgIGlmIChtX21vZGUgPT0gUmVsYXRpdmVDb29yZGluYXRlcykgewogICAgICAg
ICAgICAgcG9pbnQyICs9IG1fY3VycmVudFBvaW50OwotICAgICAgICAgICAgcG9pbnQzICs9IG1f
Y3VycmVudFBvaW50OworICAgICAgICAgICAgdGFyZ2V0UG9pbnQgKz0gbV9jdXJyZW50UG9pbnQ7
CiAgICAgICAgIH0KIAotICAgICAgICBtX2NvbnN1bWVyLT5jdXJ2ZVRvQ3ViaWMocG9pbnQxLCBw
b2ludDIsIHBvaW50MywgQWJzb2x1dGVDb29yZGluYXRlcyk7CisgICAgICAgIG1fY29uc3VtZXIt
PmN1cnZlVG9DdWJpYyhwb2ludDEsIHBvaW50MiwgdGFyZ2V0UG9pbnQsIEFic29sdXRlQ29vcmRp
bmF0ZXMpOwogCiAgICAgICAgIG1fY29udHJvbFBvaW50ID0gcG9pbnQyOwotICAgICAgICBtX2N1
cnJlbnRQb2ludCA9IHBvaW50MzsKKyAgICAgICAgbV9jdXJyZW50UG9pbnQgPSB0YXJnZXRQb2lu
dDsKICAgICB9IGVsc2UKLSAgICAgICAgbV9jb25zdW1lci0+Y3VydmVUb0N1YmljU21vb3RoKHBv
aW50MiwgcG9pbnQzLCBtX21vZGUpOworICAgICAgICBtX2NvbnN1bWVyLT5jdXJ2ZVRvQ3ViaWNT
bW9vdGgocG9pbnQyLCB0YXJnZXRQb2ludCwgbV9tb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtMjA0LDMzICsyMDMsMzMgQEAgYm9vbCBTVkdQYXRoUGFyc2VyOjpwYXJzZUN1cnZlVG9R
dWFkcmF0aQogICAgIGZsb2F0IHkxOwogICAgIGZsb2F0IHRvWDsKICAgICBmbG9hdCB0b1k7Ci0g
ICAgaWYgKCFwYXJzZU51bWJlcihtX3B0ciwgbV9lbmQsIHgxKQotICAgICAgICB8fCAhcGFyc2VO
dW1iZXIobV9wdHIsIG1fZW5kLCB5MSkKLSAgICAgICAgfHwgIXBhcnNlTnVtYmVyKG1fcHRyLCBt
X2VuZCwgdG9YKQotICAgICAgICB8fCAhcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5kLCB0b1kpKQor
ICAgIGlmICghbV9zb3VyY2UtPnBhcnNlRmxvYXQoeDEpCisgICAgICAgIHx8ICFtX3NvdXJjZS0+
cGFyc2VGbG9hdCh5MSkKKyAgICAgICAgfHwgIW1fc291cmNlLT5wYXJzZUZsb2F0KHRvWCkKKyAg
ICAgICAgfHwgIW1fc291cmNlLT5wYXJzZUZsb2F0KHRvWSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIEZsb2F0UG9pbnQgcG9pbnQzKHRvWCwgdG9ZKTsKLSAgICBpZiAobV9ub3JtYWxp
emVkKSB7CisgICAgRmxvYXRQb2ludCB0YXJnZXRQb2ludCh0b1gsIHRvWSk7CisgICAgaWYgKG1f
cGF0aFBhcnNpbmdNb2RlID09IE5vcm1hbGl6ZWRQYXJzaW5nKSB7CiAgICAgICAgIEZsb2F0UG9p
bnQgcG9pbnQxID0gbV9jdXJyZW50UG9pbnQ7CiAgICAgICAgIHBvaW50MS5tb3ZlKDIgKiB4MSwg
MiAqIHkxKTsKICAgICAgICAgRmxvYXRQb2ludCBwb2ludDIodG9YICsgMiAqIHgxLCB0b1kgKyAy
ICogeTEpOwogICAgICAgICBpZiAobV9tb2RlID09IFJlbGF0aXZlQ29vcmRpbmF0ZXMpIHsKICAg
ICAgICAgICAgIHBvaW50MS5tb3ZlKDIgKiBtX2N1cnJlbnRQb2ludC54KCksIDIgKiBtX2N1cnJl
bnRQb2ludC55KCkpOwogICAgICAgICAgICAgcG9pbnQyLm1vdmUoMyAqIG1fY3VycmVudFBvaW50
LngoKSwgMyAqIG1fY3VycmVudFBvaW50LnkoKSk7Ci0gICAgICAgICAgICBwb2ludDMgKz0gbV9j
dXJyZW50UG9pbnQ7CisgICAgICAgICAgICB0YXJnZXRQb2ludCArPSBtX2N1cnJlbnRQb2ludDsK
ICAgICAgICAgfQogICAgICAgICBwb2ludDEuc2NhbGUoZ09uZU92ZXJUaHJlZSwgZ09uZU92ZXJU
aHJlZSk7CiAgICAgICAgIHBvaW50Mi5zY2FsZShnT25lT3ZlclRocmVlLCBnT25lT3ZlclRocmVl
KTsKIAotICAgICAgICBtX2NvbnN1bWVyLT5jdXJ2ZVRvQ3ViaWMocG9pbnQxLCBwb2ludDIsIHBv
aW50MywgQWJzb2x1dGVDb29yZGluYXRlcyk7CisgICAgICAgIG1fY29uc3VtZXItPmN1cnZlVG9D
dWJpYyhwb2ludDEsIHBvaW50MiwgdGFyZ2V0UG9pbnQsIEFic29sdXRlQ29vcmRpbmF0ZXMpOwog
CiAgICAgICAgIG1fY29udHJvbFBvaW50ID0gRmxvYXRQb2ludCh4MSwgeTEpOwogICAgICAgICBp
ZiAobV9tb2RlID09IFJlbGF0aXZlQ29vcmRpbmF0ZXMpCiAgICAgICAgICAgICBtX2NvbnRyb2xQ
b2ludCArPSBtX2N1cnJlbnRQb2ludDsKLSAgICAgICAgbV9jdXJyZW50UG9pbnQgPSBwb2ludDM7
CisgICAgICAgIG1fY3VycmVudFBvaW50ID0gdGFyZ2V0UG9pbnQ7CiAgICAgfSBlbHNlCi0gICAg
ICAgIG1fY29uc3VtZXItPmN1cnZlVG9RdWFkcmF0aWMoRmxvYXRQb2ludCh4MSwgeTEpLCBwb2lu
dDMsIG1fbW9kZSk7CisgICAgICAgIG1fY29uc3VtZXItPmN1cnZlVG9RdWFkcmF0aWMoRmxvYXRQ
b2ludCh4MSwgeTEpLCB0YXJnZXRQb2ludCwgbV9tb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtMjM4LDMyICsyMzcsMzMgQEAgYm9vbCBTVkdQYXRoUGFyc2VyOjpwYXJzZUN1cnZlVG9R
dWFkcmF0aQogewogICAgIGZsb2F0IHRvWDsKICAgICBmbG9hdCB0b1k7Ci0gICAgaWYgKCFwYXJz
ZU51bWJlcihtX3B0ciwgbV9lbmQsIHRvWCkgfHwgIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwg
dG9ZKSkKKyAgICBpZiAoIW1fc291cmNlLT5wYXJzZUZsb2F0KHRvWCkgfHwgIW1fc291cmNlLT5w
YXJzZUZsb2F0KHRvWSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9sYXN0Q29t
bWFuZCAhPSAncScKLSAgICAgICAgJiYgbV9sYXN0Q29tbWFuZCAhPSAnUScKLSAgICAgICAgJiYg
bV9sYXN0Q29tbWFuZCAhPSAndCcKLSAgICAgICAgJiYgbV9sYXN0Q29tbWFuZCAhPSAnVCcpCisK
KyAgICBpZiAobV9sYXN0Q29tbWFuZCAhPSBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY0FicworICAg
ICAgICAmJiBtX2xhc3RDb21tYW5kICE9IFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljUmVsCisgICAg
ICAgICYmIG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhBYnMK
KyAgICAgICAgJiYgbV9sYXN0Q29tbWFuZCAhPSBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290
aFJlbCkKICAgICAgICAgbV9jb250cm9sUG9pbnQgPSBtX2N1cnJlbnRQb2ludDsKIAotICAgIGlm
IChtX25vcm1hbGl6ZWQpIHsKKyAgICBpZiAobV9wYXRoUGFyc2luZ01vZGUgPT0gTm9ybWFsaXpl
ZFBhcnNpbmcpIHsKICAgICAgICAgRmxvYXRQb2ludCBjdWJpY1BvaW50ID0gbV9jdXJyZW50UG9p
bnQ7CiAgICAgICAgIGN1YmljUG9pbnQuc2NhbGUoMiwgMik7CiAgICAgICAgIGN1YmljUG9pbnQu
bW92ZSgtbV9jb250cm9sUG9pbnQueCgpLCAtbV9jb250cm9sUG9pbnQueSgpKTsKICAgICAgICAg
RmxvYXRQb2ludCBwb2ludDEobV9jdXJyZW50UG9pbnQueCgpICsgMiAqIGN1YmljUG9pbnQueCgp
LCBtX2N1cnJlbnRQb2ludC55KCkgKyAyICogY3ViaWNQb2ludC55KCkpOwogICAgICAgICBGbG9h
dFBvaW50IHBvaW50Mih0b1ggKyAyICogY3ViaWNQb2ludC54KCksIHRvWSArIDIgKiBjdWJpY1Bv
aW50LnkoKSk7Ci0gICAgICAgIEZsb2F0UG9pbnQgcG9pbnQzKHRvWCwgdG9ZKTsKKyAgICAgICAg
RmxvYXRQb2ludCB0YXJnZXRQb2ludCh0b1gsIHRvWSk7CiAgICAgICAgIGlmIChtX21vZGUgPT0g
UmVsYXRpdmVDb29yZGluYXRlcykgewogICAgICAgICAgICAgcG9pbnQyICs9IG1fY3VycmVudFBv
aW50OwotICAgICAgICAgICAgcG9pbnQzICs9IG1fY3VycmVudFBvaW50OworICAgICAgICAgICAg
dGFyZ2V0UG9pbnQgKz0gbV9jdXJyZW50UG9pbnQ7CiAgICAgICAgIH0KICAgICAgICAgcG9pbnQx
LnNjYWxlKGdPbmVPdmVyVGhyZWUsIGdPbmVPdmVyVGhyZWUpOwogICAgICAgICBwb2ludDIuc2Nh
bGUoZ09uZU92ZXJUaHJlZSwgZ09uZU92ZXJUaHJlZSk7CiAKLSAgICAgICAgbV9jb25zdW1lci0+
Y3VydmVUb0N1YmljKHBvaW50MSwgcG9pbnQyLCBwb2ludDMsIEFic29sdXRlQ29vcmRpbmF0ZXMp
OworICAgICAgICBtX2NvbnN1bWVyLT5jdXJ2ZVRvQ3ViaWMocG9pbnQxLCBwb2ludDIsIHRhcmdl
dFBvaW50LCBBYnNvbHV0ZUNvb3JkaW5hdGVzKTsKIAogICAgICAgICBtX2NvbnRyb2xQb2ludCA9
IGN1YmljUG9pbnQ7Ci0gICAgICAgIG1fY3VycmVudFBvaW50ID0gcG9pbnQzOworICAgICAgICBt
X2N1cnJlbnRQb2ludCA9IHRhcmdldFBvaW50OwogICAgIH0gZWxzZQogICAgICAgICBtX2NvbnN1
bWVyLT5jdXJ2ZVRvUXVhZHJhdGljU21vb3RoKEZsb2F0UG9pbnQodG9YLCB0b1kpLCBtX21vZGUp
OwogICAgIHJldHVybiB0cnVlOwpAQCAtMjc4LDExNSArMjc4LDEyNSBAQCBib29sIFNWR1BhdGhQ
YXJzZXI6OnBhcnNlQXJjVG9TZWdtZW50KCkKICAgICBmbG9hdCByeTsKICAgICBmbG9hdCB0b1g7
CiAgICAgZmxvYXQgdG9ZOwotICAgIGlmICghcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5kLCByeCkK
LSAgICAgICAgfHwgIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwgcnkpCi0gICAgICAgIHx8ICFw
YXJzZU51bWJlcihtX3B0ciwgbV9lbmQsIGFuZ2xlKQotICAgICAgICB8fCAhcGFyc2VBcmNGbGFn
KG1fcHRyLCBtX2VuZCwgbGFyZ2VBcmMpCi0gICAgICAgIHx8ICFwYXJzZUFyY0ZsYWcobV9wdHIs
IG1fZW5kLCBzd2VlcCkKLSAgICAgICAgfHwgIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwgdG9Y
KQotICAgICAgICB8fCAhcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5kLCB0b1kpKQorICAgIGlmICgh
bV9zb3VyY2UtPnBhcnNlRmxvYXQocngpCisgICAgICAgIHx8ICFtX3NvdXJjZS0+cGFyc2VGbG9h
dChyeSkKKyAgICAgICAgfHwgIW1fc291cmNlLT5wYXJzZUZsb2F0KGFuZ2xlKQorICAgICAgICB8
fCAhbV9zb3VyY2UtPnBhcnNlRmxhZyhsYXJnZUFyYykKKyAgICAgICAgfHwgIW1fc291cmNlLT5w
YXJzZUZsYWcoc3dlZXApCisgICAgICAgIHx8ICFtX3NvdXJjZS0+cGFyc2VGbG9hdCh0b1gpCisg
ICAgICAgIHx8ICFtX3NvdXJjZS0+cGFyc2VGbG9hdCh0b1kpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBGbG9hdFBvaW50IHBvaW50MiA9IEZsb2F0UG9pbnQodG9YLCB0b1kpOworICAg
IEZsb2F0UG9pbnQgdGFyZ2V0UG9pbnQgPSBGbG9hdFBvaW50KHRvWCwgdG9ZKTsKICAgICAvLyBJ
ZiByeCA9IDAgb3IgcnkgPSAwIHRoZW4gdGhpcyBhcmMgaXMgdHJlYXRlZCBhcyBhIHN0cmFpZ2h0
IGxpbmUgc2VnbWVudCAoYSAibGluZXRvIikgam9pbmluZyB0aGUgZW5kcG9pbnRzLgogICAgIC8v
IGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9pbXBsbm90ZS5odG1sI0FyY091dE9mUmFuZ2VQYXJh
bWV0ZXJzCiAgICAgcnggPSBmYWJzZihyeCk7CiAgICAgcnkgPSBmYWJzZihyeSk7CiAgICAgaWYg
KCFyeCB8fCAhcnkpIHsKLSAgICAgICAgaWYgKG1fbm9ybWFsaXplZCkgeworICAgICAgICBpZiAo
bV9wYXRoUGFyc2luZ01vZGUgPT0gTm9ybWFsaXplZFBhcnNpbmcpIHsKICAgICAgICAgICAgIGlm
IChtX21vZGUgPT0gUmVsYXRpdmVDb29yZGluYXRlcykKLSAgICAgICAgICAgICAgICBtX2N1cnJl
bnRQb2ludCArPSBwb2ludDI7CisgICAgICAgICAgICAgICAgbV9jdXJyZW50UG9pbnQgKz0gdGFy
Z2V0UG9pbnQ7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9jdXJyZW50UG9p
bnQgPSBwb2ludDI7CisgICAgICAgICAgICAgICAgbV9jdXJyZW50UG9pbnQgPSB0YXJnZXRQb2lu
dDsKICAgICAgICAgICAgIG1fY29uc3VtZXItPmxpbmVUbyhtX2N1cnJlbnRQb2ludCwgQWJzb2x1
dGVDb29yZGluYXRlcyk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9jb25zdW1lci0+
bGluZVRvKHBvaW50MiwgbV9tb2RlKTsKKyAgICAgICAgICAgIG1fY29uc3VtZXItPmxpbmVUbyh0
YXJnZXRQb2ludCwgbV9tb2RlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAg
aWYgKG1fbm9ybWFsaXplZCkgeworICAgIGlmIChtX3BhdGhQYXJzaW5nTW9kZSA9PSBOb3JtYWxp
emVkUGFyc2luZykgewogICAgICAgICBGbG9hdFBvaW50IHBvaW50MSA9IG1fY3VycmVudFBvaW50
OwogICAgICAgICBpZiAobV9tb2RlID09IFJlbGF0aXZlQ29vcmRpbmF0ZXMpCi0gICAgICAgICAg
ICBwb2ludDIgKz0gbV9jdXJyZW50UG9pbnQ7Ci0gICAgICAgIG1fY3VycmVudFBvaW50ID0gcG9p
bnQyOwotICAgICAgICByZXR1cm4gZGVjb21wb3NlQXJjVG9DdWJpYyhhbmdsZSwgcngsIHJ5LCBw
b2ludDEsIHBvaW50MiwgbGFyZ2VBcmMsIHN3ZWVwKTsKKyAgICAgICAgICAgIHRhcmdldFBvaW50
ICs9IG1fY3VycmVudFBvaW50OworICAgICAgICBtX2N1cnJlbnRQb2ludCA9IHRhcmdldFBvaW50
OworICAgICAgICByZXR1cm4gZGVjb21wb3NlQXJjVG9DdWJpYyhhbmdsZSwgcngsIHJ5LCBwb2lu
dDEsIHRhcmdldFBvaW50LCBsYXJnZUFyYywgc3dlZXApOwogICAgIH0KLSAgICBtX2NvbnN1bWVy
LT5hcmNUbyhwb2ludDIsIHJ4LCByeSwgYW5nbGUsIGxhcmdlQXJjLCBzd2VlcCwgbV9tb2RlKTsK
KyAgICBtX2NvbnN1bWVyLT5hcmNUbyhyeCwgcnksIGFuZ2xlLCBsYXJnZUFyYywgc3dlZXAsIHRh
cmdldFBvaW50LCBtX21vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFNWR1BhdGhQ
YXJzZXI6OnBhcnNlUGF0aERhdGFTdHJpbmcoY29uc3QgU3RyaW5nJiBzLCBib29sIG5vcm1hbGl6
ZWQpCitib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlUGF0aERhdGFGcm9tU291cmNlKFBhdGhQYXJz
aW5nTW9kZSBwYXRoUGFyc2luZ01vZGUpCiB7Ci0gICAgbV9wdHIgPSBzLmNoYXJhY3RlcnMoKTsK
LSAgICBtX2VuZCA9IG1fcHRyICsgcy5sZW5ndGgoKTsKLSAgICBtX25vcm1hbGl6ZWQgPSBub3Jt
YWxpemVkOworICAgIEFTU0VSVChtX3NvdXJjZSk7CisKKyAgICBtX3BhdGhQYXJzaW5nTW9kZSA9
IHBhdGhQYXJzaW5nTW9kZTsKIAogICAgIG1fY29udHJvbFBvaW50ID0gRmxvYXRQb2ludCgpOwog
ICAgIG1fY3VycmVudFBvaW50ID0gRmxvYXRQb2ludCgpOwogICAgIG1fc3ViUGF0aFBvaW50ID0g
RmxvYXRQb2ludCgpOwotICAgIG1fcGF0aENsb3NlZCA9IHRydWU7CisgICAgbV9jbG9zZVBhdGgg
PSB0cnVlOwogCiAgICAgLy8gU2tpcCBhbnkgbGVhZGluZyBzcGFjZXMuCi0gICAgaWYgKCFza2lw
T3B0aW9uYWxTcGFjZXMobV9wdHIsIG1fZW5kKSkKKyAgICBpZiAoIW1fc291cmNlLT5tb3ZlVG9O
ZXh0VG9rZW4oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY2hhciBjb21tYW5kID0g
KihtX3B0cisrKTsKLSAgICBtX2xhc3RDb21tYW5kID0gJyAnOworICAgIFNWR1BhdGhTZWdUeXBl
IGNvbW1hbmQ7CisgICAgbV9zb3VyY2UtPnBhcnNlU1ZHU2VnbWVudFR5cGUoY29tbWFuZCk7Cisg
ICAgbV9sYXN0Q29tbWFuZCA9IFBhdGhTZWdVbmtub3duOworCiAgICAgLy8gUGF0aCBtdXN0IHN0
YXJ0IHdpdGggbW92ZXRvLgotICAgIGlmIChjb21tYW5kICE9ICdtJyAmJiBjb21tYW5kICE9ICdN
JykKKyAgICBpZiAoY29tbWFuZCAhPSBQYXRoU2VnTW92ZVRvQWJzICYmIGNvbW1hbmQgIT0gUGF0
aFNlZ01vdmVUb1JlbCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgd2hpbGUgKHRydWUp
IHsKICAgICAgICAgLy8gU2tpcCBzcGFjZXMgYmV0d2VlbiBjb21tYW5kIGFuZCBmaXJzdCBjb29y
ZGluYXRlLgotICAgICAgICBza2lwT3B0aW9uYWxTcGFjZXMobV9wdHIsIG1fZW5kKTsKLSAgICAg
ICAgbV9tb2RlID0gY29tbWFuZCA+PSAnYScgJiYgY29tbWFuZCA8PSAneicgPyBSZWxhdGl2ZUNv
b3JkaW5hdGVzIDogQWJzb2x1dGVDb29yZGluYXRlczsKKyAgICAgICAgbV9zb3VyY2UtPm1vdmVU
b05leHRUb2tlbigpOworICAgICAgICBtX21vZGUgPSBBYnNvbHV0ZUNvb3JkaW5hdGVzOwogICAg
ICAgICBzd2l0Y2ggKGNvbW1hbmQpIHsKLSAgICAgICAgY2FzZSAnbSc6Ci0gICAgICAgIGNhc2Ug
J00nOgorICAgICAgICBjYXNlIFBhdGhTZWdNb3ZlVG9SZWw6CisgICAgICAgICAgICBtX21vZGUg
PSBSZWxhdGl2ZUNvb3JkaW5hdGVzOworICAgICAgICBjYXNlIFBhdGhTZWdNb3ZlVG9BYnM6CiAg
ICAgICAgICAgICBpZiAoIXBhcnNlTW92ZVRvU2VnbWVudCgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICdsJzoKLSAgICAg
ICAgY2FzZSAnTCc6CisgICAgICAgIGNhc2UgUGF0aFNlZ0xpbmVUb1JlbDoKKyAgICAgICAgICAg
IG1fbW9kZSA9IFJlbGF0aXZlQ29vcmRpbmF0ZXM7CisgICAgICAgIGNhc2UgUGF0aFNlZ0xpbmVU
b0FiczoKICAgICAgICAgICAgIGlmICghcGFyc2VMaW5lVG9TZWdtZW50KCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ2gn
OgotICAgICAgICBjYXNlICdIJzoKKyAgICAgICAgY2FzZSBQYXRoU2VnTGluZVRvSG9yaXpvbnRh
bFJlbDoKKyAgICAgICAgICAgIG1fbW9kZSA9IFJlbGF0aXZlQ29vcmRpbmF0ZXM7CisgICAgICAg
IGNhc2UgUGF0aFNlZ0xpbmVUb0hvcml6b250YWxBYnM6CiAgICAgICAgICAgICBpZiAoIXBhcnNl
TGluZVRvSG9yaXpvbnRhbFNlZ21lbnQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAndic6Ci0gICAgICAgIGNhc2UgJ1Yn
OgorICAgICAgICBjYXNlIFBhdGhTZWdMaW5lVG9WZXJ0aWNhbFJlbDoKKyAgICAgICAgICAgIG1f
bW9kZSA9IFJlbGF0aXZlQ29vcmRpbmF0ZXM7CisgICAgICAgIGNhc2UgUGF0aFNlZ0xpbmVUb1Zl
cnRpY2FsQWJzOgogICAgICAgICAgICAgaWYgKCFwYXJzZUxpbmVUb1ZlcnRpY2FsU2VnbWVudCgp
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlICd6JzoKLSAgICAgICAgY2FzZSAnWic6CisgICAgICAgIGNhc2UgUGF0aFNlZ0Ns
b3NlUGF0aDoKICAgICAgICAgICAgIHBhcnNlQ2xvc2VQYXRoU2VnbWVudCgpOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ2MnOgotICAgICAgICBjYXNlICdDJzoKKyAgICAgICAg
Y2FzZSBQYXRoU2VnQ3VydmVUb0N1YmljUmVsOgorICAgICAgICAgICAgbV9tb2RlID0gUmVsYXRp
dmVDb29yZGluYXRlczsKKyAgICAgICAgY2FzZSBQYXRoU2VnQ3VydmVUb0N1YmljQWJzOgogICAg
ICAgICAgICAgaWYgKCFwYXJzZUN1cnZlVG9DdWJpY1NlZ21lbnQoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAncyc6Ci0g
ICAgICAgIGNhc2UgJ1MnOgorICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9vdGhS
ZWw6CisgICAgICAgICAgICBtX21vZGUgPSBSZWxhdGl2ZUNvb3JkaW5hdGVzOworICAgICAgICBj
YXNlIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9vdGhBYnM6CiAgICAgICAgICAgICBpZiAoIXBhcnNl
Q3VydmVUb0N1YmljU21vb3RoU2VnbWVudCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICdxJzoKLSAgICAgICAgY2FzZSAn
USc6CisgICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNSZWw6CisgICAgICAgICAg
ICBtX21vZGUgPSBSZWxhdGl2ZUNvb3JkaW5hdGVzOworICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2
ZVRvUXVhZHJhdGljQWJzOgogICAgICAgICAgICAgaWYgKCFwYXJzZUN1cnZlVG9RdWFkcmF0aWNT
ZWdtZW50KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgJ3QnOgotICAgICAgICBjYXNlICdUJzoKKyAgICAgICAgY2FzZSBQ
YXRoU2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290aFJlbDoKKyAgICAgICAgICAgIG1fbW9kZSA9IFJl
bGF0aXZlQ29vcmRpbmF0ZXM7CisgICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNT
bW9vdGhBYnM6CiAgICAgICAgICAgICBpZiAoIXBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNl
Z21lbnQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSAnYSc6Ci0gICAgICAgIGNhc2UgJ0EnOgorICAgICAgICBjYXNlIFBh
dGhTZWdBcmNSZWw6CisgICAgICAgICAgICBtX21vZGUgPSBSZWxhdGl2ZUNvb3JkaW5hdGVzOwor
ICAgICAgICBjYXNlIFBhdGhTZWdBcmNBYnM6CiAgICAgICAgICAgICBpZiAoIXBhcnNlQXJjVG9T
ZWdtZW50KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC0zOTUsMjMgKzQwNSwxOSBAQCBib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlUGF0aERh
dGFTdHJpbmcoCiAgICAgICAgIH0KICAgICAgICAgbV9sYXN0Q29tbWFuZCA9IGNvbW1hbmQ7CiAK
LSAgICAgICAgaWYgKG1fcHRyID49IG1fZW5kKQorICAgICAgICBpZiAoIW1fc291cmNlLT5oYXNN
b3JlRGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgLy8gQ2hlY2sg
Zm9yIHJlbWFpbmluZyBjb29yZGluYXRlcyBpbiB0aGUgY3VycmVudCBjb21tYW5kLgotICAgICAg
ICBpZiAoKCptX3B0ciA9PSAnKycgfHwgKm1fcHRyID09ICctJyB8fCAqbV9wdHIgPT0gJy4nIHx8
ICgqbV9wdHIgPj0gJzAnICYmICptX3B0ciA8PSAnOScpKQotICAgICAgICAgICAgJiYgY29tbWFu
ZCAhPSAneicgJiYgY29tbWFuZCAhPSAnWicpIHsKLSAgICAgICAgICAgIGlmIChjb21tYW5kID09
ICdNJykKLSAgICAgICAgICAgICAgICBjb21tYW5kID0gJ0wnOwotICAgICAgICAgICAgZWxzZSBp
ZiAoY29tbWFuZCA9PSAnbScpCi0gICAgICAgICAgICAgICAgY29tbWFuZCA9ICdsJzsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBjb21tYW5kID0gKihtX3B0cisrKTsKKyAgICAgICAgY29t
bWFuZCA9IG1fc291cmNlLT5uZXh0Q29tbWFuZChjb21tYW5kKTsKIAotICAgICAgICBpZiAobV9s
YXN0Q29tbWFuZCAhPSAnQycgJiYgbV9sYXN0Q29tbWFuZCAhPSAnYycKLSAgICAgICAgICAgICYm
IG1fbGFzdENvbW1hbmQgIT0gJ1MnICYmIG1fbGFzdENvbW1hbmQgIT0gJ3MnCi0gICAgICAgICAg
ICAmJiBtX2xhc3RDb21tYW5kICE9ICdRJyAmJiBtX2xhc3RDb21tYW5kICE9ICdxJwotICAgICAg
ICAgICAgJiYgbV9sYXN0Q29tbWFuZCAhPSAnVCcgJiYgbV9sYXN0Q29tbWFuZCAhPSAndCcpCisg
ICAgICAgIGlmIChtX2xhc3RDb21tYW5kICE9IFBhdGhTZWdDdXJ2ZVRvQ3ViaWNBYnMKKyAgICAg
ICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9DdWJpY1JlbAorICAgICAg
ICAgICAgJiYgbV9sYXN0Q29tbWFuZCAhPSBQYXRoU2VnQ3VydmVUb0N1YmljU21vb3RoQWJzCisg
ICAgICAgICAgICAmJiBtX2xhc3RDb21tYW5kICE9IFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9vdGhS
ZWwKKyAgICAgICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9RdWFkcmF0
aWNBYnMKKyAgICAgICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9RdWFk
cmF0aWNSZWwKKyAgICAgICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9R
dWFkcmF0aWNTbW9vdGhBYnMKKyAgICAgICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gUGF0aFNl
Z0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhSZWwpCiAgICAgICAgICAgICBtX2NvbnRyb2xQb2ludCA9
IG1fY3VycmVudFBvaW50OwogICAgIH0KIApAQCAtNDkyLDEzICs0OTgsMTMgQEAgYm9vbCBTVkdQ
YXRoUGFyc2VyOjpkZWNvbXBvc2VBcmNUb0N1YmljKAogCiAgICAgICAgIHBvaW50MSA9IEZsb2F0
UG9pbnQoY29zU3RhcnRUaGV0YSAtIHQgKiBzaW5TdGFydFRoZXRhLCBzaW5TdGFydFRoZXRhICsg
dCAqIGNvc1N0YXJ0VGhldGEpOwogICAgICAgICBwb2ludDEubW92ZShjZW50ZXJQb2ludC54KCks
IGNlbnRlclBvaW50LnkoKSk7Ci0gICAgICAgIEZsb2F0UG9pbnQgcG9pbnQzID0gRmxvYXRQb2lu
dChjb3NFbmRUaGV0YSwgc2luRW5kVGhldGEpOwotICAgICAgICBwb2ludDMubW92ZShjZW50ZXJQ
b2ludC54KCksIGNlbnRlclBvaW50LnkoKSk7Ci0gICAgICAgIHBvaW50MiA9IHBvaW50MzsKKyAg
ICAgICAgRmxvYXRQb2ludCB0YXJnZXRQb2ludCA9IEZsb2F0UG9pbnQoY29zRW5kVGhldGEsIHNp
bkVuZFRoZXRhKTsKKyAgICAgICAgdGFyZ2V0UG9pbnQubW92ZShjZW50ZXJQb2ludC54KCksIGNl
bnRlclBvaW50LnkoKSk7CisgICAgICAgIHBvaW50MiA9IHRhcmdldFBvaW50OwogICAgICAgICBw
b2ludDIubW92ZSh0ICogc2luRW5kVGhldGEsIC10ICogY29zRW5kVGhldGEpOwogCiAgICAgICAg
IG1fY29uc3VtZXItPmN1cnZlVG9DdWJpYyhwb2ludFRyYW5zZm9ybS5tYXBQb2ludChwb2ludDEp
LCBwb2ludFRyYW5zZm9ybS5tYXBQb2ludChwb2ludDIpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcG9pbnRUcmFuc2Zvcm0ubWFwUG9pbnQocG9pbnQzKSwgQWJzb2x1dGVDb29y
ZGluYXRlcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludFRyYW5zZm9y
bS5tYXBQb2ludCh0YXJnZXRQb2ludCksIEFic29sdXRlQ29vcmRpbmF0ZXMpOwogICAgIH0KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmgJKHJldmlzaW9uIDY0ODczKQor
KysgV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNSAr
MjcsMjEgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAj
aW5jbHVkZSAiU1ZHUGF0aENvbnN1bWVyLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNlZy5oIgorI2lu
Y2x1ZGUgIlNWR1BhdGhTb3VyY2UuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFNWR1BhdGhQYXJzZXIgeworY2xhc3MgU1ZHUGF0aFBhcnNlciA6IHB1YmxpYyBOb25jb3B5YWJs
ZSB7CiBwdWJsaWM6Ci0gICAgU1ZHUGF0aFBhcnNlcihTVkdQYXRoQ29uc3VtZXIqKTsKKyAgICBT
VkdQYXRoUGFyc2VyKCk7CiAgICAgflNWR1BhdGhQYXJzZXIoKTsKIAotICAgIGJvb2wgcGFyc2VQ
YXRoRGF0YVN0cmluZyhjb25zdCBTdHJpbmcmLCBib29sIG5vcm1hbGl6ZWQgPSBmYWxzZSk7Cisg
ICAgYm9vbCBwYXJzZVBhdGhEYXRhRnJvbVNvdXJjZShQYXRoUGFyc2luZ01vZGUgcGF0aFBhcnNp
bmdNb2RlKTsKKyAgICB2b2lkIHNldEN1cnJlbnRDb25zdW1lcihTVkdQYXRoQ29uc3VtZXIqIGNv
bnN1bWVyKSB7IG1fY29uc3VtZXIgPSBjb25zdW1lcjsgfQorICAgIHZvaWQgc2V0Q3VycmVudFNv
dXJjZShTVkdQYXRoU291cmNlKiBzb3VyY2UpIHsgbV9zb3VyY2UgPSBzb3VyY2U7fQogCiBwcml2
YXRlOgogICAgIGJvb2wgZGVjb21wb3NlQXJjVG9DdWJpYyhmbG9hdCwgZmxvYXQsIGZsb2F0LCBG
bG9hdFBvaW50JiwgRmxvYXRQb2ludCYsIGJvb2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3ZWVwRmxh
Zyk7CkBAIC01MCwxMyArNTYsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIHBhcnNlQ3VydmVUb1F1
YWRyYXRpY1Ntb290aFNlZ21lbnQoKTsKICAgICBib29sIHBhcnNlQXJjVG9TZWdtZW50KCk7CiAK
KyAgICBTVkdQYXRoU291cmNlKiBtX3NvdXJjZTsKICAgICBTVkdQYXRoQ29uc3VtZXIqIG1fY29u
c3VtZXI7CiAgICAgUGF0aENvb3JkaW5hdGVNb2RlIG1fbW9kZTsKLSAgICBjb25zdCBVQ2hhciog
bV9wdHI7Ci0gICAgY29uc3QgVUNoYXIqIG1fZW5kOwotICAgIGNoYXIgbV9sYXN0Q29tbWFuZDsK
LSAgICBib29sIG1fbm9ybWFsaXplZDsKLSAgICBib29sIG1fcGF0aENsb3NlZDsKKyAgICBQYXRo
UGFyc2luZ01vZGUgbV9wYXRoUGFyc2luZ01vZGU7CisgICAgU1ZHUGF0aFNlZ1R5cGUgbV9sYXN0
Q29tbWFuZDsKKyAgICBib29sIG1fY2xvc2VQYXRoOwogICAgIEZsb2F0UG9pbnQgbV9jb250cm9s
UG9pbnQ7CiAgICAgRmxvYXRQb2ludCBtX2N1cnJlbnRQb2ludDsKICAgICBGbG9hdFBvaW50IG1f
c3ViUGF0aFBvaW50OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiU1ZHUGF0aFBhcnNlckZhY3Rvcnku
aCIKKworI2luY2x1ZGUgIlNWR1BhdGhCdWlsZGVyLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFBhcnNl
ci5oIgorI2luY2x1ZGUgIlNWR1BhdGhTZWdMaXN0QnVpbGRlci5oIgorI2luY2x1ZGUgIlNWR1Bh
dGhTdHJpbmdTb3VyY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgU1ZHUGF0
aEJ1aWxkZXIqIGdsb2JhbFNWR1BhdGhCdWlsZGVyKCkKK3sKKyAgICBzdGF0aWMgU1ZHUGF0aEJ1
aWxkZXIqIHNfYnVpbGRlciA9IDA7CisgICAgaWYgKCFzX2J1aWxkZXIpCisgICAgICAgIHNfYnVp
bGRlciA9IG5ldyBTVkdQYXRoQnVpbGRlcjsKKworICAgIHJldHVybiBzX2J1aWxkZXI7Cit9CisK
K3N0YXRpYyBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIqIGdsb2JhbFNWR1BhdGhTZWdMaXN0QnVpbGRl
cigpCit7CisgICAgc3RhdGljIFNWR1BhdGhTZWdMaXN0QnVpbGRlciogc19idWlsZGVyID0gMDsK
KyAgICBpZiAoIXNfYnVpbGRlcikKKyAgICAgICAgc19idWlsZGVyID0gbmV3IFNWR1BhdGhTZWdM
aXN0QnVpbGRlcjsKKworICAgIHJldHVybiBzX2J1aWxkZXI7Cit9CisKK3N0YXRpYyBTVkdQYXRo
UGFyc2VyKiBnbG9iYWxTVkdQYXRoUGFyc2VyKCkKK3sKKyAgICBzdGF0aWMgU1ZHUGF0aFBhcnNl
ciogc19wYXJzZXIgPSAwOworICAgIGlmICghc19wYXJzZXIpCisgICAgICAgIHNfcGFyc2VyID0g
bmV3IFNWR1BhdGhQYXJzZXI7CisKKyAgICByZXR1cm4gc19wYXJzZXI7Cit9CisKK1NWR1BhdGhQ
YXJzZXJGYWN0b3J5KiBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpCit7CisgICAgc3RhdGlj
IFNWR1BhdGhQYXJzZXJGYWN0b3J5KiBzX2luc3RhbmNlID0gMDsKKyAgICBpZiAoIXNfaW5zdGFu
Y2UpCisgICAgICAgIHNfaW5zdGFuY2UgPSBuZXcgU1ZHUGF0aFBhcnNlckZhY3Rvcnk7CisKKyAg
ICByZXR1cm4gc19pbnN0YW5jZTsKK30KKworU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OlNWR1BhdGhQ
YXJzZXJGYWN0b3J5KCkKK3sKK30KKworU1ZHUGF0aFBhcnNlckZhY3Rvcnk6On5TVkdQYXRoUGFy
c2VyRmFjdG9yeSgpCit7Cit9CisKK2Jvb2wgU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OmJ1aWxkUGF0
aEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBkLCBQYXRoJiByZXN1bHQpCit7CisgICAgaWYgKGQu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTVkdQYXRoQnVpbGRlciog
YnVpbGRlciA9IGdsb2JhbFNWR1BhdGhCdWlsZGVyKCk7CisgICAgYnVpbGRlci0+c2V0Q3VycmVu
dFBhdGgoJnJlc3VsdCk7CisKKyAgICBTVkdQYXRoUGFyc2VyKiBwYXJzZXIgPSBnbG9iYWxTVkdQ
YXRoUGFyc2VyKCk7CisgICAgcGFyc2VyLT5zZXRDdXJyZW50Q29uc3VtZXIoYnVpbGRlcik7CisK
KyAgICBPd25QdHI8U1ZHUGF0aFN0cmluZ1NvdXJjZT4gc291cmNlID0gU1ZHUGF0aFN0cmluZ1Nv
dXJjZTo6Y3JlYXRlKGQpOworICAgIHBhcnNlci0+c2V0Q3VycmVudFNvdXJjZShzb3VyY2UuZ2V0
KCkpOworCisgICAgYm9vbCBvayA9IHBhcnNlci0+cGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UoTm9y
bWFsaXplZFBhcnNpbmcpOworICAgIHBhcnNlci0+c2V0Q3VycmVudENvbnN1bWVyKDApOworICAg
IHBhcnNlci0+c2V0Q3VycmVudFNvdXJjZSgwKTsKKyAgICBidWlsZGVyLT5zZXRDdXJyZW50UGF0
aCgwKTsKKyAgICByZXR1cm4gb2s7Cit9CisKK2Jvb2wgU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OmJ1
aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgZCwgU1ZHUGF0aFNlZ0xp
c3QqIHJlc3VsdCwgUGF0aFBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKQoreworICAgIEFTU0VSVChy
ZXN1bHQpOworICAgIGlmIChkLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyKiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0aFNlZ0xpc3RC
dWlsZGVyKCk7CisgICAgYnVpbGRlci0+c2V0Q3VycmVudFNWR1BhdGhTZWdMaXN0KHJlc3VsdCk7
CisKKyAgICBTVkdQYXRoUGFyc2VyKiBwYXJzZXIgPSBnbG9iYWxTVkdQYXRoUGFyc2VyKCk7Cisg
ICAgcGFyc2VyLT5zZXRDdXJyZW50Q29uc3VtZXIoYnVpbGRlcik7CisKKyAgICBPd25QdHI8U1ZH
UGF0aFN0cmluZ1NvdXJjZT4gc291cmNlID0gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6Y3JlYXRlKGQp
OworICAgIHBhcnNlci0+c2V0Q3VycmVudFNvdXJjZShzb3VyY2UuZ2V0KCkpOworCisgICAgYm9v
bCBvayA9IHBhcnNlci0+cGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UocGFyc2luZ01vZGUpOworICAg
IHBhcnNlci0+c2V0Q3VycmVudENvbnN1bWVyKDApOworICAgIHBhcnNlci0+c2V0Q3VycmVudFNv
dXJjZSgwKTsKKyAgICBidWlsZGVyLT5zZXRDdXJyZW50U1ZHUGF0aFNlZ0xpc3QoMCk7CisgICAg
cmV0dXJuIG9rOworfQorCit9CisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFBh
cnNlckZhY3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyRmFj
dG9yeS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlckZhY3Rvcnku
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRl
ZiBTVkdQYXRoUGFyc2VyRmFjdG9yeV9oCisjZGVmaW5lIFNWR1BhdGhQYXJzZXJGYWN0b3J5X2gK
KworI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiUGF0aC5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCisjaW5jbHVkZSAiU1ZHUGF0aENvbnN1bWVyLmgiCisjaW5jbHVkZSAiU1ZHUGF0
aFNlZ0xpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTVkdQYXRoUGFyc2Vy
RmFjdG9yeSB7CitwdWJsaWM6CisgICAgc3RhdGljIFNWR1BhdGhQYXJzZXJGYWN0b3J5KiBzZWxm
KCk7CisKKyAgICBib29sIGJ1aWxkUGF0aEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiwgUGF0aCYp
OworCisgICAgYm9vbCBidWlsZFNWR1BhdGhTZWdMaXN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcm
LCBTVkdQYXRoU2VnTGlzdCosIFBhdGhQYXJzaW5nTW9kZSk7CisKK3ByaXZhdGU6CisgICAgU1ZH
UGF0aFBhcnNlckZhY3RvcnkoKTsKKyAgICB+U1ZHUGF0aFBhcnNlckZhY3RvcnkoKTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVkcpCisjZW5kaWYg
Ly8gU1ZHUGF0aFBhcnNlckZhY3RvcnlfaApJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWcuaAkocmV2aXNpb24gNjQ4NzMp
CisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcwICsy
NSw5NSBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKLSAgICBjbGFzcyBTdHJpbmc7Ci0gICAgY2xhc3MgU1ZHUGF0aEVsZW1lbnQ7Ci0gICAgY2xh
c3MgU1ZHU3R5bGVkRWxlbWVudDsKLSAgICBjbGFzcyBRdWFsaWZpZWROYW1lOwotCi0gICAgY2xh
c3MgU1ZHUGF0aFNlZyA6IHB1YmxpYyBSZWZDb3VudGVkPFNWR1BhdGhTZWc+IHsKLSAgICBwdWJs
aWM6Ci0gICAgICAgIHZpcnR1YWwgflNWR1BhdGhTZWcoKTsKLQotICAgICAgICBlbnVtIFNWR1Bh
dGhTZWdUeXBlIHsKLSAgICAgICAgICAgIFBBVEhTRUdfVU5LTk9XTiAgICAgICAgICAgICAgICAg
ICAgICAgICA9IDAsCi0gICAgICAgICAgICBQQVRIU0VHX0NMT1NFUEFUSCAgICAgICAgICAgICAg
ICAgICAgICAgPSAxLAotICAgICAgICAgICAgUEFUSFNFR19NT1ZFVE9fQUJTICAgICAgICAgICAg
ICAgICAgICAgID0gMiwKLSAgICAgICAgICAgIFBBVEhTRUdfTU9WRVRPX1JFTCAgICAgICAgICAg
ICAgICAgICAgICA9IDMsCi0gICAgICAgICAgICBQQVRIU0VHX0xJTkVUT19BQlMgICAgICAgICAg
ICAgICAgICAgICAgPSA0LAotICAgICAgICAgICAgUEFUSFNFR19MSU5FVE9fUkVMICAgICAgICAg
ICAgICAgICAgICAgID0gNSwKLSAgICAgICAgICAgIFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19BQlMg
ICAgICAgICAgICAgICA9IDYsCi0gICAgICAgICAgICBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfUkVM
ICAgICAgICAgICAgICAgPSA3LAotICAgICAgICAgICAgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJ
Q19BQlMgICAgICAgICAgID0gOCwKLSAgICAgICAgICAgIFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFU
SUNfUkVMICAgICAgICAgICA9IDksCi0gICAgICAgICAgICBQQVRIU0VHX0FSQ19BQlMgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxMCwKLSAgICAgICAgICAgIFBBVEhTRUdfQVJDX1JFTCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IDExLAotICAgICAgICAgICAgUEFUSFNFR19MSU5FVE9fSE9S
SVpPTlRBTF9BQlMgICAgICAgICAgID0gMTIsCi0gICAgICAgICAgICBQQVRIU0VHX0xJTkVUT19I
T1JJWk9OVEFMX1JFTCAgICAgICAgICAgPSAxMywKLSAgICAgICAgICAgIFBBVEhTRUdfTElORVRP
X1ZFUlRJQ0FMX0FCUyAgICAgICAgICAgICA9IDE0LAotICAgICAgICAgICAgUEFUSFNFR19MSU5F
VE9fVkVSVElDQUxfUkVMICAgICAgICAgICAgID0gMTUsCi0gICAgICAgICAgICBQQVRIU0VHX0NV
UlZFVE9fQ1VCSUNfU01PT1RIX0FCUyAgICAgICAgPSAxNiwKLSAgICAgICAgICAgIFBBVEhTRUdf
Q1VSVkVUT19DVUJJQ19TTU9PVEhfUkVMICAgICAgICA9IDE3LAotICAgICAgICAgICAgUEFUSFNF
R19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfQUJTICAgID0gMTgsCi0gICAgICAgICAgICBQQVRI
U0VHX0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9SRUwgICAgPSAxOQotICAgICAgICB9OwotCi0g
ICAgICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdDsKLSAgICAg
ICAgdmlydHVhbCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0OwotICAgICAgICB2
aXJ0dWFsIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwotCi0gICAgICAgIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkgY29uc3Q7Ci0gICAgICAgIAotICAgIHBy
b3RlY3RlZDoKLSAgICAgICAgU1ZHUGF0aFNlZygpIHsgfQotICAgIH07CiAKLSAgICBjbGFzcyBT
VkdQYXRoU2VnU2luZ2xlQ29vcmQgOiBwdWJsaWMgU1ZHUGF0aFNlZyB7IAotICAgIHB1YmxpYzoK
LSAgICAgICAgU1ZHUGF0aFNlZ1NpbmdsZUNvb3JkKGZsb2F0IHgsIGZsb2F0IHkpCi0gICAgICAg
ICAgICA6IFNWR1BhdGhTZWcoKQotICAgICAgICAgICAgLCBtX3goeCkKLSAgICAgICAgICAgICwg
bV95KHkpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgc2V0WChmbG9hdCB4
KSB7IG1feCA9IHg7IH0KLSAgICAgICAgZmxvYXQgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQot
Ci0gICAgICAgIHZvaWQgc2V0WShmbG9hdCB5KSB7IG1feSA9IHk7IH0KLSAgICAgICAgZmxvYXQg
eSgpIGNvbnN0IHsgcmV0dXJuIG1feTsgfQotCi0gICAgICAgIHZpcnR1YWwgU3RyaW5nIHRvU3Ry
aW5nKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBmbG9hdCBtX3g7Ci0gICAgICAg
IGZsb2F0IG1feTsKK2VudW0gU1ZHUGF0aFNlZ1R5cGUgeworICAgIFBhdGhTZWdVbmtub3duID0g
MCwKKyAgICBQYXRoU2VnQ2xvc2VQYXRoID0gMSwKKyAgICBQYXRoU2VnTW92ZVRvQWJzID0gMiwK
KyAgICBQYXRoU2VnTW92ZVRvUmVsID0gMywKKyAgICBQYXRoU2VnTGluZVRvQWJzID0gNCwKKyAg
ICBQYXRoU2VnTGluZVRvUmVsID0gNSwKKyAgICBQYXRoU2VnQ3VydmVUb0N1YmljQWJzID0gNiwK
KyAgICBQYXRoU2VnQ3VydmVUb0N1YmljUmVsID0gNywKKyAgICBQYXRoU2VnQ3VydmVUb1F1YWRy
YXRpY0FicyA9IDgsCisgICAgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNSZWwgPSA5LAorICAgIFBh
dGhTZWdBcmNBYnMgPSAxMCwKKyAgICBQYXRoU2VnQXJjUmVsID0gMTEsCisgICAgUGF0aFNlZ0xp
bmVUb0hvcml6b250YWxBYnMgPSAxMiwKKyAgICBQYXRoU2VnTGluZVRvSG9yaXpvbnRhbFJlbCA9
IDEzLAorICAgIFBhdGhTZWdMaW5lVG9WZXJ0aWNhbEFicyA9IDE0LAorICAgIFBhdGhTZWdMaW5l
VG9WZXJ0aWNhbFJlbCA9IDE1LAorICAgIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9vdGhBYnMgPSAx
NiwKKyAgICBQYXRoU2VnQ3VydmVUb0N1YmljU21vb3RoUmVsID0gMTcsCisgICAgUGF0aFNlZ0N1
cnZlVG9RdWFkcmF0aWNTbW9vdGhBYnMgPSAxOCwKKyAgICBQYXRoU2VnQ3VydmVUb1F1YWRyYXRp
Y1Ntb290aFJlbCA9IDE5Cit9OworCitjbGFzcyBTdHJpbmc7CitjbGFzcyBTVkdQYXRoRWxlbWVu
dDsKK2NsYXNzIFNWR1N0eWxlZEVsZW1lbnQ7CitjbGFzcyBRdWFsaWZpZWROYW1lOworCitjbGFz
cyBTVkdQYXRoU2VnIDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHUGF0aFNlZz4geworcHVibGljOgor
ICAgIHZpcnR1YWwgflNWR1BhdGhTZWcoKTsKKworICAgIC8vIEZvcndhcmQgZGVjbGFyZSB0aGVz
ZSBlbnVtcyBpbiB0aGUgdzNjIG5hbWluZyBzY2hlbWUsIGZvciBJREwgZ2VuZXJhdGlvbgorICAg
IGVudW0geworICAgICAgICBQQVRIU0VHX1VOS05PV04gPSBQYXRoU2VnVW5rbm93biwKKyAgICAg
ICAgUEFUSFNFR19DTE9TRVBBVEggPSBQYXRoU2VnQ2xvc2VQYXRoLAorICAgICAgICBQQVRIU0VH
X01PVkVUT19BQlMgPSBQYXRoU2VnTW92ZVRvQWJzLAorICAgICAgICBQQVRIU0VHX01PVkVUT19S
RUwgPSBQYXRoU2VnTW92ZVRvUmVsLAorICAgICAgICBQQVRIU0VHX0xJTkVUT19BQlMgPSBQYXRo
U2VnTGluZVRvQWJzLAorICAgICAgICBQQVRIU0VHX0xJTkVUT19SRUwgPSBQYXRoU2VnTGluZVRv
UmVsLAorICAgICAgICBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfQUJTID0gUGF0aFNlZ0N1cnZlVG9D
dWJpY0FicywKKyAgICAgICAgUEFUSFNFR19DVVJWRVRPX0NVQklDX1JFTCA9IFBhdGhTZWdDdXJ2
ZVRvQ3ViaWNSZWwsCisgICAgICAgIFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfQUJTID0gUGF0
aFNlZ0N1cnZlVG9RdWFkcmF0aWNBYnMsCisgICAgICAgIFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFU
SUNfUkVMID0gUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNSZWwsCisgICAgICAgIFBBVEhTRUdfQVJD
X0FCUyA9IFBhdGhTZWdBcmNBYnMsCisgICAgICAgIFBBVEhTRUdfQVJDX1JFTCA9IFBhdGhTZWdB
cmNSZWwsCisgICAgICAgIFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfQUJTID0gUGF0aFNlZ0xp
bmVUb0hvcml6b250YWxBYnMsCisgICAgICAgIFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfUkVM
ID0gUGF0aFNlZ0xpbmVUb0hvcml6b250YWxSZWwsCisgICAgICAgIFBBVEhTRUdfTElORVRPX1ZF
UlRJQ0FMX0FCUyA9IFBhdGhTZWdMaW5lVG9WZXJ0aWNhbEFicywKKyAgICAgICAgUEFUSFNFR19M
SU5FVE9fVkVSVElDQUxfUkVMID0gUGF0aFNlZ0xpbmVUb1ZlcnRpY2FsUmVsLAorICAgICAgICBQ
QVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX0FCUyA9IFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9v
dGhBYnMsCisgICAgICAgIFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfUkVMID0gUGF0aFNl
Z0N1cnZlVG9DdWJpY1Ntb290aFJlbCwKKyAgICAgICAgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJ
Q19TTU9PVEhfQUJTID0gUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhBYnMsCisgICAgICAg
IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX1JFTCA9IFBhdGhTZWdDdXJ2ZVRvUXVh
ZHJhdGljU21vb3RoUmVsCiAgICAgfTsKIAorCisgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBw
YXRoU2VnVHlwZSgpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0
ZXIoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OworCisgICAg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSBjb25zdDsKKyAg
ICAKK3Byb3RlY3RlZDoKKyAgICBTVkdQYXRoU2VnKCkgeyB9Cit9OworCitjbGFzcyBTVkdQYXRo
U2VnU2luZ2xlQ29vcmQgOiBwdWJsaWMgU1ZHUGF0aFNlZyB7IAorcHVibGljOgorICAgIFNWR1Bh
dGhTZWdTaW5nbGVDb29yZChmbG9hdCB4LCBmbG9hdCB5KQorICAgICAgICA6IG1feCh4KQorICAg
ICAgICAsIG1feSh5KQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHNldFgoZmxvYXQgeCkgeyBt
X3ggPSB4OyB9CisgICAgZmxvYXQgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQorCisgICAgdm9p
ZCBzZXRZKGZsb2F0IHkpIHsgbV95ID0geTsgfQorICAgIGZsb2F0IHkoKSBjb25zdCB7IHJldHVy
biBtX3k7IH0KKworICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgZmxvYXQgbV94OworICAgIGZsb2F0IG1feTsKK307CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQ
YXRoU2VnTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3Qu
Y3BwCShyZXZpc2lvbiA2NDg3MykKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjQsMTkgKzY0LDE5IEBAIHVuc2lnbmVkIFNWR1BhdGhTZWdMaXN0
OjpnZXRQYXRoU2VnQXRMZW4KICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBmbG9hdCBz
ZWdtZW50TGVuZ3RoID0gMDsKICAgICAgICAgc3dpdGNoIChzZWdtZW50LT5wYXRoU2VnVHlwZSgp
KSB7Ci0gICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19NT1ZFVE9fQUJTOgorICAgICAg
ICBjYXNlIFBhdGhTZWdNb3ZlVG9BYnM6CiAgICAgICAgIHsKICAgICAgICAgICAgIFNWR1BhdGhT
ZWdNb3ZldG9BYnMqIG1vdmVUbyA9IHN0YXRpY19jYXN0PFNWR1BhdGhTZWdNb3ZldG9BYnMqPihz
ZWdtZW50KTsKICAgICAgICAgICAgIHNlZ21lbnRMZW5ndGggPSB0cmF2ZXJzYWxTdGF0ZS5tb3Zl
VG8oRmxvYXRQb2ludChtb3ZlVG8tPngoKSwgbW92ZVRvLT55KCkpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19MSU5FVE9f
QUJTOgorICAgICAgICBjYXNlIFBhdGhTZWdMaW5lVG9BYnM6CiAgICAgICAgIHsKICAgICAgICAg
ICAgIFNWR1BhdGhTZWdMaW5ldG9BYnMqIGxpbmVUbyA9IHN0YXRpY19jYXN0PFNWR1BhdGhTZWdM
aW5ldG9BYnMqPihzZWdtZW50KTsKICAgICAgICAgICAgIHNlZ21lbnRMZW5ndGggPSB0cmF2ZXJz
YWxTdGF0ZS5saW5lVG8oRmxvYXRQb2ludChsaW5lVG8tPngoKSwgbGluZVRvLT55KCkpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFU
SFNFR19DVVJWRVRPX0NVQklDX0FCUzoKKyAgICAgICAgY2FzZSBQYXRoU2VnQ3VydmVUb0N1Ymlj
QWJzOgogICAgICAgICB7CiAgICAgICAgICAgICBTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzKiBj
dXJ2ZVRvID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficyo+KHNlZ21lbnQp
OwogICAgICAgICAgICAgc2VnbWVudExlbmd0aCA9IHRyYXZlcnNhbFN0YXRlLmN1YmljQmV6aWVy
VG8oRmxvYXRQb2ludChjdXJ2ZVRvLT54MSgpLCBjdXJ2ZVRvLT55MSgpKSwKQEAgLTg0LDcgKzg0
LDcgQEAgdW5zaWduZWQgU1ZHUGF0aFNlZ0xpc3Q6OmdldFBhdGhTZWdBdExlbgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFBvaW50KGN1cnZlVG8tPngoKSwgY3Vy
dmVUby0+eSgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNl
IFNWR1BhdGhTZWc6OlBBVEhTRUdfQ0xPU0VQQVRIOgorICAgICAgICBjYXNlIFBhdGhTZWdDbG9z
ZVBhdGg6CiAgICAgICAgICAgICBzZWdtZW50TGVuZ3RoID0gdHJhdmVyc2FsU3RhdGUuY2xvc2VT
dWJwYXRoKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTExNiw0
OCArMTE2LDQ0IEBAIFBhdGggU1ZHUGF0aFNlZ0xpc3Q6OnRvUGF0aERhdGEoKQogICAgICAgICBp
ZiAoZWMpCiAgICAgICAgICAgICByZXR1cm4gUGF0aCgpOwogICAgICAgICBzd2l0Y2ggKHNlZ21l
bnQtPnBhdGhTZWdUeXBlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNF
R19NT1ZFVE9fQUJTOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFNWR1BhdGhTZWdN
b3ZldG9BYnMqIG1vdmVUbyA9IHN0YXRpY19jYXN0PFNWR1BhdGhTZWdNb3ZldG9BYnMqPihzZWdt
ZW50KTsKLSAgICAgICAgICAgICAgICBGbG9hdFBvaW50IGVuZFBvaW50KG1vdmVUby0+eCgpLCBt
b3ZlVG8tPnkoKSk7Ci0gICAgICAgICAgICAgICAgcGF0aERhdGEubW92ZVRvKGVuZFBvaW50KTsK
LSAgICAgICAgICAgICAgICBwcmV2aW91c0VuZFBvaW50ID0gZW5kUG9pbnQ7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIFNWR1BhdGhTZWc6
OlBBVEhTRUdfTElORVRPX0FCUzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBTVkdQ
YXRoU2VnTGluZXRvQWJzKiBsaW5lVG8gPSBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTGluZXRvQWJz
Kj4oc2VnbWVudCk7Ci0gICAgICAgICAgICAgICAgRmxvYXRQb2ludCBlbmRQb2ludChsaW5lVG8t
PngoKSwgbGluZVRvLT55KCkpOwotICAgICAgICAgICAgICAgIHBhdGhEYXRhLmFkZExpbmVUbyhl
bmRQb2ludCk7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNFbmRQb2ludCA9IGVuZFBvaW50Owot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBT
VkdQYXRoU2VnOjpQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfQUJTOgotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMqIGN1cnZlVG8gPSBzdGF0aWNf
Y2FzdDxTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzKj4oc2VnbWVudCk7Ci0gICAgICAgICAgICAg
ICAgRmxvYXRQb2ludCBlbmRQb2ludChjdXJ2ZVRvLT54KCksIGN1cnZlVG8tPnkoKSk7Ci0gICAg
ICAgICAgICAgICAgcGF0aERhdGEuYWRkQmV6aWVyQ3VydmVUbyhGbG9hdFBvaW50KGN1cnZlVG8t
PngxKCksIGN1cnZlVG8tPnkxKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRmxvYXRQb2ludChjdXJ2ZVRvLT54MigpLCBjdXJ2ZVRvLT55MigpKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZFBvaW50KTsKLSAgICAgICAg
ICAgICAgICBwcmV2aW91c0VuZFBvaW50ID0gZW5kUG9pbnQ7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdf
Q1VSVkVUT19DVUJJQ19SRUw6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgU1ZHUGF0
aFNlZ0N1cnZldG9DdWJpY1JlbCogY3VydmVUbyA9IHN0YXRpY19jYXN0PFNWR1BhdGhTZWdDdXJ2
ZXRvQ3ViaWNSZWwqPihzZWdtZW50KTsKLSAgICAgICAgICAgICAgICBGbG9hdFNpemUgZW5kUG9p
bnQoY3VydmVUby0+eCgpLCBjdXJ2ZVRvLT55KCkpOwotICAgICAgICAgICAgICAgIHBhdGhEYXRh
LmFkZEJlemllckN1cnZlVG8ocHJldmlvdXNFbmRQb2ludCArIEZsb2F0U2l6ZShjdXJ2ZVRvLT54
MSgpLCBjdXJ2ZVRvLT55MSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHByZXZpb3VzRW5kUG9pbnQgKyBGbG9hdFNpemUoY3VydmVUby0+eDIoKSwgY3VydmVU
by0+eTIoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2
aW91c0VuZFBvaW50ICsgZW5kUG9pbnQpOwotICAgICAgICAgICAgICAgIHByZXZpb3VzRW5kUG9p
bnQgKz0gZW5kUG9pbnQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQ0xPU0VQQVRIOgotICAgICAgICAg
ICAgICAgIHBhdGhEYXRhLmNsb3NlU3VicGF0aCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlQoZmFsc2UpOyAvLyBG
SVhNRTogVGhpcyBvbmx5IHdvcmtzIHdpdGggbm9ybWFsaXplZC9wcm9jZXNzZWQgcGF0aCBkYXRh
LgotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBhdGhTZWdNb3ZlVG9BYnM6
IHsKKyAgICAgICAgICAgIFNWR1BhdGhTZWdNb3ZldG9BYnMqIG1vdmVUbyA9IHN0YXRpY19jYXN0
PFNWR1BhdGhTZWdNb3ZldG9BYnMqPihzZWdtZW50KTsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQg
ZW5kUG9pbnQobW92ZVRvLT54KCksIG1vdmVUby0+eSgpKTsKKyAgICAgICAgICAgIHBhdGhEYXRh
Lm1vdmVUbyhlbmRQb2ludCk7CisgICAgICAgICAgICBwcmV2aW91c0VuZFBvaW50ID0gZW5kUG9p
bnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFBhdGhTZWdM
aW5lVG9BYnM6IHsKKyAgICAgICAgICAgIFNWR1BhdGhTZWdMaW5ldG9BYnMqIGxpbmVUbyA9IHN0
YXRpY19jYXN0PFNWR1BhdGhTZWdMaW5ldG9BYnMqPihzZWdtZW50KTsKKyAgICAgICAgICAgIEZs
b2F0UG9pbnQgZW5kUG9pbnQobGluZVRvLT54KCksIGxpbmVUby0+eSgpKTsKKyAgICAgICAgICAg
IHBhdGhEYXRhLmFkZExpbmVUbyhlbmRQb2ludCk7CisgICAgICAgICAgICBwcmV2aW91c0VuZFBv
aW50ID0gZW5kUG9pbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNBYnM6IHsKKyAgICAgICAgICAgIFNWR1BhdGhTZWdDdXJ2
ZXRvQ3ViaWNBYnMqIGN1cnZlVG8gPSBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnQ3VydmV0b0N1Ymlj
QWJzKj4oc2VnbWVudCk7CisgICAgICAgICAgICBGbG9hdFBvaW50IGVuZFBvaW50KGN1cnZlVG8t
PngoKSwgY3VydmVUby0+eSgpKTsKKyAgICAgICAgICAgIHBhdGhEYXRhLmFkZEJlemllckN1cnZl
VG8oRmxvYXRQb2ludChjdXJ2ZVRvLT54MSgpLCBjdXJ2ZVRvLT55MSgpKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRQb2ludChjdXJ2ZVRvLT54MigpLCBjdXJ2
ZVRvLT55MigpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kUG9p
bnQpOworICAgICAgICAgICAgcHJldmlvdXNFbmRQb2ludCA9IGVuZFBvaW50OworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBQYXRoU2VnQ3VydmVUb0N1YmljUmVs
OiB7CisgICAgICAgICAgICBTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsKiBjdXJ2ZVRvID0gc3Rh
dGljX2Nhc3Q8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCo+KHNlZ21lbnQpOworICAgICAgICAg
ICAgRmxvYXRTaXplIGVuZFBvaW50KGN1cnZlVG8tPngoKSwgY3VydmVUby0+eSgpKTsKKyAgICAg
ICAgICAgIHBhdGhEYXRhLmFkZEJlemllckN1cnZlVG8ocHJldmlvdXNFbmRQb2ludCArIEZsb2F0
U2l6ZShjdXJ2ZVRvLT54MSgpLCBjdXJ2ZVRvLT55MSgpKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJldmlvdXNFbmRQb2ludCArIEZsb2F0U2l6ZShjdXJ2ZVRvLT54
MigpLCBjdXJ2ZVRvLT55MigpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJldmlvdXNFbmRQb2ludCArIGVuZFBvaW50KTsKKyAgICAgICAgICAgIHByZXZpb3VzRW5k
UG9pbnQgKz0gZW5kUG9pbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIFBhdGhTZWdDbG9zZVBhdGg6CisgICAgICAgICAgICBwYXRoRGF0YS5jbG9zZVN1YnBh
dGgoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
QVNTRVJUKGZhbHNlKTsgLy8gRklYTUU6IFRoaXMgb25seSB3b3JrcyB3aXRoIG5vcm1hbGl6ZWQv
cHJvY2Vzc2VkIHBhdGggZGF0YS4KKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
fQogICAgIApAQCAtMjEzLDY4ICsyMDksNjggQEAgUGFzc1JlZlB0cjxTVkdQYXRoU2VnTGlzdD4g
U1ZHUGF0aFNlZ0xpcwogICAgICAgICBTVkdQYXRoU2VnKiB0byA9IHRvTGlzdC0+Z2V0SXRlbShu
LCBlYykuZ2V0KCk7CiAgICAgICAgIGlmIChlYykKICAgICAgICAgICAgIHJldHVybiAwOwotICAg
ICAgICBpZiAoZnJvbS0+cGF0aFNlZ1R5cGUoKSA9PSBTVkdQYXRoU2VnOjpQQVRIU0VHX1VOS05P
V04gfHwgZnJvbS0+cGF0aFNlZ1R5cGUoKSAhPSB0by0+cGF0aFNlZ1R5cGUoKSkKKyAgICAgICAg
aWYgKGZyb20tPnBhdGhTZWdUeXBlKCkgPT0gUGF0aFNlZ1Vua25vd24gfHwgZnJvbS0+cGF0aFNl
Z1R5cGUoKSAhPSB0by0+cGF0aFNlZ1R5cGUoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICBSZWZQdHI8U1ZHUGF0aFNlZz4gc2VnbWVudCA9IDA7Ci0gICAgICAgIHN3aXRjaCAoc3Rh
dGljX2Nhc3Q8U1ZHUGF0aFNlZzo6U1ZHUGF0aFNlZ1R5cGU+KGZyb20tPnBhdGhTZWdUeXBlKCkp
KSB7Ci0gICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DTE9TRVBBVEg6CisgICAgICAg
IHN3aXRjaCAoc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ1R5cGU+KGZyb20tPnBhdGhTZWdUeXBlKCkp
KSB7CisgICAgICAgIGNhc2UgUGF0aFNlZ0Nsb3NlUGF0aDoKICAgICAgICAgICAgIHNlZ21lbnQg
PSBTVkdQYXRoU2VnQ2xvc2VQYXRoOjpjcmVhdGUoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfQUJTOgorICAg
ICAgICBjYXNlIFBhdGhTZWdMaW5lVG9Ib3Jpem9udGFsQWJzOgogICAgICAgICAgICAgc2VnbWVu
dCA9IEJMRU5EUEFUSFNFRzEoU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMsIHgpOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19MSU5FVE9f
SE9SSVpPTlRBTF9SRUw6CisgICAgICAgIGNhc2UgUGF0aFNlZ0xpbmVUb0hvcml6b250YWxSZWw6
CiAgICAgICAgICAgICBzZWdtZW50ID0gQkxFTkRQQVRIU0VHMShTVkdQYXRoU2VnTGluZXRvSG9y
aXpvbnRhbFJlbCwgeCk7CiAgICAgICAgICAgICBicmVhazsgICAKLSAgICAgICAgY2FzZSBTVkdQ
YXRoU2VnOjpQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9BQlM6CisgICAgICAgIGNhc2UgUGF0aFNl
Z0xpbmVUb1ZlcnRpY2FsQWJzOgogICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzEo
U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzLCB5KTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX1JFTDoKKyAgICAg
ICAgY2FzZSBQYXRoU2VnTGluZVRvVmVydGljYWxSZWw6CiAgICAgICAgICAgICBzZWdtZW50ID0g
QkxFTkRQQVRIU0VHMShTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwsIHkpOwogICAgICAgICAg
ICAgYnJlYWs7ICAgICAgICAKLSAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX01PVkVU
T19BQlM6CisgICAgICAgIGNhc2UgUGF0aFNlZ01vdmVUb0FiczoKICAgICAgICAgICAgIHNlZ21l
bnQgPSBCTEVORFBBVEhTRUcyKFNWR1BhdGhTZWdNb3ZldG9BYnMsIHgsIHkpOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19NT1ZFVE9fUkVMOgor
ICAgICAgICBjYXNlIFBhdGhTZWdNb3ZlVG9SZWw6CiAgICAgICAgICAgICBzZWdtZW50ID0gQkxF
TkRQQVRIU0VHMihTVkdQYXRoU2VnTW92ZXRvUmVsLCB4LCB5KTsKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTElORVRPX0FCUzoKKyAgICAgICAg
Y2FzZSBQYXRoU2VnTGluZVRvQWJzOgogICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNF
RzIoU1ZHUGF0aFNlZ0xpbmV0b0FicywgeCwgeSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0xJTkVUT19SRUw6CisgICAgICAgIGNhc2UgUGF0
aFNlZ0xpbmVUb1JlbDoKICAgICAgICAgICAgIHNlZ21lbnQgPSBCTEVORFBBVEhTRUcyKFNWR1Bh
dGhTZWdMaW5ldG9SZWwsIHgsIHkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
U1ZHUGF0aFNlZzo6UEFUSFNFR19DVVJWRVRPX0NVQklDX0FCUzoKKyAgICAgICAgY2FzZSBQYXRo
U2VnQ3VydmVUb0N1YmljQWJzOgogICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzYo
U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicywgeCwgeSwgeDEsIHkxLCB4MiwgeTIpOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DVVJWRVRPX0NV
QklDX1JFTDoKKyAgICAgICAgY2FzZSBQYXRoU2VnQ3VydmVUb0N1YmljUmVsOgogICAgICAgICAg
ICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzYoU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCwgeCwg
eSwgeDEsIHkxLCB4MiwgeTIpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZH
UGF0aFNlZzo6UEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9BQlM6CisgICAgICAgIGNhc2Ug
UGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aEFiczoKICAgICAgICAgICAgIHNlZ21lbnQgPSBCTEVO
RFBBVEhTRUc0KFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMsIHgsIHksIHgyLCB5Mik7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0NV
UlZFVE9fQ1VCSUNfU01PT1RIX1JFTDoKKyAgICAgICAgY2FzZSBQYXRoU2VnQ3VydmVUb0N1Ymlj
U21vb3RoUmVsOgogICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzQoU1ZHUGF0aFNl
Z0N1cnZldG9DdWJpY1Ntb290aFJlbCwgeCwgeSwgeDIsIHkyKTsKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfQUJT
OgorICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljQWJzOgogICAgICAgICAgICAg
c2VnbWVudCA9IEJMRU5EUEFUSFNFRzQoU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMsIHgs
IHksIHgxLCB5MSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdQYXRoU2Vn
OjpQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1JFTDoKKyAgICAgICAgY2FzZSBQYXRoU2VnQ3Vy
dmVUb1F1YWRyYXRpY1JlbDoKICAgICAgICAgICAgIHNlZ21lbnQgPSBCTEVORFBBVEhTRUc0KFNW
R1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsLCB4LCB5LCB4MSwgeTEpOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DVVJWRVRPX1FVQURSQVRJ
Q19TTU9PVEhfQUJTOgorICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljU21vb3Ro
QWJzOgogICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzIoU1ZHUGF0aFNlZ0N1cnZl
dG9RdWFkcmF0aWNTbW9vdGhBYnMsIHgsIHkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfUkVMOgor
ICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljU21vb3RoUmVsOgogICAgICAgICAg
ICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzIoU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9v
dGhSZWwsIHgsIHkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHUGF0aFNl
Zzo6UEFUSFNFR19BUkNfQUJTOgorICAgICAgICBjYXNlIFBhdGhTZWdBcmNBYnM6CiAgICAgICAg
ICAgICBzZWdtZW50ID0gQkxFTkRQQVRIU0VHNyhTVkdQYXRoU2VnQXJjQWJzLCB4LCB5LCByMSwg
cjIsIGFuZ2xlLCBsYXJnZUFyY0ZsYWcsIHN3ZWVwRmxhZyk7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0FSQ19SRUw6CisgICAgICAgIGNhc2Ug
UGF0aFNlZ0FyY1JlbDoKICAgICAgICAgICAgIHNlZ21lbnQgPSBCTEVORFBBVEhTRUc3KFNWR1Bh
dGhTZWdBcmNSZWwsIHgsIHksIHIxLCByMiwgYW5nbGUsIGxhcmdlQXJjRmxhZywgc3dlZXBGbGFn
KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdf
VU5LTk9XTjoKKyAgICAgICAgY2FzZSBQYXRoU2VnVW5rbm93bjoKICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgICAgIHJlc3VsdC0+YXBwZW5kSXRlbShz
ZWdtZW50LCBlYyk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0QnVpbGRlci5jcHAJKHJl
dmlzaW9uIDY0ODczKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgogI2luY2x1ZGUgIlNWR1BhdGhFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFBhcnNl
ci5oIgogI2luY2x1ZGUgIlNWR1BhdGhTZWdBcmMuaCIKICNpbmNsdWRlICJTVkdQYXRoU2VnQ2xv
c2VQYXRoLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0N1cnZldG9DdWJpYy5oIgpAQCAtNDMsNDIg
KzQyLDM2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHUGF0aFNlZ0xpc3RCdWlsZGVy
OjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXIoU1ZHUGF0aFNlZ0xpc3QqIHNlZ0xpc3QpCi0gICAgOiBt
X3BhdGhTZWdMaXN0KHNlZ0xpc3QpCitTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OlNWR1BhdGhTZWdM
aXN0QnVpbGRlcigpCisgICAgOiBtX3BhdGhTZWdMaXN0KDApCiB7CiB9CiAKLWJvb2wgU1ZHUGF0
aFNlZ0xpc3RCdWlsZGVyOjpidWlsZChjb25zdCBTdHJpbmcmIGQsIFBhdGhQYXJzaW5nTW9kZSBw
YXJzaW5nTW9kZSkKLXsKLSAgICBpZiAoIW1fcGF0aFNlZ0xpc3QpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIFNWR1BhdGhQYXJzZXIgcGFyc2VyKHRoaXMpOwotICAgIHJldHVybiBwYXJz
ZXIucGFyc2VQYXRoRGF0YVN0cmluZyhkLCBwYXJzaW5nTW9kZSA9PSBOb3JtYWxpemVkUGFyc2lu
Zyk7Ci19Ci0KLXZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjptb3ZlVG8oY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIGJvb2wsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQordm9pZCBTVkdQYXRo
U2VnTGlzdEJ1aWxkZXI6Om1vdmVUbyhjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgYm9v
bCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CisgICAgQVNTRVJUKG1fcGF0aFNlZ0xpc3Qp
OwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29v
cmRpbmF0ZXMpCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1l
bnQ6OmNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9BYnMocG9pbnQueCgpLCBwb2ludC55KCkpLCBlYyk7
CisgICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0
ZVNWR1BhdGhTZWdNb3ZldG9BYnModGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCkpLCBl
Yyk7CiAgICAgZWxzZQotICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhF
bGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnTW92ZXRvUmVsKHBvaW50LngoKSwgcG9pbnQueSgpKSwg
ZWMpOworICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50Ojpj
cmVhdGVTVkdQYXRoU2VnTW92ZXRvUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgp
KSwgZWMpOwogICAgIEFTU0VSVCghZWMpOwogfQogCi12b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRl
cjo6bGluZVRvKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9k
ZSkKK3ZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpsaW5lVG8oY29uc3QgRmxvYXRQb2ludCYg
dGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogeworICAgIEFTU0VSVChtX3Bh
dGhTZWdMaXN0KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAobW9kZSA9PSBB
YnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNW
R1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnTGluZXRvQWJzKHBvaW50LngoKSwgcG9pbnQu
eSgpKSwgZWMpOworICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVt
ZW50OjpjcmVhdGVTVkdQYXRoU2VnTGluZXRvQWJzKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9p
bnQueSgpKSwgZWMpOwogICAgIGVsc2UKLSAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kSXRl
bShTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1JlbChwb2ludC54KCksIHBv
aW50LnkoKSksIGVjKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kSXRlbShTVkdQYXRo
RWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1JlbCh0YXJnZXRQb2ludC54KCksIHRhcmdl
dFBvaW50LnkoKSksIGVjKTsKICAgICBBU1NFUlQoIWVjKTsKIH0KIAogdm9pZCBTVkdQYXRoU2Vn
TGlzdEJ1aWxkZXI6OmxpbmVUb0hvcml6b250YWwoZmxvYXQgeCwgUGF0aENvb3JkaW5hdGVNb2Rl
IG1vZGUpCiB7CisgICAgQVNTRVJUKG1fcGF0aFNlZ0xpc3QpOwogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCiAgICAgICAgIG1f
cGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdM
aW5ldG9Ib3Jpem9udGFsQWJzKHgpLCBlYyk7CkBAIC04OSw2ICs4Miw3IEBAIHZvaWQgU1ZHUGF0
aFNlZ0xpc3RCdWlsZGVyOjpsaW5lVG9Ib3Jpem8KIAogdm9pZCBTVkdQYXRoU2VnTGlzdEJ1aWxk
ZXI6OmxpbmVUb1ZlcnRpY2FsKGZsb2F0IHksIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewor
ICAgIEFTU0VSVChtX3BhdGhTZWdMaXN0KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQogICAgICAgICBtX3BhdGhTZWdMaXN0
LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnTGluZXRvVmVydGlj
YWxBYnMoeSksIGVjKTsKQEAgLTk3LDU4ICs5MSw2NCBAQCB2b2lkIFNWR1BhdGhTZWdMaXN0QnVp
bGRlcjo6bGluZVRvVmVydGljCiAgICAgQVNTRVJUKCFlYyk7CiB9CiAKLXZvaWQgU1ZHUGF0aFNl
Z0xpc3RCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludDIsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBQYXRoQ29vcmRp
bmF0ZU1vZGUgbW9kZSkKK3ZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWMo
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIsIGNvbnN0
IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKKyAg
ICBBU1NFUlQobV9wYXRoU2VnTGlzdCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAg
aWYgKG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcykKLSAgICAgICAgbV9wYXRoU2VnTGlzdC0+
YXBwZW5kSXRlbShTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Fi
cyhwb2ludC54KCksIHBvaW50LnkoKSwgcG9pbnQxLngoKSwgcG9pbnQxLnkoKSwgcG9pbnQyLngo
KSwgcG9pbnQyLnkoKSksIGVjKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kSXRlbShT
VkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficyh0YXJnZXRQb2lu
dC54KCksIHRhcmdldFBvaW50LnkoKSwgcG9pbnQxLngoKSwgcG9pbnQxLnkoKSwgcG9pbnQyLngo
KSwgcG9pbnQyLnkoKSksIGVjKTsKICAgICBlbHNlCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFw
cGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwo
cG9pbnQueCgpLCBwb2ludC55KCksIHBvaW50MS54KCksIHBvaW50MS55KCksIHBvaW50Mi54KCks
IHBvaW50Mi55KCkpLCBlYyk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZH
UGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwodGFyZ2V0UG9pbnQu
eCgpLCB0YXJnZXRQb2ludC55KCksIHBvaW50MS54KCksIHBvaW50MS55KCksIHBvaW50Mi54KCks
IHBvaW50Mi55KCkpLCBlYyk7CiAgICAgQVNTRVJUKCFlYyk7CiB9CiAKLXZvaWQgU1ZHUGF0aFNl
Z0xpc3RCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MiwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCit2b2lk
IFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6Y3VydmVUb0N1YmljU21vb3RoKGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50MiwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRl
TW9kZSBtb2RlKQogeworICAgIEFTU0VSVChtX3BhdGhTZWdMaXN0KTsKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAg
ICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRo
U2VnQ3VydmV0b0N1YmljU21vb3RoQWJzKHBvaW50Mi54KCksIHBvaW50Mi55KCksIHBvaW50Lngo
KSwgcG9pbnQueSgpKSwgZWMpOworICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNW
R1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzKHRhcmdl
dFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBwb2ludDIueCgpLCBwb2ludDIueSgpKSwgZWMp
OwogICAgIGVsc2UKLSAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kSXRlbShTVkdQYXRoRWxl
bWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbChwb2ludDIueCgpLCBw
b2ludDIueSgpLCBwb2ludC54KCksIHBvaW50LnkoKSksIGVjKTsKKyAgICAgICAgbV9wYXRoU2Vn
TGlzdC0+YXBwZW5kSXRlbShTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9D
dWJpY1Ntb290aFJlbCh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgcG9pbnQyLngo
KSwgcG9pbnQyLnkoKSksIGVjKTsKICAgICBBU1NFUlQoIWVjKTsKIH0KIAotdm9pZCBTVkdQYXRo
U2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCit2b2lk
IFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6Y3VydmVUb1F1YWRyYXRpYyhjb25zdCBGbG9hdFBvaW50
JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1v
ZGUgbW9kZSkKIHsKKyAgICBBU1NFUlQobV9wYXRoU2VnTGlzdCk7CiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcykKLSAgICAgICAg
bV9wYXRoU2VnTGlzdC0+YXBwZW5kSXRlbShTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNl
Z0N1cnZldG9RdWFkcmF0aWNBYnMocG9pbnQxLngoKSwgcG9pbnQxLnkoKSwgcG9pbnQueCgpLCBw
b2ludC55KCkpLCBlYyk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0
aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzKHRhcmdldFBvaW50
LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBwb2ludDEueCgpLCBwb2ludDEueSgpKSwgZWMpOwogICAg
IGVsc2UKLSAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kSXRlbShTVkdQYXRoRWxlbWVudDo6
Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwocG9pbnQxLngoKSwgcG9pbnQxLnko
KSwgcG9pbnQueCgpLCBwb2ludC55KCkpLCBlYyk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFw
cGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGlj
UmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBwb2ludDEueCgpLCBwb2ludDEu
eSgpKSwgZWMpOwogICAgIEFTU0VSVCghZWMpOwogfQogCi12b2lkIFNWR1BhdGhTZWdMaXN0QnVp
bGRlcjo6Y3VydmVUb1F1YWRyYXRpY1Ntb290aChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgUGF0
aENvb3JkaW5hdGVNb2RlIG1vZGUpCit2b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6Y3VydmVU
b1F1YWRyYXRpY1Ntb290aChjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3Jk
aW5hdGVNb2RlIG1vZGUpCiB7CisgICAgQVNTRVJUKG1fcGF0aFNlZ0xpc3QpOwogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0g
ICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNW
R1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzKHBvaW50LngoKSwgcG9pbnQueSgpKSwg
ZWMpOworICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50Ojpj
cmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicyh0YXJnZXRQb2ludC54KCks
IHRhcmdldFBvaW50LnkoKSksIGVjKTsKICAgICBlbHNlCi0gICAgICAgIG1fcGF0aFNlZ0xpc3Qt
PmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJh
dGljU21vb3RoUmVsKHBvaW50LngoKSwgcG9pbnQueSgpKSwgZWMpOworICAgICAgICBtX3BhdGhT
ZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0
b1F1YWRyYXRpY1Ntb290aFJlbCh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSksIGVj
KTsKICAgICBBU1NFUlQoIWVjKTsKIH0KIAotdm9pZCBTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmFy
Y1RvKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCByMSwgZmxvYXQgcjIsIGZsb2F0IGFu
Z2xlLCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcsIFBhdGhDb29yZGluYXRlTW9k
ZSBtb2RlKQordm9pZCBTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmFyY1RvKGZsb2F0IHIxLCBmbG9h
dCByMiwgZmxvYXQgYW5nbGUsIGJvb2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3ZWVwRmxhZywgY29u
c3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewor
ICAgIEFTU0VSVChtX3BhdGhTZWdMaXN0KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3BhdGhTZWdMaXN0
LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQXJjQWJzKHBvaW50
LngoKSwgcG9pbnQueSgpLCByMSwgcjIsIGFuZ2xlLCBsYXJnZUFyY0ZsYWcsIHN3ZWVwRmxhZyks
IGVjKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kSXRlbShTVkdQYXRoRWxlbWVudDo6
Y3JlYXRlU1ZHUGF0aFNlZ0FyY0Ficyh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwg
cjEsIHIyLCBhbmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcpLCBlYyk7CiAgICAgZWxzZQot
ICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVT
VkdQYXRoU2VnQXJjUmVsKHBvaW50LngoKSwgcG9pbnQueSgpLCByMSwgcjIsIGFuZ2xlLCBsYXJn
ZUFyY0ZsYWcsIHN3ZWVwRmxhZyksIGVjKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5k
SXRlbShTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0FyY1JlbCh0YXJnZXRQb2ludC54
KCksIHRhcmdldFBvaW50LnkoKSwgcjEsIHIyLCBhbmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZs
YWcpLCBlYyk7CiAgICAgQVNTRVJUKCFlYyk7CiB9CiAKIHZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWls
ZGVyOjpjbG9zZVBhdGgoKQogeworICAgIEFTU0VSVChtX3BhdGhTZWdMaXN0KTsKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhF
bGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ2xvc2VQYXRoKCksIGVjKTsKICAgICBBU1NFUlQoIWVj
KTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0QnVpbGRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0QnVpbGRlci5oCShyZXZpc2lvbiA2NDg3MykK
KysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0QnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSwxMCArMzEsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdQYXRo
U2VnTGlzdEJ1aWxkZXIgOiBwcml2YXRlIFNWR1BhdGhDb25zdW1lciB7CitjbGFzcyBTVkdQYXRo
U2VnTGlzdEJ1aWxkZXIgOiBwdWJsaWMgU1ZHUGF0aENvbnN1bWVyIHsKIHB1YmxpYzoKLSAgICBT
VkdQYXRoU2VnTGlzdEJ1aWxkZXIoU1ZHUGF0aFNlZ0xpc3QqKTsKLSAgICBib29sIGJ1aWxkKGNv
bnN0IFN0cmluZyYsIFBhdGhQYXJzaW5nTW9kZSk7CisgICAgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVy
KCk7CisKKyAgICB2b2lkIHNldEN1cnJlbnRTVkdQYXRoU2VnTGlzdChTVkdQYXRoU2VnTGlzdCog
cGF0aFNlZ0xpc3QpIHsgbV9wYXRoU2VnTGlzdCA9IHBhdGhTZWdMaXN0OyB9CiAKIHByaXZhdGU6
CiAgICAgLy8gVXNlZCBpbiBVbmFsdGVyZWRQYXJpc25nL05vcm1hbGl6ZWRQYXJzaW5nIG1vZGVz
LgpAQCAtNTAsNyArNTEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjdXJ2ZVRvQ3Vi
aWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRp
bmF0ZU1vZGUpOwogICAgIHZpcnR1YWwgdm9pZCBjdXJ2ZVRvUXVhZHJhdGljKGNvbnN0IEZsb2F0
UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKTsKICAgICB2aXJ0
dWFsIHZvaWQgY3VydmVUb1F1YWRyYXRpY1Ntb290aChjb25zdCBGbG9hdFBvaW50JiwgUGF0aENv
b3JkaW5hdGVNb2RlKTsKLSAgICB2aXJ0dWFsIHZvaWQgYXJjVG8oY29uc3QgRmxvYXRQb2ludCYs
IGZsb2F0LCBmbG9hdCwgZmxvYXQsIGJvb2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3ZWVwRmxhZywg
UGF0aENvb3JkaW5hdGVNb2RlKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXJjVG8oZmxvYXQsIGZsb2F0
LCBmbG9hdCwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dlZXBGbGFnLCBjb25zdCBGbG9hdFBv
aW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKTsKIAogICAgIFNWR1BhdGhTZWdMaXN0KiBtX3BhdGhT
ZWdMaXN0OwogfTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhTb3VyY2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoU291cmNlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L3N2Zy9TVkdQYXRoU291cmNlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpZm5kZWYgU1ZHUGF0aFNvdXJjZV9oCisjZGVmaW5lIFNWR1BhdGhTb3Vy
Y2VfaAorCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJTVkdQYXRoU2VnLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZHUGF0aFNvdXJjZSA6IHB1YmxpYyBOb25jb3B5YWJs
ZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U1ZHUGF0aFNvdXJjZSgpIHsgfQorCisgICAgdmly
dHVhbCBib29sIGhhc01vcmVEYXRhKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBtb3Zl
VG9OZXh0VG9rZW4oKSA9IDA7CisgICAgdmlydHVhbCBib29sIHBhcnNlRmxvYXQoZmxvYXQmIHJl
c3VsdCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwYXJzZUZsYWcoYm9vbCYgcmVzdWx0KSA9IDA7
CisgICAgdmlydHVhbCBib29sIHBhcnNlU1ZHU2VnbWVudFR5cGUoU1ZHUGF0aFNlZ1R5cGUmKSA9
IDA7CisgICAgdmlydHVhbCBTVkdQYXRoU2VnVHlwZSBuZXh0Q29tbWFuZChTVkdQYXRoU2VnVHlw
ZSBwcmV2aW91c0NvbW1hbmQpID0gMDsKKworcHVibGljOgorICAgIFNWR1BhdGhTb3VyY2UoKSB7
IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVkcp
CisjZW5kaWYgLy8gU1ZHUGF0aFNvdXJjZV9oCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoU3Ry
aW5nU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nU291
cmNlLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2Uu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
UmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJTVkdQYXRoU3Ry
aW5nU291cmNlLmgiCisKKyNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitTVkdQYXRoU3RyaW5nU291cmNlOjpTVkdQYXRoU3RyaW5nU291cmNl
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQorICAgIDogbV9zdHJpbmcoc3RyaW5nKQorICAgICwgbV9j
dXJyZW50KHN0cmluZy5jaGFyYWN0ZXJzKCkpCisgICAgLCBtX2VuZChtX2N1cnJlbnQgKyBzdHJp
bmcubGVuZ3RoKCkpCit7CisgICAgQVNTRVJUKCFzdHJpbmcuaXNFbXB0eSgpKTsKK30KKworU1ZH
UGF0aFN0cmluZ1NvdXJjZTo6flNWR1BhdGhTdHJpbmdTb3VyY2UoKQoreworfQorCitib29sIFNW
R1BhdGhTdHJpbmdTb3VyY2U6Omhhc01vcmVEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9j
dXJyZW50IDwgbV9lbmQ7Cit9CisKK2Jvb2wgU1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VGbG9h
dChmbG9hdCYgcmVzdWx0KQoreworICAgIHJldHVybiBwYXJzZU51bWJlcihtX2N1cnJlbnQsIG1f
ZW5kLCByZXN1bHQpOworfQorCitib29sIFNWR1BhdGhTdHJpbmdTb3VyY2U6OnBhcnNlRmxhZyhi
b29sJiByZXN1bHQpCit7CisgICAgcmV0dXJuIHBhcnNlQXJjRmxhZyhtX2N1cnJlbnQsIG1fZW5k
LCByZXN1bHQpOworfQorCitib29sIFNWR1BhdGhTdHJpbmdTb3VyY2U6Om1vdmVUb05leHRUb2tl
bigpCit7CisgICAgcmV0dXJuIHNraXBPcHRpb25hbFNwYWNlcyhtX2N1cnJlbnQsIG1fZW5kKTsK
K30KKworYm9vbCBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZVNWR1NlZ21lbnRUeXBlKFNWR1Bh
dGhTZWdUeXBlJiBwYXRoU2VnVHlwZSkKK3sKKyAgICBzd2l0Y2ggKCoobV9jdXJyZW50KyspKSB7
CisgICAgY2FzZSAnWic6CisgICAgY2FzZSAneic6CisgICAgICAgIHBhdGhTZWdUeXBlID0gUGF0
aFNlZ0Nsb3NlUGF0aDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnTSc6CisgICAgICAgIHBh
dGhTZWdUeXBlID0gUGF0aFNlZ01vdmVUb0FiczsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAn
bSc6CisgICAgICAgIHBhdGhTZWdUeXBlID0gUGF0aFNlZ01vdmVUb1JlbDsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSAnTCc6CisgICAgICAgIHBhdGhTZWdUeXBlID0gUGF0aFNlZ0xpbmVUb0Fi
czsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnbCc6CisgICAgICAgIHBhdGhTZWdUeXBlID0g
UGF0aFNlZ0xpbmVUb1JlbDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnQyc6CisgICAgICAg
IHBhdGhTZWdUeXBlID0gUGF0aFNlZ0N1cnZlVG9DdWJpY0FiczsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSAnYyc6CisgICAgICAgIHBhdGhTZWdUeXBlID0gUGF0aFNlZ0N1cnZlVG9DdWJpY1Jl
bDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnUSc6CisgICAgICAgIHBhdGhTZWdUeXBlID0g
UGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNBYnM7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJ3En
OgorICAgICAgICBwYXRoU2VnVHlwZSA9IFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljUmVsOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlICdBJzoKKyAgICAgICAgcGF0aFNlZ1R5cGUgPSBQYXRoU2Vn
QXJjQWJzOworICAgICAgICBicmVhazsKKyAgICBjYXNlICdhJzoKKyAgICAgICAgcGF0aFNlZ1R5
cGUgPSBQYXRoU2VnQXJjUmVsOworICAgICAgICBicmVhazsKKyAgICBjYXNlICdIJzoKKyAgICAg
ICAgcGF0aFNlZ1R5cGUgPSBQYXRoU2VnTGluZVRvSG9yaXpvbnRhbEFiczsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSAnaCc6CisgICAgICAgIHBhdGhTZWdUeXBlID0gUGF0aFNlZ0xpbmVUb0hv
cml6b250YWxSZWw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJ1YnOgorICAgICAgICBwYXRo
U2VnVHlwZSA9IFBhdGhTZWdMaW5lVG9WZXJ0aWNhbEFiczsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSAndic6CisgICAgICAgIHBhdGhTZWdUeXBlID0gUGF0aFNlZ0xpbmVUb1ZlcnRpY2FsUmVs
OworICAgICAgICBicmVhazsKKyAgICBjYXNlICdTJzoKKyAgICAgICAgcGF0aFNlZ1R5cGUgPSBQ
YXRoU2VnQ3VydmVUb0N1YmljU21vb3RoQWJzOworICAgICAgICBicmVhazsKKyAgICBjYXNlICdz
JzoKKyAgICAgICAgcGF0aFNlZ1R5cGUgPSBQYXRoU2VnQ3VydmVUb0N1YmljU21vb3RoUmVsOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlICdUJzoKKyAgICAgICAgcGF0aFNlZ1R5cGUgPSBQYXRo
U2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290aEFiczsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAn
dCc6CisgICAgICAgIHBhdGhTZWdUeXBlID0gUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhS
ZWw7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHBhdGhTZWdUeXBlID0g
UGF0aFNlZ1Vua25vd247CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitTVkdQYXRoU2Vn
VHlwZSBTVkdQYXRoU3RyaW5nU291cmNlOjpuZXh0Q29tbWFuZChTVkdQYXRoU2VnVHlwZSBwcmV2
aW91c0NvbW1hbmQpCit7CisgICAgLy8gQ2hlY2sgZm9yIHJlbWFpbmluZyBjb29yZGluYXRlcyBp
biB0aGUgY3VycmVudCBjb21tYW5kLgorICAgIGlmICgoKm1fY3VycmVudCA9PSAnKycgfHwgKm1f
Y3VycmVudCA9PSAnLScgfHwgKm1fY3VycmVudCA9PSAnLicgfHwgKm1fY3VycmVudCA+PSAnMCcg
JiYgKm1fY3VycmVudCA8PSAnOScpCisgICAgICAgICYmIHByZXZpb3VzQ29tbWFuZCAhPSBQYXRo
U2VnQ2xvc2VQYXRoKSB7CisgICAgICAgIGlmIChwcmV2aW91c0NvbW1hbmQgPT0gUGF0aFNlZ01v
dmVUb0FicykKKyAgICAgICAgICAgIHJldHVybiBQYXRoU2VnTGluZVRvQWJzOworICAgICAgICBp
ZiAocHJldmlvdXNDb21tYW5kID09IFBhdGhTZWdNb3ZlVG9SZWwpCisgICAgICAgICAgICByZXR1
cm4gUGF0aFNlZ0xpbmVUb1JlbDsKKyAgICAgICAgcmV0dXJuIHByZXZpb3VzQ29tbWFuZDsKKyAg
ICB9CisgICAgU1ZHUGF0aFNlZ1R5cGUgbmV4dENvbW1hbmQ7CisgICAgcGFyc2VTVkdTZWdtZW50
VHlwZShuZXh0Q29tbWFuZCk7CisgICAgcmV0dXJuIG5leHRDb21tYW5kOworfQorCit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ1NvdXJj
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuaAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBTVkdQYXRoU3Ry
aW5nU291cmNlX2gKKyNkZWZpbmUgU1ZHUGF0aFN0cmluZ1NvdXJjZV9oCisKKyNpZiBFTkFCTEUo
U1ZHKQorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNvdXJj
ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgU1ZHUGF0aFN0cmluZ1NvdXJjZSA6IHB1YmxpYyBTVkdQYXRoU291cmNlIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxTVkdQYXRoU3RyaW5nU291cmNlPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFNWR1BhdGhTdHJpbmdTb3VyY2Uoc3RyaW5nKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+U1ZH
UGF0aFN0cmluZ1NvdXJjZSgpOworCisgICAgdmlydHVhbCBib29sIGhhc01vcmVEYXRhKCkgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIG1vdmVUb05leHRUb2tlbigpOworICAgIHZpcnR1YWwgYm9v
bCBwYXJzZUZsb2F0KGZsb2F0JiByZXN1bHQpOworICAgIHZpcnR1YWwgYm9vbCBwYXJzZUZsYWco
Ym9vbCYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTVkdTZWdtZW50VHlwZShTVkdQ
YXRoU2VnVHlwZSYpOworICAgIHZpcnR1YWwgU1ZHUGF0aFNlZ1R5cGUgbmV4dENvbW1hbmQoU1ZH
UGF0aFNlZ1R5cGUgcHJldmlvdXNDb21tYW5kKTsKKworcHJpdmF0ZToKKyAgICBTVkdQYXRoU3Ry
aW5nU291cmNlKGNvbnN0IFN0cmluZyYpOworICAgIFN0cmluZyBtX3N0cmluZzsKKworICAgIGNv
bnN0IFVDaGFyKiBtX2N1cnJlbnQ7CisgICAgY29uc3QgVUNoYXIqIG1fZW5kOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykKKyNlbmRpZiAvLyBT
VkdQYXRoU3RyaW5nU291cmNlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63806</attachid>
            <date>2010-08-06 22:43:02 -0700</date>
            <delta_ts>2010-08-06 23:12:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43618-20100807074259.patch</filename>
            <type>text/plain</type>
            <size>85871</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDg3MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTE1IEBACisyMDEwLTA4LTA2ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2Vu
ZXJhbGl6ZSBTVkdQYXRoUGFyc2VyIHRvIGFsbG93IG1vcmUgdGhhbiBqdXN0IHN0cmluZ3MgYXMg
aW5wdXQgc291cmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MzYxOAorCisgICAgICAgIEdlbmVyYWxpemUgU1ZHUGF0aFBhcnNlciwgYnkgYWxsb3dp
bmcgZGlmZmVyZW50IHBhcnNpbmcgc291cmNlcyB0aGFuIGp1c3Qgc3RyaW5ncy4KKyAgICAgICAg
Rm9yIG5vdyBvbmx5IGEgU1ZHUGF0aFN0cmluZ1NvdXJjZSBpcyBhdmFpbGFibGUsIHBhcnNpbmcg
ZnJvbSBieXRlc3RyZWFtcyBmb2xsb3dzIHNvb24uCisgICAgICAgIEVhY2ggY2xpZW50IHRoYXQg
d2FudHMgdG8gcGFyc2Ugc3RyaW5ncywgbGlrZSBQYXRoIG9yIFNWR1BhdGhTZWdMaXN0IG9iamVj
dHMsIG9ubHkKKyAgICAgICAgbmVlZHMgdG8gdXNlIHRoZSBuZXcgY2VudHJhbCBTVkdQYXRoUGFy
c2VyRmFjdG9yeSwgd2hpY2ggZ2x1ZXMgY29uc3VtZXIgYW5kIHNvdXJjZXMgdG9nZXRoZXIuCisg
ICAgICAgIE1vdmVkIHRoZSBTVkdQYXRoU2VnVHlwZSBlbnVtZXJhdGlvbiBmcm9tIFNWR1BhdGhT
ZWcgY2xhc3MgZm9yIGEgY29tbW9uIHVzZSBhY3Jvc3MKKyAgICAgICAgdGhlIFNWRyBjb2RlLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyBhZGRlZC4KKworICAgICAgICAqIEFuZHJvaWQubWs6Cisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorICAgICAgICAq
IHN2Zy9TVkdBbGxJbk9uZS5jcHA6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5k
VG9WYWx1ZXMpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdHbHlwaEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cGFyc2VQYXRoRGF0YSk6CisgICAgICAgICogc3ZnL1NWR1BhdGhCdWlsZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCdWlsZGVyOjpTVkdQYXRoQnVpbGRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdQYXRoQnVpbGRlcjo6bW92ZVRvKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdGhCdWlsZGVyOjpsaW5lVG8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJ1aWxk
ZXI6OmN1cnZlVG9DdWJpYyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnVpbGRlcjo6Y2xv
c2VQYXRoKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BhdGhCdWlsZGVyOjpzZXRDdXJyZW50UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXRoQnVpbGRlcjo6YXJjVG8pOgorICAgICAgICAqIHN2Zy9TVkdQYXRoQ29uc3VtZXIuaDoK
KyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0aEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0
aFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2VyOjpTVkdQYXRoUGFy
c2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OnBhcnNlQ2xvc2VQYXRoU2Vn
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2VyOjpwYXJzZU1vdmVUb1NlZ21l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6cGFyc2VMaW5lVG9TZWdtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OnBhcnNlTGluZVRvSG9yaXpvbnRh
bFNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6cGFyc2VMaW5lVG9W
ZXJ0aWNhbFNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6cGFyc2VD
dXJ2ZVRvQ3ViaWNTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OnBh
cnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
UGFyc2VyOjpwYXJzZUN1cnZlVG9RdWFkcmF0aWNTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdGhQYXJzZXI6OnBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6cGFyc2VBcmNUb1NlZ21lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6cGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6ZGVjb21wb3NlQXJjVG9DdWJpYyk6CisgICAg
ICAgICogc3ZnL1NWR1BhdGhQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJz
ZXI6OnNldEN1cnJlbnRDb25zdW1lcik6CisgICAgICAgICogc3ZnL1NWR1BhdGhQYXJzZXJGYWN0
b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnbG9iYWxTVkdQYXRoQnVpbGRlcik6
CisgICAgICAgIChXZWJDb3JlOjpnbG9iYWxTVkdQYXRoU2VnTGlzdEJ1aWxkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Z2xvYmFsU1ZHUGF0aFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YXRoUGFyc2VyRmFjdG9yeTo6c2VsZik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2Vy
RmFjdG9yeTo6U1ZHUGF0aFBhcnNlckZhY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aFBhcnNlckZhY3Rvcnk6On5TVkdQYXRoUGFyc2VyRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYXRoUGFyc2VyRmFjdG9yeTo6YnVpbGRQYXRoRnJvbVN0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdQYXRoUGFyc2VyRmFjdG9yeTo6YnVpbGRTVkdQYXRoU2VnTGlzdEZyb21TdHJp
bmcpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoUGFyc2VyRmFjdG9yeS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvU1ZHUGF0aFNlZy5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhTZWc6On5TVkdQYXRoU2VnKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dGhTZWc6Oik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnOjpwYXRoU2VnVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnOjpwYXRoU2VnVHlwZUFzTGV0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhTZWc6OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BhdGhTZWc6OmFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BhdGhTZWc6OlNWR1BhdGhTZWcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ1Npbmds
ZUNvb3JkOjpTVkdQYXRoU2VnU2luZ2xlQ29vcmQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aFNlZ1NpbmdsZUNvb3JkOjpzZXRYKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdTaW5n
bGVDb29yZDo6eCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnU2luZ2xlQ29vcmQ6OnNl
dFkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ1NpbmdsZUNvb3JkOjp5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdTaW5nbGVDb29yZDo6dG9TdHJpbmcpOgorICAgICAgICAq
IHN2Zy9TVkdQYXRoU2VnTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlz
dDo6Z2V0UGF0aFNlZ0F0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0
Ojp0b1BhdGhEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0OjpjcmVhdGVB
bmltYXRlZCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0QnVpbGRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OlNWR1BhdGhTZWdMaXN0QnVpbGRl
cik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6Om1vdmVUbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmxpbmVUbyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9DdWJpYyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9DdWJpY1Ntb290aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJh
dGljU21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6YXJj
VG8pOgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6c2V0Q3VycmVudFNWR1BhdGhTZWdMaXN0KToK
KyAgICAgICAgKiBzdmcvU1ZHUGF0aFNvdXJjZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdGhTb3VyY2U6On5TVkdQYXRoU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dGhTb3VyY2U6OlNWR1BhdGhTb3VyY2UpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoU3RyaW5nU291
cmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nU291cmNlOjpT
VkdQYXRoU3RyaW5nU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdTb3Vy
Y2U6On5TVkdQYXRoU3RyaW5nU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJp
bmdTb3VyY2U6OmVuZE9mU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdT
b3VyY2U6OnBhcnNlRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ1NvdXJj
ZTo6cGFyc2VGbGFnKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdTb3VyY2U6OnNr
aXBTcGFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VT
VkdTZWdtZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nU291cmNlOjpo
YXNSZW1haW5pbmdDb29yZGluYXRlc0luQ3VycmVudENvbW1hbmQpOgorICAgICAgICAqIHN2Zy9T
VkdQYXRoU3RyaW5nU291cmNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0
cmluZ1NvdXJjZTo6Y3JlYXRlKToKKwogMjAxMC0wOC0wNiAgVG9ueSBHZW50aWxjb3JlICA8dG9u
eWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRl
eDogV2ViQ29yZS9BbmRyb2lkLm1rCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQW5kcm9pZC5tawko
cmV2aXNpb24gNjQ4NzMpCisrKyBXZWJDb3JlL0FuZHJvaWQubWsJKHdvcmtpbmcgY29weSkKQEAg
LTg3Myw2ICs4NzMsNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NBTF9TUkNfRklMRVMpIFwK
IAlzdmcvU1ZHUGF0aEJ1aWxkZXIuY3BwIFwKIAlzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwIFwKIAlz
dmcvU1ZHUGF0aFBhcnNlci5jcHAgXAorCXN2Zy9TVkdQYXRoUGFyc2VyRmFjdG9yeS5jcHAgXAog
CXN2Zy9TVkdQYXRoU2VnLmNwcCBcCiAJc3ZnL1NWR1BhdGhTZWdBcmMuY3BwIFwKIAlzdmcvU1ZH
UGF0aFNlZ0Nsb3NlUGF0aC5jcHAgXApAQCAtODg2LDYgKzg4Nyw3IEBAIExPQ0FMX1NSQ19GSUxF
UyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCXN2Zy9TVkdQYXRoU2VnTGlzdC5jcHAgXAogCXN2
Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwIFwKIAlzdmcvU1ZHUGF0aFNlZ01vdmV0by5jcHAg
XAorCXN2Zy9TVkdQYXRoU3RyaW5nU291cmNlLmNwcCBcCiAJc3ZnL1NWR1BhdHRlcm5FbGVtZW50
LmNwcCBcCiAJc3ZnL1NWR1BvaW50TGlzdC5jcHAgXAogCXN2Zy9TVkdQb2x5RWxlbWVudC5jcHAg
XApJbmRleDogV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiA2NDg3MykKKysrIFdlYkNvcmUvQ01ha2VMaXN0cy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTE2ODEsNiArMTY4MSw3IEBAIElGIChFTkFCTEVfU1ZHKQogICAg
ICAgICBzdmcvU1ZHUGF0aEJ1aWxkZXIuY3BwCiAgICAgICAgIHN2Zy9TVkdQYXRoRWxlbWVudC5j
cHAKICAgICAgICAgc3ZnL1NWR1BhdGhQYXJzZXIuY3BwCisgICAgICAgIHN2Zy9TVkdQYXRoUGFy
c2VyRmFjdG9yeS5jcHAKICAgICAgICAgc3ZnL1NWR1BhdGhTZWcuY3BwCiAgICAgICAgIHN2Zy9T
VkdQYXRoU2VnQXJjLmNwcAogICAgICAgICBzdmcvU1ZHUGF0aFNlZ0Nsb3NlUGF0aC5jcHAKQEAg
LTE2OTQsNiArMTY5NSw3IEBAIElGIChFTkFCTEVfU1ZHKQogICAgICAgICBzdmcvU1ZHUGF0aFNl
Z0xpc3QuY3BwCiAgICAgICAgIHN2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwCiAgICAgICAg
IHN2Zy9TVkdQYXRoU2VnTW92ZXRvLmNwcAorICAgICAgICBzdmcvU1ZHUGF0aFNvdXJjZVN0cmlu
Zy5jcHAKICAgICAgICAgc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAogICAgICAgICBzdmcvU1ZH
UG9pbnRMaXN0LmNwcAogICAgICAgICBzdmcvU1ZHUG9seUVsZW1lbnQuY3BwCkluZGV4OiBXZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0J
KHJldmlzaW9uIDY0ODczKQorKysgV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5
KQpAQCAtNDA3OSw2ICs0MDc5LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3N2
Zy9TVkdQYXRoRWxlbWVudC5oIFwKIAlXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmNwcCBcCiAJ
V2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlci5oIFwKKwlXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2Vy
RmFjdG9yeS5jcHAgXAorCVdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmggXAogCVdl
YkNvcmUvc3ZnL1NWR1BhdGhTZWcuY3BwIFwKIAlXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnLmggXAog
CVdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdBcmMuY3BwIFwKQEAgLTQxMDUsNiArNDEwNyw5IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmgg
XAogCVdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdNb3ZldG8uY3BwIFwKIAlXZWJDb3JlL3N2Zy9TVkdQ
YXRoU2VnTW92ZXRvLmggXAorCVdlYkNvcmUvc3ZnL1NWR1BhdGhTb3VyY2UuaCBcCisJV2ViQ29y
ZS9zdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAgXAorCVdlYkNvcmUvc3ZnL1NWR1BhdGhTdHJp
bmdTb3VyY2UuaCBcCiAJV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwIFwKIAlXZWJD
b3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oIFwKIAlXZWJDb3JlL3N2Zy9TVkdQb2ludExpc3Qu
Y3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
V2ViQ29yZS5neXBpCShyZXZpc2lvbiA2NDg3MykKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3
b3JraW5nIGNvcHkpCkBAIC0zODMzLDYgKzM4MzMsOCBAQAogICAgICAgICAgICAgJ3N2Zy9TVkdQ
YXRoRWxlbWVudC5oJywKICAgICAgICAgICAgICdzdmcvU1ZHUGF0aFBhcnNlci5jcHAnLAogICAg
ICAgICAgICAgJ3N2Zy9TVkdQYXRoUGFyc2VyLmgnLAorICAgICAgICAgICAgJ3N2Zy9TVkdQYXRo
UGFyc2VyRmFjdG9yeS5jcHAnLAorICAgICAgICAgICAgJ3N2Zy9TVkdQYXRoUGFyc2VyRmFjdG9y
eS5oJywKICAgICAgICAgICAgICdzdmcvU1ZHUGF0aFNlZy5jcHAnLAogICAgICAgICAgICAgJ3N2
Zy9TVkdQYXRoU2VnLmgnLAogICAgICAgICAgICAgJ3N2Zy9TVkdQYXRoU2VnQXJjLmNwcCcsCkBA
IC0zODU5LDYgKzM4NjEsOSBAQAogICAgICAgICAgICAgJ3N2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxk
ZXIuaCcsCiAgICAgICAgICAgICAnc3ZnL1NWR1BhdGhTZWdNb3ZldG8uY3BwJywKICAgICAgICAg
ICAgICdzdmcvU1ZHUGF0aFNlZ01vdmV0by5oJywKKyAgICAgICAgICAgICdzdmcvU1ZHUGF0aFNv
dXJjZS5oJywKKyAgICAgICAgICAgICdzdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAnLAorICAg
ICAgICAgICAgJ3N2Zy9TVkdQYXRoU3RyaW5nU291cmNlLmgnLAogICAgICAgICAgICAgJ3N2Zy9T
VkdQYXR0ZXJuRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdQYXR0ZXJuRWxlbWVu
dC5oJywKICAgICAgICAgICAgICdzdmcvU1ZHUG9pbnRMaXN0LmNwcCcsCkluZGV4OiBXZWJDb3Jl
L1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9u
IDY0ODczKQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMjg1NSw2
ICsyODU1LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWRz0xKSB7CiAgICAgICAgIHN2
Zy9TVkdQYXRoQnVpbGRlci5jcHAgXAogICAgICAgICBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwIFwK
ICAgICAgICAgc3ZnL1NWR1BhdGhQYXJzZXIuY3BwIFwKKyAgICAgICAgc3ZnL1NWR1BhdGhQYXJz
ZXJGYWN0b3J5LmNwcCBcCiAgICAgICAgIHN2Zy9TVkdQYXRoU2VnLmNwcCBcCiAgICAgICAgIHN2
Zy9TVkdQYXRoU2VnQXJjLmNwcCBcCiAgICAgICAgIHN2Zy9TVkdQYXRoU2VnQ2xvc2VQYXRoLmNw
cCBcCkBAIC0yODY4LDYgKzI4NjksNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPTEp
IHsKICAgICAgICAgc3ZnL1NWR1BhdGhTZWdMaXN0LmNwcCBcCiAgICAgICAgIHN2Zy9TVkdQYXRo
U2VnTGlzdEJ1aWxkZXIuY3BwIFwKICAgICAgICAgc3ZnL1NWR1BhdGhTZWdNb3ZldG8uY3BwIFwK
KyAgICAgICAgc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuY3BwIFwKICAgICAgICAgc3ZnL1NWR1Bh
dHRlcm5FbGVtZW50LmNwcCBcCiAgICAgICAgIHN2Zy9TVkdQb2ludExpc3QuY3BwIFwKICAgICAg
ICAgc3ZnL1NWR1BvbHlFbGVtZW50LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oJKHJldmlzaW9uIDY0ODczKQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNDk0NTMsNiArNDk0NTMsMTAgQEAKIAkJ
CQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXFNW
R1BhdGhQYXJzZXJGYWN0b3J5LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZHUGF0aFNlZy5oIg0KIAkJCQk+DQogCQkJPC9GaWxl
Pg0KQEAgLTQ5NTA1LDYgKzQ5NTA5LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdQYXRoU291cmNlLmgiDQorCQkJCT4NCisJ
CQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZHUGF0aFN0
cmluZ1NvdXJjZS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0
aXZlUGF0aD0iLi5cc3ZnXFNWR1BhdHRlcm5FbGVtZW50LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+
DQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDY0ODczKQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTE0NDEsNiArMTQ0MSwxMSBAQAogCQk4NDIyNDE4RTEwN0U3ODZG
MDA3NjZBODcgLyogRE9NU1ZHRkVNb3JwaG9sb2d5RWxlbWVudEludGVybmFsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDIyNDE4QjEwN0U3ODZGMDA3
NjZBODcgLyogRE9NU1ZHRkVNb3JwaG9sb2d5RWxlbWVudEludGVybmFsLmggKi87IH07CiAJCTg0
MjI0MTkzMTA3RTc4QTcwMDc2NkE4NyAvKiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MjI0MTkwMTA3RTc4
QTcwMDc2NkE4NyAvKiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcCAqLzsgfTsKIAkJODQyMjQx
OTQxMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MjI0MTkxMTA3RTc4QTcwMDc2
NkE4NyAvKiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50LmggKi87IH07CisJCTg0MzAwQkQzMTIwQzlB
NzEwMDIxOTU0QSAvKiBTVkdQYXRoUGFyc2VyRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDMwMEJEMTEyMEM5QTcxMDAyMTk1NEEgLyog
U1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwICovOyB9OworCQk4NDMwMEJENDEyMEM5QTcxMDAyMTk1
NEEgLyogU1ZHUGF0aFBhcnNlckZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg0MzAwQkQyMTIwQzlBNzEwMDIxOTU0QSAvKiBTVkdQYXRoUGFy
c2VyRmFjdG9yeS5oICovOyB9OworCQk4NDMwMEJENjEyMEM5QUFDMDAyMTk1NEEgLyogU1ZHUGF0
aFN0cmluZ1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODQzMDBCRDUxMjBDOUFBQzAwMjE5NTRBIC8qIFNWR1BhdGhTdHJpbmdTb3VyY2UuaCAq
LzsgfTsKKwkJODQzMDBCRDgxMjBDOUFENDAwMjE5NTRBIC8qIFNWR1BhdGhTb3VyY2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MzAwQkQ3MTIwQzlB
RDQwMDIxOTU0QSAvKiBTVkdQYXRoU291cmNlLmggKi87IH07CisJCTg0MzAwQkRBMTIwQzlBRUQw
MDIxOTU0QSAvKiBTVkdQYXRoU3RyaW5nU291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MzAwQkQ5MTIwQzlBRUQwMDIxOTU0QSAvKiBTVkdQ
YXRoU3RyaW5nU291cmNlLmNwcCAqLzsgfTsKIAkJODQ1RTcyRjgwRkQyNjFFRTAwQTg3RDc5IC8q
IEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODQ1RTcyRjcwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5oICovOyB9OwogCQk4NDVFNzJGQjBG
RDI2MjM5MDBBODdENzkgLyogU1ZHRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0NUU3MkY5MEZEMjYyMzkwMEE4N0Q3OSAvKiBTVkdGaWx0
ZXIuY3BwICovOyB9OwogCQk4NDVFNzJGQzBGRDI2MjM5MDBBODdENzkgLyogU1ZHRmlsdGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDVFNzJGQTBG
RDI2MjM5MDBBODdENzkgLyogU1ZHRmlsdGVyLmggKi87IH07CkBAIC03MjY2LDYgKzcyNzEsMTEg
QEAKIAkJODQyMjQxOTAxMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHRkVNb3JwaG9sb2d5
RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0MjI0MTkxMTA3RTc4
QTcwMDc2NkE4NyAvKiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODQyMjQxOTIxMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNWR0ZFTW9ycGhvbG9neUVsZW1l
bnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NDMwMEJEMTEyMEM5QTcxMDAy
MTk1NEEgLyogU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4NDMwMEJEMjEyMEM5QTcxMDAyMTk1NEEgLyogU1ZHUGF0aFBhcnNlckZh
Y3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFBhcnNlckZh
Y3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODQzMDBCRDUxMjBDOUFBQzAw
MjE5NTRBIC8qIFNWR1BhdGhTdHJpbmdTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHUGF0aFN0cmluZ1NvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4NDMwMEJENzEyMEM5QUQ0MDAyMTk1NEEgLyogU1ZHUGF0aFNvdXJjZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoU291cmNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTg0MzAwQkQ5MTIwQzlBRUQwMDIxOTU0QSAvKiBTVkdQYXRoU3RyaW5n
U291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1BhdGhT
dHJpbmdTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NDVFNzJGNzBG
RDI2MUVFMDBBODdENzkgLyogRmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEZpbHRlci5oOyBwYXRoID0gZmlsdGVycy9GaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODQ1RTcyRjkwRkQyNjIzOTAwQTg3RDc5IC8qIFNWR0ZpbHRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdGaWx0ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4NDVFNzJGQTBGRDI2MjM5MDBBODdENzkgLyogU1ZHRmls
dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ZpbHRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE0MDgsNyArMTE0MTgsNiBAQAogCQkxQUU4MkVD
OTBDQUFFMTc3MDAyMjM3QUUgLyogc3RvcmFnZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCi0KIAkJCQlCNUI1REM2NzExOUJCM0Q1MDAyQTg3OTAgLyogQWJzdHJh
Y3REYXRhYmFzZS5jcHAgKi8sCiAJCQkJQjVCNURDNjgxMTlCQjNENTAwMkE4NzkwIC8qIEFic3Ry
YWN0RGF0YWJhc2UuaCAqLywKIAkJCQk1MTQxODVFRDBDRDY1RjA0MDA3NjNDOTkgLyogQ2hhbmdl
VmVyc2lvbldyYXBwZXIuY3BwICovLApAQCAtMTUyOTgsNiArMTUzMDcsOCBAQAogCQkJCUIyMjI3
OEM0MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQYXRoRWxlbWVudC5pZGwgKi8sCiAJCQkJODQ3NkM5
RUQxMURGNkE1ODAwNTU1QjAyIC8qIFNWR1BhdGhQYXJzZXIuY3BwICovLAogCQkJCTg0NzZDOUVF
MTFERjZBNTgwMDU1NUIwMiAvKiBTVkdQYXRoUGFyc2VyLmggKi8sCisJCQkJODQzMDBCRDExMjBD
OUE3MTAwMjE5NTRBIC8qIFNWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcCAqLywKKwkJCQk4NDMwMEJE
MjEyMEM5QTcxMDAyMTk1NEEgLyogU1ZHUGF0aFBhcnNlckZhY3RvcnkuaCAqLywKIAkJCQlBOEJD
RkQwNDEyMEEwNDYxMDBCNUYxMjIgLyogU1ZHUGF0aFNlZy5jcHAgKi8sCiAJCQkJQjIyMjc4QzUw
RDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhdGhTZWcuaCAqLywKIAkJCQlCMjIyNzhDNjBEMDBCRjIw
MDA3MUI3ODIgLyogU1ZHUGF0aFNlZy5pZGwgKi8sCkBAIC0xNTM0NSw2ICsxNTM1Niw5IEBACiAJ
CQkJQjIyMjc4RUUwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BhdGhTZWdNb3ZldG8uaCAqLywKIAkJ
CQlCMjIyNzhFRjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ01vdmV0b0Ficy5pZGwgKi8s
CiAJCQkJQjIyMjc4RjAwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BhdGhTZWdNb3ZldG9SZWwuaWRs
ICovLAorCQkJCTg0MzAwQkQ3MTIwQzlBRDQwMDIxOTU0QSAvKiBTVkdQYXRoU291cmNlLmggKi8s
CisJCQkJODQzMDBCRDkxMjBDOUFFRDAwMjE5NTRBIC8qIFNWR1BhdGhTdHJpbmdTb3VyY2UuY3Bw
ICovLAorCQkJCTg0MzAwQkQ1MTIwQzlBQUMwMDIxOTU0QSAvKiBTVkdQYXRoU3RyaW5nU291cmNl
LmggKi8sCiAJCQkJQjIyMjc4RjEwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50
LmNwcCAqLywKIAkJCQlCMjIyNzhGMjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUGF0dGVybkVsZW1l
bnQuaCAqLywKIAkJCQlCMjIyNzhGMzBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUGF0dGVybkVsZW1l
bnQuaWRsICovLApAQCAtMTk3OTgsNiArMTk4MTIsNyBAQAogCQkJCTg0NzZDOUVDMTFERjZBMjkw
MDU1NUIwMiAvKiBTVkdQYXRoQ29uc3VtZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTU5
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODQ3NkM5RjAxMURGNkE1ODAwNTU1QjAyIC8qIFNWR1BhdGhQYXJzZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTg0MzAwQkQ0MTIwQzlBNzEwMDIxOTU0QSAvKiBTVkdQYXRoUGFyc2VyRmFjdG9yeS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBNUIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhT
ZWcuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTVFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQ
YXRoU2VnQXJjLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E2MjBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHUGF0aFNlZ0Nsb3NlUGF0aC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xOTgxMSw2ICsxOTgy
Niw4IEBACiAJCQkJQjIyMjdBODEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdMaXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NDc2QzlFNjExREY2QTBCMDA1NTVCMDIgLyogU1ZHUGF0aFNl
Z0xpc3RCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E4NDBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHUGF0aFNlZ01vdmV0by5oIGluIEhlYWRlcnMgKi8sCisJCQkJODQzMDBCRDgxMjBD
OUFENDAwMjE5NTRBIC8qIFNWR1BhdGhTb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTg0MzAw
QkQ2MTIwQzlBQUMwMDIxOTU0QSAvKiBTVkdQYXRoU3RyaW5nU291cmNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMjIyN0E4ODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0dGVybkVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUIyNTU5OTk1MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdQb2ludExp
Z2h0U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E4QzBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHUG9pbnRMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTIyMjU3LDYgKzIyMjc0LDcgQEAK
IAkJCQk4NDc2QzlFQTExREY2QTI5MDA1NTVCMDIgLyogU1ZHUGF0aEJ1aWxkZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjIyMjdBNTgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0NzZDOUVGMTFERjZBNTgwMDU1NUIwMiAvKiBTVkdQ
YXRoUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg0MzAwQkQzMTIwQzlBNzEwMDIxOTU0
QSAvKiBTVkdQYXRoUGFyc2VyRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEJDRkQw
NTEyMEEwNDYxMDBCNUYxMjIgLyogU1ZHUGF0aFNlZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
MjIyN0E1RDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0FyYy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMjIyN0E2MTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0Nsb3NlUGF0aC5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTIyMjcwLDYgKzIyMjg4LDcgQEAKIAkJCQlCMjIyN0E4MDBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
ODQ3NkM5RTUxMURGNkEwQjAwNTU1QjAyIC8qIFNWR1BhdGhTZWdMaXN0QnVpbGRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMjIyN0E4MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ01v
dmV0by5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4NDMwMEJEQTEyMEM5QUVEMDAyMTk1NEEgLyog
U1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E4NzBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHUGF0dGVybkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjIyMjdBOEIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BvaW50TGlzdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMjIyN0E4RTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seUVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCShyZXZpc2lvbiA2NDg3MykKKysrIFdl
YkNvcmUvc3ZnL1NWR0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDYgKzExMCw3
IEBACiAjaW5jbHVkZSAiU1ZHUGF0aEJ1aWxkZXIuY3BwIgogI2luY2x1ZGUgIlNWR1BhdGhFbGVt
ZW50LmNwcCIKICNpbmNsdWRlICJTVkdQYXRoUGFyc2VyLmNwcCIKKyNpbmNsdWRlICJTVkdQYXRo
UGFyc2VyRmFjdG9yeS5jcHAiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZy5jcHAiCiAjaW5jbHVkZSAi
U1ZHUGF0aFNlZ0FyYy5jcHAiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0Nsb3NlUGF0aC5jcHAiCkBA
IC0xMjMsNiArMTI0LDcgQEAKICNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdC5jcHAiCiAjaW5jbHVk
ZSAiU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmNwcCIKICNpbmNsdWRlICJTVkdQYXRoU2VnTW92ZXRv
LmNwcCIKKyNpbmNsdWRlICJTVkdQYXRoU3RyaW5nU291cmNlLmNwcCIKICNpbmNsdWRlICJTVkdQ
YXR0ZXJuRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiU1ZHUG9pbnRMaXN0LmNwcCIKICNpbmNsdWRl
ICJTVkdQb2x5RWxlbWVudC5jcHAiCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA2NDg3MykKKysrIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5o
IgogI2luY2x1ZGUgIlNWR0NvbG9yLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgi
CisjaW5jbHVkZSAiU1ZHUGF0aFBhcnNlckZhY3RvcnkuaCIKICNpbmNsdWRlICJTVkdQYXRoU2Vn
TGlzdC5oIgotI2luY2x1ZGUgIlNWR1BhdGhTZWdMaXN0QnVpbGRlci5oIgogI2luY2x1ZGUgIlNW
R1BvaW50TGlzdC5oIgogI2luY2x1ZGUgPG1hdGguaD4KIApAQCAtMTkwLDExICsxOTAsMTAgQEAg
Ym9vbCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZAogICAgICAgICB9CiAgICAg
fSBlbHNlIGlmIChtX3Byb3BlcnR5VHlwZSA9PSBQYXRoUHJvcGVydHkpIHsKICAgICAgICAgbV9m
cm9tUGF0aCA9IFNWR1BhdGhTZWdMaXN0OjpjcmVhdGUoU1ZHTmFtZXM6OmRBdHRyKTsKLSAgICAg
ICAgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyIGZyb21QYXJzZXIobV9mcm9tUGF0aC5nZXQoKSk7Ci0g
ICAgICAgIGlmIChmcm9tUGFyc2VyLmJ1aWxkKGZyb21TdHJpbmcsIFVuYWx0ZXJlZFBhcnNpbmcp
KSB7CisgICAgICAgIFNWR1BhdGhQYXJzZXJGYWN0b3J5KiBmYWN0b3J5ID0gU1ZHUGF0aFBhcnNl
ckZhY3Rvcnk6OnNlbGYoKTsKKyAgICAgICAgaWYgKGZhY3RvcnktPmJ1aWxkU1ZHUGF0aFNlZ0xp
c3RGcm9tU3RyaW5nKGZyb21TdHJpbmcsIG1fZnJvbVBhdGguZ2V0KCksIFVuYWx0ZXJlZFBhcnNp
bmcpKSB7CiAgICAgICAgICAgICBtX3RvUGF0aCA9IFNWR1BhdGhTZWdMaXN0OjpjcmVhdGUoU1ZH
TmFtZXM6OmRBdHRyKTsKLSAgICAgICAgICAgIFNWR1BhdGhTZWdMaXN0QnVpbGRlciB0b1BhcnNl
cihtX3RvUGF0aC5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAodG9QYXJzZXIuYnVpbGQodG9TdHJp
bmcsIFVuYWx0ZXJlZFBhcnNpbmcpKQorICAgICAgICAgICAgaWYgKGZhY3RvcnktPmJ1aWxkU1ZH
UGF0aFNlZ0xpc3RGcm9tU3RyaW5nKHRvU3RyaW5nLCBtX3RvUGF0aC5nZXQoKSwgVW5hbHRlcmVk
UGFyc2luZykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAg
ICAgbV9mcm9tUGF0aC5jbGVhcigpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25F
bGVtZW50LmNwcAkocmV2aXNpb24gNjQ4NzMpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90
aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRl
ICJTVkdFbGVtZW50SW5zdGFuY2UuaCIKICNpbmNsdWRlICJTVkdNUGF0aEVsZW1lbnQuaCIKICNp
bmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJTVkdQYXRoQnVpbGRlci5o
IgorI2luY2x1ZGUgIlNWR1BhdGhQYXJzZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCiAjaW5jbHVkZSA8bWF0aC5o
PgpAQCAtODcsOSArODcsOCBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpwYXJzZU1h
cHBlCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6cGF0aEF0dHIpIHsKICAg
ICAgICAgbV9wYXRoID0gUGF0aCgpOwotICAgICAgICBTVkdQYXRoQnVpbGRlciBidWlsZGVyKG1f
cGF0aCk7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYW5hbHlzZSB0aGUgcmV0dXJuZWQg
dmFsdWUuCi0gICAgICAgIGJ1aWxkZXIuYnVpbGQoYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIFNW
R1BhdGhQYXJzZXJGYWN0b3J5KiBmYWN0b3J5ID0gU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYo
KTsKKyAgICAgICAgZmFjdG9yeS0+YnVpbGRQYXRoRnJvbVN0cmluZyhhdHRyLT52YWx1ZSgpLCBt
X3BhdGgpOwogICAgIH0gZWxzZQogICAgICAgICBTVkdBbmltYXRpb25FbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmNwcAkocmV2
aXNpb24gNjQ4NzMpCisrKyBXZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiU1ZHRm9udEVsZW1lbnQuaCIKICNp
bmNsdWRlICJTVkdGb250RmFjZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgotI2lu
Y2x1ZGUgIlNWR1BhdGhCdWlsZGVyLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFBhcnNlckZhY3Rvcnku
aCIKICNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgogI2luY2x1ZGUgIlhNTE5hbWVzLmgiCiAK
QEAgLTEwMiwxMCArMTAyLDggQEAgc3RhdGljIGlubGluZSBTVkdHbHlwaElkZW50aWZpZXI6Ok9y
aWVudAogc3RhdGljIGlubGluZSBQYXRoIHBhcnNlUGF0aERhdGEoY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBQYXRoIHJlc3VsdDsKLSAgICBTVkdQYXRoQnVpbGRlciBidWlsZGVy
KHJlc3VsdCk7Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBhbmFseXNlIHRoZSByZXR1cm5lZCB2
YWx1ZS4KLSAgICBidWlsZGVyLmJ1aWxkKHZhbHVlKTsKLQorICAgIFNWR1BhdGhQYXJzZXJGYWN0
b3J5KiBmYWN0b3J5ID0gU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsKKyAgICBmYWN0b3J5
LT5idWlsZFBhdGhGcm9tU3RyaW5nKHZhbHVlLCByZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhCdWlsZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdQYXRoQnVpbGRlci5jcHAJKHJldmlzaW9uIDY0ODczKQorKysgV2Vi
Q29yZS9zdmcvU1ZHUGF0aEJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw0OSArMjYs
NDUgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1BhdGhCdWlsZGVyLmgiCiAKLSNp
bmNsdWRlICJTVkdQYXRoUGFyc2VyLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHUGF0
aEJ1aWxkZXI6OlNWR1BhdGhCdWlsZGVyKFBhdGgmIHBhdGgpCi0gICAgOiBtX3BhdGgocGF0aCkK
LXsKLX0KLQotYm9vbCBTVkdQYXRoQnVpbGRlcjo6YnVpbGQoY29uc3QgU3RyaW5nJiBkKQorU1ZH
UGF0aEJ1aWxkZXI6OlNWR1BhdGhCdWlsZGVyKCkKKyAgICA6IG1fcGF0aCgwKQogewotICAgIFNW
R1BhdGhQYXJzZXIgcGFyc2VyKHRoaXMpOwotICAgIHJldHVybiBwYXJzZXIucGFyc2VQYXRoRGF0
YVN0cmluZyhkLCB0cnVlKTsKIH0KIAotdm9pZCBTVkdQYXRoQnVpbGRlcjo6bW92ZVRvKGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50LCBib29sIGNsb3NlZCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUp
Cit2b2lkIFNWR1BhdGhCdWlsZGVyOjptb3ZlVG8oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9p
bnQsIGJvb2wgY2xvc2VkLCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKLSAgICBtX2N1cnJl
bnQgPSBtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMgPyBwb2ludCA6IG1fY3VycmVudCArIHBv
aW50OworICAgIEFTU0VSVChtX3BhdGgpOworICAgIG1fY3VycmVudCA9IG1vZGUgPT0gQWJzb2x1
dGVDb29yZGluYXRlcyA/IHRhcmdldFBvaW50IDogbV9jdXJyZW50ICsgdGFyZ2V0UG9pbnQ7CiAg
ICAgaWYgKGNsb3NlZCkKLSAgICAgICAgbV9wYXRoLmNsb3NlU3VicGF0aCgpOwotICAgIG1fcGF0
aC5tb3ZlVG8obV9jdXJyZW50KTsKKyAgICAgICAgbV9wYXRoLT5jbG9zZVN1YnBhdGgoKTsKKyAg
ICBtX3BhdGgtPm1vdmVUbyhtX2N1cnJlbnQpOwogfQogCi12b2lkIFNWR1BhdGhCdWlsZGVyOjps
aW5lVG8oY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQor
dm9pZCBTVkdQYXRoQnVpbGRlcjo6bGluZVRvKGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50
LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKLSAgICBtX2N1cnJlbnQgPSBtb2RlID09IEFi
c29sdXRlQ29vcmRpbmF0ZXMgPyBwb2ludCA6IG1fY3VycmVudCArIHBvaW50OwotICAgIG1fcGF0
aC5hZGRMaW5lVG8obV9jdXJyZW50KTsKKyAgICBBU1NFUlQobV9wYXRoKTsKKyAgICBtX2N1cnJl
bnQgPSBtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMgPyB0YXJnZXRQb2ludCA6IG1fY3VycmVu
dCArIHRhcmdldFBvaW50OworICAgIG1fcGF0aC0+YWRkTGluZVRvKG1fY3VycmVudCk7CiB9CiAK
LXZvaWQgU1ZHUGF0aEJ1aWxkZXI6OmN1cnZlVG9DdWJpYyhjb25zdCBGbG9hdFBvaW50JiBwb2lu
dDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIFBh
dGhDb29yZGluYXRlTW9kZSBtb2RlKQordm9pZCBTVkdQYXRoQnVpbGRlcjo6Y3VydmVUb0N1Ymlj
KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyLCBjb25z
dCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7Cisg
ICAgQVNTRVJUKG1fcGF0aCk7CiAgICAgaWYgKG1vZGUgPT0gUmVsYXRpdmVDb29yZGluYXRlcykg
ewotICAgICAgICBtX3BhdGguYWRkQmV6aWVyQ3VydmVUbyhtX2N1cnJlbnQgKyBwb2ludDEsIG1f
Y3VycmVudCArIHBvaW50MiwgbV9jdXJyZW50ICsgcG9pbnQpOwotICAgICAgICBtX2N1cnJlbnQg
Kz0gcG9pbnQ7CisgICAgICAgIG1fcGF0aC0+YWRkQmV6aWVyQ3VydmVUbyhtX2N1cnJlbnQgKyBw
b2ludDEsIG1fY3VycmVudCArIHBvaW50MiwgbV9jdXJyZW50ICsgdGFyZ2V0UG9pbnQpOworICAg
ICAgICBtX2N1cnJlbnQgKz0gdGFyZ2V0UG9pbnQ7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9j
dXJyZW50ID0gcG9pbnQ7Ci0gICAgICAgIG1fcGF0aC5hZGRCZXppZXJDdXJ2ZVRvKHBvaW50MSwg
cG9pbnQyLCBtX2N1cnJlbnQpOworICAgICAgICBtX2N1cnJlbnQgPSB0YXJnZXRQb2ludDsKKyAg
ICAgICAgbV9wYXRoLT5hZGRCZXppZXJDdXJ2ZVRvKHBvaW50MSwgcG9pbnQyLCBtX2N1cnJlbnQp
OwogICAgIH0gICAgCiB9CiAKIHZvaWQgU1ZHUGF0aEJ1aWxkZXI6OmNsb3NlUGF0aCgpCiB7Ci0g
ICAgbV9wYXRoLmNsb3NlU3VicGF0aCgpOworICAgIEFTU0VSVChtX3BhdGgpOworICAgIG1fcGF0
aC0+Y2xvc2VTdWJwYXRoKCk7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhCdWls
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aEJ1aWxkZXIuaAkocmV2aXNp
b24gNjQ4NzMpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoQnVpbGRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSwxMCArMzEsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdQ
YXRoQnVpbGRlciA6IHByaXZhdGUgU1ZHUGF0aENvbnN1bWVyIHsKK2NsYXNzIFNWR1BhdGhCdWls
ZGVyIDogcHVibGljIFNWR1BhdGhDb25zdW1lciB7CiBwdWJsaWM6Ci0gICAgU1ZHUGF0aEJ1aWxk
ZXIoUGF0aCYpOwotICAgIGJvb2wgYnVpbGQoY29uc3QgU3RyaW5nJik7CisgICAgU1ZHUGF0aEJ1
aWxkZXIoKTsKKworICAgIHZvaWQgc2V0Q3VycmVudFBhdGgoUGF0aCogcGF0aCkgeyBtX3BhdGgg
PSBwYXRoOyB9CiAKIHByaXZhdGU6CiAgICAgLy8gVXNlZCBpbiBVbmFsdGVyZWRQYXJpc25nL05v
cm1hbGl6ZWRQYXJzaW5nIG1vZGVzLgpAQCAtNTAsOSArNTEsOSBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBjdXJ2ZVRvQ3ViaWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZs
b2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgY3VydmVUb1F1YWRyYXRpYyhjb25zdCBGbG9hdFBvaW50JiwgY29u
c3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQogICAgIHZpcnR1YWwgdm9pZCBjdXJ2ZVRvUXVhZHJhdGljU21vb3RoKGNvbnN0IEZsb2F0
UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgYXJjVG8oY29uc3QgRmxvYXRQb2ludCYsIGZsb2F0LCBmbG9hdCwgZmxv
YXQsIGJvb2wsIGJvb2wsIFBhdGhDb29yZGluYXRlTW9kZSkgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQorICAgIHZpcnR1YWwgdm9pZCBhcmNUbyhmbG9hdCwgZmxvYXQsIGZsb2F0LCBib29sLCBi
b29sLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CiAKLSAgICBQYXRoJiBtX3BhdGg7CisgICAgUGF0aCogbV9wYXRoOwogICAg
IEZsb2F0UG9pbnQgbV9jdXJyZW50OwogfTsKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aENv
bnN1bWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aENvbnN1bWVyLmgJKHJl
dmlzaW9uIDY0ODczKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aENvbnN1bWVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiRmxv
YXRQb2ludC5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTM5LDcgKzQwLDcgQEAgZW51bSBQYXRoUGFyc2luZ01vZGUgewogICAgIFVu
YWx0ZXJlZFBhcnNpbmcKIH07CiAKLWNsYXNzIFNWR1BhdGhDb25zdW1lciB7CitjbGFzcyBTVkdQ
YXRoQ29uc3VtZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgogICAgIC8vIFVzZWQg
aW4gVW5hbHRlcmVkUGFyaXNuZy9Ob3JtYWxpemVkUGFyc2luZyBtb2Rlcy4KICAgICB2aXJ0dWFs
IHZvaWQgbW92ZVRvKGNvbnN0IEZsb2F0UG9pbnQmLCBib29sIGNsb3NlZCwgUGF0aENvb3JkaW5h
dGVNb2RlKSA9IDA7CkBAIC01NCw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
Y3VydmVUb0N1YmljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50Jiwg
UGF0aENvb3JkaW5hdGVNb2RlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cnZlVG9RdWFkcmF0
aWMoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1v
ZGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VydmVUb1F1YWRyYXRpY1Ntb290aChjb25zdCBG
bG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFy
Y1RvKGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBib29sIGxhcmdlQXJj
RmxhZywgYm9vbCBzd2VlcEZsYWcsIFBhdGhDb29yZGluYXRlTW9kZSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBhcmNUbyhmbG9hdCwgZmxvYXQsIGZsb2F0LCBib29sIGxhcmdlQXJjRmxhZywgYm9v
bCBzd2VlcEZsYWcsIGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpID0gMDsK
IAogcHJvdGVjdGVkOgogICAgIFNWR1BhdGhDb25zdW1lcigpIHsgfQpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHUGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhF
bGVtZW50LmNwcAkocmV2aXNpb24gNjQ4NzMpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJQ
YXRoLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJTVkdOYW1l
cy5oIgorI2luY2x1ZGUgIlNWR1BhdGhQYXJzZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU1ZHUGF0
aFNlZ0FyYy5oIgogI2luY2x1ZGUgIlNWR1BhdGhTZWdDbG9zZVBhdGguaCIKICNpbmNsdWRlICJT
VkdQYXRoU2VnQ3VydmV0b0N1YmljLmgiCkBAIC0xNzMsOCArMTc0LDggQEAgdm9pZCBTVkdQYXRo
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dAogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZH
TmFtZXM6OmRBdHRyKSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgICAgIHBhdGhT
ZWdMaXN0KCktPmNsZWFyKGVjKTsKLSAgICAgICAgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyIHBhcnNl
cihwYXRoU2VnTGlzdCgpKTsKLSAgICAgICAgaWYgKCFwYXJzZXIuYnVpbGQoYXR0ci0+dmFsdWUo
KSwgTm9ybWFsaXplZFBhcnNpbmcpKQorICAgICAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSogZmFj
dG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7CisgICAgICAgIGlmICghZmFjdG9y
eS0+YnVpbGRTVkdQYXRoU2VnTGlzdEZyb21TdHJpbmcoYXR0ci0+dmFsdWUoKSwgcGF0aFNlZ0xp
c3QoKSwgTm9ybWFsaXplZFBhcnNpbmcpKQogICAgICAgICAgICAgZG9jdW1lbnQoKS0+YWNjZXNz
U1ZHRXh0ZW5zaW9ucygpLT5yZXBvcnRFcnJvcigiUHJvYmxlbSBwYXJzaW5nIGQ9XCIiICsgYXR0
ci0+dmFsdWUoKSArICJcIiIpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05h
bWVzOjpwYXRoTGVuZ3RoQXR0cikgewogICAgICAgICBzZXRQYXRoTGVuZ3RoQmFzZVZhbHVlKGF0
dHItPnZhbHVlKCkudG9GbG9hdCgpKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIuY3BwCShyZXZpc2lv
biA2NDg3MykKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNywxNSArMjcsMTQgQEAKICNpbmNsdWRlICJTVkdQYXRoUGFyc2VyLmgiCiAKICNpbmNs
dWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIK
ICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBzdGF0aWMgY29uc3QgZmxvYXQgZ09uZU92
ZXJUaHJlZSA9IDEgLyAzLmY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHUGF0aFBhcnNl
cjo6U1ZHUGF0aFBhcnNlcihTVkdQYXRoQ29uc3VtZXIqIGNvbnN1bWVyKQotICAgIDogbV9jb25z
dW1lcihjb25zdW1lcikKK1NWR1BhdGhQYXJzZXI6OlNWR1BhdGhQYXJzZXIoKQorICAgIDogbV9j
b25zdW1lcigwKQogewogfQogCkBAIC00Niw5ICs0NSw5IEBAIFNWR1BhdGhQYXJzZXI6On5TVkdQ
YXRoUGFyc2VyKCkKIHZvaWQgU1ZHUGF0aFBhcnNlcjo6cGFyc2VDbG9zZVBhdGhTZWdtZW50KCkK
IHsKICAgICAvLyBSZXNldCBtX2N1cnJlbnRQb2ludCBmb3IgdGhlIG5leHQgcGF0aC4KLSAgICBp
ZiAobV9ub3JtYWxpemVkKQorICAgIGlmIChtX3BhdGhQYXJzaW5nTW9kZSA9PSBOb3JtYWxpemVk
UGFyc2luZykKICAgICAgICAgbV9jdXJyZW50UG9pbnQgPSBtX3N1YlBhdGhQb2ludDsKLSAgICBt
X3BhdGhDbG9zZWQgPSB0cnVlOworICAgIG1fY2xvc2VQYXRoID0gdHJ1ZTsKICAgICBtX2NvbnN1
bWVyLT5jbG9zZVBhdGgoKTsKIH0KIApAQCAtNTYsMjAgKzU1LDIwIEBAIGJvb2wgU1ZHUGF0aFBh
cnNlcjo6cGFyc2VNb3ZlVG9TZWdtZW50KCkKIHsKICAgICBmbG9hdCB0b1g7CiAgICAgZmxvYXQg
dG9ZOwotICAgIGlmICghcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5kLCB0b1gpIHx8ICFwYXJzZU51
bWJlcihtX3B0ciwgbV9lbmQsIHRvWSkpCisgICAgaWYgKCFtX3NvdXJjZS0+cGFyc2VGbG9hdCh0
b1gpIHx8ICFtX3NvdXJjZS0+cGFyc2VGbG9hdCh0b1kpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBGbG9hdFBvaW50IHRvUG9pbnQodG9YLCB0b1kpOwotICAgIGlmIChtX25vcm1hbGl6
ZWQpIHsKKyAgICBpZiAobV9wYXRoUGFyc2luZ01vZGUgPT0gTm9ybWFsaXplZFBhcnNpbmcpIHsK
ICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZWxhdGl2ZUNvb3JkaW5hdGVzKQogICAgICAgICAgICAg
bV9jdXJyZW50UG9pbnQgKz0gdG9Qb2ludDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9j
dXJyZW50UG9pbnQgPSB0b1BvaW50OwogICAgICAgICBtX3N1YlBhdGhQb2ludCA9IG1fY3VycmVu
dFBvaW50OwotICAgICAgICBtX2NvbnN1bWVyLT5tb3ZlVG8obV9jdXJyZW50UG9pbnQsIG1fcGF0
aENsb3NlZCwgQWJzb2x1dGVDb29yZGluYXRlcyk7CisgICAgICAgIG1fY29uc3VtZXItPm1vdmVU
byhtX2N1cnJlbnRQb2ludCwgbV9jbG9zZVBhdGgsIEFic29sdXRlQ29vcmRpbmF0ZXMpOwogICAg
IH0gZWxzZQotICAgICAgICBtX2NvbnN1bWVyLT5tb3ZlVG8odG9Qb2ludCwgbV9wYXRoQ2xvc2Vk
LCBtX21vZGUpOwotICAgIG1fcGF0aENsb3NlZCA9IGZhbHNlOworICAgICAgICBtX2NvbnN1bWVy
LT5tb3ZlVG8odG9Qb2ludCwgbV9jbG9zZVBhdGgsIG1fbW9kZSk7CisgICAgbV9jbG9zZVBhdGgg
PSBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNzcsMTEgKzc2LDExIEBAIGJvb2wg
U1ZHUGF0aFBhcnNlcjo6cGFyc2VMaW5lVG9TZWdtZW50KCkKIHsKICAgICBmbG9hdCB0b1g7CiAg
ICAgZmxvYXQgdG9ZOwotICAgIGlmICghcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5kLCB0b1gpIHx8
ICFwYXJzZU51bWJlcihtX3B0ciwgbV9lbmQsIHRvWSkpCisgICAgaWYgKCFtX3NvdXJjZS0+cGFy
c2VGbG9hdCh0b1gpIHx8ICFtX3NvdXJjZS0+cGFyc2VGbG9hdCh0b1kpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBGbG9hdFBvaW50IHRvUG9pbnQodG9YLCB0b1kpOwotICAgIGlmICht
X25vcm1hbGl6ZWQpIHsKKyAgICBpZiAobV9wYXRoUGFyc2luZ01vZGUgPT0gTm9ybWFsaXplZFBh
cnNpbmcpIHsKICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZWxhdGl2ZUNvb3JkaW5hdGVzKQogICAg
ICAgICAgICAgbV9jdXJyZW50UG9pbnQgKz0gdG9Qb2ludDsKICAgICAgICAgZWxzZQpAQCAtOTUs
MTAgKzk0LDEwIEBAIGJvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VMaW5lVG9TZWdtZW50KCkKIGJv
b2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VMaW5lVG9Ib3Jpem9udGFsU2VnbWVudCgpCiB7CiAgICAg
ZmxvYXQgdG9YOwotICAgIGlmICghcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5kLCB0b1gpKQorICAg
IGlmICghbV9zb3VyY2UtPnBhcnNlRmxvYXQodG9YKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgaWYgKG1fbm9ybWFsaXplZCkgeworICAgIGlmIChtX3BhdGhQYXJzaW5nTW9kZSA9PSBO
b3JtYWxpemVkUGFyc2luZykgewogICAgICAgICBpZiAobV9tb2RlID09IFJlbGF0aXZlQ29vcmRp
bmF0ZXMpCiAgICAgICAgICAgICBtX2N1cnJlbnRQb2ludC5tb3ZlKHRvWCwgMCk7CiAgICAgICAg
IGVsc2UKQEAgLTExMiwxMCArMTExLDEwIEBAIGJvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VMaW5l
VG9Ib3Jpem9udGEKIGJvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VMaW5lVG9WZXJ0aWNhbFNlZ21l
bnQoKQogewogICAgIGZsb2F0IHRvWTsKLSAgICBpZiAoIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2Vu
ZCwgdG9ZKSkKKyAgICBpZiAoIW1fc291cmNlLT5wYXJzZUZsb2F0KHRvWSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGlmIChtX25vcm1hbGl6ZWQpIHsKKyAgICBpZiAobV9wYXRoUGFy
c2luZ01vZGUgPT0gTm9ybWFsaXplZFBhcnNpbmcpIHsKICAgICAgICAgaWYgKG1fbW9kZSA9PSBS
ZWxhdGl2ZUNvb3JkaW5hdGVzKQogICAgICAgICAgICAgbV9jdXJyZW50UG9pbnQubW92ZSgwLCB0
b1kpOwogICAgICAgICBlbHNlCkBAIC0xMzQsMjkgKzEzMywyOSBAQCBib29sIFNWR1BhdGhQYXJz
ZXI6OnBhcnNlQ3VydmVUb0N1YmljU2VnCiAgICAgZmxvYXQgeTI7CiAgICAgZmxvYXQgdG9YOwog
ICAgIGZsb2F0IHRvWTsgCi0gICAgaWYgKCFwYXJzZU51bWJlcihtX3B0ciwgbV9lbmQsIHgxKQot
ICAgICAgICB8fCAhcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5kLCB5MSkKLSAgICAgICAgfHwgIXBh
cnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwgeDIpCi0gICAgICAgIHx8ICFwYXJzZU51bWJlcihtX3B0
ciwgbV9lbmQsIHkyKQotICAgICAgICB8fCAhcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5kLCB0b1gp
Ci0gICAgICAgIHx8ICFwYXJzZU51bWJlcihtX3B0ciwgbV9lbmQsIHRvWSkpCisgICAgaWYgKCFt
X3NvdXJjZS0+cGFyc2VGbG9hdCh4MSkKKyAgICAgICAgfHwgIW1fc291cmNlLT5wYXJzZUZsb2F0
KHkxKQorICAgICAgICB8fCAhbV9zb3VyY2UtPnBhcnNlRmxvYXQoeDIpCisgICAgICAgIHx8ICFt
X3NvdXJjZS0+cGFyc2VGbG9hdCh5MikKKyAgICAgICAgfHwgIW1fc291cmNlLT5wYXJzZUZsb2F0
KHRvWCkKKyAgICAgICAgfHwgIW1fc291cmNlLT5wYXJzZUZsb2F0KHRvWSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIEZsb2F0UG9pbnQgcG9pbnQxKHgxLCB5MSk7CiAgICAgRmxvYXRQ
b2ludCBwb2ludDIoeDIsIHkyKTsKLSAgICBGbG9hdFBvaW50IHBvaW50Myh0b1gsIHRvWSk7Ci0g
ICAgaWYgKG1fbm9ybWFsaXplZCkgeworICAgIEZsb2F0UG9pbnQgdGFyZ2V0UG9pbnQodG9YLCB0
b1kpOworICAgIGlmIChtX3BhdGhQYXJzaW5nTW9kZSA9PSBOb3JtYWxpemVkUGFyc2luZykgewog
ICAgICAgICBpZiAobV9tb2RlID09IFJlbGF0aXZlQ29vcmRpbmF0ZXMpIHsKICAgICAgICAgICAg
IHBvaW50MSArPSBtX2N1cnJlbnRQb2ludDsKICAgICAgICAgICAgIHBvaW50MiArPSBtX2N1cnJl
bnRQb2ludDsKLSAgICAgICAgICAgIHBvaW50MyArPSBtX2N1cnJlbnRQb2ludDsKKyAgICAgICAg
ICAgIHRhcmdldFBvaW50ICs9IG1fY3VycmVudFBvaW50OwogICAgICAgICB9Ci0gICAgICAgIG1f
Y29uc3VtZXItPmN1cnZlVG9DdWJpYyhwb2ludDEsIHBvaW50MiwgcG9pbnQzLCBBYnNvbHV0ZUNv
b3JkaW5hdGVzKTsKKyAgICAgICAgbV9jb25zdW1lci0+Y3VydmVUb0N1YmljKHBvaW50MSwgcG9p
bnQyLCB0YXJnZXRQb2ludCwgQWJzb2x1dGVDb29yZGluYXRlcyk7CiAKICAgICAgICAgbV9jb250
cm9sUG9pbnQgPSBwb2ludDI7Ci0gICAgICAgIG1fY3VycmVudFBvaW50ID0gcG9pbnQzOworICAg
ICAgICBtX2N1cnJlbnRQb2ludCA9IHRhcmdldFBvaW50OwogICAgIH0gZWxzZQotICAgICAgICBt
X2NvbnN1bWVyLT5jdXJ2ZVRvQ3ViaWMocG9pbnQxLCBwb2ludDIsIHBvaW50MywgbV9tb2RlKTsK
KyAgICAgICAgbV9jb25zdW1lci0+Y3VydmVUb0N1YmljKHBvaW50MSwgcG9pbnQyLCB0YXJnZXRQ
b2ludCwgbV9tb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTY2LDM1ICsxNjUsMzUg
QEAgYm9vbCBTVkdQYXRoUGFyc2VyOjpwYXJzZUN1cnZlVG9DdWJpY1NtbwogICAgIGZsb2F0IHky
OwogICAgIGZsb2F0IHRvWDsKICAgICBmbG9hdCB0b1k7IAotICAgIGlmICghcGFyc2VOdW1iZXIo
bV9wdHIsIG1fZW5kLCB4MikKLSAgICAgICAgfHwgIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwg
eTIpCi0gICAgICAgIHx8ICFwYXJzZU51bWJlcihtX3B0ciwgbV9lbmQsIHRvWCkKLSAgICAgICAg
fHwgIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwgdG9ZKSkKKyAgICBpZiAoIW1fc291cmNlLT5w
YXJzZUZsb2F0KHgyKQorICAgICAgICB8fCAhbV9zb3VyY2UtPnBhcnNlRmxvYXQoeTIpCisgICAg
ICAgIHx8ICFtX3NvdXJjZS0+cGFyc2VGbG9hdCh0b1gpCisgICAgICAgIHx8ICFtX3NvdXJjZS0+
cGFyc2VGbG9hdCh0b1kpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobV9sYXN0
Q29tbWFuZCAhPSAnYycKLSAgICAgICAgJiYgbV9sYXN0Q29tbWFuZCAhPSAnQycKLSAgICAgICAg
JiYgbV9sYXN0Q29tbWFuZCAhPSAncycKLSAgICAgICAgJiYgbV9sYXN0Q29tbWFuZCAhPSAnUycp
CisgICAgaWYgKG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9DdWJpY0FicworICAgICAg
ICAmJiBtX2xhc3RDb21tYW5kICE9IFBhdGhTZWdDdXJ2ZVRvQ3ViaWNSZWwKKyAgICAgICAgJiYg
bV9sYXN0Q29tbWFuZCAhPSBQYXRoU2VnQ3VydmVUb0N1YmljU21vb3RoQWJzCisgICAgICAgICYm
IG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aFJlbCkKICAgICAgICAg
bV9jb250cm9sUG9pbnQgPSBtX2N1cnJlbnRQb2ludDsKIAogICAgIEZsb2F0UG9pbnQgcG9pbnQy
KHgyLCB5Mik7Ci0gICAgRmxvYXRQb2ludCBwb2ludDModG9YLCB0b1kpOwotICAgIGlmIChtX25v
cm1hbGl6ZWQpIHsKKyAgICBGbG9hdFBvaW50IHRhcmdldFBvaW50KHRvWCwgdG9ZKTsKKyAgICBp
ZiAobV9wYXRoUGFyc2luZ01vZGUgPT0gTm9ybWFsaXplZFBhcnNpbmcpIHsKICAgICAgICAgRmxv
YXRQb2ludCBwb2ludDEgPSBtX2N1cnJlbnRQb2ludDsKICAgICAgICAgcG9pbnQxLnNjYWxlKDIs
IDIpOwogICAgICAgICBwb2ludDEubW92ZSgtbV9jb250cm9sUG9pbnQueCgpLCAtbV9jb250cm9s
UG9pbnQueSgpKTsKICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZWxhdGl2ZUNvb3JkaW5hdGVzKSB7
CiAgICAgICAgICAgICBwb2ludDIgKz0gbV9jdXJyZW50UG9pbnQ7Ci0gICAgICAgICAgICBwb2lu
dDMgKz0gbV9jdXJyZW50UG9pbnQ7CisgICAgICAgICAgICB0YXJnZXRQb2ludCArPSBtX2N1cnJl
bnRQb2ludDsKICAgICAgICAgfQogCi0gICAgICAgIG1fY29uc3VtZXItPmN1cnZlVG9DdWJpYyhw
b2ludDEsIHBvaW50MiwgcG9pbnQzLCBBYnNvbHV0ZUNvb3JkaW5hdGVzKTsKKyAgICAgICAgbV9j
b25zdW1lci0+Y3VydmVUb0N1YmljKHBvaW50MSwgcG9pbnQyLCB0YXJnZXRQb2ludCwgQWJzb2x1
dGVDb29yZGluYXRlcyk7CiAKICAgICAgICAgbV9jb250cm9sUG9pbnQgPSBwb2ludDI7Ci0gICAg
ICAgIG1fY3VycmVudFBvaW50ID0gcG9pbnQzOworICAgICAgICBtX2N1cnJlbnRQb2ludCA9IHRh
cmdldFBvaW50OwogICAgIH0gZWxzZQotICAgICAgICBtX2NvbnN1bWVyLT5jdXJ2ZVRvQ3ViaWNT
bW9vdGgocG9pbnQyLCBwb2ludDMsIG1fbW9kZSk7CisgICAgICAgIG1fY29uc3VtZXItPmN1cnZl
VG9DdWJpY1Ntb290aChwb2ludDIsIHRhcmdldFBvaW50LCBtX21vZGUpOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0yMDQsMzMgKzIwMywzMyBAQCBib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNl
Q3VydmVUb1F1YWRyYXRpCiAgICAgZmxvYXQgeTE7CiAgICAgZmxvYXQgdG9YOwogICAgIGZsb2F0
IHRvWTsKLSAgICBpZiAoIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwgeDEpCi0gICAgICAgIHx8
ICFwYXJzZU51bWJlcihtX3B0ciwgbV9lbmQsIHkxKQotICAgICAgICB8fCAhcGFyc2VOdW1iZXIo
bV9wdHIsIG1fZW5kLCB0b1gpCi0gICAgICAgIHx8ICFwYXJzZU51bWJlcihtX3B0ciwgbV9lbmQs
IHRvWSkpCisgICAgaWYgKCFtX3NvdXJjZS0+cGFyc2VGbG9hdCh4MSkKKyAgICAgICAgfHwgIW1f
c291cmNlLT5wYXJzZUZsb2F0KHkxKQorICAgICAgICB8fCAhbV9zb3VyY2UtPnBhcnNlRmxvYXQo
dG9YKQorICAgICAgICB8fCAhbV9zb3VyY2UtPnBhcnNlRmxvYXQodG9ZKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgRmxvYXRQb2ludCBwb2ludDModG9YLCB0b1kpOwotICAgIGlmICht
X25vcm1hbGl6ZWQpIHsKKyAgICBGbG9hdFBvaW50IHRhcmdldFBvaW50KHRvWCwgdG9ZKTsKKyAg
ICBpZiAobV9wYXRoUGFyc2luZ01vZGUgPT0gTm9ybWFsaXplZFBhcnNpbmcpIHsKICAgICAgICAg
RmxvYXRQb2ludCBwb2ludDEgPSBtX2N1cnJlbnRQb2ludDsKICAgICAgICAgcG9pbnQxLm1vdmUo
MiAqIHgxLCAyICogeTEpOwogICAgICAgICBGbG9hdFBvaW50IHBvaW50Mih0b1ggKyAyICogeDEs
IHRvWSArIDIgKiB5MSk7CiAgICAgICAgIGlmIChtX21vZGUgPT0gUmVsYXRpdmVDb29yZGluYXRl
cykgewogICAgICAgICAgICAgcG9pbnQxLm1vdmUoMiAqIG1fY3VycmVudFBvaW50LngoKSwgMiAq
IG1fY3VycmVudFBvaW50LnkoKSk7CiAgICAgICAgICAgICBwb2ludDIubW92ZSgzICogbV9jdXJy
ZW50UG9pbnQueCgpLCAzICogbV9jdXJyZW50UG9pbnQueSgpKTsKLSAgICAgICAgICAgIHBvaW50
MyArPSBtX2N1cnJlbnRQb2ludDsKKyAgICAgICAgICAgIHRhcmdldFBvaW50ICs9IG1fY3VycmVu
dFBvaW50OwogICAgICAgICB9CiAgICAgICAgIHBvaW50MS5zY2FsZShnT25lT3ZlclRocmVlLCBn
T25lT3ZlclRocmVlKTsKICAgICAgICAgcG9pbnQyLnNjYWxlKGdPbmVPdmVyVGhyZWUsIGdPbmVP
dmVyVGhyZWUpOwogCi0gICAgICAgIG1fY29uc3VtZXItPmN1cnZlVG9DdWJpYyhwb2ludDEsIHBv
aW50MiwgcG9pbnQzLCBBYnNvbHV0ZUNvb3JkaW5hdGVzKTsKKyAgICAgICAgbV9jb25zdW1lci0+
Y3VydmVUb0N1YmljKHBvaW50MSwgcG9pbnQyLCB0YXJnZXRQb2ludCwgQWJzb2x1dGVDb29yZGlu
YXRlcyk7CiAKICAgICAgICAgbV9jb250cm9sUG9pbnQgPSBGbG9hdFBvaW50KHgxLCB5MSk7CiAg
ICAgICAgIGlmIChtX21vZGUgPT0gUmVsYXRpdmVDb29yZGluYXRlcykKICAgICAgICAgICAgIG1f
Y29udHJvbFBvaW50ICs9IG1fY3VycmVudFBvaW50OwotICAgICAgICBtX2N1cnJlbnRQb2ludCA9
IHBvaW50MzsKKyAgICAgICAgbV9jdXJyZW50UG9pbnQgPSB0YXJnZXRQb2ludDsKICAgICB9IGVs
c2UKLSAgICAgICAgbV9jb25zdW1lci0+Y3VydmVUb1F1YWRyYXRpYyhGbG9hdFBvaW50KHgxLCB5
MSksIHBvaW50MywgbV9tb2RlKTsKKyAgICAgICAgbV9jb25zdW1lci0+Y3VydmVUb1F1YWRyYXRp
YyhGbG9hdFBvaW50KHgxLCB5MSksIHRhcmdldFBvaW50LCBtX21vZGUpOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0yMzgsMzIgKzIzNywzMyBAQCBib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNl
Q3VydmVUb1F1YWRyYXRpCiB7CiAgICAgZmxvYXQgdG9YOwogICAgIGZsb2F0IHRvWTsKLSAgICBp
ZiAoIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwgdG9YKSB8fCAhcGFyc2VOdW1iZXIobV9wdHIs
IG1fZW5kLCB0b1kpKQorICAgIGlmICghbV9zb3VyY2UtPnBhcnNlRmxvYXQodG9YKSB8fCAhbV9z
b3VyY2UtPnBhcnNlRmxvYXQodG9ZKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICht
X2xhc3RDb21tYW5kICE9ICdxJwotICAgICAgICAmJiBtX2xhc3RDb21tYW5kICE9ICdRJwotICAg
ICAgICAmJiBtX2xhc3RDb21tYW5kICE9ICd0JwotICAgICAgICAmJiBtX2xhc3RDb21tYW5kICE9
ICdUJykKKworICAgIGlmIChtX2xhc3RDb21tYW5kICE9IFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGlj
QWJzCisgICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNS
ZWwKKyAgICAgICAgJiYgbV9sYXN0Q29tbWFuZCAhPSBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1Nt
b290aEFicworICAgICAgICAmJiBtX2xhc3RDb21tYW5kICE9IFBhdGhTZWdDdXJ2ZVRvUXVhZHJh
dGljU21vb3RoUmVsKQogICAgICAgICBtX2NvbnRyb2xQb2ludCA9IG1fY3VycmVudFBvaW50Owog
Ci0gICAgaWYgKG1fbm9ybWFsaXplZCkgeworICAgIGlmIChtX3BhdGhQYXJzaW5nTW9kZSA9PSBO
b3JtYWxpemVkUGFyc2luZykgewogICAgICAgICBGbG9hdFBvaW50IGN1YmljUG9pbnQgPSBtX2N1
cnJlbnRQb2ludDsKICAgICAgICAgY3ViaWNQb2ludC5zY2FsZSgyLCAyKTsKICAgICAgICAgY3Vi
aWNQb2ludC5tb3ZlKC1tX2NvbnRyb2xQb2ludC54KCksIC1tX2NvbnRyb2xQb2ludC55KCkpOwog
ICAgICAgICBGbG9hdFBvaW50IHBvaW50MShtX2N1cnJlbnRQb2ludC54KCkgKyAyICogY3ViaWNQ
b2ludC54KCksIG1fY3VycmVudFBvaW50LnkoKSArIDIgKiBjdWJpY1BvaW50LnkoKSk7CiAgICAg
ICAgIEZsb2F0UG9pbnQgcG9pbnQyKHRvWCArIDIgKiBjdWJpY1BvaW50LngoKSwgdG9ZICsgMiAq
IGN1YmljUG9pbnQueSgpKTsKLSAgICAgICAgRmxvYXRQb2ludCBwb2ludDModG9YLCB0b1kpOwor
ICAgICAgICBGbG9hdFBvaW50IHRhcmdldFBvaW50KHRvWCwgdG9ZKTsKICAgICAgICAgaWYgKG1f
bW9kZSA9PSBSZWxhdGl2ZUNvb3JkaW5hdGVzKSB7CiAgICAgICAgICAgICBwb2ludDIgKz0gbV9j
dXJyZW50UG9pbnQ7Ci0gICAgICAgICAgICBwb2ludDMgKz0gbV9jdXJyZW50UG9pbnQ7CisgICAg
ICAgICAgICB0YXJnZXRQb2ludCArPSBtX2N1cnJlbnRQb2ludDsKICAgICAgICAgfQogICAgICAg
ICBwb2ludDEuc2NhbGUoZ09uZU92ZXJUaHJlZSwgZ09uZU92ZXJUaHJlZSk7CiAgICAgICAgIHBv
aW50Mi5zY2FsZShnT25lT3ZlclRocmVlLCBnT25lT3ZlclRocmVlKTsKIAotICAgICAgICBtX2Nv
bnN1bWVyLT5jdXJ2ZVRvQ3ViaWMocG9pbnQxLCBwb2ludDIsIHBvaW50MywgQWJzb2x1dGVDb29y
ZGluYXRlcyk7CisgICAgICAgIG1fY29uc3VtZXItPmN1cnZlVG9DdWJpYyhwb2ludDEsIHBvaW50
MiwgdGFyZ2V0UG9pbnQsIEFic29sdXRlQ29vcmRpbmF0ZXMpOwogCiAgICAgICAgIG1fY29udHJv
bFBvaW50ID0gY3ViaWNQb2ludDsKLSAgICAgICAgbV9jdXJyZW50UG9pbnQgPSBwb2ludDM7Cisg
ICAgICAgIG1fY3VycmVudFBvaW50ID0gdGFyZ2V0UG9pbnQ7CiAgICAgfSBlbHNlCiAgICAgICAg
IG1fY29uc3VtZXItPmN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoRmxvYXRQb2ludCh0b1gsIHRvWSks
IG1fbW9kZSk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNzgsMTE1ICsyNzgsMTI1IEBAIGJvb2wg
U1ZHUGF0aFBhcnNlcjo6cGFyc2VBcmNUb1NlZ21lbnQoKQogICAgIGZsb2F0IHJ5OwogICAgIGZs
b2F0IHRvWDsKICAgICBmbG9hdCB0b1k7Ci0gICAgaWYgKCFwYXJzZU51bWJlcihtX3B0ciwgbV9l
bmQsIHJ4KQotICAgICAgICB8fCAhcGFyc2VOdW1iZXIobV9wdHIsIG1fZW5kLCByeSkKLSAgICAg
ICAgfHwgIXBhcnNlTnVtYmVyKG1fcHRyLCBtX2VuZCwgYW5nbGUpCi0gICAgICAgIHx8ICFwYXJz
ZUFyY0ZsYWcobV9wdHIsIG1fZW5kLCBsYXJnZUFyYykKLSAgICAgICAgfHwgIXBhcnNlQXJjRmxh
ZyhtX3B0ciwgbV9lbmQsIHN3ZWVwKQotICAgICAgICB8fCAhcGFyc2VOdW1iZXIobV9wdHIsIG1f
ZW5kLCB0b1gpCi0gICAgICAgIHx8ICFwYXJzZU51bWJlcihtX3B0ciwgbV9lbmQsIHRvWSkpCisg
ICAgaWYgKCFtX3NvdXJjZS0+cGFyc2VGbG9hdChyeCkKKyAgICAgICAgfHwgIW1fc291cmNlLT5w
YXJzZUZsb2F0KHJ5KQorICAgICAgICB8fCAhbV9zb3VyY2UtPnBhcnNlRmxvYXQoYW5nbGUpCisg
ICAgICAgIHx8ICFtX3NvdXJjZS0+cGFyc2VGbGFnKGxhcmdlQXJjKQorICAgICAgICB8fCAhbV9z
b3VyY2UtPnBhcnNlRmxhZyhzd2VlcCkKKyAgICAgICAgfHwgIW1fc291cmNlLT5wYXJzZUZsb2F0
KHRvWCkKKyAgICAgICAgfHwgIW1fc291cmNlLT5wYXJzZUZsb2F0KHRvWSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIEZsb2F0UG9pbnQgcG9pbnQyID0gRmxvYXRQb2ludCh0b1gsIHRv
WSk7CisgICAgRmxvYXRQb2ludCB0YXJnZXRQb2ludCA9IEZsb2F0UG9pbnQodG9YLCB0b1kpOwog
ICAgIC8vIElmIHJ4ID0gMCBvciByeSA9IDAgdGhlbiB0aGlzIGFyYyBpcyB0cmVhdGVkIGFzIGEg
c3RyYWlnaHQgbGluZSBzZWdtZW50IChhICJsaW5ldG8iKSBqb2luaW5nIHRoZSBlbmRwb2ludHMu
CiAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2ltcGxub3RlLmh0bWwjQXJjT3V0T2ZS
YW5nZVBhcmFtZXRlcnMKICAgICByeCA9IGZhYnNmKHJ4KTsKICAgICByeSA9IGZhYnNmKHJ5KTsK
ICAgICBpZiAoIXJ4IHx8ICFyeSkgewotICAgICAgICBpZiAobV9ub3JtYWxpemVkKSB7CisgICAg
ICAgIGlmIChtX3BhdGhQYXJzaW5nTW9kZSA9PSBOb3JtYWxpemVkUGFyc2luZykgewogICAgICAg
ICAgICAgaWYgKG1fbW9kZSA9PSBSZWxhdGl2ZUNvb3JkaW5hdGVzKQotICAgICAgICAgICAgICAg
IG1fY3VycmVudFBvaW50ICs9IHBvaW50MjsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRQb2lu
dCArPSB0YXJnZXRQb2ludDsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX2N1
cnJlbnRQb2ludCA9IHBvaW50MjsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRQb2ludCA9IHRh
cmdldFBvaW50OwogICAgICAgICAgICAgbV9jb25zdW1lci0+bGluZVRvKG1fY3VycmVudFBvaW50
LCBBYnNvbHV0ZUNvb3JkaW5hdGVzKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX2Nv
bnN1bWVyLT5saW5lVG8ocG9pbnQyLCBtX21vZGUpOworICAgICAgICAgICAgbV9jb25zdW1lci0+
bGluZVRvKHRhcmdldFBvaW50LCBtX21vZGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKLSAgICBpZiAobV9ub3JtYWxpemVkKSB7CisgICAgaWYgKG1fcGF0aFBhcnNpbmdNb2RlID09
IE5vcm1hbGl6ZWRQYXJzaW5nKSB7CiAgICAgICAgIEZsb2F0UG9pbnQgcG9pbnQxID0gbV9jdXJy
ZW50UG9pbnQ7CiAgICAgICAgIGlmIChtX21vZGUgPT0gUmVsYXRpdmVDb29yZGluYXRlcykKLSAg
ICAgICAgICAgIHBvaW50MiArPSBtX2N1cnJlbnRQb2ludDsKLSAgICAgICAgbV9jdXJyZW50UG9p
bnQgPSBwb2ludDI7Ci0gICAgICAgIHJldHVybiBkZWNvbXBvc2VBcmNUb0N1YmljKGFuZ2xlLCBy
eCwgcnksIHBvaW50MSwgcG9pbnQyLCBsYXJnZUFyYywgc3dlZXApOworICAgICAgICAgICAgdGFy
Z2V0UG9pbnQgKz0gbV9jdXJyZW50UG9pbnQ7CisgICAgICAgIG1fY3VycmVudFBvaW50ID0gdGFy
Z2V0UG9pbnQ7CisgICAgICAgIHJldHVybiBkZWNvbXBvc2VBcmNUb0N1YmljKGFuZ2xlLCByeCwg
cnksIHBvaW50MSwgdGFyZ2V0UG9pbnQsIGxhcmdlQXJjLCBzd2VlcCk7CiAgICAgfQotICAgIG1f
Y29uc3VtZXItPmFyY1RvKHBvaW50MiwgcngsIHJ5LCBhbmdsZSwgbGFyZ2VBcmMsIHN3ZWVwLCBt
X21vZGUpOworICAgIG1fY29uc3VtZXItPmFyY1RvKHJ4LCByeSwgYW5nbGUsIGxhcmdlQXJjLCBz
d2VlcCwgdGFyZ2V0UG9pbnQsIG1fbW9kZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
U1ZHUGF0aFBhcnNlcjo6cGFyc2VQYXRoRGF0YVN0cmluZyhjb25zdCBTdHJpbmcmIHMsIGJvb2wg
bm9ybWFsaXplZCkKK2Jvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VQYXRoRGF0YUZyb21Tb3VyY2Uo
UGF0aFBhcnNpbmdNb2RlIHBhdGhQYXJzaW5nTW9kZSkKIHsKLSAgICBtX3B0ciA9IHMuY2hhcmFj
dGVycygpOwotICAgIG1fZW5kID0gbV9wdHIgKyBzLmxlbmd0aCgpOwotICAgIG1fbm9ybWFsaXpl
ZCA9IG5vcm1hbGl6ZWQ7CisgICAgQVNTRVJUKG1fc291cmNlKTsKKworICAgIG1fcGF0aFBhcnNp
bmdNb2RlID0gcGF0aFBhcnNpbmdNb2RlOwogCiAgICAgbV9jb250cm9sUG9pbnQgPSBGbG9hdFBv
aW50KCk7CiAgICAgbV9jdXJyZW50UG9pbnQgPSBGbG9hdFBvaW50KCk7CiAgICAgbV9zdWJQYXRo
UG9pbnQgPSBGbG9hdFBvaW50KCk7Ci0gICAgbV9wYXRoQ2xvc2VkID0gdHJ1ZTsKKyAgICBtX2Ns
b3NlUGF0aCA9IHRydWU7CiAKICAgICAvLyBTa2lwIGFueSBsZWFkaW5nIHNwYWNlcy4KLSAgICBp
ZiAoIXNraXBPcHRpb25hbFNwYWNlcyhtX3B0ciwgbV9lbmQpKQorICAgIGlmICghbV9zb3VyY2Ut
Pm1vdmVUb05leHRUb2tlbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjaGFyIGNv
bW1hbmQgPSAqKG1fcHRyKyspOwotICAgIG1fbGFzdENvbW1hbmQgPSAnICc7CisgICAgU1ZHUGF0
aFNlZ1R5cGUgY29tbWFuZDsKKyAgICBtX3NvdXJjZS0+cGFyc2VTVkdTZWdtZW50VHlwZShjb21t
YW5kKTsKKyAgICBtX2xhc3RDb21tYW5kID0gUGF0aFNlZ1Vua25vd247CisKICAgICAvLyBQYXRo
IG11c3Qgc3RhcnQgd2l0aCBtb3ZldG8uCi0gICAgaWYgKGNvbW1hbmQgIT0gJ20nICYmIGNvbW1h
bmQgIT0gJ00nKQorICAgIGlmIChjb21tYW5kICE9IFBhdGhTZWdNb3ZlVG9BYnMgJiYgY29tbWFu
ZCAhPSBQYXRoU2VnTW92ZVRvUmVsKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB3aGls
ZSAodHJ1ZSkgewogICAgICAgICAvLyBTa2lwIHNwYWNlcyBiZXR3ZWVuIGNvbW1hbmQgYW5kIGZp
cnN0IGNvb3JkaW5hdGUuCi0gICAgICAgIHNraXBPcHRpb25hbFNwYWNlcyhtX3B0ciwgbV9lbmQp
OwotICAgICAgICBtX21vZGUgPSBjb21tYW5kID49ICdhJyAmJiBjb21tYW5kIDw9ICd6JyA/IFJl
bGF0aXZlQ29vcmRpbmF0ZXMgOiBBYnNvbHV0ZUNvb3JkaW5hdGVzOworICAgICAgICBtX3NvdXJj
ZS0+bW92ZVRvTmV4dFRva2VuKCk7CisgICAgICAgIG1fbW9kZSA9IEFic29sdXRlQ29vcmRpbmF0
ZXM7CiAgICAgICAgIHN3aXRjaCAoY29tbWFuZCkgewotICAgICAgICBjYXNlICdtJzoKLSAgICAg
ICAgY2FzZSAnTSc6CisgICAgICAgIGNhc2UgUGF0aFNlZ01vdmVUb1JlbDoKKyAgICAgICAgICAg
IG1fbW9kZSA9IFJlbGF0aXZlQ29vcmRpbmF0ZXM7CisgICAgICAgIGNhc2UgUGF0aFNlZ01vdmVU
b0FiczoKICAgICAgICAgICAgIGlmICghcGFyc2VNb3ZlVG9TZWdtZW50KCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ2wn
OgotICAgICAgICBjYXNlICdMJzoKKyAgICAgICAgY2FzZSBQYXRoU2VnTGluZVRvUmVsOgorICAg
ICAgICAgICAgbV9tb2RlID0gUmVsYXRpdmVDb29yZGluYXRlczsKKyAgICAgICAgY2FzZSBQYXRo
U2VnTGluZVRvQWJzOgogICAgICAgICAgICAgaWYgKCFwYXJzZUxpbmVUb1NlZ21lbnQoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSAnaCc6Ci0gICAgICAgIGNhc2UgJ0gnOgorICAgICAgICBjYXNlIFBhdGhTZWdMaW5lVG9I
b3Jpem9udGFsUmVsOgorICAgICAgICAgICAgbV9tb2RlID0gUmVsYXRpdmVDb29yZGluYXRlczsK
KyAgICAgICAgY2FzZSBQYXRoU2VnTGluZVRvSG9yaXpvbnRhbEFiczoKICAgICAgICAgICAgIGlm
ICghcGFyc2VMaW5lVG9Ib3Jpem9udGFsU2VnbWVudCgpKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICd2JzoKLSAgICAgICAg
Y2FzZSAnVic6CisgICAgICAgIGNhc2UgUGF0aFNlZ0xpbmVUb1ZlcnRpY2FsUmVsOgorICAgICAg
ICAgICAgbV9tb2RlID0gUmVsYXRpdmVDb29yZGluYXRlczsKKyAgICAgICAgY2FzZSBQYXRoU2Vn
TGluZVRvVmVydGljYWxBYnM6CiAgICAgICAgICAgICBpZiAoIXBhcnNlTGluZVRvVmVydGljYWxT
ZWdtZW50KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgJ3onOgotICAgICAgICBjYXNlICdaJzoKKyAgICAgICAgY2FzZSBQ
YXRoU2VnQ2xvc2VQYXRoOgogICAgICAgICAgICAgcGFyc2VDbG9zZVBhdGhTZWdtZW50KCk7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnYyc6Ci0gICAgICAgIGNhc2UgJ0MnOgor
ICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNSZWw6CisgICAgICAgICAgICBtX21vZGUg
PSBSZWxhdGl2ZUNvb3JkaW5hdGVzOworICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNB
YnM6CiAgICAgICAgICAgICBpZiAoIXBhcnNlQ3VydmVUb0N1YmljU2VnbWVudCgpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
ICdzJzoKLSAgICAgICAgY2FzZSAnUyc6CisgICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9DdWJp
Y1Ntb290aFJlbDoKKyAgICAgICAgICAgIG1fbW9kZSA9IFJlbGF0aXZlQ29vcmRpbmF0ZXM7Cisg
ICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aEFiczoKICAgICAgICAgICAgIGlm
ICghcGFyc2VDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3EnOgotICAgICAg
ICBjYXNlICdRJzoKKyAgICAgICAgY2FzZSBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1JlbDoKKyAg
ICAgICAgICAgIG1fbW9kZSA9IFJlbGF0aXZlQ29vcmRpbmF0ZXM7CisgICAgICAgIGNhc2UgUGF0
aFNlZ0N1cnZlVG9RdWFkcmF0aWNBYnM6CiAgICAgICAgICAgICBpZiAoIXBhcnNlQ3VydmVUb1F1
YWRyYXRpY1NlZ21lbnQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSAndCc6Ci0gICAgICAgIGNhc2UgJ1QnOgorICAgICAg
ICBjYXNlIFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljU21vb3RoUmVsOgorICAgICAgICAgICAgbV9t
b2RlID0gUmVsYXRpdmVDb29yZGluYXRlczsKKyAgICAgICAgY2FzZSBQYXRoU2VnQ3VydmVUb1F1
YWRyYXRpY1Ntb290aEFiczoKICAgICAgICAgICAgIGlmICghcGFyc2VDdXJ2ZVRvUXVhZHJhdGlj
U21vb3RoU2VnbWVudCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlICdhJzoKLSAgICAgICAgY2FzZSAnQSc6CisgICAgICAg
IGNhc2UgUGF0aFNlZ0FyY1JlbDoKKyAgICAgICAgICAgIG1fbW9kZSA9IFJlbGF0aXZlQ29vcmRp
bmF0ZXM7CisgICAgICAgIGNhc2UgUGF0aFNlZ0FyY0FiczoKICAgICAgICAgICAgIGlmICghcGFy
c2VBcmNUb1NlZ21lbnQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTM5NSwyMyArNDA1LDE5IEBAIGJvb2wgU1ZHUGF0aFBhcnNlcjo6cGFy
c2VQYXRoRGF0YVN0cmluZygKICAgICAgICAgfQogICAgICAgICBtX2xhc3RDb21tYW5kID0gY29t
bWFuZDsKIAotICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQpCisgICAgICAgIGlmICghbV9zb3Vy
Y2UtPmhhc01vcmVEYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICAv
LyBDaGVjayBmb3IgcmVtYWluaW5nIGNvb3JkaW5hdGVzIGluIHRoZSBjdXJyZW50IGNvbW1hbmQu
Ci0gICAgICAgIGlmICgoKm1fcHRyID09ICcrJyB8fCAqbV9wdHIgPT0gJy0nIHx8ICptX3B0ciA9
PSAnLicgfHwgKCptX3B0ciA+PSAnMCcgJiYgKm1fcHRyIDw9ICc5JykpCi0gICAgICAgICAgICAm
JiBjb21tYW5kICE9ICd6JyAmJiBjb21tYW5kICE9ICdaJykgewotICAgICAgICAgICAgaWYgKGNv
bW1hbmQgPT0gJ00nKQotICAgICAgICAgICAgICAgIGNvbW1hbmQgPSAnTCc7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChjb21tYW5kID09ICdtJykKLSAgICAgICAgICAgICAgICBjb21tYW5kID0gJ2wn
OwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGNvbW1hbmQgPSAqKG1fcHRyKyspOworICAg
ICAgICBjb21tYW5kID0gbV9zb3VyY2UtPm5leHRDb21tYW5kKGNvbW1hbmQpOwogCi0gICAgICAg
IGlmIChtX2xhc3RDb21tYW5kICE9ICdDJyAmJiBtX2xhc3RDb21tYW5kICE9ICdjJwotICAgICAg
ICAgICAgJiYgbV9sYXN0Q29tbWFuZCAhPSAnUycgJiYgbV9sYXN0Q29tbWFuZCAhPSAncycKLSAg
ICAgICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gJ1EnICYmIG1fbGFzdENvbW1hbmQgIT0gJ3En
Ci0gICAgICAgICAgICAmJiBtX2xhc3RDb21tYW5kICE9ICdUJyAmJiBtX2xhc3RDb21tYW5kICE9
ICd0JykKKyAgICAgICAgaWYgKG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9DdWJpY0Fi
cworICAgICAgICAgICAgJiYgbV9sYXN0Q29tbWFuZCAhPSBQYXRoU2VnQ3VydmVUb0N1YmljUmVs
CisgICAgICAgICAgICAmJiBtX2xhc3RDb21tYW5kICE9IFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9v
dGhBYnMKKyAgICAgICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9DdWJp
Y1Ntb290aFJlbAorICAgICAgICAgICAgJiYgbV9sYXN0Q29tbWFuZCAhPSBQYXRoU2VnQ3VydmVU
b1F1YWRyYXRpY0FicworICAgICAgICAgICAgJiYgbV9sYXN0Q29tbWFuZCAhPSBQYXRoU2VnQ3Vy
dmVUb1F1YWRyYXRpY1JlbAorICAgICAgICAgICAgJiYgbV9sYXN0Q29tbWFuZCAhPSBQYXRoU2Vn
Q3VydmVUb1F1YWRyYXRpY1Ntb290aEFicworICAgICAgICAgICAgJiYgbV9sYXN0Q29tbWFuZCAh
PSBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290aFJlbCkKICAgICAgICAgICAgIG1fY29udHJv
bFBvaW50ID0gbV9jdXJyZW50UG9pbnQ7CiAgICAgfQogCkBAIC00OTIsMTMgKzQ5OCwxMyBAQCBi
b29sIFNWR1BhdGhQYXJzZXI6OmRlY29tcG9zZUFyY1RvQ3ViaWMoCiAKICAgICAgICAgcG9pbnQx
ID0gRmxvYXRQb2ludChjb3NTdGFydFRoZXRhIC0gdCAqIHNpblN0YXJ0VGhldGEsIHNpblN0YXJ0
VGhldGEgKyB0ICogY29zU3RhcnRUaGV0YSk7CiAgICAgICAgIHBvaW50MS5tb3ZlKGNlbnRlclBv
aW50LngoKSwgY2VudGVyUG9pbnQueSgpKTsKLSAgICAgICAgRmxvYXRQb2ludCBwb2ludDMgPSBG
bG9hdFBvaW50KGNvc0VuZFRoZXRhLCBzaW5FbmRUaGV0YSk7Ci0gICAgICAgIHBvaW50My5tb3Zl
KGNlbnRlclBvaW50LngoKSwgY2VudGVyUG9pbnQueSgpKTsKLSAgICAgICAgcG9pbnQyID0gcG9p
bnQzOworICAgICAgICBGbG9hdFBvaW50IHRhcmdldFBvaW50ID0gRmxvYXRQb2ludChjb3NFbmRU
aGV0YSwgc2luRW5kVGhldGEpOworICAgICAgICB0YXJnZXRQb2ludC5tb3ZlKGNlbnRlclBvaW50
LngoKSwgY2VudGVyUG9pbnQueSgpKTsKKyAgICAgICAgcG9pbnQyID0gdGFyZ2V0UG9pbnQ7CiAg
ICAgICAgIHBvaW50Mi5tb3ZlKHQgKiBzaW5FbmRUaGV0YSwgLXQgKiBjb3NFbmRUaGV0YSk7CiAK
ICAgICAgICAgbV9jb25zdW1lci0+Y3VydmVUb0N1YmljKHBvaW50VHJhbnNmb3JtLm1hcFBvaW50
KHBvaW50MSksIHBvaW50VHJhbnNmb3JtLm1hcFBvaW50KHBvaW50MiksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwb2ludFRyYW5zZm9ybS5tYXBQb2ludChwb2ludDMpLCBBYnNv
bHV0ZUNvb3JkaW5hdGVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50
VHJhbnNmb3JtLm1hcFBvaW50KHRhcmdldFBvaW50KSwgQWJzb2x1dGVDb29yZGluYXRlcyk7CiAg
ICAgfQogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIuaAkocmV2aXNpb24g
NjQ4NzMpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDE1ICsyNywyMSBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKICNpbmNsdWRlICJTVkdQYXRoQ29uc3VtZXIuaCIKKyNpbmNsdWRlICJTVkdQYXRoU2Vn
LmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNvdXJjZS5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgU1ZHUGF0aFBhcnNlciB7CitjbGFzcyBTVkdQYXRoUGFyc2VyIDogcHVibGljIE5v
bmNvcHlhYmxlIHsKIHB1YmxpYzoKLSAgICBTVkdQYXRoUGFyc2VyKFNWR1BhdGhDb25zdW1lciop
OworICAgIFNWR1BhdGhQYXJzZXIoKTsKICAgICB+U1ZHUGF0aFBhcnNlcigpOwogCi0gICAgYm9v
bCBwYXJzZVBhdGhEYXRhU3RyaW5nKGNvbnN0IFN0cmluZyYsIGJvb2wgbm9ybWFsaXplZCA9IGZh
bHNlKTsKKyAgICBib29sIHBhcnNlUGF0aERhdGFGcm9tU291cmNlKFBhdGhQYXJzaW5nTW9kZSBw
YXRoUGFyc2luZ01vZGUpOworICAgIHZvaWQgc2V0Q3VycmVudENvbnN1bWVyKFNWR1BhdGhDb25z
dW1lciogY29uc3VtZXIpIHsgbV9jb25zdW1lciA9IGNvbnN1bWVyOyB9CisgICAgdm9pZCBzZXRD
dXJyZW50U291cmNlKFNWR1BhdGhTb3VyY2UqIHNvdXJjZSkgeyBtX3NvdXJjZSA9IHNvdXJjZTt9
CiAKIHByaXZhdGU6CiAgICAgYm9vbCBkZWNvbXBvc2VBcmNUb0N1YmljKGZsb2F0LCBmbG9hdCwg
ZmxvYXQsIEZsb2F0UG9pbnQmLCBGbG9hdFBvaW50JiwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wg
c3dlZXBGbGFnKTsKQEAgLTUwLDEzICs1NiwxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgcGFyc2VD
dXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCgpOwogICAgIGJvb2wgcGFyc2VBcmNUb1NlZ21l
bnQoKTsKIAorICAgIFNWR1BhdGhTb3VyY2UqIG1fc291cmNlOwogICAgIFNWR1BhdGhDb25zdW1l
ciogbV9jb25zdW1lcjsKICAgICBQYXRoQ29vcmRpbmF0ZU1vZGUgbV9tb2RlOwotICAgIGNvbnN0
IFVDaGFyKiBtX3B0cjsKLSAgICBjb25zdCBVQ2hhciogbV9lbmQ7Ci0gICAgY2hhciBtX2xhc3RD
b21tYW5kOwotICAgIGJvb2wgbV9ub3JtYWxpemVkOwotICAgIGJvb2wgbV9wYXRoQ2xvc2VkOwor
ICAgIFBhdGhQYXJzaW5nTW9kZSBtX3BhdGhQYXJzaW5nTW9kZTsKKyAgICBTVkdQYXRoU2VnVHlw
ZSBtX2xhc3RDb21tYW5kOworICAgIGJvb2wgbV9jbG9zZVBhdGg7CiAgICAgRmxvYXRQb2ludCBt
X2NvbnRyb2xQb2ludDsKICAgICBGbG9hdFBvaW50IG1fY3VycmVudFBvaW50OwogICAgIEZsb2F0
UG9pbnQgbV9zdWJQYXRoUG9pbnQ7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyRmFj
dG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlckZhY3Rvcnku
Y3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJTVkdQYXRoUGFyc2Vy
RmFjdG9yeS5oIgorCisjaW5jbHVkZSAiU1ZHUGF0aEJ1aWxkZXIuaCIKKyNpbmNsdWRlICJTVkdQ
YXRoUGFyc2VyLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmgiCisjaW5jbHVk
ZSAiU1ZHUGF0aFN0cmluZ1NvdXJjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRp
YyBTVkdQYXRoQnVpbGRlciogZ2xvYmFsU1ZHUGF0aEJ1aWxkZXIoKQoreworICAgIHN0YXRpYyBT
VkdQYXRoQnVpbGRlciogc19idWlsZGVyID0gMDsKKyAgICBpZiAoIXNfYnVpbGRlcikKKyAgICAg
ICAgc19idWlsZGVyID0gbmV3IFNWR1BhdGhCdWlsZGVyOworCisgICAgcmV0dXJuIHNfYnVpbGRl
cjsKK30KKworc3RhdGljIFNWR1BhdGhTZWdMaXN0QnVpbGRlciogZ2xvYmFsU1ZHUGF0aFNlZ0xp
c3RCdWlsZGVyKCkKK3sKKyAgICBzdGF0aWMgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyKiBzX2J1aWxk
ZXIgPSAwOworICAgIGlmICghc19idWlsZGVyKQorICAgICAgICBzX2J1aWxkZXIgPSBuZXcgU1ZH
UGF0aFNlZ0xpc3RCdWlsZGVyOworCisgICAgcmV0dXJuIHNfYnVpbGRlcjsKK30KKworc3RhdGlj
IFNWR1BhdGhQYXJzZXIqIGdsb2JhbFNWR1BhdGhQYXJzZXIoKQoreworICAgIHN0YXRpYyBTVkdQ
YXRoUGFyc2VyKiBzX3BhcnNlciA9IDA7CisgICAgaWYgKCFzX3BhcnNlcikKKyAgICAgICAgc19w
YXJzZXIgPSBuZXcgU1ZHUGF0aFBhcnNlcjsKKworICAgIHJldHVybiBzX3BhcnNlcjsKK30KKwor
U1ZHUGF0aFBhcnNlckZhY3RvcnkqIFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCkKK3sKKyAg
ICBzdGF0aWMgU1ZHUGF0aFBhcnNlckZhY3RvcnkqIHNfaW5zdGFuY2UgPSAwOworICAgIGlmICgh
c19pbnN0YW5jZSkKKyAgICAgICAgc19pbnN0YW5jZSA9IG5ldyBTVkdQYXRoUGFyc2VyRmFjdG9y
eTsKKworICAgIHJldHVybiBzX2luc3RhbmNlOworfQorCitTVkdQYXRoUGFyc2VyRmFjdG9yeTo6
U1ZHUGF0aFBhcnNlckZhY3RvcnkoKQoreworfQorCitTVkdQYXRoUGFyc2VyRmFjdG9yeTo6flNW
R1BhdGhQYXJzZXJGYWN0b3J5KCkKK3sKK30KKworYm9vbCBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6
YnVpbGRQYXRoRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIGQsIFBhdGgmIHJlc3VsdCkKK3sKKyAg
ICBpZiAoZC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFNWR1BhdGhC
dWlsZGVyKiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0aEJ1aWxkZXIoKTsKKyAgICBidWlsZGVyLT5z
ZXRDdXJyZW50UGF0aCgmcmVzdWx0KTsKKworICAgIFNWR1BhdGhQYXJzZXIqIHBhcnNlciA9IGds
b2JhbFNWR1BhdGhQYXJzZXIoKTsKKyAgICBwYXJzZXItPnNldEN1cnJlbnRDb25zdW1lcihidWls
ZGVyKTsKKworICAgIE93blB0cjxTVkdQYXRoU3RyaW5nU291cmNlPiBzb3VyY2UgPSBTVkdQYXRo
U3RyaW5nU291cmNlOjpjcmVhdGUoZCk7CisgICAgcGFyc2VyLT5zZXRDdXJyZW50U291cmNlKHNv
dXJjZS5nZXQoKSk7CisKKyAgICBib29sIG9rID0gcGFyc2VyLT5wYXJzZVBhdGhEYXRhRnJvbVNv
dXJjZShOb3JtYWxpemVkUGFyc2luZyk7CisgICAgcGFyc2VyLT5zZXRDdXJyZW50Q29uc3VtZXIo
MCk7CisgICAgcGFyc2VyLT5zZXRDdXJyZW50U291cmNlKDApOworICAgIGJ1aWxkZXItPnNldEN1
cnJlbnRQYXRoKDApOworICAgIHJldHVybiBvazsKK30KKworYm9vbCBTVkdQYXRoUGFyc2VyRmFj
dG9yeTo6YnVpbGRTVkdQYXRoU2VnTGlzdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBkLCBTVkdQ
YXRoU2VnTGlzdCogcmVzdWx0LCBQYXRoUGFyc2luZ01vZGUgcGFyc2luZ01vZGUpCit7CisgICAg
QVNTRVJUKHJlc3VsdCk7CisgICAgaWYgKGQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIqIGJ1aWxkZXIgPSBnbG9iYWxTVkdQYXRo
U2VnTGlzdEJ1aWxkZXIoKTsKKyAgICBidWlsZGVyLT5zZXRDdXJyZW50U1ZHUGF0aFNlZ0xpc3Qo
cmVzdWx0KTsKKworICAgIFNWR1BhdGhQYXJzZXIqIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQYXJz
ZXIoKTsKKyAgICBwYXJzZXItPnNldEN1cnJlbnRDb25zdW1lcihidWlsZGVyKTsKKworICAgIE93
blB0cjxTVkdQYXRoU3RyaW5nU291cmNlPiBzb3VyY2UgPSBTVkdQYXRoU3RyaW5nU291cmNlOjpj
cmVhdGUoZCk7CisgICAgcGFyc2VyLT5zZXRDdXJyZW50U291cmNlKHNvdXJjZS5nZXQoKSk7CisK
KyAgICBib29sIG9rID0gcGFyc2VyLT5wYXJzZVBhdGhEYXRhRnJvbVNvdXJjZShwYXJzaW5nTW9k
ZSk7CisgICAgcGFyc2VyLT5zZXRDdXJyZW50Q29uc3VtZXIoMCk7CisgICAgcGFyc2VyLT5zZXRD
dXJyZW50U291cmNlKDApOworICAgIGJ1aWxkZXItPnNldEN1cnJlbnRTVkdQYXRoU2VnTGlzdCgw
KTsKKyAgICByZXR1cm4gb2s7Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdQYXRoUGFyc2VyRmFjdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhQ
YXJzZXJGYWN0b3J5LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2Vy
RmFjdG9yeS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaWZuZGVmIFNWR1BhdGhQYXJzZXJGYWN0b3J5X2gKKyNkZWZpbmUgU1ZHUGF0aFBhcnNlckZh
Y3RvcnlfaAorCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJQYXRoLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTVkdQYXRoQ29uc3VtZXIuaCIKKyNpbmNsdWRl
ICJTVkdQYXRoU2VnTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNWR1Bh
dGhQYXJzZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU1ZHUGF0aFBhcnNlckZhY3Rv
cnkqIHNlbGYoKTsKKworICAgIGJvb2wgYnVpbGRQYXRoRnJvbVN0cmluZyhjb25zdCBTdHJpbmcm
LCBQYXRoJik7CisKKyAgICBib29sIGJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYsIFNWR1BhdGhTZWdMaXN0KiwgUGF0aFBhcnNpbmdNb2RlKTsKKworcHJpdmF0ZToK
KyAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSgpOworICAgIH5TVkdQYXRoUGFyc2VyRmFjdG9yeSgp
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykK
KyNlbmRpZiAvLyBTVkdQYXRoUGFyc2VyRmFjdG9yeV9oCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQ
YXRoU2VnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZy5oCShyZXZpc2lv
biA2NDg3MykKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWcuaAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNzAgKzI1LDk1IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewotICAgIGNsYXNzIFN0cmluZzsKLSAgICBjbGFzcyBTVkdQYXRoRWxlbWVudDsK
LSAgICBjbGFzcyBTVkdTdHlsZWRFbGVtZW50OwotICAgIGNsYXNzIFF1YWxpZmllZE5hbWU7Ci0K
LSAgICBjbGFzcyBTVkdQYXRoU2VnIDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHUGF0aFNlZz4gewot
ICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+U1ZHUGF0aFNlZygpOwotCi0gICAgICAgIGVu
dW0gU1ZHUGF0aFNlZ1R5cGUgewotICAgICAgICAgICAgUEFUSFNFR19VTktOT1dOICAgICAgICAg
ICAgICAgICAgICAgICAgID0gMCwKLSAgICAgICAgICAgIFBBVEhTRUdfQ0xPU0VQQVRIICAgICAg
ICAgICAgICAgICAgICAgICA9IDEsCi0gICAgICAgICAgICBQQVRIU0VHX01PVkVUT19BQlMgICAg
ICAgICAgICAgICAgICAgICAgPSAyLAotICAgICAgICAgICAgUEFUSFNFR19NT1ZFVE9fUkVMICAg
ICAgICAgICAgICAgICAgICAgID0gMywKLSAgICAgICAgICAgIFBBVEhTRUdfTElORVRPX0FCUyAg
ICAgICAgICAgICAgICAgICAgICA9IDQsCi0gICAgICAgICAgICBQQVRIU0VHX0xJTkVUT19SRUwg
ICAgICAgICAgICAgICAgICAgICAgPSA1LAotICAgICAgICAgICAgUEFUSFNFR19DVVJWRVRPX0NV
QklDX0FCUyAgICAgICAgICAgICAgID0gNiwKLSAgICAgICAgICAgIFBBVEhTRUdfQ1VSVkVUT19D
VUJJQ19SRUwgICAgICAgICAgICAgICA9IDcsCi0gICAgICAgICAgICBQQVRIU0VHX0NVUlZFVE9f
UVVBRFJBVElDX0FCUyAgICAgICAgICAgPSA4LAotICAgICAgICAgICAgUEFUSFNFR19DVVJWRVRP
X1FVQURSQVRJQ19SRUwgICAgICAgICAgID0gOSwKLSAgICAgICAgICAgIFBBVEhTRUdfQVJDX0FC
UyAgICAgICAgICAgICAgICAgICAgICAgICA9IDEwLAotICAgICAgICAgICAgUEFUSFNFR19BUkNf
UkVMICAgICAgICAgICAgICAgICAgICAgICAgID0gMTEsCi0gICAgICAgICAgICBQQVRIU0VHX0xJ
TkVUT19IT1JJWk9OVEFMX0FCUyAgICAgICAgICAgPSAxMiwKLSAgICAgICAgICAgIFBBVEhTRUdf
TElORVRPX0hPUklaT05UQUxfUkVMICAgICAgICAgICA9IDEzLAotICAgICAgICAgICAgUEFUSFNF
R19MSU5FVE9fVkVSVElDQUxfQUJTICAgICAgICAgICAgID0gMTQsCi0gICAgICAgICAgICBQQVRI
U0VHX0xJTkVUT19WRVJUSUNBTF9SRUwgICAgICAgICAgICAgPSAxNSwKLSAgICAgICAgICAgIFBB
VEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfQUJTICAgICAgICA9IDE2LAotICAgICAgICAgICAg
UEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9SRUwgICAgICAgID0gMTcsCi0gICAgICAgICAg
ICBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9BQlMgICAgPSAxOCwKLSAgICAgICAg
ICAgIFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX1JFTCAgICA9IDE5Ci0gICAgICAg
IH07Ci0KLSAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0
OwotICAgICAgICB2aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3Q7Ci0g
ICAgICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0KLSAgICAgICAgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSBjb25zdDsKLSAgICAgICAg
Ci0gICAgcHJvdGVjdGVkOgotICAgICAgICBTVkdQYXRoU2VnKCkgeyB9Ci0gICAgfTsKIAotICAg
IGNsYXNzIFNWR1BhdGhTZWdTaW5nbGVDb29yZCA6IHB1YmxpYyBTVkdQYXRoU2VnIHsgCi0gICAg
cHVibGljOgotICAgICAgICBTVkdQYXRoU2VnU2luZ2xlQ29vcmQoZmxvYXQgeCwgZmxvYXQgeSkK
LSAgICAgICAgICAgIDogU1ZHUGF0aFNlZygpCi0gICAgICAgICAgICAsIG1feCh4KQotICAgICAg
ICAgICAgLCBtX3koeSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBzZXRY
KGZsb2F0IHgpIHsgbV94ID0geDsgfQotICAgICAgICBmbG9hdCB4KCkgY29uc3QgeyByZXR1cm4g
bV94OyB9Ci0KLSAgICAgICAgdm9pZCBzZXRZKGZsb2F0IHkpIHsgbV95ID0geTsgfQotICAgICAg
ICBmbG9hdCB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9Ci0KLSAgICAgICAgdmlydHVhbCBTdHJp
bmcgdG9TdHJpbmcoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGZsb2F0IG1feDsK
LSAgICAgICAgZmxvYXQgbV95OworZW51bSBTVkdQYXRoU2VnVHlwZSB7CisgICAgUGF0aFNlZ1Vu
a25vd24gPSAwLAorICAgIFBhdGhTZWdDbG9zZVBhdGggPSAxLAorICAgIFBhdGhTZWdNb3ZlVG9B
YnMgPSAyLAorICAgIFBhdGhTZWdNb3ZlVG9SZWwgPSAzLAorICAgIFBhdGhTZWdMaW5lVG9BYnMg
PSA0LAorICAgIFBhdGhTZWdMaW5lVG9SZWwgPSA1LAorICAgIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNB
YnMgPSA2LAorICAgIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNSZWwgPSA3LAorICAgIFBhdGhTZWdDdXJ2
ZVRvUXVhZHJhdGljQWJzID0gOCwKKyAgICBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1JlbCA9IDks
CisgICAgUGF0aFNlZ0FyY0FicyA9IDEwLAorICAgIFBhdGhTZWdBcmNSZWwgPSAxMSwKKyAgICBQ
YXRoU2VnTGluZVRvSG9yaXpvbnRhbEFicyA9IDEyLAorICAgIFBhdGhTZWdMaW5lVG9Ib3Jpem9u
dGFsUmVsID0gMTMsCisgICAgUGF0aFNlZ0xpbmVUb1ZlcnRpY2FsQWJzID0gMTQsCisgICAgUGF0
aFNlZ0xpbmVUb1ZlcnRpY2FsUmVsID0gMTUsCisgICAgUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290
aEFicyA9IDE2LAorICAgIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9vdGhSZWwgPSAxNywKKyAgICBQ
YXRoU2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290aEFicyA9IDE4LAorICAgIFBhdGhTZWdDdXJ2ZVRv
UXVhZHJhdGljU21vb3RoUmVsID0gMTkKK307CisKK2NsYXNzIFN0cmluZzsKK2NsYXNzIFNWR1Bh
dGhFbGVtZW50OworY2xhc3MgU1ZHU3R5bGVkRWxlbWVudDsKK2NsYXNzIFF1YWxpZmllZE5hbWU7
CisKK2NsYXNzIFNWR1BhdGhTZWcgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdQYXRoU2VnPiB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+U1ZHUGF0aFNlZygpOworCisgICAgLy8gRm9yd2FyZCBkZWNs
YXJlIHRoZXNlIGVudW1zIGluIHRoZSB3M2MgbmFtaW5nIHNjaGVtZSwgZm9yIElETCBnZW5lcmF0
aW9uCisgICAgZW51bSB7CisgICAgICAgIFBBVEhTRUdfVU5LTk9XTiA9IFBhdGhTZWdVbmtub3du
LAorICAgICAgICBQQVRIU0VHX0NMT1NFUEFUSCA9IFBhdGhTZWdDbG9zZVBhdGgsCisgICAgICAg
IFBBVEhTRUdfTU9WRVRPX0FCUyA9IFBhdGhTZWdNb3ZlVG9BYnMsCisgICAgICAgIFBBVEhTRUdf
TU9WRVRPX1JFTCA9IFBhdGhTZWdNb3ZlVG9SZWwsCisgICAgICAgIFBBVEhTRUdfTElORVRPX0FC
UyA9IFBhdGhTZWdMaW5lVG9BYnMsCisgICAgICAgIFBBVEhTRUdfTElORVRPX1JFTCA9IFBhdGhT
ZWdMaW5lVG9SZWwsCisgICAgICAgIFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19BQlMgPSBQYXRoU2Vn
Q3VydmVUb0N1YmljQWJzLAorICAgICAgICBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfUkVMID0gUGF0
aFNlZ0N1cnZlVG9DdWJpY1JlbCwKKyAgICAgICAgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19B
QlMgPSBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY0FicywKKyAgICAgICAgUEFUSFNFR19DVVJWRVRP
X1FVQURSQVRJQ19SRUwgPSBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1JlbCwKKyAgICAgICAgUEFU
SFNFR19BUkNfQUJTID0gUGF0aFNlZ0FyY0FicywKKyAgICAgICAgUEFUSFNFR19BUkNfUkVMID0g
UGF0aFNlZ0FyY1JlbCwKKyAgICAgICAgUEFUSFNFR19MSU5FVE9fSE9SSVpPTlRBTF9BQlMgPSBQ
YXRoU2VnTGluZVRvSG9yaXpvbnRhbEFicywKKyAgICAgICAgUEFUSFNFR19MSU5FVE9fSE9SSVpP
TlRBTF9SRUwgPSBQYXRoU2VnTGluZVRvSG9yaXpvbnRhbFJlbCwKKyAgICAgICAgUEFUSFNFR19M
SU5FVE9fVkVSVElDQUxfQUJTID0gUGF0aFNlZ0xpbmVUb1ZlcnRpY2FsQWJzLAorICAgICAgICBQ
QVRIU0VHX0xJTkVUT19WRVJUSUNBTF9SRUwgPSBQYXRoU2VnTGluZVRvVmVydGljYWxSZWwsCisg
ICAgICAgIFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfQUJTID0gUGF0aFNlZ0N1cnZlVG9D
dWJpY1Ntb290aEFicywKKyAgICAgICAgUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9SRUwg
PSBQYXRoU2VnQ3VydmVUb0N1YmljU21vb3RoUmVsLAorICAgICAgICBQQVRIU0VHX0NVUlZFVE9f
UVVBRFJBVElDX1NNT09USF9BQlMgPSBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290aEFicywK
KyAgICAgICAgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfUkVMID0gUGF0aFNlZ0N1
cnZlVG9RdWFkcmF0aWNTbW9vdGhSZWwKICAgICB9OwogCisKKyAgICB2aXJ0dWFsIHVuc2lnbmVk
IHNob3J0IHBhdGhTZWdUeXBlKCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgcGF0aFNlZ1R5
cGVBc0xldHRlcigpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7
CisKKyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpIGNv
bnN0OworICAgIAorcHJvdGVjdGVkOgorICAgIFNWR1BhdGhTZWcoKSB7IH0KK307CisKK2NsYXNz
IFNWR1BhdGhTZWdTaW5nbGVDb29yZCA6IHB1YmxpYyBTVkdQYXRoU2VnIHsgCitwdWJsaWM6Cisg
ICAgU1ZHUGF0aFNlZ1NpbmdsZUNvb3JkKGZsb2F0IHgsIGZsb2F0IHkpCisgICAgICAgIDogbV94
KHgpCisgICAgICAgICwgbV95KHkpCisgICAgeworICAgIH0KKworICAgIHZvaWQgc2V0WChmbG9h
dCB4KSB7IG1feCA9IHg7IH0KKyAgICBmbG9hdCB4KCkgY29uc3QgeyByZXR1cm4gbV94OyB9CisK
KyAgICB2b2lkIHNldFkoZmxvYXQgeSkgeyBtX3kgPSB5OyB9CisgICAgZmxvYXQgeSgpIGNvbnN0
IHsgcmV0dXJuIG1feTsgfQorCisgICAgdmlydHVhbCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsK
KworcHJpdmF0ZToKKyAgICBmbG9hdCBtX3g7CisgICAgZmxvYXQgbV95OworfTsKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR1BhdGhTZWdMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRo
U2VnTGlzdC5jcHAJKHJldmlzaW9uIDY0ODczKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xp
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCwxOSArNjQsMTkgQEAgdW5zaWduZWQgU1ZHUGF0
aFNlZ0xpc3Q6OmdldFBhdGhTZWdBdExlbgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
IGZsb2F0IHNlZ21lbnRMZW5ndGggPSAwOwogICAgICAgICBzd2l0Y2ggKHNlZ21lbnQtPnBhdGhT
ZWdUeXBlKCkpIHsKLSAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX01PVkVUT19BQlM6
CisgICAgICAgIGNhc2UgUGF0aFNlZ01vdmVUb0FiczoKICAgICAgICAgewogICAgICAgICAgICAg
U1ZHUGF0aFNlZ01vdmV0b0FicyogbW92ZVRvID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ01vdmV0
b0Ficyo+KHNlZ21lbnQpOwogICAgICAgICAgICAgc2VnbWVudExlbmd0aCA9IHRyYXZlcnNhbFN0
YXRlLm1vdmVUbyhGbG9hdFBvaW50KG1vdmVUby0+eCgpLCBtb3ZlVG8tPnkoKSkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VH
X0xJTkVUT19BQlM6CisgICAgICAgIGNhc2UgUGF0aFNlZ0xpbmVUb0FiczoKICAgICAgICAgewog
ICAgICAgICAgICAgU1ZHUGF0aFNlZ0xpbmV0b0FicyogbGluZVRvID0gc3RhdGljX2Nhc3Q8U1ZH
UGF0aFNlZ0xpbmV0b0Ficyo+KHNlZ21lbnQpOwogICAgICAgICAgICAgc2VnbWVudExlbmd0aCA9
IHRyYXZlcnNhbFN0YXRlLmxpbmVUbyhGbG9hdFBvaW50KGxpbmVUby0+eCgpLCBsaW5lVG8tPnko
KSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBTVkdQYXRo
U2VnOjpQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfQUJTOgorICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2
ZVRvQ3ViaWNBYnM6CiAgICAgICAgIHsKICAgICAgICAgICAgIFNWR1BhdGhTZWdDdXJ2ZXRvQ3Vi
aWNBYnMqIGN1cnZlVG8gPSBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzKj4o
c2VnbWVudCk7CiAgICAgICAgICAgICBzZWdtZW50TGVuZ3RoID0gdHJhdmVyc2FsU3RhdGUuY3Vi
aWNCZXppZXJUbyhGbG9hdFBvaW50KGN1cnZlVG8tPngxKCksIGN1cnZlVG8tPnkxKCkpLApAQCAt
ODQsNyArODQsNyBAQCB1bnNpZ25lZCBTVkdQYXRoU2VnTGlzdDo6Z2V0UGF0aFNlZ0F0TGVuCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQoY3VydmVUby0+
eCgpLCBjdXJ2ZVRvLT55KCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DTE9TRVBBVEg6CisgICAgICAgIGNhc2UgUGF0
aFNlZ0Nsb3NlUGF0aDoKICAgICAgICAgICAgIHNlZ21lbnRMZW5ndGggPSB0cmF2ZXJzYWxTdGF0
ZS5jbG9zZVN1YnBhdGgoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpA
QCAtMTE2LDQ4ICsxMTYsNDQgQEAgUGF0aCBTVkdQYXRoU2VnTGlzdDo6dG9QYXRoRGF0YSgpCiAg
ICAgICAgIGlmIChlYykKICAgICAgICAgICAgIHJldHVybiBQYXRoKCk7CiAgICAgICAgIHN3aXRj
aCAoc2VnbWVudC0+cGF0aFNlZ1R5cGUoKSkgewotICAgICAgICAgICAgY2FzZSBTVkdQYXRoU2Vn
OjpQQVRIU0VHX01PVkVUT19BQlM6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgU1ZH
UGF0aFNlZ01vdmV0b0FicyogbW92ZVRvID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ01vdmV0b0Fi
cyo+KHNlZ21lbnQpOwotICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQobW92ZVRv
LT54KCksIG1vdmVUby0+eSgpKTsKLSAgICAgICAgICAgICAgICBwYXRoRGF0YS5tb3ZlVG8oZW5k
UG9pbnQpOwotICAgICAgICAgICAgICAgIHByZXZpb3VzRW5kUG9pbnQgPSBlbmRQb2ludDsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgU1ZH
UGF0aFNlZzo6UEFUSFNFR19MSU5FVE9fQUJTOgotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIFNWR1BhdGhTZWdMaW5ldG9BYnMqIGxpbmVUbyA9IHN0YXRpY19jYXN0PFNWR1BhdGhTZWdM
aW5ldG9BYnMqPihzZWdtZW50KTsKLSAgICAgICAgICAgICAgICBGbG9hdFBvaW50IGVuZFBvaW50
KGxpbmVUby0+eCgpLCBsaW5lVG8tPnkoKSk7Ci0gICAgICAgICAgICAgICAgcGF0aERhdGEuYWRk
TGluZVRvKGVuZFBvaW50KTsKLSAgICAgICAgICAgICAgICBwcmV2aW91c0VuZFBvaW50ID0gZW5k
UG9pbnQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQ1VSVkVUT19DVUJJQ19BQlM6Ci0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicyogY3VydmVUbyA9
IHN0YXRpY19jYXN0PFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMqPihzZWdtZW50KTsKLSAgICAg
ICAgICAgICAgICBGbG9hdFBvaW50IGVuZFBvaW50KGN1cnZlVG8tPngoKSwgY3VydmVUby0+eSgp
KTsKLSAgICAgICAgICAgICAgICBwYXRoRGF0YS5hZGRCZXppZXJDdXJ2ZVRvKEZsb2F0UG9pbnQo
Y3VydmVUby0+eDEoKSwgY3VydmVUby0+eTEoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGbG9hdFBvaW50KGN1cnZlVG8tPngyKCksIGN1cnZlVG8tPnkyKCkp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kUG9pbnQpOwot
ICAgICAgICAgICAgICAgIHByZXZpb3VzRW5kUG9pbnQgPSBlbmRQb2ludDsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6
UEFUSFNFR19DVVJWRVRPX0NVQklDX1JFTDoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsKiBjdXJ2ZVRvID0gc3RhdGljX2Nhc3Q8U1ZHUGF0
aFNlZ0N1cnZldG9DdWJpY1JlbCo+KHNlZ21lbnQpOwotICAgICAgICAgICAgICAgIEZsb2F0U2l6
ZSBlbmRQb2ludChjdXJ2ZVRvLT54KCksIGN1cnZlVG8tPnkoKSk7Ci0gICAgICAgICAgICAgICAg
cGF0aERhdGEuYWRkQmV6aWVyQ3VydmVUbyhwcmV2aW91c0VuZFBvaW50ICsgRmxvYXRTaXplKGN1
cnZlVG8tPngxKCksIGN1cnZlVG8tPnkxKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJldmlvdXNFbmRQb2ludCArIEZsb2F0U2l6ZShjdXJ2ZVRvLT54Migp
LCBjdXJ2ZVRvLT55MigpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByZXZpb3VzRW5kUG9pbnQgKyBlbmRQb2ludCk7Ci0gICAgICAgICAgICAgICAgcHJldmlv
dXNFbmRQb2ludCArPSBlbmRQb2ludDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DTE9TRVBBVEg6Ci0g
ICAgICAgICAgICAgICAgcGF0aERhdGEuY2xvc2VTdWJwYXRoKCk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIEFTU0VSVChmYWxz
ZSk7IC8vIEZJWE1FOiBUaGlzIG9ubHkgd29ya3Mgd2l0aCBub3JtYWxpemVkL3Byb2Nlc3NlZCBw
YXRoIGRhdGEuCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUGF0aFNlZ01v
dmVUb0FiczogeworICAgICAgICAgICAgU1ZHUGF0aFNlZ01vdmV0b0FicyogbW92ZVRvID0gc3Rh
dGljX2Nhc3Q8U1ZHUGF0aFNlZ01vdmV0b0Ficyo+KHNlZ21lbnQpOworICAgICAgICAgICAgRmxv
YXRQb2ludCBlbmRQb2ludChtb3ZlVG8tPngoKSwgbW92ZVRvLT55KCkpOworICAgICAgICAgICAg
cGF0aERhdGEubW92ZVRvKGVuZFBvaW50KTsKKyAgICAgICAgICAgIHByZXZpb3VzRW5kUG9pbnQg
PSBlbmRQb2ludDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
UGF0aFNlZ0xpbmVUb0FiczogeworICAgICAgICAgICAgU1ZHUGF0aFNlZ0xpbmV0b0FicyogbGlu
ZVRvID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0xpbmV0b0Ficyo+KHNlZ21lbnQpOworICAgICAg
ICAgICAgRmxvYXRQb2ludCBlbmRQb2ludChsaW5lVG8tPngoKSwgbGluZVRvLT55KCkpOworICAg
ICAgICAgICAgcGF0aERhdGEuYWRkTGluZVRvKGVuZFBvaW50KTsKKyAgICAgICAgICAgIHByZXZp
b3VzRW5kUG9pbnQgPSBlbmRQb2ludDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9DdWJpY0FiczogeworICAgICAgICAgICAgU1ZHUGF0
aFNlZ0N1cnZldG9DdWJpY0FicyogY3VydmVUbyA9IHN0YXRpY19jYXN0PFNWR1BhdGhTZWdDdXJ2
ZXRvQ3ViaWNBYnMqPihzZWdtZW50KTsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQo
Y3VydmVUby0+eCgpLCBjdXJ2ZVRvLT55KCkpOworICAgICAgICAgICAgcGF0aERhdGEuYWRkQmV6
aWVyQ3VydmVUbyhGbG9hdFBvaW50KGN1cnZlVG8tPngxKCksIGN1cnZlVG8tPnkxKCkpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFBvaW50KGN1cnZlVG8tPngy
KCksIGN1cnZlVG8tPnkyKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbmRQb2ludCk7CisgICAgICAgICAgICBwcmV2aW91c0VuZFBvaW50ID0gZW5kUG9pbnQ7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2ZVRv
Q3ViaWNSZWw6IHsKKyAgICAgICAgICAgIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwqIGN1cnZl
VG8gPSBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsKj4oc2VnbWVudCk7Cisg
ICAgICAgICAgICBGbG9hdFNpemUgZW5kUG9pbnQoY3VydmVUby0+eCgpLCBjdXJ2ZVRvLT55KCkp
OworICAgICAgICAgICAgcGF0aERhdGEuYWRkQmV6aWVyQ3VydmVUbyhwcmV2aW91c0VuZFBvaW50
ICsgRmxvYXRTaXplKGN1cnZlVG8tPngxKCksIGN1cnZlVG8tPnkxKCkpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0VuZFBvaW50ICsgRmxvYXRTaXplKGN1
cnZlVG8tPngyKCksIGN1cnZlVG8tPnkyKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcmV2aW91c0VuZFBvaW50ICsgZW5kUG9pbnQpOworICAgICAgICAgICAgcHJl
dmlvdXNFbmRQb2ludCArPSBlbmRQb2ludDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGNhc2UgUGF0aFNlZ0Nsb3NlUGF0aDoKKyAgICAgICAgICAgIHBhdGhEYXRhLmNs
b3NlU3VicGF0aCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBBU1NFUlQoZmFsc2UpOyAvLyBGSVhNRTogVGhpcyBvbmx5IHdvcmtzIHdpdGggbm9y
bWFsaXplZC9wcm9jZXNzZWQgcGF0aCBkYXRhLgorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICB9CiAgICAgCkBAIC0yMTMsNjggKzIwOSw2OCBAQCBQYXNzUmVmUHRyPFNWR1BhdGhT
ZWdMaXN0PiBTVkdQYXRoU2VnTGlzCiAgICAgICAgIFNWR1BhdGhTZWcqIHRvID0gdG9MaXN0LT5n
ZXRJdGVtKG4sIGVjKS5nZXQoKTsKICAgICAgICAgaWYgKGVjKQogICAgICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgICAgIGlmIChmcm9tLT5wYXRoU2VnVHlwZSgpID09IFNWR1BhdGhTZWc6OlBBVEhT
RUdfVU5LTk9XTiB8fCBmcm9tLT5wYXRoU2VnVHlwZSgpICE9IHRvLT5wYXRoU2VnVHlwZSgpKQor
ICAgICAgICBpZiAoZnJvbS0+cGF0aFNlZ1R5cGUoKSA9PSBQYXRoU2VnVW5rbm93biB8fCBmcm9t
LT5wYXRoU2VnVHlwZSgpICE9IHRvLT5wYXRoU2VnVHlwZSgpKQogICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgIFJlZlB0cjxTVkdQYXRoU2VnPiBzZWdtZW50ID0gMDsKLSAgICAgICAgc3dp
dGNoIChzdGF0aWNfY2FzdDxTVkdQYXRoU2VnOjpTVkdQYXRoU2VnVHlwZT4oZnJvbS0+cGF0aFNl
Z1R5cGUoKSkpIHsKLSAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0NMT1NFUEFUSDoK
KyAgICAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxTVkdQYXRoU2VnVHlwZT4oZnJvbS0+cGF0aFNl
Z1R5cGUoKSkpIHsKKyAgICAgICAgY2FzZSBQYXRoU2VnQ2xvc2VQYXRoOgogICAgICAgICAgICAg
c2VnbWVudCA9IFNWR1BhdGhTZWdDbG9zZVBhdGg6OmNyZWF0ZSgpOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19MSU5FVE9fSE9SSVpPTlRBTF9B
QlM6CisgICAgICAgIGNhc2UgUGF0aFNlZ0xpbmVUb0hvcml6b250YWxBYnM6CiAgICAgICAgICAg
ICBzZWdtZW50ID0gQkxFTkRQQVRIU0VHMShTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicywg
eCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VH
X0xJTkVUT19IT1JJWk9OVEFMX1JFTDoKKyAgICAgICAgY2FzZSBQYXRoU2VnTGluZVRvSG9yaXpv
bnRhbFJlbDoKICAgICAgICAgICAgIHNlZ21lbnQgPSBCTEVORFBBVEhTRUcxKFNWR1BhdGhTZWdM
aW5ldG9Ib3Jpem9udGFsUmVsLCB4KTsKICAgICAgICAgICAgIGJyZWFrOyAgIAotICAgICAgICBj
YXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX0FCUzoKKyAgICAgICAgY2Fz
ZSBQYXRoU2VnTGluZVRvVmVydGljYWxBYnM6CiAgICAgICAgICAgICBzZWdtZW50ID0gQkxFTkRQ
QVRIU0VHMShTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMsIHkpOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19MSU5FVE9fVkVSVElDQUxfUkVM
OgorICAgICAgICBjYXNlIFBhdGhTZWdMaW5lVG9WZXJ0aWNhbFJlbDoKICAgICAgICAgICAgIHNl
Z21lbnQgPSBCTEVORFBBVEhTRUcxKFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCwgeSk7CiAg
ICAgICAgICAgICBicmVhazsgICAgICAgIAotICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhT
RUdfTU9WRVRPX0FCUzoKKyAgICAgICAgY2FzZSBQYXRoU2VnTW92ZVRvQWJzOgogICAgICAgICAg
ICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzIoU1ZHUGF0aFNlZ01vdmV0b0FicywgeCwgeSk7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX01PVkVU
T19SRUw6CisgICAgICAgIGNhc2UgUGF0aFNlZ01vdmVUb1JlbDoKICAgICAgICAgICAgIHNlZ21l
bnQgPSBCTEVORFBBVEhTRUcyKFNWR1BhdGhTZWdNb3ZldG9SZWwsIHgsIHkpOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19MSU5FVE9fQUJTOgor
ICAgICAgICBjYXNlIFBhdGhTZWdMaW5lVG9BYnM6CiAgICAgICAgICAgICBzZWdtZW50ID0gQkxF
TkRQQVRIU0VHMihTVkdQYXRoU2VnTGluZXRvQWJzLCB4LCB5KTsKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTElORVRPX1JFTDoKKyAgICAgICAg
Y2FzZSBQYXRoU2VnTGluZVRvUmVsOgogICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNF
RzIoU1ZHUGF0aFNlZ0xpbmV0b1JlbCwgeCwgeSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfQUJTOgorICAgICAgICBj
YXNlIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNBYnM6CiAgICAgICAgICAgICBzZWdtZW50ID0gQkxFTkRQ
QVRIU0VHNihTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzLCB4LCB5LCB4MSwgeTEsIHgyLCB5Mik7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0NV
UlZFVE9fQ1VCSUNfUkVMOgorICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNSZWw6CiAg
ICAgICAgICAgICBzZWdtZW50ID0gQkxFTkRQQVRIU0VHNihTVkdQYXRoU2VnQ3VydmV0b0N1Ymlj
UmVsLCB4LCB5LCB4MSwgeTEsIHgyLCB5Mik7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX0FCUzoKKyAgICAg
ICAgY2FzZSBQYXRoU2VnQ3VydmVUb0N1YmljU21vb3RoQWJzOgogICAgICAgICAgICAgc2VnbWVu
dCA9IEJMRU5EUEFUSFNFRzQoU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicywgeCwgeSwg
eDIsIHkyKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBB
VEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfUkVMOgorICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2
ZVRvQ3ViaWNTbW9vdGhSZWw6CiAgICAgICAgICAgICBzZWdtZW50ID0gQkxFTkRQQVRIU0VHNChT
VkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsLCB4LCB5LCB4MiwgeTIpOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DVVJWRVRPX1FVQURS
QVRJQ19BQlM6CisgICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNBYnM6CiAgICAg
ICAgICAgICBzZWdtZW50ID0gQkxFTkRQQVRIU0VHNChTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRp
Y0FicywgeCwgeSwgeDEsIHkxKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNW
R1BhdGhTZWc6OlBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfUkVMOgorICAgICAgICBjYXNlIFBh
dGhTZWdDdXJ2ZVRvUXVhZHJhdGljUmVsOgogICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFU
SFNFRzQoU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwsIHgsIHksIHgxLCB5MSk7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0NVUlZFVE9f
UVVBRFJBVElDX1NNT09USF9BQlM6CisgICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0
aWNTbW9vdGhBYnM6CiAgICAgICAgICAgICBzZWdtZW50ID0gQkxFTkRQQVRIU0VHMihTVkdQYXRo
U2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicywgeCwgeSk7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NNT09U
SF9SRUw6CisgICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhSZWw6CiAg
ICAgICAgICAgICBzZWdtZW50ID0gQkxFTkRQQVRIU0VHMihTVkdQYXRoU2VnQ3VydmV0b1F1YWRy
YXRpY1Ntb290aFJlbCwgeCwgeSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBT
VkdQYXRoU2VnOjpQQVRIU0VHX0FSQ19BQlM6CisgICAgICAgIGNhc2UgUGF0aFNlZ0FyY0FiczoK
ICAgICAgICAgICAgIHNlZ21lbnQgPSBCTEVORFBBVEhTRUc3KFNWR1BhdGhTZWdBcmNBYnMsIHgs
IHksIHIxLCByMiwgYW5nbGUsIGxhcmdlQXJjRmxhZywgc3dlZXBGbGFnKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQVJDX1JFTDoKKyAgICAg
ICAgY2FzZSBQYXRoU2VnQXJjUmVsOgogICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNF
RzcoU1ZHUGF0aFNlZ0FyY1JlbCwgeCwgeSwgcjEsIHIyLCBhbmdsZSwgbGFyZ2VBcmNGbGFnLCBz
d2VlcEZsYWcpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6
UEFUSFNFR19VTktOT1dOOgorICAgICAgICBjYXNlIFBhdGhTZWdVbmtub3duOgogICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICAgICAgcmVzdWx0LT5hcHBl
bmRJdGVtKHNlZ21lbnQsIGVjKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0QnVp
bGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVy
LmNwcAkocmV2aXNpb24gNjQ4NzMpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aEVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdQ
YXRoUGFyc2VyLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0FyYy5oIgogI2luY2x1ZGUgIlNWR1Bh
dGhTZWdDbG9zZVBhdGguaCIKICNpbmNsdWRlICJTVkdQYXRoU2VnQ3VydmV0b0N1YmljLmgiCkBA
IC00Myw0MiArNDIsMzYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdQYXRoU2VnTGlz
dEJ1aWxkZXI6OlNWR1BhdGhTZWdMaXN0QnVpbGRlcihTVkdQYXRoU2VnTGlzdCogc2VnTGlzdCkK
LSAgICA6IG1fcGF0aFNlZ0xpc3Qoc2VnTGlzdCkKK1NWR1BhdGhTZWdMaXN0QnVpbGRlcjo6U1ZH
UGF0aFNlZ0xpc3RCdWlsZGVyKCkKKyAgICA6IG1fcGF0aFNlZ0xpc3QoMCkKIHsKIH0KIAotYm9v
bCBTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmJ1aWxkKGNvbnN0IFN0cmluZyYgZCwgUGF0aFBhcnNp
bmdNb2RlIHBhcnNpbmdNb2RlKQotewotICAgIGlmICghbV9wYXRoU2VnTGlzdCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgU1ZHUGF0aFBhcnNlciBwYXJzZXIodGhpcyk7Ci0gICAgcmV0
dXJuIHBhcnNlci5wYXJzZVBhdGhEYXRhU3RyaW5nKGQsIHBhcnNpbmdNb2RlID09IE5vcm1hbGl6
ZWRQYXJzaW5nKTsKLX0KLQotdm9pZCBTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6Om1vdmVUbyhjb25z
dCBGbG9hdFBvaW50JiBwb2ludCwgYm9vbCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCit2b2lk
IFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6bW92ZVRvKGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBv
aW50LCBib29sLCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKKyAgICBBU1NFUlQobV9wYXRo
U2VnTGlzdCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaWYgKG1vZGUgPT0gQWJz
b2x1dGVDb29yZGluYXRlcykKLSAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kSXRlbShTVkdQ
YXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ01vdmV0b0Ficyhwb2ludC54KCksIHBvaW50Lnko
KSksIGVjKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kSXRlbShTVkdQYXRoRWxlbWVu
dDo6Y3JlYXRlU1ZHUGF0aFNlZ01vdmV0b0Ficyh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50
LnkoKSksIGVjKTsKICAgICBlbHNlCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0o
U1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9SZWwocG9pbnQueCgpLCBwb2lu
dC55KCkpLCBlYyk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVs
ZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9SZWwodGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQ
b2ludC55KCkpLCBlYyk7CiAgICAgQVNTRVJUKCFlYyk7CiB9CiAKLXZvaWQgU1ZHUGF0aFNlZ0xp
c3RCdWlsZGVyOjpsaW5lVG8oY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIFBhdGhDb29yZGluYXRl
TW9kZSBtb2RlKQordm9pZCBTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmxpbmVUbyhjb25zdCBGbG9h
dFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CisgICAgQVNT
RVJUKG1fcGF0aFNlZ0xpc3QpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmICht
b2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVu
ZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9BYnMocG9pbnQueCgp
LCBwb2ludC55KCkpLCBlYyk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZH
UGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9BYnModGFyZ2V0UG9pbnQueCgpLCB0
YXJnZXRQb2ludC55KCkpLCBlYyk7CiAgICAgZWxzZQotICAgICAgICBtX3BhdGhTZWdMaXN0LT5h
cHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnTGluZXRvUmVsKHBvaW50
LngoKSwgcG9pbnQueSgpKSwgZWMpOworICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVt
KFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnTGluZXRvUmVsKHRhcmdldFBvaW50Lngo
KSwgdGFyZ2V0UG9pbnQueSgpKSwgZWMpOwogICAgIEFTU0VSVCghZWMpOwogfQogCiB2b2lkIFNW
R1BhdGhTZWdMaXN0QnVpbGRlcjo6bGluZVRvSG9yaXpvbnRhbChmbG9hdCB4LCBQYXRoQ29vcmRp
bmF0ZU1vZGUgbW9kZSkKIHsKKyAgICBBU1NFUlQobV9wYXRoU2VnTGlzdCk7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcykKICAg
ICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kSXRlbShTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZH
UGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMoeCksIGVjKTsKQEAgLTg5LDYgKzgyLDcgQEAgdm9p
ZCBTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmxpbmVUb0hvcml6bwogCiB2b2lkIFNWR1BhdGhTZWdM
aXN0QnVpbGRlcjo6bGluZVRvVmVydGljYWwoZmxvYXQgeSwgUGF0aENvb3JkaW5hdGVNb2RlIG1v
ZGUpCiB7CisgICAgQVNTRVJUKG1fcGF0aFNlZ0xpc3QpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCiAgICAgICAgIG1fcGF0
aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdMaW5l
dG9WZXJ0aWNhbEFicyh5KSwgZWMpOwpAQCAtOTcsNTggKzkxLDY0IEBAIHZvaWQgU1ZHUGF0aFNl
Z0xpc3RCdWlsZGVyOjpsaW5lVG9WZXJ0aWMKICAgICBBU1NFUlQoIWVjKTsKIH0KIAotdm9pZCBT
VkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9DdWJpYyhjb25zdCBGbG9hdFBvaW50JiBwb2lu
dDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIFBh
dGhDb29yZGluYXRlTW9kZSBtb2RlKQordm9pZCBTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZl
VG9DdWJpYyhjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
MiwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2Rl
KQogeworICAgIEFTU0VSVChtX3BhdGhTZWdMaXN0KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3BhdGhT
ZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0
b0N1YmljQWJzKHBvaW50LngoKSwgcG9pbnQueSgpLCBwb2ludDEueCgpLCBwb2ludDEueSgpLCBw
b2ludDIueCgpLCBwb2ludDIueSgpKSwgZWMpOworICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBl
bmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzKHRh
cmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBwb2ludDEueCgpLCBwb2ludDEueSgpLCBw
b2ludDIueCgpLCBwb2ludDIueSgpKSwgZWMpOwogICAgIGVsc2UKLSAgICAgICAgbV9wYXRoU2Vn
TGlzdC0+YXBwZW5kSXRlbShTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9D
dWJpY1JlbChwb2ludC54KCksIHBvaW50LnkoKSwgcG9pbnQxLngoKSwgcG9pbnQxLnkoKSwgcG9p
bnQyLngoKSwgcG9pbnQyLnkoKSksIGVjKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5k
SXRlbShTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCh0YXJn
ZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgcG9pbnQxLngoKSwgcG9pbnQxLnkoKSwgcG9p
bnQyLngoKSwgcG9pbnQyLnkoKSksIGVjKTsKICAgICBBU1NFUlQoIWVjKTsKIH0KIAotdm9pZCBT
VkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9DdWJpY1Ntb290aChjb25zdCBGbG9hdFBvaW50
JiBwb2ludCwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyLCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9k
ZSkKK3ZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWNTbW9vdGgoY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQyLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENv
b3JkaW5hdGVNb2RlIG1vZGUpCiB7CisgICAgQVNTRVJUKG1fcGF0aFNlZ0xpc3QpOwogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMp
Ci0gICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0
ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMocG9pbnQyLngoKSwgcG9pbnQyLnkoKSwg
cG9pbnQueCgpLCBwb2ludC55KCkpLCBlYyk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVu
ZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhB
YnModGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIHBvaW50Mi54KCksIHBvaW50Mi55
KCkpLCBlYyk7CiAgICAgZWxzZQotICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNW
R1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsKHBvaW50
Mi54KCksIHBvaW50Mi55KCksIHBvaW50LngoKSwgcG9pbnQueSgpKSwgZWMpOworICAgICAgICBt
X3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2Vn
Q3VydmV0b0N1YmljU21vb3RoUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBw
b2ludDIueCgpLCBwb2ludDIueSgpKSwgZWMpOwogICAgIEFTU0VSVCghZWMpOwogfQogCi12b2lk
IFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6Y3VydmVUb1F1YWRyYXRpYyhjb25zdCBGbG9hdFBvaW50
JiBwb2ludCwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9k
ZSkKK3ZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJhdGljKGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29y
ZGluYXRlTW9kZSBtb2RlKQogeworICAgIEFTU0VSVChtX3BhdGhTZWdMaXN0KTsKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQot
ICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVT
VkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0Ficyhwb2ludDEueCgpLCBwb2ludDEueSgpLCBwb2lu
dC54KCksIHBvaW50LnkoKSksIGVjKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kSXRl
bShTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnModGFy
Z2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIHBvaW50MS54KCksIHBvaW50MS55KCkpLCBl
Yyk7CiAgICAgZWxzZQotICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhF
bGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbChwb2ludDEueCgpLCBw
b2ludDEueSgpLCBwb2ludC54KCksIHBvaW50LnkoKSksIGVjKTsKKyAgICAgICAgbV9wYXRoU2Vn
TGlzdC0+YXBwZW5kSXRlbShTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9R
dWFkcmF0aWNSZWwodGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIHBvaW50MS54KCks
IHBvaW50MS55KCkpLCBlYyk7CiAgICAgQVNTRVJUKCFlYyk7CiB9CiAKLXZvaWQgU1ZHUGF0aFNl
Z0xpc3RCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJhdGljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKK3ZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVy
OjpjdXJ2ZVRvUXVhZHJhdGljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQ
YXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKKyAgICBBU1NFUlQobV9wYXRoU2VnTGlzdCk7CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVDb29yZGlu
YXRlcykKLSAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kSXRlbShTVkdQYXRoRWxlbWVudDo6
Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMocG9pbnQueCgpLCBwb2lu
dC55KCkpLCBlYyk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVs
ZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzKHRhcmdldFBv
aW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSwgZWMpOwogICAgIGVsc2UKLSAgICAgICAgbV9wYXRo
U2VnTGlzdC0+YXBwZW5kSXRlbShTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZl
dG9RdWFkcmF0aWNTbW9vdGhSZWwocG9pbnQueCgpLCBwb2ludC55KCkpLCBlYyk7CisgICAgICAg
IG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhT
ZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQu
eSgpKSwgZWMpOwogICAgIEFTU0VSVCghZWMpOwogfQogCi12b2lkIFNWR1BhdGhTZWdMaXN0QnVp
bGRlcjo6YXJjVG8oY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHIxLCBmbG9hdCByMiwg
ZmxvYXQgYW5nbGUsIGJvb2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3ZWVwRmxhZywgUGF0aENvb3Jk
aW5hdGVNb2RlIG1vZGUpCit2b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6YXJjVG8oZmxvYXQg
cjEsIGZsb2F0IHIyLCBmbG9hdCBhbmdsZSwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dlZXBG
bGFnLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1v
ZGUpCiB7CisgICAgQVNTRVJUKG1fcGF0aFNlZ0xpc3QpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fcGF0
aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdBcmNB
YnMocG9pbnQueCgpLCBwb2ludC55KCksIHIxLCByMiwgYW5nbGUsIGxhcmdlQXJjRmxhZywgc3dl
ZXBGbGFnKSwgZWMpOworICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmRJdGVtKFNWR1BhdGhF
bGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQXJjQWJzKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9p
bnQueSgpLCByMSwgcjIsIGFuZ2xlLCBsYXJnZUFyY0ZsYWcsIHN3ZWVwRmxhZyksIGVjKTsKICAg
ICBlbHNlCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0oU1ZHUGF0aEVsZW1lbnQ6
OmNyZWF0ZVNWR1BhdGhTZWdBcmNSZWwocG9pbnQueCgpLCBwb2ludC55KCksIHIxLCByMiwgYW5n
bGUsIGxhcmdlQXJjRmxhZywgc3dlZXBGbGFnKSwgZWMpOworICAgICAgICBtX3BhdGhTZWdMaXN0
LT5hcHBlbmRJdGVtKFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQXJjUmVsKHRhcmdl
dFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCByMSwgcjIsIGFuZ2xlLCBsYXJnZUFyY0ZsYWcs
IHN3ZWVwRmxhZyksIGVjKTsKICAgICBBU1NFUlQoIWVjKTsKIH0KIAogdm9pZCBTVkdQYXRoU2Vn
TGlzdEJ1aWxkZXI6OmNsb3NlUGF0aCgpCiB7CisgICAgQVNTRVJUKG1fcGF0aFNlZ0xpc3QpOwog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZEl0ZW0o
U1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDbG9zZVBhdGgoKSwgZWMpOwogICAgIEFT
U0VSVCghZWMpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmgJKHJldmlzaW9u
IDY0ODczKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDEwICszMSwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFNWR1BhdGhTZWdMaXN0QnVpbGRlciA6IHByaXZhdGUgU1ZHUGF0aENvbnN1bWVyIHsKK2NsYXNz
IFNWR1BhdGhTZWdMaXN0QnVpbGRlciA6IHB1YmxpYyBTVkdQYXRoQ29uc3VtZXIgewogcHVibGlj
OgotICAgIFNWR1BhdGhTZWdMaXN0QnVpbGRlcihTVkdQYXRoU2VnTGlzdCopOwotICAgIGJvb2wg
YnVpbGQoY29uc3QgU3RyaW5nJiwgUGF0aFBhcnNpbmdNb2RlKTsKKyAgICBTVkdQYXRoU2VnTGlz
dEJ1aWxkZXIoKTsKKworICAgIHZvaWQgc2V0Q3VycmVudFNWR1BhdGhTZWdMaXN0KFNWR1BhdGhT
ZWdMaXN0KiBwYXRoU2VnTGlzdCkgeyBtX3BhdGhTZWdMaXN0ID0gcGF0aFNlZ0xpc3Q7IH0KIAog
cHJpdmF0ZToKICAgICAvLyBVc2VkIGluIFVuYWx0ZXJlZFBhcmlzbmcvTm9ybWFsaXplZFBhcnNp
bmcgbW9kZXMuCkBAIC01MCw3ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGN1
cnZlVG9DdWJpY1Ntb290aChjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIFBh
dGhDb29yZGluYXRlTW9kZSk7CiAgICAgdmlydHVhbCB2b2lkIGN1cnZlVG9RdWFkcmF0aWMoY29u
c3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpOwog
ICAgIHZpcnR1YWwgdm9pZCBjdXJ2ZVRvUXVhZHJhdGljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQm
LCBQYXRoQ29vcmRpbmF0ZU1vZGUpOwotICAgIHZpcnR1YWwgdm9pZCBhcmNUbyhjb25zdCBGbG9h
dFBvaW50JiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dl
ZXBGbGFnLCBQYXRoQ29vcmRpbmF0ZU1vZGUpOworICAgIHZpcnR1YWwgdm9pZCBhcmNUbyhmbG9h
dCwgZmxvYXQsIGZsb2F0LCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcsIGNvbnN0
IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpOwogCiAgICAgU1ZHUGF0aFNlZ0xpc3Qq
IG1fcGF0aFNlZ0xpc3Q7CiB9OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNvdXJjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTb3VyY2UuaAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvc3ZnL1NWR1BhdGhTb3VyY2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBTVkdQYXRoU291cmNlX2gKKyNkZWZpbmUgU1ZH
UGF0aFNvdXJjZV9oCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR1BhdGhTZWcuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTVkdQYXRoU291cmNlIDogcHVibGljIE5v
bmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TVkdQYXRoU291cmNlKCkgeyB9CisK
KyAgICB2aXJ0dWFsIGJvb2wgaGFzTW9yZURhdGEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIG1vdmVUb05leHRUb2tlbigpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGFyc2VGbG9hdChm
bG9hdCYgcmVzdWx0KSA9IDA7CisgICAgdmlydHVhbCBib29sIHBhcnNlRmxhZyhib29sJiByZXN1
bHQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTVkdTZWdtZW50VHlwZShTVkdQYXRoU2Vn
VHlwZSYpID0gMDsKKyAgICB2aXJ0dWFsIFNWR1BhdGhTZWdUeXBlIG5leHRDb21tYW5kKFNWR1Bh
dGhTZWdUeXBlIHByZXZpb3VzQ29tbWFuZCkgPSAwOworCitwdWJsaWM6CisgICAgU1ZHUGF0aFNv
dXJjZSgpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFNWRykKKyNlbmRpZiAvLyBTVkdQYXRoU291cmNlX2gKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R1BhdGhTdHJpbmdTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhT
dHJpbmdTb3VyY2UuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmlu
Z1NvdXJjZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNW
R1BhdGhTdHJpbmdTb3VyY2UuaCIKKworI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NWR1BhdGhTdHJpbmdTb3VyY2U6OlNWR1BhdGhTdHJp
bmdTb3VyY2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAgOiBtX3N0cmluZyhzdHJpbmcpCisg
ICAgLCBtX2N1cnJlbnQoc3RyaW5nLmNoYXJhY3RlcnMoKSkKKyAgICAsIG1fZW5kKG1fY3VycmVu
dCArIHN0cmluZy5sZW5ndGgoKSkKK3sKKyAgICBBU1NFUlQoIXN0cmluZy5pc0VtcHR5KCkpOwor
fQorCitTVkdQYXRoU3RyaW5nU291cmNlOjp+U1ZHUGF0aFN0cmluZ1NvdXJjZSgpCit7Cit9CisK
K2Jvb2wgU1ZHUGF0aFN0cmluZ1NvdXJjZTo6aGFzTW9yZURhdGEoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2N1cnJlbnQgPCBtX2VuZDsKK30KKworYm9vbCBTVkdQYXRoU3RyaW5nU291cmNlOjpw
YXJzZUZsb2F0KGZsb2F0JiByZXN1bHQpCit7CisgICAgcmV0dXJuIHBhcnNlTnVtYmVyKG1fY3Vy
cmVudCwgbV9lbmQsIHJlc3VsdCk7Cit9CisKK2Jvb2wgU1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFy
c2VGbGFnKGJvb2wmIHJlc3VsdCkKK3sKKyAgICByZXR1cm4gcGFyc2VBcmNGbGFnKG1fY3VycmVu
dCwgbV9lbmQsIHJlc3VsdCk7Cit9CisKK2Jvb2wgU1ZHUGF0aFN0cmluZ1NvdXJjZTo6bW92ZVRv
TmV4dFRva2VuKCkKK3sKKyAgICByZXR1cm4gc2tpcE9wdGlvbmFsU3BhY2VzKG1fY3VycmVudCwg
bV9lbmQpOworfQorCitib29sIFNWR1BhdGhTdHJpbmdTb3VyY2U6OnBhcnNlU1ZHU2VnbWVudFR5
cGUoU1ZHUGF0aFNlZ1R5cGUmIHBhdGhTZWdUeXBlKQoreworICAgIHN3aXRjaCAoKihtX2N1cnJl
bnQrKykpIHsKKyAgICBjYXNlICdaJzoKKyAgICBjYXNlICd6JzoKKyAgICAgICAgcGF0aFNlZ1R5
cGUgPSBQYXRoU2VnQ2xvc2VQYXRoOworICAgICAgICBicmVhazsKKyAgICBjYXNlICdNJzoKKyAg
ICAgICAgcGF0aFNlZ1R5cGUgPSBQYXRoU2VnTW92ZVRvQWJzOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlICdtJzoKKyAgICAgICAgcGF0aFNlZ1R5cGUgPSBQYXRoU2VnTW92ZVRvUmVsOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlICdMJzoKKyAgICAgICAgcGF0aFNlZ1R5cGUgPSBQYXRoU2Vn
TGluZVRvQWJzOworICAgICAgICBicmVhazsKKyAgICBjYXNlICdsJzoKKyAgICAgICAgcGF0aFNl
Z1R5cGUgPSBQYXRoU2VnTGluZVRvUmVsOworICAgICAgICBicmVhazsKKyAgICBjYXNlICdDJzoK
KyAgICAgICAgcGF0aFNlZ1R5cGUgPSBQYXRoU2VnQ3VydmVUb0N1YmljQWJzOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlICdjJzoKKyAgICAgICAgcGF0aFNlZ1R5cGUgPSBQYXRoU2VnQ3VydmVU
b0N1YmljUmVsOworICAgICAgICBicmVhazsKKyAgICBjYXNlICdRJzoKKyAgICAgICAgcGF0aFNl
Z1R5cGUgPSBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY0FiczsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSAncSc6CisgICAgICAgIHBhdGhTZWdUeXBlID0gUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNS
ZWw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJ0EnOgorICAgICAgICBwYXRoU2VnVHlwZSA9
IFBhdGhTZWdBcmNBYnM7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJ2EnOgorICAgICAgICBw
YXRoU2VnVHlwZSA9IFBhdGhTZWdBcmNSZWw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJ0gn
OgorICAgICAgICBwYXRoU2VnVHlwZSA9IFBhdGhTZWdMaW5lVG9Ib3Jpem9udGFsQWJzOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlICdoJzoKKyAgICAgICAgcGF0aFNlZ1R5cGUgPSBQYXRoU2Vn
TGluZVRvSG9yaXpvbnRhbFJlbDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnVic6CisgICAg
ICAgIHBhdGhTZWdUeXBlID0gUGF0aFNlZ0xpbmVUb1ZlcnRpY2FsQWJzOworICAgICAgICBicmVh
azsKKyAgICBjYXNlICd2JzoKKyAgICAgICAgcGF0aFNlZ1R5cGUgPSBQYXRoU2VnTGluZVRvVmVy
dGljYWxSZWw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJ1MnOgorICAgICAgICBwYXRoU2Vn
VHlwZSA9IFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9vdGhBYnM7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgJ3MnOgorICAgICAgICBwYXRoU2VnVHlwZSA9IFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9v
dGhSZWw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJ1QnOgorICAgICAgICBwYXRoU2VnVHlw
ZSA9IFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljU21vb3RoQWJzOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlICd0JzoKKyAgICAgICAgcGF0aFNlZ1R5cGUgPSBQYXRoU2VnQ3VydmVUb1F1YWRyYXRp
Y1Ntb290aFJlbDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcGF0aFNl
Z1R5cGUgPSBQYXRoU2VnVW5rbm93bjsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1NW
R1BhdGhTZWdUeXBlIFNWR1BhdGhTdHJpbmdTb3VyY2U6Om5leHRDb21tYW5kKFNWR1BhdGhTZWdU
eXBlIHByZXZpb3VzQ29tbWFuZCkKK3sKKyAgICAvLyBDaGVjayBmb3IgcmVtYWluaW5nIGNvb3Jk
aW5hdGVzIGluIHRoZSBjdXJyZW50IGNvbW1hbmQuCisgICAgaWYgKCgqbV9jdXJyZW50ID09ICcr
JyB8fCAqbV9jdXJyZW50ID09ICctJyB8fCAqbV9jdXJyZW50ID09ICcuJyB8fCAqbV9jdXJyZW50
ID49ICcwJyAmJiAqbV9jdXJyZW50IDw9ICc5JykKKyAgICAgICAgJiYgcHJldmlvdXNDb21tYW5k
ICE9IFBhdGhTZWdDbG9zZVBhdGgpIHsKKyAgICAgICAgaWYgKHByZXZpb3VzQ29tbWFuZCA9PSBQ
YXRoU2VnTW92ZVRvQWJzKQorICAgICAgICAgICAgcmV0dXJuIFBhdGhTZWdMaW5lVG9BYnM7Cisg
ICAgICAgIGlmIChwcmV2aW91c0NvbW1hbmQgPT0gUGF0aFNlZ01vdmVUb1JlbCkKKyAgICAgICAg
ICAgIHJldHVybiBQYXRoU2VnTGluZVRvUmVsOworICAgICAgICByZXR1cm4gcHJldmlvdXNDb21t
YW5kOworICAgIH0KKyAgICBTVkdQYXRoU2VnVHlwZSBuZXh0Q29tbWFuZDsKKyAgICBwYXJzZVNW
R1NlZ21lbnRUeXBlKG5leHRDb21tYW5kKTsKKyAgICByZXR1cm4gbmV4dENvbW1hbmQ7Cit9CisK
K30KKworI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoU3Ry
aW5nU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ1NvdXJj
ZS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFNW
R1BhdGhTdHJpbmdTb3VyY2VfaAorI2RlZmluZSBTVkdQYXRoU3RyaW5nU291cmNlX2gKKworI2lm
IEVOQUJMRShTVkcpCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTVkdQ
YXRoU291cmNlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBTVkdQYXRoU3RyaW5nU291cmNlIDogcHVibGljIFNWR1BhdGhTb3Vy
Y2UgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR1BhdGhTdHJpbmdTb3VyY2U+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIHN0cmluZykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgU1ZHUGF0aFN0cmluZ1NvdXJjZShzdHJpbmcpKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIH5TVkdQYXRoU3RyaW5nU291cmNlKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzTW9yZURh
dGEoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgbW92ZVRvTmV4dFRva2VuKCk7CisgICAgdmly
dHVhbCBib29sIHBhcnNlRmxvYXQoZmxvYXQmIHJlc3VsdCk7CisgICAgdmlydHVhbCBib29sIHBh
cnNlRmxhZyhib29sJiByZXN1bHQpOworICAgIHZpcnR1YWwgYm9vbCBwYXJzZVNWR1NlZ21lbnRU
eXBlKFNWR1BhdGhTZWdUeXBlJik7CisgICAgdmlydHVhbCBTVkdQYXRoU2VnVHlwZSBuZXh0Q29t
bWFuZChTVkdQYXRoU2VnVHlwZSBwcmV2aW91c0NvbW1hbmQpOworCitwcml2YXRlOgorICAgIFNW
R1BhdGhTdHJpbmdTb3VyY2UoY29uc3QgU3RyaW5nJik7CisgICAgU3RyaW5nIG1fc3RyaW5nOwor
CisgICAgY29uc3QgVUNoYXIqIG1fY3VycmVudDsKKyAgICBjb25zdCBVQ2hhciogbV9lbmQ7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKQorI2Vu
ZGlmIC8vIFNWR1BhdGhTdHJpbmdTb3VyY2VfaAo=
</data>
<flag name="review"
          id="52222"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
      

    </bug>

</bugzilla>