<?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>62938</bug_id>
          
          <creation_ts>2011-06-18 13:23:05 -0700</creation_ts>
          <short_desc>SVGAnimatorFactory does not support SVGNumber</short_desc>
          <delta_ts>2011-06-22 02:20:11 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>41761</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Dirk Schulze">krit</assigned_to>
          <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>423218</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-18 13:23:05 -0700</bug_when>
    <thetext>Add support for SVGNumber to SVGAnimatorFactory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423334</commentid>
    <comment_count>1</comment_count>
      <attachid>97717</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-18 22:21:57 -0700</bug_when>
    <thetext>Created attachment 97717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423338</commentid>
    <comment_count>2</comment_count>
      <attachid>97717</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-18 23:19:12 -0700</bug_when>
    <thetext>Comment on attachment 97717
Patch

Attachment 97717 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8912052</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423344</commentid>
    <comment_count>3</comment_count>
      <attachid>97718</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-19 00:45:22 -0700</bug_when>
    <thetext>Created attachment 97718
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423347</commentid>
    <comment_count>4</comment_count>
      <attachid>97718</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-19 03:27:40 -0700</bug_when>
    <thetext>Comment on attachment 97718
Patch

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

Great work, I&apos;m waiting with the r+ to wait on the mac build you&apos;ve tried to fix.

&gt; Source/WebCore/ChangeLog:10
&gt; +        SVG primitive datatype SVGNumber we do not animate values with units but support exponents.

we dont animate values with units but support exponents?
&quot;With the new animator for SVG Number we also support the scientific notation, and everything else that&apos;s supported by the SVGNumber parsing, removing the SVGAnimate* specific number parsing functionality&quot;.
Better, eh?

&gt; Source/WebCore/svg/SVGAnimateElement.cpp:472
&gt; +    // FIXME: A return value of float is not enough to support paced animations on lists.

Out of curiosity, what will be needed then? What&apos;s the difference here with paced anims on lists?

&gt; Source/WebCore/svg/SVGAnimateElement.h:-77
&gt; -    float m_fromNumber;
&gt; -    float m_toNumber;
&gt; -    float m_animatedNumber;

Yay!

&gt; Source/WebCore/svg/SVGAnimatedNumber.cpp:76
&gt; +    float number;

Can you move this below the next two ifs, to avoid confusion.

&gt; Source/WebCore/svg/SVGAnimatedNumber.cpp:91
&gt; +        number = percentage &lt; 0.5f ? fromNumber : toNumber;

s/.f/

&gt; Source/WebCore/svg/SVGAnimatedNumber.cpp:95
&gt; +    // FIXME: This is not correct for values animation.

I dislike these FIXMES (I know you only moved it). It would be better to say what&apos;s missing just like the the other FIXME regarding paced anims does.

&gt; Source/WebCore/svg/SVGAnimatedType.h:38
&gt; +
&gt; +    static PassOwnPtr&lt;SVGAnimatedType&gt; createAngle(SVGAngle*);
&gt; +    static PassOwnPtr&lt;SVGAnimatedType&gt; createLength(SVGLength*);
&gt; +    static PassOwnPtr&lt;SVGAnimatedType&gt; createNumber(float*);

Great idea, to move all of that to its own .cpp file, it was too cluttered already.

&gt; Source/WebCore/svg/SVGParserUtilities.cpp:154
&gt; -    return genericParseNumber(ptr, end, number, skip);
&gt; +    return genericParseNumber(ptr, end, number, skip) &amp;&amp; ptr == end;

That needs an explaination.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423348</commentid>
    <comment_count>5</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-19 03:40:06 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 97718 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=97718&amp;action=review
&gt; 
&gt; Great work, I&apos;m waiting with the r+ to wait on the mac build you&apos;ve tried to fix.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        SVG primitive datatype SVGNumber we do not animate values with units but support exponents.
&gt; 
&gt; we dont animate values with units but support exponents?
&gt; &quot;With the new animator for SVG Number we also support the scientific notation, and everything else that&apos;s supported by the SVGNumber parsing, removing the SVGAnimate* specific number parsing functionality&quot;.
&gt; Better, eh?
&gt; 
&gt; &gt; Source/WebCore/svg/SVGAnimateElement.cpp:472
&gt; &gt; +    // FIXME: A return value of float is not enough to support paced animations on lists.
&gt; 
&gt; Out of curiosity, what will be needed then? What&apos;s the difference here with paced anims on lists?
&gt; 
&gt; &gt; Source/WebCore/svg/SVGAnimateElement.h:-77
&gt; &gt; -    float m_fromNumber;
&gt; &gt; -    float m_toNumber;
&gt; &gt; -    float m_animatedNumber;
&gt; 
&gt; Yay!
&gt; 
&gt; &gt; Source/WebCore/svg/SVGAnimatedNumber.cpp:76
&gt; &gt; +    float number;
&gt; 
&gt; Can you move this below the next two ifs, to avoid confusion.
&gt; 
&gt; &gt; Source/WebCore/svg/SVGAnimatedNumber.cpp:91
&gt; &gt; +        number = percentage &lt; 0.5f ? fromNumber : toNumber;
&gt; 
&gt; s/.f/
&gt; 
&gt; &gt; Source/WebCore/svg/SVGAnimatedNumber.cpp:95
&gt; &gt; +    // FIXME: This is not correct for values animation.
&gt; 
&gt; I dislike these FIXMES (I know you only moved it). It would be better to say what&apos;s missing just like the the other FIXME regarding paced anims does.
&gt; 
&gt; &gt; Source/WebCore/svg/SVGAnimatedType.h:38
&gt; &gt; +
&gt; &gt; +    static PassOwnPtr&lt;SVGAnimatedType&gt; createAngle(SVGAngle*);
&gt; &gt; +    static PassOwnPtr&lt;SVGAnimatedType&gt; createLength(SVGLength*);
&gt; &gt; +    static PassOwnPtr&lt;SVGAnimatedType&gt; createNumber(float*);
&gt; 
&gt; Great idea, to move all of that to its own .cpp file, it was too cluttered already.
&gt; 
&gt; &gt; Source/WebCore/svg/SVGParserUtilities.cpp:154
&gt; &gt; -    return genericParseNumber(ptr, end, number, skip);
&gt; &gt; +    return genericParseNumber(ptr, end, number, skip) &amp;&amp; ptr == end;
&gt; 
&gt; That needs an explaination.
From the ChangeLog: &quot;Check if String simply consits of a number. Return false otherwise.&quot;
That should be turned into a comment IMHO.

So you&apos;re returning false now, even if number parsing return true, but we&apos;re not the end of the input.
sth like &quot;5e13 &quot; (note the trailing space, will now return false?) Or is whitespace already skipped by genericParseNumber?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423358</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-19 05:38:19 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 97718 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=97718&amp;action=review
&gt; &gt; 
&gt; &gt; Great work, I&apos;m waiting with the r+ to wait on the mac build you&apos;ve tried to fix.
The bot seems to be down. I uploaded the patch today morning. It was just an unused variable. I asserted the variable but don&apos;t used it. Thats why it build on my local machine with a debug build. But because the variable is not used, it is not necessary to assert it.

&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; &gt; +        SVG primitive datatype SVGNumber we do not animate values with units but support exponents.
&gt; &gt; 
&gt; &gt; we dont animate values with units but support exponents?
&gt; &gt; &quot;With the new animator for SVG Number we also support the scientific notation, and everything else that&apos;s supported by the SVGNumber parsing, removing the SVGAnimate* specific number parsing functionality&quot;.
&gt; &gt; Better, eh?
Yes, will change it.

&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/svg/SVGAnimateElement.cpp:472
&gt; &gt; &gt; +    // FIXME: A return value of float is not enough to support paced animations on lists.
&gt; &gt; 
&gt; &gt; Out of curiosity, what will be needed then? What&apos;s the difference here with paced anims on lists?
For SVGRect, SVGNumberList we need a distance for every value (4 for SVGRect). This can be fixed with a Vector&lt;float&gt; IMHO.

&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/svg/SVGAnimateElement.h:-77
&gt; &gt; &gt; -    float m_fromNumber;
&gt; &gt; &gt; -    float m_toNumber;
&gt; &gt; &gt; -    float m_animatedNumber;
&gt; &gt; 
&gt; &gt; Yay!
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/svg/SVGAnimatedNumber.cpp:76
&gt; &gt; &gt; +    float number;
&gt; &gt; 
&gt; &gt; Can you move this below the next two ifs, to avoid confusion.
Sure.

&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/svg/SVGAnimatedNumber.cpp:91
&gt; &gt; &gt; +        number = percentage &lt; 0.5f ? fromNumber : toNumber;
&gt; &gt; 
&gt; &gt; s/.f/
You mentioned it in a earlier review. All values are floats, why should I remove the f?

&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/svg/SVGAnimatedNumber.cpp:95
&gt; &gt; &gt; +    // FIXME: This is not correct for values animation.
&gt; &gt; 
&gt; &gt; I dislike these FIXMES (I know you only moved it). It would be better to say what&apos;s missing just like the the other FIXME regarding paced anims does.
I&apos;ll rephrase it.

&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/svg/SVGAnimatedType.h:38
&gt; &gt; &gt; +
&gt; &gt; &gt; +    static PassOwnPtr&lt;SVGAnimatedType&gt; createAngle(SVGAngle*);
&gt; &gt; &gt; +    static PassOwnPtr&lt;SVGAnimatedType&gt; createLength(SVGLength*);
&gt; &gt; &gt; +    static PassOwnPtr&lt;SVGAnimatedType&gt; createNumber(float*);
&gt; &gt; 
&gt; &gt; Great idea, to move all of that to its own .cpp file, it was too cluttered already.
Thanks.

&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/svg/SVGParserUtilities.cpp:154
&gt; &gt; &gt; -    return genericParseNumber(ptr, end, number, skip);
&gt; &gt; &gt; +    return genericParseNumber(ptr, end, number, skip) &amp;&amp; ptr == end;
&gt; &gt; 
&gt; &gt; That needs an explaination.
&gt; From the ChangeLog: &quot;Check if String simply consits of a number. Return false otherwise.&quot;
&gt; That should be turned into a comment IMHO.
You mean in an extra comment in the ChangeLog. I&apos;ll do it.

&gt; 
&gt; So you&apos;re returning false now, even if number parsing return true, but we&apos;re not the end of the input.
&gt; sth like &quot;5e13 &quot; (note the trailing space, will now return false?) Or is whitespace already skipped by genericParseNumber?
Yes correct. genericParseNumber skips whitespaces if the flag is set. We don&apos;t use it in the animation code. I added it for consistency reasons. And it is just a extra flag with a default value. So it doesn&apos;t hurt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423360</commentid>
    <comment_count>7</comment_count>
      <attachid>97721</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-19 06:41:48 -0700</bug_when>
    <thetext>Created attachment 97721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423361</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-19 07:03:39 -0700</bug_when>
    <thetext>Just moved the float number; declaration and modified the comments according to Nikos post.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423386</commentid>
    <comment_count>9</comment_count>
      <attachid>97721</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-19 12:59:26 -0700</bug_when>
    <thetext>Comment on attachment 97721
Patch

r=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423388</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-19 13:11:50 -0700</bug_when>
    <thetext>Committed r89220: &lt;http://trac.webkit.org/changeset/89220&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423395</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-19 13:49:26 -0700</bug_when>
    <thetext>Committed r89222: &lt;http://trac.webkit.org/changeset/89222&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97717</attachid>
            <date>2011-06-18 22:21:57 -0700</date>
            <delta_ts>2011-06-19 00:45:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62938-20110619072153.patch</filename>
            <type>text/plain</type>
            <size>48285</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5MjA2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjAgQEAKKzIwMTEtMDYtMTggIERpcmsgU2No
dWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTVkdBbmltYXRvckZhY3RvcnkgZG9lcyBub3Qgc3VwcG9ydCBTVkdO
dW1iZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYy
OTM4CisKKyAgICAgICAgRm9sbG93IHVwIG9mICJTVkdBbmltYXRpb24gc2hvdWxkIHVzZSBkaXJl
Y3QgdW5pdCBhbmltYXRpb24gZm9yIFNWR0xlbmd0aCI6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MTM2OAorICAgICAgICBUaGlzIHBhdGNoIGNvbnRpbnVlcyB0aGUg
Y29udmVyc2lvbiB0byB0aGUgbmV3IGNvbmNlcHQgb2YgU1ZHQW5pbWF0b3JGYWN0b3J5IHdpdGgg
U1ZHTnVtYmVyLiBXaXRoIHRoZSBuZXcgYW5pbWF0b3IgZm9yIHRoZQorICAgICAgICBTVkcgcHJp
bWl0aXZlIGRhdGF0eXBlIFNWR051bWJlciB3ZSBkbyBub3QgYW5pbWF0ZSB2YWx1ZXMgd2l0aCB1
bml0cyBidXQgc3VwcG9ydCBleHBvbmVudHMuCisgICAgICAgIE1vdmluZyB0aGUgY29udGVudCBv
ZiBTVkdBbmltYXRlZFR5cGUgaGVhZGVyIHRvIGl0cyBvd24gY3BwLgorCisgICAgICAgIFRlc3Rz
OiBzdmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9uLTEuaHRtbAorICAgICAgICAgICAg
ICAgc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVyLWFuaW1hdGlvbi0yLmh0bWwKKyAgICAgICAgICAg
ICAgIHN2Zy9hbmltYXRpb25zL3N2Z251bWJlci1hbmltYXRpb24tMy5odG1sCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDogQWRkZWQgbmV3IGZpbGVzIHRvIGJ1aWxkIHN5c3RlbS4KKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUucHJvOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdBbGxJ
bk9uZS5jcHA6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHA6IFVz
ZSBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yIGZvciBhbmltYXRpb25zIG9mIFNWR051bWJlcnMu
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6U1ZHQW5pbWF0ZUVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZy
b21BbmRUb1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2Fs
Y3VsYXRlRnJvbUFuZEJ5VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVt
ZW50OjpyZXNldFRvQmFzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVt
ZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
RWxlbWVudDo6Y2FsY3VsYXRlRGlzdGFuY2UpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlRWxl
bWVudC5oOiBSZW1vdmUgZmxvYXRzIGZvciB2YWx1ZSBzdG9yYWdlLiBUaGlzIGlzIGRvbmUgYnkg
U1ZHQW5pbWF0ZWRUeXBlcyBub3cuCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNw
cDogQWRkZWQuIEFuaW1hdG9yIGZvciBTVkdOdW1iZXJzLgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3Ry
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OmNhbGN1
bGF0ZUZyb21BbmRUb1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJl
ckFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5j
ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjp+U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcik6
CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHA6IEFkZGVkLiBNb3ZlZCBjb250ZW50
IGZyb20gaGVhZGVyIHRvIGNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6
U1ZHQW5pbWF0ZWRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6flNW
R0FuaW1hdGVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OmNyZWF0
ZUFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTGVuZ3Ro
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTnVtYmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6YW5nbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZWRUeXBlOjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZWRUeXBlOjpudW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjp2YWx1
ZUFzU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6c2V0VmFsdWVB
c1N0cmluZyk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5oOiBSZW1vdmVkIG1ldGhv
ZCBjcmVhdGUoKS4gQWxsd2F5cyBjYWxsIHR5cGUgc3BlY2lmaWMgY3JlYXRlIGZ1bnRjaW9ucy4K
KyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0b3JGYWN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZSk6CisgICAgICAgICogc3ZnL1NWR1BhcnNlclV0aWxp
dGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZU51bWJlckZyb21TdHJpbmcpOiBDaGVj
ayBpZiBTdHJpbmcgc2ltcGx5IGNvbnNpdHMgb2YgYSBudW1iZXIuIFJldHVybiBmYWxzZSBvdGhl
cndpc2UuCisKIDIwMTEtMDYtMTggIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAkocmV2aXNpb24gODkxODcpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMTY1NCw2ICsxNjU0LDggQEAgSUYgKEVOQUJMRV9TVkcpCiAgICAgICAg
IHN2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcAogICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRB
bmdsZS5jcHAKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcAorICAgICAgICBzdmcv
U1ZHQW5pbWF0ZWROdW1iZXIuY3BwCisgICAgICAgIHN2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCiAg
ICAgICAgIHN2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcAogICAgICAgICBzdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQu
Y3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDg5MTg3KQor
KysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAt
MzM0MywxMiArMzM0MywxNCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZExlbmd0aC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0
LmggXAorCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZFByZXNlcnZlQXNwZWN0UmF0aW8uaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
UmVjdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaCBcCiAJU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkVHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0
b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcCBcCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA4OTE4NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNTcwNiw2ICs1NzA2LDggQEAKICAgICAgICAgICAg
ICdzdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5p
bWF0ZWRBbmdsZS5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAn
LAorICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAnLAorICAgICAgICAgICAg
J3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZUVs
ZW1lbnQuY3BwJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaCcsCiAgICAg
ICAgICAgICAnc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCcsCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybwkocmV2aXNpb24gODkxODcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkod29y
a2luZyBjb3B5KQpAQCAtMzI5NCw2ICszMjk0LDggQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxF
X1NWRz0xKSB7CiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcCBc
CiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcCBcCiAgICAgICAgICAgICAg
IHN2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAgXAorICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0
ZWROdW1iZXIuY3BwIFwKKyAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAgXAog
ICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwIFwKICAgICAgICAgICAgICAg
c3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCBcCiAgICAgICAgICAgICAgIHN2Zy9TVkdB
bmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gODkxODcpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTk5Miw2ICs5OTIsOCBAQAogCQk0MzlEMzM0MzEzQTY5MTFDMDBDMjBGNEYgLyog
U1ZHQW5pbWF0ZWRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MzlEMzM0MDEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlLmggKi87
IH07CiAJCTQzOUQzMzQ0MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGVBbmltYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5RDMz
NDExM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmggKi87IH07CiAJ
CTQzOUQzMzQ1MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRvckZhY3RvcnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOUQzMzQyMTNBNjkxMUMw
MEMyMEY0RiAvKiBTVkdBbmltYXRvckZhY3RvcnkuaCAqLzsgfTsKKwkJNDNBMEYwQjExM0FDN0Q2
RDAwQTVGMEE3IC8qIFNWR0FuaW1hdGVkTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzQTBGMEIwMTNBQzdENkQwMEE1RjBBNyAvKiBTVkdB
bmltYXRlZE51bWJlci5jcHAgKi87IH07CisJCTQzQTBGMEI2MTNBQ0NDRkYwMEE1RjBBNyAvKiBT
VkdBbmltYXRlZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDNBMEYwQjUxM0FDQ0NGRjAwQTVGMEE3IC8qIFNWR0FuaW1hdGVkVHlwZS5jcHAg
Ki87IH07CiAJCTQzQzA5MkJDMTJEOUU0RUUwMEE5ODlDMyAvKiBSZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0Mw
OTJCQTEyRDlFNEVFMDBBOTg5QzMgLyogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oICovOyB9Owog
CQk0NDE1MjkyRTBFMUFFOEEwMDBDNEEyRDAgLyogSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQxNTI5MkMwRTFB
RThBMDAwQzRBMkQwIC8qIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NDE1MjkyRjBFMUFFOEEwMDBDNEEy
RDAgLyogSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDE1MjkyRDBFMUFFOEEwMDBDNEEyRDAgLyogSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5jcHAgKi87IH07CkBAIC03NDU1LDYgKzc0NTcsOCBAQAogCQk0MzlE
MzM0MDEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MzlEMzM0MTEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlQW5p
bWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRUeXBl
QW5pbWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM5RDMzNDIxM0E2OTEx
QzAwQzIwRjRGIC8qIFNWR0FuaW1hdG9yRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTVkdBbmltYXRvckZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDNBMEYwQjAxM0FDN0Q2RDAwQTVGMEE3IC8qIFNWR0FuaW1hdGVkTnVtYmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0FuaW1hdGVkTnVtYmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDNBMEYwQjUxM0FDQ0NGRjAwQTVGMEE3
IC8qIFNWR0FuaW1hdGVkVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTVkdBbmltYXRlZFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
M0MwOTJCOTEyRDlFNEVFMDBBOTg5QzMgLyogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTVkdGb3JlaWduT2JqZWN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDNDMDkyQkExMkQ5RTRFRTAwQTk4
OUMzIC8qIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NDE1MjkyQzBFMUFFOEEwMDBDNEEyRDAgLyogSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzM1Miw2ICsxNzM1Niw3IEBA
CiAJCQkJQjIyMjc3RUEwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkTGVuZ3RoLmlkbCAq
LywKIAkJCQkwODkwMjFBQzEyNkVGNUU5MDA5MkQ1RUEgLyogU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0
LmggKi8sCiAJCQkJQjIyMjc3RUIwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkTGVuZ3Ro
TGlzdC5pZGwgKi8sCisJCQkJNDNBMEYwQjAxM0FDN0Q2RDAwQTVGMEE3IC8qIFNWR0FuaW1hdGVk
TnVtYmVyLmNwcCAqLywKIAkJCQkwOEIzNUIxMjEyN0I2QTdDMDA1MzE0REQgLyogU1ZHQW5pbWF0
ZWROdW1iZXIuaCAqLywKIAkJCQlCMjIyNzdFQzBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0
ZWROdW1iZXIuaWRsICovLAogCQkJCTA4QjM1QjE2MTI3QjZBODgwMDUzMTRERCAvKiBTVkdBbmlt
YXRlZE51bWJlckxpc3QuaCAqLywKQEAgLTE3MzY0LDYgKzE3MzY5LDcgQEAKIAkJCQlCMjIyNzdG
NjBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRTdHJpbmcuaWRsICovLAogCQkJCTA4MjUw
OTM4MTI4QkQ0RDgwMEUyRUQ4RSAvKiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCAqLywKIAkJ
CQlCMjIyNzdGODBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0Lmlk
bCAqLywKKwkJCQk0M0EwRjBCNTEzQUNDQ0ZGMDBBNUYwQTcgLyogU1ZHQW5pbWF0ZWRUeXBlLmNw
cCAqLywKIAkJCQk0MzlEMzM0MDEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlLmgg
Ki8sCiAJCQkJNDM5RDMzNDExM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZUFuaW1h
dG9yLmggKi8sCiAJCQkJQjIyMjc3RjkwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVFbGVt
ZW50LmNwcCAqLywKQEAgLTI1NzMzLDYgKzI1NzM5LDggQEAKIAkJCQlCMUFENEU3MzEzQTEyQTQ2
MDA4NDZCMjcgLyogQ3VlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIxQUQ0RTdCMTNB
MTJBNzIwMDg0NkIyNyAvKiBDdWVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM2MkM3
QjkxM0FDNkYxQTAwMzQ0QkVCIC8qIFNWR0FuaW1hdGVkQW5nbGUuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNDNBMEYwQjExM0FDN0Q2RDAwQTVGMEE3IC8qIFNWR0FuaW1hdGVkTnVtYmVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTQzQTBGMEI2MTNBQ0NDRkYwMEE1RjBBNyAvKiBTVkdBbmltYXRl
ZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWxs
SW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5j
cHAJKHJldmlzaW9uIDg5MTg3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsbEluT25lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIlNWR0FuaW1hdGVD
b2xvckVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkQW5nbGUuY3BwIgogI2luY2x1
ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmNwcCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlci5j
cHAiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUeXBlLmNwcCIKICNpbmNsdWRlICJTVkdBbmltYXRl
RWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwIgogI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAkocmV2aXNpb24gODkxODcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3
ICsyOSw2IEBACiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlO
YW1lcy5oIgogI2luY2x1ZGUgIkNvbG9yRGlzdGFuY2UuaCIKLSNpbmNsdWRlICJGbG9hdENvbnZl
cnNpb24uaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0b3JGYWN0b3J5LmgiCkBAIC00OCw5ICs0Nyw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNWR0FuaW1hdGVFbGVtZW50OjpTVkdBbmltYXRlRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAg
OiBTVkdBbmltYXRpb25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9hbmltYXRl
ZEF0dHJpYnV0ZVR5cGUoQW5pbWF0ZWRTdHJpbmcpCi0gICAgLCBtX2Zyb21OdW1iZXIoMCkKLSAg
ICAsIG1fdG9OdW1iZXIoMCkKLSAgICAsIG1fYW5pbWF0ZWROdW1iZXIobnVtZXJpY19saW1pdHM8
ZmxvYXQ+OjppbmZpbml0eSgpKQogICAgICwgbV9hbmltYXRlZFBhdGhQb2ludGVyKDApCiB7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVUYWcpIHx8IGhhc1RhZ05hbWUo
U1ZHTmFtZXM6OnNldFRhZykgfHwgaGFzVGFnTmFtZShTVkdOYW1lczo6YW5pbWF0ZUNvbG9yVGFn
KSk7CkBAIC0xNjksNDAgKzE2NSw2IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0
ZUFuaW1hdGUKICAgICBpZiAocmVzdWx0cy0+bV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgPT0gQW5p
bWF0ZWRTdHJpbmcgJiYgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgIT0gQW5pbWF0ZWRTdHJpbmcp
CiAgICAgICAgIHJldHVybjsKICAgICBzd2l0Y2ggKG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKSB7
Ci0gICAgY2FzZSBBbmltYXRlZE51bWJlcjogewotICAgICAgICAvLyBUbyBhbmltYXRpb24gdXNl
cyBjb250cmlidXRpb25zIGZyb20gdGhlIGxvd2VyIHByaW9yaXR5IGFuaW1hdGlvbnMgYXMgdGhl
IGJhc2UgdmFsdWUuCi0gICAgICAgIGlmIChhbmltYXRpb25Nb2RlID09IFRvQW5pbWF0aW9uKQot
ICAgICAgICAgICAgbV9mcm9tTnVtYmVyID0gcmVzdWx0cy0+bV9hbmltYXRlZE51bWJlcjsKLSAg
ICAgICAgCi0gICAgICAgIC8vIFJlcGxhY2UgJ2N1cnJlbnRDb2xvcicgLyAnaW5oZXJpdCcgYnkg
dGhlaXIgY29tcHV0ZWQgcHJvcGVydHkgdmFsdWVzLgotICAgICAgICBpZiAobV9mcm9tUHJvcGVy
dHlWYWx1ZVR5cGUgPT0gSW5oZXJpdFZhbHVlKSB7Ci0gICAgICAgICAgICBTdHJpbmcgZnJvbU51
bWJlclN0cmluZzsKLSAgICAgICAgICAgIGFkanVzdEZvckluaGVyaXRhbmNlKHRhcmdldEVsZW1l
bnQsIGF0dHJpYnV0ZU5hbWUoKSwgZnJvbU51bWJlclN0cmluZyk7Ci0gICAgICAgICAgICBpZiAo
IXBhcnNlTnVtYmVyRnJvbVN0cmluZyhmcm9tTnVtYmVyU3RyaW5nLCBtX2Zyb21OdW1iZXIsIGZh
bHNlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1f
dG9Qcm9wZXJ0eVZhbHVlVHlwZSA9PSBJbmhlcml0VmFsdWUpIHsKLSAgICAgICAgICAgIFN0cmlu
ZyB0b051bWJlclN0cmluZzsKLSAgICAgICAgICAgIGFkanVzdEZvckluaGVyaXRhbmNlKHRhcmdl
dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUoKSwgdG9OdW1iZXJTdHJpbmcpOwotICAgICAgICAgICAg
aWYgKCFwYXJzZU51bWJlckZyb21TdHJpbmcodG9OdW1iZXJTdHJpbmcsIG1fdG9OdW1iZXIsIGZh
bHNlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBmbG9h
dCBudW1iZXI7Ci0gICAgICAgIGlmIChjYWxjTW9kZSgpID09IENhbGNNb2RlRGlzY3JldGUpCi0g
ICAgICAgICAgICBudW1iZXIgPSBpc0luRmlyc3RIYWxmT2ZBbmltYXRpb24gPyBtX2Zyb21OdW1i
ZXIgOiBtX3RvTnVtYmVyOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBudW1iZXIgPSAobV90
b051bWJlciAtIG1fZnJvbU51bWJlcikgKiBwZXJjZW50YWdlICsgbV9mcm9tTnVtYmVyOwotCi0g
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBjb3JyZWN0IGZvciB2YWx1ZXMgYW5pbWF0aW9u
LgotICAgICAgICBpZiAoaXNBY2N1bXVsYXRlZCgpICYmIHJlcGVhdCkKLSAgICAgICAgICAgIG51
bWJlciArPSBtX3RvTnVtYmVyICogcmVwZWF0OwotICAgICAgICBpZiAoaXNBZGRpdGl2ZSgpICYm
IGFuaW1hdGlvbk1vZGUgIT0gVG9BbmltYXRpb24pCi0gICAgICAgICAgICByZXN1bHRzLT5tX2Fu
aW1hdGVkTnVtYmVyICs9IG51bWJlcjsKLSAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHJlc3Vs
dHMtPm1fYW5pbWF0ZWROdW1iZXIgPSBudW1iZXI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9IAog
ICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjogewogICAgICAgICBpZiAoYW5pbWF0aW9uTW9kZSA9PSBU
b0FuaW1hdGlvbikKICAgICAgICAgICAgIG1fZnJvbUNvbG9yID0gcmVzdWx0cy0+bV9hbmltYXRl
ZENvbG9yOwpAQCAtMjg3LDcgKzI0OSw4IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1
bGF0ZUFuaW1hdGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEFuaW1hdGVkQW5n
bGU6Ci0gICAgY2FzZSBBbmltYXRlZExlbmd0aDogeworICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6
CisgICAgY2FzZSBBbmltYXRlZE51bWJlcjogewogICAgICAgICBBU1NFUlQobV9hbmltYXRvcik7
CiAgICAgICAgIEFTU0VSVChyZXN1bHRzLT5tX2FuaW1hdGVkVHlwZSk7CiAgICAgICAgIC8vIFRh
cmdldCBlbGVtZW50IG1pZ2h0IGhhdmUgY2hhbmdlZC4KQEAgLTM1NywxNCArMzIwLDYgQEAgYm9v
bCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZAogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOiB7
Ci0gICAgICAgIGlmIChwYXJzZU51bWJlckZyb21TdHJpbmcodG9TdHJpbmcsIG1fdG9OdW1iZXIs
IGZhbHNlKSkgewotICAgICAgICAgICAgLy8gRm9yIHRvLWFuaW1hdGlvbnMgdGhlIGZyb20gbnVt
YmVyIGlzIGNhbGN1bGF0ZWQgbGF0ZXIKLSAgICAgICAgICAgIGlmIChhbmltYXRpb25Nb2RlKCkg
PT0gVG9BbmltYXRpb24gfHwgcGFyc2VOdW1iZXJGcm9tU3RyaW5nKGZyb21TdHJpbmcsIG1fZnJv
bU51bWJlciwgZmFsc2UpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KICAgICBjYXNlIEFuaW1hdGVkUGF0aDogewogICAgICAg
ICBTVkdQYXRoUGFyc2VyRmFjdG9yeSogZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5Ojpz
ZWxmKCk7CiAgICAgICAgIGlmIChmYWN0b3J5LT5idWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVN0
cmluZyh0b1N0cmluZywgbV90b1BhdGgsIFVuYWx0ZXJlZFBhcnNpbmcpKSB7CkBAIC0zODcsNiAr
MzQyLDcgQEAgYm9vbCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZAogICAgIH0K
ICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKKyAgICBj
YXNlIEFuaW1hdGVkTnVtYmVyOgogICAgICAgICBlbnN1cmVBbmltYXRvcigpLT5jYWxjdWxhdGVG
cm9tQW5kVG9WYWx1ZXMobV9mcm9tVHlwZSwgbV90b1R5cGUsIGZyb21TdHJpbmcsIHRvU3RyaW5n
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKQEAgLTQyOCwxNSArMzg0LDEx
IEBAIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmQKICAgICB9CiAgICAg
Y2FzZSBBbmltYXRlZEFuZ2xlOgogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6CisgICAgY2FzZSBB
bmltYXRlZE51bWJlcjoKICAgICAgICAgZW5zdXJlQW5pbWF0b3IoKS0+Y2FsY3VsYXRlRnJvbUFu
ZEJ5VmFsdWVzKG1fZnJvbVR5cGUsIG1fdG9UeXBlLCBmcm9tU3RyaW5nLCBieVN0cmluZyk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIG1fZnJvbU51bWJlciA9
IDA7Ci0gICAgICAgIGlmICghZnJvbVN0cmluZy5pc0VtcHR5KCkgJiYgIXBhcnNlTnVtYmVyRnJv
bVN0cmluZyhmcm9tU3RyaW5nLCBtX2Zyb21OdW1iZXIsIGZhbHNlKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFwYXJzZU51bWJlckZyb21TdHJpbmcoYnlTdHJpbmcs
IG1fdG9OdW1iZXIsIGZhbHNlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
bV90b051bWJlciArPSBtX2Zyb21OdW1iZXI7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTQ1NiwxNCArNDA4LDYgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVu
dDo6cmVzZXRUb0Jhc2VWYWx1ZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6Ci0gICAgICAgIGlmIChiYXNlU3Ry
aW5nLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgbV9hbmltYXRlZE51bWJlciA9IDA7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHBhcnNlTnVtYmVyRnJvbVN0
cmluZyhiYXNlU3RyaW5nLCBtX2FuaW1hdGVkTnVtYmVyLCBmYWxzZSkpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQW5pbWF0ZWRQYXRoOiB7CiAgICAgICAg
IG1fYW5pbWF0ZWRQYXRoLmNsZWFyKCk7CiAgICAgICAgIFNWR1BhdGhQYXJzZXJGYWN0b3J5KiBm
YWN0b3J5ID0gU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsKQEAgLTQ3NSw3ICs0MTksOCBA
QCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlCiAgICAgICAgIG1fYW5p
bWF0ZWRQb2ludHMuY2xlYXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQW5pbWF0ZWRB
bmdsZToKLSAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOiB7CisgICAgY2FzZSBBbmltYXRlZExlbmd0
aDoKKyAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOiB7CiAgICAgICAgIGlmICghbV9hbmltYXRlZFR5
cGUpCiAgICAgICAgICAgICBtX2FuaW1hdGVkVHlwZSA9IGVuc3VyZUFuaW1hdG9yKCktPmNvbnN0
cnVjdEZyb21TdHJpbmcoYmFzZVN0cmluZyk7CiAgICAgICAgIGVsc2UKQEAgLTQ5NSw5ICs0NDAs
NiBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjphcHBseVJlc3VsdHNUb1RhCiAgICAgY2FzZSBB
bmltYXRlZENvbG9yOgogICAgICAgICB2YWx1ZVRvQXBwbHkgPSBtX2FuaW1hdGVkQ29sb3Iuc2Vy
aWFsaXplZCgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgotICAg
ICAgICB2YWx1ZVRvQXBwbHkgPSBTdHJpbmc6Om51bWJlcihtX2FuaW1hdGVkTnVtYmVyKTsKLSAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBBbmltYXRlZFBhdGg6IHsKICAgICAgICAgaWYgKCFtX2Fu
aW1hdGVkUGF0aFBvaW50ZXIgfHwgbV9hbmltYXRlZFBhdGhQb2ludGVyLT5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICB2YWx1ZVRvQXBwbHkgPSBtX2FuaW1hdGVkU3RyaW5nOwpAQCAtNTE2LDYgKzQ1
OCw3IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGEKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6
CisgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKICAgICAgICAgdmFsdWVUb0FwcGx5ID0gbV9hbmlt
YXRlZFR5cGUtPnZhbHVlQXNTdHJpbmcoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
QEAgLTUyNiwyMCArNDY5LDEzIEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmFwcGx5UmVzdWx0
c1RvVGEKICAgICAKIGZsb2F0IFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVEaXN0YW5jZShj
b25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCiB7CisgICAg
Ly8gRklYTUU6IEEgcmV0dXJuIHZhbHVlIG9mIGZsb2F0IGlzIG5vdCBlbm91Z2ggdG8gc3VwcG9y
dCBwYWNlZCBhbmltYXRpb25zIG9uIGxpc3RzLgogICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1l
bnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KQogICAg
ICAgICByZXR1cm4gLTE7CiAgICAgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgPSBkZXRlcm1pbmVB
bmltYXRlZEF0dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVudCk7Ci0gICAgaWYgKG1fYW5pbWF0ZWRB
dHRyaWJ1dGVUeXBlID09IEFuaW1hdGVkTnVtYmVyKSB7Ci0gICAgICAgIGZsb2F0IGZyb207Ci0g
ICAgICAgIGZsb2F0IHRvOwotICAgICAgICBpZiAoIXBhcnNlTnVtYmVyRnJvbVN0cmluZyhmcm9t
U3RyaW5nLCBmcm9tLCBmYWxzZSkpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGlm
ICghcGFyc2VOdW1iZXJGcm9tU3RyaW5nKHRvU3RyaW5nLCB0bywgZmFsc2UpKQotICAgICAgICAg
ICAgcmV0dXJuIC0xOwotICAgICAgICByZXR1cm4gZmFicyh0byAtIGZyb20pOwotICAgIH0KLSAg
ICBpZiAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgPT0gQW5pbWF0ZWRDb2xvcikgeworICAgIHN3
aXRjaCAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUpIHsKKyAgICBjYXNlIEFuaW1hdGVkQ29sb3I6
IHsKICAgICAgICAgQ29sb3IgZnJvbSA9IFNWR0NvbG9yOjpjb2xvckZyb21SR0JDb2xvclN0cmlu
Zyhmcm9tU3RyaW5nKTsKICAgICAgICAgaWYgKCFmcm9tLmlzVmFsaWQoKSkKICAgICAgICAgICAg
IHJldHVybiAtMTsKQEAgLTU0OCw4ICs0ODQsMTMgQEAgZmxvYXQgU1ZHQW5pbWF0ZUVsZW1lbnQ6
OmNhbGN1bGF0ZURpc3RhbgogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICByZXR1cm4g
Q29sb3JEaXN0YW5jZShmcm9tLCB0bykuZGlzdGFuY2UoKTsKICAgICB9Ci0gICAgaWYgKG1fYW5p
bWF0ZWRBdHRyaWJ1dGVUeXBlID09IEFuaW1hdGVkQW5nbGUgfHwgbV9hbmltYXRlZEF0dHJpYnV0
ZVR5cGUgPT0gQW5pbWF0ZWRMZW5ndGgpCisgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgorICAgIGNh
c2UgQW5pbWF0ZWRMZW5ndGg6CisgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKICAgICAgICAgcmV0
dXJuIGVuc3VyZUFuaW1hdG9yKCktPmNhbGN1bGF0ZURpc3RhbmNlKHRoaXMsIGZyb21TdHJpbmcs
IHRvU3RyaW5nKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CiAgICAgcmV0
dXJuIC0xOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAko
cmV2aXNpb24gODkxODcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNzIsOSArNzIsNiBAQCBwcml2YXRlOgogCiAgICAgQW5pbWF0
ZWRQcm9wZXJ0eVZhbHVlVHlwZSBtX2Zyb21Qcm9wZXJ0eVZhbHVlVHlwZTsKICAgICBBbmltYXRl
ZFByb3BlcnR5VmFsdWVUeXBlIG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZTsKLSAgICBmbG9hdCBtX2Zy
b21OdW1iZXI7Ci0gICAgZmxvYXQgbV90b051bWJlcjsKLSAgICBmbG9hdCBtX2FuaW1hdGVkTnVt
YmVyOwogICAgIENvbG9yIG1fZnJvbUNvbG9yOwogICAgIENvbG9yIG1fdG9Db2xvcjsKICAgICBD
b2xvciBtX2FuaW1hdGVkQ29sb3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWROdW1iZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZE51bWJlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWROdW1iZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExNyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNW
R19BTklNQVRJT04pCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKKworI2luY2x1ZGUg
IlNWR1BhcnNlclV0aWxpdGllcy5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1NWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OlNWR0FuaW1hdGVkTnVt
YmVyQW5pbWF0b3IoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5h
bWUmKQorICAgIDogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWROdW1iZXIsIGNvbnRl
eHRFbGVtZW50KQoreworfQorCitQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0
ZWROdW1iZXJBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmlu
ZykKK3sKKyAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmltdGVkVHlwZSA9IFNWR0FuaW1h
dGVkVHlwZTo6Y3JlYXRlTnVtYmVyKG5ldyBmbG9hdCk7CisgICAgZmxvYXQmIGFuaW1hdGVkTnVt
YmVyID0gYW5pbXRlZFR5cGUtPm51bWJlcigpOworICAgIGlmICghcGFyc2VOdW1iZXJGcm9tU3Ry
aW5nKHN0cmluZywgYW5pbWF0ZWROdW1iZXIpKQorICAgICAgICBhbmltYXRlZE51bWJlciA9IDA7
CisgICAgcmV0dXJuIGFuaW10ZWRUeXBlLnJlbGVhc2UoKTsKK30KKwordm9pZCBTVkdBbmltYXRl
ZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3RyaW5n
JiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQoreworICAgIGZyb20gPSBjb25z
dHJ1Y3RGcm9tU3RyaW5nKGZyb21TdHJpbmcpOworICAgIHRvID0gY29uc3RydWN0RnJvbVN0cmlu
Zyh0b1N0cmluZyk7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3Vs
YXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3Ry
aW5nJiBieVN0cmluZykKK3sKKyAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7CisgICAgCisg
ICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7CisgICAgdG8gPSBjb25z
dHJ1Y3RGcm9tU3RyaW5nKGJ5U3RyaW5nKTsKKworICAgIHRvLT5udW1iZXIoKSArPSBmcm9tLT5u
dW1iZXIoKTsKK30KKwordm9pZCBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVB
bmltYXRlZFZhbHVlKFNWR1NNSUxFbGVtZW50KiBzbWlsRWxlbWVudCwgZmxvYXQgcGVyY2VudGFn
ZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93
blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1h
dGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgZnJvbVByb3BlcnR5SW5oZXJpdHMsIGJvb2wgdG9Qcm9wZXJ0eUluaGVyaXRzKQor
eworICAgIEFTU0VSVChzbWlsRWxlbWVudCk7CisgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQp
OworICAgIFNWR0FuaW1hdGVFbGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8
U1ZHQW5pbWF0ZUVsZW1lbnQqPihzbWlsRWxlbWVudCk7CisgICAgCisgICAgQW5pbWF0aW9uTW9k
ZSBhbmltYXRpb25Nb2RlID0gYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgpOworICAg
IC8vIFRvIGFuaW1hdGlvbiB1c2VzIGNvbnRyaWJ1dGlvbnMgZnJvbSB0aGUgbG93ZXIgcHJpb3Jp
dHkgYW5pbWF0aW9ucyBhcyB0aGUgYmFzZSB2YWx1ZS4KKyAgICBmbG9hdCYgYW5pbWF0ZWROdW1i
ZXIgPSBhbmltYXRlZC0+bnVtYmVyKCk7CisgICAgaWYgKGFuaW1hdGlvbk1vZGUgPT0gVG9Bbmlt
YXRpb24pCisgICAgICAgIGZyb20tPm51bWJlcigpID0gYW5pbWF0ZWROdW1iZXI7CisgICAgCisg
ICAgLy8gUmVwbGFjZSAnaW5oZXJpdCcgYnkgdGhlaXIgY29tcHV0ZWQgcHJvcGVydHkgdmFsdWVz
LgorICAgIGZsb2F0IG51bWJlcjsKKyAgICBmbG9hdCYgZnJvbU51bWJlciA9IGZyb20tPm51bWJl
cigpOworICAgIGZsb2F0JiB0b051bWJlciA9IHRvLT5udW1iZXIoKTsKKyAgICBpZiAoZnJvbVBy
b3BlcnR5SW5oZXJpdHMpIHsKKyAgICAgICAgU3RyaW5nIGZyb21OdW1iZXJTdHJpbmc7CisgICAg
ICAgIGFuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZvckluaGVyaXRhbmNlKG1fY29udGV4dEVsZW1l
bnQsIGFuaW1hdGlvbkVsZW1lbnQtPmF0dHJpYnV0ZU5hbWUoKSwgZnJvbU51bWJlclN0cmluZyk7
CisgICAgICAgIHBhcnNlTnVtYmVyRnJvbVN0cmluZyhmcm9tTnVtYmVyU3RyaW5nLCBmcm9tTnVt
YmVyKTsgCisgICAgfQorICAgIGlmICh0b1Byb3BlcnR5SW5oZXJpdHMpIHsKKyAgICAgICAgU3Ry
aW5nIHRvTnVtYmVyU3RyaW5nOworICAgICAgICBhbmltYXRpb25FbGVtZW50LT5hZGp1c3RGb3JJ
bmhlcml0YW5jZShtX2NvbnRleHRFbGVtZW50LCBhbmltYXRpb25FbGVtZW50LT5hdHRyaWJ1dGVO
YW1lKCksIHRvTnVtYmVyU3RyaW5nKTsKKyAgICAgICAgcGFyc2VOdW1iZXJGcm9tU3RyaW5nKHRv
TnVtYmVyU3RyaW5nLCB0b051bWJlcik7IAorICAgIH0KKyAgICAKKyAgICBpZiAoYW5pbWF0aW9u
RWxlbWVudC0+Y2FsY01vZGUoKSA9PSBDYWxjTW9kZURpc2NyZXRlKQorICAgICAgICBudW1iZXIg
PSBwZXJjZW50YWdlIDwgMC41ZiA/IGZyb21OdW1iZXIgOiB0b051bWJlcjsKKyAgICBlbHNlCisg
ICAgICAgIG51bWJlciA9ICh0b051bWJlciAtIGZyb21OdW1iZXIpICogcGVyY2VudGFnZSArIGZy
b21OdW1iZXI7CisgICAgCisgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IGNvcnJlY3QgZm9yIHZh
bHVlcyBhbmltYXRpb24uCisgICAgaWYgKGFuaW1hdGlvbkVsZW1lbnQtPmlzQWNjdW11bGF0ZWQo
KSAmJiByZXBlYXRDb3VudCkKKyAgICAgICAgbnVtYmVyICs9IHRvTnVtYmVyICogcmVwZWF0Q291
bnQ7CisgICAgaWYgKGFuaW1hdGlvbkVsZW1lbnQtPmlzQWRkaXRpdmUoKSAmJiBhbmltYXRpb25N
b2RlICE9IFRvQW5pbWF0aW9uKQorICAgICAgICBhbmltYXRlZE51bWJlciArPSBudW1iZXI7Cisg
ICAgZWxzZQorICAgICAgICBhbmltYXRlZE51bWJlciA9IG51bWJlcjsKK30KKworZmxvYXQgU1ZH
QW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoU1ZHU01JTEVsZW1lbnQq
IHNtaWxFbGVtZW50LCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9T
dHJpbmcpCit7CisgICAgQVNTRVJUKHNtaWxFbGVtZW50KTsKKyAgICBBU1NFUlQobV9jb250ZXh0
RWxlbWVudCk7CisgICAgZmxvYXQgZnJvbSA9IDA7CisgICAgZmxvYXQgdG8gPSAwOworICAgIHBh
cnNlTnVtYmVyRnJvbVN0cmluZyhmcm9tU3RyaW5nLCBmcm9tKTsKKyAgICBwYXJzZU51bWJlckZy
b21TdHJpbmcodG9TdHJpbmcsIHRvKTsKKyAgICByZXR1cm4gZmFic2YodG8gLSBmcm9tKTsKK30K
KworfQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19BTklNQVRJT04pCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaAkocmV2aXNpb24gODkxODYp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjEsNiArMjEsNyBAQAogI2RlZmluZSBTVkdBbmltYXRlZE51bWJlcl9oCiAKICNpZiBF
TkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZH
QW5pbWF0ZWRQcm9wZXJ0eU1hY3Jvcy5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RhdGljUHJv
cGVydHlUZWFyT2ZmLmgiCiAKQEAgLTM4LDcgKzM5LDI0IEBAIERFRklORV9BTklNQVRFRF9QUk9Q
RVJUWShPd25lclR5cGUsIERPTUEKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxU
SVBMRV9XUkFQUEVSUyhPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRl
bnRpZmllciwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAogREVGSU5FX0FOSU1BVEVE
X1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlm
aWVyLCBTVkdBbmltYXRlZE51bWJlciwgZmxvYXQsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVy
dHkpCiAKKyNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKK2NsYXNzIFNWR0FuaW1hdGVkTnVtYmVy
QW5pbWF0b3IgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IgeworICAgIAorcHVibGlj
OgorICAgIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IoU1ZHRWxlbWVudCosIGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZE51bWJlckFuaW1hdG9yKCkgeyB9
CisgICAgCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0
RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgY2FsY3Vs
YXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93
blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcs
IGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOworICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9t
QW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3Qg
U3RyaW5nJiBieVN0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFs
dWUoU1ZHU01JTEVsZW1lbnQqLCBmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwg
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkVmFsdWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmcm9tUHJvcGVydHlJbmhlcml0cywgYm9vbCB0
b1Byb3BlcnR5SW5oZXJpdHMpOworICAgIHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2Uo
U1ZHU01JTEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYg
dG9TdHJpbmcpOworfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI2VuZGlmIC8vIEVOQUJM
RShTVkdfQU5JTUFUSU9OKQogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAy
MDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKKyNpbmNsdWRlICJTVkdBbmltYXRlZFR5
cGUuaCIKKworI2luY2x1ZGUgIlNWR0FuZ2xlLmgiCisjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCisj
aW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
U1ZHQW5pbWF0ZWRUeXBlOjpTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIHR5
cGUpCisgICAgOiBtX3R5cGUodHlwZSkKK3sKK30KKworU1ZHQW5pbWF0ZWRUeXBlOjp+U1ZHQW5p
bWF0ZWRUeXBlKCkKK3sKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgQW5pbWF0ZWRB
bmdsZToKKyAgICAgICAgZGVsZXRlIG1fZGF0YS5hbmdsZTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBbmltYXRlZExlbmd0aDoKKyAgICAgICAgZGVsZXRlIG1fZGF0YS5sZW5ndGg7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CisgICAgICAgIGRlbGV0ZSBtX2Rh
dGEubnVtYmVyOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitQYXNzT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVBbmdsZShTVkdBbmdsZSogYW5n
bGUpCit7CisgICAgQVNTRVJUKGFuZ2xlKTsKKyAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBh
bmltYXRlZFR5cGUgPSBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVkQW5nbGUp
KTsKKyAgICBhbmltYXRlZFR5cGUtPm1fZGF0YS5hbmdsZSA9IGFuZ2xlOworICAgIHJldHVybiBh
bmltYXRlZFR5cGUucmVsZWFzZSgpOworfQorCitQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4g
U1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVMZW5ndGgoU1ZHTGVuZ3RoKiBsZW5ndGgpCit7CisgICAg
QVNTRVJUKGxlbmd0aCk7CisgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0ZWRUeXBl
ID0gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkVHlwZShBbmltYXRlZExlbmd0aCkpOworICAgIGFu
aW1hdGVkVHlwZS0+bV9kYXRhLmxlbmd0aCA9IGxlbmd0aDsKKyAgICByZXR1cm4gYW5pbWF0ZWRU
eXBlLnJlbGVhc2UoKTsKK30KKworUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1h
dGVkVHlwZTo6Y3JlYXRlTnVtYmVyKGZsb2F0KiBudW1iZXIpCit7CisgICAgQVNTRVJUKG51bWJl
cik7CisgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0ZWRUeXBlID0gYWRvcHRQdHIo
bmV3IFNWR0FuaW1hdGVkVHlwZShBbmltYXRlZE51bWJlcikpOworICAgIGFuaW1hdGVkVHlwZS0+
bV9kYXRhLm51bWJlciA9IG51bWJlcjsKKyAgICByZXR1cm4gYW5pbWF0ZWRUeXBlLnJlbGVhc2Uo
KTsKK30KKworU1ZHQW5nbGUmIFNWR0FuaW1hdGVkVHlwZTo6YW5nbGUoKQoreworICAgIEFTU0VS
VChtX3R5cGUgPT0gQW5pbWF0ZWRBbmdsZSk7CisgICAgcmV0dXJuICptX2RhdGEuYW5nbGU7Cit9
CisKK1NWR0xlbmd0aCYgU1ZHQW5pbWF0ZWRUeXBlOjpsZW5ndGgoKQoreworICAgIEFTU0VSVCht
X3R5cGUgPT0gQW5pbWF0ZWRMZW5ndGgpOworICAgIHJldHVybiAqbV9kYXRhLmxlbmd0aDsKK30K
KworZmxvYXQmIFNWR0FuaW1hdGVkVHlwZTo6bnVtYmVyKCkKK3sKKyAgICBBU1NFUlQobV90eXBl
ID09IEFuaW1hdGVkTnVtYmVyKTsKKyAgICByZXR1cm4gKm1fZGF0YS5udW1iZXI7Cit9CisKK1N0
cmluZyBTVkdBbmltYXRlZFR5cGU6OnZhbHVlQXNTdHJpbmcoKQoreworICAgIHN3aXRjaCAobV90
eXBlKSB7CisgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgorICAgICAgICBBU1NFUlQobV9kYXRhLmFu
Z2xlKTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YS5hbmdsZS0+dmFsdWVBc1N0cmluZygpOworICAg
IGNhc2UgQW5pbWF0ZWRMZW5ndGg6CisgICAgICAgIEFTU0VSVChtX2RhdGEubGVuZ3RoKTsKKyAg
ICAgICAgcmV0dXJuIG1fZGF0YS5sZW5ndGgtPnZhbHVlQXNTdHJpbmcoKTsKKyAgICBjYXNlIEFu
aW1hdGVkTnVtYmVyOgorICAgICAgICBBU1NFUlQobV9kYXRhLm51bWJlcik7CisgICAgICAgIHJl
dHVybiBTdHJpbmc6Om51bWJlcigqbV9kYXRhLm51bWJlcik7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBT
dHJpbmcoKTsKK30KKworYm9vbCBTVkdBbmltYXRlZFR5cGU6OnNldFZhbHVlQXNTdHJpbmcoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIEFu
aW1hdGVkQW5nbGU6CisgICAgICAgIEFTU0VSVChtX2RhdGEuYW5nbGUpOworICAgICAgICBtX2Rh
dGEuYW5nbGUtPnNldFZhbHVlQXNTdHJpbmcodmFsdWUsIGVjKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBBbmltYXRlZExlbmd0aDoKKyAgICAgICAgQVNTRVJUKG1fZGF0YS5sZW5ndGgpOwor
ICAgICAgICBtX2RhdGEubGVuZ3RoLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlLCBTVkdMZW5ndGg6
Omxlbmd0aE1vZGVGb3JBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSksIGVjKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKKyAgICAgICAgQVNTRVJUKG1f
ZGF0YS5udW1iZXIpOworICAgICAgICBwYXJzZU51bWJlckZyb21TdHJpbmcodmFsdWUsICptX2Rh
dGEubnVtYmVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gIWVjOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoU1ZHX0FOSU1BVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBl
LmgJKHJldmlzaW9uIDg5MTg3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxMDUgKzIxLDMzIEBACiAjZGVmaW5lIFNWR0FuaW1h
dGVkVHlwZV9oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKLSNp
bmNsdWRlICJTVkdBbmdsZS5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKLSNpbmNsdWRlICJT
VkdMZW5ndGguaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTVkdBbmdsZTsKK2Ns
YXNzIFNWR0xlbmd0aDsKKwogY2xhc3MgU1ZHQW5pbWF0ZWRUeXBlIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRl
ZFR5cGU+IGNyZWF0ZShBbmltYXRlZEF0dHJpYnV0ZVR5cGUgdHlwZSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRUeXBlKHR5cGUpKTsKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUFuZ2xlKFNWR0FuZ2xl
KiBhbmdsZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChhbmdsZSk7Ci0gICAgICAgIE93blB0cjxT
VkdBbmltYXRlZFR5cGU+IGFuaW1hdGVkVHlwZSA9IGNyZWF0ZShBbmltYXRlZEFuZ2xlKTsKLSAg
ICAgICAgYW5pbWF0ZWRUeXBlLT5tX2RhdGEuYW5nbGUgPSBhbmdsZTsKLSAgICAgICAgcmV0dXJu
IGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7Ci0gICAgfQotCi0gICAgc3RhdGljIFBhc3NPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVMZW5ndGgoU1ZHTGVuZ3RoKiBsZW5ndGgpCi0gICAgewot
ICAgICAgICBBU1NFUlQobGVuZ3RoKTsKLSAgICAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4g
YW5pbWF0ZWRUeXBlID0gY3JlYXRlKEFuaW1hdGVkTGVuZ3RoKTsKLSAgICAgICAgYW5pbWF0ZWRU
eXBlLT5tX2RhdGEubGVuZ3RoID0gbGVuZ3RoOwotICAgICAgICByZXR1cm4gYW5pbWF0ZWRUeXBl
LnJlbGVhc2UoKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZFR5cGUoKQotICAg
IHsKLSAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAgY2FzZSBBbmltYXRlZEFuZ2xl
OgotICAgICAgICAgICAgZGVsZXRlIG1fZGF0YS5hbmdsZTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgotICAgICAgICAgICAgZGVsZXRlIG1fZGF0YS5s
ZW5ndGg7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICB9CisgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRUeXBlKCk7CisKKyAgICBzdGF0aWMgUGFzc093
blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUFuZ2xlKFNWR0FuZ2xlKik7CisgICAgc3RhdGlj
IFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVMZW5ndGgoU1ZHTGVuZ3RoKik7Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVOdW1iZXIoZmxvYXQq
KTsKICAgICAKICAgICBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQogCi0gICAgU1ZHQW5nbGUmIGFuZ2xlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gQW5pbWF0ZWRBbmdsZSk7Ci0gICAgICAgIHJldHVybiAqbV9kYXRhLmFuZ2xl
OwotICAgIH0KLQotICAgIFNWR0xlbmd0aCYgbGVuZ3RoKCkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gQW5pbWF0ZWRMZW5ndGgpOwotICAgICAgICByZXR1cm4gKm1fZGF0YS5sZW5n
dGg7Ci0gICAgfQotICAgIAotICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkKLSAgICB7Ci0gICAg
ICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKLSAgICAg
ICAgICAgIEFTU0VSVChtX2RhdGEuYW5nbGUpOwotICAgICAgICAgICAgcmV0dXJuIG1fZGF0YS5h
bmdsZS0+dmFsdWVBc1N0cmluZygpOwotICAgICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgotICAg
ICAgICAgICAgQVNTRVJUKG1fZGF0YS5sZW5ndGgpOwotICAgICAgICAgICAgcmV0dXJuIG1fZGF0
YS5sZW5ndGgtPnZhbHVlQXNTdHJpbmcoKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgc2V0VmFsdWVBc1N0cmlu
Zyhjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKLSAg
ICB7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBzd2l0Y2ggKG1fdHlw
ZSkgewotICAgICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6Ci0gICAgICAgICAgICBBU1NFUlQobV9k
YXRhLmFuZ2xlKTsKLSAgICAgICAgICAgIG1fZGF0YS5hbmdsZS0+c2V0VmFsdWVBc1N0cmluZyh2
YWx1ZSwgZWMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQW5pbWF0ZWRMZW5n
dGg6Ci0gICAgICAgICAgICBBU1NFUlQobV9kYXRhLmxlbmd0aCk7Ci0gICAgICAgICAgICBtX2Rh
dGEubGVuZ3RoLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlLCBTVkdMZW5ndGg6Omxlbmd0aE1vZGVG
b3JBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSksIGVjKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gIWVjOwotICAg
IH0KKyAgICBTVkdBbmdsZSYgYW5nbGUoKTsKKyAgICBTVkdMZW5ndGgmIGxlbmd0aCgpOworICAg
IGZsb2F0JiBudW1iZXIoKTsKKworICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCk7CisgICAgYm9v
bCBzZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmKTsK
ICAgICAKIHByaXZhdGU6Ci0gICAgU1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVkQXR0cmlidXRlVHlw
ZSB0eXBlKQotICAgICAgICA6IG1fdHlwZSh0eXBlKQotICAgIHsKLSAgICB9CisgICAgU1ZHQW5p
bWF0ZWRUeXBlKEFuaW1hdGVkQXR0cmlidXRlVHlwZSk7CiAgICAgCiAgICAgQW5pbWF0ZWRBdHRy
aWJ1dGVUeXBlIG1fdHlwZTsKICAgICAKQEAgLTEzMiw2ICs2MCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIC8vIEZJWE1FOiBNb3JlIFNWRyBwcmltaXRpdmUgdHlwZXMgbmVlZCB0byBiZSBhZGRlZCBz
dGVwIGJ5IHN0ZXAuCiAgICAgICAgIFNWR0FuZ2xlKiBhbmdsZTsKICAgICAgICAgU1ZHTGVuZ3Ro
KiBsZW5ndGg7CisgICAgICAgIGZsb2F0KiBudW1iZXI7CiAgICAgfSBtX2RhdGE7CiB9OwogICAg
IApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaAkocmV2aXNpb24g
ODkxODcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZH
X0FOSU1BVElPTikKICNpbmNsdWRlICJTVkdBbmltYXRlZEFuZ2xlLmgiCiAjaW5jbHVkZSAiU1ZH
QW5pbWF0ZWRMZW5ndGguaCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlci5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC0zNiw2ICszNyw4IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yKGNvbnRleHRF
bGVtZW50LCBhdHRyaWJ1dGVOYW1lKSk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6CiAg
ICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3Io
Y29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUpKTsKKyAgICAgICAgY2FzZSBBbmltYXRlZE51
bWJlcjoKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWROdW1iZXJB
bmltYXRvcihjb250ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSkpOwogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3IoY29udGV4dEVsZW1lbnQsIGF0
dHJpYnV0ZU5hbWUpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRp
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRp
ZXMuY3BwCShyZXZpc2lvbiA4OTE4NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJV
dGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsNyArMTUxLDcgQEAgYm9vbCBwYXJz
ZU51bWJlckZyb21TdHJpbmcoY29uc3QgU3RyaW5nJgogewogICAgIGNvbnN0IFVDaGFyKiBwdHIg
PSBzdHJpbmcuY2hhcmFjdGVycygpOwogICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBwdHIgKyBzdHJp
bmcubGVuZ3RoKCk7Ci0gICAgcmV0dXJuIGdlbmVyaWNQYXJzZU51bWJlcihwdHIsIGVuZCwgbnVt
YmVyLCBza2lwKTsKKyAgICByZXR1cm4gZ2VuZXJpY1BhcnNlTnVtYmVyKHB0ciwgZW5kLCBudW1i
ZXIsIHNraXApICYmIHB0ciA9PSBlbmQ7CiB9CiAKIC8vIG9ubHkgdXNlZCB0byBwYXJzZSBsYXJn
ZUFyY0ZsYWcgYW5kIHN3ZWVwRmxhZyB3aGljaCBtdXN0IGJlIGEgIjAiIG9yICIxIgpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gODkyMDYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwzNCBAQAorMjAxMS0wNi0xOCAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNWR0FuaW1hdG9yRmFjdG9yeSBkb2VzIG5vdCBzdXBwb3J0IFNWR051bWJlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI5MzgKKyAgICAgICAgCisg
ICAgICAgIEFkZGVkIG5ldyB0ZXN0cyB0byBjaGVjayBiZWhhdmlvciBvbiBTVkdOdW1iZXIgYW5p
bWF0aW9uLgorCisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL3N2Z251bWJl
ci1hbmltYXRpb24tMS5qczogQWRkZWQuCisgICAgICAgIChzYW1wbGUxKToKKyAgICAgICAgKHNh
bXBsZTIpOgorICAgICAgICAoc2FtcGxlMyk6CisgICAgICAgIChleGVjdXRlVGVzdCk6CisgICAg
ICAgICogc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL3N2Z251bWJlci1hbmltYXRpb24tMi5q
czogQWRkZWQuCisgICAgICAgIChzYW1wbGUxKToKKyAgICAgICAgKHNhbXBsZTIpOgorICAgICAg
ICAoc2FtcGxlMyk6CisgICAgICAgIChleGVjdXRlVGVzdCk6CisgICAgICAgICogc3ZnL2FuaW1h
dGlvbnMvc2NyaXB0LXRlc3RzL3N2Z251bWJlci1hbmltYXRpb24tMy5qczogQWRkZWQuCisgICAg
ICAgIChzYW1wbGUxKToKKyAgICAgICAgKHNhbXBsZTIpOgorICAgICAgICAoc2FtcGxlMyk6Cisg
ICAgICAgIChleGVjdXRlVGVzdCk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVy
LWFuaW1hdGlvbi0xLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2FuaW1hdGlv
bnMvc3ZnbnVtYmVyLWFuaW1hdGlvbi0xLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hbmlt
YXRpb25zL3N2Z251bWJlci1hbmltYXRpb24tMi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy9hbmltYXRpb25zL3N2Z251bWJlci1hbmltYXRpb24tMi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9uLTMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9uLTMu
aHRtbDogQWRkZWQuCisKIDIwMTEtMDYtMTggIEFsaWNlIEJveGhhbGwgIDxhYm94aGFsbEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXphY2guCkluZGV4OiBM
YXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9uLTEtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3N2Z251bWJlci1h
bmltYXRpb24tMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcv
YW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9uLTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE1IEBACitTVkcgMS4xIGR5bmFtaWMgYW5pbWF0aW9uIHRlc3RzCisKK1Rl
c3QgZm9yIFNWR051bWJlciBhbmltYXRpb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnb3BhY2l0eScpLmdl
dEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikgaXMgMAorUEFTUyBjb21w
dXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ29wYWNpdHknKS5nZXRGbG9hdFZhbHVlKENT
U1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDAuNQorUEFTUyBjb21wdXRlZFN0eWxlLmdl
dFByb3BlcnR5Q1NTVmFsdWUoJ29wYWNpdHknKS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZh
bHVlLkNTU19OVU1CRVIpIGlzIDEKK1BBU1MgY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKCdvcGFjaXR5JykuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVS
KSBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVyLWFuaW1hdGlvbi0x
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVy
LWFuaW1hdGlvbi0xLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0
aW9ucy9zdmdudW1iZXItYW5pbWF0aW9uLTEuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9keW5h
bWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1Rlc3RDYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvU1ZHQW5pbWF0aW9uVGVzdENhc2UuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8aDE+U1ZHIDEuMSBkeW5hbWljIGFuaW1hdGlvbiB0ZXN0czwvaDE+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBz
cmM9InNjcmlwdC10ZXN0cy9zdmdudW1iZXItYW5pbWF0aW9uLTEuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVy
LWFuaW1hdGlvbi0yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcv
YW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9uLTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVyLWFuaW1hdGlvbi0yLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorU1ZHIDEuMSBkeW5hbWlj
IGFuaW1hdGlvbiB0ZXN0cworCitUZXN0IGZvciBTVkdOdW1iZXIgYW5pbWF0aW9uIHdpdGggZGlm
ZmVyZW50IGV4cG9uZW50cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
Y29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdvcGFjaXR5JykuZ2V0RmxvYXRWYWx1
ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAwCitQQVNTIGNvbXB1dGVkU3R5bGUu
Z2V0UHJvcGVydHlDU1NWYWx1ZSgnb3BhY2l0eScpLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWUuQ1NTX05VTUJFUikgaXMgMC41CitQQVNTIGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlD
U1NWYWx1ZSgnb3BhY2l0eScpLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05V
TUJFUikgaXMgMQorUEFTUyBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ29wYWNp
dHknKS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDAKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBM
YXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9uLTIuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9u
LTIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3N2Z251
bWJlci1hbmltYXRpb24tMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2R5bmFtaWMtdXBkYXRl
cy9yZXNvdXJjZXMvU1ZHVGVzdENhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9TVkdBbmltYXRpb25UZXN0Q2FzZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxoMT5TVkcgMS4xIGR5bmFtaWMgYW5pbWF0aW9uIHRlc3RzPC9oMT4KKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0
LXRlc3RzL3N2Z251bWJlci1hbmltYXRpb24tMi5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9u
LTMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25z
L3N2Z251bWJlci1hbmltYXRpb24tMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9uLTMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACitTVkcgMS4xIGR5bmFtaWMgYW5pbWF0aW9u
IHRlc3RzCisKK1Rlc3QgZm9yIFNWR051bWJlciBhbmltYXRpb24gd2l0aCBpbnZhbGlkIHVuaXRz
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBjb21wdXRlZFN0eWxlLmdl
dFByb3BlcnR5Q1NTVmFsdWUoJ29wYWNpdHknKS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZh
bHVlLkNTU19OVU1CRVIpIGlzIDAKK1BBU1MgY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKCdvcGFjaXR5JykuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVS
KSBpcyAwCitQQVNTIGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnb3BhY2l0eScp
LmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikgaXMgMAorUEFTUyBj
b21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ29wYWNpdHknKS5nZXRGbG9hdFZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYW5p
bWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9uLTMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9uLTMuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3N2Z251bWJlci1hbmltYXRpb24tMy5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHVGVz
dENhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9TVkdBbmltYXRpb25U
ZXN0Q2FzZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxoMT5TVkcgMS4xIGR5bmFt
aWMgYW5pbWF0aW9uIHRlc3RzPC9oMT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N2Z251bWJlci1h
bmltYXRpb24tMy5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvc3ZnbnVtYmVyLWFuaW1hdGlvbi0xLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9z
dmdudW1iZXItYW5pbWF0aW9uLTEuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcv
YW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvc3ZnbnVtYmVyLWFuaW1hdGlvbi0xLmpzCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDU0IEBACitkZXNjcmlwdGlvbigiVGVzdCBmb3IgU1ZHTnVtYmVyIGFu
aW1hdGlvbi4iKTsKK2NyZWF0ZVNWR1Rlc3RDYXNlKCk7CisKKy8vIFNldHVwIHRlc3QgZG9jdW1l
bnQKK3ZhciByZWN0ID0gY3JlYXRlU1ZHRWxlbWVudCgicmVjdCIpOworcmVjdC5zZXRBdHRyaWJ1
dGUoImlkIiwgInJlY3QiKTsKK3JlY3Quc2V0QXR0cmlidXRlKCJ4IiwgIjAiKTsKK3JlY3Quc2V0
QXR0cmlidXRlKCJ3aWR0aCIsICIxMDAiKTsKK3JlY3Quc2V0QXR0cmlidXRlKCJoZWlnaHQiLCAi
MTAwIik7CityZWN0LnNldEF0dHJpYnV0ZSgiZmlsbCIsICJncmVlbiIpOworcmVjdC5zZXRBdHRy
aWJ1dGUoIm9wYWNpdHkiLCAiMCIpOworcmVjdC5zZXRBdHRyaWJ1dGUoIm9uY2xpY2siLCAiZXhl
Y3V0ZVRlc3QoKSIpOworCit2YXIgYW5pbWF0ZSA9IGNyZWF0ZVNWR0VsZW1lbnQoImFuaW1hdGUi
KTsKK2FuaW1hdGUuc2V0QXR0cmlidXRlKCJpZCIsICJhbmltYXRpb24iKTsKK2FuaW1hdGUuc2V0
QXR0cmlidXRlKCJhdHRyaWJ1dGVOYW1lIiwgIm9wYWNpdHkiKTsKK2FuaW1hdGUuc2V0QXR0cmli
dXRlKCJiZWdpbiIsICJjbGljayIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoImR1ciIsICI0cyIp
OworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoImZyb20iLCAiMCIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1
dGUoInRvIiwgIjEiKTsKK3JlY3QuYXBwZW5kQ2hpbGQoYW5pbWF0ZSk7Cityb290U1ZHRWxlbWVu
dC5hcHBlbmRDaGlsZChyZWN0KTsKKwordmFyIGNvbXB1dGVkU3R5bGUgPSByZWN0Lm93bmVyRG9j
dW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0KTsKKworLy8gU2V0dXAgYW5p
bWF0aW9uIHRlc3QKK2Z1bmN0aW9uIHNhbXBsZTEoKSB7CisgICAgLy8gQ2hlY2sgaW5pdGlhbC9l
bmQgY29uZGl0aW9ucworICAgIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NT
VmFsdWUoJ29wYWNpdHknKS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1C
RVIpIiwgIjAiKTsKK30KKworZnVuY3Rpb24gc2FtcGxlMigpIHsKKyAgICBzaG91bGRCZSgiY29t
cHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdvcGFjaXR5JykuZ2V0RmxvYXRWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSIsICIwLjUiKTsKK30KKworZnVuY3Rpb24gc2Ft
cGxlMygpIHsKKyAgICBzaG91bGRCZUNsb3NlRW5vdWdoKCJjb21wdXRlZFN0eWxlLmdldFByb3Bl
cnR5Q1NTVmFsdWUoJ29wYWNpdHknKS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNT
U19OVU1CRVIpIiwgIjEiLCAwLjAxKTsKK30KKworZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7Cisg
ICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSBbCisgICAgICAgIC8vIFthbmltYXRpb25JZCwgdGlt
ZSwgZWxlbWVudElkLCBzYW1wbGVDYWxsYmFja10KKyAgICAgICAgWyJhbmltYXRpb24iLCAwLCAg
ICAgICJyZWN0Iiwgc2FtcGxlMV0sCisgICAgICAgIFsiYW5pbWF0aW9uIiwgMi4wLCAgICAicmVj
dCIsIHNhbXBsZTJdLAorICAgICAgICBbImFuaW1hdGlvbiIsIDMuOTk5OSwgInJlY3QiLCBzYW1w
bGUzXSwKKyAgICAgICAgWyJhbmltYXRpb24iLCA0LCAgICAgICJyZWN0Iiwgc2FtcGxlMV0KKyAg
ICBdOworCisgICAgcnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZFZhbHVlcyk7Cit9CisKKy8vIEJl
Z2luIHRlc3QgYXN5bmMKK3dpbmRvdy5zZXRUaW1lb3V0KCJ0cmlnZ2VyVXBkYXRlKDUwLCAzMCki
LCAwKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMv
c3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL3N2Z251bWJlci1hbmltYXRpb24tMi5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvc3ZnbnVt
YmVyLWFuaW1hdGlvbi0yLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1h
dGlvbnMvc2NyaXB0LXRlc3RzL3N2Z251bWJlci1hbmltYXRpb24tMi5qcwkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1NCBAQAorZGVzY3JpcHRpb24oIlRlc3QgZm9yIFNWR051bWJlciBhbmltYXRp
b24gd2l0aCBkaWZmZXJlbnQgZXhwb25lbnRzLiIpOworY3JlYXRlU1ZHVGVzdENhc2UoKTsKKwor
Ly8gU2V0dXAgdGVzdCBkb2N1bWVudAordmFyIHJlY3QgPSBjcmVhdGVTVkdFbGVtZW50KCJyZWN0
Iik7CityZWN0LnNldEF0dHJpYnV0ZSgiaWQiLCAicmVjdCIpOworcmVjdC5zZXRBdHRyaWJ1dGUo
IngiLCAiMCIpOworcmVjdC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgIjEwMCIpOworcmVjdC5zZXRB
dHRyaWJ1dGUoImhlaWdodCIsICIxMDAiKTsKK3JlY3Quc2V0QXR0cmlidXRlKCJmaWxsIiwgImdy
ZWVuIik7CityZWN0LnNldEF0dHJpYnV0ZSgib3BhY2l0eSIsICIwIik7CityZWN0LnNldEF0dHJp
YnV0ZSgib25jbGljayIsICJleGVjdXRlVGVzdCgpIik7CisKK3ZhciBhbmltYXRlID0gY3JlYXRl
U1ZHRWxlbWVudCgiYW5pbWF0ZSIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoImlkIiwgImFuaW1h
dGlvbiIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoImF0dHJpYnV0ZU5hbWUiLCAib3BhY2l0eSIp
OworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoImJlZ2luIiwgImNsaWNrIik7CithbmltYXRlLnNldEF0
dHJpYnV0ZSgiZHVyIiwgIjRzIik7CithbmltYXRlLnNldEF0dHJpYnV0ZSgiZnJvbSIsICIwZTEw
Iik7CithbmltYXRlLnNldEF0dHJpYnV0ZSgidG8iLCAiLjFlMSIpOworcmVjdC5hcHBlbmRDaGls
ZChhbmltYXRlKTsKK3Jvb3RTVkdFbGVtZW50LmFwcGVuZENoaWxkKHJlY3QpOworCit2YXIgY29t
cHV0ZWRTdHlsZSA9IHJlY3Qub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0
eWxlKHJlY3QpOworCisvLyBTZXR1cCBhbmltYXRpb24gdGVzdAorZnVuY3Rpb24gc2FtcGxlMSgp
IHsKKyAgICAvLyBDaGVjayBpbml0aWFsL2VuZCBjb25kaXRpb25zCisgICAgc2hvdWxkQmUoImNv
bXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnb3BhY2l0eScpLmdldEZsb2F0VmFsdWUo
Q1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikiLCAiMCIpOworfQorCitmdW5jdGlvbiBzYW1w
bGUyKCkgeworICAgIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUo
J29wYWNpdHknKS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIiwg
IjAuNSIpOworfQorCitmdW5jdGlvbiBzYW1wbGUzKCkgeworICAgIHNob3VsZEJlQ2xvc2VFbm91
Z2goImNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnb3BhY2l0eScpLmdldEZsb2F0
VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikiLCAiMSIsIDAuMDEpOworfQorCitm
dW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKKyAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IFsKKyAg
ICAgICAgLy8gW2FuaW1hdGlvbklkLCB0aW1lLCBlbGVtZW50SWQsIHNhbXBsZUNhbGxiYWNrXQor
ICAgICAgICBbImFuaW1hdGlvbiIsIDAsICAgICAgInJlY3QiLCBzYW1wbGUxXSwKKyAgICAgICAg
WyJhbmltYXRpb24iLCAyLjAsICAgICJyZWN0Iiwgc2FtcGxlMl0sCisgICAgICAgIFsiYW5pbWF0
aW9uIiwgMy45OTk5LCAicmVjdCIsIHNhbXBsZTNdLAorICAgICAgICBbImFuaW1hdGlvbiIsIDQs
ICAgICAgInJlY3QiLCBzYW1wbGUxXQorICAgIF07CisKKyAgICBydW5BbmltYXRpb25UZXN0KGV4
cGVjdGVkVmFsdWVzKTsKK30KKworLy8gQmVnaW4gdGVzdCBhc3luYword2luZG93LnNldFRpbWVv
dXQoInRyaWdnZXJVcGRhdGUoNTAsIDMwKSIsIDApOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvc3Zn
bnVtYmVyLWFuaW1hdGlvbi0zLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmlt
YXRpb25zL3NjcmlwdC10ZXN0cy9zdmdudW1iZXItYW5pbWF0aW9uLTMuanMJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvc3ZnbnVtYmVyLWFu
aW1hdGlvbi0zLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACitkZXNjcmlwdGlvbigi
VGVzdCBmb3IgU1ZHTnVtYmVyIGFuaW1hdGlvbiB3aXRoIGludmFsaWQgdW5pdHMuIik7CitjcmVh
dGVTVkdUZXN0Q2FzZSgpOworCisvLyBTZXR1cCB0ZXN0IGRvY3VtZW50Cit2YXIgcmVjdCA9IGNy
ZWF0ZVNWR0VsZW1lbnQoInJlY3QiKTsKK3JlY3Quc2V0QXR0cmlidXRlKCJpZCIsICJyZWN0Iik7
CityZWN0LnNldEF0dHJpYnV0ZSgieCIsICIwIik7CityZWN0LnNldEF0dHJpYnV0ZSgid2lkdGgi
LCAiMTAwIik7CityZWN0LnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwgIjEwMCIpOworcmVjdC5zZXRB
dHRyaWJ1dGUoImZpbGwiLCAiZ3JlZW4iKTsKK3JlY3Quc2V0QXR0cmlidXRlKCJvcGFjaXR5Iiwg
IjAiKTsKK3JlY3Quc2V0QXR0cmlidXRlKCJvbmNsaWNrIiwgImV4ZWN1dGVUZXN0KCkiKTsKKwor
dmFyIGFuaW1hdGUgPSBjcmVhdGVTVkdFbGVtZW50KCJhbmltYXRlIik7CithbmltYXRlLnNldEF0
dHJpYnV0ZSgiaWQiLCAiYW5pbWF0aW9uIik7CithbmltYXRlLnNldEF0dHJpYnV0ZSgiYXR0cmli
dXRlTmFtZSIsICJvcGFjaXR5Iik7CithbmltYXRlLnNldEF0dHJpYnV0ZSgiYmVnaW4iLCAiY2xp
Y2siKTsKK2FuaW1hdGUuc2V0QXR0cmlidXRlKCJkdXIiLCAiNHMiKTsKK2FuaW1hdGUuc2V0QXR0
cmlidXRlKCJmcm9tIiwgIjBweCIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoInRvIiwgIjFweCIp
OworcmVjdC5hcHBlbmRDaGlsZChhbmltYXRlKTsKK3Jvb3RTVkdFbGVtZW50LmFwcGVuZENoaWxk
KHJlY3QpOworCit2YXIgY29tcHV0ZWRTdHlsZSA9IHJlY3Qub3duZXJEb2N1bWVudC5kZWZhdWx0
Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3QpOworCisvLyBTZXR1cCBhbmltYXRpb24gdGVzdAor
ZnVuY3Rpb24gc2FtcGxlMSgpIHsKKyAgICAvLyBDaGVjayBpbml0aWFsL2VuZCBjb25kaXRpb25z
CisgICAgc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnb3BhY2l0
eScpLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikiLCAiMCIpOwor
fQorCitmdW5jdGlvbiBzYW1wbGUyKCkgeworICAgIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLmdl
dFByb3BlcnR5Q1NTVmFsdWUoJ29wYWNpdHknKS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZh
bHVlLkNTU19OVU1CRVIpIiwgIjAiKTsKK30KKworZnVuY3Rpb24gc2FtcGxlMygpIHsKKyAgICBz
aG91bGRCZSgiY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdvcGFjaXR5JykuZ2V0
RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSIsICIwIik7Cit9CisKK2Z1
bmN0aW9uIGV4ZWN1dGVUZXN0KCkgeworICAgIGNvbnN0IGV4cGVjdGVkVmFsdWVzID0gWworICAg
ICAgICAvLyBbYW5pbWF0aW9uSWQsIHRpbWUsIGVsZW1lbnRJZCwgc2FtcGxlQ2FsbGJhY2tdCisg
ICAgICAgIFsiYW5pbWF0aW9uIiwgMCwgICAgICAicmVjdCIsIHNhbXBsZTFdLAorICAgICAgICBb
ImFuaW1hdGlvbiIsIDIuMCwgICAgInJlY3QiLCBzYW1wbGUyXSwKKyAgICAgICAgWyJhbmltYXRp
b24iLCAzLjk5OTksICJyZWN0Iiwgc2FtcGxlM10sCisgICAgICAgIFsiYW5pbWF0aW9uIiwgNCwg
ICAgICAicmVjdCIsIHNhbXBsZTFdCisgICAgXTsKKworICAgIHJ1bkFuaW1hdGlvblRlc3QoZXhw
ZWN0ZWRWYWx1ZXMpOworfQorCisvLyBCZWdpbiB0ZXN0IGFzeW5jCit3aW5kb3cuc2V0VGltZW91
dCgidHJpZ2dlclVwZGF0ZSg1MCwgMzApIiwgMCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97718</attachid>
            <date>2011-06-19 00:45:22 -0700</date>
            <delta_ts>2011-06-19 06:41:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62938-20110619094518.patch</filename>
            <type>text/plain</type>
            <size>48247</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5MjA2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjAgQEAKKzIwMTEtMDYtMTggIERpcmsgU2No
dWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTVkdBbmltYXRvckZhY3RvcnkgZG9lcyBub3Qgc3VwcG9ydCBTVkdO
dW1iZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYy
OTM4CisKKyAgICAgICAgRm9sbG93IHVwIG9mICJTVkdBbmltYXRpb24gc2hvdWxkIHVzZSBkaXJl
Y3QgdW5pdCBhbmltYXRpb24gZm9yIFNWR0xlbmd0aCI6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MTM2OAorICAgICAgICBUaGlzIHBhdGNoIGNvbnRpbnVlcyB0aGUg
Y29udmVyc2lvbiB0byB0aGUgbmV3IGNvbmNlcHQgb2YgU1ZHQW5pbWF0b3JGYWN0b3J5IHdpdGgg
U1ZHTnVtYmVyLiBXaXRoIHRoZSBuZXcgYW5pbWF0b3IgZm9yIHRoZQorICAgICAgICBTVkcgcHJp
bWl0aXZlIGRhdGF0eXBlIFNWR051bWJlciB3ZSBkbyBub3QgYW5pbWF0ZSB2YWx1ZXMgd2l0aCB1
bml0cyBidXQgc3VwcG9ydCBleHBvbmVudHMuCisgICAgICAgIE1vdmluZyB0aGUgY29udGVudCBv
ZiBTVkdBbmltYXRlZFR5cGUgaGVhZGVyIHRvIGl0cyBvd24gY3BwLgorCisgICAgICAgIFRlc3Rz
OiBzdmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9uLTEuaHRtbAorICAgICAgICAgICAg
ICAgc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVyLWFuaW1hdGlvbi0yLmh0bWwKKyAgICAgICAgICAg
ICAgIHN2Zy9hbmltYXRpb25zL3N2Z251bWJlci1hbmltYXRpb24tMy5odG1sCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDogQWRkZWQgbmV3IGZpbGVzIHRvIGJ1aWxkIHN5c3RlbS4KKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUucHJvOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdBbGxJ
bk9uZS5jcHA6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHA6IFVz
ZSBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yIGZvciBhbmltYXRpb25zIG9mIFNWR051bWJlcnMu
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6U1ZHQW5pbWF0ZUVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZy
b21BbmRUb1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2Fs
Y3VsYXRlRnJvbUFuZEJ5VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVt
ZW50OjpyZXNldFRvQmFzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVt
ZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
RWxlbWVudDo6Y2FsY3VsYXRlRGlzdGFuY2UpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlRWxl
bWVudC5oOiBSZW1vdmUgZmxvYXRzIGZvciB2YWx1ZSBzdG9yYWdlLiBUaGlzIGlzIGRvbmUgYnkg
U1ZHQW5pbWF0ZWRUeXBlcyBub3cuCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNw
cDogQWRkZWQuIEFuaW1hdG9yIGZvciBTVkdOdW1iZXJzLgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3Ry
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OmNhbGN1
bGF0ZUZyb21BbmRUb1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJl
ckFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5j
ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjp+U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcik6
CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHA6IEFkZGVkLiBNb3ZlZCBjb250ZW50
IGZyb20gaGVhZGVyIHRvIGNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6
U1ZHQW5pbWF0ZWRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6flNW
R0FuaW1hdGVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OmNyZWF0
ZUFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTGVuZ3Ro
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTnVtYmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6YW5nbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZWRUeXBlOjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZWRUeXBlOjpudW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjp2YWx1
ZUFzU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6c2V0VmFsdWVB
c1N0cmluZyk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5oOiBSZW1vdmVkIG1ldGhv
ZCBjcmVhdGUoKS4gQWxsd2F5cyBjYWxsIHR5cGUgc3BlY2lmaWMgY3JlYXRlIGZ1bnRjaW9ucy4K
KyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0b3JGYWN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZSk6CisgICAgICAgICogc3ZnL1NWR1BhcnNlclV0aWxp
dGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZU51bWJlckZyb21TdHJpbmcpOiBDaGVj
ayBpZiBTdHJpbmcgc2ltcGx5IGNvbnNpdHMgb2YgYSBudW1iZXIuIFJldHVybiBmYWxzZSBvdGhl
cndpc2UuCisKIDIwMTEtMDYtMTggIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAkocmV2aXNpb24gODkxODcpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMTY1NCw2ICsxNjU0LDggQEAgSUYgKEVOQUJMRV9TVkcpCiAgICAgICAg
IHN2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcAogICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRB
bmdsZS5jcHAKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcAorICAgICAgICBzdmcv
U1ZHQW5pbWF0ZWROdW1iZXIuY3BwCisgICAgICAgIHN2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCiAg
ICAgICAgIHN2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcAogICAgICAgICBzdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQu
Y3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDg5MTg3KQor
KysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAt
MzM0MywxMiArMzM0MywxNCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZExlbmd0aC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0
LmggXAorCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZFByZXNlcnZlQXNwZWN0UmF0aW8uaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
UmVjdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaCBcCiAJU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkVHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0
b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcCBcCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA4OTE4NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNTcwNiw2ICs1NzA2LDggQEAKICAgICAgICAgICAg
ICdzdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5p
bWF0ZWRBbmdsZS5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAn
LAorICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAnLAorICAgICAgICAgICAg
J3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZUVs
ZW1lbnQuY3BwJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaCcsCiAgICAg
ICAgICAgICAnc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCcsCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybwkocmV2aXNpb24gODkxODcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkod29y
a2luZyBjb3B5KQpAQCAtMzI5NCw2ICszMjk0LDggQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxF
X1NWRz0xKSB7CiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcCBc
CiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcCBcCiAgICAgICAgICAgICAg
IHN2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAgXAorICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0
ZWROdW1iZXIuY3BwIFwKKyAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAgXAog
ICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwIFwKICAgICAgICAgICAgICAg
c3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCBcCiAgICAgICAgICAgICAgIHN2Zy9TVkdB
bmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gODkxODcpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTk5Miw2ICs5OTIsOCBAQAogCQk0MzlEMzM0MzEzQTY5MTFDMDBDMjBGNEYgLyog
U1ZHQW5pbWF0ZWRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MzlEMzM0MDEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlLmggKi87
IH07CiAJCTQzOUQzMzQ0MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGVBbmltYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5RDMz
NDExM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmggKi87IH07CiAJ
CTQzOUQzMzQ1MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRvckZhY3RvcnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOUQzMzQyMTNBNjkxMUMw
MEMyMEY0RiAvKiBTVkdBbmltYXRvckZhY3RvcnkuaCAqLzsgfTsKKwkJNDNBMEYwQjExM0FDN0Q2
RDAwQTVGMEE3IC8qIFNWR0FuaW1hdGVkTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzQTBGMEIwMTNBQzdENkQwMEE1RjBBNyAvKiBTVkdB
bmltYXRlZE51bWJlci5jcHAgKi87IH07CisJCTQzQTBGMEI2MTNBQ0NDRkYwMEE1RjBBNyAvKiBT
VkdBbmltYXRlZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDNBMEYwQjUxM0FDQ0NGRjAwQTVGMEE3IC8qIFNWR0FuaW1hdGVkVHlwZS5jcHAg
Ki87IH07CiAJCTQzQzA5MkJDMTJEOUU0RUUwMEE5ODlDMyAvKiBSZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0Mw
OTJCQTEyRDlFNEVFMDBBOTg5QzMgLyogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oICovOyB9Owog
CQk0NDE1MjkyRTBFMUFFOEEwMDBDNEEyRDAgLyogSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQxNTI5MkMwRTFB
RThBMDAwQzRBMkQwIC8qIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NDE1MjkyRjBFMUFFOEEwMDBDNEEy
RDAgLyogSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDE1MjkyRDBFMUFFOEEwMDBDNEEyRDAgLyogSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5jcHAgKi87IH07CkBAIC03NDU1LDYgKzc0NTcsOCBAQAogCQk0MzlE
MzM0MDEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MzlEMzM0MTEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlQW5p
bWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRUeXBl
QW5pbWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM5RDMzNDIxM0E2OTEx
QzAwQzIwRjRGIC8qIFNWR0FuaW1hdG9yRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTVkdBbmltYXRvckZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDNBMEYwQjAxM0FDN0Q2RDAwQTVGMEE3IC8qIFNWR0FuaW1hdGVkTnVtYmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0FuaW1hdGVkTnVtYmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDNBMEYwQjUxM0FDQ0NGRjAwQTVGMEE3
IC8qIFNWR0FuaW1hdGVkVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTVkdBbmltYXRlZFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
M0MwOTJCOTEyRDlFNEVFMDBBOTg5QzMgLyogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTVkdGb3JlaWduT2JqZWN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDNDMDkyQkExMkQ5RTRFRTAwQTk4
OUMzIC8qIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NDE1MjkyQzBFMUFFOEEwMDBDNEEyRDAgLyogSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzM1Miw2ICsxNzM1Niw3IEBA
CiAJCQkJQjIyMjc3RUEwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkTGVuZ3RoLmlkbCAq
LywKIAkJCQkwODkwMjFBQzEyNkVGNUU5MDA5MkQ1RUEgLyogU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0
LmggKi8sCiAJCQkJQjIyMjc3RUIwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkTGVuZ3Ro
TGlzdC5pZGwgKi8sCisJCQkJNDNBMEYwQjAxM0FDN0Q2RDAwQTVGMEE3IC8qIFNWR0FuaW1hdGVk
TnVtYmVyLmNwcCAqLywKIAkJCQkwOEIzNUIxMjEyN0I2QTdDMDA1MzE0REQgLyogU1ZHQW5pbWF0
ZWROdW1iZXIuaCAqLywKIAkJCQlCMjIyNzdFQzBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0
ZWROdW1iZXIuaWRsICovLAogCQkJCTA4QjM1QjE2MTI3QjZBODgwMDUzMTRERCAvKiBTVkdBbmlt
YXRlZE51bWJlckxpc3QuaCAqLywKQEAgLTE3MzY0LDYgKzE3MzY5LDcgQEAKIAkJCQlCMjIyNzdG
NjBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRTdHJpbmcuaWRsICovLAogCQkJCTA4MjUw
OTM4MTI4QkQ0RDgwMEUyRUQ4RSAvKiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCAqLywKIAkJ
CQlCMjIyNzdGODBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0Lmlk
bCAqLywKKwkJCQk0M0EwRjBCNTEzQUNDQ0ZGMDBBNUYwQTcgLyogU1ZHQW5pbWF0ZWRUeXBlLmNw
cCAqLywKIAkJCQk0MzlEMzM0MDEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlLmgg
Ki8sCiAJCQkJNDM5RDMzNDExM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZUFuaW1h
dG9yLmggKi8sCiAJCQkJQjIyMjc3RjkwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVFbGVt
ZW50LmNwcCAqLywKQEAgLTI1NzMzLDYgKzI1NzM5LDggQEAKIAkJCQlCMUFENEU3MzEzQTEyQTQ2
MDA4NDZCMjcgLyogQ3VlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIxQUQ0RTdCMTNB
MTJBNzIwMDg0NkIyNyAvKiBDdWVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM2MkM3
QjkxM0FDNkYxQTAwMzQ0QkVCIC8qIFNWR0FuaW1hdGVkQW5nbGUuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNDNBMEYwQjExM0FDN0Q2RDAwQTVGMEE3IC8qIFNWR0FuaW1hdGVkTnVtYmVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTQzQTBGMEI2MTNBQ0NDRkYwMEE1RjBBNyAvKiBTVkdBbmltYXRl
ZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWxs
SW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5j
cHAJKHJldmlzaW9uIDg5MTg3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsbEluT25lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIlNWR0FuaW1hdGVD
b2xvckVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkQW5nbGUuY3BwIgogI2luY2x1
ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmNwcCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlci5j
cHAiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUeXBlLmNwcCIKICNpbmNsdWRlICJTVkdBbmltYXRl
RWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwIgogI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAkocmV2aXNpb24gODkxODcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3
ICsyOSw2IEBACiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlO
YW1lcy5oIgogI2luY2x1ZGUgIkNvbG9yRGlzdGFuY2UuaCIKLSNpbmNsdWRlICJGbG9hdENvbnZl
cnNpb24uaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0b3JGYWN0b3J5LmgiCkBAIC00OCw5ICs0Nyw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNWR0FuaW1hdGVFbGVtZW50OjpTVkdBbmltYXRlRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAg
OiBTVkdBbmltYXRpb25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9hbmltYXRl
ZEF0dHJpYnV0ZVR5cGUoQW5pbWF0ZWRTdHJpbmcpCi0gICAgLCBtX2Zyb21OdW1iZXIoMCkKLSAg
ICAsIG1fdG9OdW1iZXIoMCkKLSAgICAsIG1fYW5pbWF0ZWROdW1iZXIobnVtZXJpY19saW1pdHM8
ZmxvYXQ+OjppbmZpbml0eSgpKQogICAgICwgbV9hbmltYXRlZFBhdGhQb2ludGVyKDApCiB7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVUYWcpIHx8IGhhc1RhZ05hbWUo
U1ZHTmFtZXM6OnNldFRhZykgfHwgaGFzVGFnTmFtZShTVkdOYW1lczo6YW5pbWF0ZUNvbG9yVGFn
KSk7CkBAIC0xNjksNDAgKzE2NSw2IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0
ZUFuaW1hdGUKICAgICBpZiAocmVzdWx0cy0+bV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgPT0gQW5p
bWF0ZWRTdHJpbmcgJiYgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgIT0gQW5pbWF0ZWRTdHJpbmcp
CiAgICAgICAgIHJldHVybjsKICAgICBzd2l0Y2ggKG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKSB7
Ci0gICAgY2FzZSBBbmltYXRlZE51bWJlcjogewotICAgICAgICAvLyBUbyBhbmltYXRpb24gdXNl
cyBjb250cmlidXRpb25zIGZyb20gdGhlIGxvd2VyIHByaW9yaXR5IGFuaW1hdGlvbnMgYXMgdGhl
IGJhc2UgdmFsdWUuCi0gICAgICAgIGlmIChhbmltYXRpb25Nb2RlID09IFRvQW5pbWF0aW9uKQot
ICAgICAgICAgICAgbV9mcm9tTnVtYmVyID0gcmVzdWx0cy0+bV9hbmltYXRlZE51bWJlcjsKLSAg
ICAgICAgCi0gICAgICAgIC8vIFJlcGxhY2UgJ2N1cnJlbnRDb2xvcicgLyAnaW5oZXJpdCcgYnkg
dGhlaXIgY29tcHV0ZWQgcHJvcGVydHkgdmFsdWVzLgotICAgICAgICBpZiAobV9mcm9tUHJvcGVy
dHlWYWx1ZVR5cGUgPT0gSW5oZXJpdFZhbHVlKSB7Ci0gICAgICAgICAgICBTdHJpbmcgZnJvbU51
bWJlclN0cmluZzsKLSAgICAgICAgICAgIGFkanVzdEZvckluaGVyaXRhbmNlKHRhcmdldEVsZW1l
bnQsIGF0dHJpYnV0ZU5hbWUoKSwgZnJvbU51bWJlclN0cmluZyk7Ci0gICAgICAgICAgICBpZiAo
IXBhcnNlTnVtYmVyRnJvbVN0cmluZyhmcm9tTnVtYmVyU3RyaW5nLCBtX2Zyb21OdW1iZXIsIGZh
bHNlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1f
dG9Qcm9wZXJ0eVZhbHVlVHlwZSA9PSBJbmhlcml0VmFsdWUpIHsKLSAgICAgICAgICAgIFN0cmlu
ZyB0b051bWJlclN0cmluZzsKLSAgICAgICAgICAgIGFkanVzdEZvckluaGVyaXRhbmNlKHRhcmdl
dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUoKSwgdG9OdW1iZXJTdHJpbmcpOwotICAgICAgICAgICAg
aWYgKCFwYXJzZU51bWJlckZyb21TdHJpbmcodG9OdW1iZXJTdHJpbmcsIG1fdG9OdW1iZXIsIGZh
bHNlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBmbG9h
dCBudW1iZXI7Ci0gICAgICAgIGlmIChjYWxjTW9kZSgpID09IENhbGNNb2RlRGlzY3JldGUpCi0g
ICAgICAgICAgICBudW1iZXIgPSBpc0luRmlyc3RIYWxmT2ZBbmltYXRpb24gPyBtX2Zyb21OdW1i
ZXIgOiBtX3RvTnVtYmVyOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBudW1iZXIgPSAobV90
b051bWJlciAtIG1fZnJvbU51bWJlcikgKiBwZXJjZW50YWdlICsgbV9mcm9tTnVtYmVyOwotCi0g
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBjb3JyZWN0IGZvciB2YWx1ZXMgYW5pbWF0aW9u
LgotICAgICAgICBpZiAoaXNBY2N1bXVsYXRlZCgpICYmIHJlcGVhdCkKLSAgICAgICAgICAgIG51
bWJlciArPSBtX3RvTnVtYmVyICogcmVwZWF0OwotICAgICAgICBpZiAoaXNBZGRpdGl2ZSgpICYm
IGFuaW1hdGlvbk1vZGUgIT0gVG9BbmltYXRpb24pCi0gICAgICAgICAgICByZXN1bHRzLT5tX2Fu
aW1hdGVkTnVtYmVyICs9IG51bWJlcjsKLSAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHJlc3Vs
dHMtPm1fYW5pbWF0ZWROdW1iZXIgPSBudW1iZXI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9IAog
ICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjogewogICAgICAgICBpZiAoYW5pbWF0aW9uTW9kZSA9PSBU
b0FuaW1hdGlvbikKICAgICAgICAgICAgIG1fZnJvbUNvbG9yID0gcmVzdWx0cy0+bV9hbmltYXRl
ZENvbG9yOwpAQCAtMjg3LDcgKzI0OSw4IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1
bGF0ZUFuaW1hdGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEFuaW1hdGVkQW5n
bGU6Ci0gICAgY2FzZSBBbmltYXRlZExlbmd0aDogeworICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6
CisgICAgY2FzZSBBbmltYXRlZE51bWJlcjogewogICAgICAgICBBU1NFUlQobV9hbmltYXRvcik7
CiAgICAgICAgIEFTU0VSVChyZXN1bHRzLT5tX2FuaW1hdGVkVHlwZSk7CiAgICAgICAgIC8vIFRh
cmdldCBlbGVtZW50IG1pZ2h0IGhhdmUgY2hhbmdlZC4KQEAgLTM1NywxNCArMzIwLDYgQEAgYm9v
bCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZAogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOiB7
Ci0gICAgICAgIGlmIChwYXJzZU51bWJlckZyb21TdHJpbmcodG9TdHJpbmcsIG1fdG9OdW1iZXIs
IGZhbHNlKSkgewotICAgICAgICAgICAgLy8gRm9yIHRvLWFuaW1hdGlvbnMgdGhlIGZyb20gbnVt
YmVyIGlzIGNhbGN1bGF0ZWQgbGF0ZXIKLSAgICAgICAgICAgIGlmIChhbmltYXRpb25Nb2RlKCkg
PT0gVG9BbmltYXRpb24gfHwgcGFyc2VOdW1iZXJGcm9tU3RyaW5nKGZyb21TdHJpbmcsIG1fZnJv
bU51bWJlciwgZmFsc2UpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KICAgICBjYXNlIEFuaW1hdGVkUGF0aDogewogICAgICAg
ICBTVkdQYXRoUGFyc2VyRmFjdG9yeSogZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5Ojpz
ZWxmKCk7CiAgICAgICAgIGlmIChmYWN0b3J5LT5idWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVN0
cmluZyh0b1N0cmluZywgbV90b1BhdGgsIFVuYWx0ZXJlZFBhcnNpbmcpKSB7CkBAIC0zODcsNiAr
MzQyLDcgQEAgYm9vbCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZAogICAgIH0K
ICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKKyAgICBj
YXNlIEFuaW1hdGVkTnVtYmVyOgogICAgICAgICBlbnN1cmVBbmltYXRvcigpLT5jYWxjdWxhdGVG
cm9tQW5kVG9WYWx1ZXMobV9mcm9tVHlwZSwgbV90b1R5cGUsIGZyb21TdHJpbmcsIHRvU3RyaW5n
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKQEAgLTQyOCwxNSArMzg0LDEx
IEBAIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmQKICAgICB9CiAgICAg
Y2FzZSBBbmltYXRlZEFuZ2xlOgogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6CisgICAgY2FzZSBB
bmltYXRlZE51bWJlcjoKICAgICAgICAgZW5zdXJlQW5pbWF0b3IoKS0+Y2FsY3VsYXRlRnJvbUFu
ZEJ5VmFsdWVzKG1fZnJvbVR5cGUsIG1fdG9UeXBlLCBmcm9tU3RyaW5nLCBieVN0cmluZyk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIG1fZnJvbU51bWJlciA9
IDA7Ci0gICAgICAgIGlmICghZnJvbVN0cmluZy5pc0VtcHR5KCkgJiYgIXBhcnNlTnVtYmVyRnJv
bVN0cmluZyhmcm9tU3RyaW5nLCBtX2Zyb21OdW1iZXIsIGZhbHNlKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFwYXJzZU51bWJlckZyb21TdHJpbmcoYnlTdHJpbmcs
IG1fdG9OdW1iZXIsIGZhbHNlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
bV90b051bWJlciArPSBtX2Zyb21OdW1iZXI7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTQ1NiwxNCArNDA4LDYgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVu
dDo6cmVzZXRUb0Jhc2VWYWx1ZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6Ci0gICAgICAgIGlmIChiYXNlU3Ry
aW5nLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgbV9hbmltYXRlZE51bWJlciA9IDA7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHBhcnNlTnVtYmVyRnJvbVN0
cmluZyhiYXNlU3RyaW5nLCBtX2FuaW1hdGVkTnVtYmVyLCBmYWxzZSkpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQW5pbWF0ZWRQYXRoOiB7CiAgICAgICAg
IG1fYW5pbWF0ZWRQYXRoLmNsZWFyKCk7CiAgICAgICAgIFNWR1BhdGhQYXJzZXJGYWN0b3J5KiBm
YWN0b3J5ID0gU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsKQEAgLTQ3NSw3ICs0MTksOCBA
QCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlCiAgICAgICAgIG1fYW5p
bWF0ZWRQb2ludHMuY2xlYXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQW5pbWF0ZWRB
bmdsZToKLSAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOiB7CisgICAgY2FzZSBBbmltYXRlZExlbmd0
aDoKKyAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOiB7CiAgICAgICAgIGlmICghbV9hbmltYXRlZFR5
cGUpCiAgICAgICAgICAgICBtX2FuaW1hdGVkVHlwZSA9IGVuc3VyZUFuaW1hdG9yKCktPmNvbnN0
cnVjdEZyb21TdHJpbmcoYmFzZVN0cmluZyk7CiAgICAgICAgIGVsc2UKQEAgLTQ5NSw5ICs0NDAs
NiBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjphcHBseVJlc3VsdHNUb1RhCiAgICAgY2FzZSBB
bmltYXRlZENvbG9yOgogICAgICAgICB2YWx1ZVRvQXBwbHkgPSBtX2FuaW1hdGVkQ29sb3Iuc2Vy
aWFsaXplZCgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgotICAg
ICAgICB2YWx1ZVRvQXBwbHkgPSBTdHJpbmc6Om51bWJlcihtX2FuaW1hdGVkTnVtYmVyKTsKLSAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBBbmltYXRlZFBhdGg6IHsKICAgICAgICAgaWYgKCFtX2Fu
aW1hdGVkUGF0aFBvaW50ZXIgfHwgbV9hbmltYXRlZFBhdGhQb2ludGVyLT5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICB2YWx1ZVRvQXBwbHkgPSBtX2FuaW1hdGVkU3RyaW5nOwpAQCAtNTE2LDYgKzQ1
OCw3IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGEKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6
CisgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKICAgICAgICAgdmFsdWVUb0FwcGx5ID0gbV9hbmlt
YXRlZFR5cGUtPnZhbHVlQXNTdHJpbmcoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
QEAgLTUyNiwyMCArNDY5LDEzIEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmFwcGx5UmVzdWx0
c1RvVGEKICAgICAKIGZsb2F0IFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVEaXN0YW5jZShj
b25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCiB7CisgICAg
Ly8gRklYTUU6IEEgcmV0dXJuIHZhbHVlIG9mIGZsb2F0IGlzIG5vdCBlbm91Z2ggdG8gc3VwcG9y
dCBwYWNlZCBhbmltYXRpb25zIG9uIGxpc3RzLgogICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1l
bnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KQogICAg
ICAgICByZXR1cm4gLTE7CiAgICAgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgPSBkZXRlcm1pbmVB
bmltYXRlZEF0dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVudCk7Ci0gICAgaWYgKG1fYW5pbWF0ZWRB
dHRyaWJ1dGVUeXBlID09IEFuaW1hdGVkTnVtYmVyKSB7Ci0gICAgICAgIGZsb2F0IGZyb207Ci0g
ICAgICAgIGZsb2F0IHRvOwotICAgICAgICBpZiAoIXBhcnNlTnVtYmVyRnJvbVN0cmluZyhmcm9t
U3RyaW5nLCBmcm9tLCBmYWxzZSkpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGlm
ICghcGFyc2VOdW1iZXJGcm9tU3RyaW5nKHRvU3RyaW5nLCB0bywgZmFsc2UpKQotICAgICAgICAg
ICAgcmV0dXJuIC0xOwotICAgICAgICByZXR1cm4gZmFicyh0byAtIGZyb20pOwotICAgIH0KLSAg
ICBpZiAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgPT0gQW5pbWF0ZWRDb2xvcikgeworICAgIHN3
aXRjaCAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUpIHsKKyAgICBjYXNlIEFuaW1hdGVkQ29sb3I6
IHsKICAgICAgICAgQ29sb3IgZnJvbSA9IFNWR0NvbG9yOjpjb2xvckZyb21SR0JDb2xvclN0cmlu
Zyhmcm9tU3RyaW5nKTsKICAgICAgICAgaWYgKCFmcm9tLmlzVmFsaWQoKSkKICAgICAgICAgICAg
IHJldHVybiAtMTsKQEAgLTU0OCw4ICs0ODQsMTMgQEAgZmxvYXQgU1ZHQW5pbWF0ZUVsZW1lbnQ6
OmNhbGN1bGF0ZURpc3RhbgogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICByZXR1cm4g
Q29sb3JEaXN0YW5jZShmcm9tLCB0bykuZGlzdGFuY2UoKTsKICAgICB9Ci0gICAgaWYgKG1fYW5p
bWF0ZWRBdHRyaWJ1dGVUeXBlID09IEFuaW1hdGVkQW5nbGUgfHwgbV9hbmltYXRlZEF0dHJpYnV0
ZVR5cGUgPT0gQW5pbWF0ZWRMZW5ndGgpCisgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgorICAgIGNh
c2UgQW5pbWF0ZWRMZW5ndGg6CisgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKICAgICAgICAgcmV0
dXJuIGVuc3VyZUFuaW1hdG9yKCktPmNhbGN1bGF0ZURpc3RhbmNlKHRoaXMsIGZyb21TdHJpbmcs
IHRvU3RyaW5nKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CiAgICAgcmV0
dXJuIC0xOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAko
cmV2aXNpb24gODkxODcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNzIsOSArNzIsNiBAQCBwcml2YXRlOgogCiAgICAgQW5pbWF0
ZWRQcm9wZXJ0eVZhbHVlVHlwZSBtX2Zyb21Qcm9wZXJ0eVZhbHVlVHlwZTsKICAgICBBbmltYXRl
ZFByb3BlcnR5VmFsdWVUeXBlIG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZTsKLSAgICBmbG9hdCBtX2Zy
b21OdW1iZXI7Ci0gICAgZmxvYXQgbV90b051bWJlcjsKLSAgICBmbG9hdCBtX2FuaW1hdGVkTnVt
YmVyOwogICAgIENvbG9yIG1fZnJvbUNvbG9yOwogICAgIENvbG9yIG1fdG9Db2xvcjsKICAgICBD
b2xvciBtX2FuaW1hdGVkQ29sb3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWROdW1iZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZE51bWJlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWROdW1iZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNW
R19BTklNQVRJT04pCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKKworI2luY2x1ZGUg
IlNWR1BhcnNlclV0aWxpdGllcy5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1NWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OlNWR0FuaW1hdGVkTnVt
YmVyQW5pbWF0b3IoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5h
bWUmKQorICAgIDogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWROdW1iZXIsIGNvbnRl
eHRFbGVtZW50KQoreworfQorCitQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0
ZWROdW1iZXJBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmlu
ZykKK3sKKyAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmltdGVkVHlwZSA9IFNWR0FuaW1h
dGVkVHlwZTo6Y3JlYXRlTnVtYmVyKG5ldyBmbG9hdCk7CisgICAgZmxvYXQmIGFuaW1hdGVkTnVt
YmVyID0gYW5pbXRlZFR5cGUtPm51bWJlcigpOworICAgIGlmICghcGFyc2VOdW1iZXJGcm9tU3Ry
aW5nKHN0cmluZywgYW5pbWF0ZWROdW1iZXIpKQorICAgICAgICBhbmltYXRlZE51bWJlciA9IDA7
CisgICAgcmV0dXJuIGFuaW10ZWRUeXBlLnJlbGVhc2UoKTsKK30KKwordm9pZCBTVkdBbmltYXRl
ZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3RyaW5n
JiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQoreworICAgIGZyb20gPSBjb25z
dHJ1Y3RGcm9tU3RyaW5nKGZyb21TdHJpbmcpOworICAgIHRvID0gY29uc3RydWN0RnJvbVN0cmlu
Zyh0b1N0cmluZyk7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3Vs
YXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3Ry
aW5nJiBieVN0cmluZykKK3sKKyAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7CisgICAgCisg
ICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7CisgICAgdG8gPSBjb25z
dHJ1Y3RGcm9tU3RyaW5nKGJ5U3RyaW5nKTsKKworICAgIHRvLT5udW1iZXIoKSArPSBmcm9tLT5u
dW1iZXIoKTsKK30KKwordm9pZCBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVB
bmltYXRlZFZhbHVlKFNWR1NNSUxFbGVtZW50KiBzbWlsRWxlbWVudCwgZmxvYXQgcGVyY2VudGFn
ZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93
blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1h
dGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgZnJvbVByb3BlcnR5SW5oZXJpdHMsIGJvb2wgdG9Qcm9wZXJ0eUluaGVyaXRzKQor
eworICAgIEFTU0VSVChzbWlsRWxlbWVudCk7CisgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQp
OworICAgIFNWR0FuaW1hdGVFbGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8
U1ZHQW5pbWF0ZUVsZW1lbnQqPihzbWlsRWxlbWVudCk7CisgICAgCisgICAgQW5pbWF0aW9uTW9k
ZSBhbmltYXRpb25Nb2RlID0gYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgpOworICAg
IC8vIFRvIGFuaW1hdGlvbiB1c2VzIGNvbnRyaWJ1dGlvbnMgZnJvbSB0aGUgbG93ZXIgcHJpb3Jp
dHkgYW5pbWF0aW9ucyBhcyB0aGUgYmFzZSB2YWx1ZS4KKyAgICBmbG9hdCYgYW5pbWF0ZWROdW1i
ZXIgPSBhbmltYXRlZC0+bnVtYmVyKCk7CisgICAgaWYgKGFuaW1hdGlvbk1vZGUgPT0gVG9Bbmlt
YXRpb24pCisgICAgICAgIGZyb20tPm51bWJlcigpID0gYW5pbWF0ZWROdW1iZXI7CisgICAgCisg
ICAgLy8gUmVwbGFjZSAnaW5oZXJpdCcgYnkgdGhlaXIgY29tcHV0ZWQgcHJvcGVydHkgdmFsdWVz
LgorICAgIGZsb2F0IG51bWJlcjsKKyAgICBmbG9hdCYgZnJvbU51bWJlciA9IGZyb20tPm51bWJl
cigpOworICAgIGZsb2F0JiB0b051bWJlciA9IHRvLT5udW1iZXIoKTsKKyAgICBpZiAoZnJvbVBy
b3BlcnR5SW5oZXJpdHMpIHsKKyAgICAgICAgU3RyaW5nIGZyb21OdW1iZXJTdHJpbmc7CisgICAg
ICAgIGFuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZvckluaGVyaXRhbmNlKG1fY29udGV4dEVsZW1l
bnQsIGFuaW1hdGlvbkVsZW1lbnQtPmF0dHJpYnV0ZU5hbWUoKSwgZnJvbU51bWJlclN0cmluZyk7
CisgICAgICAgIHBhcnNlTnVtYmVyRnJvbVN0cmluZyhmcm9tTnVtYmVyU3RyaW5nLCBmcm9tTnVt
YmVyKTsgCisgICAgfQorICAgIGlmICh0b1Byb3BlcnR5SW5oZXJpdHMpIHsKKyAgICAgICAgU3Ry
aW5nIHRvTnVtYmVyU3RyaW5nOworICAgICAgICBhbmltYXRpb25FbGVtZW50LT5hZGp1c3RGb3JJ
bmhlcml0YW5jZShtX2NvbnRleHRFbGVtZW50LCBhbmltYXRpb25FbGVtZW50LT5hdHRyaWJ1dGVO
YW1lKCksIHRvTnVtYmVyU3RyaW5nKTsKKyAgICAgICAgcGFyc2VOdW1iZXJGcm9tU3RyaW5nKHRv
TnVtYmVyU3RyaW5nLCB0b051bWJlcik7IAorICAgIH0KKyAgICAKKyAgICBpZiAoYW5pbWF0aW9u
RWxlbWVudC0+Y2FsY01vZGUoKSA9PSBDYWxjTW9kZURpc2NyZXRlKQorICAgICAgICBudW1iZXIg
PSBwZXJjZW50YWdlIDwgMC41ZiA/IGZyb21OdW1iZXIgOiB0b051bWJlcjsKKyAgICBlbHNlCisg
ICAgICAgIG51bWJlciA9ICh0b051bWJlciAtIGZyb21OdW1iZXIpICogcGVyY2VudGFnZSArIGZy
b21OdW1iZXI7CisgICAgCisgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IGNvcnJlY3QgZm9yIHZh
bHVlcyBhbmltYXRpb24uCisgICAgaWYgKGFuaW1hdGlvbkVsZW1lbnQtPmlzQWNjdW11bGF0ZWQo
KSAmJiByZXBlYXRDb3VudCkKKyAgICAgICAgbnVtYmVyICs9IHRvTnVtYmVyICogcmVwZWF0Q291
bnQ7CisgICAgaWYgKGFuaW1hdGlvbkVsZW1lbnQtPmlzQWRkaXRpdmUoKSAmJiBhbmltYXRpb25N
b2RlICE9IFRvQW5pbWF0aW9uKQorICAgICAgICBhbmltYXRlZE51bWJlciArPSBudW1iZXI7Cisg
ICAgZWxzZQorICAgICAgICBhbmltYXRlZE51bWJlciA9IG51bWJlcjsKK30KKworZmxvYXQgU1ZH
QW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoU1ZHU01JTEVsZW1lbnQq
LCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCit7Cisg
ICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOworICAgIGZsb2F0IGZyb20gPSAwOworICAgIGZs
b2F0IHRvID0gMDsKKyAgICBwYXJzZU51bWJlckZyb21TdHJpbmcoZnJvbVN0cmluZywgZnJvbSk7
CisgICAgcGFyc2VOdW1iZXJGcm9tU3RyaW5nKHRvU3RyaW5nLCB0byk7CisgICAgcmV0dXJuIGZh
YnNmKHRvIC0gZnJvbSk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJM
RShTVkdfQU5JTUFUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVt
YmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVy
LmgJKHJldmlzaW9uIDg5MTg2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVt
YmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAKICNkZWZpbmUgU1ZHQW5pbWF0
ZWROdW1iZXJfaAogCiAjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJTVkdBbmltYXRlRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHlNYWNyb3MuaCIKICNpbmNsdWRlICJT
VkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oIgogCkBAIC0zOCw3ICszOSwyNCBAQCBE
RUZJTkVfQU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BCiAjZGVmaW5lIERFRklORV9B
TklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUs
IFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkp
IFwKIERFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZH
RE9NQXR0cmlidXRlSWRlbnRpZmllciwgU1ZHQW5pbWF0ZWROdW1iZXIsIGZsb2F0LCBVcHBlclBy
b3BlcnR5LCBMb3dlclByb3BlcnR5KQogCisjaWYgRU5BQkxFKFNWR19BTklNQVRJT04pCitjbGFz
cyBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yIDogcHVibGljIFNWR0FuaW1hdGVkVHlwZUFuaW1h
dG9yIHsKKyAgICAKK3B1YmxpYzoKKyAgICBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yKFNWR0Vs
ZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRO
dW1iZXJBbmltYXRvcigpIHsgfQorICAgIAorICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmlt
YXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CisgICAgCisgICAg
dmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3Qg
U3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKKyAgICB2aXJ0dWFs
IHZvaWQgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBm
cm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJpbmcm
IGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpOworICAgIHZpcnR1YWwgdm9pZCBj
YWxjdWxhdGVBbmltYXRlZFZhbHVlKFNWR1NNSUxFbGVtZW50KiwgZmxvYXQgcGVyY2VudGFnZSwg
dW5zaWduZWQgcmVwZWF0Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4mIHRvVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZnJvbVByb3Bl
cnR5SW5oZXJpdHMsIGJvb2wgdG9Qcm9wZXJ0eUluaGVyaXRzKTsKKyAgICB2aXJ0dWFsIGZsb2F0
IGNhbGN1bGF0ZURpc3RhbmNlKFNWR1NNSUxFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBmcm9tU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKK307CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHX0FOSU1BVElPTikKICNlbmRpZiAvLyBFTkFCTEUoU1ZH
KQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDE0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2gg
SW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19BTklNQVRJT04pCisjaW5j
bHVkZSAiU1ZHQW5pbWF0ZWRUeXBlLmgiCisKKyNpbmNsdWRlICJTVkdBbmdsZS5oIgorI2luY2x1
ZGUgIlNWR0xlbmd0aC5oIgorI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1NWR0FuaW1hdGVkVHlwZTo6U1ZHQW5pbWF0ZWRUeXBlKEFuaW1h
dGVkQXR0cmlidXRlVHlwZSB0eXBlKQorICAgIDogbV90eXBlKHR5cGUpCit7Cit9CisKK1NWR0Fu
aW1hdGVkVHlwZTo6flNWR0FuaW1hdGVkVHlwZSgpCit7CisgICAgc3dpdGNoIChtX3R5cGUpIHsK
KyAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CisgICAgICAgIGRlbGV0ZSBtX2RhdGEuYW5nbGU7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6CisgICAgICAgIGRlbGV0ZSBt
X2RhdGEubGVuZ3RoOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgor
ICAgICAgICBkZWxldGUgbV9kYXRhLm51bWJlcjsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
K30KKworUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRl
QW5nbGUoU1ZHQW5nbGUqIGFuZ2xlKQoreworICAgIEFTU0VSVChhbmdsZSk7CisgICAgT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0ZWRUeXBlID0gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVk
VHlwZShBbmltYXRlZEFuZ2xlKSk7CisgICAgYW5pbWF0ZWRUeXBlLT5tX2RhdGEuYW5nbGUgPSBh
bmdsZTsKKyAgICByZXR1cm4gYW5pbWF0ZWRUeXBlLnJlbGVhc2UoKTsKK30KKworUGFzc093blB0
cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTGVuZ3RoKFNWR0xlbmd0
aCogbGVuZ3RoKQoreworICAgIEFTU0VSVChsZW5ndGgpOworICAgIE93blB0cjxTVkdBbmltYXRl
ZFR5cGU+IGFuaW1hdGVkVHlwZSA9IGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZFR5cGUoQW5pbWF0
ZWRMZW5ndGgpKTsKKyAgICBhbmltYXRlZFR5cGUtPm1fZGF0YS5sZW5ndGggPSBsZW5ndGg7Cisg
ICAgcmV0dXJuIGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7Cit9CisKK1Bhc3NPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZU51bWJlcihmbG9hdCogbnVtYmVyKQor
eworICAgIEFTU0VSVChudW1iZXIpOworICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IGFuaW1h
dGVkVHlwZSA9IGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWROdW1iZXIpKTsK
KyAgICBhbmltYXRlZFR5cGUtPm1fZGF0YS5udW1iZXIgPSBudW1iZXI7CisgICAgcmV0dXJuIGFu
aW1hdGVkVHlwZS5yZWxlYXNlKCk7Cit9CisKK1NWR0FuZ2xlJiBTVkdBbmltYXRlZFR5cGU6OmFu
Z2xlKCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkQW5nbGUpOworICAgIHJldHVy
biAqbV9kYXRhLmFuZ2xlOworfQorCitTVkdMZW5ndGgmIFNWR0FuaW1hdGVkVHlwZTo6bGVuZ3Ro
KCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkTGVuZ3RoKTsKKyAgICByZXR1cm4g
Km1fZGF0YS5sZW5ndGg7Cit9CisKK2Zsb2F0JiBTVkdBbmltYXRlZFR5cGU6Om51bWJlcigpCit7
CisgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZE51bWJlcik7CisgICAgcmV0dXJuICptX2Rh
dGEubnVtYmVyOworfQorCitTdHJpbmcgU1ZHQW5pbWF0ZWRUeXBlOjp2YWx1ZUFzU3RyaW5nKCkK
K3sKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKKyAgICAg
ICAgQVNTRVJUKG1fZGF0YS5hbmdsZSk7CisgICAgICAgIHJldHVybiBtX2RhdGEuYW5nbGUtPnZh
bHVlQXNTdHJpbmcoKTsKKyAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgorICAgICAgICBBU1NFUlQo
bV9kYXRhLmxlbmd0aCk7CisgICAgICAgIHJldHVybiBtX2RhdGEubGVuZ3RoLT52YWx1ZUFzU3Ry
aW5nKCk7CisgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKKyAgICAgICAgQVNTRVJUKG1fZGF0YS5u
dW1iZXIpOworICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoKm1fZGF0YS5udW1iZXIpOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK2Jvb2wgU1ZHQW5pbWF0ZWRUeXBlOjpz
ZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBjb25zdCBTdHJp
bmcmIHZhbHVlKQoreworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIHN3aXRjaCAobV90
eXBlKSB7CisgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgorICAgICAgICBBU1NFUlQobV9kYXRhLmFu
Z2xlKTsKKyAgICAgICAgbV9kYXRhLmFuZ2xlLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlLCBlYyk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6CisgICAgICAgIEFTU0VS
VChtX2RhdGEubGVuZ3RoKTsKKyAgICAgICAgbV9kYXRhLmxlbmd0aC0+c2V0VmFsdWVBc1N0cmlu
Zyh2YWx1ZSwgU1ZHTGVuZ3RoOjpsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUo
YXR0ck5hbWUpLCBlYyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6
CisgICAgICAgIEFTU0VSVChtX2RhdGEubnVtYmVyKTsKKyAgICAgICAgcGFyc2VOdW1iZXJGcm9t
U3RyaW5nKHZhbHVlLCAqbV9kYXRhLm51bWJlcik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgcmV0dXJuICFlYzsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19BTklNQVRJT04pCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkVHlwZS5oCShyZXZpc2lvbiA4OTE4NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTA1ICsyMSwzMyBA
QAogI2RlZmluZSBTVkdBbmltYXRlZFR5cGVfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxF
KFNWR19BTklNQVRJT04pCi0jaW5jbHVkZSAiU1ZHQW5nbGUuaCIKICNpbmNsdWRlICJTVkdFbGVt
ZW50LmgiCi0jaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgU1ZHQW5nbGU7CitjbGFzcyBTVkdMZW5ndGg7CisKIGNsYXNzIFNWR0FuaW1hdGVkVHlw
ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGUoQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIHR5
cGUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkVHlwZSh0
eXBlKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBj
cmVhdGVBbmdsZShTVkdBbmdsZSogYW5nbGUpCi0gICAgewotICAgICAgICBBU1NFUlQoYW5nbGUp
OwotICAgICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmltYXRlZFR5cGUgPSBjcmVhdGUo
QW5pbWF0ZWRBbmdsZSk7Ci0gICAgICAgIGFuaW1hdGVkVHlwZS0+bV9kYXRhLmFuZ2xlID0gYW5n
bGU7Ci0gICAgICAgIHJldHVybiBhbmltYXRlZFR5cGUucmVsZWFzZSgpOwotICAgIH0KLQotICAg
IHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlTGVuZ3RoKFNWR0xlbmd0
aCogbGVuZ3RoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGxlbmd0aCk7Ci0gICAgICAgIE93blB0
cjxTVkdBbmltYXRlZFR5cGU+IGFuaW1hdGVkVHlwZSA9IGNyZWF0ZShBbmltYXRlZExlbmd0aCk7
Ci0gICAgICAgIGFuaW1hdGVkVHlwZS0+bV9kYXRhLmxlbmd0aCA9IGxlbmd0aDsKLSAgICAgICAg
cmV0dXJuIGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+U1ZH
QW5pbWF0ZWRUeXBlKCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgICAg
IGNhc2UgQW5pbWF0ZWRBbmdsZToKLSAgICAgICAgICAgIGRlbGV0ZSBtX2RhdGEuYW5nbGU7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKLSAgICAgICAg
ICAgIGRlbGV0ZSBtX2RhdGEubGVuZ3RoOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgfQorICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkVHlwZSgpOwor
CisgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVBbmdsZShTVkdB
bmdsZSopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlTGVu
Z3RoKFNWR0xlbmd0aCopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4g
Y3JlYXRlTnVtYmVyKGZsb2F0Kik7CiAgICAgCiAgICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAotICAgIFNWR0FuZ2xlJiBhbmdsZSgpCi0g
ICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkQW5nbGUpOwotICAgICAgICBy
ZXR1cm4gKm1fZGF0YS5hbmdsZTsKLSAgICB9Ci0KLSAgICBTVkdMZW5ndGgmIGxlbmd0aCgpCi0g
ICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkTGVuZ3RoKTsKLSAgICAgICAg
cmV0dXJuICptX2RhdGEubGVuZ3RoOwotICAgIH0KLSAgICAKLSAgICBTdHJpbmcgdmFsdWVBc1N0
cmluZygpCi0gICAgewotICAgICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgICAgICBjYXNlIEFu
aW1hdGVkQW5nbGU6Ci0gICAgICAgICAgICBBU1NFUlQobV9kYXRhLmFuZ2xlKTsKLSAgICAgICAg
ICAgIHJldHVybiBtX2RhdGEuYW5nbGUtPnZhbHVlQXNTdHJpbmcoKTsKLSAgICAgICAgY2FzZSBB
bmltYXRlZExlbmd0aDoKLSAgICAgICAgICAgIEFTU0VSVChtX2RhdGEubGVuZ3RoKTsKLSAgICAg
ICAgICAgIHJldHVybiBtX2RhdGEubGVuZ3RoLT52YWx1ZUFzU3RyaW5nKCk7Ci0gICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIH0KLSAgICAKLSAgICBi
b29sIHNldFZhbHVlQXNTdHJpbmcoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIGNvbnN0
IFN0cmluZyYgdmFsdWUpCi0gICAgewotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgotICAg
ICAgICAgICAgQVNTRVJUKG1fZGF0YS5hbmdsZSk7Ci0gICAgICAgICAgICBtX2RhdGEuYW5nbGUt
PnNldFZhbHVlQXNTdHJpbmcodmFsdWUsIGVjKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgotICAgICAgICAgICAgQVNTRVJUKG1fZGF0YS5sZW5ndGgp
OwotICAgICAgICAgICAgbV9kYXRhLmxlbmd0aC0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSwgU1ZH
TGVuZ3RoOjpsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5hbWUpLCBl
Yyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuICFlYzsKLSAgICB9CisgICAgU1ZHQW5nbGUmIGFuZ2xlKCk7CisgICAgU1ZHTGVu
Z3RoJiBsZW5ndGgoKTsKKyAgICBmbG9hdCYgbnVtYmVyKCk7CisKKyAgICBTdHJpbmcgdmFsdWVB
c1N0cmluZygpOworICAgIGJvb2wgc2V0VmFsdWVBc1N0cmluZyhjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgU3RyaW5nJik7CiAgICAgCiBwcml2YXRlOgotICAgIFNWR0FuaW1hdGVkVHlwZShB
bmltYXRlZEF0dHJpYnV0ZVR5cGUgdHlwZSkKLSAgICAgICAgOiBtX3R5cGUodHlwZSkKLSAgICB7
Ci0gICAgfQorICAgIFNWR0FuaW1hdGVkVHlwZShBbmltYXRlZEF0dHJpYnV0ZVR5cGUpOwogICAg
IAogICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSBtX3R5cGU7CiAgICAgCkBAIC0xMzIsNiArNjAs
NyBAQCBwcml2YXRlOgogICAgICAgICAvLyBGSVhNRTogTW9yZSBTVkcgcHJpbWl0aXZlIHR5cGVz
IG5lZWQgdG8gYmUgYWRkZWQgc3RlcCBieSBzdGVwLgogICAgICAgICBTVkdBbmdsZSogYW5nbGU7
CiAgICAgICAgIFNWR0xlbmd0aCogbGVuZ3RoOworICAgICAgICBmbG9hdCogbnVtYmVyOwogICAg
IH0gbV9kYXRhOwogfTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRv
ckZhY3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JG
YWN0b3J5LmgJKHJldmlzaW9uIDg5MTg3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dG9yRmFjdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAjaWYgRU5BQkxF
KFNWRykgJiYgRU5BQkxFKFNWR19BTklNQVRJT04pCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRBbmds
ZS5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWROdW1iZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIApAQCAtMzYsNiArMzcsOCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkQW5n
bGVBbmltYXRvcihjb250ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSkpOwogICAgICAgICBjYXNl
IEFuaW1hdGVkTGVuZ3RoOgogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmlt
YXRlZExlbmd0aEFuaW1hdG9yKGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lKSk7CisgICAg
ICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IoY29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUp
KTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9y
KGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gODkxODcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDcg
KzE1MSw3IEBAIGJvb2wgcGFyc2VOdW1iZXJGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYKIHsKICAg
ICBjb25zdCBVQ2hhciogcHRyID0gc3RyaW5nLmNoYXJhY3RlcnMoKTsKICAgICBjb25zdCBVQ2hh
ciogZW5kID0gcHRyICsgc3RyaW5nLmxlbmd0aCgpOwotICAgIHJldHVybiBnZW5lcmljUGFyc2VO
dW1iZXIocHRyLCBlbmQsIG51bWJlciwgc2tpcCk7CisgICAgcmV0dXJuIGdlbmVyaWNQYXJzZU51
bWJlcihwdHIsIGVuZCwgbnVtYmVyLCBza2lwKSAmJiBwdHIgPT0gZW5kOwogfQogCiAvLyBvbmx5
IHVzZWQgdG8gcGFyc2UgbGFyZ2VBcmNGbGFnIGFuZCBzd2VlcEZsYWcgd2hpY2ggbXVzdCBiZSBh
ICIwIiBvciAiMSIKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5MjA2KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDYtMTggIERpcmsg
U2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTVkdBbmltYXRvckZhY3RvcnkgZG9lcyBub3Qgc3VwcG9ydCBT
VkdOdW1iZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYyOTM4CisgICAgICAgIAorICAgICAgICBBZGRlZCBuZXcgdGVzdHMgdG8gY2hlY2sgYmVoYXZp
b3Igb24gU1ZHTnVtYmVyIGFuaW1hdGlvbi4KKworICAgICAgICAqIHN2Zy9hbmltYXRpb25zL3Nj
cmlwdC10ZXN0cy9zdmdudW1iZXItYW5pbWF0aW9uLTEuanM6IEFkZGVkLgorICAgICAgICAoc2Ft
cGxlMSk6CisgICAgICAgIChzYW1wbGUyKToKKyAgICAgICAgKHNhbXBsZTMpOgorICAgICAgICAo
ZXhlY3V0ZVRlc3QpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9zdmdu
dW1iZXItYW5pbWF0aW9uLTIuanM6IEFkZGVkLgorICAgICAgICAoc2FtcGxlMSk6CisgICAgICAg
IChzYW1wbGUyKToKKyAgICAgICAgKHNhbXBsZTMpOgorICAgICAgICAoZXhlY3V0ZVRlc3QpOgor
ICAgICAgICAqIHN2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9zdmdudW1iZXItYW5pbWF0aW9u
LTMuanM6IEFkZGVkLgorICAgICAgICAoc2FtcGxlMSk6CisgICAgICAgIChzYW1wbGUyKToKKyAg
ICAgICAgKHNhbXBsZTMpOgorICAgICAgICAoZXhlY3V0ZVRlc3QpOgorICAgICAgICAqIHN2Zy9h
bmltYXRpb25zL3N2Z251bWJlci1hbmltYXRpb24tMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHN2Zy9hbmltYXRpb25zL3N2Z251bWJlci1hbmltYXRpb24tMS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9uLTItZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9u
LTIuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVyLWFuaW1h
dGlvbi0zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvc3Zn
bnVtYmVyLWFuaW1hdGlvbi0zLmh0bWw6IEFkZGVkLgorCiAyMDExLTA2LTE4ICBBbGljZSBCb3ho
YWxsICA8YWJveGhhbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IENocmlz
IEZsZWl6YWNoLgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVyLWFu
aW1hdGlvbi0xLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5p
bWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9uLTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVyLWFuaW1hdGlvbi0xLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorU1ZHIDEuMSBkeW5hbWljIGFu
aW1hdGlvbiB0ZXN0cworCitUZXN0IGZvciBTVkdOdW1iZXIgYW5pbWF0aW9uLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NT
VmFsdWUoJ29wYWNpdHknKS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1C
RVIpIGlzIDAKK1BBU1MgY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdvcGFjaXR5
JykuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAwLjUKK1BB
U1MgY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdvcGFjaXR5JykuZ2V0RmxvYXRW
YWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAxCitQQVNTIGNvbXB1dGVkU3R5
bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnb3BhY2l0eScpLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0
aXZlVmFsdWUuQ1NTX05VTUJFUikgaXMgMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3N2
Z251bWJlci1hbmltYXRpb24tMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9h
bmltYXRpb25zL3N2Z251bWJlci1hbmltYXRpb24tMS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVyLWFuaW1hdGlvbi0xLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdUZXN0Q2FzZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL1NWR0FuaW1hdGlvblRlc3RDYXNlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGgxPlNWRyAxLjEgZHluYW1pYyBhbmltYXRp
b24gdGVzdHM8L2gxPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3ZnbnVtYmVyLWFuaW1hdGlvbi0x
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9h
bmltYXRpb25zL3N2Z251bWJlci1hbmltYXRpb24tMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVyLWFuaW1hdGlvbi0yLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3N2Z251
bWJlci1hbmltYXRpb24tMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUg
QEAKK1NWRyAxLjEgZHluYW1pYyBhbmltYXRpb24gdGVzdHMKKworVGVzdCBmb3IgU1ZHTnVtYmVy
IGFuaW1hdGlvbiB3aXRoIGRpZmZlcmVudCBleHBvbmVudHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnb3Bh
Y2l0eScpLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikgaXMgMAor
UEFTUyBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ29wYWNpdHknKS5nZXRGbG9h
dFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDAuNQorUEFTUyBjb21wdXRl
ZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ29wYWNpdHknKS5nZXRGbG9hdFZhbHVlKENTU1By
aW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDEKK1BBU1MgY29tcHV0ZWRTdHlsZS5nZXRQcm9w
ZXJ0eUNTU1ZhbHVlKCdvcGFjaXR5JykuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5D
U1NfTlVNQkVSKSBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVyLWFu
aW1hdGlvbi0yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMv
c3ZnbnVtYmVyLWFuaW1hdGlvbi0yLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9z
dmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9uLTIuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1Rlc3RDYXNlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvU1ZHQW5pbWF0aW9uVGVzdENhc2UuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8aDE+U1ZHIDEuMSBkeW5hbWljIGFuaW1hdGlvbiB0ZXN0czwv
aDE+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zdmdudW1iZXItYW5pbWF0aW9uLTIuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMv
c3ZnbnVtYmVyLWFuaW1hdGlvbi0zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9uLTMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVyLWFuaW1h
dGlvbi0zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorU1ZHIDEu
MSBkeW5hbWljIGFuaW1hdGlvbiB0ZXN0cworCitUZXN0IGZvciBTVkdOdW1iZXIgYW5pbWF0aW9u
IHdpdGggaW52YWxpZCB1bml0cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdvcGFjaXR5JykuZ2V0RmxvYXRW
YWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAwCitQQVNTIGNvbXB1dGVkU3R5
bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnb3BhY2l0eScpLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0
aXZlVmFsdWUuQ1NTX05VTUJFUikgaXMgMAorUEFTUyBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5
Q1NTVmFsdWUoJ29wYWNpdHknKS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19O
VU1CRVIpIGlzIDAKK1BBU1MgY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdvcGFj
aXR5JykuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAwCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVyLWFuaW1hdGlvbi0zLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVyLWFuaW1hdGlv
bi0zLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdu
dW1iZXItYW5pbWF0aW9uLTMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9keW5hbWljLXVwZGF0
ZXMvcmVzb3VyY2VzL1NWR1Rlc3RDYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvU1ZHQW5pbWF0aW9uVGVzdENhc2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8aDE+U1ZHIDEuMSBkeW5hbWljIGFuaW1hdGlvbiB0ZXN0czwvaDE+Cis8cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9zdmdudW1iZXItYW5pbWF0aW9uLTMuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL3N2Z251
bWJlci1hbmltYXRpb24tMS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0
aW9ucy9zY3JpcHQtdGVzdHMvc3ZnbnVtYmVyLWFuaW1hdGlvbi0xLmpzCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL3N2Z251bWJlci1hbmlt
YXRpb24tMS5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorZGVzY3JpcHRpb24oIlRl
c3QgZm9yIFNWR051bWJlciBhbmltYXRpb24uIik7CitjcmVhdGVTVkdUZXN0Q2FzZSgpOworCisv
LyBTZXR1cCB0ZXN0IGRvY3VtZW50Cit2YXIgcmVjdCA9IGNyZWF0ZVNWR0VsZW1lbnQoInJlY3Qi
KTsKK3JlY3Quc2V0QXR0cmlidXRlKCJpZCIsICJyZWN0Iik7CityZWN0LnNldEF0dHJpYnV0ZSgi
eCIsICIwIik7CityZWN0LnNldEF0dHJpYnV0ZSgid2lkdGgiLCAiMTAwIik7CityZWN0LnNldEF0
dHJpYnV0ZSgiaGVpZ2h0IiwgIjEwMCIpOworcmVjdC5zZXRBdHRyaWJ1dGUoImZpbGwiLCAiZ3Jl
ZW4iKTsKK3JlY3Quc2V0QXR0cmlidXRlKCJvcGFjaXR5IiwgIjAiKTsKK3JlY3Quc2V0QXR0cmli
dXRlKCJvbmNsaWNrIiwgImV4ZWN1dGVUZXN0KCkiKTsKKwordmFyIGFuaW1hdGUgPSBjcmVhdGVT
VkdFbGVtZW50KCJhbmltYXRlIik7CithbmltYXRlLnNldEF0dHJpYnV0ZSgiaWQiLCAiYW5pbWF0
aW9uIik7CithbmltYXRlLnNldEF0dHJpYnV0ZSgiYXR0cmlidXRlTmFtZSIsICJvcGFjaXR5Iik7
CithbmltYXRlLnNldEF0dHJpYnV0ZSgiYmVnaW4iLCAiY2xpY2siKTsKK2FuaW1hdGUuc2V0QXR0
cmlidXRlKCJkdXIiLCAiNHMiKTsKK2FuaW1hdGUuc2V0QXR0cmlidXRlKCJmcm9tIiwgIjAiKTsK
K2FuaW1hdGUuc2V0QXR0cmlidXRlKCJ0byIsICIxIik7CityZWN0LmFwcGVuZENoaWxkKGFuaW1h
dGUpOworcm9vdFNWR0VsZW1lbnQuYXBwZW5kQ2hpbGQocmVjdCk7CisKK3ZhciBjb21wdXRlZFN0
eWxlID0gcmVjdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVj
dCk7CisKKy8vIFNldHVwIGFuaW1hdGlvbiB0ZXN0CitmdW5jdGlvbiBzYW1wbGUxKCkgeworICAg
IC8vIENoZWNrIGluaXRpYWwvZW5kIGNvbmRpdGlvbnMKKyAgICBzaG91bGRCZSgiY29tcHV0ZWRT
dHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdvcGFjaXR5JykuZ2V0RmxvYXRWYWx1ZShDU1NQcmlt
aXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSIsICIwIik7Cit9CisKK2Z1bmN0aW9uIHNhbXBsZTIoKSB7
CisgICAgc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnb3BhY2l0
eScpLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikiLCAiMC41Iik7
Cit9CisKK2Z1bmN0aW9uIHNhbXBsZTMoKSB7CisgICAgc2hvdWxkQmVDbG9zZUVub3VnaCgiY29t
cHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdvcGFjaXR5JykuZ2V0RmxvYXRWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSIsICIxIiwgMC4wMSk7Cit9CisKK2Z1bmN0aW9u
IGV4ZWN1dGVUZXN0KCkgeworICAgIGNvbnN0IGV4cGVjdGVkVmFsdWVzID0gWworICAgICAgICAv
LyBbYW5pbWF0aW9uSWQsIHRpbWUsIGVsZW1lbnRJZCwgc2FtcGxlQ2FsbGJhY2tdCisgICAgICAg
IFsiYW5pbWF0aW9uIiwgMCwgICAgICAicmVjdCIsIHNhbXBsZTFdLAorICAgICAgICBbImFuaW1h
dGlvbiIsIDIuMCwgICAgInJlY3QiLCBzYW1wbGUyXSwKKyAgICAgICAgWyJhbmltYXRpb24iLCAz
Ljk5OTksICJyZWN0Iiwgc2FtcGxlM10sCisgICAgICAgIFsiYW5pbWF0aW9uIiwgNCwgICAgICAi
cmVjdCIsIHNhbXBsZTFdCisgICAgXTsKKworICAgIHJ1bkFuaW1hdGlvblRlc3QoZXhwZWN0ZWRW
YWx1ZXMpOworfQorCisvLyBCZWdpbiB0ZXN0IGFzeW5jCit3aW5kb3cuc2V0VGltZW91dCgidHJp
Z2dlclVwZGF0ZSg1MCwgMzApIiwgMCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
SW5kZXg6IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9zdmdudW1iZXIt
YW5pbWF0aW9uLTIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMv
c2NyaXB0LXRlc3RzL3N2Z251bWJlci1hbmltYXRpb24tMi5qcwkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9zdmdudW1iZXItYW5pbWF0aW9u
LTIuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IGZv
ciBTVkdOdW1iZXIgYW5pbWF0aW9uIHdpdGggZGlmZmVyZW50IGV4cG9uZW50cy4iKTsKK2NyZWF0
ZVNWR1Rlc3RDYXNlKCk7CisKKy8vIFNldHVwIHRlc3QgZG9jdW1lbnQKK3ZhciByZWN0ID0gY3Jl
YXRlU1ZHRWxlbWVudCgicmVjdCIpOworcmVjdC5zZXRBdHRyaWJ1dGUoImlkIiwgInJlY3QiKTsK
K3JlY3Quc2V0QXR0cmlidXRlKCJ4IiwgIjAiKTsKK3JlY3Quc2V0QXR0cmlidXRlKCJ3aWR0aCIs
ICIxMDAiKTsKK3JlY3Quc2V0QXR0cmlidXRlKCJoZWlnaHQiLCAiMTAwIik7CityZWN0LnNldEF0
dHJpYnV0ZSgiZmlsbCIsICJncmVlbiIpOworcmVjdC5zZXRBdHRyaWJ1dGUoIm9wYWNpdHkiLCAi
MCIpOworcmVjdC5zZXRBdHRyaWJ1dGUoIm9uY2xpY2siLCAiZXhlY3V0ZVRlc3QoKSIpOworCit2
YXIgYW5pbWF0ZSA9IGNyZWF0ZVNWR0VsZW1lbnQoImFuaW1hdGUiKTsKK2FuaW1hdGUuc2V0QXR0
cmlidXRlKCJpZCIsICJhbmltYXRpb24iKTsKK2FuaW1hdGUuc2V0QXR0cmlidXRlKCJhdHRyaWJ1
dGVOYW1lIiwgIm9wYWNpdHkiKTsKK2FuaW1hdGUuc2V0QXR0cmlidXRlKCJiZWdpbiIsICJjbGlj
ayIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoImR1ciIsICI0cyIpOworYW5pbWF0ZS5zZXRBdHRy
aWJ1dGUoImZyb20iLCAiMGUxMCIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoInRvIiwgIi4xZTEi
KTsKK3JlY3QuYXBwZW5kQ2hpbGQoYW5pbWF0ZSk7Cityb290U1ZHRWxlbWVudC5hcHBlbmRDaGls
ZChyZWN0KTsKKwordmFyIGNvbXB1dGVkU3R5bGUgPSByZWN0Lm93bmVyRG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0KTsKKworLy8gU2V0dXAgYW5pbWF0aW9uIHRlc3QK
K2Z1bmN0aW9uIHNhbXBsZTEoKSB7CisgICAgLy8gQ2hlY2sgaW5pdGlhbC9lbmQgY29uZGl0aW9u
cworICAgIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ29wYWNp
dHknKS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIiwgIjAiKTsK
K30KKworZnVuY3Rpb24gc2FtcGxlMigpIHsKKyAgICBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKCdvcGFjaXR5JykuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVW
YWx1ZS5DU1NfTlVNQkVSKSIsICIwLjUiKTsKK30KKworZnVuY3Rpb24gc2FtcGxlMygpIHsKKyAg
ICBzaG91bGRCZUNsb3NlRW5vdWdoKCJjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUo
J29wYWNpdHknKS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIiwg
IjEiLCAwLjAxKTsKK30KKworZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CisgICAgY29uc3QgZXhw
ZWN0ZWRWYWx1ZXMgPSBbCisgICAgICAgIC8vIFthbmltYXRpb25JZCwgdGltZSwgZWxlbWVudElk
LCBzYW1wbGVDYWxsYmFja10KKyAgICAgICAgWyJhbmltYXRpb24iLCAwLCAgICAgICJyZWN0Iiwg
c2FtcGxlMV0sCisgICAgICAgIFsiYW5pbWF0aW9uIiwgMi4wLCAgICAicmVjdCIsIHNhbXBsZTJd
LAorICAgICAgICBbImFuaW1hdGlvbiIsIDMuOTk5OSwgInJlY3QiLCBzYW1wbGUzXSwKKyAgICAg
ICAgWyJhbmltYXRpb24iLCA0LCAgICAgICJyZWN0Iiwgc2FtcGxlMV0KKyAgICBdOworCisgICAg
cnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZFZhbHVlcyk7Cit9CisKKy8vIEJlZ2luIHRlc3QgYXN5
bmMKK3dpbmRvdy5zZXRUaW1lb3V0KCJ0cmlnZ2VyVXBkYXRlKDUwLCAzMCkiLCAwKTsKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlv
bnMvc2NyaXB0LXRlc3RzL3N2Z251bWJlci1hbmltYXRpb24tMy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvc3ZnbnVtYmVyLWFuaW1hdGlv
bi0zLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0
LXRlc3RzL3N2Z251bWJlci1hbmltYXRpb24tMy5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
NCBAQAorZGVzY3JpcHRpb24oIlRlc3QgZm9yIFNWR051bWJlciBhbmltYXRpb24gd2l0aCBpbnZh
bGlkIHVuaXRzLiIpOworY3JlYXRlU1ZHVGVzdENhc2UoKTsKKworLy8gU2V0dXAgdGVzdCBkb2N1
bWVudAordmFyIHJlY3QgPSBjcmVhdGVTVkdFbGVtZW50KCJyZWN0Iik7CityZWN0LnNldEF0dHJp
YnV0ZSgiaWQiLCAicmVjdCIpOworcmVjdC5zZXRBdHRyaWJ1dGUoIngiLCAiMCIpOworcmVjdC5z
ZXRBdHRyaWJ1dGUoIndpZHRoIiwgIjEwMCIpOworcmVjdC5zZXRBdHRyaWJ1dGUoImhlaWdodCIs
ICIxMDAiKTsKK3JlY3Quc2V0QXR0cmlidXRlKCJmaWxsIiwgImdyZWVuIik7CityZWN0LnNldEF0
dHJpYnV0ZSgib3BhY2l0eSIsICIwIik7CityZWN0LnNldEF0dHJpYnV0ZSgib25jbGljayIsICJl
eGVjdXRlVGVzdCgpIik7CisKK3ZhciBhbmltYXRlID0gY3JlYXRlU1ZHRWxlbWVudCgiYW5pbWF0
ZSIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoImlkIiwgImFuaW1hdGlvbiIpOworYW5pbWF0ZS5z
ZXRBdHRyaWJ1dGUoImF0dHJpYnV0ZU5hbWUiLCAib3BhY2l0eSIpOworYW5pbWF0ZS5zZXRBdHRy
aWJ1dGUoImJlZ2luIiwgImNsaWNrIik7CithbmltYXRlLnNldEF0dHJpYnV0ZSgiZHVyIiwgIjRz
Iik7CithbmltYXRlLnNldEF0dHJpYnV0ZSgiZnJvbSIsICIwcHgiKTsKK2FuaW1hdGUuc2V0QXR0
cmlidXRlKCJ0byIsICIxcHgiKTsKK3JlY3QuYXBwZW5kQ2hpbGQoYW5pbWF0ZSk7Cityb290U1ZH
RWxlbWVudC5hcHBlbmRDaGlsZChyZWN0KTsKKwordmFyIGNvbXB1dGVkU3R5bGUgPSByZWN0Lm93
bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0KTsKKworLy8gU2V0
dXAgYW5pbWF0aW9uIHRlc3QKK2Z1bmN0aW9uIHNhbXBsZTEoKSB7CisgICAgLy8gQ2hlY2sgaW5p
dGlhbC9lbmQgY29uZGl0aW9ucworICAgIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLmdldFByb3Bl
cnR5Q1NTVmFsdWUoJ29wYWNpdHknKS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNT
U19OVU1CRVIpIiwgIjAiKTsKK30KKworZnVuY3Rpb24gc2FtcGxlMigpIHsKKyAgICBzaG91bGRC
ZSgiY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdvcGFjaXR5JykuZ2V0RmxvYXRW
YWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSIsICIwIik7Cit9CisKK2Z1bmN0aW9u
IHNhbXBsZTMoKSB7CisgICAgc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlDU1NW
YWx1ZSgnb3BhY2l0eScpLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJF
UikiLCAiMCIpOworfQorCitmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKKyAgICBjb25zdCBleHBl
Y3RlZFZhbHVlcyA9IFsKKyAgICAgICAgLy8gW2FuaW1hdGlvbklkLCB0aW1lLCBlbGVtZW50SWQs
IHNhbXBsZUNhbGxiYWNrXQorICAgICAgICBbImFuaW1hdGlvbiIsIDAsICAgICAgInJlY3QiLCBz
YW1wbGUxXSwKKyAgICAgICAgWyJhbmltYXRpb24iLCAyLjAsICAgICJyZWN0Iiwgc2FtcGxlMl0s
CisgICAgICAgIFsiYW5pbWF0aW9uIiwgMy45OTk5LCAicmVjdCIsIHNhbXBsZTNdLAorICAgICAg
ICBbImFuaW1hdGlvbiIsIDQsICAgICAgInJlY3QiLCBzYW1wbGUxXQorICAgIF07CisKKyAgICBy
dW5BbmltYXRpb25UZXN0KGV4cGVjdGVkVmFsdWVzKTsKK30KKworLy8gQmVnaW4gdGVzdCBhc3lu
Yword2luZG93LnNldFRpbWVvdXQoInRyaWdnZXJVcGRhdGUoNTAsIDMwKSIsIDApOwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97721</attachid>
            <date>2011-06-19 06:41:48 -0700</date>
            <delta_ts>2011-06-19 12:59:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62938-20110619154145.patch</filename>
            <type>text/plain</type>
            <size>49098</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5MjA2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTEtMDYtMTggIERpcmsgU2No
dWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTVkdBbmltYXRvckZhY3RvcnkgZG9lcyBub3Qgc3VwcG9ydCBTVkdO
dW1iZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYy
OTM4CisKKyAgICAgICAgRm9sbG93IHVwIG9mICJTVkdBbmltYXRpb24gc2hvdWxkIHVzZSBkaXJl
Y3QgdW5pdCBhbmltYXRpb24gZm9yIFNWR0xlbmd0aCI6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MTM2OAorICAgICAgICBUaGlzIHBhdGNoIGNvbnRpbnVlcyB0aGUg
Y29udmVyc2lvbiB0byB0aGUgbmV3IGNvbmNlcHQgb2YgU1ZHQW5pbWF0b3JGYWN0b3J5IHdpdGgg
U1ZHTnVtYmVyLiBXaXRoIHRoZSBuZXcgYW5pbWF0b3IgZm9yIHRoZQorICAgICAgICBXaXRoIHRo
ZSBuZXcgYW5pbWF0b3IgZm9yIFNWR051bWJlciB3ZSBhbHNvIHN1cHBvcnQgdGhlIHNjaWVudGlm
aWMgbm90YXRpb24sIGFuZCBldmVyeXRoaW5nIGVsc2UgdGhhdCdzIHN1cHBvcnRlZCBieQorICAg
ICAgICB0aGUgU1ZHTnVtYmVyIHBhcnNpbmcsIHJlbW92aW5nIHRoZSBTVkdBbmltYXRlKiBzcGVj
aWZpYyBudW1iZXIgcGFyc2luZyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIE1vdmluZyB0aGUg
Y29udGVudCBvZiBTVkdBbmltYXRlZFR5cGUgaGVhZGVyIGludG8gaXRzIG93biBjcHAuCisgICAg
ICAgIAorICAgICAgICBDaGFuZ2VkIGJlaGF2aW9yIG9mIHBhcnNlTnVtYmVyRnJvbVN0cmluZygp
LiBJdCBjaGVja3MgaWYgdGhlIFN0cmluZyBzaW1wbHkgY29uc2l0cyBvZiBhIG51bWJlciBub3cu
IHBhcnNlTnVtYmVyRnJvbVN0cmluZygpCisgICAgICAgIGlzIHVzaW5nIGdlbmVyaWNQYXJzZU51
bWJlcigpIGZvciBwYXJzaW5nIG51bWJlcnMuIEJ1dCB0aGlzIG1ldGhvZCBqdXN0IHN0b3BzIGF0
IHRoZSBmaXJzdCBjaGFyIHRoYXQgZG9lcyBub3QgYmVsb25nIHRvIGEgbnVtYmVyIGFuZAorICAg
ICAgICByZXR1cm5zIHRydWUuIEkgYWRkZWQgYSBjaGVjayBpZiB0aGUgY3VycmVudCBjaGFyIHBv
aW50ZXIgaXMgYXQgdGhlIGxhc3QgY2hhciBvZiB0aGUgU3RyaW5nIGFuZCByZXR1cm4gZmFsc2Ug
aWYgbm90LgorCisgICAgICAgIFRlc3RzOiBzdmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0
aW9uLTEuaHRtbAorICAgICAgICAgICAgICAgc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVyLWFuaW1h
dGlvbi0yLmh0bWwKKyAgICAgICAgICAgICAgIHN2Zy9hbmltYXRpb25zL3N2Z251bWJlci1hbmlt
YXRpb24tMy5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkZWQgbmV3IGZpbGVz
IHRvIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBEaXR0by4K
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUucHJvOiBE
aXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRv
LgorICAgICAgICAqIHN2Zy9TVkdBbGxJbk9uZS5jcHA6IERpdHRvLgorICAgICAgICAqIHN2Zy9T
VkdBbmltYXRlRWxlbWVudC5jcHA6IFVzZSBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yIGZvciBh
bmltYXRpb25zIG9mIFNWR051bWJlcnMuCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxl
bWVudDo6U1ZHQW5pbWF0ZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVs
ZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRGlzdGFuY2UpOgorICAg
ICAgICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVudC5oOiBSZW1vdmUgZmxvYXRzIGZvciB2YWx1ZSBz
dG9yYWdlLiBUaGlzIGlzIGRvbmUgYnkgU1ZHQW5pbWF0ZWRUeXBlcyBub3cuCisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcDogQWRkZWQuIEFuaW1hdG9yIGZvciBTVkdOdW1iZXJz
LgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6U1ZHQW5pbWF0
ZWROdW1iZXJBbmltYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlckFu
aW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGVkTnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3Vs
YXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlckFu
aW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVt
YmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjp+U1ZH
QW5pbWF0ZWROdW1iZXJBbmltYXRvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5j
cHA6IEFkZGVkLiBNb3ZlZCBjb250ZW50IGZyb20gaGVhZGVyIHRvIGNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6U1ZHQW5pbWF0ZWRUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGVkVHlwZTo6flNWR0FuaW1hdGVkVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVkVHlwZTo6Y3JlYXRlTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVk
VHlwZTo6Y3JlYXRlTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6
YW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpsZW5ndGgpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpudW1iZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZWRUeXBlOjp2YWx1ZUFzU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVkVHlwZTo6c2V0VmFsdWVBc1N0cmluZyk6CisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVkVHlwZS5oOiBSZW1vdmVkIG1ldGhvZCBjcmVhdGUoKS4gQWxsd2F5cyBjYWxsIHR5cGUgc3Bl
Y2lmaWMgY3JlYXRlIGZ1bnRjaW9ucy4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0b3JGYWN0b3J5
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZSk6CisgICAg
ICAgICogc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJz
ZU51bWJlckZyb21TdHJpbmcpOiBDaGVjayBpZiBTdHJpbmcgc2ltcGx5IGNvbnNpdHMgb2YgYSBu
dW1iZXIuIFJldHVybiBmYWxzZSBvdGhlcndpc2UuCisKIDIwMTEtMDYtMTggIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gODkxODcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTY1NCw2ICsxNjU0LDggQEAg
SUYgKEVOQUJMRV9TVkcpCiAgICAgICAgIHN2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcAog
ICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRBbmdsZS5jcHAKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVk
TGVuZ3RoLmNwcAorICAgICAgICBzdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwCisgICAgICAgIHN2
Zy9TVkdBbmltYXRlZFR5cGUuY3BwCiAgICAgICAgIHN2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAK
ICAgICAgICAgc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAogICAgICAgICBzdmcvU1ZH
QW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0JKHJldmlzaW9uIDg5MTg3KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQkod29ya2luZyBjb3B5KQpAQCAtMzM0MywxMiArMzM0MywxNCBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZE51bWJlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmggXAogCVNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaCBcCiAJU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRTdHJpbmcuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNm
b3JtTGlzdC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVFbGVtZW50LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA4OTE4NykK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNTcwNiw2
ICs1NzA2LDggQEAKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oJywK
ICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRBbmdsZS5jcHAnLAogICAgICAgICAgICAgJ3N2
Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAnLAorICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZE51
bWJlci5jcHAnLAorICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwJywKICAgICAg
ICAgICAgICdzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdzdmcvU1ZH
QW5pbWF0ZUVsZW1lbnQuaCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50LmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gODkxODcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMzI5NCw2ICszMjk0LDggQEAg
Y29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWRz0xKSB7CiAgICAgICAgICAgICAgIHN2Zy9TVkdB
bmltYXRlQ29sb3JFbGVtZW50LmNwcCBcCiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRlZEFu
Z2xlLmNwcCBcCiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAgXAorICAg
ICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwIFwKKyAgICAgICAgICAgICAgc3Zn
L1NWR0FuaW1hdGVkVHlwZS5jcHAgXAogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZUVsZW1l
bnQuY3BwIFwKICAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCBc
CiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAgXApJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gODkxODcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTk5Miw2ICs5OTIsOCBAQAogCQk0MzlE
MzM0MzEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzlEMzM0MDEzQTY5MTFDMDBDMjBGNEYg
LyogU1ZHQW5pbWF0ZWRUeXBlLmggKi87IH07CiAJCTQzOUQzMzQ0MTNBNjkxMUMwMEMyMEY0RiAv
KiBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDM5RDMzNDExM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVk
VHlwZUFuaW1hdG9yLmggKi87IH07CiAJCTQzOUQzMzQ1MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdB
bmltYXRvckZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQzOUQzMzQyMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRvckZhY3RvcnkuaCAq
LzsgfTsKKwkJNDNBMEYwQjExM0FDN0Q2RDAwQTVGMEE3IC8qIFNWR0FuaW1hdGVkTnVtYmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzQTBGMEIw
MTNBQzdENkQwMEE1RjBBNyAvKiBTVkdBbmltYXRlZE51bWJlci5jcHAgKi87IH07CisJCTQzQTBG
MEI2MTNBQ0NDRkYwMEE1RjBBNyAvKiBTVkdBbmltYXRlZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNBMEYwQjUxM0FDQ0NGRjAwQTVGMEE3
IC8qIFNWR0FuaW1hdGVkVHlwZS5jcHAgKi87IH07CiAJCTQzQzA5MkJDMTJEOUU0RUUwMEE5ODlD
MyAvKiBSZW5kZXJTVkdGb3JlaWduT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0M0MwOTJCQTEyRDlFNEVFMDBBOTg5QzMgLyogUmVuZGVyU1ZH
Rm9yZWlnbk9iamVjdC5oICovOyB9OwogCQk0NDE1MjkyRTBFMUFFOEEwMDBDNEEyRDAgLyogSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDQxNTI5MkMwRTFBRThBMDAwQzRBMkQwIC8qIEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NDE1MjkyRjBFMUFFOEEwMDBDNEEyRDAgLyogSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDE1MjkyRDBF
MUFFOEEwMDBDNEEyRDAgLyogSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgKi87IH07CkBAIC03
NDU1LDYgKzc0NTcsOCBAQAogCQk0MzlEMzM0MDEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0
ZWRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkVHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzlEMzM0MTEzQTY5MTFDMDBDMjBG
NEYgLyogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDM5RDMzNDIxM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdG9yRmFjdG9yeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRvckZhY3RvcnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDNBMEYwQjAxM0FDN0Q2RDAwQTVGMEE3IC8q
IFNWR0FuaW1hdGVkTnVtYmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNWR0FuaW1hdGVkTnVtYmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDNBMEYwQjUxM0FDQ0NGRjAwQTVGMEE3IC8qIFNWR0FuaW1hdGVkVHlwZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZFR5cGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0M0MwOTJCOTEyRDlFNEVFMDBBOTg5QzMgLyogUmVuZGVy
U1ZHRm9yZWlnbk9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDNDMDkyQkExMkQ5RTRFRTAwQTk4OUMzIC8qIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDE1MjkyQzBFMUFFOEEwMDBDNEEyRDAg
LyogSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNzM1Miw2ICsxNzM1Niw3IEBACiAJCQkJQjIyMjc3RUEwRDAwQkYxRjAwNzFCNzgyIC8q
IFNWR0FuaW1hdGVkTGVuZ3RoLmlkbCAqLywKIAkJCQkwODkwMjFBQzEyNkVGNUU5MDA5MkQ1RUEg
LyogU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmggKi8sCiAJCQkJQjIyMjc3RUIwRDAwQkYxRjAwNzFC
NzgyIC8qIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5pZGwgKi8sCisJCQkJNDNBMEYwQjAxM0FDN0Q2
RDAwQTVGMEE3IC8qIFNWR0FuaW1hdGVkTnVtYmVyLmNwcCAqLywKIAkJCQkwOEIzNUIxMjEyN0I2
QTdDMDA1MzE0REQgLyogU1ZHQW5pbWF0ZWROdW1iZXIuaCAqLywKIAkJCQlCMjIyNzdFQzBEMDBC
RjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWROdW1iZXIuaWRsICovLAogCQkJCTA4QjM1QjE2MTI3
QjZBODgwMDUzMTRERCAvKiBTVkdBbmltYXRlZE51bWJlckxpc3QuaCAqLywKQEAgLTE3MzY0LDYg
KzE3MzY5LDcgQEAKIAkJCQlCMjIyNzdGNjBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRT
dHJpbmcuaWRsICovLAogCQkJCTA4MjUwOTM4MTI4QkQ0RDgwMEUyRUQ4RSAvKiBTVkdBbmltYXRl
ZFRyYW5zZm9ybUxpc3QuaCAqLywKIAkJCQlCMjIyNzdGODBEMDBCRjFGMDA3MUI3ODIgLyogU1ZH
QW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmlkbCAqLywKKwkJCQk0M0EwRjBCNTEzQUNDQ0ZGMDBBNUYw
QTcgLyogU1ZHQW5pbWF0ZWRUeXBlLmNwcCAqLywKIAkJCQk0MzlEMzM0MDEzQTY5MTFDMDBDMjBG
NEYgLyogU1ZHQW5pbWF0ZWRUeXBlLmggKi8sCiAJCQkJNDM5RDMzNDExM0E2OTExQzAwQzIwRjRG
IC8qIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmggKi8sCiAJCQkJQjIyMjc3RjkwRDAwQkYxRjAw
NzFCNzgyIC8qIFNWR0FuaW1hdGVFbGVtZW50LmNwcCAqLywKQEAgLTI1NzMzLDYgKzI1NzM5LDgg
QEAKIAkJCQlCMUFENEU3MzEzQTEyQTQ2MDA4NDZCMjcgLyogQ3VlTG9hZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIxQUQ0RTdCMTNBMTJBNzIwMDg0NkIyNyAvKiBDdWVQYXJzZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDM2MkM3QjkxM0FDNkYxQTAwMzQ0QkVCIC8qIFNWR0FuaW1hdGVk
QW5nbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDNBMEYwQjExM0FDN0Q2RDAwQTVGMEE3IC8q
IFNWR0FuaW1hdGVkTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQzQTBGMEI2MTNBQ0ND
RkYwMEE1RjBBNyAvKiBTVkdBbmltYXRlZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDg5MTg3KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsOCBA
QAogI2luY2x1ZGUgIlNWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkQW5nbGUuY3BwIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmNwcCIKKyNpbmNs
dWRlICJTVkdBbmltYXRlZE51bWJlci5jcHAiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUeXBlLmNw
cCIKICNpbmNsdWRlICJTVkdBbmltYXRlRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZU1vdGlvbkVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50
LmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAkocmV2
aXNpb24gODkxODcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgi
CiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNvbG9yRGlzdGFuY2Uu
aCIKLSNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1l
LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0b3JGYWN0
b3J5LmgiCkBAIC00OCw5ICs0Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNWR0FuaW1hdGVF
bGVtZW50OjpTVkdBbmltYXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdBbmltYXRpb25FbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KQogICAgICwgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUoQW5pbWF0ZWRTdHJpbmcpCi0g
ICAgLCBtX2Zyb21OdW1iZXIoMCkKLSAgICAsIG1fdG9OdW1iZXIoMCkKLSAgICAsIG1fYW5pbWF0
ZWROdW1iZXIobnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpKQogICAgICwgbV9hbmlt
YXRlZFBhdGhQb2ludGVyKDApCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFu
aW1hdGVUYWcpIHx8IGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnNldFRhZykgfHwgaGFzVGFnTmFtZShT
VkdOYW1lczo6YW5pbWF0ZUNvbG9yVGFnKSk7CkBAIC0xNjksNDAgKzE2NSw2IEBAIHZvaWQgU1ZH
QW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGUKICAgICBpZiAocmVzdWx0cy0+bV9hbmlt
YXRlZEF0dHJpYnV0ZVR5cGUgPT0gQW5pbWF0ZWRTdHJpbmcgJiYgbV9hbmltYXRlZEF0dHJpYnV0
ZVR5cGUgIT0gQW5pbWF0ZWRTdHJpbmcpCiAgICAgICAgIHJldHVybjsKICAgICBzd2l0Y2ggKG1f
YW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKSB7Ci0gICAgY2FzZSBBbmltYXRlZE51bWJlcjogewotICAg
ICAgICAvLyBUbyBhbmltYXRpb24gdXNlcyBjb250cmlidXRpb25zIGZyb20gdGhlIGxvd2VyIHBy
aW9yaXR5IGFuaW1hdGlvbnMgYXMgdGhlIGJhc2UgdmFsdWUuCi0gICAgICAgIGlmIChhbmltYXRp
b25Nb2RlID09IFRvQW5pbWF0aW9uKQotICAgICAgICAgICAgbV9mcm9tTnVtYmVyID0gcmVzdWx0
cy0+bV9hbmltYXRlZE51bWJlcjsKLSAgICAgICAgCi0gICAgICAgIC8vIFJlcGxhY2UgJ2N1cnJl
bnRDb2xvcicgLyAnaW5oZXJpdCcgYnkgdGhlaXIgY29tcHV0ZWQgcHJvcGVydHkgdmFsdWVzLgot
ICAgICAgICBpZiAobV9mcm9tUHJvcGVydHlWYWx1ZVR5cGUgPT0gSW5oZXJpdFZhbHVlKSB7Ci0g
ICAgICAgICAgICBTdHJpbmcgZnJvbU51bWJlclN0cmluZzsKLSAgICAgICAgICAgIGFkanVzdEZv
ckluaGVyaXRhbmNlKHRhcmdldEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUoKSwgZnJvbU51bWJlclN0
cmluZyk7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlTnVtYmVyRnJvbVN0cmluZyhmcm9tTnVtYmVy
U3RyaW5nLCBtX2Zyb21OdW1iZXIsIGZhbHNlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZSA9PSBJbmhlcml0VmFs
dWUpIHsKLSAgICAgICAgICAgIFN0cmluZyB0b051bWJlclN0cmluZzsKLSAgICAgICAgICAgIGFk
anVzdEZvckluaGVyaXRhbmNlKHRhcmdldEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUoKSwgdG9OdW1i
ZXJTdHJpbmcpOwotICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlckZyb21TdHJpbmcodG9OdW1i
ZXJTdHJpbmcsIG1fdG9OdW1iZXIsIGZhbHNlKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBmbG9hdCBudW1iZXI7Ci0gICAgICAgIGlmIChjYWxjTW9kZSgp
ID09IENhbGNNb2RlRGlzY3JldGUpCi0gICAgICAgICAgICBudW1iZXIgPSBpc0luRmlyc3RIYWxm
T2ZBbmltYXRpb24gPyBtX2Zyb21OdW1iZXIgOiBtX3RvTnVtYmVyOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBudW1iZXIgPSAobV90b051bWJlciAtIG1fZnJvbU51bWJlcikgKiBwZXJjZW50
YWdlICsgbV9mcm9tTnVtYmVyOwotCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBjb3Jy
ZWN0IGZvciB2YWx1ZXMgYW5pbWF0aW9uLgotICAgICAgICBpZiAoaXNBY2N1bXVsYXRlZCgpICYm
IHJlcGVhdCkKLSAgICAgICAgICAgIG51bWJlciArPSBtX3RvTnVtYmVyICogcmVwZWF0OwotICAg
ICAgICBpZiAoaXNBZGRpdGl2ZSgpICYmIGFuaW1hdGlvbk1vZGUgIT0gVG9BbmltYXRpb24pCi0g
ICAgICAgICAgICByZXN1bHRzLT5tX2FuaW1hdGVkTnVtYmVyICs9IG51bWJlcjsKLSAgICAgICAg
ZWxzZSAKLSAgICAgICAgICAgIHJlc3VsdHMtPm1fYW5pbWF0ZWROdW1iZXIgPSBudW1iZXI7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9IAogICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjogewogICAgICAg
ICBpZiAoYW5pbWF0aW9uTW9kZSA9PSBUb0FuaW1hdGlvbikKICAgICAgICAgICAgIG1fZnJvbUNv
bG9yID0gcmVzdWx0cy0+bV9hbmltYXRlZENvbG9yOwpAQCAtMjg3LDcgKzI0OSw4IEBAIHZvaWQg
U1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGUKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6Ci0gICAgY2FzZSBBbmltYXRlZExlbmd0aDogewor
ICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6CisgICAgY2FzZSBBbmltYXRlZE51bWJlcjogewogICAg
ICAgICBBU1NFUlQobV9hbmltYXRvcik7CiAgICAgICAgIEFTU0VSVChyZXN1bHRzLT5tX2FuaW1h
dGVkVHlwZSk7CiAgICAgICAgIC8vIFRhcmdldCBlbGVtZW50IG1pZ2h0IGhhdmUgY2hhbmdlZC4K
QEAgLTM1NywxNCArMzIwLDYgQEAgYm9vbCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJv
bUFuZAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAg
ICBjYXNlIEFuaW1hdGVkTnVtYmVyOiB7Ci0gICAgICAgIGlmIChwYXJzZU51bWJlckZyb21TdHJp
bmcodG9TdHJpbmcsIG1fdG9OdW1iZXIsIGZhbHNlKSkgewotICAgICAgICAgICAgLy8gRm9yIHRv
LWFuaW1hdGlvbnMgdGhlIGZyb20gbnVtYmVyIGlzIGNhbGN1bGF0ZWQgbGF0ZXIKLSAgICAgICAg
ICAgIGlmIChhbmltYXRpb25Nb2RlKCkgPT0gVG9BbmltYXRpb24gfHwgcGFyc2VOdW1iZXJGcm9t
U3RyaW5nKGZyb21TdHJpbmcsIG1fZnJvbU51bWJlciwgZmFsc2UpKQotICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KICAgICBjYXNl
IEFuaW1hdGVkUGF0aDogewogICAgICAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSogZmFjdG9yeSA9
IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7CiAgICAgICAgIGlmIChmYWN0b3J5LT5idWls
ZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVN0cmluZyh0b1N0cmluZywgbV90b1BhdGgsIFVuYWx0ZXJl
ZFBhcnNpbmcpKSB7CkBAIC0zODcsNiArMzQyLDcgQEAgYm9vbCBTVkdBbmltYXRlRWxlbWVudDo6
Y2FsY3VsYXRlRnJvbUFuZAogICAgIH0KICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgY2Fz
ZSBBbmltYXRlZExlbmd0aDoKKyAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgogICAgICAgICBlbnN1
cmVBbmltYXRvcigpLT5jYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMobV9mcm9tVHlwZSwgbV90b1R5
cGUsIGZyb21TdHJpbmcsIHRvU3RyaW5nKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVm
YXVsdDoKQEAgLTQyOCwxNSArMzg0LDExIEBAIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1
bGF0ZUZyb21BbmQKICAgICB9CiAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgogICAgIGNhc2UgQW5p
bWF0ZWRMZW5ndGg6CisgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKICAgICAgICAgZW5zdXJlQW5p
bWF0b3IoKS0+Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKG1fZnJvbVR5cGUsIG1fdG9UeXBlLCBm
cm9tU3RyaW5nLCBieVN0cmluZyk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6
Ci0gICAgICAgIG1fZnJvbU51bWJlciA9IDA7Ci0gICAgICAgIGlmICghZnJvbVN0cmluZy5pc0Vt
cHR5KCkgJiYgIXBhcnNlTnVtYmVyRnJvbVN0cmluZyhmcm9tU3RyaW5nLCBtX2Zyb21OdW1iZXIs
IGZhbHNlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFwYXJzZU51
bWJlckZyb21TdHJpbmcoYnlTdHJpbmcsIG1fdG9OdW1iZXIsIGZhbHNlKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgbV90b051bWJlciArPSBtX2Zyb21OdW1iZXI7CisgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTQ1NiwxNCArNDA4LDYg
QEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6cmVzZXRUb0Jhc2VWYWx1ZQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQW5pbWF0ZWROdW1i
ZXI6Ci0gICAgICAgIGlmIChiYXNlU3RyaW5nLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgbV9h
bmltYXRlZE51bWJlciA9IDA7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKHBhcnNlTnVtYmVyRnJvbVN0cmluZyhiYXNlU3RyaW5nLCBtX2FuaW1hdGVkTnVtYmVy
LCBmYWxzZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
QW5pbWF0ZWRQYXRoOiB7CiAgICAgICAgIG1fYW5pbWF0ZWRQYXRoLmNsZWFyKCk7CiAgICAgICAg
IFNWR1BhdGhQYXJzZXJGYWN0b3J5KiBmYWN0b3J5ID0gU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNl
bGYoKTsKQEAgLTQ3NSw3ICs0MTksOCBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRv
QmFzZVZhbHVlCiAgICAgICAgIG1fYW5pbWF0ZWRQb2ludHMuY2xlYXIoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKLSAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOiB7
CisgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKKyAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOiB7CiAg
ICAgICAgIGlmICghbV9hbmltYXRlZFR5cGUpCiAgICAgICAgICAgICBtX2FuaW1hdGVkVHlwZSA9
IGVuc3VyZUFuaW1hdG9yKCktPmNvbnN0cnVjdEZyb21TdHJpbmcoYmFzZVN0cmluZyk7CiAgICAg
ICAgIGVsc2UKQEAgLTQ5NSw5ICs0NDAsNiBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjphcHBs
eVJlc3VsdHNUb1RhCiAgICAgY2FzZSBBbmltYXRlZENvbG9yOgogICAgICAgICB2YWx1ZVRvQXBw
bHkgPSBtX2FuaW1hdGVkQ29sb3Iuc2VyaWFsaXplZCgpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEFuaW1hdGVkTnVtYmVyOgotICAgICAgICB2YWx1ZVRvQXBwbHkgPSBTdHJpbmc6Om51bWJl
cihtX2FuaW1hdGVkTnVtYmVyKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBbmltYXRlZFBh
dGg6IHsKICAgICAgICAgaWYgKCFtX2FuaW1hdGVkUGF0aFBvaW50ZXIgfHwgbV9hbmltYXRlZFBh
dGhQb2ludGVyLT5pc0VtcHR5KCkpCiAgICAgICAgICAgICB2YWx1ZVRvQXBwbHkgPSBtX2FuaW1h
dGVkU3RyaW5nOwpAQCAtNTE2LDYgKzQ1OCw3IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmFw
cGx5UmVzdWx0c1RvVGEKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgog
ICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6CisgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKICAgICAg
ICAgdmFsdWVUb0FwcGx5ID0gbV9hbmltYXRlZFR5cGUtPnZhbHVlQXNTdHJpbmcoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTUyNiwyMCArNDY5LDEzIEBAIHZvaWQgU1ZHQW5p
bWF0ZUVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGEKICAgICAKIGZsb2F0IFNWR0FuaW1hdGVFbGVt
ZW50OjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0
cmluZyYgdG9TdHJpbmcpCiB7CisgICAgLy8gRklYTUU6IEEgcmV0dXJuIHZhbHVlIG9mIGZsb2F0
IGlzIG5vdCBlbm91Z2ggdG8gc3VwcG9ydCBwYWNlZCBhbmltYXRpb25zIG9uIGxpc3RzLgogICAg
IFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CiAgICAg
aWYgKCF0YXJnZXRFbGVtZW50KQogICAgICAgICByZXR1cm4gLTE7CiAgICAgbV9hbmltYXRlZEF0
dHJpYnV0ZVR5cGUgPSBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVu
dCk7Ci0gICAgaWYgKG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlID09IEFuaW1hdGVkTnVtYmVyKSB7
Ci0gICAgICAgIGZsb2F0IGZyb207Ci0gICAgICAgIGZsb2F0IHRvOwotICAgICAgICBpZiAoIXBh
cnNlTnVtYmVyRnJvbVN0cmluZyhmcm9tU3RyaW5nLCBmcm9tLCBmYWxzZSkpCi0gICAgICAgICAg
ICByZXR1cm4gLTE7Ci0gICAgICAgIGlmICghcGFyc2VOdW1iZXJGcm9tU3RyaW5nKHRvU3RyaW5n
LCB0bywgZmFsc2UpKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICByZXR1cm4gZmFi
cyh0byAtIGZyb20pOwotICAgIH0KLSAgICBpZiAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgPT0g
QW5pbWF0ZWRDb2xvcikgeworICAgIHN3aXRjaCAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUpIHsK
KyAgICBjYXNlIEFuaW1hdGVkQ29sb3I6IHsKICAgICAgICAgQ29sb3IgZnJvbSA9IFNWR0NvbG9y
Ojpjb2xvckZyb21SR0JDb2xvclN0cmluZyhmcm9tU3RyaW5nKTsKICAgICAgICAgaWYgKCFmcm9t
LmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTU0OCw4ICs0ODQsMTMgQEAg
ZmxvYXQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZURpc3RhbgogICAgICAgICAgICAgcmV0
dXJuIC0xOwogICAgICAgICByZXR1cm4gQ29sb3JEaXN0YW5jZShmcm9tLCB0bykuZGlzdGFuY2Uo
KTsKICAgICB9Ci0gICAgaWYgKG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlID09IEFuaW1hdGVkQW5n
bGUgfHwgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgPT0gQW5pbWF0ZWRMZW5ndGgpCisgICAgY2Fz
ZSBBbmltYXRlZEFuZ2xlOgorICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6CisgICAgY2FzZSBBbmlt
YXRlZE51bWJlcjoKICAgICAgICAgcmV0dXJuIGVuc3VyZUFuaW1hdG9yKCktPmNhbGN1bGF0ZURp
c3RhbmNlKHRoaXMsIGZyb21TdHJpbmcsIHRvU3RyaW5nKTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBicmVhazsKKyAgICB9CiAgICAgcmV0dXJuIC0xOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAkocmV2aXNpb24gODkxODcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsOSArNzIsNiBA
QCBwcml2YXRlOgogCiAgICAgQW5pbWF0ZWRQcm9wZXJ0eVZhbHVlVHlwZSBtX2Zyb21Qcm9wZXJ0
eVZhbHVlVHlwZTsKICAgICBBbmltYXRlZFByb3BlcnR5VmFsdWVUeXBlIG1fdG9Qcm9wZXJ0eVZh
bHVlVHlwZTsKLSAgICBmbG9hdCBtX2Zyb21OdW1iZXI7Ci0gICAgZmxvYXQgbV90b051bWJlcjsK
LSAgICBmbG9hdCBtX2FuaW1hdGVkTnVtYmVyOwogICAgIENvbG9yIG1fZnJvbUNvbG9yOwogICAg
IENvbG9yIG1fdG9Db2xvcjsKICAgICBDb2xvciBtX2FuaW1hdGVkQ29sb3I7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0
ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19BTklNQVRJT04pCisjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWROdW1iZXIuaCIKKworI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgorCit1c2luZyBu
YW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NWR0FuaW1hdGVkTnVtYmVy
QW5pbWF0b3I6OlNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IoU1ZHRWxlbWVudCogY29udGV4dEVs
ZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmKQorICAgIDogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0
b3IoQW5pbWF0ZWROdW1iZXIsIGNvbnRleHRFbGVtZW50KQoreworfQorCitQYXNzT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0
cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBhbmltdGVkVHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTnVtYmVyKG5ldyBmbG9hdCk7
CisgICAgZmxvYXQmIGFuaW1hdGVkTnVtYmVyID0gYW5pbXRlZFR5cGUtPm51bWJlcigpOworICAg
IGlmICghcGFyc2VOdW1iZXJGcm9tU3RyaW5nKHN0cmluZywgYW5pbWF0ZWROdW1iZXIpKQorICAg
ICAgICBhbmltYXRlZE51bWJlciA9IDA7CisgICAgcmV0dXJuIGFuaW10ZWRUeXBlLnJlbGVhc2Uo
KTsKK30KKwordm9pZCBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5k
VG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRl
ZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3Ry
aW5nKQoreworICAgIGZyb20gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGZyb21TdHJpbmcpOworICAg
IHRvID0gY29uc3RydWN0RnJvbVN0cmluZyh0b1N0cmluZyk7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0
ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdBbmlt
YXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIGNvbnN0IFN0cmlu
ZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZykKK3sKKyAgICBBU1NFUlQobV9j
b250ZXh0RWxlbWVudCk7CisgICAgCisgICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJv
bVN0cmluZyk7CisgICAgdG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGJ5U3RyaW5nKTsKKworICAg
IHRvLT5udW1iZXIoKSArPSBmcm9tLT5udW1iZXIoKTsKK30KKwordm9pZCBTVkdBbmltYXRlZE51
bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKFNWR1NNSUxFbGVtZW50KiBzbWls
RWxlbWVudCwgZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZnJvbVByb3BlcnR5SW5oZXJpdHMsIGJv
b2wgdG9Qcm9wZXJ0eUluaGVyaXRzKQoreworICAgIEFTU0VSVChzbWlsRWxlbWVudCk7CisgICAg
QVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOworICAgIFNWR0FuaW1hdGVFbGVtZW50KiBhbmltYXRp
b25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZUVsZW1lbnQqPihzbWlsRWxlbWVudCk7
CisgICAgCisgICAgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlID0gYW5pbWF0aW9uRWxlbWVu
dC0+YW5pbWF0aW9uTW9kZSgpOworICAgIC8vIFRvIGFuaW1hdGlvbiB1c2VzIGNvbnRyaWJ1dGlv
bnMgZnJvbSB0aGUgbG93ZXIgcHJpb3JpdHkgYW5pbWF0aW9ucyBhcyB0aGUgYmFzZSB2YWx1ZS4K
KyAgICBmbG9hdCYgYW5pbWF0ZWROdW1iZXIgPSBhbmltYXRlZC0+bnVtYmVyKCk7CisgICAgaWYg
KGFuaW1hdGlvbk1vZGUgPT0gVG9BbmltYXRpb24pCisgICAgICAgIGZyb20tPm51bWJlcigpID0g
YW5pbWF0ZWROdW1iZXI7CisgICAgCisgICAgLy8gUmVwbGFjZSAnaW5oZXJpdCcgYnkgdGhlaXIg
Y29tcHV0ZWQgcHJvcGVydHkgdmFsdWVzLgorICAgIGZsb2F0JiBmcm9tTnVtYmVyID0gZnJvbS0+
bnVtYmVyKCk7CisgICAgZmxvYXQmIHRvTnVtYmVyID0gdG8tPm51bWJlcigpOworICAgIGlmIChm
cm9tUHJvcGVydHlJbmhlcml0cykgeworICAgICAgICBTdHJpbmcgZnJvbU51bWJlclN0cmluZzsK
KyAgICAgICAgYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0Rm9ySW5oZXJpdGFuY2UobV9jb250ZXh0
RWxlbWVudCwgYW5pbWF0aW9uRWxlbWVudC0+YXR0cmlidXRlTmFtZSgpLCBmcm9tTnVtYmVyU3Ry
aW5nKTsKKyAgICAgICAgcGFyc2VOdW1iZXJGcm9tU3RyaW5nKGZyb21OdW1iZXJTdHJpbmcsIGZy
b21OdW1iZXIpOyAKKyAgICB9CisgICAgaWYgKHRvUHJvcGVydHlJbmhlcml0cykgeworICAgICAg
ICBTdHJpbmcgdG9OdW1iZXJTdHJpbmc7CisgICAgICAgIGFuaW1hdGlvbkVsZW1lbnQtPmFkanVz
dEZvckluaGVyaXRhbmNlKG1fY29udGV4dEVsZW1lbnQsIGFuaW1hdGlvbkVsZW1lbnQtPmF0dHJp
YnV0ZU5hbWUoKSwgdG9OdW1iZXJTdHJpbmcpOworICAgICAgICBwYXJzZU51bWJlckZyb21TdHJp
bmcodG9OdW1iZXJTdHJpbmcsIHRvTnVtYmVyKTsgCisgICAgfQorCisgICAgZmxvYXQgbnVtYmVy
OworICAgIGlmIChhbmltYXRpb25FbGVtZW50LT5jYWxjTW9kZSgpID09IENhbGNNb2RlRGlzY3Jl
dGUpCisgICAgICAgIG51bWJlciA9IHBlcmNlbnRhZ2UgPCAwLjVmID8gZnJvbU51bWJlciA6IHRv
TnVtYmVyOworICAgIGVsc2UKKyAgICAgICAgbnVtYmVyID0gKHRvTnVtYmVyIC0gZnJvbU51bWJl
cikgKiBwZXJjZW50YWdlICsgZnJvbU51bWJlcjsKKyAgICAKKyAgICAvLyBGSVhNRTogVGhpcyBp
cyBub3QgY29ycmVjdCBmb3IgdmFsdWVzIGFuaW1hdGlvbi4gUmlnaHQgbm93IHdlIHRyYW5zZm9y
bSB2YWx1ZXMtYW5pbWF0aW9uIHRvIG11bHRpcGxlIGZyb20tdG8tYW5pbWF0aW9ucyBhbmQKKyAg
ICAvLyBhY2N1bXVsYXRlIGV2ZXJ5IHNpbmdsZSB2YWx1ZSB0byB0aGUgcHJldmlvdXMgb25lLiBC
dXQgYWNjdW11bGF0aW9uIHNob3VsZCBqdXN0IHRha2UgaW50byBhY2NvdW50IGFmdGVyIGEgY29t
cGxldGUgY3ljbGUKKyAgICAvLyBvZiB2YWx1ZXMtYW5pbWFpdG9uLiBTZWUgZXhhbXBsZSBhdDog
aHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMtc21pbC1hbmltYXRpb24tMjAwMTA5MDQvI1Jl
cGVhdGluZ0FuaW0KKyAgICBpZiAoYW5pbWF0aW9uRWxlbWVudC0+aXNBY2N1bXVsYXRlZCgpICYm
IHJlcGVhdENvdW50KQorICAgICAgICBudW1iZXIgKz0gdG9OdW1iZXIgKiByZXBlYXRDb3VudDsK
KyAgICBpZiAoYW5pbWF0aW9uRWxlbWVudC0+aXNBZGRpdGl2ZSgpICYmIGFuaW1hdGlvbk1vZGUg
IT0gVG9BbmltYXRpb24pCisgICAgICAgIGFuaW1hdGVkTnVtYmVyICs9IG51bWJlcjsKKyAgICBl
bHNlCisgICAgICAgIGFuaW1hdGVkTnVtYmVyID0gbnVtYmVyOworfQorCitmbG9hdCBTVkdBbmlt
YXRlZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZShTVkdTTUlMRWxlbWVudCosIGNv
bnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKK3sKKyAgICBB
U1NFUlQobV9jb250ZXh0RWxlbWVudCk7CisgICAgZmxvYXQgZnJvbSA9IDA7CisgICAgZmxvYXQg
dG8gPSAwOworICAgIHBhcnNlTnVtYmVyRnJvbVN0cmluZyhmcm9tU3RyaW5nLCBmcm9tKTsKKyAg
ICBwYXJzZU51bWJlckZyb21TdHJpbmcodG9TdHJpbmcsIHRvKTsKKyAgICByZXR1cm4gZmFic2Yo
dG8gLSBmcm9tKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNW
R19BTklNQVRJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaAko
cmV2aXNpb24gODkxODYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2RlZmluZSBTVkdBbmltYXRlZE51
bWJlcl9oCiAKICNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eU1hY3Jvcy5oIgogI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmLmgiCiAKQEAgLTM4LDcgKzM5LDI0IEBAIERFRklO
RV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUEKICNkZWZpbmUgREVGSU5FX0FOSU1B
VEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZH
RE9NQXR0cmlidXRlSWRlbnRpZmllciwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAog
REVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBTVkdET01B
dHRyaWJ1dGVJZGVudGlmaWVyLCBTVkdBbmltYXRlZE51bWJlciwgZmxvYXQsIFVwcGVyUHJvcGVy
dHksIExvd2VyUHJvcGVydHkpCiAKKyNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKK2NsYXNzIFNW
R0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3Ig
eworICAgIAorcHVibGljOgorICAgIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IoU1ZHRWxlbWVu
dCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZE51bWJl
ckFuaW1hdG9yKCkgeyB9CisgICAgCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICAKKyAgICB2aXJ0
dWFsIHZvaWQgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+
JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJp
bmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOworICAgIHZpcnR1YWwgdm9p
ZCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21W
YWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJv
bVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1
bGF0ZUFuaW1hdGVkVmFsdWUoU1ZHU01JTEVsZW1lbnQqLCBmbG9hdCBwZXJjZW50YWdlLCB1bnNp
Z25lZCByZXBlYXRDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiYgdG9WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkVmFsdWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmcm9tUHJvcGVydHlJ
bmhlcml0cywgYm9vbCB0b1Byb3BlcnR5SW5oZXJpdHMpOworICAgIHZpcnR1YWwgZmxvYXQgY2Fs
Y3VsYXRlRGlzdGFuY2UoU1ZHU01JTEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcs
IGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOworfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAor
I2VuZGlmIC8vIEVOQUJMRShTVkdfQU5JTUFUSU9OKQogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBN
b3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKKyNpbmNsdWRl
ICJTVkdBbmltYXRlZFR5cGUuaCIKKworI2luY2x1ZGUgIlNWR0FuZ2xlLmgiCisjaW5jbHVkZSAi
U1ZHTGVuZ3RoLmgiCisjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworU1ZHQW5pbWF0ZWRUeXBlOjpTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRB
dHRyaWJ1dGVUeXBlIHR5cGUpCisgICAgOiBtX3R5cGUodHlwZSkKK3sKK30KKworU1ZHQW5pbWF0
ZWRUeXBlOjp+U1ZHQW5pbWF0ZWRUeXBlKCkKK3sKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAg
IGNhc2UgQW5pbWF0ZWRBbmdsZToKKyAgICAgICAgZGVsZXRlIG1fZGF0YS5hbmdsZTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKKyAgICAgICAgZGVsZXRlIG1fZGF0
YS5sZW5ndGg7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CisgICAg
ICAgIGRlbGV0ZSBtX2RhdGEubnVtYmVyOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQor
CitQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVBbmds
ZShTVkdBbmdsZSogYW5nbGUpCit7CisgICAgQVNTRVJUKGFuZ2xlKTsKKyAgICBPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBhbmltYXRlZFR5cGUgPSBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRUeXBl
KEFuaW1hdGVkQW5nbGUpKTsKKyAgICBhbmltYXRlZFR5cGUtPm1fZGF0YS5hbmdsZSA9IGFuZ2xl
OworICAgIHJldHVybiBhbmltYXRlZFR5cGUucmVsZWFzZSgpOworfQorCitQYXNzT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVMZW5ndGgoU1ZHTGVuZ3RoKiBs
ZW5ndGgpCit7CisgICAgQVNTRVJUKGxlbmd0aCk7CisgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4gYW5pbWF0ZWRUeXBlID0gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkVHlwZShBbmltYXRlZExl
bmd0aCkpOworICAgIGFuaW1hdGVkVHlwZS0+bV9kYXRhLmxlbmd0aCA9IGxlbmd0aDsKKyAgICBy
ZXR1cm4gYW5pbWF0ZWRUeXBlLnJlbGVhc2UoKTsKK30KKworUGFzc093blB0cjxTVkdBbmltYXRl
ZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTnVtYmVyKGZsb2F0KiBudW1iZXIpCit7Cisg
ICAgQVNTRVJUKG51bWJlcik7CisgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0ZWRU
eXBlID0gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkVHlwZShBbmltYXRlZE51bWJlcikpOworICAg
IGFuaW1hdGVkVHlwZS0+bV9kYXRhLm51bWJlciA9IG51bWJlcjsKKyAgICByZXR1cm4gYW5pbWF0
ZWRUeXBlLnJlbGVhc2UoKTsKK30KKworU1ZHQW5nbGUmIFNWR0FuaW1hdGVkVHlwZTo6YW5nbGUo
KQoreworICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRBbmdsZSk7CisgICAgcmV0dXJuICpt
X2RhdGEuYW5nbGU7Cit9CisKK1NWR0xlbmd0aCYgU1ZHQW5pbWF0ZWRUeXBlOjpsZW5ndGgoKQor
eworICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRMZW5ndGgpOworICAgIHJldHVybiAqbV9k
YXRhLmxlbmd0aDsKK30KKworZmxvYXQmIFNWR0FuaW1hdGVkVHlwZTo6bnVtYmVyKCkKK3sKKyAg
ICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkTnVtYmVyKTsKKyAgICByZXR1cm4gKm1fZGF0YS5u
dW1iZXI7Cit9CisKK1N0cmluZyBTVkdBbmltYXRlZFR5cGU6OnZhbHVlQXNTdHJpbmcoKQorewor
ICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgorICAgICAgICBB
U1NFUlQobV9kYXRhLmFuZ2xlKTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YS5hbmdsZS0+dmFsdWVB
c1N0cmluZygpOworICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6CisgICAgICAgIEFTU0VSVChtX2Rh
dGEubGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YS5sZW5ndGgtPnZhbHVlQXNTdHJpbmco
KTsKKyAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgorICAgICAgICBBU1NFUlQobV9kYXRhLm51bWJl
cik7CisgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcigqbV9kYXRhLm51bWJlcik7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworYm9vbCBTVkdBbmltYXRlZFR5cGU6OnNldFZh
bHVlQXNTdHJpbmcoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCit7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgc3dpdGNoIChtX3R5cGUp
IHsKKyAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CisgICAgICAgIEFTU0VSVChtX2RhdGEuYW5nbGUp
OworICAgICAgICBtX2RhdGEuYW5nbGUtPnNldFZhbHVlQXNTdHJpbmcodmFsdWUsIGVjKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKKyAgICAgICAgQVNTRVJUKG1f
ZGF0YS5sZW5ndGgpOworICAgICAgICBtX2RhdGEubGVuZ3RoLT5zZXRWYWx1ZUFzU3RyaW5nKHZh
bHVlLCBTVkdMZW5ndGg6Omxlbmd0aE1vZGVGb3JBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRy
TmFtZSksIGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKKyAg
ICAgICAgQVNTRVJUKG1fZGF0YS5udW1iZXIpOworICAgICAgICBwYXJzZU51bWJlckZyb21TdHJp
bmcodmFsdWUsICptX2RhdGEubnVtYmVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICByZXR1cm4gIWVjOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRUeXBlLmgJKHJldmlzaW9uIDg5MTg3KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxMDUgKzIxLDMzIEBACiAj
ZGVmaW5lIFNWR0FuaW1hdGVkVHlwZV9oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZH
X0FOSU1BVElPTikKLSNpbmNsdWRlICJTVkdBbmdsZS5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQu
aCIKLSNpbmNsdWRlICJTVkdMZW5ndGguaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBTVkdBbmdsZTsKK2NsYXNzIFNWR0xlbmd0aDsKKwogY2xhc3MgU1ZHQW5pbWF0ZWRUeXBlIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093
blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZShBbmltYXRlZEF0dHJpYnV0ZVR5cGUgdHlwZSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRUeXBlKHR5cGUp
KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0
ZUFuZ2xlKFNWR0FuZ2xlKiBhbmdsZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChhbmdsZSk7Ci0g
ICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IGFuaW1hdGVkVHlwZSA9IGNyZWF0ZShBbmlt
YXRlZEFuZ2xlKTsKLSAgICAgICAgYW5pbWF0ZWRUeXBlLT5tX2RhdGEuYW5nbGUgPSBhbmdsZTsK
LSAgICAgICAgcmV0dXJuIGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7Ci0gICAgfQotCi0gICAgc3Rh
dGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVMZW5ndGgoU1ZHTGVuZ3RoKiBs
ZW5ndGgpCi0gICAgewotICAgICAgICBBU1NFUlQobGVuZ3RoKTsKLSAgICAgICAgT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4gYW5pbWF0ZWRUeXBlID0gY3JlYXRlKEFuaW1hdGVkTGVuZ3RoKTsKLSAg
ICAgICAgYW5pbWF0ZWRUeXBlLT5tX2RhdGEubGVuZ3RoID0gbGVuZ3RoOwotICAgICAgICByZXR1
cm4gYW5pbWF0ZWRUeXBlLnJlbGVhc2UoKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5TVkdBbmlt
YXRlZFR5cGUoKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAgY2Fz
ZSBBbmltYXRlZEFuZ2xlOgotICAgICAgICAgICAgZGVsZXRlIG1fZGF0YS5hbmdsZTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgotICAgICAgICAgICAg
ZGVsZXRlIG1fZGF0YS5sZW5ndGg7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICB9CisgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRUeXBlKCk7CisKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUFuZ2xlKFNWR0FuZ2xl
Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVMZW5ndGgo
U1ZHTGVuZ3RoKik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVh
dGVOdW1iZXIoZmxvYXQqKTsKICAgICAKICAgICBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCi0gICAgU1ZHQW5nbGUmIGFuZ2xlKCkKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRBbmdsZSk7Ci0gICAgICAgIHJldHVy
biAqbV9kYXRhLmFuZ2xlOwotICAgIH0KLQotICAgIFNWR0xlbmd0aCYgbGVuZ3RoKCkKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRMZW5ndGgpOwotICAgICAgICByZXR1
cm4gKm1fZGF0YS5sZW5ndGg7Ci0gICAgfQotICAgIAotICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5n
KCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgICAgIGNhc2UgQW5pbWF0
ZWRBbmdsZToKLSAgICAgICAgICAgIEFTU0VSVChtX2RhdGEuYW5nbGUpOwotICAgICAgICAgICAg
cmV0dXJuIG1fZGF0YS5hbmdsZS0+dmFsdWVBc1N0cmluZygpOwotICAgICAgICBjYXNlIEFuaW1h
dGVkTGVuZ3RoOgotICAgICAgICAgICAgQVNTRVJUKG1fZGF0YS5sZW5ndGgpOwotICAgICAgICAg
ICAgcmV0dXJuIG1fZGF0YS5sZW5ndGgtPnZhbHVlQXNTdHJpbmcoKTsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgfQotICAgIAotICAgIGJvb2wg
c2V0VmFsdWVBc1N0cmluZyhjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAg
ICBzd2l0Y2ggKG1fdHlwZSkgewotICAgICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6Ci0gICAgICAg
ICAgICBBU1NFUlQobV9kYXRhLmFuZ2xlKTsKLSAgICAgICAgICAgIG1fZGF0YS5hbmdsZS0+c2V0
VmFsdWVBc1N0cmluZyh2YWx1ZSwgZWMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgQW5pbWF0ZWRMZW5ndGg6Ci0gICAgICAgICAgICBBU1NFUlQobV9kYXRhLmxlbmd0aCk7Ci0g
ICAgICAgICAgICBtX2RhdGEubGVuZ3RoLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlLCBTVkdMZW5n
dGg6Omxlbmd0aE1vZGVGb3JBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSksIGVjKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gIWVjOwotICAgIH0KKyAgICBTVkdBbmdsZSYgYW5nbGUoKTsKKyAgICBTVkdMZW5ndGgm
IGxlbmd0aCgpOworICAgIGZsb2F0JiBudW1iZXIoKTsKKworICAgIFN0cmluZyB2YWx1ZUFzU3Ry
aW5nKCk7CisgICAgYm9vbCBzZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBTdHJpbmcmKTsKICAgICAKIHByaXZhdGU6Ci0gICAgU1ZHQW5pbWF0ZWRUeXBlKEFuaW1h
dGVkQXR0cmlidXRlVHlwZSB0eXBlKQotICAgICAgICA6IG1fdHlwZSh0eXBlKQotICAgIHsKLSAg
ICB9CisgICAgU1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVkQXR0cmlidXRlVHlwZSk7CiAgICAgCiAg
ICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIG1fdHlwZTsKICAgICAKQEAgLTEzMiw2ICs2MCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIC8vIEZJWE1FOiBNb3JlIFNWRyBwcmltaXRpdmUgdHlwZXMgbmVl
ZCB0byBiZSBhZGRlZCBzdGVwIGJ5IHN0ZXAuCiAgICAgICAgIFNWR0FuZ2xlKiBhbmdsZTsKICAg
ICAgICAgU1ZHTGVuZ3RoKiBsZW5ndGg7CisgICAgICAgIGZsb2F0KiBudW1iZXI7CiAgICAgfSBt
X2RhdGE7CiB9OwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFj
dG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3Rv
cnkuaAkocmV2aXNpb24gODkxODcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JG
YWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKICNpZiBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKICNpbmNsdWRlICJTVkdBbmltYXRlZEFuZ2xlLmgi
CiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZE51
bWJlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC0zNiw2ICszNyw4IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRBbmdsZUFu
aW1hdG9yKGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lKSk7CiAgICAgICAgIGNhc2UgQW5p
bWF0ZWRMZW5ndGg6CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVk
TGVuZ3RoQW5pbWF0b3IoY29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUpKTsKKyAgICAgICAg
Y2FzZSBBbmltYXRlZE51bWJlcjoKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZH
QW5pbWF0ZWROdW1iZXJBbmltYXRvcihjb250ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSkpOwog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3IoY29u
dGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXJzZXJVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXJzZXJVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiA4OTE4NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsNyArMTUx
LDcgQEAgYm9vbCBwYXJzZU51bWJlckZyb21TdHJpbmcoY29uc3QgU3RyaW5nJgogewogICAgIGNv
bnN0IFVDaGFyKiBwdHIgPSBzdHJpbmcuY2hhcmFjdGVycygpOwogICAgIGNvbnN0IFVDaGFyKiBl
bmQgPSBwdHIgKyBzdHJpbmcubGVuZ3RoKCk7Ci0gICAgcmV0dXJuIGdlbmVyaWNQYXJzZU51bWJl
cihwdHIsIGVuZCwgbnVtYmVyLCBza2lwKTsKKyAgICByZXR1cm4gZ2VuZXJpY1BhcnNlTnVtYmVy
KHB0ciwgZW5kLCBudW1iZXIsIHNraXApICYmIHB0ciA9PSBlbmQ7CiB9CiAKIC8vIG9ubHkgdXNl
ZCB0byBwYXJzZSBsYXJnZUFyY0ZsYWcgYW5kIHN3ZWVwRmxhZyB3aGljaCBtdXN0IGJlIGEgIjAi
IG9yICIxIgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gODkyMDYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNCBAQAorMjAxMS0wNi0xOCAgRGlyayBTY2h1
bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNWR0FuaW1hdG9yRmFjdG9yeSBkb2VzIG5vdCBzdXBwb3J0IFNWR051
bWJlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI5
MzgKKyAgICAgICAgCisgICAgICAgIEFkZGVkIG5ldyB0ZXN0cyB0byBjaGVjayBiZWhhdmlvciBv
biBTVkdOdW1iZXIgYW5pbWF0aW9uLgorCisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvc2NyaXB0
LXRlc3RzL3N2Z251bWJlci1hbmltYXRpb24tMS5qczogQWRkZWQuCisgICAgICAgIChzYW1wbGUx
KToKKyAgICAgICAgKHNhbXBsZTIpOgorICAgICAgICAoc2FtcGxlMyk6CisgICAgICAgIChleGVj
dXRlVGVzdCk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL3N2Z251bWJl
ci1hbmltYXRpb24tMi5qczogQWRkZWQuCisgICAgICAgIChzYW1wbGUxKToKKyAgICAgICAgKHNh
bXBsZTIpOgorICAgICAgICAoc2FtcGxlMyk6CisgICAgICAgIChleGVjdXRlVGVzdCk6CisgICAg
ICAgICogc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL3N2Z251bWJlci1hbmltYXRpb24tMy5q
czogQWRkZWQuCisgICAgICAgIChzYW1wbGUxKToKKyAgICAgICAgKHNhbXBsZTIpOgorICAgICAg
ICAoc2FtcGxlMyk6CisgICAgICAgIChleGVjdXRlVGVzdCk6CisgICAgICAgICogc3ZnL2FuaW1h
dGlvbnMvc3ZnbnVtYmVyLWFuaW1hdGlvbi0xLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVyLWFuaW1hdGlvbi0xLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHN2Zy9hbmltYXRpb25zL3N2Z251bWJlci1hbmltYXRpb24tMi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHN2Zy9hbmltYXRpb25zL3N2Z251bWJlci1hbmltYXRpb24tMi5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9u
LTMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9zdmdudW1i
ZXItYW5pbWF0aW9uLTMuaHRtbDogQWRkZWQuCisKIDIwMTEtMDYtMTggIEFsaWNlIEJveGhhbGwg
IDxhYm94aGFsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxl
aXphY2guCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0
aW9uLTEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRp
b25zL3N2Z251bWJlci1hbmltYXRpb24tMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9uLTEtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACitTVkcgMS4xIGR5bmFtaWMgYW5pbWF0
aW9uIHRlc3RzCisKK1Rlc3QgZm9yIFNWR051bWJlciBhbmltYXRpb24uCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1
ZSgnb3BhY2l0eScpLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikg
aXMgMAorUEFTUyBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ29wYWNpdHknKS5n
ZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDAuNQorUEFTUyBj
b21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ29wYWNpdHknKS5nZXRGbG9hdFZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDEKK1BBU1MgY29tcHV0ZWRTdHlsZS5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKCdvcGFjaXR5JykuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVW
YWx1ZS5DU1NfTlVNQkVSKSBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnbnVt
YmVyLWFuaW1hdGlvbi0xLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1h
dGlvbnMvc3ZnbnVtYmVyLWFuaW1hdGlvbi0xLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9uLTEuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1Rlc3RDYXNlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvU1ZHQW5pbWF0aW9uVGVzdENhc2UuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aDE+U1ZHIDEuMSBkeW5hbWljIGFuaW1hdGlvbiB0
ZXN0czwvaDE+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zdmdudW1iZXItYW5pbWF0aW9uLTEuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1h
dGlvbnMvc3ZnbnVtYmVyLWFuaW1hdGlvbi0yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9uLTItZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVy
LWFuaW1hdGlvbi0yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAor
U1ZHIDEuMSBkeW5hbWljIGFuaW1hdGlvbiB0ZXN0cworCitUZXN0IGZvciBTVkdOdW1iZXIgYW5p
bWF0aW9uIHdpdGggZGlmZmVyZW50IGV4cG9uZW50cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1MgY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdvcGFjaXR5
JykuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSBpcyAwCitQQVNT
IGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnb3BhY2l0eScpLmdldEZsb2F0VmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikgaXMgMC41CitQQVNTIGNvbXB1dGVkU3R5
bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnb3BhY2l0eScpLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0
aXZlVmFsdWUuQ1NTX05VTUJFUikgaXMgMQorUEFTUyBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5
Q1NTVmFsdWUoJ29wYWNpdHknKS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19O
VU1CRVIpIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0
aW9uLTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdu
dW1iZXItYW5pbWF0aW9uLTIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9h
bmltYXRpb25zL3N2Z251bWJlci1hbmltYXRpb24tMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHVGVzdENhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9TVkdBbmltYXRpb25UZXN0Q2FzZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxoMT5TVkcgMS4xIGR5bmFtaWMgYW5pbWF0aW9uIHRlc3RzPC9oMT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N2Z251bWJlci1hbmltYXRpb24tMi5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdu
dW1iZXItYW5pbWF0aW9uLTMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3N2Zy9hbmltYXRpb25zL3N2Z251bWJlci1hbmltYXRpb24tMy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9u
LTMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACitTVkcgMS4xIGR5
bmFtaWMgYW5pbWF0aW9uIHRlc3RzCisKK1Rlc3QgZm9yIFNWR051bWJlciBhbmltYXRpb24gd2l0
aCBpbnZhbGlkIHVuaXRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBj
b21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ29wYWNpdHknKS5nZXRGbG9hdFZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDAKK1BBU1MgY29tcHV0ZWRTdHlsZS5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKCdvcGFjaXR5JykuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVW
YWx1ZS5DU1NfTlVNQkVSKSBpcyAwCitQQVNTIGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlDU1NW
YWx1ZSgnb3BhY2l0eScpLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJF
UikgaXMgMAorUEFTUyBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ29wYWNpdHkn
KS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIGlzIDAKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlv
dXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9uLTMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXItYW5pbWF0aW9uLTMu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3N2Z251bWJl
ci1hbmltYXRpb24tMy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2R5bmFtaWMtdXBkYXRlcy9y
ZXNvdXJjZXMvU1ZHVGVzdENhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9TVkdBbmltYXRpb25UZXN0Q2FzZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxo
MT5TVkcgMS4xIGR5bmFtaWMgYW5pbWF0aW9uIHRlc3RzPC9oMT4KKzxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRl
c3RzL3N2Z251bWJlci1hbmltYXRpb24tMy5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvc3ZnbnVtYmVy
LWFuaW1hdGlvbi0xLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25z
L3NjcmlwdC10ZXN0cy9zdmdudW1iZXItYW5pbWF0aW9uLTEuanMJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvc3ZnbnVtYmVyLWFuaW1hdGlv
bi0xLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACitkZXNjcmlwdGlvbigiVGVzdCBm
b3IgU1ZHTnVtYmVyIGFuaW1hdGlvbi4iKTsKK2NyZWF0ZVNWR1Rlc3RDYXNlKCk7CisKKy8vIFNl
dHVwIHRlc3QgZG9jdW1lbnQKK3ZhciByZWN0ID0gY3JlYXRlU1ZHRWxlbWVudCgicmVjdCIpOwor
cmVjdC5zZXRBdHRyaWJ1dGUoImlkIiwgInJlY3QiKTsKK3JlY3Quc2V0QXR0cmlidXRlKCJ4Iiwg
IjAiKTsKK3JlY3Quc2V0QXR0cmlidXRlKCJ3aWR0aCIsICIxMDAiKTsKK3JlY3Quc2V0QXR0cmli
dXRlKCJoZWlnaHQiLCAiMTAwIik7CityZWN0LnNldEF0dHJpYnV0ZSgiZmlsbCIsICJncmVlbiIp
OworcmVjdC5zZXRBdHRyaWJ1dGUoIm9wYWNpdHkiLCAiMCIpOworcmVjdC5zZXRBdHRyaWJ1dGUo
Im9uY2xpY2siLCAiZXhlY3V0ZVRlc3QoKSIpOworCit2YXIgYW5pbWF0ZSA9IGNyZWF0ZVNWR0Vs
ZW1lbnQoImFuaW1hdGUiKTsKK2FuaW1hdGUuc2V0QXR0cmlidXRlKCJpZCIsICJhbmltYXRpb24i
KTsKK2FuaW1hdGUuc2V0QXR0cmlidXRlKCJhdHRyaWJ1dGVOYW1lIiwgIm9wYWNpdHkiKTsKK2Fu
aW1hdGUuc2V0QXR0cmlidXRlKCJiZWdpbiIsICJjbGljayIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1
dGUoImR1ciIsICI0cyIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoImZyb20iLCAiMCIpOworYW5p
bWF0ZS5zZXRBdHRyaWJ1dGUoInRvIiwgIjEiKTsKK3JlY3QuYXBwZW5kQ2hpbGQoYW5pbWF0ZSk7
Cityb290U1ZHRWxlbWVudC5hcHBlbmRDaGlsZChyZWN0KTsKKwordmFyIGNvbXB1dGVkU3R5bGUg
PSByZWN0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0KTsK
KworLy8gU2V0dXAgYW5pbWF0aW9uIHRlc3QKK2Z1bmN0aW9uIHNhbXBsZTEoKSB7CisgICAgLy8g
Q2hlY2sgaW5pdGlhbC9lbmQgY29uZGl0aW9ucworICAgIHNob3VsZEJlKCJjb21wdXRlZFN0eWxl
LmdldFByb3BlcnR5Q1NTVmFsdWUoJ29wYWNpdHknKS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2
ZVZhbHVlLkNTU19OVU1CRVIpIiwgIjAiKTsKK30KKworZnVuY3Rpb24gc2FtcGxlMigpIHsKKyAg
ICBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdvcGFjaXR5Jyku
Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSIsICIwLjUiKTsKK30K
KworZnVuY3Rpb24gc2FtcGxlMygpIHsKKyAgICBzaG91bGRCZUNsb3NlRW5vdWdoKCJjb21wdXRl
ZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ29wYWNpdHknKS5nZXRGbG9hdFZhbHVlKENTU1By
aW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIiwgIjEiLCAwLjAxKTsKK30KKworZnVuY3Rpb24gZXhl
Y3V0ZVRlc3QoKSB7CisgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSBbCisgICAgICAgIC8vIFth
bmltYXRpb25JZCwgdGltZSwgZWxlbWVudElkLCBzYW1wbGVDYWxsYmFja10KKyAgICAgICAgWyJh
bmltYXRpb24iLCAwLCAgICAgICJyZWN0Iiwgc2FtcGxlMV0sCisgICAgICAgIFsiYW5pbWF0aW9u
IiwgMi4wLCAgICAicmVjdCIsIHNhbXBsZTJdLAorICAgICAgICBbImFuaW1hdGlvbiIsIDMuOTk5
OSwgInJlY3QiLCBzYW1wbGUzXSwKKyAgICAgICAgWyJhbmltYXRpb24iLCA0LCAgICAgICJyZWN0
Iiwgc2FtcGxlMV0KKyAgICBdOworCisgICAgcnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZFZhbHVl
cyk7Cit9CisKKy8vIEJlZ2luIHRlc3QgYXN5bmMKK3dpbmRvdy5zZXRUaW1lb3V0KCJ0cmlnZ2Vy
VXBkYXRlKDUwLCAzMCkiLCAwKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRl
eDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL3N2Z251bWJlci1hbmlt
YXRpb24tMi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3Jp
cHQtdGVzdHMvc3ZnbnVtYmVyLWFuaW1hdGlvbi0yLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL3N2Z251bWJlci1hbmltYXRpb24tMi5q
cwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorZGVzY3JpcHRpb24oIlRlc3QgZm9yIFNW
R051bWJlciBhbmltYXRpb24gd2l0aCBkaWZmZXJlbnQgZXhwb25lbnRzLiIpOworY3JlYXRlU1ZH
VGVzdENhc2UoKTsKKworLy8gU2V0dXAgdGVzdCBkb2N1bWVudAordmFyIHJlY3QgPSBjcmVhdGVT
VkdFbGVtZW50KCJyZWN0Iik7CityZWN0LnNldEF0dHJpYnV0ZSgiaWQiLCAicmVjdCIpOworcmVj
dC5zZXRBdHRyaWJ1dGUoIngiLCAiMCIpOworcmVjdC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgIjEw
MCIpOworcmVjdC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsICIxMDAiKTsKK3JlY3Quc2V0QXR0cmli
dXRlKCJmaWxsIiwgImdyZWVuIik7CityZWN0LnNldEF0dHJpYnV0ZSgib3BhY2l0eSIsICIwIik7
CityZWN0LnNldEF0dHJpYnV0ZSgib25jbGljayIsICJleGVjdXRlVGVzdCgpIik7CisKK3ZhciBh
bmltYXRlID0gY3JlYXRlU1ZHRWxlbWVudCgiYW5pbWF0ZSIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1
dGUoImlkIiwgImFuaW1hdGlvbiIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoImF0dHJpYnV0ZU5h
bWUiLCAib3BhY2l0eSIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoImJlZ2luIiwgImNsaWNrIik7
CithbmltYXRlLnNldEF0dHJpYnV0ZSgiZHVyIiwgIjRzIik7CithbmltYXRlLnNldEF0dHJpYnV0
ZSgiZnJvbSIsICIwZTEwIik7CithbmltYXRlLnNldEF0dHJpYnV0ZSgidG8iLCAiLjFlMSIpOwor
cmVjdC5hcHBlbmRDaGlsZChhbmltYXRlKTsKK3Jvb3RTVkdFbGVtZW50LmFwcGVuZENoaWxkKHJl
Y3QpOworCit2YXIgY29tcHV0ZWRTdHlsZSA9IHJlY3Qub3duZXJEb2N1bWVudC5kZWZhdWx0Vmll
dy5nZXRDb21wdXRlZFN0eWxlKHJlY3QpOworCisvLyBTZXR1cCBhbmltYXRpb24gdGVzdAorZnVu
Y3Rpb24gc2FtcGxlMSgpIHsKKyAgICAvLyBDaGVjayBpbml0aWFsL2VuZCBjb25kaXRpb25zCisg
ICAgc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnb3BhY2l0eScp
LmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikiLCAiMCIpOworfQor
CitmdW5jdGlvbiBzYW1wbGUyKCkgeworICAgIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLmdldFBy
b3BlcnR5Q1NTVmFsdWUoJ29wYWNpdHknKS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVl
LkNTU19OVU1CRVIpIiwgIjAuNSIpOworfQorCitmdW5jdGlvbiBzYW1wbGUzKCkgeworICAgIHNo
b3VsZEJlQ2xvc2VFbm91Z2goImNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnb3Bh
Y2l0eScpLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikiLCAiMSIs
IDAuMDEpOworfQorCitmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKKyAgICBjb25zdCBleHBlY3Rl
ZFZhbHVlcyA9IFsKKyAgICAgICAgLy8gW2FuaW1hdGlvbklkLCB0aW1lLCBlbGVtZW50SWQsIHNh
bXBsZUNhbGxiYWNrXQorICAgICAgICBbImFuaW1hdGlvbiIsIDAsICAgICAgInJlY3QiLCBzYW1w
bGUxXSwKKyAgICAgICAgWyJhbmltYXRpb24iLCAyLjAsICAgICJyZWN0Iiwgc2FtcGxlMl0sCisg
ICAgICAgIFsiYW5pbWF0aW9uIiwgMy45OTk5LCAicmVjdCIsIHNhbXBsZTNdLAorICAgICAgICBb
ImFuaW1hdGlvbiIsIDQsICAgICAgInJlY3QiLCBzYW1wbGUxXQorICAgIF07CisKKyAgICBydW5B
bmltYXRpb25UZXN0KGV4cGVjdGVkVmFsdWVzKTsKK30KKworLy8gQmVnaW4gdGVzdCBhc3luYwor
d2luZG93LnNldFRpbWVvdXQoInRyaWdnZXJVcGRhdGUoNTAsIDMwKSIsIDApOwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9z
Y3JpcHQtdGVzdHMvc3ZnbnVtYmVyLWFuaW1hdGlvbi0zLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9zdmdudW1iZXItYW5pbWF0aW9uLTMu
anMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVz
dHMvc3ZnbnVtYmVyLWFuaW1hdGlvbi0zLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBA
CitkZXNjcmlwdGlvbigiVGVzdCBmb3IgU1ZHTnVtYmVyIGFuaW1hdGlvbiB3aXRoIGludmFsaWQg
dW5pdHMuIik7CitjcmVhdGVTVkdUZXN0Q2FzZSgpOworCisvLyBTZXR1cCB0ZXN0IGRvY3VtZW50
Cit2YXIgcmVjdCA9IGNyZWF0ZVNWR0VsZW1lbnQoInJlY3QiKTsKK3JlY3Quc2V0QXR0cmlidXRl
KCJpZCIsICJyZWN0Iik7CityZWN0LnNldEF0dHJpYnV0ZSgieCIsICIwIik7CityZWN0LnNldEF0
dHJpYnV0ZSgid2lkdGgiLCAiMTAwIik7CityZWN0LnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwgIjEw
MCIpOworcmVjdC5zZXRBdHRyaWJ1dGUoImZpbGwiLCAiZ3JlZW4iKTsKK3JlY3Quc2V0QXR0cmli
dXRlKCJvcGFjaXR5IiwgIjAiKTsKK3JlY3Quc2V0QXR0cmlidXRlKCJvbmNsaWNrIiwgImV4ZWN1
dGVUZXN0KCkiKTsKKwordmFyIGFuaW1hdGUgPSBjcmVhdGVTVkdFbGVtZW50KCJhbmltYXRlIik7
CithbmltYXRlLnNldEF0dHJpYnV0ZSgiaWQiLCAiYW5pbWF0aW9uIik7CithbmltYXRlLnNldEF0
dHJpYnV0ZSgiYXR0cmlidXRlTmFtZSIsICJvcGFjaXR5Iik7CithbmltYXRlLnNldEF0dHJpYnV0
ZSgiYmVnaW4iLCAiY2xpY2siKTsKK2FuaW1hdGUuc2V0QXR0cmlidXRlKCJkdXIiLCAiNHMiKTsK
K2FuaW1hdGUuc2V0QXR0cmlidXRlKCJmcm9tIiwgIjBweCIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1
dGUoInRvIiwgIjFweCIpOworcmVjdC5hcHBlbmRDaGlsZChhbmltYXRlKTsKK3Jvb3RTVkdFbGVt
ZW50LmFwcGVuZENoaWxkKHJlY3QpOworCit2YXIgY29tcHV0ZWRTdHlsZSA9IHJlY3Qub3duZXJE
b2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3QpOworCisvLyBTZXR1cCBh
bmltYXRpb24gdGVzdAorZnVuY3Rpb24gc2FtcGxlMSgpIHsKKyAgICAvLyBDaGVjayBpbml0aWFs
L2VuZCBjb25kaXRpb25zCisgICAgc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlD
U1NWYWx1ZSgnb3BhY2l0eScpLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05V
TUJFUikiLCAiMCIpOworfQorCitmdW5jdGlvbiBzYW1wbGUyKCkgeworICAgIHNob3VsZEJlKCJj
b21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ29wYWNpdHknKS5nZXRGbG9hdFZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpIiwgIjAiKTsKK30KKworZnVuY3Rpb24gc2Ft
cGxlMygpIHsKKyAgICBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVl
KCdvcGFjaXR5JykuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSIs
ICIwIik7Cit9CisKK2Z1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgeworICAgIGNvbnN0IGV4cGVjdGVk
VmFsdWVzID0gWworICAgICAgICAvLyBbYW5pbWF0aW9uSWQsIHRpbWUsIGVsZW1lbnRJZCwgc2Ft
cGxlQ2FsbGJhY2tdCisgICAgICAgIFsiYW5pbWF0aW9uIiwgMCwgICAgICAicmVjdCIsIHNhbXBs
ZTFdLAorICAgICAgICBbImFuaW1hdGlvbiIsIDIuMCwgICAgInJlY3QiLCBzYW1wbGUyXSwKKyAg
ICAgICAgWyJhbmltYXRpb24iLCAzLjk5OTksICJyZWN0Iiwgc2FtcGxlM10sCisgICAgICAgIFsi
YW5pbWF0aW9uIiwgNCwgICAgICAicmVjdCIsIHNhbXBsZTFdCisgICAgXTsKKworICAgIHJ1bkFu
aW1hdGlvblRlc3QoZXhwZWN0ZWRWYWx1ZXMpOworfQorCisvLyBCZWdpbiB0ZXN0IGFzeW5jCit3
aW5kb3cuc2V0VGltZW91dCgidHJpZ2dlclVwZGF0ZSg1MCwgMzApIiwgMCk7Cit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>
<flag name="review"
          id="91759"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
      

    </bug>

</bugzilla>