<?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>106418</bug_id>
          
          <creation_ts>2013-01-08 22:08:04 -0800</creation_ts>
          <short_desc>Implement CSSGroupingRule for @host @-rules and @supports.</short_desc>
          <delta_ts>2013-01-10 23:09:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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>102344</blocked>
    
    <blocked>104822</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Takashi Sakamoto">tasak</reporter>
          <assigned_to name="Takashi Sakamoto">tasak</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hyatt</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>pf</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>803028</commentid>
    <comment_count>0</comment_count>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2013-01-08 22:08:04 -0800</bug_when>
    <thetext>These implementations is almost the same and now CSSHostRule, which is also the same as the implementations, will be added.
So we need to refactor these implementations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803100</commentid>
    <comment_count>1</comment_count>
      <attachid>181865</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2013-01-09 00:02:39 -0800</bug_when>
    <thetext>Created attachment 181865
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803373</commentid>
    <comment_count>2</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2013-01-09 09:08:55 -0800</bug_when>
    <thetext>Nice. You probably want to name the class CSSGroupingRule, as that&apos;s the name on the spec (http://dev.w3.org/csswg/css3-conditional/#cssgroupingrule)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803402</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-09 09:37:38 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Nice. You probably want to name the class CSSGroupingRule, as that&apos;s the name on the spec (http://dev.w3.org/csswg/css3-conditional/#cssgroupingrule)

I like this suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803407</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-09 09:39:55 -0800</bug_when>
    <thetext>&gt; class CSSMediaRule and class WebKitCSSRegionRule can share most of their implementations

I have doubts whether these classes are semantically close enough to share a public base class. This refactoring looks like it makes code much more confusing.

Also, inlining bodies of these large functions just so that you could use templates is not good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803412</commentid>
    <comment_count>5</comment_count>
      <attachid>181865</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-09 09:42:48 -0800</bug_when>
    <thetext>Comment on attachment 181865
Patch

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

&gt; Source/WebCore/ChangeLog:38
&gt; +        is &quot;const&quot; method, needs static_cast and const_cast.

Does it need to be a const method?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803413</commentid>
    <comment_count>6</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-09 09:44:15 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; class CSSMediaRule and class WebKitCSSRegionRule can share most of their implementations
&gt; 
&gt; I have doubts whether these classes are semantically close enough to share a public base class. This refactoring looks like it makes code much more confusing.

I think the idea of sharing the code for all grouping rules is a good one. Not sure about this specific refactoring yet.

&gt; Also, inlining bodies of these large functions just so that you could use templates is not good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803435</commentid>
    <comment_count>7</comment_count>
      <attachid>181865</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-09 10:06:23 -0800</bug_when>
    <thetext>Comment on attachment 181865
Patch

I agree with Alexey, this patch looks sad because of gratuitous templating. The thing is, you almost don&apos;t need these templates and I am confident this refactoring can be done without them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803612</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-09 12:40:18 -0800</bug_when>
    <thetext>Please don&apos;t try to use this for WebKitCSSRegionRule if it really doesn&apos;t share the interface. Also definitely no templates.

Please explain in ChangeLog the real reason for doing this (@supports rules).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803613</commentid>
    <comment_count>9</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-09 12:41:02 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Please explain in ChangeLog the real reason for doing this (@supports rules).

and @host rules.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804061</commentid>
    <comment_count>10</comment_count>
      <attachid>182065</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2013-01-09 22:24:13 -0800</bug_when>
    <thetext>Created attachment 182065
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804125</commentid>
    <comment_count>11</comment_count>
      <attachid>182080</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2013-01-10 00:33:26 -0800</bug_when>
    <thetext>Created attachment 182080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804126</commentid>
    <comment_count>12</comment_count>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2013-01-10 00:37:30 -0800</bug_when>
    <thetext>Thank you for reviewing.

I uploaded a new patch. The differences between the previous one and this are:

- No template,
- Add @supports and @host @-rules to ChangeLog.
- Add the spec URLs to ChangeLog.

Talking about @region,

interface CSSRegionStyleRule : CSSRule {
  attribute DOMString selectorText;
  readonly attribute CSSRuleList cssRules;
  unsigned long insertRule(DOMString rule,  unsigned long index)
    raises(DOMException);
  void deleteRule(unsigned long index)
    raises(DOMException);
};

c.f. http://dev.w3.org/csswg/css3-regions/#the-at-region-style-rule

I think, this is the same as:

interface CSSGroupingRule : CSSRule {
    readonly attribute CSSRuleList cssRules;
    unsigned long insertRule (DOMString rule, unsigned long index);
    void deleteRule (unsigned long index);
}

http://www.w3.org/TR/2012/WD-css3-conditional-20121213/#the-cssgroupingrule-interface

Best regards,
Takashi Sakamoto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804144</commentid>
    <comment_count>13</comment_count>
      <attachid>182080</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-10 01:00:26 -0800</bug_when>
    <thetext>Comment on attachment 182080
Patch

Attachment 182080 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15766738</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804195</commentid>
    <comment_count>14</comment_count>
      <attachid>182080</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-10 02:19:16 -0800</bug_when>
    <thetext>Comment on attachment 182080
Patch

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

Looks good.

&gt; Source/WebCore/ChangeLog:14
&gt; +        Since @supports and @host @-rules are dervied from CSSGroupingRule:
&gt; +        http://www.w3.org/TR/2012/WD-css3-conditional/#the-cssgroupingrule-interface
&gt; +        https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#css-host-rule-interface
&gt; +        we need CSSGroupingRule (WK102344 and WK104822).
&gt; +        Since @media is also derived from CSSGroupingRule and @region has the
&gt; +        same interface as CSSGroupingRule, modify to use CSSGroupingRule:
&gt; +        http://dev.w3.org/csswg/css3-regions/#the-at-region-style-rule

This is bit confusing. The reason you are adding CSSGroupingRule is to share code between CSSMediaRule, CSSSupportsRule and CSSHostRule. It would be good to spell it out.

&gt; Source/WebCore/WebCore.vcproj/WebCore.vcproj:36179
&gt; +				&lt;FileConfiguration
&gt; +					Name=&quot;Debug|Win32&quot;
&gt; +					ExcludedFromBuild=&quot;true&quot;
&gt; +					&gt;
&gt; +					&lt;Tool

You don&apos;t need this stuff (probably why windows build is failing).

&gt; Source/WebCore/css/CSSGroupingRule.cpp:46
&gt; +CSSGroupingRule::CSSGroupingRule(StyleRuleBlock* groupRule, CSSStyleSheet* parent)

For consistency we should probably rename StyleRuleBlock -&gt; StyleRuleGroup in another patch.

&gt; Source/WebCore/css/CSSMediaRule.cpp:50
&gt; +    return static_cast&lt;const StyleRuleMedia*&gt;(m_groupRule.get())-&gt;mediaQueries();

You might want to add inlined accessors that do the casting.

&gt; Source/WebCore/css/WebKitCSSRegionRule.cpp:55
&gt; +    result.append(static_cast&lt;const StyleRuleRegion*&gt;(m_groupRule.get())-&gt;selectorList().selectorsText());

For this too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804959</commentid>
    <comment_count>15</comment_count>
      <attachid>182265</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2013-01-10 21:51:47 -0800</bug_when>
    <thetext>Created attachment 182265
WIP for checking Windows BuildBot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804962</commentid>
    <comment_count>16</comment_count>
      <attachid>182080</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2013-01-10 22:02:53 -0800</bug_when>
    <thetext>Comment on attachment 182080
Patch

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

Thank you for reviewing.

&gt;&gt; Source/WebCore/ChangeLog:14
&gt;&gt; +        http://dev.w3.org/csswg/css3-regions/#the-at-region-style-rule
&gt; 
&gt; This is bit confusing. The reason you are adding CSSGroupingRule is to share code between CSSMediaRule, CSSSupportsRule and CSSHostRule. It would be good to spell it out.

I see. I added the reason to the top of the description.

&gt;&gt; Source/WebCore/WebCore.vcproj/WebCore.vcproj:36179
&gt;&gt; +					&lt;Tool
&gt; 
&gt; You don&apos;t need this stuff (probably why windows build is failing).

I found I missed CSSAllInOne.cpp. I&apos;m now checking whether only the mistake (CSSAllInOne) causes windows build failure or not.

&gt;&gt; Source/WebCore/css/CSSGroupingRule.cpp:46
&gt;&gt; +CSSGroupingRule::CSSGroupingRule(StyleRuleBlock* groupRule, CSSStyleSheet* parent)
&gt; 
&gt; For consistency we should probably rename StyleRuleBlock -&gt; StyleRuleGroup in another patch.

I see. If no bug for the renaming, I will file a new bug.

&gt;&gt; Source/WebCore/css/CSSMediaRule.cpp:50
&gt;&gt; +    return static_cast&lt;const StyleRuleMedia*&gt;(m_groupRule.get())-&gt;mediaQueries();
&gt; 
&gt; You might want to add inlined accessors that do the casting.

I see. Thanks. Done.

&gt;&gt; Source/WebCore/css/WebKitCSSRegionRule.cpp:55
&gt;&gt; +    result.append(static_cast&lt;const StyleRuleRegion*&gt;(m_groupRule.get())-&gt;selectorList().selectorsText());
&gt; 
&gt; For this too.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804981</commentid>
    <comment_count>17</comment_count>
      <attachid>182268</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2013-01-10 22:50:40 -0800</bug_when>
    <thetext>Created attachment 182268
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804986</commentid>
    <comment_count>18</comment_count>
      <attachid>182268</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-10 23:09:52 -0800</bug_when>
    <thetext>Comment on attachment 182268
Patch for landing

Clearing flags on attachment: 182268

Committed r139409: &lt;http://trac.webkit.org/changeset/139409&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804987</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-10 23:09:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181865</attachid>
            <date>2013-01-09 00:02:39 -0800</date>
            <delta_ts>2013-01-09 22:24:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106418-20130109165943.patch</filename>
            <type>text/plain</type>
            <size>28312</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ODMwZTk5YjgwODhhMDdkYzFjMDM4MmNmMjY0MDFkYzI2YWEwNWRlLi41
MDdhZTM0MmVmNzIxOGNkMmRlMjVmZDEyYjkwY2E3YmMzZTFkZGUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjYgQEAKKzIwMTMtMDEtMDggIFRha2FzaGkgU2FrYW1vdG8gIDx0YXNha0Bnb29nbGUu
Y29tPgorCisgICAgICAgIFJlZmFjdG9yaW5nIGNsYXNzIENTU01lZGlhUnVsZSBhbmQgY2xhc3Mg
V2ViS2l0Q1NTUmVnaW9uUnVsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA2NDE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgY2xhc3MgQ1NTTWVkaWFSdWxlIGFuZCBjbGFzcyBXZWJLaXRDU1NSZWdpb25S
dWxlIGNhbiBzaGFyZSBtb3N0IG9mCisgICAgICAgIHRoZWlyIGltcGxlbWVudGF0aW9ucywgYmVj
YXVzZSB0aGVpciBpbnRlcmZhY2VzIChkZWZpbmVkIGluIHRoZSBJREwKKyAgICAgICAgZmlsZXMp
IGFyZSBhbG1vc3QgdGhlIHNhbWUgKGV4Y2VwdCBtZWRpYSwgcmVhZG9ubHkgYXR0cmlidXRlIGlu
CisgICAgICAgIENTU01lZGlhUnVsZS5pZGwpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywganVz
dCByZWZhY3RvcmluZy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
QWRkZWQgQ1NTQmxvY2tSdWxlLmguCisgICAgICAgICogY3NzL0NTU0Jsb2NrUnVsZS5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDU1NCbG9ja1J1bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQmxvY2tSdWxlOjp+Q1NTQmxvY2tSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Js
b2NrUnVsZTo6Q1NTQmxvY2tSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6aW5zZXJ0UnVsZSk6
CisgICAgICAgIChXZWJDb3JlOjo6OmRlbGV0ZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Ojps
ZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6OjppdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6
cmVhdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAg
ICAgIE1vdmVkIHRoZSBzYW1lIHBhcnRzIHVzZWQgaW4gY2xhc3MgQ1NTTWVkaWFSdWxlIGFuZCBj
bGFzcworICAgICAgICBXZWJLaXRDU1NSZWdpb25SdWxlIHRvIENTU0Jsb2NrUnVsZS4gV2ViS2l0
Q1NTS2V5RnJhbWVzUnVsZSBpcworICAgICAgICBkaWZmZXJlbnQgZnJvbSBDU1NNZWRpYVJ1bGUg
YW5kIFdlYktpdENTU1JlZ2lvblJ1bGUgaW4gSURMIGxldmVsLgorICAgICAgICBDU1NNZWRpYVJ1
bGUgYW5kIFdlYktpdENTU1JlZ2lvblJ1bGUgaGF2ZSB0aGUgYWxtb3N0IHNhbWUgaW50ZXJmYWNl
CisgICAgICAgIGV4Y2VwdCBtZWRpYS4KKyAgICAgICAgKFdlYkNvcmU6Ojo6Y3NzUnVsZXMpOgor
ICAgICAgICBTaW5jZSBMaXZlQ1NTUnVsZUxpc3QgcmVxdWlyZXMgZWFjaCBkZXJpdmVkIGNsYXNz
IHBvaW50ZXIgYW5kIGNzc1J1bGVzCisgICAgICAgIGlzICJjb25zdCIgbWV0aG9kLCBuZWVkcyBz
dGF0aWNfY2FzdCBhbmQgY29uc3RfY2FzdC4KKyAgICAgICAgRm9yIG1ha2UgYSBkZXJpdmVkIGNs
YXNzIHBvaW50ZXIsIGUuZy4gQ1NTTWVkaWFSdWxlKiwgZnJvbQorICAgICAgICBDU1NCbG9ja1J1
bGUgcG9pbnRlciwgdXNlcyB0aGUgc2Vjb25kIHRlbXBhbHRlIHBhcmFtZXRlciwgaS5lLiBjbGFz
cworICAgICAgICBjc3NSdWxlQ2xhc3MuCisgICAgICAgIChXZWJDb3JlOjo6OmFwcGVuZENzc1Rl
eHRGb3JJdGVtcyk6CisgICAgICAgIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgZnJvbSBjc3NUZXh0
IGluIGRlcml2ZWQgY2xhc3NlcywgZS5nLgorICAgICAgICBDU1NIb3N0UnVsZTo6Y3NzVGV4dC4g
Q3JlYXRlIGEgc3RyaW5nIGZvciBDU1MgcnVsZXMgaW4gYSBjc3MgYmxvY2suCisgICAgICAgICog
Y3NzL0NTU01lZGlhUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNZWRpYVJ1bGU6OkNT
U01lZGlhUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNZWRpYVJ1bGU6On5DU1NNZWRpYVJ1
bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWVkaWFSdWxlOjpjc3NUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU01lZGlhUnVsZTo6bWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWVk
aWFSdWxlOjpyZWF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNZWRpYVJ1bGU6OnJlcG9y
dE1lbW9yeVVzYWdlKToKKyAgICAgICAgQ1NTTWVkaWFSdWxlIGlzIGEgbGl0dGxlIGRpZmZlcmVu
dCBmcm9tIFdlYktpdENTU1JlZ2lvblJ1bGUuCisgICAgICAgIENTU01lZGlhUnVsZSBoYXMgaXRz
IG93biBtZXRob2QgKGkuZS4gbWVkaWEpIGFuZCBpdHMgb3duIG1lbWJlcgorICAgICAgICB2YXJp
YWJsZXMgKGkuZS4gbV9tZWRpYUNTU09NV3JhcHBlcikuIFNvIGl0IGlzIHJlcXVpcmVkCisgICAg
ICAgIHRvIHVwZGF0ZSBtX21lZGlhQ1NTT01XcmFwcGVyIGluIHJlYXR0YWNoIGFuZCB+Q1NTTWVk
aWFSdWxlLgorICAgICAgICAqIGNzcy9DU1NNZWRpYVJ1bGUuaDoKKyAgICAgICAgTW9kaWZ5IHRv
IGluaGVyaXQgQ1NTQmxvY2tSdWxlLgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NSZWdpb25SdWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU1JlZ2lvblJ1bGU6OldlYktpdENTU1Jl
Z2lvblJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTUmVnaW9uUnVsZTo6Y3NzVGV4
dCk6CisgICAgICAgICogY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuaDoKKyAgICAgICAgTW9kaWZ5
IHRvIGluaGVyaXQgQ1NTQmxvY2tSdWxlLgorCiAyMDEzLTAxLTA4ICBKdXN0aW4gTm92b3NhZCAg
PGp1bm92QGdvb2dsZS5jb20+CiAKICAgICAgICAgQ29sb3IgYmxlZWRpbmcgd2l0aCByb3VuZGVk
IHJlY3RhbmdsZXMgb24gaGlnaCBkcGkgZGlzcGxheXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCmluZGV4IGJhZTI4NzhhMGJmZjQ1ZWM1Zjk2MGNkZGVkZWQwMDMxYWJlZjE5NzcuLmM5ZDI4
YmU2MWE5YTZiNjc1YjM3ODkwYTdkN2MyMWM4ZDEyZjNmYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQpAQCAtMjUxMSw2ICsyNTExLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNT
aGFwZXMuaCBcCisJU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jsb2NrUnVsZS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQm9yZGVySW1hZ2UuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAyMmNkNzRlODhmYjRjYzU1
MTVmNDUwNjNkZmIzZmZhMjJhN2UzMTgxLi5hODE4ZjhlZDhlYWUyMGM0MTBlZDY3Njc4NmRlYWYx
YzQzYWM4MDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNDQyLDYgKzE0NDIsNyBAQAogICAgICAg
ICAgICAgJ2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcCcsCiAgICAgICAgICAgICAnY3NzL0NT
U0FzcGVjdFJhdGlvVmFsdWUuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU0Jhc2ljU2hhcGVzLmNw
cCcsCisgICAgICAgICAgICAnY3NzL0NTU0Jsb2NrUnVsZS5oJywKICAgICAgICAgICAgICdjc3Mv
Q1NTQm9yZGVySW1hZ2UuY3BwJywKICAgICAgICAgICAgICdjc3MvQ1NTQm9yZGVySW1hZ2UuaCcs
CiAgICAgICAgICAgICAnY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA5YjgzMTc5MDUy
NzgyZDQ4NGRhODc3ZTFlMjlmNGY1YTFiNTdmZTNiLi44MTkwYWZlNTBkMTE0ZjU3YzFiYWQ1MTEy
OWVmNmI2NjI3ZjA1MjZlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagpAQCAtMzUzNzAsNiArMzUzNzAsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU0Jsb2NrUnVsZS5oIgorCQkJCT4K
KwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTQm9yZGVy
SW1hZ2UuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlNmJkNGQ4ZTA3
NGU3YTY3Y2FhMTRlNzA3Y2M0NzJlOGVmYjhhOTRlLi5jMzI0MzNjMmQ5ZThiYWMxMDQzOWU2OTEy
NjA0NjcxNWZiODFiYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NDMzLDYgKzY0MzMsNyBAQAogCQlGQUJFNzJGRDEwNTlD
MjExMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFCRTcyRkIxMDU5QzIxMTAwRDk5OUREIC8q
IE1hdGhNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLzsgfTsKIAkJRkFCRTcyRkUxMDU5QzIxMTAwRDk5
OUREIC8qIE1hdGhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZBQkU3MkZDMTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxOYW1lcy5jcHAg
Ki87IH07CiAJCUZCMkMxNUMzMTY1RDY0OUQwMDM5QzlGOCAvKiBDYWNoZWRTVkdEb2N1bWVudFJl
ZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkIyQzE1QzIxNjVENjQ5MDAwMzlDOUY4IC8qIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkI2NTY5
QUQxNjlDMThEQTAwODgzNzRFIC8qIENTU0Jsb2NrUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkI2NTY5QUMxNjlDMThEQTAwODgzNzRFIC8qIENT
U0Jsb2NrUnVsZS5oICovOyB9OwogCQlGQjc4QUQyRTE1MUJGNUU2MDBGRTU0RDMgLyogQ1NTUGFy
c2VyTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkI3OEFEMkMxNTFCRjVEMjAwRkU1NEQzIC8qIENTU1BhcnNlck1vZGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGQjkyREY0QjE1RkVEMDg3MDA5
OTQ0MzMgLyogQ2xpcFBhdGhPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZCOTJERjQ5MTVGRUQwODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9w
ZXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUZCQzIyMERGMTIzN0ZCRUIwMEJDRjc4OCAvKiBHcmFwaGljc0NvbnRleHQzRE9wZW5HTC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQkMyMjBE
RTEyMzdGQkVCMDBCQ0Y3ODggLyogR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwICovOyB9OwpA
QCAtMTQwMDQsNiArMTQwMDUsNyBAQAogCQlGQUJFNzJGQjEwNTlDMjExMDBEOTk5REQgLyogTWF0
aE1MRWxlbWVudEZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTWF0aE1MRWxlbWVudEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGQUJFNzJGQzEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MTmFtZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MTmFtZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGQjJDMTVDMjE2NUQ2NDkwMDAzOUM5RjggLyogQ2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVk
U1ZHRG9jdW1lbnRSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkI2
NTY5QUMxNjlDMThEQTAwODgzNzRFIC8qIENTU0Jsb2NrUnVsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDU1NCbG9ja1J1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkI3OEFEMkMxNTFCRjVEMjAwRkU1NEQzIC8qIENTU1BhcnNlck1vZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUGFyc2VyTW9kZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGQjkyREY0OTE1RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBhdGhPcGVy
YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xpcFBhdGhPcGVyYXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkJDMjIwREUxMjM3RkJFQjAwQkNG
Nzg4IC8qIEdyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNDg0LDYgKzIxNDg2LDcgQEAKIAkJCQlDQUU5RjkwRTE0NjQ0
MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oICovLAogCQkJCUZCRDZBRjg2MTVF
RjIxRDQwMDhCNzExMCAvKiBDU1NCYXNpY1NoYXBlcy5jcHAgKi8sCiAJCQkJRkJENkFGODcxNUVG
MjFENDAwOEI3MTEwIC8qIENTU0Jhc2ljU2hhcGVzLmggKi8sCisJCQkJRkI2NTY5QUMxNjlDMThE
QTAwODgzNzRFIC8qIENTU0Jsb2NrUnVsZS5oICovLAogCQkJCUUxNkE4NEY3MTRDODVDQ0MwMDI5
NzdERiAvKiBDU1NCb3JkZXJJbWFnZS5jcHAgKi8sCiAJCQkJRTE2QTg0RjgxNEM4NUNDQzAwMjk3
N0RGIC8qIENTU0JvcmRlckltYWdlLmggKi8sCiAJCQkJQkMyNzRCMzAxNDBFQkVEODAwRUFERkE2
IC8qIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5jcHAgKi8sCkBAIC0yNjA3OCw2ICsyNjA4MSw3
IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZENTM3MzUzMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9s
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkI2NTY5QUQxNjlDMThEQTAwODgzNzRFIC8qIENTU0Js
b2NrUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQmxvY2tSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmxvY2tSdWxlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMmExNjIwNzE1MGFiZmFmOWVmZDlkN2EwM2E4YjllZmExYmEyN2VmMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCbG9ja1J1bGUuaApAQCAtMCwwICsxLDE5
NCBAQAorLyoKKyAqIChDKSAxOTk5LTIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAq
IChDKSAyMDAyLTIwMDMgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgKiBDb3B5cmln
aHQgKEMpIDIwMDIsIDIwMDYsIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgKHNhbUB3ZWJraXQub3Jn
KQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaWZuZGVmIENTU0Jsb2NrUnVsZV9oCisjZGVmaW5lIENTU0Jsb2NrUnVsZV9oCisKKyNpbmNs
dWRlICJDU1NQYXJzZXIuaCIKKyNpbmNsdWRlICJDU1NSdWxlLmgiCisjaW5jbHVkZSAiQ1NTUnVs
ZUxpc3QuaCIKKyNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIlN0eWxlUnVsZS5oIgorI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJ
bnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVj
dG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIENTU1J1bGVMaXN0OworCit0ZW1wbGF0ZSA8Y2xhc3Mgc3R5bGVS
dWxlQ2xhc3MsIGNsYXNzIGNzc1J1bGVDbGFzcz4KK2NsYXNzIENTU0Jsb2NrUnVsZSA6IHB1Ymxp
YyBDU1NSdWxlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5DU1NCbG9ja1J1bGUoKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCkgPT0gbV9ibG9j
a1J1bGUtPmNoaWxkUnVsZXMoKS5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAg
ICBpZiAobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2ldKQorICAgICAgICAgICAgICAgIG1fY2hp
bGRSdWxlQ1NTT01XcmFwcGVyc1tpXS0+c2V0UGFyZW50UnVsZSgwKTsKKyAgICAgICAgfQorICAg
IH0KKworCisgICAgdmlydHVhbCB2b2lkIHJlYXR0YWNoKFN0eWxlUnVsZUJhc2UqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyop
IGNvbnN0IE9WRVJSSURFOworCisgICAgQ1NTUnVsZUxpc3QqIGNzc1J1bGVzKCkgY29uc3Q7CisK
KyAgICB1bnNpZ25lZCBpbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZSwgdW5zaWduZWQgaW5k
ZXgsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGRlbGV0ZVJ1bGUodW5zaWduZWQgaW5kZXgs
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgCisgICAgLy8gRm9yIENTU1J1bGVMaXN0CisgICAg
dW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisgICAgQ1NTUnVsZSogaXRlbSh1bnNpZ25lZCBpbmRl
eCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBDU1NCbG9ja1J1bGUoc3R5bGVSdWxlQ2xhc3Mq
IGJsb2NrUnVsZSwgQ1NTU3R5bGVTaGVldCogcGFyZW50KSA6IENTU1J1bGUocGFyZW50KSwgbV9i
bG9ja1J1bGUoYmxvY2tSdWxlKSwgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzKGJsb2NrUnVsZS0+
Y2hpbGRSdWxlcygpLnNpemUoKSkgeyB9CisgICAgCisgICAgdm9pZCBhcHBlbmRDc3NUZXh0Rm9y
SXRlbXMoU3RyaW5nQnVpbGRlciYpIGNvbnN0OworCisgICAgUmVmUHRyPHN0eWxlUnVsZUNsYXNz
PiBtX2Jsb2NrUnVsZTsKKyAgICBtdXRhYmxlIFZlY3RvcjxSZWZQdHI8Q1NTUnVsZT4gPiBtX2No
aWxkUnVsZUNTU09NV3JhcHBlcnM7CisgICAgbXV0YWJsZSBPd25QdHI8Q1NTUnVsZUxpc3Q+IG1f
cnVsZUxpc3RDU1NPTVdyYXBwZXI7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBzdHlsZVJ1bGVDbGFz
cywgY2xhc3MgY3NzUnVsZUNsYXNzPgordW5zaWduZWQgQ1NTQmxvY2tSdWxlPHN0eWxlUnVsZUNs
YXNzLCBjc3NSdWxlQ2xhc3M+OjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZVN0cmluZywg
dW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIEFTU0VSVChtX2NoaWxk
UnVsZUNTU09NV3JhcHBlcnMuc2l6ZSgpID09IG1fYmxvY2tSdWxlLT5jaGlsZFJ1bGVzKCkuc2l6
ZSgpKTsKKworICAgIGlmIChpbmRleCA+IG1fYmxvY2tSdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgp
KSB7CisgICAgICAgIC8vIElOREVYX1NJWkVfRVJSOiBSYWlzZWQgaWYgdGhlIHNwZWNpZmllZCBp
bmRleCBpcyBub3QgYSB2YWxpZCBpbnNlcnRpb24gcG9pbnQuCisgICAgICAgIGVjID0gSU5ERVhf
U0laRV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIENTU1BhcnNlciBwYXJz
ZXIocGFyc2VyQ29udGV4dCgpKTsKKyAgICBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0gcGFy
ZW50U3R5bGVTaGVldCgpOworICAgIFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBuZXdSdWxlID0gcGFy
c2VyLnBhcnNlUnVsZShzdHlsZVNoZWV0ID8gc3R5bGVTaGVldC0+Y29udGVudHMoKSA6IDAsIHJ1
bGVTdHJpbmcpOworICAgIGlmICghbmV3UnVsZSkgeworICAgICAgICAvLyBTWU5UQVhfRVJSOiBS
YWlzZWQgaWYgdGhlIHNwZWNpZmllZCBydWxlIGhhcyBhIHN5bnRheCBlcnJvciBhbmQgaXMgdW5w
YXJzYWJsZS4KKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKKyAgICBpZiAobmV3UnVsZS0+aXNJbXBvcnRSdWxlKCkpIHsKKyAgICAgICAgLy8gRklY
TUU6IGFuIEhJRVJBUkNIWV9SRVFVRVNUX0VSUiBzaG91bGQgYWxzbyBiZSB0aHJvd24gZm9yIGEg
QGNoYXJzZXQgb3IgYSBuZXN0ZWQKKyAgICAgICAgLy8gQG1lZGlhIHJ1bGUuIFRoZXkgYXJlIGN1
cnJlbnRseSBub3QgZ2V0dGluZyBwYXJzZWQsIHJlc3VsdGluZyBpbiBhIFNZTlRBWF9FUlIKKyAg
ICAgICAgLy8gdG8gZ2V0IHJhaXNlZCBhYm92ZS4KKworICAgICAgICAvLyBISUVSQVJDSFlfUkVR
VUVTVF9FUlI6IFJhaXNlZCBpZiB0aGUgcnVsZSBjYW5ub3QgYmUgaW5zZXJ0ZWQgYXQgdGhlIHNw
ZWNpZmllZAorICAgICAgICAvLyBpbmRleCwgZS5nLiwgaWYgYW4gQGltcG9ydCBydWxlIGlzIGlu
c2VydGVkIGFmdGVyIGEgc3RhbmRhcmQgcnVsZSBzZXQgb3Igb3RoZXIKKyAgICAgICAgLy8gYXQt
cnVsZS4KKyAgICAgICAgZWMgPSBISUVSQVJDSFlfUkVRVUVTVF9FUlI7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKyAgICBDU1NTdHlsZVNoZWV0OjpSdWxlTXV0YXRpb25TY29wZSBtdXRhdGlv
blNjb3BlKHRoaXMpOworCisgICAgbV9ibG9ja1J1bGUtPndyYXBwZXJJbnNlcnRSdWxlKGluZGV4
LCBuZXdSdWxlKTsKKworICAgIG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5pbnNlcnQoaW5kZXgs
IFJlZlB0cjxDU1NSdWxlPigpKTsKKyAgICByZXR1cm4gaW5kZXg7Cit9CisKK3RlbXBsYXRlPGNs
YXNzIHN0eWxlUnVsZUNsYXNzLCBjbGFzcyBjc3NSdWxlQ2xhc3M+Cit2b2lkIENTU0Jsb2NrUnVs
ZTxzdHlsZVJ1bGVDbGFzcywgY3NzUnVsZUNsYXNzPjo6ZGVsZXRlUnVsZSh1bnNpZ25lZCBpbmRl
eCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgQVNTRVJUKG1fY2hpbGRSdWxlQ1NTT01XcmFw
cGVycy5zaXplKCkgPT0gbV9ibG9ja1J1bGUtPmNoaWxkUnVsZXMoKS5zaXplKCkpOworCisgICAg
aWYgKGluZGV4ID49IG1fYmxvY2tSdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgpKSB7CisgICAgICAg
IC8vIElOREVYX1NJWkVfRVJSOiBSYWlzZWQgaWYgdGhlIHNwZWNpZmllZCBpbmRleCBkb2VzIG5v
dCBjb3JyZXNwb25kIHRvIGEKKyAgICAgICAgLy8gcnVsZSBpbiB0aGUgbWVkaWEgcnVsZSBsaXN0
LgorICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgQ1NTU3R5bGVTaGVldDo6UnVsZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlz
KTsKKworICAgIG1fYmxvY2tSdWxlLT53cmFwcGVyUmVtb3ZlUnVsZShpbmRleCk7CisKKyAgICBp
ZiAobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2luZGV4XSkKKyAgICAgICAgbV9jaGlsZFJ1bGVD
U1NPTVdyYXBwZXJzW2luZGV4XS0+c2V0UGFyZW50UnVsZSgwKTsKKyAgICBtX2NoaWxkUnVsZUNT
U09NV3JhcHBlcnMucmVtb3ZlKGluZGV4KTsKK30KKwordGVtcGxhdGU8Y2xhc3Mgc3R5bGVSdWxl
Q2xhc3MsIGNsYXNzIGNzc1J1bGVDbGFzcz4KK3ZvaWQgQ1NTQmxvY2tSdWxlPHN0eWxlUnVsZUNs
YXNzLCBjc3NSdWxlQ2xhc3M+OjphcHBlbmRDc3NUZXh0Rm9ySXRlbXMoU3RyaW5nQnVpbGRlciYg
cmVzdWx0KSBjb25zdAoreworICAgIHVuc2lnbmVkIHNpemUgPSBsZW5ndGgoKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIHJlc3VsdC5hcHBlbmRM
aXRlcmFsKCIgICIpOworICAgICAgICByZXN1bHQuYXBwZW5kKGl0ZW0oaSktPmNzc1RleHQoKSk7
CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJyk7CisgICAgfQorfQorCit0ZW1wbGF0ZTxjbGFz
cyBzdHlsZVJ1bGVDbGFzcywgY2xhc3MgY3NzUnVsZUNsYXNzPgordW5zaWduZWQgQ1NTQmxvY2tS
dWxlPHN0eWxlUnVsZUNsYXNzLCBjc3NSdWxlQ2xhc3M+OjpsZW5ndGgoKSBjb25zdAoreyAKKyAg
ICByZXR1cm4gbV9ibG9ja1J1bGUtPmNoaWxkUnVsZXMoKS5zaXplKCk7IAorfQorCit0ZW1wbGF0
ZTxjbGFzcyBzdHlsZVJ1bGVDbGFzcywgY2xhc3MgY3NzUnVsZUNsYXNzPgorQ1NTUnVsZSogQ1NT
QmxvY2tSdWxlPHN0eWxlUnVsZUNsYXNzLCBjc3NSdWxlQ2xhc3M+OjppdGVtKHVuc2lnbmVkIGlu
ZGV4KSBjb25zdAoreyAKKyAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkpCisgICAgICAgIHJldHVy
biAwOworICAgIEFTU0VSVChtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuc2l6ZSgpID09IG1fYmxv
Y2tSdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgpKTsKKyAgICBSZWZQdHI8Q1NTUnVsZT4mIHJ1bGUg
PSBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnNbaW5kZXhdOworICAgIGlmICghcnVsZSkKKyAgICAg
ICAgcnVsZSA9IG1fYmxvY2tSdWxlLT5jaGlsZFJ1bGVzKClbaW5kZXhdLT5jcmVhdGVDU1NPTVdy
YXBwZXIoc3RhdGljX2Nhc3Q8Y3NzUnVsZUNsYXNzKj4oY29uc3RfY2FzdDxDU1NCbG9ja1J1bGU8
c3R5bGVSdWxlQ2xhc3MsIGNzc1J1bGVDbGFzcz4qPih0aGlzKSkpOworICAgIHJldHVybiBydWxl
LmdldCgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBzdHlsZVJ1bGVDbGFzcywgY2xhc3MgY3NzUnVs
ZUNsYXNzPgorQ1NTUnVsZUxpc3QqIENTU0Jsb2NrUnVsZTxzdHlsZVJ1bGVDbGFzcywgY3NzUnVs
ZUNsYXNzPjo6Y3NzUnVsZXMoKSBjb25zdAoreworICAgIGlmICghbV9ydWxlTGlzdENTU09NV3Jh
cHBlcikKKyAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IGFkb3B0UHRyKG5ldyBMaXZl
Q1NTUnVsZUxpc3Q8Y3NzUnVsZUNsYXNzPihzdGF0aWNfY2FzdDxjc3NSdWxlQ2xhc3MqPihjb25z
dF9jYXN0PENTU0Jsb2NrUnVsZTxzdHlsZVJ1bGVDbGFzcywgY3NzUnVsZUNsYXNzPio+KHRoaXMp
KSkpOworICAgIHJldHVybiBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyLmdldCgpOworfQorCit0ZW1w
bGF0ZTxjbGFzcyBzdHlsZVJ1bGVDbGFzcywgY2xhc3MgY3NzUnVsZUNsYXNzPgordm9pZCBDU1NC
bG9ja1J1bGU8c3R5bGVSdWxlQ2xhc3MsIGNzc1J1bGVDbGFzcz46OnJlYXR0YWNoKFN0eWxlUnVs
ZUJhc2UqIHJ1bGUpCit7CisgICAgQVNTRVJUKHJ1bGUpOworICAgIG1fYmxvY2tSdWxlID0gc3Rh
dGljX2Nhc3Q8c3R5bGVSdWxlQ2xhc3MqPihydWxlKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlm
IChtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnNbaV0pCisgICAgICAgICAgICBtX2NoaWxkUnVsZUNT
U09NV3JhcHBlcnNbaV0tPnJlYXR0YWNoKG1fYmxvY2tSdWxlLT5jaGlsZFJ1bGVzKClbaV0uZ2V0
KCkpOworICAgIH0KK30KKwordGVtcGxhdGU8Y2xhc3Mgc3R5bGVSdWxlQ2xhc3MsIGNsYXNzIGNz
c1J1bGVDbGFzcz4KK3ZvaWQgQ1NTQmxvY2tSdWxlPHN0eWxlUnVsZUNsYXNzLCBjc3NSdWxlQ2xh
c3M+OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZv
KSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRo
aXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKKyAgICBDU1NSdWxlOjpyZXBvcnRNZW1vcnlV
c2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2NoaWxkUnVsZUNT
U09NV3JhcHBlcnMpOworICAgIGluZm8uYWRkTWVtYmVyKG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NCbG9ja1J1bGVf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmNwcAppbmRleCBmYzg2MjRkYTA5MWViZGI2YTI3
ZDhmNzM5ZGI2ZjkwMTc2MzQyOWU5Li5kYzI4NzVlMGM3Mzg2ZWRkYWYwNDZhYTZkOTg2OWRjNDlh
ODIxMDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmNwcApAQCAtMzUsMTU1ICszNSw1
MSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDU1NNZWRpYVJ1bGU6OkNTU01lZGlhUnVsZShT
dHlsZVJ1bGVNZWRpYSogbWVkaWFSdWxlLCBDU1NTdHlsZVNoZWV0KiBwYXJlbnQpCi0gICAgOiBD
U1NSdWxlKHBhcmVudCkKLSAgICAsIG1fbWVkaWFSdWxlKG1lZGlhUnVsZSkKLSAgICAsIG1fY2hp
bGRSdWxlQ1NTT01XcmFwcGVycyhtZWRpYVJ1bGUtPmNoaWxkUnVsZXMoKS5zaXplKCkpCisgICAg
OiBDU1NCbG9ja1J1bGU8U3R5bGVSdWxlTWVkaWEsIENTU01lZGlhUnVsZT4obWVkaWFSdWxlLCBw
YXJlbnQpCiB7CiB9CiAKIENTU01lZGlhUnVsZTo6fkNTU01lZGlhUnVsZSgpCiB7Ci0gICAgQVNT
RVJUKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCkgPT0gbV9tZWRpYVJ1bGUtPmNoaWxk
UnVsZXMoKS5zaXplKCkpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY2hpbGRS
dWxlQ1NTT01XcmFwcGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9jaGlsZFJ1bGVD
U1NPTVdyYXBwZXJzW2ldKQotICAgICAgICAgICAgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2ld
LT5zZXRQYXJlbnRSdWxlKDApOwotICAgIH0KICAgICBpZiAobV9tZWRpYUNTU09NV3JhcHBlcikK
ICAgICAgICAgbV9tZWRpYUNTU09NV3JhcHBlci0+Y2xlYXJQYXJlbnRSdWxlKCk7CiB9CiAKLXVu
c2lnbmVkIENTU01lZGlhUnVsZTo6aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGVTdHJpbmcs
IHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBBU1NFUlQobV9jaGls
ZFJ1bGVDU1NPTVdyYXBwZXJzLnNpemUoKSA9PSBtX21lZGlhUnVsZS0+Y2hpbGRSdWxlcygpLnNp
emUoKSk7Ci0KLSAgICBpZiAoaW5kZXggPiBtX21lZGlhUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUo
KSkgewotICAgICAgICAvLyBJTkRFWF9TSVpFX0VSUjogUmFpc2VkIGlmIHRoZSBzcGVjaWZpZWQg
aW5kZXggaXMgbm90IGEgdmFsaWQgaW5zZXJ0aW9uIHBvaW50LgotICAgICAgICBlYyA9IElOREVY
X1NJWkVfRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBDU1NQYXJzZXIgcGFy
c2VyKHBhcnNlckNvbnRleHQoKSk7Ci0gICAgQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHBh
cmVudFN0eWxlU2hlZXQoKTsKLSAgICBSZWZQdHI8U3R5bGVSdWxlQmFzZT4gbmV3UnVsZSA9IHBh
cnNlci5wYXJzZVJ1bGUoc3R5bGVTaGVldCA/IHN0eWxlU2hlZXQtPmNvbnRlbnRzKCkgOiAwLCBy
dWxlU3RyaW5nKTsKLSAgICBpZiAoIW5ld1J1bGUpIHsKLSAgICAgICAgLy8gU1lOVEFYX0VSUjog
UmFpc2VkIGlmIHRoZSBzcGVjaWZpZWQgcnVsZSBoYXMgYSBzeW50YXggZXJyb3IgYW5kIGlzIHVu
cGFyc2FibGUuCi0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgfQotCi0gICAgaWYgKG5ld1J1bGUtPmlzSW1wb3J0UnVsZSgpKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBhbiBISUVSQVJDSFlfUkVRVUVTVF9FUlIgc2hvdWxkIGFsc28gYmUgdGhyb3duIGZvciBh
IEBjaGFyc2V0IG9yIGEgbmVzdGVkCi0gICAgICAgIC8vIEBtZWRpYSBydWxlLiAgVGhleSBhcmUg
Y3VycmVudGx5IG5vdCBnZXR0aW5nIHBhcnNlZCwgcmVzdWx0aW5nIGluIGEgU1lOVEFYX0VSUgot
ICAgICAgICAvLyB0byBnZXQgcmFpc2VkIGFib3ZlLgotCi0gICAgICAgIC8vIEhJRVJBUkNIWV9S
RVFVRVNUX0VSUjogUmFpc2VkIGlmIHRoZSBydWxlIGNhbm5vdCBiZSBpbnNlcnRlZCBhdCB0aGUg
c3BlY2lmaWVkCi0gICAgICAgIC8vIGluZGV4LCBlLmcuLCBpZiBhbiBAaW1wb3J0IHJ1bGUgaXMg
aW5zZXJ0ZWQgYWZ0ZXIgYSBzdGFuZGFyZCBydWxlIHNldCBvciBvdGhlcgotICAgICAgICAvLyBh
dC1ydWxlLgotICAgICAgICBlYyA9IEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgfQotICAgIENTU1N0eWxlU2hlZXQ6OlJ1bGVNdXRhdGlvblNjb3BlIG11dGF0
aW9uU2NvcGUodGhpcyk7Ci0KLSAgICBtX21lZGlhUnVsZS0+d3JhcHBlckluc2VydFJ1bGUoaW5k
ZXgsIG5ld1J1bGUpOwotCi0gICAgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLmluc2VydChpbmRl
eCwgUmVmUHRyPENTU1J1bGU+KCkpOwotICAgIHJldHVybiBpbmRleDsKLX0KLQotdm9pZCBDU1NN
ZWRpYVJ1bGU6OmRlbGV0ZVJ1bGUodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQot
ewotICAgIEFTU0VSVChtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuc2l6ZSgpID09IG1fbWVkaWFS
dWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgpKTsKLQotICAgIGlmIChpbmRleCA+PSBtX21lZGlhUnVs
ZS0+Y2hpbGRSdWxlcygpLnNpemUoKSkgewotICAgICAgICAvLyBJTkRFWF9TSVpFX0VSUjogUmFp
c2VkIGlmIHRoZSBzcGVjaWZpZWQgaW5kZXggZG9lcyBub3QgY29ycmVzcG9uZCB0byBhCi0gICAg
ICAgIC8vIHJ1bGUgaW4gdGhlIG1lZGlhIHJ1bGUgbGlzdC4KLSAgICAgICAgZWMgPSBJTkRFWF9T
SVpFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIENTU1N0eWxlU2hlZXQ6OlJ1
bGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7Ci0KLSAgICBtX21lZGlhUnVsZS0+
d3JhcHBlclJlbW92ZVJ1bGUoaW5kZXgpOwotCi0gICAgaWYgKG1fY2hpbGRSdWxlQ1NTT01XcmFw
cGVyc1tpbmRleF0pCi0gICAgICAgIG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpbmRleF0tPnNl
dFBhcmVudFJ1bGUoMCk7Ci0gICAgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLnJlbW92ZShpbmRl
eCk7Ci19Ci0KIFN0cmluZyBDU1NNZWRpYVJ1bGU6OmNzc1RleHQoKSBjb25zdAogewogICAgIFN0
cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5hcHBlbmQoIkBtZWRpYSAiKTsKLSAgICBp
ZiAobV9tZWRpYVJ1bGUtPm1lZGlhUXVlcmllcygpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQo
bV9tZWRpYVJ1bGUtPm1lZGlhUXVlcmllcygpLT5tZWRpYVRleHQoKSk7CisgICAgcmVzdWx0LmFw
cGVuZExpdGVyYWwoIkBtZWRpYSAiKTsKKyAgICBpZiAobV9ibG9ja1J1bGUtPm1lZGlhUXVlcmll
cygpKSB7CisgICAgICAgIHJlc3VsdC5hcHBlbmQobV9ibG9ja1J1bGUtPm1lZGlhUXVlcmllcygp
LT5tZWRpYVRleHQoKSk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKICAgICB9Ci0gICAg
cmVzdWx0LmFwcGVuZCgieyBcbiIpOwotICAgIAotICAgIHVuc2lnbmVkIHNpemUgPSBsZW5ndGgo
KTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIHJl
c3VsdC5hcHBlbmQoIiAgIik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoaXRlbShpKS0+Y3NzVGV4
dCgpKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKTsKLSAgICB9Ci0KKyAgICByZXN1bHQu
YXBwZW5kTGl0ZXJhbCgieyBcbiIpOworICAgIGFwcGVuZENzc1RleHRGb3JJdGVtcyhyZXN1bHQp
OwogICAgIHJlc3VsdC5hcHBlbmQoJ30nKTsKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7
CiB9CiAKIE1lZGlhTGlzdCogQ1NTTWVkaWFSdWxlOjptZWRpYSgpIGNvbnN0CiB7Ci0gICAgaWYg
KCFtX21lZGlhUnVsZS0+bWVkaWFRdWVyaWVzKCkpCisgICAgaWYgKCFtX2Jsb2NrUnVsZS0+bWVk
aWFRdWVyaWVzKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICghbV9tZWRpYUNTU09NV3Jh
cHBlcikKLSAgICAgICAgbV9tZWRpYUNTU09NV3JhcHBlciA9IE1lZGlhTGlzdDo6Y3JlYXRlKG1f
bWVkaWFSdWxlLT5tZWRpYVF1ZXJpZXMoKSwgY29uc3RfY2FzdDxDU1NNZWRpYVJ1bGUqPih0aGlz
KSk7CisgICAgICAgIG1fbWVkaWFDU1NPTVdyYXBwZXIgPSBNZWRpYUxpc3Q6OmNyZWF0ZShtX2Js
b2NrUnVsZS0+bWVkaWFRdWVyaWVzKCksIGNvbnN0X2Nhc3Q8Q1NTTWVkaWFSdWxlKj4odGhpcykp
OwogICAgIHJldHVybiBtX21lZGlhQ1NTT01XcmFwcGVyLmdldCgpOwogfQogCi11bnNpZ25lZCBD
U1NNZWRpYVJ1bGU6Omxlbmd0aCgpIGNvbnN0Ci17IAotICAgIHJldHVybiBtX21lZGlhUnVsZS0+
Y2hpbGRSdWxlcygpLnNpemUoKTsgCi19Ci0KLUNTU1J1bGUqIENTU01lZGlhUnVsZTo6aXRlbSh1
bnNpZ25lZCBpbmRleCkgY29uc3QKLXsgCi0gICAgaWYgKGluZGV4ID49IGxlbmd0aCgpKQotICAg
ICAgICByZXR1cm4gMDsKLSAgICBBU1NFUlQobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLnNpemUo
KSA9PSBtX21lZGlhUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUoKSk7Ci0gICAgUmVmUHRyPENTU1J1
bGU+JiBydWxlID0gbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2luZGV4XTsKLSAgICBpZiAoIXJ1
bGUpCi0gICAgICAgIHJ1bGUgPSBtX21lZGlhUnVsZS0+Y2hpbGRSdWxlcygpW2luZGV4XS0+Y3Jl
YXRlQ1NTT01XcmFwcGVyKGNvbnN0X2Nhc3Q8Q1NTTWVkaWFSdWxlKj4odGhpcykpOwotICAgIHJl
dHVybiBydWxlLmdldCgpOwotfQotCi1DU1NSdWxlTGlzdCogQ1NTTWVkaWFSdWxlOjpjc3NSdWxl
cygpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX3J1bGVMaXN0Q1NTT01XcmFwcGVyKQotICAgICAgICBt
X3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gYWRvcHRQdHIobmV3IExpdmVDU1NSdWxlTGlzdDxDU1NN
ZWRpYVJ1bGU+KGNvbnN0X2Nhc3Q8Q1NTTWVkaWFSdWxlKj4odGhpcykpKTsKLSAgICByZXR1cm4g
bV9ydWxlTGlzdENTU09NV3JhcHBlci5nZXQoKTsKLX0KLQogdm9pZCBDU1NNZWRpYVJ1bGU6OnJl
YXR0YWNoKFN0eWxlUnVsZUJhc2UqIHJ1bGUpCiB7Ci0gICAgQVNTRVJUKHJ1bGUpOwotICAgIEFT
U0VSVChydWxlLT5pc01lZGlhUnVsZSgpKTsKLSAgICBtX21lZGlhUnVsZSA9IHN0YXRpY19jYXN0
PFN0eWxlUnVsZU1lZGlhKj4ocnVsZSk7Ci0gICAgaWYgKG1fbWVkaWFDU1NPTVdyYXBwZXIgJiYg
bV9tZWRpYVJ1bGUtPm1lZGlhUXVlcmllcygpKQotICAgICAgICBtX21lZGlhQ1NTT01XcmFwcGVy
LT5yZWF0dGFjaChtX21lZGlhUnVsZS0+bWVkaWFRdWVyaWVzKCkpOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgaWYgKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpXSkKLSAgICAgICAgICAgIG1fY2hp
bGRSdWxlQ1NTT01XcmFwcGVyc1tpXS0+cmVhdHRhY2gobV9tZWRpYVJ1bGUtPmNoaWxkUnVsZXMo
KVtpXS5nZXQoKSk7Ci0gICAgfQorICAgIENTU0Jsb2NrUnVsZTxTdHlsZVJ1bGVNZWRpYSwgQ1NT
TWVkaWFSdWxlPjo6cmVhdHRhY2gocnVsZSk7CisgICAgaWYgKG1fbWVkaWFDU1NPTVdyYXBwZXIg
JiYgbV9ibG9ja1J1bGUtPm1lZGlhUXVlcmllcygpKQorICAgICAgICBtX21lZGlhQ1NTT01XcmFw
cGVyLT5yZWF0dGFjaChtX2Jsb2NrUnVsZS0+bWVkaWFRdWVyaWVzKCkpOwogfQogCiB2b2lkIENT
U01lZGlhUnVsZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2Jq
ZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJ
bmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7Ci0gICAgQ1NTUnVsZTo6cmVwb3J0
TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgQ1NTQmxvY2tSdWxlPFN0eWxlUnVs
ZU1lZGlhLCBDU1NNZWRpYVJ1bGU+OjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZv
KTsKICAgICBpbmZvLmFkZE1lbWJlcihtX21lZGlhQ1NTT01XcmFwcGVyKTsKLSAgICBpbmZvLmFk
ZE1lbWJlcihtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMpOwotICAgIGluZm8uYWRkTWVtYmVyKG1f
cnVsZUxpc3RDU1NPTVdyYXBwZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTTWVkaWFSdWxlLmgKaW5kZXggODc4MzU5NDg0YjQ3ZTE0NDk4MTA1MTRiNGM5ZGM4
ZTRkODMzNzQ1OC4uNTcxMDg2NDRlZmZkODZiOTNjNjQ4NzY1YjNkMzAwNzRhNGRhZWMzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaApAQCAtMjMsMTUgKzIzLDE0IEBACiAjaWZuZGVmIENT
U01lZGlhUnVsZV9oCiAjZGVmaW5lIENTU01lZGlhUnVsZV9oCiAKLSNpbmNsdWRlICJDU1NSdWxl
LmgiCisjaW5jbHVkZSAiQ1NTQmxvY2tSdWxlLmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ1NTUnVsZUxpc3Q7CiBjbGFzcyBTdHlsZVJ1
bGVNZWRpYTsKIAotY2xhc3MgQ1NTTWVkaWFSdWxlIDogcHVibGljIENTU1J1bGUgeworY2xhc3Mg
Q1NTTWVkaWFSdWxlIDogcHVibGljIENTU0Jsb2NrUnVsZTxTdHlsZVJ1bGVNZWRpYSwgQ1NTTWVk
aWFSdWxlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTTWVkaWFSdWxlPiBj
cmVhdGUoU3R5bGVSdWxlTWVkaWEqIHJ1bGUsIENTU1N0eWxlU2hlZXQqIHNoZWV0KSB7IHJldHVy
biBhZG9wdFJlZihuZXcgQ1NTTWVkaWFSdWxlKHJ1bGUsIHNoZWV0KSk7IH0KIApAQCAtNDMsMjIg
KzQyLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3QgT1ZF
UlJJREU7CiAKICAgICBNZWRpYUxpc3QqIG1lZGlhKCkgY29uc3Q7Ci0gICAgQ1NTUnVsZUxpc3Qq
IGNzc1J1bGVzKCkgY29uc3Q7Ci0KLSAgICB1bnNpZ25lZCBpbnNlcnRSdWxlKGNvbnN0IFN0cmlu
ZyYgcnVsZSwgdW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGRlbGV0
ZVJ1bGUodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgCi0gICAgLy8g
Rm9yIENTU1J1bGVMaXN0Ci0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgQ1NTUnVs
ZSogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgQ1NTTWVkaWFS
dWxlKFN0eWxlUnVsZU1lZGlhKiwgQ1NTU3R5bGVTaGVldCopOwogICAgIAotICAgIFJlZlB0cjxT
dHlsZVJ1bGVNZWRpYT4gbV9tZWRpYVJ1bGU7CiAgICAgbXV0YWJsZSBSZWZQdHI8TWVkaWFMaXN0
PiBtX21lZGlhQ1NTT01XcmFwcGVyOwotICAgIG11dGFibGUgVmVjdG9yPFJlZlB0cjxDU1NSdWxl
PiA+IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyczsKLSAgICBtdXRhYmxlIE93blB0cjxDU1NSdWxl
TGlzdD4gbV9ydWxlTGlzdENTU09NV3JhcHBlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmNwcAppbmRleCA2OGRi
OTY0MWNiMjdlMDk0OTYwMmI1NDFhYWU2NDNkYmQ0NWY5ZmYyLi5jYjMwNjM2MmUyYTYxZTQ4OGQy
NjFkZjAxNTY0NzM4MjZlMGRjNjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2Vi
S2l0Q1NTUmVnaW9uUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1Jl
Z2lvblJ1bGUuY3BwCkBAIC00Miw4NCArNDIsMjUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
V2ViS2l0Q1NTUmVnaW9uUnVsZTo6V2ViS2l0Q1NTUmVnaW9uUnVsZShTdHlsZVJ1bGVSZWdpb24q
IHJlZ2lvblJ1bGUsIENTU1N0eWxlU2hlZXQqIHBhcmVudCkKLSAgICA6IENTU1J1bGUocGFyZW50
KQotICAgICwgbV9yZWdpb25SdWxlKHJlZ2lvblJ1bGUpCi0gICAgLCBtX2NoaWxkUnVsZUNTU09N
V3JhcHBlcnMocmVnaW9uUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUoKSkKKyAgICA6IENTU0Jsb2Nr
UnVsZTxTdHlsZVJ1bGVSZWdpb24sIFdlYktpdENTU1JlZ2lvblJ1bGU+KHJlZ2lvblJ1bGUsIHBh
cmVudCkKIHsKIH0KIAotV2ViS2l0Q1NTUmVnaW9uUnVsZTo6fldlYktpdENTU1JlZ2lvblJ1bGUo
KQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NoaWxkUnVsZUNTU09NV3JhcHBl
cnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tp
XSkKLSAgICAgICAgICAgIG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpXS0+c2V0UGFyZW50UnVs
ZSgwKTsKLSAgICB9Ci19Ci0KIFN0cmluZyBXZWJLaXRDU1NSZWdpb25SdWxlOjpjc3NUZXh0KCkg
Y29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5kKCJA
LXdlYmtpdC1yZWdpb24gIik7CisgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIkAtd2Via2l0LXJl
Z2lvbiAiKTsKIAogICAgIC8vIEZpcnN0IGFkZCB0aGUgc2VsZWN0b3JzLgotICAgIHJlc3VsdC5h
cHBlbmQobV9yZWdpb25SdWxlLT5zZWxlY3Rvckxpc3QoKS5zZWxlY3RvcnNUZXh0KCkpOworICAg
IHJlc3VsdC5hcHBlbmQobV9ibG9ja1J1bGUtPnNlbGVjdG9yTGlzdCgpLnNlbGVjdG9yc1RleHQo
KSk7CiAKICAgICAvLyBUaGVuIGFkZCB0aGUgcnVsZXMuCi0gICAgcmVzdWx0LmFwcGVuZCgiIHsg
XG4iKTsKLQotICAgIHVuc2lnbmVkIHNpemUgPSBsZW5ndGgoKTsKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoIiAgIik7Ci0g
ICAgICAgIHJlc3VsdC5hcHBlbmQoaXRlbShpKS0+Y3NzVGV4dCgpKTsKLSAgICAgICAgcmVzdWx0
LmFwcGVuZCgiXG4iKTsKLSAgICB9Ci0gICAgcmVzdWx0LmFwcGVuZCgifSIpOworICAgIHJlc3Vs
dC5hcHBlbmRMaXRlcmFsKCIgeyBcbiIpOworICAgIGFwcGVuZENzc1RleHRGb3JJdGVtcyhyZXN1
bHQpOworICAgIHJlc3VsdC5hcHBlbmQoJ30nKTsKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5n
KCk7CiB9CiAKLXVuc2lnbmVkIFdlYktpdENTU1JlZ2lvblJ1bGU6Omxlbmd0aCgpIGNvbnN0Ci17
IAotICAgIHJldHVybiBtX3JlZ2lvblJ1bGUtPmNoaWxkUnVsZXMoKS5zaXplKCk7IAotfQotCi1D
U1NSdWxlKiBXZWJLaXRDU1NSZWdpb25SdWxlOjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAot
eyAKLSAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIEFT
U0VSVChtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuc2l6ZSgpID09IG1fcmVnaW9uUnVsZS0+Y2hp
bGRSdWxlcygpLnNpemUoKSk7Ci0gICAgUmVmUHRyPENTU1J1bGU+JiBydWxlID0gbV9jaGlsZFJ1
bGVDU1NPTVdyYXBwZXJzW2luZGV4XTsKLSAgICBpZiAoIXJ1bGUpCi0gICAgICAgIHJ1bGUgPSBt
X3JlZ2lvblJ1bGUtPmNoaWxkUnVsZXMoKVtpbmRleF0tPmNyZWF0ZUNTU09NV3JhcHBlcihjb25z
dF9jYXN0PFdlYktpdENTU1JlZ2lvblJ1bGUqPih0aGlzKSk7Ci0gICAgcmV0dXJuIHJ1bGUuZ2V0
KCk7Ci19Ci0KLUNTU1J1bGVMaXN0KiBXZWJLaXRDU1NSZWdpb25SdWxlOjpjc3NSdWxlcygpIGNv
bnN0Ci17Ci0gICAgaWYgKCFtX3J1bGVMaXN0Q1NTT01XcmFwcGVyKQotICAgICAgICBtX3J1bGVM
aXN0Q1NTT01XcmFwcGVyID0gYWRvcHRQdHIobmV3IExpdmVDU1NSdWxlTGlzdDxXZWJLaXRDU1NS
ZWdpb25SdWxlPihjb25zdF9jYXN0PFdlYktpdENTU1JlZ2lvblJ1bGUqPih0aGlzKSkpOwotICAg
IHJldHVybiBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyLmdldCgpOwotfQotCi12b2lkIFdlYktpdENT
U1JlZ2lvblJ1bGU6OnJlYXR0YWNoKFN0eWxlUnVsZUJhc2UqIHJ1bGUpCi17Ci0gICAgQVNTRVJU
KHJ1bGUpOwotICAgIEFTU0VSVChydWxlLT5pc1JlZ2lvblJ1bGUoKSk7Ci0gICAgbV9yZWdpb25S
dWxlID0gc3RhdGljX2Nhc3Q8U3R5bGVSdWxlUmVnaW9uKj4ocnVsZSk7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCk7ICsraSkgewot
ICAgICAgICBpZiAobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2ldKQotICAgICAgICAgICAgbV9j
aGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2ldLT5yZWF0dGFjaChtX3JlZ2lvblJ1bGUtPmNoaWxkUnVs
ZXMoKVtpXS5nZXQoKSk7Ci0gICAgfQotfQotCi12b2lkIFdlYktpdENTU1JlZ2lvblJ1bGU6OnJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0
Ci17Ci0gICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2Vi
Q29yZU1lbW9yeVR5cGVzOjpDU1MpOwotICAgIENTU1J1bGU6OnJlcG9ydE1lbW9yeVVzYWdlKG1l
bW9yeU9iamVjdEluZm8pOwotICAgIGluZm8uYWRkTWVtYmVyKG1fcmVnaW9uUnVsZSk7Ci0gICAg
aW5mby5hZGRNZW1iZXIobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzKTsKLSAgICBpbmZvLmFkZE1l
bWJlcihtX3J1bGVMaXN0Q1NTT01XcmFwcGVyKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdp
b25SdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5oCmluZGV4
IGE2OGJhMTFkNTBjZDNkNzkxZTBlZGU1Y2UyOGI5NjExNjNlMGJiNDguLjBmMzJmYjFhMDc5MDE0
OGVjYTU0MzdkOWYzY2FhZTQ3MGFkMmVlYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9XZWJLaXRDU1NSZWdpb25SdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U1JlZ2lvblJ1bGUuaApAQCAtMzEsNDEgKzMxLDI0IEBACiAjaWZuZGVmIFdlYktpdENTU1JlZ2lv
blJ1bGVfaAogI2RlZmluZSBXZWJLaXRDU1NSZWdpb25SdWxlX2gKIAotI2luY2x1ZGUgIkNTU1J1
bGUuaCIKKyNpbmNsdWRlICJDU1NCbG9ja1J1bGUuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKICNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQ1NTUnVsZUxpc3Q7CiBjbGFzcyBTdHlsZVJ1bGVSZWdpb247CiAKLWNsYXNzIFdlYktpdENT
U1JlZ2lvblJ1bGUgOiBwdWJsaWMgQ1NTUnVsZSB7CitjbGFzcyBXZWJLaXRDU1NSZWdpb25SdWxl
IDogcHVibGljIENTU0Jsb2NrUnVsZTxTdHlsZVJ1bGVSZWdpb24sIFdlYktpdENTU1JlZ2lvblJ1
bGU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJLaXRDU1NSZWdpb25SdWxl
PiBjcmVhdGUoU3R5bGVSdWxlUmVnaW9uKiBydWxlLCBDU1NTdHlsZVNoZWV0KiBzaGVldCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdENTU1JlZ2lvblJ1bGUocnVsZSwgc2hlZXQpKTsgfQog
Ci0gICAgdmlydHVhbCB+V2ViS2l0Q1NTUmVnaW9uUnVsZSgpOwotCiAgICAgdmlydHVhbCBDU1NS
dWxlOjpUeXBlIHR5cGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBXRUJLSVRfUkVHSU9OX1JV
TEU7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCB2b2lkIHJlYXR0YWNoKFN0eWxlUnVsZUJhc2UqKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJS
SURFOwotCi0gICAgQ1NTUnVsZUxpc3QqIGNzc1J1bGVzKCkgY29uc3Q7Ci0gICAgCi0gICAgLy8g
Rm9yIENTU1J1bGVMaXN0Ci0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgQ1NTUnVs
ZSogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgV2ViS2l0Q1NT
UmVnaW9uUnVsZShTdHlsZVJ1bGVSZWdpb24qLCBDU1NTdHlsZVNoZWV0KiBwYXJlbnQpOwotCi0g
ICAgUmVmUHRyPFN0eWxlUnVsZVJlZ2lvbj4gbV9yZWdpb25SdWxlOwotICAgIG11dGFibGUgVmVj
dG9yPFJlZlB0cjxDU1NSdWxlPiA+IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyczsKLSAgICBtdXRh
YmxlIE93blB0cjxDU1NSdWxlTGlzdD4gbV9ydWxlTGlzdENTU09NV3JhcHBlcjsKLSAgICAKLSAg
ICBmcmllbmQgY2xhc3MgU3R5bGVSdWxlQmxvY2s7CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182065</attachid>
            <date>2013-01-09 22:24:13 -0800</date>
            <delta_ts>2013-01-10 00:33:21 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-106418-20130110152116.patch</filename>
            <type>text/plain</type>
            <size>27966</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxODVlMzQ0NDYyY2U4NDIxN2E5OTE5MzRmYWM2ZTZhOGIxYTEwM2Y1Li42
ZTM5MjA2ZWJiZTRiZmI0ZTA2NGQ4NjZlOTBmMDIyM2RkM2E3Y2NmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjQgQEAKKzIwMTMtMDEtMDggIFRha2FzaGkgU2FrYW1vdG8gIDx0YXNha0Bnb29nbGUu
Y29tPgorCisgICAgICAgIFJlZmFjdG9yaW5nIGNsYXNzIENTU01lZGlhUnVsZSBhbmQgY2xhc3Mg
V2ViS2l0Q1NTUmVnaW9uUnVsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA2NDE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgY2xhc3MgQ1NTTWVkaWFSdWxlIGFuZCBjbGFzcyBXZWJLaXRDU1NSZWdpb25S
dWxlIGNhbiBzaGFyZSBtb3N0IG9mCisgICAgICAgIHRoZWlyIGltcGxlbWVudGF0aW9ucywgYmVj
YXVzZSB0aGVpciBpbnRlcmZhY2VzIChkZWZpbmVkIGluIHRoZSBJREwKKyAgICAgICAgZmlsZXMp
IGFyZSBhbG1vc3QgdGhlIHNhbWUgKGV4Y2VwdCBtZWRpYSwgcmVhZG9ubHkgYXR0cmlidXRlIGlu
CisgICAgICAgIENTU01lZGlhUnVsZS5pZGwpLiBUaGlzIHJlZmFjdG9yaW5nIGlzIHJlcXVpcmVk
IGJ5IEBzdXBwb3J0cyBydWxlcyBhbmQKKyAgICAgICAgQGhvc3QgQC1ydWxlcy4gVGhlc2UgcnVs
ZXMgd2lsbCBhbHNvIGhhdmUgdGhlIHNhbWUgY29kZSBhcyBDU1NNZWRpYVJ1bGUKKyAgICAgICAg
YW5kIFdlYktpdENTU1JlZ2lvblJ1bGUgKFdLMTA0ODIyIGFuZCBXSzEwMjM0NCkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCBqdXN0IHJlZmFjdG9yaW5nLgorCisgICAgICAgICogR05VbWFrZWZp
bGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICBBZGRlZCBDU1NHcm91cGluZ1J1bGUuaC4KKyAgICAgICAgKiBj
c3MvQ1NTR3JvdXBpbmdSdWxlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENTU0dy
b3VwaW5nUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcm91cGluZ1J1bGU6On5DU1NHcm91
cGluZ1J1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JvdXBpbmdSdWxlOjpDU1NHcm91cGlu
Z1J1bGUpOgorICAgICAgICAoV2ViQ29yZTo6OjppbnNlcnRSdWxlKToKKyAgICAgICAgKFdlYkNv
cmU6Ojo6ZGVsZXRlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjo6Omxlbmd0aCk6CisgICAgICAg
IChXZWJDb3JlOjo6Oml0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6OjpyZWF0dGFjaCk6CisgICAg
ICAgIChXZWJDb3JlOjo6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgTW92ZWQgdGhlIHNh
bWUgcGFydHMgdXNlZCBpbiBjbGFzcyBDU1NNZWRpYVJ1bGUgYW5kIGNsYXNzCisgICAgICAgIFdl
YktpdENTU1JlZ2lvblJ1bGUgdG8gQ1NTR3JvdXBpbmdSdWxlLiBXZWJLaXRDU1NLZXlGcmFtZXNS
dWxlIGlzCisgICAgICAgIGRpZmZlcmVudCBmcm9tIENTU01lZGlhUnVsZSBhbmQgV2ViS2l0Q1NT
UmVnaW9uUnVsZSBpbiBJREwgbGV2ZWwuCisgICAgICAgIENTU01lZGlhUnVsZSBhbmQgV2ViS2l0
Q1NTUmVnaW9uUnVsZSBoYXZlIHRoZSBhbG1vc3Qgc2FtZSBpbnRlcmZhY2UKKyAgICAgICAgZXhj
ZXB0IG1lZGlhLgorICAgICAgICAoV2ViQ29yZTo6Ojpjc3NSdWxlcyk6CisgICAgICAgIENoYW5n
ZWQgY29uc3QgbWV0aG9kIHRvIG5vLWNvbnN0IG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6Ojo6
YXBwZW5kQ3NzVGV4dEZvckl0ZW1zKToKKyAgICAgICAgVGhpcyBtZXRob2QgaXMgaW52b2tlZCBm
cm9tIGNzc1RleHQgaW4gZGVyaXZlZCBjbGFzc2VzLCBlLmcuCisgICAgICAgIENTU01lZGlhUnVs
ZTo6Y3NzVGV4dC4gQ3JlYXRlIGEgc3RyaW5nIGZvciBDU1MgcnVsZXMgZnJvbSBpdGVtcy4KKyAg
ICAgICAgKiBjc3MvQ1NTTWVkaWFSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU01lZGlh
UnVsZTo6Q1NTTWVkaWFSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU01lZGlhUnVsZTo6fkNT
U01lZGlhUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNZWRpYVJ1bGU6OmNzc1RleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTTWVkaWFSdWxlOjptZWRpYSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NNZWRpYVJ1bGU6OnJlYXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU01lZGlhUnVs
ZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICBDU1NNZWRpYVJ1bGUgaXMgYSBsaXR0bGUg
ZGlmZmVyZW50IGZyb20gV2ViS2l0Q1NTUmVnaW9uUnVsZS4KKyAgICAgICAgQ1NTTWVkaWFSdWxl
IGhhcyBpdHMgb3duIG1ldGhvZCAoaS5lLiBtZWRpYSkgYW5kIGl0cyBvd24gbWVtYmVyCisgICAg
ICAgIHZhcmlhYmxlcyAoaS5lLiBtX21lZGlhQ1NTT01XcmFwcGVyKS4gU28gaXQgaXMgcmVxdWly
ZWQKKyAgICAgICAgdG8gdXBkYXRlIG1fbWVkaWFDU1NPTVdyYXBwZXIgaW4gcmVhdHRhY2ggYW5k
IH5DU1NNZWRpYVJ1bGUuCisgICAgICAgICogY3NzL0NTU01lZGlhUnVsZS5oOgorICAgICAgICBN
b2RpZnkgdG8gaW5oZXJpdCBDU1NHcm91cGluZ1J1bGUuCisgICAgICAgICogY3NzL1dlYktpdENT
U1JlZ2lvblJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTUmVnaW9uUnVsZTo6
V2ViS2l0Q1NTUmVnaW9uUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NSZWdpb25S
dWxlOjpjc3NUZXh0KToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5oOgorICAg
ICAgICBNb2RpZnkgdG8gaW5oZXJpdCBDU1NHcm91cGluZ1J1bGUuCisKIDIwMTMtMDEtMDkgIFRv
bnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgdW51
c2VkIGluY2x1ZGVzIGZyb20gSFRNTFRyZWVCdWlsZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCAwMjI1OWM0M2M1MjA0MGNiMTRjY2JhMzdhOTVmMTJjNDA0OWMxOWM2Li4zMDBj
NTJjZjhiZDY1NDIzZjYzOTE4M2JlNjc0MWY4NTY2YTAxMGUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KQEAgLTI1NDUsNiArMjU0NSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaCBcCiAJU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGll
bnRWYWx1ZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmggXAogCVNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NIZWxwZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
YWdlR2VuZXJhdG9yVmFsdWUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjZjRlOWQyZmI2MzkzZjJiZWRkNzg2
NjA1NmRjNDU1YjEzMjMyNDI2Li45YjYzY2EwMGZiMDFhZDU1YWZkZGRmM2Q2N2NjM2YxYmRmODU0
NTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNDcxLDYgKzE0NzEsNyBAQAogICAgICAgICAgICAg
J2Nzcy9DU1NGdW5jdGlvblZhbHVlLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NHcmFkaWVudFZh
bHVlLmNwcCcsCiAgICAgICAgICAgICAnY3NzL0NTU0dyYWRpZW50VmFsdWUuaCcsCisgICAgICAg
ICAgICAnY3NzL0NTU0dyb3VwaW5nUnVsZS5oJywKICAgICAgICAgICAgICdjc3MvQ1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZS5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNw
cCcsCiAgICAgICAgICAgICAnY3NzL0NTU0ltYWdlVmFsdWUuY3BwJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggOWI4MzE3OTA1Mjc4MmQ0ODRk
YTg3N2UxZTI5ZjRmNWExYjU3ZmUzYi4uZWU0NjU1MWY4NjJkOTViOTY0ZDVlNjM4ODI1YWE0Zjlj
OTE3ZTJjZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKQEAgLTM2MTcwLDYgKzM2MTcwLDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUK
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NHcm91cGluZ1J1bGUuaCIKKwkJCQk+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU0hlbHBlci5oIgog
CQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA3YTljNjA4MTUxZmFkYmQ5MjE5ZTJiMzUwNTY1OGYxOWJh
NzM0NjQ1Li40YTFkNWI4ODE2NzAyNjUyZjhlZGYyNTAxZjA0ZWZhNDFkZmQ4ZTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02
NDM2LDYgKzY0MzYsNyBAQAogCQlGQUJFNzJGRDEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MRWxl
bWVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkFCRTcyRkIxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmNw
cCAqLzsgfTsKIAkJRkFCRTcyRkUxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTE5hbWVzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBQkU3MkZDMTA1
OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxOYW1lcy5jcHAgKi87IH07CiAJCUZCMkMxNUMzMTY1RDY0
OUQwMDM5QzlGOCAvKiBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkIyQzE1QzIxNjVENjQ5MDAwMzlDOUY4
IC8qIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkIzMDU2QzIxNjlFNURBQzAwOTZBMjMyIC8qIENT
U0dyb3VwaW5nUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkIzMDU2QzExNjlFNURBQzAwOTZBMjMyIC8qIENTU0dyb3VwaW5nUnVsZS5oICovOyB9
OwogCQlGQjc4QUQyRTE1MUJGNUU2MDBGRTU0RDMgLyogQ1NTUGFyc2VyTW9kZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkI3OEFEMkMxNTFCRjVEMjAw
RkU1NEQzIC8qIENTU1BhcnNlck1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlGQjkyREY0QjE1RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBhdGhP
cGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZCOTJERjQ5MTVGRUQwODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9wZXJhdGlvbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZCQzIyMERGMTIzN0ZC
RUIwMEJDRjc4OCAvKiBHcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQkMyMjBERTEyMzdGQkVCMDBCQ0Y3ODgg
LyogR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwICovOyB9OwpAQCAtMTQwMTQsNiArMTQwMTUs
NyBAQAogCQlGQUJFNzJGQjEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudEZhY3Rvcnku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MRWxlbWVudEZh
Y3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQUJFNzJGQzEwNTlDMjEx
MDBEOTk5REQgLyogTWF0aE1MTmFtZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTWF0aE1MTmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
QjJDMTVDMjE2NUQ2NDkwMDAzOUM5RjggLyogQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVu
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkIzMDU2QzExNjlFNURBQzAwOTZB
MjMyIC8qIENTU0dyb3VwaW5nUnVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDU1NHcm91cGluZ1J1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkI3OEFE
MkMxNTFCRjVEMjAwRkU1NEQzIC8qIENTU1BhcnNlck1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ1NTUGFyc2VyTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGQjkyREY0OTE1RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBhdGhPcGVyYXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xpcFBhdGhPcGVyYXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkJDMjIwREUxMjM3RkJFQjAwQkNGNzg4IC8qIEdyYXBo
aWNzQ29udGV4dDNET3BlbkdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEdyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIxNTM1LDYgKzIxNTM3LDcgQEAKIAkJCQlCQzUzQzY5MTBEQTU5MTE0MDAyMUVCNUQg
LyogQ1NTR3JhZGllbnRWYWx1ZS5oICovLAogCQkJCUZDRUJDRDcxMTYyM0E3OTEwMDI5OTY1RSAv
KiBDU1NHcmFtbWFyLnkuaW4gKi8sCiAJCQkJRkNFQkNENzIxNjIzQTc5MTAwMjk5NjVFIC8qIENT
U0dyYW1tYXIueS5pbmNsdWRlcyAqLywKKwkJCQlGQjMwNTZDMTE2OUU1REFDMDA5NkEyMzIgLyog
Q1NTR3JvdXBpbmdSdWxlLmggKi8sCiAJCQkJQkM3NzJCMzYwQzRFQTkxRTAwODMyODVGIC8qIENT
U0hlbHBlci5oICovLAogCQkJCUJDMjNFNzZCMERBRTg4QTkwMDlGREM5MSAvKiBDU1NJbWFnZUdl
bmVyYXRvclZhbHVlLmNwcCAqLywKIAkJCQlCQzIzRUU5MTBEQUVEMkJDMDA5RkRDOTEgLyogQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZS5oICovLApAQCAtMjMwMjUsNiArMjMwMjgsNyBAQAogCQkJCUJD
MDJBNjNDMEUwOUE5Q0YwMDRCNkQyQiAvKiBDU1NGdW5jdGlvblZhbHVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzUzQzY5MjBEQTU5MTE0MDAyMUVCNUQgLyogQ1NTR3JhZGllbnRWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjUwRjUzREMwOUQxNUREQTAwQzlCMEM4IC8qIENTU0dyYW1tYXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCUZCMzA1NkMyMTY5RTVEQUMwMDk2QTIzMiAvKiBDU1NHcm91
cGluZ1J1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzcyQjNDMEM0RUE5MUUwMDgzMjg1RiAv
KiBDU1NIZWxwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjNFRTkyMERBRUQyQkMwMDlGREM5
MSAvKiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzkzRTYw
MDE1MUE5OUYyMDAwNjZGMDYgLyogQ1NTSW1hZ2VTZXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NlNzA4NzA3ZjcxMjAx
MjMyMDAzMzAwMzYzM2IxM2Q0ZGMyOWZjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuaApAQCAtMCwwICsxLDE5MyBAQAorLyoKKyAqIChDKSAx
OTk5LTIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqIChDKSAyMDAyLTIwMDMgRGly
ayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDYs
IDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgKHNhbUB3ZWJraXQub3JnKQorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIENTU0dyb3Vw
aW5nUnVsZV9oCisjZGVmaW5lIENTU0dyb3VwaW5nUnVsZV9oCisKKyNpbmNsdWRlICJDU1NQYXJz
ZXIuaCIKKyNpbmNsdWRlICJDU1NSdWxlLmgiCisjaW5jbHVkZSAiQ1NTUnVsZUxpc3QuaCIKKyNp
bmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2lu
Y2x1ZGUgIlN0eWxlUnVsZS5oIgorI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRp
b24uaCIKKyNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIENTU1J1bGVMaXN0OworCit0ZW1wbGF0ZSA8Y2xhc3Mgc3R5bGVSdWxlQ2xhc3M+Citj
bGFzcyBDU1NHcm91cGluZ1J1bGUgOiBwdWJsaWMgQ1NTUnVsZSB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+Q1NTR3JvdXBpbmdSdWxlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2NoaWxkUnVs
ZUNTU09NV3JhcHBlcnMuc2l6ZSgpID09IG1fZ3JvdXBSdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgp
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY2hpbGRSdWxlQ1NTT01XcmFw
cGVycy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKG1fY2hpbGRSdWxlQ1NTT01XcmFw
cGVyc1tpXSkKKyAgICAgICAgICAgICAgICBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnNbaV0tPnNl
dFBhcmVudFJ1bGUoMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVh
dHRhY2goU3R5bGVSdWxlQmFzZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXBvcnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CisKKyAgICBDU1NS
dWxlTGlzdCogY3NzUnVsZXMoKTsKKworICAgIHVuc2lnbmVkIGluc2VydFJ1bGUoY29uc3QgU3Ry
aW5nJiBydWxlLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgZGVs
ZXRlUnVsZSh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICAKKyAgICAv
LyBGb3IgQ1NTUnVsZUxpc3QKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKKyAgICBDU1NS
dWxlKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIENTU0dy
b3VwaW5nUnVsZShzdHlsZVJ1bGVDbGFzcyogZ3JvdXBSdWxlLCBDU1NTdHlsZVNoZWV0KiBwYXJl
bnQpIDogQ1NTUnVsZShwYXJlbnQpLCBtX2dyb3VwUnVsZShncm91cFJ1bGUpLCBtX2NoaWxkUnVs
ZUNTU09NV3JhcHBlcnMoZ3JvdXBSdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgpKSB7IH0KKyAgICAK
KyAgICB2b2lkIGFwcGVuZENzc1RleHRGb3JJdGVtcyhTdHJpbmdCdWlsZGVyJikgY29uc3Q7CisK
KyAgICBSZWZQdHI8c3R5bGVSdWxlQ2xhc3M+IG1fZ3JvdXBSdWxlOworICAgIG11dGFibGUgVmVj
dG9yPFJlZlB0cjxDU1NSdWxlPiA+IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyczsKKyAgICBtdXRh
YmxlIE93blB0cjxDU1NSdWxlTGlzdD4gbV9ydWxlTGlzdENTU09NV3JhcHBlcjsKK307CisKK3Rl
bXBsYXRlPGNsYXNzIHN0eWxlUnVsZUNsYXNzPgordW5zaWduZWQgQ1NTR3JvdXBpbmdSdWxlPHN0
eWxlUnVsZUNsYXNzPjo6aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGVTdHJpbmcsIHVuc2ln
bmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBBU1NFUlQobV9jaGlsZFJ1bGVD
U1NPTVdyYXBwZXJzLnNpemUoKSA9PSBtX2dyb3VwUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUoKSk7
CisKKyAgICBpZiAoaW5kZXggPiBtX2dyb3VwUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUoKSkgewor
ICAgICAgICAvLyBJTkRFWF9TSVpFX0VSUjogUmFpc2VkIGlmIHRoZSBzcGVjaWZpZWQgaW5kZXgg
aXMgbm90IGEgdmFsaWQgaW5zZXJ0aW9uIHBvaW50LgorICAgICAgICBlYyA9IElOREVYX1NJWkVf
RVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBDU1NQYXJzZXIgcGFyc2VyKHBh
cnNlckNvbnRleHQoKSk7CisgICAgQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHBhcmVudFN0
eWxlU2hlZXQoKTsKKyAgICBSZWZQdHI8U3R5bGVSdWxlQmFzZT4gbmV3UnVsZSA9IHBhcnNlci5w
YXJzZVJ1bGUoc3R5bGVTaGVldCA/IHN0eWxlU2hlZXQtPmNvbnRlbnRzKCkgOiAwLCBydWxlU3Ry
aW5nKTsKKyAgICBpZiAoIW5ld1J1bGUpIHsKKyAgICAgICAgLy8gU1lOVEFYX0VSUjogUmFpc2Vk
IGlmIHRoZSBzcGVjaWZpZWQgcnVsZSBoYXMgYSBzeW50YXggZXJyb3IgYW5kIGlzIHVucGFyc2Fi
bGUuCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
CisgICAgaWYgKG5ld1J1bGUtPmlzSW1wb3J0UnVsZSgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBh
biBISUVSQVJDSFlfUkVRVUVTVF9FUlIgc2hvdWxkIGFsc28gYmUgdGhyb3duIGZvciBhIEBjaGFy
c2V0IG9yIGEgbmVzdGVkCisgICAgICAgIC8vIEBtZWRpYSBydWxlLiBUaGV5IGFyZSBjdXJyZW50
bHkgbm90IGdldHRpbmcgcGFyc2VkLCByZXN1bHRpbmcgaW4gYSBTWU5UQVhfRVJSCisgICAgICAg
IC8vIHRvIGdldCByYWlzZWQgYWJvdmUuCisKKyAgICAgICAgLy8gSElFUkFSQ0hZX1JFUVVFU1Rf
RVJSOiBSYWlzZWQgaWYgdGhlIHJ1bGUgY2Fubm90IGJlIGluc2VydGVkIGF0IHRoZSBzcGVjaWZp
ZWQKKyAgICAgICAgLy8gaW5kZXgsIGUuZy4sIGlmIGFuIEBpbXBvcnQgcnVsZSBpcyBpbnNlcnRl
ZCBhZnRlciBhIHN0YW5kYXJkIHJ1bGUgc2V0IG9yIG90aGVyCisgICAgICAgIC8vIGF0LXJ1bGUu
CisgICAgICAgIGVjID0gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisgICAgQ1NTU3R5bGVTaGVldDo6UnVsZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29w
ZSh0aGlzKTsKKworICAgIG1fZ3JvdXBSdWxlLT53cmFwcGVySW5zZXJ0UnVsZShpbmRleCwgbmV3
UnVsZSk7CisKKyAgICBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuaW5zZXJ0KGluZGV4LCBSZWZQ
dHI8Q1NTUnVsZT4oKSk7CisgICAgcmV0dXJuIGluZGV4OworfQorCit0ZW1wbGF0ZTxjbGFzcyBz
dHlsZVJ1bGVDbGFzcz4KK3ZvaWQgQ1NTR3JvdXBpbmdSdWxlPHN0eWxlUnVsZUNsYXNzPjo6ZGVs
ZXRlUnVsZSh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgQVNTRVJU
KG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCkgPT0gbV9ncm91cFJ1bGUtPmNoaWxkUnVs
ZXMoKS5zaXplKCkpOworCisgICAgaWYgKGluZGV4ID49IG1fZ3JvdXBSdWxlLT5jaGlsZFJ1bGVz
KCkuc2l6ZSgpKSB7CisgICAgICAgIC8vIElOREVYX1NJWkVfRVJSOiBSYWlzZWQgaWYgdGhlIHNw
ZWNpZmllZCBpbmRleCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEKKyAgICAgICAgLy8gcnVsZSBp
biB0aGUgbWVkaWEgcnVsZSBsaXN0LgorICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgQ1NTU3R5bGVTaGVldDo6UnVsZU11dGF0aW9uU2Nv
cGUgbXV0YXRpb25TY29wZSh0aGlzKTsKKworICAgIG1fZ3JvdXBSdWxlLT53cmFwcGVyUmVtb3Zl
UnVsZShpbmRleCk7CisKKyAgICBpZiAobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2luZGV4XSkK
KyAgICAgICAgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2luZGV4XS0+c2V0UGFyZW50UnVsZSgw
KTsKKyAgICBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMucmVtb3ZlKGluZGV4KTsKK30KKwordGVt
cGxhdGU8Y2xhc3Mgc3R5bGVSdWxlQ2xhc3M+Cit2b2lkIENTU0dyb3VwaW5nUnVsZTxzdHlsZVJ1
bGVDbGFzcz46OmFwcGVuZENzc1RleHRGb3JJdGVtcyhTdHJpbmdCdWlsZGVyJiByZXN1bHQpIGNv
bnN0Cit7CisgICAgdW5zaWduZWQgc2l6ZSA9IGxlbmd0aCgpOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiAg
Iik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoaXRlbShpKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAg
cmVzdWx0LmFwcGVuZCgnXG4nKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPGNsYXNzIHN0eWxlUnVs
ZUNsYXNzPgordW5zaWduZWQgQ1NTR3JvdXBpbmdSdWxlPHN0eWxlUnVsZUNsYXNzPjo6bGVuZ3Ro
KCkgY29uc3QKK3sgCisgICAgcmV0dXJuIG1fZ3JvdXBSdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgp
OyAKK30KKwordGVtcGxhdGU8Y2xhc3Mgc3R5bGVSdWxlQ2xhc3M+CitDU1NSdWxlKiBDU1NHcm91
cGluZ1J1bGU8c3R5bGVSdWxlQ2xhc3M+OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAoreyAK
KyAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkpCisgICAgICAgIHJldHVybiAwOworICAgIEFTU0VS
VChtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuc2l6ZSgpID09IG1fZ3JvdXBSdWxlLT5jaGlsZFJ1
bGVzKCkuc2l6ZSgpKTsKKyAgICBSZWZQdHI8Q1NTUnVsZT4mIHJ1bGUgPSBtX2NoaWxkUnVsZUNT
U09NV3JhcHBlcnNbaW5kZXhdOworICAgIGlmICghcnVsZSkKKyAgICAgICAgcnVsZSA9IG1fZ3Jv
dXBSdWxlLT5jaGlsZFJ1bGVzKClbaW5kZXhdLT5jcmVhdGVDU1NPTVdyYXBwZXIoY29uc3RfY2Fz
dDxDU1NHcm91cGluZ1J1bGU8c3R5bGVSdWxlQ2xhc3M+Kj4odGhpcykpOworICAgIHJldHVybiBy
dWxlLmdldCgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBzdHlsZVJ1bGVDbGFzcz4KK0NTU1J1bGVM
aXN0KiBDU1NHcm91cGluZ1J1bGU8c3R5bGVSdWxlQ2xhc3M+Ojpjc3NSdWxlcygpCit7CisgICAg
aWYgKCFtX3J1bGVMaXN0Q1NTT01XcmFwcGVyKQorICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFw
cGVyID0gYWRvcHRQdHIobmV3IExpdmVDU1NSdWxlTGlzdDxDU1NHcm91cGluZ1J1bGU8c3R5bGVS
dWxlQ2xhc3M+ID4odGhpcykpOworICAgIHJldHVybiBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyLmdl
dCgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBzdHlsZVJ1bGVDbGFzcz4KK3ZvaWQgQ1NTR3JvdXBp
bmdSdWxlPHN0eWxlUnVsZUNsYXNzPjo6cmVhdHRhY2goU3R5bGVSdWxlQmFzZSogcnVsZSkKK3sK
KyAgICBBU1NFUlQocnVsZSk7CisgICAgbV9ncm91cFJ1bGUgPSBzdGF0aWNfY2FzdDxzdHlsZVJ1
bGVDbGFzcyo+KHJ1bGUpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NoaWxkUnVs
ZUNTU09NV3JhcHBlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fY2hpbGRSdWxlQ1NT
T01XcmFwcGVyc1tpXSkKKyAgICAgICAgICAgIG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpXS0+
cmVhdHRhY2gobV9ncm91cFJ1bGUtPmNoaWxkUnVsZXMoKVtpXS5nZXQoKSk7CisgICAgfQorfQor
Cit0ZW1wbGF0ZTxjbGFzcyBzdHlsZVJ1bGVDbGFzcz4KK3ZvaWQgQ1NTR3JvdXBpbmdSdWxlPHN0
eWxlUnVsZUNsYXNzPjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmpl
Y3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CisgICAgQ1NTUnVsZTo6cmVw
b3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9j
aGlsZFJ1bGVDU1NPTVdyYXBwZXJzKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3J1bGVMaXN0Q1NT
T01XcmFwcGVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ1NT
R3JvdXBpbmdSdWxlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5jcHAKaW5kZXggZmM4NjI0
ZGEwOTFlYmRiNmEyN2Q4ZjczOWRiNmY5MDE3NjM0MjllOS4uYmEyNGJjMDcwNTA0NzhkMWVkNWJl
ZmUxODc3NjFmMjA3MDBmNDBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU01l
ZGlhUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5jcHAKQEAg
LTM1LDE1NSArMzUsNTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ1NTTWVkaWFSdWxlOjpD
U1NNZWRpYVJ1bGUoU3R5bGVSdWxlTWVkaWEqIG1lZGlhUnVsZSwgQ1NTU3R5bGVTaGVldCogcGFy
ZW50KQotICAgIDogQ1NTUnVsZShwYXJlbnQpCi0gICAgLCBtX21lZGlhUnVsZShtZWRpYVJ1bGUp
Ci0gICAgLCBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMobWVkaWFSdWxlLT5jaGlsZFJ1bGVzKCku
c2l6ZSgpKQorICAgIDogQ1NTR3JvdXBpbmdSdWxlPFN0eWxlUnVsZU1lZGlhPihtZWRpYVJ1bGUs
IHBhcmVudCkKIHsKIH0KIAogQ1NTTWVkaWFSdWxlOjp+Q1NTTWVkaWFSdWxlKCkKIHsKLSAgICBB
U1NFUlQobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLnNpemUoKSA9PSBtX21lZGlhUnVsZS0+Y2hp
bGRSdWxlcygpLnNpemUoKSk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jaGls
ZFJ1bGVDU1NPTVdyYXBwZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2NoaWxkUnVs
ZUNTU09NV3JhcHBlcnNbaV0pCi0gICAgICAgICAgICBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnNb
aV0tPnNldFBhcmVudFJ1bGUoMCk7Ci0gICAgfQogICAgIGlmIChtX21lZGlhQ1NTT01XcmFwcGVy
KQogICAgICAgICBtX21lZGlhQ1NTT01XcmFwcGVyLT5jbGVhclBhcmVudFJ1bGUoKTsKIH0KIAot
dW5zaWduZWQgQ1NTTWVkaWFSdWxlOjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZVN0cmlu
ZywgdW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIEFTU0VSVChtX2No
aWxkUnVsZUNTU09NV3JhcHBlcnMuc2l6ZSgpID09IG1fbWVkaWFSdWxlLT5jaGlsZFJ1bGVzKCku
c2l6ZSgpKTsKLQotICAgIGlmIChpbmRleCA+IG1fbWVkaWFSdWxlLT5jaGlsZFJ1bGVzKCkuc2l6
ZSgpKSB7Ci0gICAgICAgIC8vIElOREVYX1NJWkVfRVJSOiBSYWlzZWQgaWYgdGhlIHNwZWNpZmll
ZCBpbmRleCBpcyBub3QgYSB2YWxpZCBpbnNlcnRpb24gcG9pbnQuCi0gICAgICAgIGVjID0gSU5E
RVhfU0laRV9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIENTU1BhcnNlciBw
YXJzZXIocGFyc2VyQ29udGV4dCgpKTsKLSAgICBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0g
cGFyZW50U3R5bGVTaGVldCgpOwotICAgIFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBuZXdSdWxlID0g
cGFyc2VyLnBhcnNlUnVsZShzdHlsZVNoZWV0ID8gc3R5bGVTaGVldC0+Y29udGVudHMoKSA6IDAs
IHJ1bGVTdHJpbmcpOwotICAgIGlmICghbmV3UnVsZSkgewotICAgICAgICAvLyBTWU5UQVhfRVJS
OiBSYWlzZWQgaWYgdGhlIHNwZWNpZmllZCBydWxlIGhhcyBhIHN5bnRheCBlcnJvciBhbmQgaXMg
dW5wYXJzYWJsZS4KLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm4gMDsK
LSAgICB9Ci0KLSAgICBpZiAobmV3UnVsZS0+aXNJbXBvcnRSdWxlKCkpIHsKLSAgICAgICAgLy8g
RklYTUU6IGFuIEhJRVJBUkNIWV9SRVFVRVNUX0VSUiBzaG91bGQgYWxzbyBiZSB0aHJvd24gZm9y
IGEgQGNoYXJzZXQgb3IgYSBuZXN0ZWQKLSAgICAgICAgLy8gQG1lZGlhIHJ1bGUuICBUaGV5IGFy
ZSBjdXJyZW50bHkgbm90IGdldHRpbmcgcGFyc2VkLCByZXN1bHRpbmcgaW4gYSBTWU5UQVhfRVJS
Ci0gICAgICAgIC8vIHRvIGdldCByYWlzZWQgYWJvdmUuCi0KLSAgICAgICAgLy8gSElFUkFSQ0hZ
X1JFUVVFU1RfRVJSOiBSYWlzZWQgaWYgdGhlIHJ1bGUgY2Fubm90IGJlIGluc2VydGVkIGF0IHRo
ZSBzcGVjaWZpZWQKLSAgICAgICAgLy8gaW5kZXgsIGUuZy4sIGlmIGFuIEBpbXBvcnQgcnVsZSBp
cyBpbnNlcnRlZCBhZnRlciBhIHN0YW5kYXJkIHJ1bGUgc2V0IG9yIG90aGVyCi0gICAgICAgIC8v
IGF0LXJ1bGUuCi0gICAgICAgIGVjID0gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOwotICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9Ci0gICAgQ1NTU3R5bGVTaGVldDo6UnVsZU11dGF0aW9uU2NvcGUgbXV0
YXRpb25TY29wZSh0aGlzKTsKLQotICAgIG1fbWVkaWFSdWxlLT53cmFwcGVySW5zZXJ0UnVsZShp
bmRleCwgbmV3UnVsZSk7Ci0KLSAgICBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuaW5zZXJ0KGlu
ZGV4LCBSZWZQdHI8Q1NTUnVsZT4oKSk7Ci0gICAgcmV0dXJuIGluZGV4OwotfQotCi12b2lkIENT
U01lZGlhUnVsZTo6ZGVsZXRlUnVsZSh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMp
Ci17Ci0gICAgQVNTRVJUKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCkgPT0gbV9tZWRp
YVJ1bGUtPmNoaWxkUnVsZXMoKS5zaXplKCkpOwotCi0gICAgaWYgKGluZGV4ID49IG1fbWVkaWFS
dWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgpKSB7Ci0gICAgICAgIC8vIElOREVYX1NJWkVfRVJSOiBS
YWlzZWQgaWYgdGhlIHNwZWNpZmllZCBpbmRleCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEKLSAg
ICAgICAgLy8gcnVsZSBpbiB0aGUgbWVkaWEgcnVsZSBsaXN0LgotICAgICAgICBlYyA9IElOREVY
X1NJWkVfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ1NTU3R5bGVTaGVldDo6
UnVsZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlzKTsKLQotICAgIG1fbWVkaWFSdWxl
LT53cmFwcGVyUmVtb3ZlUnVsZShpbmRleCk7Ci0KLSAgICBpZiAobV9jaGlsZFJ1bGVDU1NPTVdy
YXBwZXJzW2luZGV4XSkKLSAgICAgICAgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2luZGV4XS0+
c2V0UGFyZW50UnVsZSgwKTsKLSAgICBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMucmVtb3ZlKGlu
ZGV4KTsKLX0KLQogU3RyaW5nIENTU01lZGlhUnVsZTo6Y3NzVGV4dCgpIGNvbnN0CiB7CiAgICAg
U3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZCgiQG1lZGlhICIpOwotICAg
IGlmIChtX21lZGlhUnVsZS0+bWVkaWFRdWVyaWVzKCkpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVu
ZChtX21lZGlhUnVsZS0+bWVkaWFRdWVyaWVzKCktPm1lZGlhVGV4dCgpKTsKKyAgICByZXN1bHQu
YXBwZW5kTGl0ZXJhbCgiQG1lZGlhICIpOworICAgIGlmIChtX2dyb3VwUnVsZS0+bWVkaWFRdWVy
aWVzKCkpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChtX2dyb3VwUnVsZS0+bWVkaWFRdWVyaWVz
KCktPm1lZGlhVGV4dCgpKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwogICAgIH0KLSAg
ICByZXN1bHQuYXBwZW5kKCJ7IFxuIik7Ci0gICAgCi0gICAgdW5zaWduZWQgc2l6ZSA9IGxlbmd0
aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAg
cmVzdWx0LmFwcGVuZCgiICAiKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChpdGVtKGkpLT5jc3NU
ZXh0KCkpOwotICAgICAgICByZXN1bHQuYXBwZW5kKCdcbicpOwotICAgIH0KLQorICAgIHJlc3Vs
dC5hcHBlbmRMaXRlcmFsKCJ7IFxuIik7CisgICAgYXBwZW5kQ3NzVGV4dEZvckl0ZW1zKHJlc3Vs
dCk7CiAgICAgcmVzdWx0LmFwcGVuZCgnfScpOwogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmco
KTsKIH0KIAogTWVkaWFMaXN0KiBDU1NNZWRpYVJ1bGU6Om1lZGlhKCkgY29uc3QKIHsKLSAgICBp
ZiAoIW1fbWVkaWFSdWxlLT5tZWRpYVF1ZXJpZXMoKSkKKyAgICBpZiAoIW1fZ3JvdXBSdWxlLT5t
ZWRpYVF1ZXJpZXMoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCFtX21lZGlhQ1NTT01X
cmFwcGVyKQotICAgICAgICBtX21lZGlhQ1NTT01XcmFwcGVyID0gTWVkaWFMaXN0OjpjcmVhdGUo
bV9tZWRpYVJ1bGUtPm1lZGlhUXVlcmllcygpLCBjb25zdF9jYXN0PENTU01lZGlhUnVsZSo+KHRo
aXMpKTsKKyAgICAgICAgbV9tZWRpYUNTU09NV3JhcHBlciA9IE1lZGlhTGlzdDo6Y3JlYXRlKG1f
Z3JvdXBSdWxlLT5tZWRpYVF1ZXJpZXMoKSwgY29uc3RfY2FzdDxDU1NNZWRpYVJ1bGUqPih0aGlz
KSk7CiAgICAgcmV0dXJuIG1fbWVkaWFDU1NPTVdyYXBwZXIuZ2V0KCk7CiB9CiAKLXVuc2lnbmVk
IENTU01lZGlhUnVsZTo6bGVuZ3RoKCkgY29uc3QKLXsgCi0gICAgcmV0dXJuIG1fbWVkaWFSdWxl
LT5jaGlsZFJ1bGVzKCkuc2l6ZSgpOyAKLX0KLQotQ1NTUnVsZSogQ1NTTWVkaWFSdWxlOjppdGVt
KHVuc2lnbmVkIGluZGV4KSBjb25zdAoteyAKLSAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkpCi0g
ICAgICAgIHJldHVybiAwOwotICAgIEFTU0VSVChtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuc2l6
ZSgpID09IG1fbWVkaWFSdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgpKTsKLSAgICBSZWZQdHI8Q1NT
UnVsZT4mIHJ1bGUgPSBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnNbaW5kZXhdOwotICAgIGlmICgh
cnVsZSkKLSAgICAgICAgcnVsZSA9IG1fbWVkaWFSdWxlLT5jaGlsZFJ1bGVzKClbaW5kZXhdLT5j
cmVhdGVDU1NPTVdyYXBwZXIoY29uc3RfY2FzdDxDU1NNZWRpYVJ1bGUqPih0aGlzKSk7Ci0gICAg
cmV0dXJuIHJ1bGUuZ2V0KCk7Ci19Ci0KLUNTU1J1bGVMaXN0KiBDU1NNZWRpYVJ1bGU6OmNzc1J1
bGVzKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0gICAgICAg
IG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBhZG9wdFB0cihuZXcgTGl2ZUNTU1J1bGVMaXN0PENT
U01lZGlhUnVsZT4oY29uc3RfY2FzdDxDU1NNZWRpYVJ1bGUqPih0aGlzKSkpOwotICAgIHJldHVy
biBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyLmdldCgpOwotfQotCiB2b2lkIENTU01lZGlhUnVsZTo6
cmVhdHRhY2goU3R5bGVSdWxlQmFzZSogcnVsZSkKIHsKLSAgICBBU1NFUlQocnVsZSk7Ci0gICAg
QVNTRVJUKHJ1bGUtPmlzTWVkaWFSdWxlKCkpOwotICAgIG1fbWVkaWFSdWxlID0gc3RhdGljX2Nh
c3Q8U3R5bGVSdWxlTWVkaWEqPihydWxlKTsKLSAgICBpZiAobV9tZWRpYUNTU09NV3JhcHBlciAm
JiBtX21lZGlhUnVsZS0+bWVkaWFRdWVyaWVzKCkpCi0gICAgICAgIG1fbWVkaWFDU1NPTVdyYXBw
ZXItPnJlYXR0YWNoKG1fbWVkaWFSdWxlLT5tZWRpYVF1ZXJpZXMoKSk7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCk7ICsraSkgewot
ICAgICAgICBpZiAobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2ldKQotICAgICAgICAgICAgbV9j
aGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2ldLT5yZWF0dGFjaChtX21lZGlhUnVsZS0+Y2hpbGRSdWxl
cygpW2ldLmdldCgpKTsKLSAgICB9CisgICAgQ1NTR3JvdXBpbmdSdWxlPFN0eWxlUnVsZU1lZGlh
Pjo6cmVhdHRhY2gocnVsZSk7CisgICAgaWYgKG1fbWVkaWFDU1NPTVdyYXBwZXIgJiYgbV9ncm91
cFJ1bGUtPm1lZGlhUXVlcmllcygpKQorICAgICAgICBtX21lZGlhQ1NTT01XcmFwcGVyLT5yZWF0
dGFjaChtX2dyb3VwUnVsZS0+bWVkaWFRdWVyaWVzKCkpOwogfQogCiB2b2lkIENTU01lZGlhUnVs
ZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykg
Y29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlz
LCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7Ci0gICAgQ1NTUnVsZTo6cmVwb3J0TWVtb3J5VXNh
Z2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgQ1NTR3JvdXBpbmdSdWxlPFN0eWxlUnVsZU1lZGlh
Pjo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CiAgICAgaW5mby5hZGRNZW1i
ZXIobV9tZWRpYUNTU09NV3JhcHBlcik7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9jaGlsZFJ1bGVD
U1NPTVdyYXBwZXJzKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX3J1bGVMaXN0Q1NTT01XcmFwcGVy
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU01lZGlhUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5o
CmluZGV4IDg3ODM1OTQ4NGI0N2UxNDQ5ODEwNTE0YjRjOWRjOGU0ZDgzMzc0NTguLjBmYTFjZDkw
NzExMmY0M2JmMWQxNzhmZDY1OTdmMmMzYzJkMDcyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFS
dWxlLmgKQEAgLTIzLDE1ICsyMywxNCBAQAogI2lmbmRlZiBDU1NNZWRpYVJ1bGVfaAogI2RlZmlu
ZSBDU1NNZWRpYVJ1bGVfaAogCi0jaW5jbHVkZSAiQ1NTUnVsZS5oIgorI2luY2x1ZGUgIkNTU0dy
b3VwaW5nUnVsZS5oIgogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIENTU1J1bGVMaXN0OwogY2xhc3MgU3R5bGVSdWxlTWVkaWE7CiAKLWNsYXNz
IENTU01lZGlhUnVsZSA6IHB1YmxpYyBDU1NSdWxlIHsKK2NsYXNzIENTU01lZGlhUnVsZSA6IHB1
YmxpYyBDU1NHcm91cGluZ1J1bGU8U3R5bGVSdWxlTWVkaWE+IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxDU1NNZWRpYVJ1bGU+IGNyZWF0ZShTdHlsZVJ1bGVNZWRpYSogcnVsZSwg
Q1NTU3R5bGVTaGVldCogc2hlZXQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NNZWRpYVJ1bGUo
cnVsZSwgc2hlZXQpKTsgfQogCkBAIC00MywyMiArNDIsMTEgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdCBPVkVSUklERTsKIAogICAgIE1lZGlhTGlzdCogbWVk
aWEoKSBjb25zdDsKLSAgICBDU1NSdWxlTGlzdCogY3NzUnVsZXMoKSBjb25zdDsKLQotICAgIHVu
c2lnbmVkIGluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlLCB1bnNpZ25lZCBpbmRleCwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgZGVsZXRlUnVsZSh1bnNpZ25lZCBpbmRleCwgRXhjZXB0
aW9uQ29kZSYpOwotICAgICAgICAKLSAgICAvLyBGb3IgQ1NTUnVsZUxpc3QKLSAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdDsKLSAgICBDU1NSdWxlKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25z
dDsKIAogcHJpdmF0ZToKICAgICBDU1NNZWRpYVJ1bGUoU3R5bGVSdWxlTWVkaWEqLCBDU1NTdHls
ZVNoZWV0Kik7CiAgICAgCi0gICAgUmVmUHRyPFN0eWxlUnVsZU1lZGlhPiBtX21lZGlhUnVsZTsK
ICAgICBtdXRhYmxlIFJlZlB0cjxNZWRpYUxpc3Q+IG1fbWVkaWFDU1NPTVdyYXBwZXI7Ci0gICAg
bXV0YWJsZSBWZWN0b3I8UmVmUHRyPENTU1J1bGU+ID4gbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJz
OwotICAgIG11dGFibGUgT3duUHRyPENTU1J1bGVMaXN0PiBtX3J1bGVMaXN0Q1NTT01XcmFwcGVy
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktp
dENTU1JlZ2lvblJ1bGUuY3BwCmluZGV4IDY4ZGI5NjQxY2IyN2UwOTQ5NjAyYjU0MWFhZTY0M2Ri
ZDQ1ZjlmZjIuLjkzNWMyYzc0ZTM4ZTY3Mjg5MjViMGY2YTVkZmU3YTNiNjBmMTRkM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAKQEAgLTQyLDg0ICs0Miwy
NSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXZWJLaXRDU1NSZWdpb25SdWxlOjpXZWJLaXRD
U1NSZWdpb25SdWxlKFN0eWxlUnVsZVJlZ2lvbiogcmVnaW9uUnVsZSwgQ1NTU3R5bGVTaGVldCog
cGFyZW50KQotICAgIDogQ1NTUnVsZShwYXJlbnQpCi0gICAgLCBtX3JlZ2lvblJ1bGUocmVnaW9u
UnVsZSkKLSAgICAsIG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycyhyZWdpb25SdWxlLT5jaGlsZFJ1
bGVzKCkuc2l6ZSgpKQorICAgIDogQ1NTR3JvdXBpbmdSdWxlPFN0eWxlUnVsZVJlZ2lvbj4ocmVn
aW9uUnVsZSwgcGFyZW50KQogewogfQogCi1XZWJLaXRDU1NSZWdpb25SdWxlOjp+V2ViS2l0Q1NT
UmVnaW9uUnVsZSgpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY2hpbGRSdWxl
Q1NTT01XcmFwcGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9jaGlsZFJ1bGVDU1NP
TVdyYXBwZXJzW2ldKQotICAgICAgICAgICAgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2ldLT5z
ZXRQYXJlbnRSdWxlKDApOwotICAgIH0KLX0KLQogU3RyaW5nIFdlYktpdENTU1JlZ2lvblJ1bGU6
OmNzc1RleHQoKSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3Vs
dC5hcHBlbmQoIkAtd2Via2l0LXJlZ2lvbiAiKTsKKyAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgi
QC13ZWJraXQtcmVnaW9uICIpOwogCiAgICAgLy8gRmlyc3QgYWRkIHRoZSBzZWxlY3RvcnMuCi0g
ICAgcmVzdWx0LmFwcGVuZChtX3JlZ2lvblJ1bGUtPnNlbGVjdG9yTGlzdCgpLnNlbGVjdG9yc1Rl
eHQoKSk7CisgICAgcmVzdWx0LmFwcGVuZChtX2dyb3VwUnVsZS0+c2VsZWN0b3JMaXN0KCkuc2Vs
ZWN0b3JzVGV4dCgpKTsKIAogICAgIC8vIFRoZW4gYWRkIHRoZSBydWxlcy4KLSAgICByZXN1bHQu
YXBwZW5kKCIgeyBcbiIpOwotCi0gICAgdW5zaWduZWQgc2l6ZSA9IGxlbmd0aCgpOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiICAiKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChpdGVtKGkpLT5jc3NUZXh0KCkpOwotICAg
ICAgICByZXN1bHQuYXBwZW5kKCJcbiIpOwotICAgIH0KLSAgICByZXN1bHQuYXBwZW5kKCJ9Iik7
CisgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiB7IFxuIik7CisgICAgYXBwZW5kQ3NzVGV4dEZv
ckl0ZW1zKHJlc3VsdCk7CisgICAgcmVzdWx0LmFwcGVuZCgnfScpOwogICAgIHJldHVybiByZXN1
bHQudG9TdHJpbmcoKTsKIH0KIAotdW5zaWduZWQgV2ViS2l0Q1NTUmVnaW9uUnVsZTo6bGVuZ3Ro
KCkgY29uc3QKLXsgCi0gICAgcmV0dXJuIG1fcmVnaW9uUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUo
KTsgCi19Ci0KLUNTU1J1bGUqIFdlYktpdENTU1JlZ2lvblJ1bGU6Oml0ZW0odW5zaWduZWQgaW5k
ZXgpIGNvbnN0Ci17IAotICAgIGlmIChpbmRleCA+PSBsZW5ndGgoKSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgQVNTRVJUKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCkgPT0gbV9yZWdp
b25SdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgpKTsKLSAgICBSZWZQdHI8Q1NTUnVsZT4mIHJ1bGUg
PSBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnNbaW5kZXhdOwotICAgIGlmICghcnVsZSkKLSAgICAg
ICAgcnVsZSA9IG1fcmVnaW9uUnVsZS0+Y2hpbGRSdWxlcygpW2luZGV4XS0+Y3JlYXRlQ1NTT01X
cmFwcGVyKGNvbnN0X2Nhc3Q8V2ViS2l0Q1NTUmVnaW9uUnVsZSo+KHRoaXMpKTsKLSAgICByZXR1
cm4gcnVsZS5nZXQoKTsKLX0KLQotQ1NTUnVsZUxpc3QqIFdlYktpdENTU1JlZ2lvblJ1bGU6OmNz
c1J1bGVzKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0gICAg
ICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBhZG9wdFB0cihuZXcgTGl2ZUNTU1J1bGVMaXN0
PFdlYktpdENTU1JlZ2lvblJ1bGU+KGNvbnN0X2Nhc3Q8V2ViS2l0Q1NTUmVnaW9uUnVsZSo+KHRo
aXMpKSk7Ci0gICAgcmV0dXJuIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIuZ2V0KCk7Ci19Ci0KLXZv
aWQgV2ViS2l0Q1NTUmVnaW9uUnVsZTo6cmVhdHRhY2goU3R5bGVSdWxlQmFzZSogcnVsZSkKLXsK
LSAgICBBU1NFUlQocnVsZSk7Ci0gICAgQVNTRVJUKHJ1bGUtPmlzUmVnaW9uUnVsZSgpKTsKLSAg
ICBtX3JlZ2lvblJ1bGUgPSBzdGF0aWNfY2FzdDxTdHlsZVJ1bGVSZWdpb24qPihydWxlKTsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnNbaV0pCi0gICAg
ICAgICAgICBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnNbaV0tPnJlYXR0YWNoKG1fcmVnaW9uUnVs
ZS0+Y2hpbGRSdWxlcygpW2ldLmdldCgpKTsKLSAgICB9Ci19Ci0KLXZvaWQgV2ViS2l0Q1NTUmVn
aW9uUnVsZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKLXsKLSAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZv
LCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7Ci0gICAgQ1NTUnVsZTo6cmVwb3J0TWVt
b3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9yZWdpb25S
dWxlKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMpOwotICAg
IGluZm8uYWRkTWVtYmVyKG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpOwotfQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dl
YktpdENTU1JlZ2lvblJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25S
dWxlLmgKaW5kZXggYTY4YmExMWQ1MGNkM2Q3OTFlMGVkZTVjZTI4Yjk2MTE2M2UwYmI0OC4uZTcz
NzU4YTNmZjUzN2RhMGY1NWU5OWUwNGUxMDc1MmRhYmM0Mjg2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5oCkBAIC0zMSw0MSArMzEsMjQgQEAKICNpZm5kZWYgV2Vi
S2l0Q1NTUmVnaW9uUnVsZV9oCiAjZGVmaW5lIFdlYktpdENTU1JlZ2lvblJ1bGVfaAogCi0jaW5j
bHVkZSAiQ1NTUnVsZS5oIgorI2luY2x1ZGUgIkNTU0dyb3VwaW5nUnVsZS5oIgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBDU1NSdWxlTGlzdDsKIGNsYXNzIFN0eWxlUnVsZVJlZ2lvbjsKIAot
Y2xhc3MgV2ViS2l0Q1NTUmVnaW9uUnVsZSA6IHB1YmxpYyBDU1NSdWxlIHsKK2NsYXNzIFdlYktp
dENTU1JlZ2lvblJ1bGUgOiBwdWJsaWMgQ1NTR3JvdXBpbmdSdWxlPFN0eWxlUnVsZVJlZ2lvbj4g
ewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYktpdENTU1JlZ2lvblJ1bGU+IGNy
ZWF0ZShTdHlsZVJ1bGVSZWdpb24qIHJ1bGUsIENTU1N0eWxlU2hlZXQqIHNoZWV0KSB7IHJldHVy
biBhZG9wdFJlZihuZXcgV2ViS2l0Q1NTUmVnaW9uUnVsZShydWxlLCBzaGVldCkpOyB9CiAKLSAg
ICB2aXJ0dWFsIH5XZWJLaXRDU1NSZWdpb25SdWxlKCk7Ci0KICAgICB2aXJ0dWFsIENTU1J1bGU6
OlR5cGUgdHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIFdFQktJVF9SRUdJT05fUlVMRTsg
fQogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVhdHRhY2goU3R5bGVSdWxlQmFzZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7
Ci0KLSAgICBDU1NSdWxlTGlzdCogY3NzUnVsZXMoKSBjb25zdDsKLSAgICAKLSAgICAvLyBGb3Ig
Q1NTUnVsZUxpc3QKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKLSAgICBDU1NSdWxlKiBp
dGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBXZWJLaXRDU1NSZWdp
b25SdWxlKFN0eWxlUnVsZVJlZ2lvbiosIENTU1N0eWxlU2hlZXQqIHBhcmVudCk7Ci0KLSAgICBS
ZWZQdHI8U3R5bGVSdWxlUmVnaW9uPiBtX3JlZ2lvblJ1bGU7Ci0gICAgbXV0YWJsZSBWZWN0b3I8
UmVmUHRyPENTU1J1bGU+ID4gbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzOwotICAgIG11dGFibGUg
T3duUHRyPENTU1J1bGVMaXN0PiBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyOwotICAgIAotICAgIGZy
aWVuZCBjbGFzcyBTdHlsZVJ1bGVCbG9jazsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182080</attachid>
            <date>2013-01-10 00:33:26 -0800</date>
            <delta_ts>2013-01-10 22:02:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106418-20130110173029.patch</filename>
            <type>text/plain</type>
            <size>34735</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxODVlMzQ0NDYyY2U4NDIxN2E5OTE5MzRmYWM2ZTZhOGIxYTEwM2Y1Li5j
NzQ2OTMyOGMwNGFlMDRhNmJhYThmODFmMDY1MmM3Y2QwZTAzODhiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjEgQEAKKzIwMTMtMDEtMTAgIFRha2FzaGkgU2FrYW1vdG8gIDx0YXNha0Bnb29nbGUu
Y29tPgorCisgICAgICAgIEltcGxlbWVudCBDU1NHcm91cGluZ1J1bGUgZm9yIEBob3N0IEAtcnVs
ZXMgYW5kIEBzdXBwb3J0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNjQxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNpbmNlIEBzdXBwb3J0cyBhbmQgQGhvc3QgQC1ydWxlcyBhcmUgZGVydmllZCBm
cm9tIENTU0dyb3VwaW5nUnVsZToKKyAgICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMi9X
RC1jc3MzLWNvbmRpdGlvbmFsLyN0aGUtY3NzZ3JvdXBpbmdydWxlLWludGVyZmFjZQorICAgICAg
ICBodHRwczovL2R2Y3MudzMub3JnL2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlwL3NwZWMv
c2hhZG93L2luZGV4Lmh0bWwjY3NzLWhvc3QtcnVsZS1pbnRlcmZhY2UKKyAgICAgICAgd2UgbmVl
ZCBDU1NHcm91cGluZ1J1bGUgKFdLMTAyMzQ0IGFuZCBXSzEwNDgyMikuCisgICAgICAgIFNpbmNl
IEBtZWRpYSBpcyBhbHNvIGRlcml2ZWQgZnJvbSBDU1NHcm91cGluZ1J1bGUgYW5kIEByZWdpb24g
aGFzIHRoZQorICAgICAgICBzYW1lIGludGVyZmFjZSBhcyBDU1NHcm91cGluZ1J1bGUsIG1vZGlm
eSB0byB1c2UgQ1NTR3JvdXBpbmdSdWxlOgorICAgICAgICBodHRwOi8vZGV2LnczLm9yZy9jc3N3
Zy9jc3MzLXJlZ2lvbnMvI3RoZS1hdC1yZWdpb24tc3R5bGUtcnVsZQorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgYmVjYXVzZSBubyBuZXcgZmVhdHVyZSBpcyBpbXBsZW1lbnRlZC4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAg
ICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGRlZCBDU1NHcm91cGluZ1J1bGUuaCBhbmQgQ1NT
R3JvdXBpbmdSdWxlLmNwcC4KKyAgICAgICAgKiBjc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5nUnVs
ZTo6Q1NTR3JvdXBpbmdSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5nUnVsZTo6
fkNTU0dyb3VwaW5nUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcm91cGluZ1J1bGU6Omlu
c2VydFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JvdXBpbmdSdWxlOjpkZWxldGVSdWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5nUnVsZTo6YXBwZW5kQ3NzVGV4dEZvckl0
ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5nUnVsZTo6bGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5nUnVsZTo6aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NHcm91cGluZ1J1bGU6OmNzc1J1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5n
UnVsZTo6cmVhdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JvdXBpbmdSdWxlOjpyZXBv
cnRNZW1vcnlVc2FnZSk6CisgICAgICAgIFRoZXNlIGNvZGVzIGFyZSBtb3ZlZCBmcm9tIENTU01l
ZGlhUnVsZSBhbmQgV2ViS2l0Q1NTUmVnaW9uUnVsZS4KKyAgICAgICAgKiBjc3MvQ1NTR3JvdXBp
bmdSdWxlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENTU0dyb3VwaW5nUnVsZSk6
CisgICAgICAgICogY3NzL0NTU01lZGlhUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NN
ZWRpYVJ1bGU6OkNTU01lZGlhUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNZWRpYVJ1bGU6
On5DU1NNZWRpYVJ1bGUpOgorICAgICAgICBNYWtlIENTU01lZGlhUnVsZSBpbmhlcml0IENTU0dy
b3VwaW5nUnVsZS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU01lZGlhUnVsZTo6bWVkaWEpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTTWVkaWFSdWxlOjpyZWF0dGFjaCk6CisgICAgICAgIEtlZXAgdGhl
IGNvZGUgZm9yIHVwZGF0aW5nIG1lZGlhIHF1ZXJpZXMnIENTU09NV3JhcHBlci4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU01lZGlhUnVsZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICBXZSBu
ZWVkIHRvIHJlcG9ydCBtZWRpYSBxdWVyaWVzJyBDU1NPTVdyYXBwZXIgbWVtb3J5IHVzYWdlLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTTWVkaWFSdWxlOjptZWRpYVF1ZXJpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTTWVkaWFSdWxlOjpjc3NUZXh0KToKKyAgICAgICAgKiBjc3MvQ1NTTWVkaWFS
dWxlLmg6CisgICAgICAgICogY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuY3BwOgorICAgICAgICBN
YWtlIFdlYktpdENTU1JlZ2lvblJ1bGUgaW5oZXJpdCBDU1NHcm91cGluZ1J1bGUuCisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRDU1NSZWdpb25SdWxlOjpXZWJLaXRDU1NSZWdpb25SdWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdENTU1JlZ2lvblJ1bGU6OmNzc1RleHQpOgorICAgICAgICAq
IGNzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmg6CisKIDIwMTMtMDEtMDkgIFRvbnkgR2VudGlsY29y
ZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIGluY2x1ZGVz
IGZyb20gSFRNTFRyZWVCdWlsZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDUxMjQ1NDVmOTM2
NGY3Njc4OTcxZmU5NTExNjFmZjkzMzRhMmE3ZGUuLmViOGY5OTBhYzk2ZTQ4Y2RkZDA2YWUxNmJh
MzljNDAyMDJkMWQwYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMDM0LDYgKzEwMzQsNyBA
QCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKICAgICBj
c3MvQ1NTRnVuY3Rpb25WYWx1ZS5jcHAKICAgICBjc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKKyAg
ICBjc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcAogICAgIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVl
LmNwcAogICAgIGNzcy9DU1NJbWFnZVNldFZhbHVlLmNwcAogICAgIGNzcy9DU1NJbWFnZVZhbHVl
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMDIyNTljNDNjNTIwNDBjYjE0
Y2NiYTM3YTk1ZjEyYzQwNDljMTljNi4uYWIyNGZhYjU2NjNiMzhjNWNlYTMzZTk4MDRiM2UwYWU3
MDE0MGUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yNTQ1LDYgKzI1NDUs
OCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlv
blZhbHVlLmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaCBcCisJU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyb3VwaW5nUnVsZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGlu
Z1J1bGUuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU0hlbHBlci5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggNTE5ZDk1NDE5YjMx
MzZlMDM5ZjRlMTdlYzA3YTljYTM0ODM2NTJjYi4uYzRiNzU5NTk3MzZmOGEwMTE0NTNkMWUzMGJh
NGMzMjgwYzE4OTJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0yNjMsNiArMjYzLDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBcCiAgICAgY3NzL0NTU0Z1bmN0aW9u
VmFsdWUuY3BwIFwKICAgICBjc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAgXAorICAgIGNzcy9DU1NH
cm91cGluZ1J1bGUuY3BwIFwKICAgICBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAgXAogICAgIGNzcy9D
U1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCBcCiAgICAgY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3Bw
IFwKQEAgLTE0NzIsNiArMTQ3Myw3IEBAIEhFQURFUlMgKz0gXAogICAgIGNzcy9DU1NGb250U2Vs
ZWN0b3IuaCBcCiAgICAgY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaCBcCiAgICAgY3NzL0NTU0dyYWRp
ZW50VmFsdWUuaCBcCisgICAgY3NzL0NTU0dyb3VwaW5nUnVsZS5oIFwKICAgICBjc3MvQ1NTSGVs
cGVyLmggXAogICAgIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmggXAogICAgIGNzcy9DU1NJ
bWFnZVZhbHVlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGNmNGU5ZDJmYjYzOTNmMmJlZGQ3ODY2
MDU2ZGM0NTViMTMyMzI0MjYuLjNlZTYyM2IxNzBkMTAxMWMxNGEzYjc0ZWZlYjlmNDI3ODNkYzQ5
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTE0NzEsNiArMTQ3MSw4IEBACiAgICAgICAgICAgICAn
Y3NzL0NTU0Z1bmN0aW9uVmFsdWUuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU0dyYWRpZW50VmFs
dWUuY3BwJywKICAgICAgICAgICAgICdjc3MvQ1NTR3JhZGllbnRWYWx1ZS5oJywKKyAgICAgICAg
ICAgICdjc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcCcsCisgICAgICAgICAgICAnY3NzL0NTU0dyb3Vw
aW5nUnVsZS5oJywKICAgICAgICAgICAgICdjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAn
LAogICAgICAgICAgICAgJ2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcCcsCiAgICAgICAgICAgICAn
Y3NzL0NTU0ltYWdlVmFsdWUuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKaW5kZXggOWI4MzE3OTA1Mjc4MmQ0ODRkYTg3N2UxZTI5ZjRmNWExYjU3
ZmUzYi4uZTUwODNkZjljODVjMTA0M2NiNmM3NTcyYWViOWI1ZmIzYjE4YWE2MiAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTM2MTcwLDYgKzM2
MTcwLDYyIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGNzc1xDU1NHcm91cGluZ1J1bGUuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
IgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkv
PgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTR3JvdXBpbmdSdWxlLmgiCisJ
CQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NI
ZWxwZXIuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2E5YzYwODE1MWZhZGJkOTIxOWUyYjM1
MDU2NThmMTliYTczNDY0NS4uYjQ4MTk1MWJlMWRmNzRkYjUyNTIzNWY2NWMzM2RlZDZhY2MyZjRh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNjQzNiw2ICs2NDM2LDcgQEAKIAkJRkFCRTcyRkQxMDU5QzIxMTAwRDk5OUREIC8q
IE1hdGhNTEVsZW1lbnRGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZBQkU3MkZCMTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50
RmFjdG9yeS5jcHAgKi87IH07CiAJCUZBQkU3MkZFMTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxO
YW1lcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
QUJFNzJGQzEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MTmFtZXMuY3BwICovOyB9OwogCQlGQjJD
MTVDMzE2NUQ2NDlEMDAzOUM5RjggLyogQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCMkMxNUMyMTY1RDY0
OTAwMDM5QzlGOCAvKiBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZCMzA1NkMyMTY5RTVEQUMwMDk2
QTIzMiAvKiBDU1NHcm91cGluZ1J1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZCMzA1NkMxMTY5RTVEQUMwMDk2QTIzMiAvKiBDU1NHcm91cGluZ1J1
bGUuaCAqLzsgfTsKIAkJRkI3OEFEMkUxNTFCRjVFNjAwRkU1NEQzIC8qIENTU1BhcnNlck1vZGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCNzhBRDJD
MTUxQkY1RDIwMEZFNTREMyAvKiBDU1NQYXJzZXJNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkI5MkRGNEIxNUZFRDA4NzAwOTk0NDMzIC8q
IENsaXBQYXRoT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGQjkyREY0OTE1RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBhdGhPcGVyYXRpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGQkMy
MjBERjEyMzdGQkVCMDBCQ0Y3ODggLyogR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkJDMjIwREUxMjM3RkJF
QjAwQkNGNzg4IC8qIEdyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCAqLzsgfTsKQEAgLTY0NDUs
NiArNjQ0Niw3IEBACiAJCUZCRDZBRjhCMTVFRjI1RTUwMDhCNzExMCAvKiBDU1NCYXNpY1NoYXBl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQkQ2
QUY4NjE1RUYyMUQ0MDA4QjcxMTAgLyogQ1NTQmFzaWNTaGFwZXMuY3BwICovOyB9OwogCQlGQkQ2
QUY4QzE1RUYyNjA0MDA4QjcxMTAgLyogQmFzaWNTaGFwZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCRDZBRjgzMTVFRjIxQTMwMDhCNzExMCAvKiBC
YXNpY1NoYXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUZCRDZBRjhEMTVFRjI2MEEwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQkQ2QUY4MjE1RUYyMUEz
MDA4QjcxMTAgLyogQmFzaWNTaGFwZXMuY3BwICovOyB9OworCQlGQkY4OTA0NTE2OUU5RjFGMDA1
MkQ4NkUgLyogQ1NTR3JvdXBpbmdSdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZCRjg5MDQ0MTY5RTlGMUYwMDUyRDg2RSAvKiBDU1NHcm91cGlu
Z1J1bGUuY3BwICovOyB9OwogCQlGRDAwRDdBNDE0QTNGNjE5MDA3MzQwMTEgLyogU2luY1Jlc2Ft
cGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RDAwRDdBMjE0QTNGNjE5MDA3MzQwMTEgLyogU2luY1Jlc2FtcGxlci5jcHAgKi87IH07CiAJCUZE
MDBEN0E1MTRBM0Y2MTkwMDczNDAxMSAvKiBTaW5jUmVzYW1wbGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDAwRDdBMzE0QTNGNjE5MDA3MzQwMTEg
LyogU2luY1Jlc2FtcGxlci5oICovOyB9OwogCQlGRDA2REZBNTEzNEE0REVGMDA2RjVEN0QgLyog
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMDZERkEzMTM0QTRERUYwMDZGNUQ3RCAvKiBEZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwICovOyB9OwpAQCAtMTQwMTQsNiArMTQwMTYsNyBAQAog
CQlGQUJFNzJGQjEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MRWxlbWVudEZhY3Rvcnku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQUJFNzJGQzEwNTlDMjExMDBEOTk5
REQgLyogTWF0aE1MTmFtZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTWF0aE1MTmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQjJDMTVD
MjE2NUQ2NDkwMDAzOUM5RjggLyogQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkIzMDU2QzExNjlFNURBQzAwOTZBMjMyIC8q
IENTU0dyb3VwaW5nUnVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NH
cm91cGluZ1J1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkI3OEFEMkMxNTFC
RjVEMjAwRkU1NEQzIC8qIENTU1BhcnNlck1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ1NTUGFyc2VyTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
QjkyREY0OTE1RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBhdGhPcGVyYXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xpcFBhdGhPcGVyYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkJDMjIwREUxMjM3RkJFQjAwQkNGNzg4IC8qIEdyYXBoaWNzQ29u
dGV4dDNET3BlbkdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdy
YXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE0MDIzLDYgKzE0MDI2LDcgQEAKIAkJRkJENkFGODUxNUVGMjFENDAwOEI3MTEwIC8qIEJhc2lj
U2hhcGVGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzaWNT
aGFwZUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQkQ2QUY4NjE1
RUYyMUQ0MDA4QjcxMTAgLyogQ1NTQmFzaWNTaGFwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ1NTQmFzaWNTaGFwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGQkQ2QUY4NzE1RUYyMUQ0MDA4QjcxMTAgLyogQ1NTQmFzaWNTaGFwZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQmFzaWNTaGFwZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkJGODkwNDQxNjlFOUYxRjAwNTJEODZFIC8qIENTU0dy
b3VwaW5nUnVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NH
cm91cGluZ1J1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQ0VCQ0Q3MTE2
MjNBNzkxMDAyOTk2NUUgLyogQ1NTR3JhbW1hci55LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS55
YWNjOyBwYXRoID0gQ1NTR3JhbW1hci55LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGQ0VCQ0Q3MjE2MjNBNzkxMDAyOTk2NUUgLyogQ1NTR3JhbW1hci55LmluY2x1ZGVzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS55YWNjOyBwYXRoID0gQ1NTR3JhbW1hci55LmluY2x1ZGVzOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDAwRDdBMjE0QTNGNjE5MDA3MzQwMTEgLyogU2lu
Y1Jlc2FtcGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW5j
UmVzYW1wbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNTM1LDYgKzIx
NTM5LDggQEAKIAkJCQlCQzUzQzY5MTBEQTU5MTE0MDAyMUVCNUQgLyogQ1NTR3JhZGllbnRWYWx1
ZS5oICovLAogCQkJCUZDRUJDRDcxMTYyM0E3OTEwMDI5OTY1RSAvKiBDU1NHcmFtbWFyLnkuaW4g
Ki8sCiAJCQkJRkNFQkNENzIxNjIzQTc5MTAwMjk5NjVFIC8qIENTU0dyYW1tYXIueS5pbmNsdWRl
cyAqLywKKwkJCQlGQjMwNTZDMTE2OUU1REFDMDA5NkEyMzIgLyogQ1NTR3JvdXBpbmdSdWxlLmgg
Ki8sCisJCQkJRkJGODkwNDQxNjlFOUYxRjAwNTJEODZFIC8qIENTU0dyb3VwaW5nUnVsZS5jcHAg
Ki8sCiAJCQkJQkM3NzJCMzYwQzRFQTkxRTAwODMyODVGIC8qIENTU0hlbHBlci5oICovLAogCQkJ
CUJDMjNFNzZCMERBRTg4QTkwMDlGREM5MSAvKiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCAq
LywKIAkJCQlCQzIzRUU5MTBEQUVEMkJDMDA5RkRDOTEgLyogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZS5oICovLApAQCAtMjMwMjUsNiArMjMwMzEsNyBAQAogCQkJCUJDMDJBNjNDMEUwOUE5Q0YwMDRC
NkQyQiAvKiBDU1NGdW5jdGlvblZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzUzQzY5MjBE
QTU5MTE0MDAyMUVCNUQgLyogQ1NTR3JhZGllbnRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NjUwRjUzREMwOUQxNUREQTAwQzlCMEM4IC8qIENTU0dyYW1tYXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCUZCMzA1NkMyMTY5RTVEQUMwMDk2QTIzMiAvKiBDU1NHcm91cGluZ1J1bGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNzcyQjNDMEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NIZWxwZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMjNFRTkyMERBRUQyQkMwMDlGREM5MSAvKiBDU1NJbWFnZUdlbmVy
YXRvclZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzkzRTYwMDE1MUE5OUYyMDAwNjZGMDYg
LyogQ1NTSW1hZ2VTZXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTIyOCw2ICsyOTIzNSw3
IEBACiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVy
b1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkJGODkwNDUxNjlFOUYxRjAwNTJEODZFIC8q
IENTU0dyb3VwaW5nUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dy
b3VwaW5nUnVsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWExOWVjYzg5ZGE5YTA5MjM5MDQ0ZmFjNDI0NTVm
ZDY4ZjE3MGJhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91
cGluZ1J1bGUuY3BwCkBAIC0wLDAgKzEsMTcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICog
ICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJDU1NHcm91cGluZ1J1bGUuaCIKKwor
I2luY2x1ZGUgIkNTU1BhcnNlci5oIgorI2luY2x1ZGUgIkNTU1J1bGVMaXN0LmgiCisjaW5jbHVk
ZSAiQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRl
ICJTdHlsZVJ1bGUuaCIKKyNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgi
CisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rvci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDU1NH
cm91cGluZ1J1bGU6OkNTU0dyb3VwaW5nUnVsZShTdHlsZVJ1bGVCbG9jayogZ3JvdXBSdWxlLCBD
U1NTdHlsZVNoZWV0KiBwYXJlbnQpCisgICAgOiBDU1NSdWxlKHBhcmVudCkKKyAgICAsIG1fZ3Jv
dXBSdWxlKGdyb3VwUnVsZSkKKyAgICAsIG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycyhncm91cFJ1
bGUtPmNoaWxkUnVsZXMoKS5zaXplKCkpCit7Cit9CisKK0NTU0dyb3VwaW5nUnVsZTo6fkNTU0dy
b3VwaW5nUnVsZSgpCit7CisgICAgQVNTRVJUKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXpl
KCkgPT0gbV9ncm91cFJ1bGUtPmNoaWxkUnVsZXMoKS5zaXplKCkpOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgaWYgKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpXSkKKyAgICAgICAgICAgIG1fY2hp
bGRSdWxlQ1NTT01XcmFwcGVyc1tpXS0+c2V0UGFyZW50UnVsZSgwKTsKKyAgICB9Cit9CisKK3Vu
c2lnbmVkIENTU0dyb3VwaW5nUnVsZTo6aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGVTdHJp
bmcsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBBU1NFUlQobV9j
aGlsZFJ1bGVDU1NPTVdyYXBwZXJzLnNpemUoKSA9PSBtX2dyb3VwUnVsZS0+Y2hpbGRSdWxlcygp
LnNpemUoKSk7CisKKyAgICBpZiAoaW5kZXggPiBtX2dyb3VwUnVsZS0+Y2hpbGRSdWxlcygpLnNp
emUoKSkgeworICAgICAgICAvLyBJTkRFWF9TSVpFX0VSUjogUmFpc2VkIGlmIHRoZSBzcGVjaWZp
ZWQgaW5kZXggaXMgbm90IGEgdmFsaWQgaW5zZXJ0aW9uIHBvaW50LgorICAgICAgICBlYyA9IElO
REVYX1NJWkVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBDU1NQYXJzZXIg
cGFyc2VyKHBhcnNlckNvbnRleHQoKSk7CisgICAgQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCA9
IHBhcmVudFN0eWxlU2hlZXQoKTsKKyAgICBSZWZQdHI8U3R5bGVSdWxlQmFzZT4gbmV3UnVsZSA9
IHBhcnNlci5wYXJzZVJ1bGUoc3R5bGVTaGVldCA/IHN0eWxlU2hlZXQtPmNvbnRlbnRzKCkgOiAw
LCBydWxlU3RyaW5nKTsKKyAgICBpZiAoIW5ld1J1bGUpIHsKKyAgICAgICAgLy8gU1lOVEFYX0VS
UjogUmFpc2VkIGlmIHRoZSBzcGVjaWZpZWQgcnVsZSBoYXMgYSBzeW50YXggZXJyb3IgYW5kIGlz
IHVucGFyc2FibGUuCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorCisgICAgaWYgKG5ld1J1bGUtPmlzSW1wb3J0UnVsZSgpKSB7CisgICAgICAgIC8v
IEZJWE1FOiBhbiBISUVSQVJDSFlfUkVRVUVTVF9FUlIgc2hvdWxkIGFsc28gYmUgdGhyb3duIGZv
ciBhIEBjaGFyc2V0IG9yIGEgbmVzdGVkCisgICAgICAgIC8vIEBtZWRpYSBydWxlLiBUaGV5IGFy
ZSBjdXJyZW50bHkgbm90IGdldHRpbmcgcGFyc2VkLCByZXN1bHRpbmcgaW4gYSBTWU5UQVhfRVJS
CisgICAgICAgIC8vIHRvIGdldCByYWlzZWQgYWJvdmUuCisKKyAgICAgICAgLy8gSElFUkFSQ0hZ
X1JFUVVFU1RfRVJSOiBSYWlzZWQgaWYgdGhlIHJ1bGUgY2Fubm90IGJlIGluc2VydGVkIGF0IHRo
ZSBzcGVjaWZpZWQKKyAgICAgICAgLy8gaW5kZXgsIGUuZy4sIGlmIGFuIEBpbXBvcnQgcnVsZSBp
cyBpbnNlcnRlZCBhZnRlciBhIHN0YW5kYXJkIHJ1bGUgc2V0IG9yIG90aGVyCisgICAgICAgIC8v
IGF0LXJ1bGUuCisgICAgICAgIGVjID0gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisgICAgQ1NTU3R5bGVTaGVldDo6UnVsZU11dGF0aW9uU2NvcGUgbXV0
YXRpb25TY29wZSh0aGlzKTsKKworICAgIG1fZ3JvdXBSdWxlLT53cmFwcGVySW5zZXJ0UnVsZShp
bmRleCwgbmV3UnVsZSk7CisKKyAgICBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuaW5zZXJ0KGlu
ZGV4LCBSZWZQdHI8Q1NTUnVsZT4oKSk7CisgICAgcmV0dXJuIGluZGV4OworfQorCit2b2lkIENT
U0dyb3VwaW5nUnVsZTo6ZGVsZXRlUnVsZSh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCit7CisgICAgQVNTRVJUKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCkgPT0gbV9n
cm91cFJ1bGUtPmNoaWxkUnVsZXMoKS5zaXplKCkpOworCisgICAgaWYgKGluZGV4ID49IG1fZ3Jv
dXBSdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgpKSB7CisgICAgICAgIC8vIElOREVYX1NJWkVfRVJS
OiBSYWlzZWQgaWYgdGhlIHNwZWNpZmllZCBpbmRleCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEK
KyAgICAgICAgLy8gcnVsZSBpbiB0aGUgbWVkaWEgcnVsZSBsaXN0LgorICAgICAgICBlYyA9IElO
REVYX1NJWkVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ1NTU3R5bGVTaGVl
dDo6UnVsZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlzKTsKKworICAgIG1fZ3JvdXBS
dWxlLT53cmFwcGVyUmVtb3ZlUnVsZShpbmRleCk7CisKKyAgICBpZiAobV9jaGlsZFJ1bGVDU1NP
TVdyYXBwZXJzW2luZGV4XSkKKyAgICAgICAgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2luZGV4
XS0+c2V0UGFyZW50UnVsZSgwKTsKKyAgICBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMucmVtb3Zl
KGluZGV4KTsKK30KKwordm9pZCBDU1NHcm91cGluZ1J1bGU6OmFwcGVuZENzc1RleHRGb3JJdGVt
cyhTdHJpbmdCdWlsZGVyJiByZXN1bHQpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgc2l6ZSA9IGxl
bmd0aCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiAgIik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoaXRl
bShpKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKTsKKyAgICB9Cit9
CisKK3Vuc2lnbmVkIENTU0dyb3VwaW5nUnVsZTo6bGVuZ3RoKCkgY29uc3QKK3sgCisgICAgcmV0
dXJuIG1fZ3JvdXBSdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgpOyAKK30KKworQ1NTUnVsZSogQ1NT
R3JvdXBpbmdSdWxlOjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAoreyAKKyAgICBpZiAoaW5k
ZXggPj0gbGVuZ3RoKCkpCisgICAgICAgIHJldHVybiAwOworICAgIEFTU0VSVChtX2NoaWxkUnVs
ZUNTU09NV3JhcHBlcnMuc2l6ZSgpID09IG1fZ3JvdXBSdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgp
KTsKKyAgICBSZWZQdHI8Q1NTUnVsZT4mIHJ1bGUgPSBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnNb
aW5kZXhdOworICAgIGlmICghcnVsZSkKKyAgICAgICAgcnVsZSA9IG1fZ3JvdXBSdWxlLT5jaGls
ZFJ1bGVzKClbaW5kZXhdLT5jcmVhdGVDU1NPTVdyYXBwZXIoY29uc3RfY2FzdDxDU1NHcm91cGlu
Z1J1bGUqPih0aGlzKSk7CisgICAgcmV0dXJuIHJ1bGUuZ2V0KCk7Cit9CisKK0NTU1J1bGVMaXN0
KiBDU1NHcm91cGluZ1J1bGU6OmNzc1J1bGVzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcnVsZUxp
c3RDU1NPTVdyYXBwZXIpCisgICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBhZG9wdFB0
cihuZXcgTGl2ZUNTU1J1bGVMaXN0PENTU0dyb3VwaW5nUnVsZT4oY29uc3RfY2FzdDxDU1NHcm91
cGluZ1J1bGUqPih0aGlzKSkpOworICAgIHJldHVybiBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyLmdl
dCgpOworfQorCit2b2lkIENTU0dyb3VwaW5nUnVsZTo6cmVhdHRhY2goU3R5bGVSdWxlQmFzZSog
cnVsZSkKK3sKKyAgICBBU1NFUlQocnVsZSk7CisgICAgbV9ncm91cFJ1bGUgPSBzdGF0aWNfY2Fz
dDxTdHlsZVJ1bGVCbG9jayo+KHJ1bGUpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fY2hp
bGRSdWxlQ1NTT01XcmFwcGVyc1tpXSkKKyAgICAgICAgICAgIG1fY2hpbGRSdWxlQ1NTT01XcmFw
cGVyc1tpXS0+cmVhdHRhY2gobV9ncm91cFJ1bGUtPmNoaWxkUnVsZXMoKVtpXS5nZXQoKSk7Cisg
ICAgfQorfQorCit2b2lkIENTU0dyb3VwaW5nUnVsZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0lu
Zm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7
CisgICAgQ1NTUnVsZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAg
aW5mby5hZGRNZW1iZXIobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzKTsKKyAgICBpbmZvLmFkZE1l
bWJlcihtX3J1bGVMaXN0Q1NTT01XcmFwcGVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyYmNmM2U4M2Y4
MmIyMjVkMGIyM2U3ZDA0YWMwZTBhNjhkYmE1NGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIChD
KSAxOTk5LTIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqIChDKSAyMDAyLTIwMDMg
RGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDIsIDIw
MDYsIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgKHNhbUB3ZWJraXQub3JnKQorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIENTU0dy
b3VwaW5nUnVsZV9oCisjZGVmaW5lIENTU0dyb3VwaW5nUnVsZV9oCisKKyNpbmNsdWRlICJDU1NS
dWxlLmgiCisjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1J1bGVMaXN0OworCitjbGFzcyBDU1NH
cm91cGluZ1J1bGUgOiBwdWJsaWMgQ1NTUnVsZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q1NT
R3JvdXBpbmdSdWxlKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVhdHRhY2goU3R5bGVSdWxlQmFz
ZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CisKKyAgICBDU1NSdWxlTGlzdCogY3NzUnVsZXMo
KSBjb25zdDsKKworICAgIHVuc2lnbmVkIGluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlLCB1
bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgZGVsZXRlUnVsZSh1bnNp
Z25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICAKKyAgICAvLyBGb3IgQ1NTUnVs
ZUxpc3QKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKKyAgICBDU1NSdWxlKiBpdGVtKHVu
c2lnbmVkIGluZGV4KSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIENTU0dyb3VwaW5nUnVsZShT
dHlsZVJ1bGVCbG9jayogZ3JvdXBSdWxlLCBDU1NTdHlsZVNoZWV0KiBwYXJlbnQpOworICAgIAor
ICAgIHZvaWQgYXBwZW5kQ3NzVGV4dEZvckl0ZW1zKFN0cmluZ0J1aWxkZXImKSBjb25zdDsKKwor
ICAgIFJlZlB0cjxTdHlsZVJ1bGVCbG9jaz4gbV9ncm91cFJ1bGU7CisgICAgbXV0YWJsZSBWZWN0
b3I8UmVmUHRyPENTU1J1bGU+ID4gbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzOworICAgIG11dGFi
bGUgT3duUHRyPENTU1J1bGVMaXN0PiBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ1NTR3JvdXBpbmdSdWxlX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU01lZGlhUnVsZS5jcHAKaW5kZXggZmM4NjI0ZGEwOTFlYmRiNmEyN2Q4ZjczOWRi
NmY5MDE3NjM0MjllOS4uYWU5MTBkZjM4OTYwODJlZWZkMDE4MTJjZjQ5YWExNjAxODkwYjZlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5jcHAKQEAgLTM1LDE1NSArMzUsNTYgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogQ1NTTWVkaWFSdWxlOjpDU1NNZWRpYVJ1bGUoU3R5bGVSdWxl
TWVkaWEqIG1lZGlhUnVsZSwgQ1NTU3R5bGVTaGVldCogcGFyZW50KQotICAgIDogQ1NTUnVsZShw
YXJlbnQpCi0gICAgLCBtX21lZGlhUnVsZShtZWRpYVJ1bGUpCi0gICAgLCBtX2NoaWxkUnVsZUNT
U09NV3JhcHBlcnMobWVkaWFSdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgpKQorICAgIDogQ1NTR3Jv
dXBpbmdSdWxlKG1lZGlhUnVsZSwgcGFyZW50KQogewogfQogCiBDU1NNZWRpYVJ1bGU6On5DU1NN
ZWRpYVJ1bGUoKQogewotICAgIEFTU0VSVChtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuc2l6ZSgp
ID09IG1fbWVkaWFSdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgpKTsKLQotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgaWYgKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpXSkKLSAgICAgICAgICAgIG1fY2hp
bGRSdWxlQ1NTT01XcmFwcGVyc1tpXS0+c2V0UGFyZW50UnVsZSgwKTsKLSAgICB9CiAgICAgaWYg
KG1fbWVkaWFDU1NPTVdyYXBwZXIpCiAgICAgICAgIG1fbWVkaWFDU1NPTVdyYXBwZXItPmNsZWFy
UGFyZW50UnVsZSgpOwogfQogCi11bnNpZ25lZCBDU1NNZWRpYVJ1bGU6Omluc2VydFJ1bGUoY29u
c3QgU3RyaW5nJiBydWxlU3RyaW5nLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMp
CitNZWRpYVF1ZXJ5U2V0KiBDU1NNZWRpYVJ1bGU6Om1lZGlhUXVlcmllcygpIGNvbnN0CiB7Ci0g
ICAgQVNTRVJUKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCkgPT0gbV9tZWRpYVJ1bGUt
PmNoaWxkUnVsZXMoKS5zaXplKCkpOwotCi0gICAgaWYgKGluZGV4ID4gbV9tZWRpYVJ1bGUtPmNo
aWxkUnVsZXMoKS5zaXplKCkpIHsKLSAgICAgICAgLy8gSU5ERVhfU0laRV9FUlI6IFJhaXNlZCBp
ZiB0aGUgc3BlY2lmaWVkIGluZGV4IGlzIG5vdCBhIHZhbGlkIGluc2VydGlvbiBwb2ludC4KLSAg
ICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0g
ICAgQ1NTUGFyc2VyIHBhcnNlcihwYXJzZXJDb250ZXh0KCkpOwotICAgIENTU1N0eWxlU2hlZXQq
IHN0eWxlU2hlZXQgPSBwYXJlbnRTdHlsZVNoZWV0KCk7Ci0gICAgUmVmUHRyPFN0eWxlUnVsZUJh
c2U+IG5ld1J1bGUgPSBwYXJzZXIucGFyc2VSdWxlKHN0eWxlU2hlZXQgPyBzdHlsZVNoZWV0LT5j
b250ZW50cygpIDogMCwgcnVsZVN0cmluZyk7Ci0gICAgaWYgKCFuZXdSdWxlKSB7Ci0gICAgICAg
IC8vIFNZTlRBWF9FUlI6IFJhaXNlZCBpZiB0aGUgc3BlY2lmaWVkIHJ1bGUgaGFzIGEgc3ludGF4
IGVycm9yIGFuZCBpcyB1bnBhcnNhYmxlLgotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAg
ICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmIChuZXdSdWxlLT5pc0ltcG9ydFJ1bGUoKSkg
ewotICAgICAgICAvLyBGSVhNRTogYW4gSElFUkFSQ0hZX1JFUVVFU1RfRVJSIHNob3VsZCBhbHNv
IGJlIHRocm93biBmb3IgYSBAY2hhcnNldCBvciBhIG5lc3RlZAotICAgICAgICAvLyBAbWVkaWEg
cnVsZS4gIFRoZXkgYXJlIGN1cnJlbnRseSBub3QgZ2V0dGluZyBwYXJzZWQsIHJlc3VsdGluZyBp
biBhIFNZTlRBWF9FUlIKLSAgICAgICAgLy8gdG8gZ2V0IHJhaXNlZCBhYm92ZS4KLQotICAgICAg
ICAvLyBISUVSQVJDSFlfUkVRVUVTVF9FUlI6IFJhaXNlZCBpZiB0aGUgcnVsZSBjYW5ub3QgYmUg
aW5zZXJ0ZWQgYXQgdGhlIHNwZWNpZmllZAotICAgICAgICAvLyBpbmRleCwgZS5nLiwgaWYgYW4g
QGltcG9ydCBydWxlIGlzIGluc2VydGVkIGFmdGVyIGEgc3RhbmRhcmQgcnVsZSBzZXQgb3Igb3Ro
ZXIKLSAgICAgICAgLy8gYXQtcnVsZS4KLSAgICAgICAgZWMgPSBISUVSQVJDSFlfUkVRVUVTVF9F
UlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBDU1NTdHlsZVNoZWV0OjpSdWxlTXV0
YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwotCi0gICAgbV9tZWRpYVJ1bGUtPndyYXBw
ZXJJbnNlcnRSdWxlKGluZGV4LCBuZXdSdWxlKTsKLQotICAgIG1fY2hpbGRSdWxlQ1NTT01XcmFw
cGVycy5pbnNlcnQoaW5kZXgsIFJlZlB0cjxDU1NSdWxlPigpKTsKLSAgICByZXR1cm4gaW5kZXg7
Ci19Ci0KLXZvaWQgQ1NTTWVkaWFSdWxlOjpkZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4LCBFeGNl
cHRpb25Db2RlJiBlYykKLXsKLSAgICBBU1NFUlQobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLnNp
emUoKSA9PSBtX21lZGlhUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUoKSk7Ci0KLSAgICBpZiAoaW5k
ZXggPj0gbV9tZWRpYVJ1bGUtPmNoaWxkUnVsZXMoKS5zaXplKCkpIHsKLSAgICAgICAgLy8gSU5E
RVhfU0laRV9FUlI6IFJhaXNlZCBpZiB0aGUgc3BlY2lmaWVkIGluZGV4IGRvZXMgbm90IGNvcnJl
c3BvbmQgdG8gYQotICAgICAgICAvLyBydWxlIGluIHRoZSBtZWRpYSBydWxlIGxpc3QuCi0gICAg
ICAgIGVjID0gSU5ERVhfU0laRV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBD
U1NTdHlsZVNoZWV0OjpSdWxlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwotCi0g
ICAgbV9tZWRpYVJ1bGUtPndyYXBwZXJSZW1vdmVSdWxlKGluZGV4KTsKLQotICAgIGlmIChtX2No
aWxkUnVsZUNTU09NV3JhcHBlcnNbaW5kZXhdKQotICAgICAgICBtX2NoaWxkUnVsZUNTU09NV3Jh
cHBlcnNbaW5kZXhdLT5zZXRQYXJlbnRSdWxlKDApOwotICAgIG1fY2hpbGRSdWxlQ1NTT01XcmFw
cGVycy5yZW1vdmUoaW5kZXgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTdHlsZVJ1
bGVNZWRpYSo+KG1fZ3JvdXBSdWxlLmdldCgpKS0+bWVkaWFRdWVyaWVzKCk7CiB9CiAKIFN0cmlu
ZyBDU1NNZWRpYVJ1bGU6OmNzc1RleHQoKSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgcmVz
dWx0OwogICAgIHJlc3VsdC5hcHBlbmQoIkBtZWRpYSAiKTsKLSAgICBpZiAobV9tZWRpYVJ1bGUt
Pm1lZGlhUXVlcmllcygpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQobV9tZWRpYVJ1bGUtPm1l
ZGlhUXVlcmllcygpLT5tZWRpYVRleHQoKSk7CisgICAgaWYgKG1lZGlhUXVlcmllcygpKSB7Cisg
ICAgICAgIHJlc3VsdC5hcHBlbmQobWVkaWFRdWVyaWVzKCktPm1lZGlhVGV4dCgpKTsKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICcpOwogICAgIH0KLSAgICByZXN1bHQuYXBwZW5kKCJ7IFxuIik7
Ci0gICAgCi0gICAgdW5zaWduZWQgc2l6ZSA9IGxlbmd0aCgpOwotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiICAiKTsKLSAg
ICAgICAgcmVzdWx0LmFwcGVuZChpdGVtKGkpLT5jc3NUZXh0KCkpOwotICAgICAgICByZXN1bHQu
YXBwZW5kKCdcbicpOwotICAgIH0KLQorICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJ7IFxuIik7
CisgICAgYXBwZW5kQ3NzVGV4dEZvckl0ZW1zKHJlc3VsdCk7CiAgICAgcmVzdWx0LmFwcGVuZCgn
fScpOwogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAogTWVkaWFMaXN0KiBDU1NN
ZWRpYVJ1bGU6Om1lZGlhKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fbWVkaWFSdWxlLT5tZWRpYVF1
ZXJpZXMoKSkKKyAgICBpZiAoIW1lZGlhUXVlcmllcygpKQogICAgICAgICByZXR1cm4gMDsKICAg
ICBpZiAoIW1fbWVkaWFDU1NPTVdyYXBwZXIpCi0gICAgICAgIG1fbWVkaWFDU1NPTVdyYXBwZXIg
PSBNZWRpYUxpc3Q6OmNyZWF0ZShtX21lZGlhUnVsZS0+bWVkaWFRdWVyaWVzKCksIGNvbnN0X2Nh
c3Q8Q1NTTWVkaWFSdWxlKj4odGhpcykpOworICAgICAgICBtX21lZGlhQ1NTT01XcmFwcGVyID0g
TWVkaWFMaXN0OjpjcmVhdGUobWVkaWFRdWVyaWVzKCksIGNvbnN0X2Nhc3Q8Q1NTTWVkaWFSdWxl
Kj4odGhpcykpOwogICAgIHJldHVybiBtX21lZGlhQ1NTT01XcmFwcGVyLmdldCgpOwogfQogCi11
bnNpZ25lZCBDU1NNZWRpYVJ1bGU6Omxlbmd0aCgpIGNvbnN0Ci17IAotICAgIHJldHVybiBtX21l
ZGlhUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUoKTsgCi19Ci0KLUNTU1J1bGUqIENTU01lZGlhUnVs
ZTo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKLXsgCi0gICAgaWYgKGluZGV4ID49IGxlbmd0
aCgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBBU1NFUlQobV9jaGlsZFJ1bGVDU1NPTVdyYXBw
ZXJzLnNpemUoKSA9PSBtX21lZGlhUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUoKSk7Ci0gICAgUmVm
UHRyPENTU1J1bGU+JiBydWxlID0gbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2luZGV4XTsKLSAg
ICBpZiAoIXJ1bGUpCi0gICAgICAgIHJ1bGUgPSBtX21lZGlhUnVsZS0+Y2hpbGRSdWxlcygpW2lu
ZGV4XS0+Y3JlYXRlQ1NTT01XcmFwcGVyKGNvbnN0X2Nhc3Q8Q1NTTWVkaWFSdWxlKj4odGhpcykp
OwotICAgIHJldHVybiBydWxlLmdldCgpOwotfQotCi1DU1NSdWxlTGlzdCogQ1NTTWVkaWFSdWxl
Ojpjc3NSdWxlcygpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX3J1bGVMaXN0Q1NTT01XcmFwcGVyKQot
ICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gYWRvcHRQdHIobmV3IExpdmVDU1NSdWxl
TGlzdDxDU1NNZWRpYVJ1bGU+KGNvbnN0X2Nhc3Q8Q1NTTWVkaWFSdWxlKj4odGhpcykpKTsKLSAg
ICByZXR1cm4gbV9ydWxlTGlzdENTU09NV3JhcHBlci5nZXQoKTsKLX0KLQogdm9pZCBDU1NNZWRp
YVJ1bGU6OnJlYXR0YWNoKFN0eWxlUnVsZUJhc2UqIHJ1bGUpCiB7Ci0gICAgQVNTRVJUKHJ1bGUp
OwotICAgIEFTU0VSVChydWxlLT5pc01lZGlhUnVsZSgpKTsKLSAgICBtX21lZGlhUnVsZSA9IHN0
YXRpY19jYXN0PFN0eWxlUnVsZU1lZGlhKj4ocnVsZSk7Ci0gICAgaWYgKG1fbWVkaWFDU1NPTVdy
YXBwZXIgJiYgbV9tZWRpYVJ1bGUtPm1lZGlhUXVlcmllcygpKQotICAgICAgICBtX21lZGlhQ1NT
T01XcmFwcGVyLT5yZWF0dGFjaChtX21lZGlhUnVsZS0+bWVkaWFRdWVyaWVzKCkpOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgaWYgKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpXSkKLSAgICAgICAg
ICAgIG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpXS0+cmVhdHRhY2gobV9tZWRpYVJ1bGUtPmNo
aWxkUnVsZXMoKVtpXS5nZXQoKSk7Ci0gICAgfQorICAgIENTU0dyb3VwaW5nUnVsZTo6cmVhdHRh
Y2gocnVsZSk7CisgICAgaWYgKG1fbWVkaWFDU1NPTVdyYXBwZXIgJiYgbWVkaWFRdWVyaWVzKCkp
CisgICAgICAgIG1fbWVkaWFDU1NPTVdyYXBwZXItPnJlYXR0YWNoKG1lZGlhUXVlcmllcygpKTsK
IH0KIAogdm9pZCBDU1NNZWRpYVJ1bGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8o
bWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwotICAgIENT
U1J1bGU6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgIENTU0dyb3Vw
aW5nUnVsZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CiAgICAgaW5mby5h
ZGRNZW1iZXIobV9tZWRpYUNTU09NV3JhcHBlcik7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9jaGls
ZFJ1bGVDU1NPTVdyYXBwZXJzKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX3J1bGVMaXN0Q1NTT01X
cmFwcGVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlh
UnVsZS5oCmluZGV4IDg3ODM1OTQ4NGI0N2UxNDQ5ODEwNTE0YjRjOWRjOGU0ZDgzMzc0NTguLjlk
NzQ5MDBiMjBhYTU1NTczNDA2ZWIzOTRhOTE4Njk5Njg4MmQxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
TWVkaWFSdWxlLmgKQEAgLTIzLDE1ICsyMywxNCBAQAogI2lmbmRlZiBDU1NNZWRpYVJ1bGVfaAog
I2RlZmluZSBDU1NNZWRpYVJ1bGVfaAogCi0jaW5jbHVkZSAiQ1NTUnVsZS5oIgorI2luY2x1ZGUg
IkNTU0dyb3VwaW5nUnVsZS5oIgogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIENTU1J1bGVMaXN0OwogY2xhc3MgU3R5bGVSdWxlTWVkaWE7CiAK
LWNsYXNzIENTU01lZGlhUnVsZSA6IHB1YmxpYyBDU1NSdWxlIHsKK2NsYXNzIENTU01lZGlhUnVs
ZSA6IHB1YmxpYyBDU1NHcm91cGluZ1J1bGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENTU01lZGlhUnVsZT4gY3JlYXRlKFN0eWxlUnVsZU1lZGlhKiBydWxlLCBDU1NTdHlsZVNo
ZWV0KiBzaGVldCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENTU01lZGlhUnVsZShydWxlLCBzaGVl
dCkpOyB9CiAKQEAgLTQzLDIyICs0MiwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcg
Y3NzVGV4dCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgTWVkaWFMaXN0KiBtZWRpYSgpIGNvbnN0
OwotICAgIENTU1J1bGVMaXN0KiBjc3NSdWxlcygpIGNvbnN0OwotCi0gICAgdW5zaWduZWQgaW5z
ZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGUsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgdm9pZCBkZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7
Ci0gICAgICAgIAotICAgIC8vIEZvciBDU1NSdWxlTGlzdAotICAgIHVuc2lnbmVkIGxlbmd0aCgp
IGNvbnN0OwotICAgIENTU1J1bGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwogCiBwcml2
YXRlOgogICAgIENTU01lZGlhUnVsZShTdHlsZVJ1bGVNZWRpYSosIENTU1N0eWxlU2hlZXQqKTsK
KworICAgIE1lZGlhUXVlcnlTZXQqIG1lZGlhUXVlcmllcygpIGNvbnN0OwogICAgIAotICAgIFJl
ZlB0cjxTdHlsZVJ1bGVNZWRpYT4gbV9tZWRpYVJ1bGU7CiAgICAgbXV0YWJsZSBSZWZQdHI8TWVk
aWFMaXN0PiBtX21lZGlhQ1NTT01XcmFwcGVyOwotICAgIG11dGFibGUgVmVjdG9yPFJlZlB0cjxD
U1NSdWxlPiA+IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyczsKLSAgICBtdXRhYmxlIE93blB0cjxD
U1NSdWxlTGlzdD4gbV9ydWxlTGlzdENTU09NV3JhcHBlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25S
dWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmNwcAppbmRl
eCA2OGRiOTY0MWNiMjdlMDk0OTYwMmI1NDFhYWU2NDNkYmQ0NWY5ZmYyLi5iNDhmNDlhODlhMmMz
NWY1YWYzZTkwM2RhMzI2NGYzYmUzNDc1ZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktp
dENTU1JlZ2lvblJ1bGUuY3BwCkBAIC00Miw4NCArNDIsMjUgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogV2ViS2l0Q1NTUmVnaW9uUnVsZTo6V2ViS2l0Q1NTUmVnaW9uUnVsZShTdHlsZVJ1bGVS
ZWdpb24qIHJlZ2lvblJ1bGUsIENTU1N0eWxlU2hlZXQqIHBhcmVudCkKLSAgICA6IENTU1J1bGUo
cGFyZW50KQotICAgICwgbV9yZWdpb25SdWxlKHJlZ2lvblJ1bGUpCi0gICAgLCBtX2NoaWxkUnVs
ZUNTU09NV3JhcHBlcnMocmVnaW9uUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUoKSkKKyAgICA6IENT
U0dyb3VwaW5nUnVsZShyZWdpb25SdWxlLCBwYXJlbnQpCiB7CiB9CiAKLVdlYktpdENTU1JlZ2lv
blJ1bGU6On5XZWJLaXRDU1NSZWdpb25SdWxlKCkKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlm
IChtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnNbaV0pCi0gICAgICAgICAgICBtX2NoaWxkUnVsZUNT
U09NV3JhcHBlcnNbaV0tPnNldFBhcmVudFJ1bGUoMCk7Ci0gICAgfQotfQotCiBTdHJpbmcgV2Vi
S2l0Q1NTUmVnaW9uUnVsZTo6Y3NzVGV4dCgpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBy
ZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZCgiQC13ZWJraXQtcmVnaW9uICIpOworICAgIHJlc3Vs
dC5hcHBlbmRMaXRlcmFsKCJALXdlYmtpdC1yZWdpb24gIik7CiAKICAgICAvLyBGaXJzdCBhZGQg
dGhlIHNlbGVjdG9ycy4KLSAgICByZXN1bHQuYXBwZW5kKG1fcmVnaW9uUnVsZS0+c2VsZWN0b3JM
aXN0KCkuc2VsZWN0b3JzVGV4dCgpKTsKKyAgICByZXN1bHQuYXBwZW5kKHN0YXRpY19jYXN0PGNv
bnN0IFN0eWxlUnVsZVJlZ2lvbio+KG1fZ3JvdXBSdWxlLmdldCgpKS0+c2VsZWN0b3JMaXN0KCku
c2VsZWN0b3JzVGV4dCgpKTsKIAogICAgIC8vIFRoZW4gYWRkIHRoZSBydWxlcy4KLSAgICByZXN1
bHQuYXBwZW5kKCIgeyBcbiIpOwotCi0gICAgdW5zaWduZWQgc2l6ZSA9IGxlbmd0aCgpOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgcmVzdWx0LmFw
cGVuZCgiICAiKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChpdGVtKGkpLT5jc3NUZXh0KCkpOwot
ICAgICAgICByZXN1bHQuYXBwZW5kKCJcbiIpOwotICAgIH0KLSAgICByZXN1bHQuYXBwZW5kKCJ9
Iik7CisgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiB7IFxuIik7CisgICAgYXBwZW5kQ3NzVGV4
dEZvckl0ZW1zKHJlc3VsdCk7CisgICAgcmVzdWx0LmFwcGVuZCgnfScpOwogICAgIHJldHVybiBy
ZXN1bHQudG9TdHJpbmcoKTsKIH0KIAotdW5zaWduZWQgV2ViS2l0Q1NTUmVnaW9uUnVsZTo6bGVu
Z3RoKCkgY29uc3QKLXsgCi0gICAgcmV0dXJuIG1fcmVnaW9uUnVsZS0+Y2hpbGRSdWxlcygpLnNp
emUoKTsgCi19Ci0KLUNTU1J1bGUqIFdlYktpdENTU1JlZ2lvblJ1bGU6Oml0ZW0odW5zaWduZWQg
aW5kZXgpIGNvbnN0Ci17IAotICAgIGlmIChpbmRleCA+PSBsZW5ndGgoKSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgQVNTRVJUKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCkgPT0gbV9y
ZWdpb25SdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgpKTsKLSAgICBSZWZQdHI8Q1NTUnVsZT4mIHJ1
bGUgPSBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnNbaW5kZXhdOwotICAgIGlmICghcnVsZSkKLSAg
ICAgICAgcnVsZSA9IG1fcmVnaW9uUnVsZS0+Y2hpbGRSdWxlcygpW2luZGV4XS0+Y3JlYXRlQ1NT
T01XcmFwcGVyKGNvbnN0X2Nhc3Q8V2ViS2l0Q1NTUmVnaW9uUnVsZSo+KHRoaXMpKTsKLSAgICBy
ZXR1cm4gcnVsZS5nZXQoKTsKLX0KLQotQ1NTUnVsZUxpc3QqIFdlYktpdENTU1JlZ2lvblJ1bGU6
OmNzc1J1bGVzKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0g
ICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBhZG9wdFB0cihuZXcgTGl2ZUNTU1J1bGVM
aXN0PFdlYktpdENTU1JlZ2lvblJ1bGU+KGNvbnN0X2Nhc3Q8V2ViS2l0Q1NTUmVnaW9uUnVsZSo+
KHRoaXMpKSk7Ci0gICAgcmV0dXJuIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIuZ2V0KCk7Ci19Ci0K
LXZvaWQgV2ViS2l0Q1NTUmVnaW9uUnVsZTo6cmVhdHRhY2goU3R5bGVSdWxlQmFzZSogcnVsZSkK
LXsKLSAgICBBU1NFUlQocnVsZSk7Ci0gICAgQVNTRVJUKHJ1bGUtPmlzUmVnaW9uUnVsZSgpKTsK
LSAgICBtX3JlZ2lvblJ1bGUgPSBzdGF0aWNfY2FzdDxTdHlsZVJ1bGVSZWdpb24qPihydWxlKTsK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnNbaV0pCi0g
ICAgICAgICAgICBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnNbaV0tPnJlYXR0YWNoKG1fcmVnaW9u
UnVsZS0+Y2hpbGRSdWxlcygpW2ldLmdldCgpKTsKLSAgICB9Ci19Ci0KLXZvaWQgV2ViS2l0Q1NT
UmVnaW9uUnVsZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2Jq
ZWN0SW5mbykgY29uc3QKLXsKLSAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJ
bmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7Ci0gICAgQ1NTUnVsZTo6cmVwb3J0
TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9yZWdp
b25SdWxlKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMpOwot
ICAgIGluZm8uYWRkTWVtYmVyKG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpOwotfQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1dlYktpdENTU1JlZ2lvblJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdp
b25SdWxlLmgKaW5kZXggYTY4YmExMWQ1MGNkM2Q3OTFlMGVkZTVjZTI4Yjk2MTE2M2UwYmI0OC4u
Njg5MmY1YjA1N2RlMTg1MzY2Y2NmODZiZmNkMmU3NmE5ZjAyYjRmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5oCkBAIC0zMSw0MSArMzEsMjMgQEAKICNpZm5kZWYg
V2ViS2l0Q1NTUmVnaW9uUnVsZV9oCiAjZGVmaW5lIFdlYktpdENTU1JlZ2lvblJ1bGVfaAogCi0j
aW5jbHVkZSAiQ1NTUnVsZS5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJD
U1NHcm91cGluZ1J1bGUuaCIKIAogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBDU1NSdWxlTGlzdDsKIGNsYXNzIFN0eWxlUnVsZVJlZ2lvbjsK
IAotY2xhc3MgV2ViS2l0Q1NTUmVnaW9uUnVsZSA6IHB1YmxpYyBDU1NSdWxlIHsKK2NsYXNzIFdl
YktpdENTU1JlZ2lvblJ1bGUgOiBwdWJsaWMgQ1NTR3JvdXBpbmdSdWxlIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJLaXRDU1NSZWdpb25SdWxlPiBjcmVhdGUoU3R5bGVSdWxl
UmVnaW9uKiBydWxlLCBDU1NTdHlsZVNoZWV0KiBzaGVldCkgeyByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYktpdENTU1JlZ2lvblJ1bGUocnVsZSwgc2hlZXQpKTsgfQogCi0gICAgdmlydHVhbCB+V2Vi
S2l0Q1NTUmVnaW9uUnVsZSgpOwotCiAgICAgdmlydHVhbCBDU1NSdWxlOjpUeXBlIHR5cGUoKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiBXRUJLSVRfUkVHSU9OX1JVTEU7IH0KICAgICB2aXJ0dWFs
IFN0cmluZyBjc3NUZXh0KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlYXR0
YWNoKFN0eWxlUnVsZUJhc2UqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOwotCi0gICAgQ1NTUnVs
ZUxpc3QqIGNzc1J1bGVzKCkgY29uc3Q7Ci0gICAgCi0gICAgLy8gRm9yIENTU1J1bGVMaXN0Ci0g
ICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgQ1NTUnVsZSogaXRlbSh1bnNpZ25lZCBp
bmRleCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgV2ViS2l0Q1NTUmVnaW9uUnVsZShTdHlsZVJ1
bGVSZWdpb24qLCBDU1NTdHlsZVNoZWV0KiBwYXJlbnQpOwotCi0gICAgUmVmUHRyPFN0eWxlUnVs
ZVJlZ2lvbj4gbV9yZWdpb25SdWxlOwotICAgIG11dGFibGUgVmVjdG9yPFJlZlB0cjxDU1NSdWxl
PiA+IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyczsKLSAgICBtdXRhYmxlIE93blB0cjxDU1NSdWxl
TGlzdD4gbV9ydWxlTGlzdENTU09NV3JhcHBlcjsKLSAgICAKLSAgICBmcmllbmQgY2xhc3MgU3R5
bGVSdWxlQmxvY2s7CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182265</attachid>
            <date>2013-01-10 21:51:47 -0800</date>
            <delta_ts>2013-01-10 22:50:33 -0800</delta_ts>
            <desc>WIP for checking Windows BuildBot</desc>
            <filename>bug-106418-20130111144850.patch</filename>
            <type>text/plain</type>
            <size>36309</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxMjYzMGI4NWVmNzdiNWFjYWIzMDU0ZDM1ZTMyZTkxNTRhYWQxYTA5Li5h
YjE5NmQ3NDlhZWFiMDk2ZTA0N2FlN2IxZGY3MzQwM2NhNTQ1YjA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjggQEAKKzIwMTMtMDEtMTAgIFRha2FzaGkgU2FrYW1vdG8gIDx0YXNha0Bnb29nbGUu
Y29tPgorCisgICAgICAgIEltcGxlbWVudCBDU1NHcm91cGluZ1J1bGUgZm9yIEBob3N0IEAtcnVs
ZXMgYW5kIEBzdXBwb3J0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNjQxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENTU0dyb3VwaW5nUnVsZSBpcyB0byBzaGFyZSBjb2RlIGJldHdlZW4gQ1NTTWVk
aWFSdWxlLCBDU1NTdXBwb3J0c1J1bGUKKyAgICAgICAgYW5kIENTU0hvc3RSdWxlLiBAc3VwcG9y
dHMgYW5kIEBob3N0IEAtcnVsZXMgYXJlIGRlcnZpZWQgZnJvbQorICAgICAgICBDU1NHcm91cGlu
Z1J1bGU6CisgICAgICAgIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTIvV0QtY3NzMy1jb25kaXRp
b25hbC8jdGhlLWNzc2dyb3VwaW5ncnVsZS1pbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9kdmNz
LnczLm9yZy9oZy93ZWJjb21wb25lbnRzL3Jhdy1maWxlL3RpcC9zcGVjL3NoYWRvdy9pbmRleC5o
dG1sI2Nzcy1ob3N0LXJ1bGUtaW50ZXJmYWNlCisgICAgICAgIFNvIHdlIG5lZWQgQ1NTR3JvdXBp
bmdSdWxlIChXSzEwMjM0NCBhbmQgV0sxMDQ4MjIpLgorICAgICAgICBTaW5jZSBAbWVkaWEgaXMg
YWxzbyBkZXJpdmVkIGZyb20gQ1NTR3JvdXBpbmdSdWxlIGFuZCBAcmVnaW9uIGhhcyB0aGUKKyAg
ICAgICAgc2FtZSBpbnRlcmZhY2UgYXMgQ1NTR3JvdXBpbmdSdWxlLCBtb2RpZnkgdG8gdXNlIENT
U0dyb3VwaW5nUnVsZToKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzMy1yZWdp
b25zLyN0aGUtYXQtcmVnaW9uLXN0eWxlLXJ1bGUKKworICAgICAgICBObyBuZXcgdGVzdHMsIGJl
Y2F1c2Ugbm8gbmV3IGZlYXR1cmUgaXMgaW1wbGVtZW50ZWQuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdl
dC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgQWRkZWQgQ1NTR3JvdXBpbmdSdWxlLmggYW5kIENTU0dyb3VwaW5nUnVs
ZS5jcHAuCisgICAgICAgICogY3NzL0NTU0FsbEluT25lLmNwcDoKKyAgICAgICAgTW9kaWZpZWQg
dG8gaW5jbHVkZSBDU1NHcm91cGluZ1J1bGUuY3BwLgorICAgICAgICAqIGNzcy9DU1NHcm91cGlu
Z1J1bGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTR3JvdXBpbmdSdWxlOjpDU1NHcm91cGluZ1J1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
R3JvdXBpbmdSdWxlOjp+Q1NTR3JvdXBpbmdSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dy
b3VwaW5nUnVsZTo6aW5zZXJ0UnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcm91cGluZ1J1
bGU6OmRlbGV0ZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JvdXBpbmdSdWxlOjphcHBl
bmRDc3NUZXh0Rm9ySXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JvdXBpbmdSdWxlOjps
ZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JvdXBpbmdSdWxlOjppdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5nUnVsZTo6Y3NzUnVsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTR3JvdXBpbmdSdWxlOjpyZWF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcm91
cGluZ1J1bGU6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgVGhlc2UgY29kZXMgYXJlIG1v
dmVkIGZyb20gQ1NTTWVkaWFSdWxlIGFuZCBXZWJLaXRDU1NSZWdpb25SdWxlLgorICAgICAgICAq
IGNzcy9DU1NHcm91cGluZ1J1bGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ1NT
R3JvdXBpbmdSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTTWVkaWFSdWxlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU01lZGlhUnVsZTo6Q1NTTWVkaWFSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU01lZGlhUnVsZTo6fkNTU01lZGlhUnVsZSk6CisgICAgICAgIE1ha2UgQ1NTTWVkaWFSdWxl
IGluaGVyaXQgQ1NTR3JvdXBpbmdSdWxlLgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWVkaWFSdWxl
OjptZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNZWRpYVJ1bGU6OnJlYXR0YWNoKToKKyAg
ICAgICAgS2VlcCB0aGUgY29kZSBmb3IgdXBkYXRpbmcgbWVkaWEgcXVlcmllcycgQ1NTT01XcmFw
cGVyLgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWVkaWFSdWxlOjpyZXBvcnRNZW1vcnlVc2FnZSk6
CisgICAgICAgIFdlIG5lZWQgdG8gcmVwb3J0IG1lZGlhIHF1ZXJpZXMnIENTU09NV3JhcHBlciBt
ZW1vcnkgdXNhZ2UuCisgICAgICAgIChXZWJDb3JlOjpDU1NNZWRpYVJ1bGU6Om1lZGlhUXVlcmll
cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNZWRpYVJ1bGU6OmNzc1RleHQpOgorICAgICAgICAq
IGNzcy9DU1NNZWRpYVJ1bGUuaDoKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5j
cHA6CisgICAgICAgIE1ha2UgV2ViS2l0Q1NTUmVnaW9uUnVsZSBpbmhlcml0IENTU0dyb3VwaW5n
UnVsZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU1JlZ2lvblJ1bGU6OldlYktpdENTU1Jl
Z2lvblJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTUmVnaW9uUnVsZTo6Y3NzVGV4
dCk6CisgICAgICAgICogY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuaDoKKyAgICAgICAgKiBjc3Mv
U3R5bGVSdWxlLmg6CisgICAgICAgIEFkZGVkIGlubGluZWQgYWNjZXNzb3IgdG8gb2J0YWluIFN0
eWxlUnVsZU1lZGlhKiBhbmQgU3R5bGVSdWxlUmVnaW9uKgorICAgICAgICBmcm9tIFN0eWxlUnVs
ZUJsb2NrKi4KKwogMjAxMy0wMS0xMCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gU3RvcmUgc2Nyb2xsYWJsZSBsYXllcidzIGNvbnRl
bnRzIHNpemUgZm9yIGNvb3JkaW5hdGVkIHNjcm9sbGFibGUgbGF5ZXJzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDY1MDBmNDQ0MTgxOWIyNmVlZTQ5ZjI0OTdjN2Q0ZWM2MWEyZDMzNzYuLjFiY2U2
MjExYzI2NTI4MzljNDhiNTAxNjhiMzY1MjEwYTZhNTYxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC0xMDMzLDYgKzEwMzMsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL0NTU0Zv
bnRTZWxlY3Rvci5jcHAKICAgICBjc3MvQ1NTRnVuY3Rpb25WYWx1ZS5jcHAKICAgICBjc3MvQ1NT
R3JhZGllbnRWYWx1ZS5jcHAKKyAgICBjc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcAogICAgIGNzcy9D
U1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAogICAgIGNzcy9DU1NJbWFnZVNldFZhbHVlLmNwcAog
ICAgIGNzcy9DU1NJbWFnZVZhbHVlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggNmQ0YTAyNmQxZjU0Njk3YzMyOGQ1ZGZiYTVhODFmZGJiYWM0YTRkYi4uNjZlOWY5ZWUyY2Nm
NjM0MjczYTk4OGJlNzRhYjU2MjFmMTgxMmE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0yNTQzLDYgKzI1NDMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVlLmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFkaWVudFZhbHVlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUu
aCBcCisJU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU0hl
bHBlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkKaW5kZXggZWJlNDAzZTE4MGQyMjc1NGQ1Yjg3ZDE0YWY1ZjExZjk5OWNjMTM5MC4uMzRmNTBm
MGE1ZTI3YzNmYmEzNGQ1NmI5MzI2MzMyZWZhZWFkNTg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0yNjMs
NiArMjYzLDcgQEAgU09VUkNFUyArPSBcCiAgICAgY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBc
CiAgICAgY3NzL0NTU0Z1bmN0aW9uVmFsdWUuY3BwIFwKICAgICBjc3MvQ1NTR3JhZGllbnRWYWx1
ZS5jcHAgXAorICAgIGNzcy9DU1NHcm91cGluZ1J1bGUuY3BwIFwKICAgICBjc3MvQ1NTSW1hZ2VW
YWx1ZS5jcHAgXAogICAgIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCBcCiAgICAgY3Nz
L0NTU0ltYWdlU2V0VmFsdWUuY3BwIFwKQEAgLTE0NzMsNiArMTQ3NCw3IEBAIEhFQURFUlMgKz0g
XAogICAgIGNzcy9DU1NGb250U2VsZWN0b3IuaCBcCiAgICAgY3NzL0NTU0Z1bmN0aW9uVmFsdWUu
aCBcCiAgICAgY3NzL0NTU0dyYWRpZW50VmFsdWUuaCBcCisgICAgY3NzL0NTU0dyb3VwaW5nUnVs
ZS5oIFwKICAgICBjc3MvQ1NTSGVscGVyLmggXAogICAgIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZh
bHVlLmggXAogICAgIGNzcy9DU1NJbWFnZVZhbHVlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGZk
MGE3ZTU4N2Y5YWE2Y2I1YWI1OTNmZDlmM2JhNThmYWRiZWJiY2UuLmFhOGQyODc3OTllZmUyMzlk
YWQzZmIxMzRmY2E5YTNiY2UzNWYyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTE0NzAsNiArMTQ3
MCw4IEBACiAgICAgICAgICAgICAnY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaCcsCiAgICAgICAgICAg
ICAnY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwJywKICAgICAgICAgICAgICdjc3MvQ1NTR3JhZGll
bnRWYWx1ZS5oJywKKyAgICAgICAgICAgICdjc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcCcsCisgICAg
ICAgICAgICAnY3NzL0NTU0dyb3VwaW5nUnVsZS5oJywKICAgICAgICAgICAgICdjc3MvQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZS5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9DU1NJbWFnZVNldFZhbHVl
LmNwcCcsCiAgICAgICAgICAgICAnY3NzL0NTU0ltYWdlVmFsdWUuY3BwJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMjBmNmUxNzc5YTNhN2Ji
YjA0MWRiZjhlOWM1YThhNjhlMThlNjFhYi4uMjcxOTU1M2ZmZmQyNjM2ODg4NzRjZmI4YzkzZTMw
MWViOWQyZWRjOSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKQEAgLTM2MTYyLDYgKzM2MTYyLDYyIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NHcm91cGluZ1J1bGUuY3BwIgorCQkJCT4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3Nc
Q1NTR3JvdXBpbmdSdWxlLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGNzc1xDU1NIZWxwZXIuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDgx
MDg1YzdjYTFjODA0MDFjZjA4NmUxNTk0NTliZDExYTgwNTQxYS4uOTJhODE0NWM2OTdkMWQ3NzY4
Y2MzYmY3NjUzMGIyNzE0MTViODI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjQzNiw2ICs2NDM2LDcgQEAKIAkJRkFCRTcy
RkQxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBQkU3MkZCMTA1OUMyMTEwMEQ5
OTlERCAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5jcHAgKi87IH07CiAJCUZBQkU3MkZFMTA1OUMy
MTEwMEQ5OTlERCAvKiBNYXRoTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGQUJFNzJGQzEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MTmFt
ZXMuY3BwICovOyB9OwogCQlGQjJDMTVDMzE2NUQ2NDlEMDAzOUM5RjggLyogQ2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZCMkMxNUMyMTY1RDY0OTAwMDM5QzlGOCAvKiBDYWNoZWRTVkdEb2N1bWVudFJlZmVy
ZW5jZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUZCMzA1NkMyMTY5RTVEQUMwMDk2QTIzMiAvKiBDU1NHcm91cGluZ1J1bGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCMzA1NkMxMTY5RTVEQUMwMDk2
QTIzMiAvKiBDU1NHcm91cGluZ1J1bGUuaCAqLzsgfTsKIAkJRkI3OEFEMkUxNTFCRjVFNjAwRkU1
NEQzIC8qIENTU1BhcnNlck1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZCNzhBRDJDMTUxQkY1RDIwMEZFNTREMyAvKiBDU1NQYXJzZXJNb2RlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkI5MkRG
NEIxNUZFRDA4NzAwOTk0NDMzIC8qIENsaXBQYXRoT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjkyREY0OTE1RkVEMDg3MDA5OTQ0MzMg
LyogQ2xpcFBhdGhPcGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlGQkMyMjBERjEyMzdGQkVCMDBCQ0Y3ODggLyogR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkJDMjIwREUxMjM3RkJFQjAwQkNGNzg4IC8qIEdyYXBoaWNzQ29udGV4dDNET3BlbkdM
LmNwcCAqLzsgfTsKQEAgLTY0NDUsNiArNjQ0Niw3IEBACiAJCUZCRDZBRjhCMTVFRjI1RTUwMDhC
NzExMCAvKiBDU1NCYXNpY1NoYXBlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGQkQ2QUY4NjE1RUYyMUQ0MDA4QjcxMTAgLyogQ1NTQmFzaWNTaGFw
ZXMuY3BwICovOyB9OwogCQlGQkQ2QUY4QzE1RUYyNjA0MDA4QjcxMTAgLyogQmFzaWNTaGFwZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCRDZBRjgz
MTVFRjIxQTMwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZCRDZBRjhEMTVFRjI2MEEwMDhCNzExMCAvKiBC
YXNpY1NoYXBlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGQkQ2QUY4MjE1RUYyMUEzMDA4QjcxMTAgLyogQmFzaWNTaGFwZXMuY3BwICovOyB9Owor
CQlGQkY4OTA0NTE2OUU5RjFGMDA1MkQ4NkUgLyogQ1NTR3JvdXBpbmdSdWxlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCRjg5MDQ0MTY5RTlGMUYw
MDUyRDg2RSAvKiBDU1NHcm91cGluZ1J1bGUuY3BwICovOyB9OwogCQlGRDAwRDdBNDE0QTNGNjE5
MDA3MzQwMTEgLyogU2luY1Jlc2FtcGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRDAwRDdBMjE0QTNGNjE5MDA3MzQwMTEgLyogU2luY1Jlc2Ft
cGxlci5jcHAgKi87IH07CiAJCUZEMDBEN0E1MTRBM0Y2MTkwMDczNDAxMSAvKiBTaW5jUmVzYW1w
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDAw
RDdBMzE0QTNGNjE5MDA3MzQwMTEgLyogU2luY1Jlc2FtcGxlci5oICovOyB9OwogCQlGRDA2REZB
NTEzNEE0REVGMDA2RjVEN0QgLyogRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMDZERkEzMTM0QTRE
RUYwMDZGNUQ3RCAvKiBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwICovOyB9OwpAQCAt
MTQwMTQsNiArMTQwMTYsNyBAQAogCQlGQUJFNzJGQjEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1M
RWxlbWVudEZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWF0aE1MRWxlbWVudEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
QUJFNzJGQzEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MTmFtZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MTmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGQjJDMTVDMjE2NUQ2NDkwMDAzOUM5RjggLyogQ2FjaGVkU1ZHRG9jdW1l
bnRSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkU1ZH
RG9jdW1lbnRSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkIzMDU2
QzExNjlFNURBQzAwOTZBMjMyIC8qIENTU0dyb3VwaW5nUnVsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDU1NHcm91cGluZ1J1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkI3OEFEMkMxNTFCRjVEMjAwRkU1NEQzIC8qIENTU1BhcnNlck1vZGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUGFyc2VyTW9kZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGQjkyREY0OTE1RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBhdGhP
cGVyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xpcFBhdGhPcGVy
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkJDMjIwREUxMjM3RkJFQjAw
QkNGNzg4IC8qIEdyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MDIzLDYgKzE0MDI2LDcgQEAKIAkJRkJENkFGODUxNUVG
MjFENDAwOEI3MTEwIC8qIEJhc2ljU2hhcGVGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQmFzaWNTaGFwZUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGQkQ2QUY4NjE1RUYyMUQ0MDA4QjcxMTAgLyogQ1NTQmFzaWNTaGFwZXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTQmFzaWNTaGFwZXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQkQ2QUY4NzE1RUYyMUQ0MDA4QjcxMTAg
LyogQ1NTQmFzaWNTaGFwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NT
QmFzaWNTaGFwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkJGODkwNDQxNjlF
OUYxRjAwNTJEODZFIC8qIENTU0dyb3VwaW5nUnVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDU1NHcm91cGluZ1J1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGQ0VCQ0Q3MTE2MjNBNzkxMDAyOTk2NUUgLyogQ1NTR3JhbW1hci55LmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS55YWNjOyBwYXRoID0gQ1NTR3JhbW1hci55LmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGQ0VCQ0Q3MjE2MjNBNzkxMDAyOTk2NUUgLyogQ1NTR3Jh
bW1hci55LmluY2x1ZGVzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS55YWNjOyBwYXRoID0gQ1NTR3Jh
bW1hci55LmluY2x1ZGVzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDAwRDdBMjE0
QTNGNjE5MDA3MzQwMTEgLyogU2luY1Jlc2FtcGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTaW5jUmVzYW1wbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIxNTMzLDYgKzIxNTM3LDggQEAKIAkJCQlCQzUzQzY5MTBEQTU5MTE0MDAyMUVC
NUQgLyogQ1NTR3JhZGllbnRWYWx1ZS5oICovLAogCQkJCUZDRUJDRDcxMTYyM0E3OTEwMDI5OTY1
RSAvKiBDU1NHcmFtbWFyLnkuaW4gKi8sCiAJCQkJRkNFQkNENzIxNjIzQTc5MTAwMjk5NjVFIC8q
IENTU0dyYW1tYXIueS5pbmNsdWRlcyAqLywKKwkJCQlGQjMwNTZDMTE2OUU1REFDMDA5NkEyMzIg
LyogQ1NTR3JvdXBpbmdSdWxlLmggKi8sCisJCQkJRkJGODkwNDQxNjlFOUYxRjAwNTJEODZFIC8q
IENTU0dyb3VwaW5nUnVsZS5jcHAgKi8sCiAJCQkJQkM3NzJCMzYwQzRFQTkxRTAwODMyODVGIC8q
IENTU0hlbHBlci5oICovLAogCQkJCUJDMjNFNzZCMERBRTg4QTkwMDlGREM5MSAvKiBDU1NJbWFn
ZUdlbmVyYXRvclZhbHVlLmNwcCAqLywKIAkJCQlCQzIzRUU5MTBEQUVEMkJDMDA5RkRDOTEgLyog
Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oICovLApAQCAtMjMwMjYsNiArMjMwMzIsNyBAQAogCQkJ
CUJDMDJBNjNDMEUwOUE5Q0YwMDRCNkQyQiAvKiBDU1NGdW5jdGlvblZhbHVlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzUzQzY5MjBEQTU5MTE0MDAyMUVCNUQgLyogQ1NTR3JhZGllbnRWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjUwRjUzREMwOUQxNUREQTAwQzlCMEM4IC8qIENTU0dyYW1t
YXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUZCMzA1NkMyMTY5RTVEQUMwMDk2QTIzMiAvKiBDU1NH
cm91cGluZ1J1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzcyQjNDMEM0RUE5MUUwMDgzMjg1
RiAvKiBDU1NIZWxwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjNFRTkyMERBRUQyQkMwMDlG
REM5MSAvKiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzkz
RTYwMDE1MUE5OUYyMDAwNjZGMDYgLyogQ1NTSW1hZ2VTZXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yOTIyOCw2ICsyOTIzNSw3IEBACiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8q
IFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlD
MDBDMTMzNzkgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEz
N0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkJGODkw
NDUxNjlFOUYxRjAwNTJEODZFIC8qIENTU0dyb3VwaW5nUnVsZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCmluZGV4IDZiN2E4YjllZGZlOGNiYmU2YzAxYmZi
OTc1OWIzYWE0NDA1NjhlNGQuLmIwNmE2OGQ5MTExODQ1Y2IyMTYwNDhiZmNjYmJhZDQxODc3OWZh
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2lu
Y2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5jcHAiCiAjaW5jbHVkZSAiQ1NTRnVuY3Rpb25WYWx1ZS5j
cHAiCiAjaW5jbHVkZSAiQ1NTR3JhZGllbnRWYWx1ZS5jcHAiCisjaW5jbHVkZSAiQ1NTR3JvdXBp
bmdSdWxlLmNwcCIKICNpbmNsdWRlICJDU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCIKICNpbmNs
dWRlICJDU1NJbWFnZVZhbHVlLmNwcCIKICNpbmNsdWRlICJDU1NJbXBvcnRSdWxlLmNwcCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWExOWVjYzg5ZGE5
YTA5MjM5MDQ0ZmFjNDI0NTVmZDY4ZjE3MGJhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwCkBAIC0wLDAgKzEsMTcxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBk
aXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAq
ICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJDU1NH
cm91cGluZ1J1bGUuaCIKKworI2luY2x1ZGUgIkNTU1BhcnNlci5oIgorI2luY2x1ZGUgIkNTU1J1
bGVMaXN0LmgiCisjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKKyNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKKyNpbmNsdWRlICJXZWJDb3JlTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvblZl
Y3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitDU1NHcm91cGluZ1J1bGU6OkNTU0dyb3VwaW5nUnVsZShTdHlsZVJ1bGVC
bG9jayogZ3JvdXBSdWxlLCBDU1NTdHlsZVNoZWV0KiBwYXJlbnQpCisgICAgOiBDU1NSdWxlKHBh
cmVudCkKKyAgICAsIG1fZ3JvdXBSdWxlKGdyb3VwUnVsZSkKKyAgICAsIG1fY2hpbGRSdWxlQ1NT
T01XcmFwcGVycyhncm91cFJ1bGUtPmNoaWxkUnVsZXMoKS5zaXplKCkpCit7Cit9CisKK0NTU0dy
b3VwaW5nUnVsZTo6fkNTU0dyb3VwaW5nUnVsZSgpCit7CisgICAgQVNTRVJUKG1fY2hpbGRSdWxl
Q1NTT01XcmFwcGVycy5zaXplKCkgPT0gbV9ncm91cFJ1bGUtPmNoaWxkUnVsZXMoKS5zaXplKCkp
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpXSkK
KyAgICAgICAgICAgIG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpXS0+c2V0UGFyZW50UnVsZSgw
KTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIENTU0dyb3VwaW5nUnVsZTo6aW5zZXJ0UnVsZShjb25z
dCBTdHJpbmcmIHJ1bGVTdHJpbmcsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykK
K3sKKyAgICBBU1NFUlQobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLnNpemUoKSA9PSBtX2dyb3Vw
UnVsZS0+Y2hpbGRSdWxlcygpLnNpemUoKSk7CisKKyAgICBpZiAoaW5kZXggPiBtX2dyb3VwUnVs
ZS0+Y2hpbGRSdWxlcygpLnNpemUoKSkgeworICAgICAgICAvLyBJTkRFWF9TSVpFX0VSUjogUmFp
c2VkIGlmIHRoZSBzcGVjaWZpZWQgaW5kZXggaXMgbm90IGEgdmFsaWQgaW5zZXJ0aW9uIHBvaW50
LgorICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisKKyAgICBDU1NQYXJzZXIgcGFyc2VyKHBhcnNlckNvbnRleHQoKSk7CisgICAgQ1NTU3R5bGVT
aGVldCogc3R5bGVTaGVldCA9IHBhcmVudFN0eWxlU2hlZXQoKTsKKyAgICBSZWZQdHI8U3R5bGVS
dWxlQmFzZT4gbmV3UnVsZSA9IHBhcnNlci5wYXJzZVJ1bGUoc3R5bGVTaGVldCA/IHN0eWxlU2hl
ZXQtPmNvbnRlbnRzKCkgOiAwLCBydWxlU3RyaW5nKTsKKyAgICBpZiAoIW5ld1J1bGUpIHsKKyAg
ICAgICAgLy8gU1lOVEFYX0VSUjogUmFpc2VkIGlmIHRoZSBzcGVjaWZpZWQgcnVsZSBoYXMgYSBz
eW50YXggZXJyb3IgYW5kIGlzIHVucGFyc2FibGUuCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKG5ld1J1bGUtPmlzSW1wb3J0UnVs
ZSgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBhbiBISUVSQVJDSFlfUkVRVUVTVF9FUlIgc2hvdWxk
IGFsc28gYmUgdGhyb3duIGZvciBhIEBjaGFyc2V0IG9yIGEgbmVzdGVkCisgICAgICAgIC8vIEBt
ZWRpYSBydWxlLiBUaGV5IGFyZSBjdXJyZW50bHkgbm90IGdldHRpbmcgcGFyc2VkLCByZXN1bHRp
bmcgaW4gYSBTWU5UQVhfRVJSCisgICAgICAgIC8vIHRvIGdldCByYWlzZWQgYWJvdmUuCisKKyAg
ICAgICAgLy8gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOiBSYWlzZWQgaWYgdGhlIHJ1bGUgY2Fubm90
IGJlIGluc2VydGVkIGF0IHRoZSBzcGVjaWZpZWQKKyAgICAgICAgLy8gaW5kZXgsIGUuZy4sIGlm
IGFuIEBpbXBvcnQgcnVsZSBpcyBpbnNlcnRlZCBhZnRlciBhIHN0YW5kYXJkIHJ1bGUgc2V0IG9y
IG90aGVyCisgICAgICAgIC8vIGF0LXJ1bGUuCisgICAgICAgIGVjID0gSElFUkFSQ0hZX1JFUVVF
U1RfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgQ1NTU3R5bGVTaGVldDo6UnVs
ZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlzKTsKKworICAgIG1fZ3JvdXBSdWxlLT53
cmFwcGVySW5zZXJ0UnVsZShpbmRleCwgbmV3UnVsZSk7CisKKyAgICBtX2NoaWxkUnVsZUNTU09N
V3JhcHBlcnMuaW5zZXJ0KGluZGV4LCBSZWZQdHI8Q1NTUnVsZT4oKSk7CisgICAgcmV0dXJuIGlu
ZGV4OworfQorCit2b2lkIENTU0dyb3VwaW5nUnVsZTo6ZGVsZXRlUnVsZSh1bnNpZ25lZCBpbmRl
eCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgQVNTRVJUKG1fY2hpbGRSdWxlQ1NTT01XcmFw
cGVycy5zaXplKCkgPT0gbV9ncm91cFJ1bGUtPmNoaWxkUnVsZXMoKS5zaXplKCkpOworCisgICAg
aWYgKGluZGV4ID49IG1fZ3JvdXBSdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgpKSB7CisgICAgICAg
IC8vIElOREVYX1NJWkVfRVJSOiBSYWlzZWQgaWYgdGhlIHNwZWNpZmllZCBpbmRleCBkb2VzIG5v
dCBjb3JyZXNwb25kIHRvIGEKKyAgICAgICAgLy8gcnVsZSBpbiB0aGUgbWVkaWEgcnVsZSBsaXN0
LgorICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgQ1NTU3R5bGVTaGVldDo6UnVsZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlz
KTsKKworICAgIG1fZ3JvdXBSdWxlLT53cmFwcGVyUmVtb3ZlUnVsZShpbmRleCk7CisKKyAgICBp
ZiAobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2luZGV4XSkKKyAgICAgICAgbV9jaGlsZFJ1bGVD
U1NPTVdyYXBwZXJzW2luZGV4XS0+c2V0UGFyZW50UnVsZSgwKTsKKyAgICBtX2NoaWxkUnVsZUNT
U09NV3JhcHBlcnMucmVtb3ZlKGluZGV4KTsKK30KKwordm9pZCBDU1NHcm91cGluZ1J1bGU6OmFw
cGVuZENzc1RleHRGb3JJdGVtcyhTdHJpbmdCdWlsZGVyJiByZXN1bHQpIGNvbnN0Cit7CisgICAg
dW5zaWduZWQgc2l6ZSA9IGxlbmd0aCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
aXplOyArK2kpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiAgIik7CisgICAgICAg
IHJlc3VsdC5hcHBlbmQoaXRlbShpKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnXG4nKTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIENTU0dyb3VwaW5nUnVsZTo6bGVuZ3RoKCkg
Y29uc3QKK3sgCisgICAgcmV0dXJuIG1fZ3JvdXBSdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgpOyAK
K30KKworQ1NTUnVsZSogQ1NTR3JvdXBpbmdSdWxlOjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25z
dAoreyAKKyAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkpCisgICAgICAgIHJldHVybiAwOworICAg
IEFTU0VSVChtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuc2l6ZSgpID09IG1fZ3JvdXBSdWxlLT5j
aGlsZFJ1bGVzKCkuc2l6ZSgpKTsKKyAgICBSZWZQdHI8Q1NTUnVsZT4mIHJ1bGUgPSBtX2NoaWxk
UnVsZUNTU09NV3JhcHBlcnNbaW5kZXhdOworICAgIGlmICghcnVsZSkKKyAgICAgICAgcnVsZSA9
IG1fZ3JvdXBSdWxlLT5jaGlsZFJ1bGVzKClbaW5kZXhdLT5jcmVhdGVDU1NPTVdyYXBwZXIoY29u
c3RfY2FzdDxDU1NHcm91cGluZ1J1bGUqPih0aGlzKSk7CisgICAgcmV0dXJuIHJ1bGUuZ2V0KCk7
Cit9CisKK0NTU1J1bGVMaXN0KiBDU1NHcm91cGluZ1J1bGU6OmNzc1J1bGVzKCkgY29uc3QKK3sK
KyAgICBpZiAoIW1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpCisgICAgICAgIG1fcnVsZUxpc3RDU1NP
TVdyYXBwZXIgPSBhZG9wdFB0cihuZXcgTGl2ZUNTU1J1bGVMaXN0PENTU0dyb3VwaW5nUnVsZT4o
Y29uc3RfY2FzdDxDU1NHcm91cGluZ1J1bGUqPih0aGlzKSkpOworICAgIHJldHVybiBtX3J1bGVM
aXN0Q1NTT01XcmFwcGVyLmdldCgpOworfQorCit2b2lkIENTU0dyb3VwaW5nUnVsZTo6cmVhdHRh
Y2goU3R5bGVSdWxlQmFzZSogcnVsZSkKK3sKKyAgICBBU1NFUlQocnVsZSk7CisgICAgbV9ncm91
cFJ1bGUgPSBzdGF0aWNfY2FzdDxTdHlsZVJ1bGVCbG9jayo+KHJ1bGUpOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgaWYgKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpXSkKKyAgICAgICAgICAgIG1f
Y2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpXS0+cmVhdHRhY2gobV9ncm91cFJ1bGUtPmNoaWxkUnVs
ZXMoKVtpXS5nZXQoKSk7CisgICAgfQorfQorCit2b2lkIENTU0dyb3VwaW5nUnVsZTo6cmVwb3J0
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sK
KyAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3Jl
TWVtb3J5VHlwZXM6OkNTUyk7CisgICAgQ1NTUnVsZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5
T2JqZWN0SW5mbyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJz
KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3J1bGVMaXN0Q1NTT01XcmFwcGVyKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dy
b3VwaW5nUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmIyYmNmM2U4M2Y4MmIyMjVkMGIyM2U3ZDA0YWMwZTBhNjhkYmE1NGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmgKQEAgLTAsMCAr
MSw2MiBAQAorLyoKKyAqIChDKSAxOTk5LTIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykK
KyAqIChDKSAyMDAyLTIwMDMgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDIsIDIwMDYsIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgKHNhbUB3ZWJraXQu
b3JnKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaWZuZGVmIENTU0dyb3VwaW5nUnVsZV9oCisjZGVmaW5lIENTU0dyb3VwaW5nUnVsZV9o
CisKKyNpbmNsdWRlICJDU1NSdWxlLmgiCisjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1J1bGVM
aXN0OworCitjbGFzcyBDU1NHcm91cGluZ1J1bGUgOiBwdWJsaWMgQ1NTUnVsZSB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+Q1NTR3JvdXBpbmdSdWxlKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVh
dHRhY2goU3R5bGVSdWxlQmFzZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXBvcnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CisKKyAgICBDU1NS
dWxlTGlzdCogY3NzUnVsZXMoKSBjb25zdDsKKworICAgIHVuc2lnbmVkIGluc2VydFJ1bGUoY29u
c3QgU3RyaW5nJiBydWxlLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZv
aWQgZGVsZXRlUnVsZSh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICAK
KyAgICAvLyBGb3IgQ1NTUnVsZUxpc3QKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKKyAg
ICBDU1NSdWxlKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKworcHJvdGVjdGVkOgorICAg
IENTU0dyb3VwaW5nUnVsZShTdHlsZVJ1bGVCbG9jayogZ3JvdXBSdWxlLCBDU1NTdHlsZVNoZWV0
KiBwYXJlbnQpOworICAgIAorICAgIHZvaWQgYXBwZW5kQ3NzVGV4dEZvckl0ZW1zKFN0cmluZ0J1
aWxkZXImKSBjb25zdDsKKworICAgIFJlZlB0cjxTdHlsZVJ1bGVCbG9jaz4gbV9ncm91cFJ1bGU7
CisgICAgbXV0YWJsZSBWZWN0b3I8UmVmUHRyPENTU1J1bGU+ID4gbV9jaGlsZFJ1bGVDU1NPTVdy
YXBwZXJzOworICAgIG11dGFibGUgT3duUHRyPENTU1J1bGVMaXN0PiBtX3J1bGVMaXN0Q1NTT01X
cmFwcGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ1NTR3Jv
dXBpbmdSdWxlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5jcHAKaW5kZXggZmM4NjI0ZGEw
OTFlYmRiNmEyN2Q4ZjczOWRiNmY5MDE3NjM0MjllOS4uYTg0MzEyNzAyOWIzZDQxNWJjMmYxMWM4
MzFlYzgzYmRiMzVmOWRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlh
UnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5jcHAKQEAgLTM1
LDE1NSArMzUsNTYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ1NTTWVkaWFSdWxlOjpDU1NN
ZWRpYVJ1bGUoU3R5bGVSdWxlTWVkaWEqIG1lZGlhUnVsZSwgQ1NTU3R5bGVTaGVldCogcGFyZW50
KQotICAgIDogQ1NTUnVsZShwYXJlbnQpCi0gICAgLCBtX21lZGlhUnVsZShtZWRpYVJ1bGUpCi0g
ICAgLCBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMobWVkaWFSdWxlLT5jaGlsZFJ1bGVzKCkuc2l6
ZSgpKQorICAgIDogQ1NTR3JvdXBpbmdSdWxlKG1lZGlhUnVsZSwgcGFyZW50KQogewogfQogCiBD
U1NNZWRpYVJ1bGU6On5DU1NNZWRpYVJ1bGUoKQogewotICAgIEFTU0VSVChtX2NoaWxkUnVsZUNT
U09NV3JhcHBlcnMuc2l6ZSgpID09IG1fbWVkaWFSdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgpKTsK
LQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpXSkK
LSAgICAgICAgICAgIG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpXS0+c2V0UGFyZW50UnVsZSgw
KTsKLSAgICB9CiAgICAgaWYgKG1fbWVkaWFDU1NPTVdyYXBwZXIpCiAgICAgICAgIG1fbWVkaWFD
U1NPTVdyYXBwZXItPmNsZWFyUGFyZW50UnVsZSgpOwogfQogCi11bnNpZ25lZCBDU1NNZWRpYVJ1
bGU6Omluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlU3RyaW5nLCB1bnNpZ25lZCBpbmRleCwg
RXhjZXB0aW9uQ29kZSYgZWMpCitNZWRpYVF1ZXJ5U2V0KiBDU1NNZWRpYVJ1bGU6Om1lZGlhUXVl
cmllcygpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXpl
KCkgPT0gbV9tZWRpYVJ1bGUtPmNoaWxkUnVsZXMoKS5zaXplKCkpOwotCi0gICAgaWYgKGluZGV4
ID4gbV9tZWRpYVJ1bGUtPmNoaWxkUnVsZXMoKS5zaXplKCkpIHsKLSAgICAgICAgLy8gSU5ERVhf
U0laRV9FUlI6IFJhaXNlZCBpZiB0aGUgc3BlY2lmaWVkIGluZGV4IGlzIG5vdCBhIHZhbGlkIGlu
c2VydGlvbiBwb2ludC4KLSAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgfQotCi0gICAgQ1NTUGFyc2VyIHBhcnNlcihwYXJzZXJDb250ZXh0KCkpOwot
ICAgIENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBwYXJlbnRTdHlsZVNoZWV0KCk7Ci0gICAg
UmVmUHRyPFN0eWxlUnVsZUJhc2U+IG5ld1J1bGUgPSBwYXJzZXIucGFyc2VSdWxlKHN0eWxlU2hl
ZXQgPyBzdHlsZVNoZWV0LT5jb250ZW50cygpIDogMCwgcnVsZVN0cmluZyk7Ci0gICAgaWYgKCFu
ZXdSdWxlKSB7Ci0gICAgICAgIC8vIFNZTlRBWF9FUlI6IFJhaXNlZCBpZiB0aGUgc3BlY2lmaWVk
IHJ1bGUgaGFzIGEgc3ludGF4IGVycm9yIGFuZCBpcyB1bnBhcnNhYmxlLgotICAgICAgICBlYyA9
IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmIChuZXdSdWxl
LT5pc0ltcG9ydFJ1bGUoKSkgewotICAgICAgICAvLyBGSVhNRTogYW4gSElFUkFSQ0hZX1JFUVVF
U1RfRVJSIHNob3VsZCBhbHNvIGJlIHRocm93biBmb3IgYSBAY2hhcnNldCBvciBhIG5lc3RlZAot
ICAgICAgICAvLyBAbWVkaWEgcnVsZS4gIFRoZXkgYXJlIGN1cnJlbnRseSBub3QgZ2V0dGluZyBw
YXJzZWQsIHJlc3VsdGluZyBpbiBhIFNZTlRBWF9FUlIKLSAgICAgICAgLy8gdG8gZ2V0IHJhaXNl
ZCBhYm92ZS4KLQotICAgICAgICAvLyBISUVSQVJDSFlfUkVRVUVTVF9FUlI6IFJhaXNlZCBpZiB0
aGUgcnVsZSBjYW5ub3QgYmUgaW5zZXJ0ZWQgYXQgdGhlIHNwZWNpZmllZAotICAgICAgICAvLyBp
bmRleCwgZS5nLiwgaWYgYW4gQGltcG9ydCBydWxlIGlzIGluc2VydGVkIGFmdGVyIGEgc3RhbmRh
cmQgcnVsZSBzZXQgb3Igb3RoZXIKLSAgICAgICAgLy8gYXQtcnVsZS4KLSAgICAgICAgZWMgPSBI
SUVSQVJDSFlfUkVRVUVTVF9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBDU1NT
dHlsZVNoZWV0OjpSdWxlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwotCi0gICAg
bV9tZWRpYVJ1bGUtPndyYXBwZXJJbnNlcnRSdWxlKGluZGV4LCBuZXdSdWxlKTsKLQotICAgIG1f
Y2hpbGRSdWxlQ1NTT01XcmFwcGVycy5pbnNlcnQoaW5kZXgsIFJlZlB0cjxDU1NSdWxlPigpKTsK
LSAgICByZXR1cm4gaW5kZXg7Ci19Ci0KLXZvaWQgQ1NTTWVkaWFSdWxlOjpkZWxldGVSdWxlKHVu
c2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBBU1NFUlQobV9jaGlsZFJ1
bGVDU1NPTVdyYXBwZXJzLnNpemUoKSA9PSBtX21lZGlhUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUo
KSk7Ci0KLSAgICBpZiAoaW5kZXggPj0gbV9tZWRpYVJ1bGUtPmNoaWxkUnVsZXMoKS5zaXplKCkp
IHsKLSAgICAgICAgLy8gSU5ERVhfU0laRV9FUlI6IFJhaXNlZCBpZiB0aGUgc3BlY2lmaWVkIGlu
ZGV4IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYQotICAgICAgICAvLyBydWxlIGluIHRoZSBtZWRp
YSBydWxlIGxpc3QuCi0gICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBDU1NTdHlsZVNoZWV0OjpSdWxlTXV0YXRpb25TY29wZSBtdXRhdGlv
blNjb3BlKHRoaXMpOwotCi0gICAgbV9tZWRpYVJ1bGUtPndyYXBwZXJSZW1vdmVSdWxlKGluZGV4
KTsKLQotICAgIGlmIChtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnNbaW5kZXhdKQotICAgICAgICBt
X2NoaWxkUnVsZUNTU09NV3JhcHBlcnNbaW5kZXhdLT5zZXRQYXJlbnRSdWxlKDApOwotICAgIG1f
Y2hpbGRSdWxlQ1NTT01XcmFwcGVycy5yZW1vdmUoaW5kZXgpOworICAgIHJldHVybiB0b1N0eWxl
UnVsZU1lZGlhKG1fZ3JvdXBSdWxlLmdldCgpKS0+bWVkaWFRdWVyaWVzKCk7CiB9CiAKIFN0cmlu
ZyBDU1NNZWRpYVJ1bGU6OmNzc1RleHQoKSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgcmVz
dWx0OwogICAgIHJlc3VsdC5hcHBlbmQoIkBtZWRpYSAiKTsKLSAgICBpZiAobV9tZWRpYVJ1bGUt
Pm1lZGlhUXVlcmllcygpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQobV9tZWRpYVJ1bGUtPm1l
ZGlhUXVlcmllcygpLT5tZWRpYVRleHQoKSk7CisgICAgaWYgKG1lZGlhUXVlcmllcygpKSB7Cisg
ICAgICAgIHJlc3VsdC5hcHBlbmQobWVkaWFRdWVyaWVzKCktPm1lZGlhVGV4dCgpKTsKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICcpOwogICAgIH0KLSAgICByZXN1bHQuYXBwZW5kKCJ7IFxuIik7
Ci0gICAgCi0gICAgdW5zaWduZWQgc2l6ZSA9IGxlbmd0aCgpOwotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiICAiKTsKLSAg
ICAgICAgcmVzdWx0LmFwcGVuZChpdGVtKGkpLT5jc3NUZXh0KCkpOwotICAgICAgICByZXN1bHQu
YXBwZW5kKCdcbicpOwotICAgIH0KLQorICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJ7IFxuIik7
CisgICAgYXBwZW5kQ3NzVGV4dEZvckl0ZW1zKHJlc3VsdCk7CiAgICAgcmVzdWx0LmFwcGVuZCgn
fScpOwogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAogTWVkaWFMaXN0KiBDU1NN
ZWRpYVJ1bGU6Om1lZGlhKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fbWVkaWFSdWxlLT5tZWRpYVF1
ZXJpZXMoKSkKKyAgICBpZiAoIW1lZGlhUXVlcmllcygpKQogICAgICAgICByZXR1cm4gMDsKICAg
ICBpZiAoIW1fbWVkaWFDU1NPTVdyYXBwZXIpCi0gICAgICAgIG1fbWVkaWFDU1NPTVdyYXBwZXIg
PSBNZWRpYUxpc3Q6OmNyZWF0ZShtX21lZGlhUnVsZS0+bWVkaWFRdWVyaWVzKCksIGNvbnN0X2Nh
c3Q8Q1NTTWVkaWFSdWxlKj4odGhpcykpOworICAgICAgICBtX21lZGlhQ1NTT01XcmFwcGVyID0g
TWVkaWFMaXN0OjpjcmVhdGUobWVkaWFRdWVyaWVzKCksIGNvbnN0X2Nhc3Q8Q1NTTWVkaWFSdWxl
Kj4odGhpcykpOwogICAgIHJldHVybiBtX21lZGlhQ1NTT01XcmFwcGVyLmdldCgpOwogfQogCi11
bnNpZ25lZCBDU1NNZWRpYVJ1bGU6Omxlbmd0aCgpIGNvbnN0Ci17IAotICAgIHJldHVybiBtX21l
ZGlhUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUoKTsgCi19Ci0KLUNTU1J1bGUqIENTU01lZGlhUnVs
ZTo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKLXsgCi0gICAgaWYgKGluZGV4ID49IGxlbmd0
aCgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBBU1NFUlQobV9jaGlsZFJ1bGVDU1NPTVdyYXBw
ZXJzLnNpemUoKSA9PSBtX21lZGlhUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUoKSk7Ci0gICAgUmVm
UHRyPENTU1J1bGU+JiBydWxlID0gbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2luZGV4XTsKLSAg
ICBpZiAoIXJ1bGUpCi0gICAgICAgIHJ1bGUgPSBtX21lZGlhUnVsZS0+Y2hpbGRSdWxlcygpW2lu
ZGV4XS0+Y3JlYXRlQ1NTT01XcmFwcGVyKGNvbnN0X2Nhc3Q8Q1NTTWVkaWFSdWxlKj4odGhpcykp
OwotICAgIHJldHVybiBydWxlLmdldCgpOwotfQotCi1DU1NSdWxlTGlzdCogQ1NTTWVkaWFSdWxl
Ojpjc3NSdWxlcygpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX3J1bGVMaXN0Q1NTT01XcmFwcGVyKQot
ICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gYWRvcHRQdHIobmV3IExpdmVDU1NSdWxl
TGlzdDxDU1NNZWRpYVJ1bGU+KGNvbnN0X2Nhc3Q8Q1NTTWVkaWFSdWxlKj4odGhpcykpKTsKLSAg
ICByZXR1cm4gbV9ydWxlTGlzdENTU09NV3JhcHBlci5nZXQoKTsKLX0KLQogdm9pZCBDU1NNZWRp
YVJ1bGU6OnJlYXR0YWNoKFN0eWxlUnVsZUJhc2UqIHJ1bGUpCiB7Ci0gICAgQVNTRVJUKHJ1bGUp
OwotICAgIEFTU0VSVChydWxlLT5pc01lZGlhUnVsZSgpKTsKLSAgICBtX21lZGlhUnVsZSA9IHN0
YXRpY19jYXN0PFN0eWxlUnVsZU1lZGlhKj4ocnVsZSk7Ci0gICAgaWYgKG1fbWVkaWFDU1NPTVdy
YXBwZXIgJiYgbV9tZWRpYVJ1bGUtPm1lZGlhUXVlcmllcygpKQotICAgICAgICBtX21lZGlhQ1NT
T01XcmFwcGVyLT5yZWF0dGFjaChtX21lZGlhUnVsZS0+bWVkaWFRdWVyaWVzKCkpOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgaWYgKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpXSkKLSAgICAgICAg
ICAgIG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpXS0+cmVhdHRhY2gobV9tZWRpYVJ1bGUtPmNo
aWxkUnVsZXMoKVtpXS5nZXQoKSk7Ci0gICAgfQorICAgIENTU0dyb3VwaW5nUnVsZTo6cmVhdHRh
Y2gocnVsZSk7CisgICAgaWYgKG1fbWVkaWFDU1NPTVdyYXBwZXIgJiYgbWVkaWFRdWVyaWVzKCkp
CisgICAgICAgIG1fbWVkaWFDU1NPTVdyYXBwZXItPnJlYXR0YWNoKG1lZGlhUXVlcmllcygpKTsK
IH0KIAogdm9pZCBDU1NNZWRpYVJ1bGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8o
bWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwotICAgIENT
U1J1bGU6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgIENTU0dyb3Vw
aW5nUnVsZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CiAgICAgaW5mby5h
ZGRNZW1iZXIobV9tZWRpYUNTU09NV3JhcHBlcik7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9jaGls
ZFJ1bGVDU1NPTVdyYXBwZXJzKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX3J1bGVMaXN0Q1NTT01X
cmFwcGVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlh
UnVsZS5oCmluZGV4IDg3ODM1OTQ4NGI0N2UxNDQ5ODEwNTE0YjRjOWRjOGU0ZDgzMzc0NTguLjlk
NzQ5MDBiMjBhYTU1NTczNDA2ZWIzOTRhOTE4Njk5Njg4MmQxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
TWVkaWFSdWxlLmgKQEAgLTIzLDE1ICsyMywxNCBAQAogI2lmbmRlZiBDU1NNZWRpYVJ1bGVfaAog
I2RlZmluZSBDU1NNZWRpYVJ1bGVfaAogCi0jaW5jbHVkZSAiQ1NTUnVsZS5oIgorI2luY2x1ZGUg
IkNTU0dyb3VwaW5nUnVsZS5oIgogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIENTU1J1bGVMaXN0OwogY2xhc3MgU3R5bGVSdWxlTWVkaWE7CiAK
LWNsYXNzIENTU01lZGlhUnVsZSA6IHB1YmxpYyBDU1NSdWxlIHsKK2NsYXNzIENTU01lZGlhUnVs
ZSA6IHB1YmxpYyBDU1NHcm91cGluZ1J1bGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENTU01lZGlhUnVsZT4gY3JlYXRlKFN0eWxlUnVsZU1lZGlhKiBydWxlLCBDU1NTdHlsZVNo
ZWV0KiBzaGVldCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENTU01lZGlhUnVsZShydWxlLCBzaGVl
dCkpOyB9CiAKQEAgLTQzLDIyICs0MiwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcg
Y3NzVGV4dCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgTWVkaWFMaXN0KiBtZWRpYSgpIGNvbnN0
OwotICAgIENTU1J1bGVMaXN0KiBjc3NSdWxlcygpIGNvbnN0OwotCi0gICAgdW5zaWduZWQgaW5z
ZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGUsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgdm9pZCBkZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7
Ci0gICAgICAgIAotICAgIC8vIEZvciBDU1NSdWxlTGlzdAotICAgIHVuc2lnbmVkIGxlbmd0aCgp
IGNvbnN0OwotICAgIENTU1J1bGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwogCiBwcml2
YXRlOgogICAgIENTU01lZGlhUnVsZShTdHlsZVJ1bGVNZWRpYSosIENTU1N0eWxlU2hlZXQqKTsK
KworICAgIE1lZGlhUXVlcnlTZXQqIG1lZGlhUXVlcmllcygpIGNvbnN0OwogICAgIAotICAgIFJl
ZlB0cjxTdHlsZVJ1bGVNZWRpYT4gbV9tZWRpYVJ1bGU7CiAgICAgbXV0YWJsZSBSZWZQdHI8TWVk
aWFMaXN0PiBtX21lZGlhQ1NTT01XcmFwcGVyOwotICAgIG11dGFibGUgVmVjdG9yPFJlZlB0cjxD
U1NSdWxlPiA+IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyczsKLSAgICBtdXRhYmxlIE93blB0cjxD
U1NSdWxlTGlzdD4gbV9ydWxlTGlzdENTU09NV3JhcHBlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAppbmRleCA0ZWY3NjQyODM4OGIxYzQ3MmUxMzkx
YzM5MWIyM2E4NjgxZmMxNjM1Li43NDY0YjFmN2YxOGVkYzRhNmQ4ZjJlMTE5YmJhODUyZDliODky
YzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCkBAIC0yNzUsNiArMjc1LDE4IEBAIHByaXZhdGU6
CiB9OwogI2VuZGlmIC8vIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04pCiAKK2lubGluZSBj
b25zdCBTdHlsZVJ1bGVNZWRpYSogdG9TdHlsZVJ1bGVNZWRpYShjb25zdCBTdHlsZVJ1bGVCbG9j
ayogcnVsZSkKK3sKKyAgICBBU1NFUlQoIXJ1bGUgfHwgcnVsZS0+aXNNZWRpYVJ1bGUoKSk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN0eWxlUnVsZU1lZGlhKj4ocnVsZSk7Cit9CisK
K2lubGluZSBjb25zdCBTdHlsZVJ1bGVSZWdpb24qIHRvU3R5bGVSdWxlUmVnaW9uKGNvbnN0IFN0
eWxlUnVsZUJsb2NrKiBydWxlKQoreworICAgIEFTU0VSVCghcnVsZSB8fCBydWxlLT5pc1JlZ2lv
blJ1bGUoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN0eWxlUnVsZVJlZ2lvbio+
KHJ1bGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTdHlsZVJ1
bGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuY3BwCmluZGV4IDY4
ZGI5NjQxY2IyN2UwOTQ5NjAyYjU0MWFhZTY0M2RiZDQ1ZjlmZjIuLjZiNzQ4Y2EwMjE2OGI0YWNi
MzA1ZWNkODZiOTlmNTM5ODY4NjlmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NSZWdpb25SdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
UmVnaW9uUnVsZS5jcHAKQEAgLTQyLDg0ICs0MiwyNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBXZWJLaXRDU1NSZWdpb25SdWxlOjpXZWJLaXRDU1NSZWdpb25SdWxlKFN0eWxlUnVsZVJlZ2lv
biogcmVnaW9uUnVsZSwgQ1NTU3R5bGVTaGVldCogcGFyZW50KQotICAgIDogQ1NTUnVsZShwYXJl
bnQpCi0gICAgLCBtX3JlZ2lvblJ1bGUocmVnaW9uUnVsZSkKLSAgICAsIG1fY2hpbGRSdWxlQ1NT
T01XcmFwcGVycyhyZWdpb25SdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgpKQorICAgIDogQ1NTR3Jv
dXBpbmdSdWxlKHJlZ2lvblJ1bGUsIHBhcmVudCkKIHsKIH0KIAotV2ViS2l0Q1NTUmVnaW9uUnVs
ZTo6fldlYktpdENTU1JlZ2lvblJ1bGUoKQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1f
Y2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpXSkKLSAgICAgICAgICAgIG1fY2hpbGRSdWxlQ1NTT01X
cmFwcGVyc1tpXS0+c2V0UGFyZW50UnVsZSgwKTsKLSAgICB9Ci19Ci0KIFN0cmluZyBXZWJLaXRD
U1NSZWdpb25SdWxlOjpjc3NUZXh0KCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIHJlc3Vs
dDsKLSAgICByZXN1bHQuYXBwZW5kKCJALXdlYmtpdC1yZWdpb24gIik7CisgICAgcmVzdWx0LmFw
cGVuZExpdGVyYWwoIkAtd2Via2l0LXJlZ2lvbiAiKTsKIAogICAgIC8vIEZpcnN0IGFkZCB0aGUg
c2VsZWN0b3JzLgotICAgIHJlc3VsdC5hcHBlbmQobV9yZWdpb25SdWxlLT5zZWxlY3Rvckxpc3Qo
KS5zZWxlY3RvcnNUZXh0KCkpOworICAgIHJlc3VsdC5hcHBlbmQodG9TdHlsZVJ1bGVSZWdpb24o
bV9ncm91cFJ1bGUuZ2V0KCkpLT5zZWxlY3Rvckxpc3QoKS5zZWxlY3RvcnNUZXh0KCkpOwogCiAg
ICAgLy8gVGhlbiBhZGQgdGhlIHJ1bGVzLgotICAgIHJlc3VsdC5hcHBlbmQoIiB7IFxuIik7Ci0K
LSAgICB1bnNpZ25lZCBzaXplID0gbGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNpemU7ICsraSkgewotICAgICAgICByZXN1bHQuYXBwZW5kKCIgICIpOwotICAgICAgICBy
ZXN1bHQuYXBwZW5kKGl0ZW0oaSktPmNzc1RleHQoKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQo
IlxuIik7Ci0gICAgfQotICAgIHJlc3VsdC5hcHBlbmQoIn0iKTsKKyAgICByZXN1bHQuYXBwZW5k
TGl0ZXJhbCgiIHsgXG4iKTsKKyAgICBhcHBlbmRDc3NUZXh0Rm9ySXRlbXMocmVzdWx0KTsKKyAg
ICByZXN1bHQuYXBwZW5kKCd9Jyk7CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQog
Ci11bnNpZ25lZCBXZWJLaXRDU1NSZWdpb25SdWxlOjpsZW5ndGgoKSBjb25zdAoteyAKLSAgICBy
ZXR1cm4gbV9yZWdpb25SdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgpOyAKLX0KLQotQ1NTUnVsZSog
V2ViS2l0Q1NTUmVnaW9uUnVsZTo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKLXsgCi0gICAg
aWYgKGluZGV4ID49IGxlbmd0aCgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBBU1NFUlQobV9j
aGlsZFJ1bGVDU1NPTVdyYXBwZXJzLnNpemUoKSA9PSBtX3JlZ2lvblJ1bGUtPmNoaWxkUnVsZXMo
KS5zaXplKCkpOwotICAgIFJlZlB0cjxDU1NSdWxlPiYgcnVsZSA9IG1fY2hpbGRSdWxlQ1NTT01X
cmFwcGVyc1tpbmRleF07Ci0gICAgaWYgKCFydWxlKQotICAgICAgICBydWxlID0gbV9yZWdpb25S
dWxlLT5jaGlsZFJ1bGVzKClbaW5kZXhdLT5jcmVhdGVDU1NPTVdyYXBwZXIoY29uc3RfY2FzdDxX
ZWJLaXRDU1NSZWdpb25SdWxlKj4odGhpcykpOwotICAgIHJldHVybiBydWxlLmdldCgpOwotfQot
Ci1DU1NSdWxlTGlzdCogV2ViS2l0Q1NTUmVnaW9uUnVsZTo6Y3NzUnVsZXMoKSBjb25zdAotewot
ICAgIGlmICghbV9ydWxlTGlzdENTU09NV3JhcHBlcikKLSAgICAgICAgbV9ydWxlTGlzdENTU09N
V3JhcHBlciA9IGFkb3B0UHRyKG5ldyBMaXZlQ1NTUnVsZUxpc3Q8V2ViS2l0Q1NTUmVnaW9uUnVs
ZT4oY29uc3RfY2FzdDxXZWJLaXRDU1NSZWdpb25SdWxlKj4odGhpcykpKTsKLSAgICByZXR1cm4g
bV9ydWxlTGlzdENTU09NV3JhcHBlci5nZXQoKTsKLX0KLQotdm9pZCBXZWJLaXRDU1NSZWdpb25S
dWxlOjpyZWF0dGFjaChTdHlsZVJ1bGVCYXNlKiBydWxlKQotewotICAgIEFTU0VSVChydWxlKTsK
LSAgICBBU1NFUlQocnVsZS0+aXNSZWdpb25SdWxlKCkpOwotICAgIG1fcmVnaW9uUnVsZSA9IHN0
YXRpY19jYXN0PFN0eWxlUnVsZVJlZ2lvbio+KHJ1bGUpOwotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
aWYgKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpXSkKLSAgICAgICAgICAgIG1fY2hpbGRSdWxl
Q1NTT01XcmFwcGVyc1tpXS0+cmVhdHRhY2gobV9yZWdpb25SdWxlLT5jaGlsZFJ1bGVzKClbaV0u
Z2V0KCkpOwotICAgIH0KLX0KLQotdm9pZCBXZWJLaXRDU1NSZWdpb25SdWxlOjpyZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAotewotICAg
IE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1v
cnlUeXBlczo6Q1NTKTsKLSAgICBDU1NSdWxlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmpl
Y3RJbmZvKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX3JlZ2lvblJ1bGUpOwotICAgIGluZm8uYWRk
TWVtYmVyKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycyk7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9y
dWxlTGlzdENTU09NV3JhcHBlcik7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuaAppbmRleCBhNjhiYTEx
ZDUwY2QzZDc5MWUwZWRlNWNlMjhiOTYxMTYzZTBiYjQ4Li42ODkyZjViMDU3ZGUxODUzNjZjY2Y4
NmJmY2QyZTc2YTlmMDJiNGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTUmVnaW9uUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25S
dWxlLmgKQEAgLTMxLDQxICszMSwyMyBAQAogI2lmbmRlZiBXZWJLaXRDU1NSZWdpb25SdWxlX2gK
ICNkZWZpbmUgV2ViS2l0Q1NTUmVnaW9uUnVsZV9oCiAKLSNpbmNsdWRlICJDU1NSdWxlLmgiCi0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgIkNTU0dyb3VwaW5nUnVsZS5oIgogCiAj
aWYgRU5BQkxFKENTU19SRUdJT05TKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENT
U1J1bGVMaXN0OwogY2xhc3MgU3R5bGVSdWxlUmVnaW9uOwogCi1jbGFzcyBXZWJLaXRDU1NSZWdp
b25SdWxlIDogcHVibGljIENTU1J1bGUgeworY2xhc3MgV2ViS2l0Q1NTUmVnaW9uUnVsZSA6IHB1
YmxpYyBDU1NHcm91cGluZ1J1bGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YktpdENTU1JlZ2lvblJ1bGU+IGNyZWF0ZShTdHlsZVJ1bGVSZWdpb24qIHJ1bGUsIENTU1N0eWxl
U2hlZXQqIHNoZWV0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgV2ViS2l0Q1NTUmVnaW9uUnVsZShy
dWxlLCBzaGVldCkpOyB9CiAKLSAgICB2aXJ0dWFsIH5XZWJLaXRDU1NSZWdpb25SdWxlKCk7Ci0K
ICAgICB2aXJ0dWFsIENTU1J1bGU6OlR5cGUgdHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IFdFQktJVF9SRUdJT05fUlVMRTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25z
dCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhdHRhY2goU3R5bGVSdWxlQmFzZSopIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKikgY29uc3QgT1ZFUlJJREU7Ci0KLSAgICBDU1NSdWxlTGlzdCogY3NzUnVsZXMoKSBjb25z
dDsKLSAgICAKLSAgICAvLyBGb3IgQ1NTUnVsZUxpc3QKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBj
b25zdDsKLSAgICBDU1NSdWxlKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKIAogcHJpdmF0
ZToKICAgICBXZWJLaXRDU1NSZWdpb25SdWxlKFN0eWxlUnVsZVJlZ2lvbiosIENTU1N0eWxlU2hl
ZXQqIHBhcmVudCk7Ci0KLSAgICBSZWZQdHI8U3R5bGVSdWxlUmVnaW9uPiBtX3JlZ2lvblJ1bGU7
Ci0gICAgbXV0YWJsZSBWZWN0b3I8UmVmUHRyPENTU1J1bGU+ID4gbV9jaGlsZFJ1bGVDU1NPTVdy
YXBwZXJzOwotICAgIG11dGFibGUgT3duUHRyPENTU1J1bGVMaXN0PiBtX3J1bGVMaXN0Q1NTT01X
cmFwcGVyOwotICAgIAotICAgIGZyaWVuZCBjbGFzcyBTdHlsZVJ1bGVCbG9jazsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182268</attachid>
            <date>2013-01-10 22:50:40 -0800</date>
            <delta_ts>2013-01-10 23:09:52 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-106418-20130111154743.patch</filename>
            <type>text/plain</type>
            <size>36248</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxMjYzMGI4NWVmNzdiNWFjYWIzMDU0ZDM1ZTMyZTkxNTRhYWQxYTA5Li5k
MzM4MzRjNTQ5MmQyMzEzOTljZDExZjEyMDJhNzdmY2I1Njg3MzI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjcgQEAKKzIwMTMtMDEtMTAgIFRha2FzaGkgU2FrYW1vdG8gIDx0YXNha0Bnb29nbGUu
Y29tPgorCisgICAgICAgIEltcGxlbWVudCBDU1NHcm91cGluZ1J1bGUgZm9yIEBob3N0IEAtcnVs
ZXMgYW5kIEBzdXBwb3J0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNjQxOAorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgor
CisgICAgICAgIENTU0dyb3VwaW5nUnVsZSBpcyB0byBzaGFyZSBjb2RlIGJldHdlZW4gQ1NTTWVk
aWFSdWxlLCBDU1NTdXBwb3J0c1J1bGUKKyAgICAgICAgYW5kIENTU0hvc3RSdWxlLiBAc3VwcG9y
dHMgYW5kIEBob3N0IEAtcnVsZXMgYXJlIGRlcnZpZWQgZnJvbQorICAgICAgICBDU1NHcm91cGlu
Z1J1bGU6CisgICAgICAgIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTIvV0QtY3NzMy1jb25kaXRp
b25hbC8jdGhlLWNzc2dyb3VwaW5ncnVsZS1pbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9kdmNz
LnczLm9yZy9oZy93ZWJjb21wb25lbnRzL3Jhdy1maWxlL3RpcC9zcGVjL3NoYWRvdy9pbmRleC5o
dG1sI2Nzcy1ob3N0LXJ1bGUtaW50ZXJmYWNlCisgICAgICAgIFNpbmNlIEBtZWRpYSBpcyBhbHNv
IGRlcml2ZWQgZnJvbSBDU1NHcm91cGluZ1J1bGUgYW5kIEByZWdpb24gaGFzIHRoZQorICAgICAg
ICBzYW1lIGludGVyZmFjZSBhcyBDU1NHcm91cGluZ1J1bGUsIG1vZGlmeSB0byB1c2UgQ1NTR3Jv
dXBpbmdSdWxlOgorICAgICAgICBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MzLXJlZ2lvbnMv
I3RoZS1hdC1yZWdpb24tc3R5bGUtcnVsZQorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYmVjYXVz
ZSBubyBuZXcgZmVhdHVyZSBpcyBpbXBsZW1lbnRlZC4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnBy
aToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICBBZGRlZCBDU1NHcm91cGluZ1J1bGUuaCBhbmQgQ1NTR3JvdXBpbmdSdWxlLmNw
cC4KKyAgICAgICAgKiBjc3MvQ1NTQWxsSW5PbmUuY3BwOgorICAgICAgICBNb2RpZmllZCB0byBp
bmNsdWRlIENTU0dyb3VwaW5nUnVsZS5jcHAuCisgICAgICAgICogY3NzL0NTU0dyb3VwaW5nUnVs
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NH
cm91cGluZ1J1bGU6OkNTU0dyb3VwaW5nUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcm91
cGluZ1J1bGU6On5DU1NHcm91cGluZ1J1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JvdXBp
bmdSdWxlOjppbnNlcnRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5nUnVsZTo6
ZGVsZXRlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcm91cGluZ1J1bGU6OmFwcGVuZENz
c1RleHRGb3JJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcm91cGluZ1J1bGU6Omxlbmd0
aCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcm91cGluZ1J1bGU6Oml0ZW0pOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTR3JvdXBpbmdSdWxlOjpjc3NSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NHcm91cGluZ1J1bGU6OnJlYXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5n
UnVsZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICBUaGVzZSBjb2RlcyBhcmUgbW92ZWQg
ZnJvbSBDU1NNZWRpYVJ1bGUgYW5kIFdlYktpdENTU1JlZ2lvblJ1bGUuCisgICAgICAgICogY3Nz
L0NTU0dyb3VwaW5nUnVsZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDU1NHcm91
cGluZ1J1bGUpOgorICAgICAgICAqIGNzcy9DU1NNZWRpYVJ1bGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTTWVkaWFSdWxlOjpDU1NNZWRpYVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
TWVkaWFSdWxlOjp+Q1NTTWVkaWFSdWxlKToKKyAgICAgICAgTWFrZSBDU1NNZWRpYVJ1bGUgaW5o
ZXJpdCBDU1NHcm91cGluZ1J1bGUuCisgICAgICAgIChXZWJDb3JlOjpDU1NNZWRpYVJ1bGU6Om1l
ZGlhKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU01lZGlhUnVsZTo6cmVhdHRhY2gpOgorICAgICAg
ICBLZWVwIHRoZSBjb2RlIGZvciB1cGRhdGluZyBtZWRpYSBxdWVyaWVzJyBDU1NPTVdyYXBwZXIu
CisgICAgICAgIChXZWJDb3JlOjpDU1NNZWRpYVJ1bGU6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAg
ICAgICAgV2UgbmVlZCB0byByZXBvcnQgbWVkaWEgcXVlcmllcycgQ1NTT01XcmFwcGVyIG1lbW9y
eSB1c2FnZS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU01lZGlhUnVsZTo6bWVkaWFRdWVyaWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU01lZGlhUnVsZTo6Y3NzVGV4dCk6CisgICAgICAgICogY3Nz
L0NTU01lZGlhUnVsZS5oOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmNwcDoK
KyAgICAgICAgTWFrZSBXZWJLaXRDU1NSZWdpb25SdWxlIGluaGVyaXQgQ1NTR3JvdXBpbmdSdWxl
LgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTUmVnaW9uUnVsZTo6V2ViS2l0Q1NTUmVnaW9u
UnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NSZWdpb25SdWxlOjpjc3NUZXh0KToK
KyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5oOgorICAgICAgICAqIGNzcy9TdHls
ZVJ1bGUuaDoKKyAgICAgICAgQWRkZWQgaW5saW5lZCBhY2Nlc3NvciB0byBvYnRhaW4gU3R5bGVS
dWxlTWVkaWEqIGFuZCBTdHlsZVJ1bGVSZWdpb24qCisgICAgICAgIGZyb20gU3R5bGVSdWxlQmxv
Y2sqLgorCiAyMDEzLTAxLTEwICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW2Nocm9taXVtXSBTdG9yZSBzY3JvbGxhYmxlIGxheWVyJ3MgY29udGVudHMg
c2l6ZSBmb3IgY29vcmRpbmF0ZWQgc2Nyb2xsYWJsZSBsYXllcnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggNjUwMGY0NDQxODE5YjI2ZWVlNDlmMjQ5N2M3ZDRlYzYxYTJkMzM3Ni4uMWJjZTYyMTFj
MjY1MjgzOWM0OGI1MDE2OGIzNjUyMTBhNmE1NjFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTEwMzMsNiArMTAzMyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3MvQ1NTRm9udFNl
bGVjdG9yLmNwcAogICAgIGNzcy9DU1NGdW5jdGlvblZhbHVlLmNwcAogICAgIGNzcy9DU1NHcmFk
aWVudFZhbHVlLmNwcAorICAgIGNzcy9DU1NHcm91cGluZ1J1bGUuY3BwCiAgICAgY3NzL0NTU0lt
YWdlR2VuZXJhdG9yVmFsdWUuY3BwCiAgICAgY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCiAgICAg
Y3NzL0NTU0ltYWdlVmFsdWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA2
ZDRhMDI2ZDFmNTQ2OTdjMzI4ZDVkZmJhNWE4MWZkYmJhYzRhNGRiLi42NmU5ZjllZTJjY2Y2MzQy
NzNhOTg4YmU3NGFiNTYyMWYxODEyYTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTI1NDMsNiArMjU0Myw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRp
ZW50VmFsdWUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSGVscGVy
LmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpp
bmRleCBlYmU0MDNlMTgwZDIyNzU0ZDViODdkMTRhZjVmMTFmOTk5Y2MxMzkwLi4zNGY1MGYwYTVl
MjdjM2ZiYTM0ZDU2YjkzMjYzMzJlZmFlYWQ1ODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTI2Myw2ICsy
NjMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIFwKICAg
ICBjc3MvQ1NTRnVuY3Rpb25WYWx1ZS5jcHAgXAogICAgIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNw
cCBcCisgICAgY3NzL0NTU0dyb3VwaW5nUnVsZS5jcHAgXAogICAgIGNzcy9DU1NJbWFnZVZhbHVl
LmNwcCBcCiAgICAgY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwIFwKICAgICBjc3MvQ1NT
SW1hZ2VTZXRWYWx1ZS5jcHAgXApAQCAtMTQ3Myw2ICsxNDc0LDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgY3NzL0NTU0ZvbnRTZWxlY3Rvci5oIFwKICAgICBjc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oIFwK
ICAgICBjc3MvQ1NTR3JhZGllbnRWYWx1ZS5oIFwKKyAgICBjc3MvQ1NTR3JvdXBpbmdSdWxlLmgg
XAogICAgIGNzcy9DU1NIZWxwZXIuaCBcCiAgICAgY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUu
aCBcCiAgICAgY3NzL0NTU0ltYWdlVmFsdWUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZmQwYTdl
NTg3ZjlhYTZjYjVhYjU5M2ZkOWYzYmE1OGZhZGJlYmJjZS4uYWE4ZDI4Nzc5OWVmZTIzOWRhZDNm
YjEzNGZjYTlhM2JjZTM1ZjJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTQ3MCw2ICsxNDcwLDgg
QEAKICAgICAgICAgICAgICdjc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oJywKICAgICAgICAgICAgICdj
c3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9DU1NHcmFkaWVudFZh
bHVlLmgnLAorICAgICAgICAgICAgJ2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwJywKKyAgICAgICAg
ICAgICdjc3MvQ1NTR3JvdXBpbmdSdWxlLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NJbWFnZUdl
bmVyYXRvclZhbHVlLmNwcCcsCiAgICAgICAgICAgICAnY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3Bw
JywKICAgICAgICAgICAgICdjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAyMGY2ZTE3NzlhM2E3YmJiMDQx
ZGJmOGU5YzVhOGE2OGUxOGU2MWFiLi4yNzE5NTUzZmZmZDI2MzY4ODg3NGNmYjhjOTNlMzAxZWI5
ZDJlZGM5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agpAQCAtMzYxNjIsNiArMzYxNjIsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU0dyb3VwaW5nUnVsZS5jcHAiCisJCQkJPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4z
MiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMy
IgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMy
IgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NH
cm91cGluZ1J1bGUuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZl
UGF0aD0iLi5cY3NzXENTU0hlbHBlci5oIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0ODEwODVj
N2NhMWM4MDQwMWNmMDg2ZTE1OTQ1OWJkMTFhODA1NDFhLi45MmE4MTQ1YzY5N2QxZDc3NjhjYzNi
Zjc2NTMwYjI3MTQxNWI4MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NDM2LDYgKzY0MzYsNyBAQAogCQlGQUJFNzJGRDEw
NTlDMjExMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFCRTcyRkIxMDU5QzIxMTAwRDk5OURE
IC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLzsgfTsKIAkJRkFCRTcyRkUxMDU5QzIxMTAw
RDk5OUREIC8qIE1hdGhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZBQkU3MkZDMTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxOYW1lcy5j
cHAgKi87IH07CiAJCUZCMkMxNUMzMTY1RDY0OUQwMDM5QzlGOCAvKiBDYWNoZWRTVkdEb2N1bWVu
dFJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkIyQzE1QzIxNjVENjQ5MDAwMzlDOUY4IC8qIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkIz
MDU2QzIxNjlFNURBQzAwOTZBMjMyIC8qIENTU0dyb3VwaW5nUnVsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkIzMDU2QzExNjlFNURBQzAwOTZBMjMy
IC8qIENTU0dyb3VwaW5nUnVsZS5oICovOyB9OwogCQlGQjc4QUQyRTE1MUJGNUU2MDBGRTU0RDMg
LyogQ1NTUGFyc2VyTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkI3OEFEMkMxNTFCRjVEMjAwRkU1NEQzIC8qIENTU1BhcnNlck1vZGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGQjkyREY0QjE1
RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBhdGhPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCOTJERjQ5MTVGRUQwODcwMDk5NDQzMyAvKiBD
bGlwUGF0aE9wZXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUZCQzIyMERGMTIzN0ZCRUIwMEJDRjc4OCAvKiBHcmFwaGljc0NvbnRleHQz
RE9wZW5HTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGQkMyMjBERTEyMzdGQkVCMDBCQ0Y3ODggLyogR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3Bw
ICovOyB9OwpAQCAtNjQ0NSw2ICs2NDQ2LDcgQEAKIAkJRkJENkFGOEIxNUVGMjVFNTAwOEI3MTEw
IC8qIENTU0Jhc2ljU2hhcGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZCRDZBRjg2MTVFRjIxRDQwMDhCNzExMCAvKiBDU1NCYXNpY1NoYXBlcy5j
cHAgKi87IH07CiAJCUZCRDZBRjhDMTVFRjI2MDQwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkJENkFGODMxNUVG
MjFBMzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkJENkFGOEQxNUVGMjYwQTAwOEI3MTEwIC8qIEJhc2lj
U2hhcGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZCRDZBRjgyMTVFRjIxQTMwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5jcHAgKi87IH07CisJCUZC
Rjg5MDQ1MTY5RTlGMUYwMDUyRDg2RSAvKiBDU1NHcm91cGluZ1J1bGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkJGODkwNDQxNjlFOUYxRjAwNTJE
ODZFIC8qIENTU0dyb3VwaW5nUnVsZS5jcHAgKi87IH07CiAJCUZEMDBEN0E0MTRBM0Y2MTkwMDcz
NDAxMSAvKiBTaW5jUmVzYW1wbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZEMDBEN0EyMTRBM0Y2MTkwMDczNDAxMSAvKiBTaW5jUmVzYW1wbGVy
LmNwcCAqLzsgfTsKIAkJRkQwMEQ3QTUxNEEzRjYxOTAwNzM0MDExIC8qIFNpbmNSZXNhbXBsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMDBEN0Ez
MTRBM0Y2MTkwMDczNDAxMSAvKiBTaW5jUmVzYW1wbGVyLmggKi87IH07CiAJCUZEMDZERkE1MTM0
QTRERUYwMDZGNUQ3RCAvKiBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQwNkRGQTMxMzRBNERFRjAw
NkY1RDdEIC8qIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgKi87IH07CkBAIC0xNDAx
NCw2ICsxNDAxNiw3IEBACiAJCUZBQkU3MkZCMTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxFbGVt
ZW50RmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRo
TUxFbGVtZW50RmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3
MkZDMTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxOYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZCMkMxNUMyMTY1RDY0OTAwMDM5QzlGOCAvKiBDYWNoZWRTVkdEb2N1bWVudFJl
ZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRTVkdEb2N1
bWVudFJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQjMwNTZDMTE2
OUU1REFDMDA5NkEyMzIgLyogQ1NTR3JvdXBpbmdSdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENTU0dyb3VwaW5nUnVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGQjc4QUQyQzE1MUJGNUQyMDBGRTU0RDMgLyogQ1NTUGFyc2VyTW9kZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NQYXJzZXJNb2RlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZCOTJERjQ5MTVGRUQwODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9wZXJh
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGlwUGF0aE9wZXJhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQkMyMjBERTEyMzdGQkVCMDBCQ0Y3
ODggLyogR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTQwMjMsNiArMTQwMjYsNyBAQAogCQlGQkQ2QUY4NTE1RUYyMUQ0
MDA4QjcxMTAgLyogQmFzaWNTaGFwZUZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCYXNpY1NoYXBlRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZCRDZBRjg2MTVFRjIxRDQwMDhCNzExMCAvKiBDU1NCYXNpY1NoYXBlcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NCYXNpY1NoYXBlcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCRDZBRjg3MTVFRjIxRDQwMDhCNzExMCAvKiBD
U1NCYXNpY1NoYXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NCYXNp
Y1NoYXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQkY4OTA0NDE2OUU5RjFG
MDA1MkQ4NkUgLyogQ1NTR3JvdXBpbmdSdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENTU0dyb3VwaW5nUnVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZDRUJDRDcxMTYyM0E3OTEwMDI5OTY1RSAvKiBDU1NHcmFtbWFyLnkuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLnlhY2M7IHBhdGggPSBDU1NHcmFtbWFyLnkuaW47IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZDRUJDRDcyMTYyM0E3OTEwMDI5OTY1RSAvKiBDU1NHcmFtbWFy
LnkuaW5jbHVkZXMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnlhY2M7IHBhdGggPSBDU1NHcmFtbWFy
LnkuaW5jbHVkZXM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMDBEN0EyMTRBM0Y2
MTkwMDczNDAxMSAvKiBTaW5jUmVzYW1wbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNpbmNSZXNhbXBsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjE1MzMsNiArMjE1MzcsOCBAQAogCQkJCUJDNTNDNjkxMERBNTkxMTQwMDIxRUI1RCAv
KiBDU1NHcmFkaWVudFZhbHVlLmggKi8sCiAJCQkJRkNFQkNENzExNjIzQTc5MTAwMjk5NjVFIC8q
IENTU0dyYW1tYXIueS5pbiAqLywKIAkJCQlGQ0VCQ0Q3MjE2MjNBNzkxMDAyOTk2NUUgLyogQ1NT
R3JhbW1hci55LmluY2x1ZGVzICovLAorCQkJCUZCMzA1NkMxMTY5RTVEQUMwMDk2QTIzMiAvKiBD
U1NHcm91cGluZ1J1bGUuaCAqLywKKwkJCQlGQkY4OTA0NDE2OUU5RjFGMDA1MkQ4NkUgLyogQ1NT
R3JvdXBpbmdSdWxlLmNwcCAqLywKIAkJCQlCQzc3MkIzNjBDNEVBOTFFMDA4MzI4NUYgLyogQ1NT
SGVscGVyLmggKi8sCiAJCQkJQkMyM0U3NkIwREFFODhBOTAwOUZEQzkxIC8qIENTU0ltYWdlR2Vu
ZXJhdG9yVmFsdWUuY3BwICovLAogCQkJCUJDMjNFRTkxMERBRUQyQkMwMDlGREM5MSAvKiBDU1NJ
bWFnZUdlbmVyYXRvclZhbHVlLmggKi8sCkBAIC0yMzAyNiw2ICsyMzAzMiw3IEBACiAJCQkJQkMw
MkE2M0MwRTA5QTlDRjAwNEI2RDJCIC8qIENTU0Z1bmN0aW9uVmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDNTNDNjkyMERBNTkxMTQwMDIxRUI1RCAvKiBDU1NHcmFkaWVudFZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk2NTBGNTNEQzA5RDE1RERBMDBDOUIwQzggLyogQ1NTR3JhbW1hci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRkIzMDU2QzIxNjlFNURBQzAwOTZBMjMyIC8qIENTU0dyb3Vw
aW5nUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3NzJCM0MwQzRFQTkxRTAwODMyODVGIC8q
IENTU0hlbHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyM0VFOTIwREFFRDJCQzAwOUZEQzkx
IC8qIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTNFNjAw
MTUxQTk5RjIwMDA2NkYwNiAvKiBDU1NJbWFnZVNldFZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAg
LTI5MjI4LDYgKzI5MjM1LDcgQEAKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNM
VFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0UyRTBFMTJGMEZDOUMwMEMx
MzM3OSAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENTM3MzUyMTM3QjY1
MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGQkY4OTA0NTE2
OUU5RjFGMDA1MkQ4NkUgLyogQ1NTR3JvdXBpbmdSdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAKaW5kZXggNmI3YThiOWVkZmU4Y2JiZTZjMDFiZmI5NzU5
YjNhYTQ0MDU2OGU0ZC4uYjA2YTY4ZDkxMTE4NDVjYjIxNjA0OGJmY2NiYmFkNDE4Nzc5ZmE4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVk
ZSAiQ1NTRm9udFNlbGVjdG9yLmNwcCIKICNpbmNsdWRlICJDU1NGdW5jdGlvblZhbHVlLmNwcCIK
ICNpbmNsdWRlICJDU1NHcmFkaWVudFZhbHVlLmNwcCIKKyNpbmNsdWRlICJDU1NHcm91cGluZ1J1
bGUuY3BwIgogI2luY2x1ZGUgIkNTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwIgogI2luY2x1ZGUg
IkNTU0ltYWdlVmFsdWUuY3BwIgogI2luY2x1ZGUgIkNTU0ltcG9ydFJ1bGUuY3BwIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYTE5ZWNjODlkYTlhMDky
MzkwNDRmYWM0MjQ1NWZkNjhmMTcwYmE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5jcHAKQEAgLTAsMCArMSwxNzEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUK
KyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2Ns
YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkNTU0dyb3Vw
aW5nUnVsZS5oIgorCisjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCisjaW5jbHVkZSAiQ1NTUnVsZUxp
c3QuaCIKKyNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgorI2luY2x1ZGUgIlN0eWxlUnVsZS5oIgorI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0
cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9y
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0NTU0dyb3VwaW5nUnVsZTo6Q1NTR3JvdXBpbmdSdWxlKFN0eWxlUnVsZUJsb2Nr
KiBncm91cFJ1bGUsIENTU1N0eWxlU2hlZXQqIHBhcmVudCkKKyAgICA6IENTU1J1bGUocGFyZW50
KQorICAgICwgbV9ncm91cFJ1bGUoZ3JvdXBSdWxlKQorICAgICwgbV9jaGlsZFJ1bGVDU1NPTVdy
YXBwZXJzKGdyb3VwUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUoKSkKK3sKK30KKworQ1NTR3JvdXBp
bmdSdWxlOjp+Q1NTR3JvdXBpbmdSdWxlKCkKK3sKKyAgICBBU1NFUlQobV9jaGlsZFJ1bGVDU1NP
TVdyYXBwZXJzLnNpemUoKSA9PSBtX2dyb3VwUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUoKSk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXpl
KCk7ICsraSkgeworICAgICAgICBpZiAobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2ldKQorICAg
ICAgICAgICAgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2ldLT5zZXRQYXJlbnRSdWxlKDApOwor
ICAgIH0KK30KKwordW5zaWduZWQgQ1NTR3JvdXBpbmdSdWxlOjppbnNlcnRSdWxlKGNvbnN0IFN0
cmluZyYgcnVsZVN0cmluZywgdW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQorewor
ICAgIEFTU0VSVChtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuc2l6ZSgpID09IG1fZ3JvdXBSdWxl
LT5jaGlsZFJ1bGVzKCkuc2l6ZSgpKTsKKworICAgIGlmIChpbmRleCA+IG1fZ3JvdXBSdWxlLT5j
aGlsZFJ1bGVzKCkuc2l6ZSgpKSB7CisgICAgICAgIC8vIElOREVYX1NJWkVfRVJSOiBSYWlzZWQg
aWYgdGhlIHNwZWNpZmllZCBpbmRleCBpcyBub3QgYSB2YWxpZCBpbnNlcnRpb24gcG9pbnQuCisg
ICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwor
ICAgIENTU1BhcnNlciBwYXJzZXIocGFyc2VyQ29udGV4dCgpKTsKKyAgICBDU1NTdHlsZVNoZWV0
KiBzdHlsZVNoZWV0ID0gcGFyZW50U3R5bGVTaGVldCgpOworICAgIFJlZlB0cjxTdHlsZVJ1bGVC
YXNlPiBuZXdSdWxlID0gcGFyc2VyLnBhcnNlUnVsZShzdHlsZVNoZWV0ID8gc3R5bGVTaGVldC0+
Y29udGVudHMoKSA6IDAsIHJ1bGVTdHJpbmcpOworICAgIGlmICghbmV3UnVsZSkgeworICAgICAg
ICAvLyBTWU5UQVhfRVJSOiBSYWlzZWQgaWYgdGhlIHNwZWNpZmllZCBydWxlIGhhcyBhIHN5bnRh
eCBlcnJvciBhbmQgaXMgdW5wYXJzYWJsZS4KKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAobmV3UnVsZS0+aXNJbXBvcnRSdWxlKCkp
IHsKKyAgICAgICAgLy8gRklYTUU6IGFuIEhJRVJBUkNIWV9SRVFVRVNUX0VSUiBzaG91bGQgYWxz
byBiZSB0aHJvd24gZm9yIGEgQGNoYXJzZXQgb3IgYSBuZXN0ZWQKKyAgICAgICAgLy8gQG1lZGlh
IHJ1bGUuIFRoZXkgYXJlIGN1cnJlbnRseSBub3QgZ2V0dGluZyBwYXJzZWQsIHJlc3VsdGluZyBp
biBhIFNZTlRBWF9FUlIKKyAgICAgICAgLy8gdG8gZ2V0IHJhaXNlZCBhYm92ZS4KKworICAgICAg
ICAvLyBISUVSQVJDSFlfUkVRVUVTVF9FUlI6IFJhaXNlZCBpZiB0aGUgcnVsZSBjYW5ub3QgYmUg
aW5zZXJ0ZWQgYXQgdGhlIHNwZWNpZmllZAorICAgICAgICAvLyBpbmRleCwgZS5nLiwgaWYgYW4g
QGltcG9ydCBydWxlIGlzIGluc2VydGVkIGFmdGVyIGEgc3RhbmRhcmQgcnVsZSBzZXQgb3Igb3Ro
ZXIKKyAgICAgICAgLy8gYXQtcnVsZS4KKyAgICAgICAgZWMgPSBISUVSQVJDSFlfUkVRVUVTVF9F
UlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBDU1NTdHlsZVNoZWV0OjpSdWxlTXV0
YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOworCisgICAgbV9ncm91cFJ1bGUtPndyYXBw
ZXJJbnNlcnRSdWxlKGluZGV4LCBuZXdSdWxlKTsKKworICAgIG1fY2hpbGRSdWxlQ1NTT01XcmFw
cGVycy5pbnNlcnQoaW5kZXgsIFJlZlB0cjxDU1NSdWxlPigpKTsKKyAgICByZXR1cm4gaW5kZXg7
Cit9CisKK3ZvaWQgQ1NTR3JvdXBpbmdSdWxlOjpkZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4LCBF
eGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBBU1NFUlQobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJz
LnNpemUoKSA9PSBtX2dyb3VwUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUoKSk7CisKKyAgICBpZiAo
aW5kZXggPj0gbV9ncm91cFJ1bGUtPmNoaWxkUnVsZXMoKS5zaXplKCkpIHsKKyAgICAgICAgLy8g
SU5ERVhfU0laRV9FUlI6IFJhaXNlZCBpZiB0aGUgc3BlY2lmaWVkIGluZGV4IGRvZXMgbm90IGNv
cnJlc3BvbmQgdG8gYQorICAgICAgICAvLyBydWxlIGluIHRoZSBtZWRpYSBydWxlIGxpc3QuCisg
ICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBDU1NTdHlsZVNoZWV0OjpSdWxlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwor
CisgICAgbV9ncm91cFJ1bGUtPndyYXBwZXJSZW1vdmVSdWxlKGluZGV4KTsKKworICAgIGlmICht
X2NoaWxkUnVsZUNTU09NV3JhcHBlcnNbaW5kZXhdKQorICAgICAgICBtX2NoaWxkUnVsZUNTU09N
V3JhcHBlcnNbaW5kZXhdLT5zZXRQYXJlbnRSdWxlKDApOworICAgIG1fY2hpbGRSdWxlQ1NTT01X
cmFwcGVycy5yZW1vdmUoaW5kZXgpOworfQorCit2b2lkIENTU0dyb3VwaW5nUnVsZTo6YXBwZW5k
Q3NzVGV4dEZvckl0ZW1zKFN0cmluZ0J1aWxkZXImIHJlc3VsdCkgY29uc3QKK3sKKyAgICB1bnNp
Z25lZCBzaXplID0gbGVuZ3RoKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7
ICsraSkgeworICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiICAiKTsKKyAgICAgICAgcmVz
dWx0LmFwcGVuZChpdGVtKGkpLT5jc3NUZXh0KCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKCdc
bicpOworICAgIH0KK30KKwordW5zaWduZWQgQ1NTR3JvdXBpbmdSdWxlOjpsZW5ndGgoKSBjb25z
dAoreyAKKyAgICByZXR1cm4gbV9ncm91cFJ1bGUtPmNoaWxkUnVsZXMoKS5zaXplKCk7IAorfQor
CitDU1NSdWxlKiBDU1NHcm91cGluZ1J1bGU6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7
IAorICAgIGlmIChpbmRleCA+PSBsZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgQVNT
RVJUKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCkgPT0gbV9ncm91cFJ1bGUtPmNoaWxk
UnVsZXMoKS5zaXplKCkpOworICAgIFJlZlB0cjxDU1NSdWxlPiYgcnVsZSA9IG1fY2hpbGRSdWxl
Q1NTT01XcmFwcGVyc1tpbmRleF07CisgICAgaWYgKCFydWxlKQorICAgICAgICBydWxlID0gbV9n
cm91cFJ1bGUtPmNoaWxkUnVsZXMoKVtpbmRleF0tPmNyZWF0ZUNTU09NV3JhcHBlcihjb25zdF9j
YXN0PENTU0dyb3VwaW5nUnVsZSo+KHRoaXMpKTsKKyAgICByZXR1cm4gcnVsZS5nZXQoKTsKK30K
KworQ1NTUnVsZUxpc3QqIENTU0dyb3VwaW5nUnVsZTo6Y3NzUnVsZXMoKSBjb25zdAoreworICAg
IGlmICghbV9ydWxlTGlzdENTU09NV3JhcHBlcikKKyAgICAgICAgbV9ydWxlTGlzdENTU09NV3Jh
cHBlciA9IGFkb3B0UHRyKG5ldyBMaXZlQ1NTUnVsZUxpc3Q8Q1NTR3JvdXBpbmdSdWxlPihjb25z
dF9jYXN0PENTU0dyb3VwaW5nUnVsZSo+KHRoaXMpKSk7CisgICAgcmV0dXJuIG1fcnVsZUxpc3RD
U1NPTVdyYXBwZXIuZ2V0KCk7Cit9CisKK3ZvaWQgQ1NTR3JvdXBpbmdSdWxlOjpyZWF0dGFjaChT
dHlsZVJ1bGVCYXNlKiBydWxlKQoreworICAgIEFTU0VSVChydWxlKTsKKyAgICBtX2dyb3VwUnVs
ZSA9IHN0YXRpY19jYXN0PFN0eWxlUnVsZUJsb2NrKj4ocnVsZSk7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCk7ICsraSkgeworICAg
ICAgICBpZiAobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2ldKQorICAgICAgICAgICAgbV9jaGls
ZFJ1bGVDU1NPTVdyYXBwZXJzW2ldLT5yZWF0dGFjaChtX2dyb3VwUnVsZS0+Y2hpbGRSdWxlcygp
W2ldLmdldCgpKTsKKyAgICB9Cit9CisKK3ZvaWQgQ1NTR3JvdXBpbmdSdWxlOjpyZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAg
IE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1v
cnlUeXBlczo6Q1NTKTsKKyAgICBDU1NSdWxlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmpl
Y3RJbmZvKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMpOwor
ICAgIGluZm8uYWRkTWVtYmVyKG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBp
bmdSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjJiY2YzZTgzZjgyYjIyNWQwYjIzZTdkMDRhYzBlMGE2OGRiYTU0ZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuaApAQCAtMCwwICsxLDYy
IEBACisvKgorICogKEMpIDE5OTktMjAwMyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICog
KEMpIDIwMDItMjAwMyBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqIENvcHlyaWdo
dCAoQykgMjAwMiwgMjAwNiwgMjAwOCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyAoc2FtQHdlYmtpdC5vcmcp
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpZm5kZWYgQ1NTR3JvdXBpbmdSdWxlX2gKKyNkZWZpbmUgQ1NTR3JvdXBpbmdSdWxlX2gKKwor
I2luY2x1ZGUgIkNTU1J1bGUuaCIKKyNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTUnVsZUxpc3Q7
CisKK2NsYXNzIENTU0dyb3VwaW5nUnVsZSA6IHB1YmxpYyBDU1NSdWxlIHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5DU1NHcm91cGluZ1J1bGUoKTsKKworICAgIHZpcnR1YWwgdm9pZCByZWF0dGFj
aChTdHlsZVJ1bGVCYXNlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKKworICAgIENTU1J1bGVM
aXN0KiBjc3NSdWxlcygpIGNvbnN0OworCisgICAgdW5zaWduZWQgaW5zZXJ0UnVsZShjb25zdCBT
dHJpbmcmIHJ1bGUsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBk
ZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIAorICAg
IC8vIEZvciBDU1NSdWxlTGlzdAorICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OworICAgIENT
U1J1bGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgQ1NT
R3JvdXBpbmdSdWxlKFN0eWxlUnVsZUJsb2NrKiBncm91cFJ1bGUsIENTU1N0eWxlU2hlZXQqIHBh
cmVudCk7CisgICAgCisgICAgdm9pZCBhcHBlbmRDc3NUZXh0Rm9ySXRlbXMoU3RyaW5nQnVpbGRl
ciYpIGNvbnN0OworCisgICAgUmVmUHRyPFN0eWxlUnVsZUJsb2NrPiBtX2dyb3VwUnVsZTsKKyAg
ICBtdXRhYmxlIFZlY3RvcjxSZWZQdHI8Q1NTUnVsZT4gPiBtX2NoaWxkUnVsZUNTU09NV3JhcHBl
cnM7CisgICAgbXV0YWJsZSBPd25QdHI8Q1NTUnVsZUxpc3Q+IG1fcnVsZUxpc3RDU1NPTVdyYXBw
ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NHcm91cGlu
Z1J1bGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmNwcAppbmRleCBmYzg2MjRkYTA5MWVi
ZGI2YTI3ZDhmNzM5ZGI2ZjkwMTc2MzQyOWU5Li5hODQzMTI3MDI5YjNkNDE1YmMyZjExYzgzMWVj
ODNiZGIzNWY5ZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmNwcApAQCAtMzUsMTU1
ICszNSw1NiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDU1NNZWRpYVJ1bGU6OkNTU01lZGlh
UnVsZShTdHlsZVJ1bGVNZWRpYSogbWVkaWFSdWxlLCBDU1NTdHlsZVNoZWV0KiBwYXJlbnQpCi0g
ICAgOiBDU1NSdWxlKHBhcmVudCkKLSAgICAsIG1fbWVkaWFSdWxlKG1lZGlhUnVsZSkKLSAgICAs
IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycyhtZWRpYVJ1bGUtPmNoaWxkUnVsZXMoKS5zaXplKCkp
CisgICAgOiBDU1NHcm91cGluZ1J1bGUobWVkaWFSdWxlLCBwYXJlbnQpCiB7CiB9CiAKIENTU01l
ZGlhUnVsZTo6fkNTU01lZGlhUnVsZSgpCiB7Ci0gICAgQVNTRVJUKG1fY2hpbGRSdWxlQ1NTT01X
cmFwcGVycy5zaXplKCkgPT0gbV9tZWRpYVJ1bGUtPmNoaWxkUnVsZXMoKS5zaXplKCkpOwotCi0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXpl
KCk7ICsraSkgewotICAgICAgICBpZiAobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2ldKQotICAg
ICAgICAgICAgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2ldLT5zZXRQYXJlbnRSdWxlKDApOwot
ICAgIH0KICAgICBpZiAobV9tZWRpYUNTU09NV3JhcHBlcikKICAgICAgICAgbV9tZWRpYUNTU09N
V3JhcHBlci0+Y2xlYXJQYXJlbnRSdWxlKCk7CiB9CiAKLXVuc2lnbmVkIENTU01lZGlhUnVsZTo6
aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGVTdHJpbmcsIHVuc2lnbmVkIGluZGV4LCBFeGNl
cHRpb25Db2RlJiBlYykKK01lZGlhUXVlcnlTZXQqIENTU01lZGlhUnVsZTo6bWVkaWFRdWVyaWVz
KCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLnNpemUoKSA9
PSBtX21lZGlhUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUoKSk7Ci0KLSAgICBpZiAoaW5kZXggPiBt
X21lZGlhUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUoKSkgewotICAgICAgICAvLyBJTkRFWF9TSVpF
X0VSUjogUmFpc2VkIGlmIHRoZSBzcGVjaWZpZWQgaW5kZXggaXMgbm90IGEgdmFsaWQgaW5zZXJ0
aW9uIHBvaW50LgotICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwotICAgICAgICByZXR1cm4g
MDsKLSAgICB9Ci0KLSAgICBDU1NQYXJzZXIgcGFyc2VyKHBhcnNlckNvbnRleHQoKSk7Ci0gICAg
Q1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHBhcmVudFN0eWxlU2hlZXQoKTsKLSAgICBSZWZQ
dHI8U3R5bGVSdWxlQmFzZT4gbmV3UnVsZSA9IHBhcnNlci5wYXJzZVJ1bGUoc3R5bGVTaGVldCA/
IHN0eWxlU2hlZXQtPmNvbnRlbnRzKCkgOiAwLCBydWxlU3RyaW5nKTsKLSAgICBpZiAoIW5ld1J1
bGUpIHsKLSAgICAgICAgLy8gU1lOVEFYX0VSUjogUmFpc2VkIGlmIHRoZSBzcGVjaWZpZWQgcnVs
ZSBoYXMgYSBzeW50YXggZXJyb3IgYW5kIGlzIHVucGFyc2FibGUuCi0gICAgICAgIGVjID0gU1lO
VEFYX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYgKG5ld1J1bGUtPmlz
SW1wb3J0UnVsZSgpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBhbiBISUVSQVJDSFlfUkVRVUVTVF9F
UlIgc2hvdWxkIGFsc28gYmUgdGhyb3duIGZvciBhIEBjaGFyc2V0IG9yIGEgbmVzdGVkCi0gICAg
ICAgIC8vIEBtZWRpYSBydWxlLiAgVGhleSBhcmUgY3VycmVudGx5IG5vdCBnZXR0aW5nIHBhcnNl
ZCwgcmVzdWx0aW5nIGluIGEgU1lOVEFYX0VSUgotICAgICAgICAvLyB0byBnZXQgcmFpc2VkIGFi
b3ZlLgotCi0gICAgICAgIC8vIEhJRVJBUkNIWV9SRVFVRVNUX0VSUjogUmFpc2VkIGlmIHRoZSBy
dWxlIGNhbm5vdCBiZSBpbnNlcnRlZCBhdCB0aGUgc3BlY2lmaWVkCi0gICAgICAgIC8vIGluZGV4
LCBlLmcuLCBpZiBhbiBAaW1wb3J0IHJ1bGUgaXMgaW5zZXJ0ZWQgYWZ0ZXIgYSBzdGFuZGFyZCBy
dWxlIHNldCBvciBvdGhlcgotICAgICAgICAvLyBhdC1ydWxlLgotICAgICAgICBlYyA9IEhJRVJB
UkNIWV9SRVFVRVNUX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIENTU1N0eWxl
U2hlZXQ6OlJ1bGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7Ci0KLSAgICBtX21l
ZGlhUnVsZS0+d3JhcHBlckluc2VydFJ1bGUoaW5kZXgsIG5ld1J1bGUpOwotCi0gICAgbV9jaGls
ZFJ1bGVDU1NPTVdyYXBwZXJzLmluc2VydChpbmRleCwgUmVmUHRyPENTU1J1bGU+KCkpOwotICAg
IHJldHVybiBpbmRleDsKLX0KLQotdm9pZCBDU1NNZWRpYVJ1bGU6OmRlbGV0ZVJ1bGUodW5zaWdu
ZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIEFTU0VSVChtX2NoaWxkUnVsZUNT
U09NV3JhcHBlcnMuc2l6ZSgpID09IG1fbWVkaWFSdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgpKTsK
LQotICAgIGlmIChpbmRleCA+PSBtX21lZGlhUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUoKSkgewot
ICAgICAgICAvLyBJTkRFWF9TSVpFX0VSUjogUmFpc2VkIGlmIHRoZSBzcGVjaWZpZWQgaW5kZXgg
ZG9lcyBub3QgY29ycmVzcG9uZCB0byBhCi0gICAgICAgIC8vIHJ1bGUgaW4gdGhlIG1lZGlhIHJ1
bGUgbGlzdC4KLSAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIENTU1N0eWxlU2hlZXQ6OlJ1bGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2Nv
cGUodGhpcyk7Ci0KLSAgICBtX21lZGlhUnVsZS0+d3JhcHBlclJlbW92ZVJ1bGUoaW5kZXgpOwot
Ci0gICAgaWYgKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpbmRleF0pCi0gICAgICAgIG1fY2hp
bGRSdWxlQ1NTT01XcmFwcGVyc1tpbmRleF0tPnNldFBhcmVudFJ1bGUoMCk7Ci0gICAgbV9jaGls
ZFJ1bGVDU1NPTVdyYXBwZXJzLnJlbW92ZShpbmRleCk7CisgICAgcmV0dXJuIHRvU3R5bGVSdWxl
TWVkaWEobV9ncm91cFJ1bGUuZ2V0KCkpLT5tZWRpYVF1ZXJpZXMoKTsKIH0KIAogU3RyaW5nIENT
U01lZGlhUnVsZTo6Y3NzVGV4dCgpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7
CiAgICAgcmVzdWx0LmFwcGVuZCgiQG1lZGlhICIpOwotICAgIGlmIChtX21lZGlhUnVsZS0+bWVk
aWFRdWVyaWVzKCkpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChtX21lZGlhUnVsZS0+bWVkaWFR
dWVyaWVzKCktPm1lZGlhVGV4dCgpKTsKKyAgICBpZiAobWVkaWFRdWVyaWVzKCkpIHsKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZChtZWRpYVF1ZXJpZXMoKS0+bWVkaWFUZXh0KCkpOwogICAgICAgICBy
ZXN1bHQuYXBwZW5kKCcgJyk7CiAgICAgfQotICAgIHJlc3VsdC5hcHBlbmQoInsgXG4iKTsKLSAg
ICAKLSAgICB1bnNpZ25lZCBzaXplID0gbGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICByZXN1bHQuYXBwZW5kKCIgICIpOwotICAgICAg
ICByZXN1bHQuYXBwZW5kKGl0ZW0oaSktPmNzc1RleHQoKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBl
bmQoJ1xuJyk7Ci0gICAgfQotCisgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInsgXG4iKTsKKyAg
ICBhcHBlbmRDc3NUZXh0Rm9ySXRlbXMocmVzdWx0KTsKICAgICByZXN1bHQuYXBwZW5kKCd9Jyk7
CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQogCiBNZWRpYUxpc3QqIENTU01lZGlh
UnVsZTo6bWVkaWEoKSBjb25zdAogewotICAgIGlmICghbV9tZWRpYVJ1bGUtPm1lZGlhUXVlcmll
cygpKQorICAgIGlmICghbWVkaWFRdWVyaWVzKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlm
ICghbV9tZWRpYUNTU09NV3JhcHBlcikKLSAgICAgICAgbV9tZWRpYUNTU09NV3JhcHBlciA9IE1l
ZGlhTGlzdDo6Y3JlYXRlKG1fbWVkaWFSdWxlLT5tZWRpYVF1ZXJpZXMoKSwgY29uc3RfY2FzdDxD
U1NNZWRpYVJ1bGUqPih0aGlzKSk7CisgICAgICAgIG1fbWVkaWFDU1NPTVdyYXBwZXIgPSBNZWRp
YUxpc3Q6OmNyZWF0ZShtZWRpYVF1ZXJpZXMoKSwgY29uc3RfY2FzdDxDU1NNZWRpYVJ1bGUqPih0
aGlzKSk7CiAgICAgcmV0dXJuIG1fbWVkaWFDU1NPTVdyYXBwZXIuZ2V0KCk7CiB9CiAKLXVuc2ln
bmVkIENTU01lZGlhUnVsZTo6bGVuZ3RoKCkgY29uc3QKLXsgCi0gICAgcmV0dXJuIG1fbWVkaWFS
dWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgpOyAKLX0KLQotQ1NTUnVsZSogQ1NTTWVkaWFSdWxlOjpp
dGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAoteyAKLSAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkp
Ci0gICAgICAgIHJldHVybiAwOwotICAgIEFTU0VSVChtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMu
c2l6ZSgpID09IG1fbWVkaWFSdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgpKTsKLSAgICBSZWZQdHI8
Q1NTUnVsZT4mIHJ1bGUgPSBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnNbaW5kZXhdOwotICAgIGlm
ICghcnVsZSkKLSAgICAgICAgcnVsZSA9IG1fbWVkaWFSdWxlLT5jaGlsZFJ1bGVzKClbaW5kZXhd
LT5jcmVhdGVDU1NPTVdyYXBwZXIoY29uc3RfY2FzdDxDU1NNZWRpYVJ1bGUqPih0aGlzKSk7Ci0g
ICAgcmV0dXJuIHJ1bGUuZ2V0KCk7Ci19Ci0KLUNTU1J1bGVMaXN0KiBDU1NNZWRpYVJ1bGU6OmNz
c1J1bGVzKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0gICAg
ICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBhZG9wdFB0cihuZXcgTGl2ZUNTU1J1bGVMaXN0
PENTU01lZGlhUnVsZT4oY29uc3RfY2FzdDxDU1NNZWRpYVJ1bGUqPih0aGlzKSkpOwotICAgIHJl
dHVybiBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyLmdldCgpOwotfQotCiB2b2lkIENTU01lZGlhUnVs
ZTo6cmVhdHRhY2goU3R5bGVSdWxlQmFzZSogcnVsZSkKIHsKLSAgICBBU1NFUlQocnVsZSk7Ci0g
ICAgQVNTRVJUKHJ1bGUtPmlzTWVkaWFSdWxlKCkpOwotICAgIG1fbWVkaWFSdWxlID0gc3RhdGlj
X2Nhc3Q8U3R5bGVSdWxlTWVkaWEqPihydWxlKTsKLSAgICBpZiAobV9tZWRpYUNTU09NV3JhcHBl
ciAmJiBtX21lZGlhUnVsZS0+bWVkaWFRdWVyaWVzKCkpCi0gICAgICAgIG1fbWVkaWFDU1NPTVdy
YXBwZXItPnJlYXR0YWNoKG1fbWVkaWFSdWxlLT5tZWRpYVF1ZXJpZXMoKSk7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCk7ICsraSkg
ewotICAgICAgICBpZiAobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2ldKQotICAgICAgICAgICAg
bV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2ldLT5yZWF0dGFjaChtX21lZGlhUnVsZS0+Y2hpbGRS
dWxlcygpW2ldLmdldCgpKTsKLSAgICB9CisgICAgQ1NTR3JvdXBpbmdSdWxlOjpyZWF0dGFjaChy
dWxlKTsKKyAgICBpZiAobV9tZWRpYUNTU09NV3JhcHBlciAmJiBtZWRpYVF1ZXJpZXMoKSkKKyAg
ICAgICAgbV9tZWRpYUNTU09NV3JhcHBlci0+cmVhdHRhY2gobWVkaWFRdWVyaWVzKCkpOwogfQog
CiB2b2lkIENTU01lZGlhUnVsZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyog
bWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1v
cnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7Ci0gICAgQ1NTUnVs
ZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgQ1NTR3JvdXBpbmdS
dWxlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKICAgICBpbmZvLmFkZE1l
bWJlcihtX21lZGlhQ1NTT01XcmFwcGVyKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX2NoaWxkUnVs
ZUNTU09NV3JhcHBlcnMpOwotICAgIGluZm8uYWRkTWVtYmVyKG1fcnVsZUxpc3RDU1NPTVdyYXBw
ZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTTWVkaWFSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxl
LmgKaW5kZXggODc4MzU5NDg0YjQ3ZTE0NDk4MTA1MTRiNGM5ZGM4ZTRkODMzNzQ1OC4uOWQ3NDkw
MGIyMGFhNTU1NzM0MDZlYjM5NGE5MTg2OTk2ODgyZDE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU01lZGlhUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRp
YVJ1bGUuaApAQCAtMjMsMTUgKzIzLDE0IEBACiAjaWZuZGVmIENTU01lZGlhUnVsZV9oCiAjZGVm
aW5lIENTU01lZGlhUnVsZV9oCiAKLSNpbmNsdWRlICJDU1NSdWxlLmgiCisjaW5jbHVkZSAiQ1NT
R3JvdXBpbmdSdWxlLmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgQ1NTUnVsZUxpc3Q7CiBjbGFzcyBTdHlsZVJ1bGVNZWRpYTsKIAotY2xh
c3MgQ1NTTWVkaWFSdWxlIDogcHVibGljIENTU1J1bGUgeworY2xhc3MgQ1NTTWVkaWFSdWxlIDog
cHVibGljIENTU0dyb3VwaW5nUnVsZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
Q1NTTWVkaWFSdWxlPiBjcmVhdGUoU3R5bGVSdWxlTWVkaWEqIHJ1bGUsIENTU1N0eWxlU2hlZXQq
IHNoZWV0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ1NTTWVkaWFSdWxlKHJ1bGUsIHNoZWV0KSk7
IH0KIApAQCAtNDMsMjIgKzQyLDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBjc3NU
ZXh0KCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBNZWRpYUxpc3QqIG1lZGlhKCkgY29uc3Q7Ci0g
ICAgQ1NTUnVsZUxpc3QqIGNzc1J1bGVzKCkgY29uc3Q7Ci0KLSAgICB1bnNpZ25lZCBpbnNlcnRS
dWxlKGNvbnN0IFN0cmluZyYgcnVsZSwgdW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICB2b2lkIGRlbGV0ZVJ1bGUodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICAgICAgCi0gICAgLy8gRm9yIENTU1J1bGVMaXN0Ci0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3Q7Ci0gICAgQ1NTUnVsZSogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAKIHByaXZhdGU6
CiAgICAgQ1NTTWVkaWFSdWxlKFN0eWxlUnVsZU1lZGlhKiwgQ1NTU3R5bGVTaGVldCopOworCisg
ICAgTWVkaWFRdWVyeVNldCogbWVkaWFRdWVyaWVzKCkgY29uc3Q7CiAgICAgCi0gICAgUmVmUHRy
PFN0eWxlUnVsZU1lZGlhPiBtX21lZGlhUnVsZTsKICAgICBtdXRhYmxlIFJlZlB0cjxNZWRpYUxp
c3Q+IG1fbWVkaWFDU1NPTVdyYXBwZXI7Ci0gICAgbXV0YWJsZSBWZWN0b3I8UmVmUHRyPENTU1J1
bGU+ID4gbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzOwotICAgIG11dGFibGUgT3duUHRyPENTU1J1
bGVMaXN0PiBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCmluZGV4IDRlZjc2NDI4Mzg4YjFjNDcyZTEzOTFjMzkx
YjIzYTg2ODFmYzE2MzUuLjc0NjRiMWY3ZjE4ZWRjNGE2ZDhmMmUxMTliYmE4NTJkOWI4OTJjOWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKQEAgLTI3NSw2ICsyNzUsMTggQEAgcHJpdmF0ZToKIH07
CiAjZW5kaWYgLy8gRU5BQkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikKIAoraW5saW5lIGNvbnN0
IFN0eWxlUnVsZU1lZGlhKiB0b1N0eWxlUnVsZU1lZGlhKGNvbnN0IFN0eWxlUnVsZUJsb2NrKiBy
dWxlKQoreworICAgIEFTU0VSVCghcnVsZSB8fCBydWxlLT5pc01lZGlhUnVsZSgpKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3R5bGVSdWxlTWVkaWEqPihydWxlKTsKK30KKworaW5s
aW5lIGNvbnN0IFN0eWxlUnVsZVJlZ2lvbiogdG9TdHlsZVJ1bGVSZWdpb24oY29uc3QgU3R5bGVS
dWxlQmxvY2sqIHJ1bGUpCit7CisgICAgQVNTRVJUKCFydWxlIHx8IHJ1bGUtPmlzUmVnaW9uUnVs
ZSgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3R5bGVSdWxlUmVnaW9uKj4ocnVs
ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFN0eWxlUnVsZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAKaW5kZXggNjhkYjk2
NDFjYjI3ZTA5NDk2MDJiNTQxYWFlNjQzZGJkNDVmOWZmMi4uNmI3NDhjYTAyMTY4YjRhY2IzMDVl
Y2Q4NmI5OWY1Mzk4Njg2OWYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktp
dENTU1JlZ2lvblJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdp
b25SdWxlLmNwcApAQCAtNDIsODQgKzQyLDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdl
YktpdENTU1JlZ2lvblJ1bGU6OldlYktpdENTU1JlZ2lvblJ1bGUoU3R5bGVSdWxlUmVnaW9uKiBy
ZWdpb25SdWxlLCBDU1NTdHlsZVNoZWV0KiBwYXJlbnQpCi0gICAgOiBDU1NSdWxlKHBhcmVudCkK
LSAgICAsIG1fcmVnaW9uUnVsZShyZWdpb25SdWxlKQotICAgICwgbV9jaGlsZFJ1bGVDU1NPTVdy
YXBwZXJzKHJlZ2lvblJ1bGUtPmNoaWxkUnVsZXMoKS5zaXplKCkpCisgICAgOiBDU1NHcm91cGlu
Z1J1bGUocmVnaW9uUnVsZSwgcGFyZW50KQogewogfQogCi1XZWJLaXRDU1NSZWdpb25SdWxlOjp+
V2ViS2l0Q1NTUmVnaW9uUnVsZSgpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
Y2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9jaGls
ZFJ1bGVDU1NPTVdyYXBwZXJzW2ldKQotICAgICAgICAgICAgbV9jaGlsZFJ1bGVDU1NPTVdyYXBw
ZXJzW2ldLT5zZXRQYXJlbnRSdWxlKDApOwotICAgIH0KLX0KLQogU3RyaW5nIFdlYktpdENTU1Jl
Z2lvblJ1bGU6OmNzc1RleHQoKSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0Owot
ICAgIHJlc3VsdC5hcHBlbmQoIkAtd2Via2l0LXJlZ2lvbiAiKTsKKyAgICByZXN1bHQuYXBwZW5k
TGl0ZXJhbCgiQC13ZWJraXQtcmVnaW9uICIpOwogCiAgICAgLy8gRmlyc3QgYWRkIHRoZSBzZWxl
Y3RvcnMuCi0gICAgcmVzdWx0LmFwcGVuZChtX3JlZ2lvblJ1bGUtPnNlbGVjdG9yTGlzdCgpLnNl
bGVjdG9yc1RleHQoKSk7CisgICAgcmVzdWx0LmFwcGVuZCh0b1N0eWxlUnVsZVJlZ2lvbihtX2dy
b3VwUnVsZS5nZXQoKSktPnNlbGVjdG9yTGlzdCgpLnNlbGVjdG9yc1RleHQoKSk7CiAKICAgICAv
LyBUaGVuIGFkZCB0aGUgcnVsZXMuCi0gICAgcmVzdWx0LmFwcGVuZCgiIHsgXG4iKTsKLQotICAg
IHVuc2lnbmVkIHNpemUgPSBsZW5ndGgoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoIiAgIik7Ci0gICAgICAgIHJlc3Vs
dC5hcHBlbmQoaXRlbShpKS0+Y3NzVGV4dCgpKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiXG4i
KTsKLSAgICB9Ci0gICAgcmVzdWx0LmFwcGVuZCgifSIpOworICAgIHJlc3VsdC5hcHBlbmRMaXRl
cmFsKCIgeyBcbiIpOworICAgIGFwcGVuZENzc1RleHRGb3JJdGVtcyhyZXN1bHQpOworICAgIHJl
c3VsdC5hcHBlbmQoJ30nKTsKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKLXVu
c2lnbmVkIFdlYktpdENTU1JlZ2lvblJ1bGU6Omxlbmd0aCgpIGNvbnN0Ci17IAotICAgIHJldHVy
biBtX3JlZ2lvblJ1bGUtPmNoaWxkUnVsZXMoKS5zaXplKCk7IAotfQotCi1DU1NSdWxlKiBXZWJL
aXRDU1NSZWdpb25SdWxlOjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAoteyAKLSAgICBpZiAo
aW5kZXggPj0gbGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIEFTU0VSVChtX2NoaWxk
UnVsZUNTU09NV3JhcHBlcnMuc2l6ZSgpID09IG1fcmVnaW9uUnVsZS0+Y2hpbGRSdWxlcygpLnNp
emUoKSk7Ci0gICAgUmVmUHRyPENTU1J1bGU+JiBydWxlID0gbV9jaGlsZFJ1bGVDU1NPTVdyYXBw
ZXJzW2luZGV4XTsKLSAgICBpZiAoIXJ1bGUpCi0gICAgICAgIHJ1bGUgPSBtX3JlZ2lvblJ1bGUt
PmNoaWxkUnVsZXMoKVtpbmRleF0tPmNyZWF0ZUNTU09NV3JhcHBlcihjb25zdF9jYXN0PFdlYktp
dENTU1JlZ2lvblJ1bGUqPih0aGlzKSk7Ci0gICAgcmV0dXJuIHJ1bGUuZ2V0KCk7Ci19Ci0KLUNT
U1J1bGVMaXN0KiBXZWJLaXRDU1NSZWdpb25SdWxlOjpjc3NSdWxlcygpIGNvbnN0Ci17Ci0gICAg
aWYgKCFtX3J1bGVMaXN0Q1NTT01XcmFwcGVyKQotICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFw
cGVyID0gYWRvcHRQdHIobmV3IExpdmVDU1NSdWxlTGlzdDxXZWJLaXRDU1NSZWdpb25SdWxlPihj
b25zdF9jYXN0PFdlYktpdENTU1JlZ2lvblJ1bGUqPih0aGlzKSkpOwotICAgIHJldHVybiBtX3J1
bGVMaXN0Q1NTT01XcmFwcGVyLmdldCgpOwotfQotCi12b2lkIFdlYktpdENTU1JlZ2lvblJ1bGU6
OnJlYXR0YWNoKFN0eWxlUnVsZUJhc2UqIHJ1bGUpCi17Ci0gICAgQVNTRVJUKHJ1bGUpOwotICAg
IEFTU0VSVChydWxlLT5pc1JlZ2lvblJ1bGUoKSk7Ci0gICAgbV9yZWdpb25SdWxlID0gc3RhdGlj
X2Nhc3Q8U3R5bGVSdWxlUmVnaW9uKj4ocnVsZSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAo
bV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2ldKQotICAgICAgICAgICAgbV9jaGlsZFJ1bGVDU1NP
TVdyYXBwZXJzW2ldLT5yZWF0dGFjaChtX3JlZ2lvblJ1bGUtPmNoaWxkUnVsZXMoKVtpXS5nZXQo
KSk7Ci0gICAgfQotfQotCi12b2lkIFdlYktpdENTU1JlZ2lvblJ1bGU6OnJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Ci17Ci0gICAgTWVt
b3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5
cGVzOjpDU1MpOwotICAgIENTU1J1bGU6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdElu
Zm8pOwotICAgIGluZm8uYWRkTWVtYmVyKG1fcmVnaW9uUnVsZSk7Ci0gICAgaW5mby5hZGRNZW1i
ZXIobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX3J1bGVM
aXN0Q1NTT01XcmFwcGVyKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5oCmluZGV4IGE2OGJhMTFkNTBj
ZDNkNzkxZTBlZGU1Y2UyOGI5NjExNjNlMGJiNDguLjY4OTJmNWIwNTdkZTE4NTM2NmNjZjg2YmZj
ZDJlNzZhOWYwMmI0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NS
ZWdpb25SdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUu
aApAQCAtMzEsNDEgKzMxLDIzIEBACiAjaWZuZGVmIFdlYktpdENTU1JlZ2lvblJ1bGVfaAogI2Rl
ZmluZSBXZWJLaXRDU1NSZWdpb25SdWxlX2gKIAotI2luY2x1ZGUgIkNTU1J1bGUuaCIKLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSAiQ1NTR3JvdXBpbmdSdWxlLmgiCiAKICNpZiBF
TkFCTEUoQ1NTX1JFR0lPTlMpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ1NTUnVs
ZUxpc3Q7CiBjbGFzcyBTdHlsZVJ1bGVSZWdpb247CiAKLWNsYXNzIFdlYktpdENTU1JlZ2lvblJ1
bGUgOiBwdWJsaWMgQ1NTUnVsZSB7CitjbGFzcyBXZWJLaXRDU1NSZWdpb25SdWxlIDogcHVibGlj
IENTU0dyb3VwaW5nUnVsZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViS2l0
Q1NTUmVnaW9uUnVsZT4gY3JlYXRlKFN0eWxlUnVsZVJlZ2lvbiogcnVsZSwgQ1NTU3R5bGVTaGVl
dCogc2hlZXQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRDU1NSZWdpb25SdWxlKHJ1bGUs
IHNoZWV0KSk7IH0KIAotICAgIHZpcnR1YWwgfldlYktpdENTU1JlZ2lvblJ1bGUoKTsKLQogICAg
IHZpcnR1YWwgQ1NTUnVsZTo6VHlwZSB0eXBlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gV0VC
S0lUX1JFR0lPTl9SVUxFOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0IE9W
RVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZWF0dGFjaChTdHlsZVJ1bGVCYXNlKikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
KSBjb25zdCBPVkVSUklERTsKLQotICAgIENTU1J1bGVMaXN0KiBjc3NSdWxlcygpIGNvbnN0Owot
ICAgIAotICAgIC8vIEZvciBDU1NSdWxlTGlzdAotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0
OwotICAgIENTU1J1bGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwogCiBwcml2YXRlOgog
ICAgIFdlYktpdENTU1JlZ2lvblJ1bGUoU3R5bGVSdWxlUmVnaW9uKiwgQ1NTU3R5bGVTaGVldCog
cGFyZW50KTsKLQotICAgIFJlZlB0cjxTdHlsZVJ1bGVSZWdpb24+IG1fcmVnaW9uUnVsZTsKLSAg
ICBtdXRhYmxlIFZlY3RvcjxSZWZQdHI8Q1NTUnVsZT4gPiBtX2NoaWxkUnVsZUNTU09NV3JhcHBl
cnM7Ci0gICAgbXV0YWJsZSBPd25QdHI8Q1NTUnVsZUxpc3Q+IG1fcnVsZUxpc3RDU1NPTVdyYXBw
ZXI7Ci0gICAgCi0gICAgZnJpZW5kIGNsYXNzIFN0eWxlUnVsZUJsb2NrOwogfTsKIAogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>