<?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>80580</bug_id>
          
          <creation_ts>2012-03-08 01:29:27 -0800</creation_ts>
          <short_desc>Add TextFieldDecorator and TextFieldDecorationElement</short_desc>
          <delta_ts>2012-03-23 16:42:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</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>80479</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>morrita</cc>
    
    <cc>rakuco</cc>
    
    <cc>shinyak</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>573706</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-08 01:29:27 -0800</bug_when>
    <thetext>Add TextFieldDecorator and TextFieldDecorationElemeent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573709</commentid>
    <comment_count>1</comment_count>
      <attachid>130794</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-08 01:32:40 -0800</bug_when>
    <thetext>Created attachment 130794
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573871</commentid>
    <comment_count>2</comment_count>
      <attachid>130794</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-03-08 08:57:10 -0800</bug_when>
    <thetext>Comment on attachment 130794
WIP

This looks really great, but this code will become obsolete as soon as we start supporting multiple shadow DOM trees on the text inputs. Once that&apos;s in place, we should be able to simply add another shadow DOM tree on top of existing type and put the decoration there. Perhaps you could file a bug on this? We (the Shadow DOM folks) will take care of the refactoring once the stuff is ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574570</commentid>
    <comment_count>3</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-08 21:02:30 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; This looks really great, but this code will become obsolete as soon as we start supporting multiple shadow DOM trees on the text inputs. Once that&apos;s in place, we should be able to simply add another shadow DOM tree on top of existing type and put the decoration there. Perhaps you could file a bug on this? We (the Shadow DOM folks) will take care of the refactoring once the stuff is ready.

I don&apos;t think multiple shadow DOM trees will help this much.

When one wants to add a decoration button, he needs to do:
 - Provide a custom Element class to add code for mouse events
 - Add shadowPseudoId and default style in html.css if he doesn&apos;t use scoped style.
 - Add new -webkit-appearance value and painting code for it if the appearance can not be represented by pure CSS
 - Add code to RenderTextControlSingleLine.cpp if the button affects the size of the host &lt;input&gt;
 - Add the custom Element instance to the host &lt;input&gt; as a shadow element

It seems multiple shadow DOM doesn&apos;t improve these tasks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574654</commentid>
    <comment_count>4</comment_count>
      <attachid>130987</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-08 23:16:33 -0800</bug_when>
    <thetext>Created attachment 130987
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574925</commentid>
    <comment_count>5</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-03-09 08:56:50 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; This looks really great, but this code will become obsolete as soon as we start supporting multiple shadow DOM trees on the text inputs. Once that&apos;s in place, we should be able to simply add another shadow DOM tree on top of existing type and put the decoration there. Perhaps you could file a bug on this? We (the Shadow DOM folks) will take care of the refactoring once the stuff is ready.
&gt; 
&gt; I don&apos;t think multiple shadow DOM trees will help this much.
&gt; 
&gt; When one wants to add a decoration button, he needs to do:
&gt;  - Provide a custom Element class to add code for mouse events
&gt;  - Add shadowPseudoId and default style in html.css if he doesn&apos;t use scoped style.
&gt;  - Add new -webkit-appearance value and painting code for it if the appearance can not be represented by pure CSS
&gt;  - Add code to RenderTextControlSingleLine.cpp if the button affects the size of the host &lt;input&gt;
&gt;  - Add the custom Element instance to the host &lt;input&gt; as a shadow element
&gt; 
&gt; It seems multiple shadow DOM doesn&apos;t improve these tasks.

Sure, but all these are standard, typical things one would need to do to create a functional shadow DOM element. What you&apos;re proposing here is a neat, but completely new way and highly specialized way of doing things.

Additionally, if this is just a plain element, I can animate it, and use CSS to lay things out.

I am not objecting to this patch, just trying to suggest that perhaps specialization is not always the best route.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580149</commentid>
    <comment_count>6</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-15 22:42:26 -0700</bug_when>
    <thetext>Maybe Shinya can help here.

We are going to support multiple shadow roots for non-trivial elements like controls and images.
If we have some concrete usecase to &quot;decorating&quot; such stuff, we can take it as the first client of 
our change.

In that process, some C++ utility classes could be introduced to build such multiple shadows easily.
It&apos;ll be like what we did when we introduced ShadowRoot. Let&apos;s start from real case, then abstract it out.

Well, I admit that this is highly shadow-biased opinion but...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580613</commentid>
    <comment_count>7</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-03-16 10:00:33 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Maybe Shinya can help here.
&gt; 
&gt; We are going to support multiple shadow roots for non-trivial elements like controls and images.
&gt; If we have some concrete usecase to &quot;decorating&quot; such stuff, we can take it as the first client of 
&gt; our change.
&gt; 
&gt; In that process, some C++ utility classes could be introduced to build such multiple shadows easily.
&gt; It&apos;ll be like what we did when we introduced ShadowRoot. Let&apos;s start from real case, then abstract it out.
&gt; 
&gt; Well, I admit that this is highly shadow-biased opinion but...

Me too! Kent-san, we apologize for proselytizing shadow DOM so much :)

Please connect with Shinya and Morrita and chat with them. I trust that you guys can figure this out f2f.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585099</commentid>
    <comment_count>8</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-22 03:10:28 -0700</bug_when>
    <thetext>I discussed this with morrita and shinyak.
I understand the multiple shadow trees feature can be applied to this.  It would make some benefit if shadow DOM operations were exposed via WebKit API, or if we supported &lt;style scoped&gt; by default.  It makes no benefit at this moment, but we can use it.

I&apos;ll make the patch simpler, but the basic structure won&apos;t be changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585214</commentid>
    <comment_count>9</comment_count>
      <attachid>133248</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-22 06:55:36 -0700</bug_when>
    <thetext>Created attachment 133248
WIP 2

Simplified</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585219</commentid>
    <comment_count>10</comment_count>
      <attachid>133248</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-22 07:03:16 -0700</bug_when>
    <thetext>Comment on attachment 133248
WIP 2

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

&gt; Source/WebCore/page/ChromeClient.h:314
&gt; +        virtual void addTextFieldDecorationsTo(HTMLInputElement*) { }

ChromeClientChromium::addTextFieldDecorationsTo() implementation will be like:

add another ShadowRoot;
shadowRoot-&gt;appendChild(HTMLShadowElement::create());
for (i = 0; i &lt; webView-&gt;textFieldDecorators().size(); ++i)
    shadowRoot-&gt;appendChild(TextFieldDecorationElement::create(input-&gt;document(), webview-&gt;textFieldDecorators[i]))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585383</commentid>
    <comment_count>11</comment_count>
      <attachid>133248</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-03-22 09:36:06 -0700</bug_when>
    <thetext>Comment on attachment 133248
WIP 2

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

&gt; Source/WebCore/html/shadow/TextFieldDecorationElement.cpp:59
&gt; +    virtual void paintReplaced(PaintInfo&amp; paintInfo, const LayoutPoint&amp; paintOffset) OVERRIDE

I am probably just being dense, but... can you explain why we need custom painting here? Can&apos;t we just let style recalc, etc. Take care of this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585935</commentid>
    <comment_count>12</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-22 18:00:23 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 133248 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=133248&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/shadow/TextFieldDecorationElement.cpp:59
&gt; &gt; +    virtual void paintReplaced(PaintInfo&amp; paintInfo, const LayoutPoint&amp; paintOffset) OVERRIDE
&gt; 
&gt; I am probably just being dense, but... can you explain why we need custom painting here? Can&apos;t we just let style recalc, etc. Take care of this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585940</commentid>
    <comment_count>13</comment_count>
      <attachid>133248</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-22 18:08:10 -0700</bug_when>
    <thetext>Comment on attachment 133248
WIP 2

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

&gt;&gt;&gt; Source/WebCore/html/shadow/TextFieldDecorationElement.cpp:59
&gt;&gt;&gt; +    virtual void paintReplaced(PaintInfo&amp; paintInfo, const LayoutPoint&amp; paintOffset) OVERRIDE
&gt;&gt; 
&gt;&gt; I am probably just being dense, but... can you explain why we need custom painting here? Can&apos;t we just let style recalc, etc. Take care of this?
&gt; 
&gt; 

I&apos;d like to draw an Image object for TextFieldDecorationElement.  AFAIK, there are two ways to draw an Image object for an element content.
* Use a custom Renderer like this
* Use -webkit-appearance, and implement a paint function of RenderTheme like the previos patch

I switched to the first way to prevent many platforms from depending TextFieldDecorationElement.*.


I don&apos;t like to use the standard ways to paint images such as &lt;img src=&gt; and background-image because making such images URL-accessible is not efficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585943</commentid>
    <comment_count>14</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-22 18:13:57 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; I&apos;d like to draw an Image object for TextFieldDecorationElement.  AFAIK, there are two ways to draw an Image object for an element content.
&gt; * Use a custom Renderer like this
&gt; * Use -webkit-appearance, and implement a paint function of RenderTheme like the previos patch

I have just found a way to set an Image object to HTMLImageElement.  I&apos;ll try it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586147</commentid>
    <comment_count>15</comment_count>
      <attachid>133438</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-23 00:28:03 -0700</bug_when>
    <thetext>Created attachment 133438
Patch 2

Drop a custom renderer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586858</commentid>
    <comment_count>16</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-23 16:42:59 -0700</bug_when>
    <thetext>Committed r111930: &lt;http://trac.webkit.org/changeset/111930&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130794</attachid>
            <date>2012-03-08 01:32:40 -0800</date>
            <delta_ts>2012-03-08 23:16:27 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-80580-20120308183238.patch</filename>
            <type>text/plain</type>
            <size>18300</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI3OTRhMmU0MWQ1Nzgx
N2E1MThmZGViZmE2NzU0NjM3ZTdlMmVmYy4uMThiNzRkNDJmOGI2OTlkY2NhY2M5NTQ1YWJkZTJl
YTQyNzNmNWYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTAzLTA4ICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgVGV4dEZpZWxkRGVj
b3JhdG9yIGFuZCBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA1ODAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBw
aW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2
ZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbjoKKyAgICAgICAgKiBk
b20vRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aXNUZXh0RmllbGREZWNv
cmF0aW9uKToKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOgorICAg
ICAgICAqIGh0bWwvc2hhZG93L1RleHRGaWVsZERlY29yYXRpb25FbGVtZW50LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZERlY29yYXRv
cjo6YWRqdXN0VGV4dEZpZWxkSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZERl
Y29yYXRvcjo6YWRqdXN0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkRGVjb3Jh
dG9yOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGREZWNvcmF0b3I6OnNoYWRv
d1BzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZERlY29yYXRvcjo6ZGlkQ2hh
bmdlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZERlY29yYXRvcjo6aGFuZGxl
TW91c2VEb3duKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZERlY29yYXRvcjo6aGFuZGxl
TW91c2VVcCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGREZWNvcmF0b3I6OmhhbmRsZUNs
aWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZERlY29yYXRpb25FbGVtZW50OjpUZXh0
RmllbGREZWNvcmF0aW9uRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGREZWNv
cmF0aW9uRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZERlY29y
YXRpb25FbGVtZW50Ojppc1RleHRGaWVsZERlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRGaWVsZERlY29yYXRpb25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVGV4dEZpZWxkRGVjb3JhdG9yKToKKyAg
ICAgICAgKFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRGaWVsZERlY29yYXRpb25FbGVtZW50Ojp0ZXh0RmllbGREZWNvcmF0b3IpOgorICAgICAgICAq
IHBsYXRmb3JtL1RoZW1lVHlwZXMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZTo6Y29tcHV0ZUNvbnRyb2xIZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0U3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50KToKKwogMjAxMi0wMy0w
NyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRG8gbm90IHJl
ZmVyIHRvIHJlc3V0bHNCdXR0b25FbGVtZW50IGFuZCBjYW5jZWxCdXR0b25FbGVtZW50IHRvIGNv
bXB1dGUgcGFkZGluZ3Mgb2Ygc2VhcmNoIHBvcHVwcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGU5ZmNl
MDZlNjc0YWVmMjJiNzFkYWIzODgxMTU5YjA1NmExZTRmMDIuLjlkYTQ2YzNkMzdiN2Y3MzcwODkx
NTc1ODMyZWIyODEzMzZhZDE5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTU2MTUsNiArNTYxNSw4
IEBACiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgnLAogICAg
ICAgICAgICAgJ2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAnLAogICAg
ICAgICAgICAgJ2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oJywKKyAgICAg
ICAgICAgICdodG1sL3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5jcHAnLAorICAg
ICAgICAgICAgJ2h0bWwvc2hhZG93L1RleHRGaWVsZERlY29yYXRpb25FbGVtZW50LmgnLAogICAg
ICAgICAgICAgJ2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwJywKICAgICAgICAgICAg
ICdodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmgnLAogICAgICAgICAgICAgJ2h0bWwvdHJh
Y2svVGV4dFRyYWNrLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWVNYXBwaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlTWFwcGluZ3MuaAppbmRleCA3ZDg4Y2VjMzIyMWI3ZjBjNjcyMDFjYjVjOWRlNWU4YTgzNjUx
Y2QyLi5mNDFkNWYzMGZkYWEwZWFiNDZkNGIxM2E4OWIxMDJiNzFjNmYzYmRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKQEAgLTQ5OSw2ICs0
OTksOSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZl
VmFsdWUoQ29udHJvbFBhcnQgZSkKICAgICAgICAgY2FzZSBUZXh0RmllbGRQYXJ0OgogICAgICAg
ICAgICAgbV92YWx1ZS5pZGVudCA9IENTU1ZhbHVlVGV4dGZpZWxkOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgVGV4dEZpZWxkRGVjb3JhdGlvblBhcnQ6CisgICAgICAgICAgICBt
X3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVUZXh0ZmllbGREZWNvcmF0aW9uOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFyZWFQYXJ0OgogICAgICAgICAgICAgbV92YWx1ZS5p
ZGVudCA9IENTU1ZhbHVlVGV4dGFyZWE7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KaW5kZXggYTgwNTgxZjc1YjY3MDM0YzJlN2ZkOTM3MTJi
NzU0NTQzNjYyMDJmOS4uZDhkODE1M2RiOTk2YzJlOWMzMTMzMTEwZDBmODUyOGUwYzA4MDgzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KQEAgLTY1Miw2ICs2NTIsNyBA
QCBzZWFyY2hmaWVsZC1yZXN1bHRzLWRlY29yYXRpb24KIHNlYXJjaGZpZWxkLXJlc3VsdHMtYnV0
dG9uCiBzZWFyY2hmaWVsZC1jYW5jZWwtYnV0dG9uCiB0ZXh0ZmllbGQKK3RleHRmaWVsZC1kZWNv
cmF0aW9uCiByZWxldmFuY3ktbGV2ZWwtaW5kaWNhdG9yCiBjb250aW51b3VzLWNhcGFjaXR5LWxl
dmVsLWluZGljYXRvcgogZGlzY3JldGUtY2FwYWNpdHktbGV2ZWwtaW5kaWNhdG9yCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAppbmRleCA4ZWViYjAyOGM0N2M5Mzc3MzRiZDYwZWQ2YjhmMTRiODZmYmI2ZGQ2Li44
MjJhMzNhZjYxMjgwOTI1ZmM5YTEyMjZiODJlMTU3NGQ3MzQxMGQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgKQEAgLTM1OSw2ICszNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzSW5SYW5n
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzT3V0T2ZSYW5n
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzRnJhbWVFbGVt
ZW50QmFzZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzVGV4
dEZpZWxkRGVjb3JhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFs
IGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCBhMTQ5YjY5
NTczZTdjOTI4MmU3MTgwZmE1NDZlMWE0MDUxNzY5N2Y2Li41ZjQxNTQzZDY3ZWZmMTZkMTQwZTdi
NTlmNzBhMTcyZDQ4YmFkZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRG
aWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1
dFR5cGUuY3BwCkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNy
ZWF0ZVNoYWRvd1N1YnRyZWUoKQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGVsZW1lbnQoKS0+
ZG9jdW1lbnQoKTsKICAgICBSZWZQdHI8UmVuZGVyVGhlbWU+IHRoZW1lID0gZG9jdW1lbnQtPnBh
Z2UoKSA/IGRvY3VtZW50LT5wYWdlKCktPnRoZW1lKCkgOiBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRo
ZW1lKCk7CiAgICAgYm9vbCBzaG91bGRIYXZlU3BpbkJ1dHRvbiA9IHRoZW1lLT5zaG91bGRIYXZl
U3BpbkJ1dHRvbihlbGVtZW50KCkpOwotICAgIGJvb2wgY3JlYXRlc0NvbnRhaW5lciA9IHNob3Vs
ZEhhdmVTcGluQnV0dG9uIHx8IG5lZWRzQ29udGFpbmVyKCk7CisgICAgYm9vbCBjcmVhdGVzQ29u
dGFpbmVyID0gc2hvdWxkSGF2ZVNwaW5CdXR0b24gfHwgbmVlZHNDb250YWluZXIoKSB8fCB0aGVt
ZS0+d2lsbEFkZFRleHRGaWVsZERlY29yYXRpbm9zVG8oZWxlbWVudCgpKTsKIAogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgIG1faW5uZXJUZXh0ID0gVGV4dENvbnRyb2xJbm5lclRleHRF
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwpAQCAtMjUxLDYgKzI1MSw4IEBAIHZvaWQgVGV4dEZp
ZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKICAgICAgICAgbV9pbm5lclNwaW5C
dXR0b24gPSBTcGluQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICAgICAgbV9j
b250YWluZXItPmFwcGVuZENoaWxkKG1faW5uZXJTcGluQnV0dG9uLCBlYyk7CiAgICAgfQorCisg
ICAgdGhlbWUtPmFkZFRleHRGaWVsZERlY29yYXRpb25zVG8oZWxlbWVudCgpLCBtX2NvbnRhaW5l
ci5nZXQoKSwgbV9pbm5lckJsb2NrLmdldCgpKTsKIH0KIAogSFRNTEVsZW1lbnQqIFRleHRGaWVs
ZElucHV0VHlwZTo6Y29udGFpbmVyRWxlbWVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWY1OTQ2MjhmMGIwMWUwNWJlOTg5MzNmMzM1OTVlZGNhNDg3ZDA4ZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRGaWVsZERlY29yYXRp
b25FbGVtZW50LmNwcApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5oIgorCisjaW5jbHVkZSAiQ1NTUHJvcGVy
dHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisvLyBUZXh0RmllbGREZWNvcmF0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIFRleHRGaWVs
ZERlY29yYXRvcjo6YWRqdXN0VGV4dEZpZWxkSGVpZ2h0KExheW91dFVuaXQmLCBMYXlvdXRVbml0
JikKK3sKK30KKwordm9pZCBUZXh0RmllbGREZWNvcmF0b3I6OmFkanVzdFN0eWxlKENTU1N0eWxl
U2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50KikKK3sK
K30KKworYm9vbCBUZXh0RmllbGREZWNvcmF0b3I6OnBhaW50KFJlbmRlck9iamVjdCosIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJlY3QmLCBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVu
dCopCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVGV4dEZp
ZWxkRGVjb3JhdG9yOjpzaGFkb3dQc2V1ZG9JZCgpCit7CisgICAgcmV0dXJuIG51bGxBdG9tOwor
fQorCit2b2lkIFRleHRGaWVsZERlY29yYXRvcjo6ZGlkQ2hhbmdlZFZhbHVlKEhUTUxJbnB1dEVs
ZW1lbnQqLCBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudCopCit7Cit9CisKK3ZvaWQgVGV4dEZp
ZWxkRGVjb3JhdG9yOjpoYW5kbGVNb3VzZURvd24oSFRNTElucHV0RWxlbWVudCosIFRleHRGaWVs
ZERlY29yYXRpb25FbGVtZW50KikKK3sKK30KKwordm9pZCBUZXh0RmllbGREZWNvcmF0b3I6Omhh
bmRsZU1vdXNlVXAoSFRNTElucHV0RWxlbWVudCosIFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50
KikKK3sKK30KKwordm9pZCBUZXh0RmllbGREZWNvcmF0b3I6OmhhbmRsZUNsaWNrKEhUTUxJbnB1
dEVsZW1lbnQqLCBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudCopCit7Cit9CisKKy8vIFRleHRG
aWVsZERlY29yYXRpb25FbGVtZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1l
bnQ6OlRleHRGaWVsZERlY29yYXRpb25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgVGV4dEZp
ZWxkRGVjb3JhdG9yKiBkZWNvcmF0b3IpCisgICAgOiBIVE1MRGl2RWxlbWVudChIVE1MTmFtZXM6
OmRpdlRhZywgZG9jdW1lbnQpCisgICAgLCBtX3RleHRGaWVsZERlY29yYXRvcihkZWNvcmF0b3Ip
Cit7CisgICAgQVNTRVJUKGRlY29yYXRvcik7CisgICAgaWYgKGRlY29yYXRvci0+dXNlc1RleHRG
aWVsZERlY29yYXRpb25BcHBlYXJhbmNlKCkpCisgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVy
dHkoQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlLCBDU1NWYWx1ZVRleHRmaWVsZERlY29yYXRp
b24sIHRydWUpOworfQorCitQYXNzUmVmUHRyPFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50PiBU
ZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgVGV4
dEZpZWxkRGVjb3JhdG9yKiBkZWNvcmF0b3IpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBU
ZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudChkb2N1bWVudCwgZGVjb3JhdG9yKSk7Cit9CisKK2Jv
b2wgVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQ6OmlzVGV4dEZpZWxkRGVjb3JhdGlvbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVGV4dEZp
ZWxkRGVjb3JhdGlvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV90ZXh0RmllbGREZWNvcmF0b3ItPnNoYWRvd1BzZXVkb0lkKCk7Cit9CisKK3ZvaWQgVGV4
dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKQorewor
ICAgIC8vIEZJWE1FOiBDYWxscyBldmVudCBoYW5kbGVyIGZ1bmN0aW9ucyBvZiBtX3RleHRGaWVs
ZERlY29yYXRvci4KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRGaWVsZERlY29yYXRpb25FbGVtZW50LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTZiOGRjNWQzZDViMGI0MjRjNGEwNjhiZWI5ZWQxMGMxNTIzNGJkZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRGaWVsZERlY29yYXRp
b25FbGVtZW50LmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVGV4dEZpZWxkRGVjb3JhdGlvbkVs
ZW1lbnRfaAorI2RlZmluZSBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudF9oCisKKyNpbmNsdWRl
ICJIVE1MRGl2RWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEhUTUxJ
bnB1dEVsZW1lbnQ7CitjbGFzcyBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudDsKK3N0cnVjdCBQ
YWludEluZm87CisKK2NsYXNzIFRleHRGaWVsZERlY29yYXRvciB7CitwdWJsaWM6CisgICAgLy8g
UmV0dXJucyB0cnVlIGlmIHRoaXMgVGV4dEZpZWxkRGVjb3JhdG9yIHdhbnRzIHRvIGFkZCBhCisg
ICAgLy8gZGVjb3JhdGlvbiB0byB0aGUgc3BlY2lmaWVkIHRleHQgZmllbGQuCisgICAgdmlydHVh
bCBib29sIHdpbGxBZGREZWNvcmF0aW9uVG8oSFRNTElucHV0RWxlbWVudCopID0gMDsKKyAgICAv
LyBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBhZGQgYQorICAgIC8v
IFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50IG9yIGFuIGluc3RhbmNlIG9mIGEgc3ViY2xhc3Mg
b2YKKyAgICAvLyBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudCB0byB0aGUgY29udGFpbmVyIGVs
ZW1lbnQuCisgICAgdmlydHVhbCB2b2lkIGFkZERlY29yYXRpb25UbyhIVE1MSW5wdXRFbGVtZW50
KiwgSFRNTEVsZW1lbnQqIGNvbnRhaW5lciwgSFRNTEVsZW1lbnQqIHRleHRCbG9jaykgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0RmllbGRIZWlnaHQoTGF5b3V0VW5pdCYgY29udGVu
dEhlaWdodCwgTGF5b3V0VW5pdCYgbm9uQ29udGVudEhlaWdodCk7CisKKyAgICAvLyBJZiB0aGUg
ZnVuY3Rpb24gcmV0dXJucyB0cnVlLAorICAgIC8vIC13ZWJraXQtYXBwZWFyYW5jZTp0ZXh0Zmll
bGQtZGVjb3JhdGlvbiBpcyBhcHBsaWVkIGFuZCB0aGUKKyAgICAvLyBmb2xsb3dpbmcgYWRqdXN0
U3R5bGUoKSBhbmQgcGFpbnQoKSBhcmUgY2FsbGVkLgorICAgIC8vIElmIHRoZSBmdW5jdGlvbiBy
ZXR1cm5zIGZhbHNlLCB0aGUgdHdvIGZ1bmN0aW9ucyBhcmUgbm90IGNhbGxlZAorICAgIC8vIGFu
ZCB0aGUgdXN1YWwgQ1NTIHN0eWxpbmcgaXMgYXBwbGllZC4gWW91IG1pZ2h0IHdhbnQgdG8KKyAg
ICAvLyBvdmVycmlkZSBzaGFkb3dQc2V1ZG9JZCgpIGFuZCBhZGQgZGVmYXVsdCBzdHlsZSB0byBo
dG1sLmNzcy4KKyAgICB2aXJ0dWFsIGJvb2wgdXNlc1RleHRGaWVsZERlY29yYXRpb25BcHBlYXJh
bmNlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTdHlsZShDU1NTdHlsZVNlbGVjdG9y
KiwgUmVuZGVyU3R5bGUqLCBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudCopOworICAgIHZpcnR1
YWwgYm9vbCBwYWludChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBMYXlv
dXRSZWN0JiwgVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKTsKKworICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VkVmFsdWUoSFRNTElucHV0RWxlbWVudCosIFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50
Kik7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZU1vdXNlRG93bihIVE1MSW5wdXRFbGVtZW50Kiwg
VGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTW91
c2VVcChIVE1MSW5wdXRFbGVtZW50KiwgVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQqKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlQ2xpY2soSFRNTElucHV0RWxlbWVudCosIFRleHRGaWVsZERl
Y29yYXRpb25FbGVtZW50Kik7Cit9OworCitjbGFzcyBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVu
dCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8VGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCosIFRleHRGaWVs
ZERlY29yYXRvciopOworICAgIFRleHRGaWVsZERlY29yYXRvciogdGV4dEZpZWxkRGVjb3JhdG9y
KCkgeyByZXR1cm4gbV90ZXh0RmllbGREZWNvcmF0b3I7IH0KKworcHJvdGVjdGVkOgorICAgIHZp
cnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7CisKK3ByaXZh
dGU6CisgICAgVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQoRG9jdW1lbnQqLCBUZXh0RmllbGRE
ZWNvcmF0b3IqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0RmllbGREZWNvcmF0aW9uKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVk
b0lkKCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICBUZXh0RmllbGREZWNvcmF0b3IqIG1fdGV4dEZp
ZWxkRGVjb3JhdG9yOworfTsKKworCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1l
VHlwZXMuaAppbmRleCBmMjUxNWZjMWE4ZGQ2MjA4MTg5ZWIxNzUyMWY1MDE2YTgxOWM2MWEwLi4w
MTJmNDE0ZTk4MjQ4ZWQ5NWY3NzgwYTZmOTc2YzcxOTE2NDFkMWQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVGhlbWVUeXBlcy5oCkBAIC01Niw3ICs1Niw3IEBAIGVudW0gQ29udHJvbFBhcnQgewog
ICAgIFNsaWRlckhvcml6b250YWxQYXJ0LCBTbGlkZXJWZXJ0aWNhbFBhcnQsIFNsaWRlclRodW1i
SG9yaXpvbnRhbFBhcnQsCiAgICAgU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQsIENhcmV0UGFydCwg
U2VhcmNoRmllbGRQYXJ0LCBTZWFyY2hGaWVsZERlY29yYXRpb25QYXJ0LAogICAgIFNlYXJjaEZp
ZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0LCBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25QYXJ0LAot
ICAgIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uUGFydCwgVGV4dEZpZWxkUGFydCwKKyAgICBTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvblBhcnQsIFRleHRGaWVsZFBhcnQsIFRleHRGaWVsZERlY29yYXRp
b25QYXJ0LAogICAgIFJlbGV2YW5jeUxldmVsSW5kaWNhdG9yUGFydCwgQ29udGludW91c0NhcGFj
aXR5TGV2ZWxJbmRpY2F0b3JQYXJ0LCBEaXNjcmV0ZUNhcGFjaXR5TGV2ZWxJbmRpY2F0b3JQYXJ0
LCBSYXRpbmdMZXZlbEluZGljYXRvclBhcnQsCiAgICAgVGV4dEFyZWFQYXJ0LCBDYXBzTG9ja0lu
ZGljYXRvclBhcnQKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IGU3ZWNlZGZhNjQyNGYyMDA2NDUx
ZDcwZjk3MzIxYTc0OTBkNzg5ODIuLjdhMGMwMTkwOWNkZmI2Nzg1OGY2MTFiMzIzZWZkMmMyZThi
ZmZiN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCkBAIC00NDAsNiArNDQwLDEzIEBAIExheW91dFVuaXQg
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpjb21wdXRlQ29udHJvbEhlaWdodChMYXlvdXRV
bml0IGxpbmVIZWlnCiAgICAgICAgIGxpbmVIZWlnaHQgPSBtYXgobGluZUhlaWdodCwgY2FuY2Vs
UmVuZGVyZXItPmhlaWdodCgpKTsKICAgICB9CiAKKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gY29u
dGFpbmVyRWxlbWVudCgpID8gY29udGFpbmVyRWxlbWVudCgpLT5maXJzdENoaWxkKCkgOiAwOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoIWNoaWxk
LT5pc0VsZW1lbnROb2RlKCkgfHwgIXN0YXRpY19jYXN0PEVsZW1lbnQqPihjaGlsZCkgfHwgIXN0
YXRpY19jYXN0PEVsZW1lbnQqPihjaGlsZCktPmlzVGV4dEZpZWxkRGVjb3JhdGlvbigpKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50KiBk
ZWNvcmF0aW9uID0gc3RhdGljX2Nhc3Q8VGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQ+KGNoaWxk
KTsKKyAgICAgICAgZGVjb3JhdGlvbi0+dGV4dEZpZWxkRGVjb3JhdG9yKCktPmFkanVzdFRleHRG
aWVsZEhlaWdodChsaW5lSGVpZ2h0LCBub25Db250ZW50SGVpZ2h0KTsKKyAgICB9CisKICAgICBy
ZXR1cm4gbGluZUhlaWdodCArIG5vbkNvbnRlbnRIZWlnaHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDhmZDJkNmM4YjFiNDg4MGY0N2FlMzljMDUy
MWY2ZDEwMmE2MGY1MzIuLmY5MTMzMmY4YTEyMjM5OThlZGEwYjAzZTM0ZmFlYWZlYmQ0NzE2OTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtNDIsNiArNDIs
NyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3RyaW5nVHJ1bmNhdG9yLmgi
CiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCisjaW5jbHVkZSAiVGV4dEZp
ZWxkRGVjb3JhdGlvbkVsZW1lbnQuaCIKIAogI2lmIEVOQUJMRShNRVRFUl9UQUcpCiAjaW5jbHVk
ZSAiSFRNTE1ldGVyRWxlbWVudC5oIgpAQCAtMTk3LDYgKzE5OCwxMiBAQCB2b2lkIFJlbmRlclRo
ZW1lOjphZGp1c3RTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUq
IHN0eWxlLCBFbAogI2VuZGlmCiAgICAgICAgIGNhc2UgVGV4dEZpZWxkUGFydDoKICAgICAgICAg
ICAgIHJldHVybiBhZGp1c3RUZXh0RmllbGRTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOworICAg
ICAgICBjYXNlIFRleHRGaWVsZERlY29yYXRpb25QYXJ0OgorICAgICAgICAgICAgaWYgKGUgJiYg
ZS0+aXNUZXh0RmllbGREZWNvcmF0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICBUZXh0RmllbGRE
ZWNvcmF0aW9uRWxlbWVudCogZGVjb3JhdGlvbiA9IHN0YXRpY19jYXN0PFRleHRGaWVsZERlY29y
YXRpb25FbGVtZW50Kj4oZSk7CisgICAgICAgICAgICAgICAgZGVjb3JhdGlvbi0+dGV4dEZpZWxk
RGVjb3JhdG9yKCktPmFkanVzdFN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZGVjb3JhdGlvbik7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgVGV4dEFyZWFQ
YXJ0OgogICAgICAgICAgICAgcmV0dXJuIGFkanVzdFRleHRBcmVhU3R5bGUoc2VsZWN0b3IsIHN0
eWxlLCBlKTsKICAgICAgICAgY2FzZSBNZW51bGlzdFBhcnQ6CkBAIC0zNjQsNiArMzcxLDEyIEBA
IGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91CiAgICAgICAgICAgICByZXR1cm4gcGFpbnRTZWFyY2hG
aWVsZFJlc3VsdHNEZWNvcmF0aW9uKG8sIHBhaW50SW5mbywgcik7CiAgICAgICAgIGNhc2UgU2Vh
cmNoRmllbGRSZXN1bHRzQnV0dG9uUGFydDoKICAgICAgICAgICAgIHJldHVybiBwYWludFNlYXJj
aEZpZWxkUmVzdWx0c0J1dHRvbihvLCBwYWludEluZm8sIHIpOworICAgICAgICBjYXNlIFRleHRG
aWVsZERlY29yYXRpb25QYXJ0OgorICAgICAgICAgICAgaWYgKG8tPm5vZGUoKSAmJiBvLT5ub2Rl
KCktPmlzRWxlbWVudE5vZGUoKSAmJiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oby0+bm9kZSgpKS0+
aXNUZXh0RmllbGREZWNvcmF0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICBUZXh0RmllbGREZWNv
cmF0aW9uRWxlbWVudCogZGVjb3JhdGlvbiA9IHN0YXRpY19jYXN0PFRleHRGaWVsZERlY29yYXRp
b25FbGVtZW50Kj4oby0+bm9kZSgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZGVjb3JhdGlv
bi0+dGV4dEZpZWxkRGVjb3JhdG9yKCktPnBhaW50KG8sIHBhaW50SW5mbywgciwgZGVjb3JhdGlv
bik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICNpZiBFTkFCTEUo
SU5QVVRfU1BFRUNIKQogICAgICAgICBjYXNlIElucHV0U3BlZWNoQnV0dG9uUGFydDoKICAgICAg
ICAgICAgIHJldHVybiBwYWludElucHV0RmllbGRTcGVlY2hCdXR0b24obywgcGFpbnRJbmZvLCBy
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130987</attachid>
            <date>2012-03-08 23:16:33 -0800</date>
            <delta_ts>2012-03-22 06:55:29 -0700</delta_ts>
            <desc>Patch </desc>
            <filename>bug-80580-20120309161631.patch</filename>
            <type>text/plain</type>
            <size>30897</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZjYjlhNWExM2M1NjNl
N2NkODk3MzAwZWM1ZGQ4OGE0ZmYyMWQzYS4uYWEyZmMwZDgwZDU1ZWUyYzBhMzBlMTk4MDhjZWI5
NjMxMzkxNDM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTAzLTA4ICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgVGV4dEZpZWxkRGVj
b3JhdG9yIGFuZCBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA1ODAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVzZSBjbGFzc2VzIHByb3ZpZGUgYW4gZWFz
eSB3YXkgdG8gYWRkIGRlY29yYXRpb24gYnV0dG9ucyB0byB0ZXh0ZmllbGQKKyAgICAgICAgPGlu
cHV0PiBlbGVtZW50cy4gV2l0aCB0aGlzIHdheSwKKyAgICAgICAgLSBZb3UgZG9uJ3QgbmVlZCB0
byBtb2RpZnkgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lCisgICAgICAgIC0gWW91IGRvbid0
IG5lZWQgdG8gbW9kaWZ5IEhUTUxJbnB1dEVsZW1lbnQgYW5kICpJbnB1dFR5cGUuCisgICAgICAg
IC0gWW91IGRvbid0IG5lZWQgdG8gYWRkIG5ldyB3ZWJraXQtYXBwZWFyYW5jZSB2YWx1ZS4KKwor
ICAgICAgICBXZSBjYW4gY29udmVydCBleGlzdGluZyB0ZXh0ZmllbGQgZGVjb3JhdGlvbnMgKHNl
YXJjaCBtYWduaWZpZXIsIHNlYXJjaAorICAgICAgICBjYW5jZWwsIHNwaW4gYnV0dG9uLCBhbmQg
c3BlZWNoIGlucHV0KSB0byB0aGlzIHdheSBhbmQgcmVkdWNlIHRoZSBjb2RlLgorCisgICAgICAg
IE5vIG5ldyBiZWhhdmlvciBjaGFuZ2VzIGF0IHRoaXMgbW9tZW50LgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6IEFkZCBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5jcHAgYW5kL29yIFRl
eHRGaWVsZERlY29yYXRpb25FbGVtZW50LmgKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OiBkaXR0by4KKyAgICAgICAgKiBUYXJnZXQucHJpOiBkaXR0by4KKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6IGRpdHRvLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBk
aXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IGRpdHRv
LgorCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciB0ZXh0ZmllbGQtZGVjb3JhdGlvbiBhcHBlYXJhbmNlLgorICAgICAg
ICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOiBBZGQgdGV4dGZpZWxkLWRlY29yYXRpb24gYXBw
ZWFyYW5jZS4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6aXNUZXh0RmllbGREZWNvcmF0aW9uKTogQWRkZWQuCisgICAgICAgICogaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBl
OjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgQ2FsbHMgUmVuZGVyVGhlbWU6OndpbGxB
ZGRUZXh0RmllbGREZWNvcmF0aW9uc1RvKCkgYW5kIGFkZFRleHRGaWVsZERlY29yYXRpb25zVG8o
KS4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkRGVjb3JhdG9yOjphZGp1c3RUZXh0
RmllbGRIZWlnaHQpOiBBZGQgYW4gZW1wdHkgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJD
b3JlOjpUZXh0RmllbGREZWNvcmF0b3I6OmFkanVzdFN0eWxlKTogZGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpUZXh0RmllbGREZWNvcmF0b3I6OnBhaW50KTogZGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpUZXh0RmllbGREZWNvcmF0b3I6OnNoYWRvd1BzZXVkb0lkKTogZGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpUZXh0RmllbGREZWNvcmF0b3I6OmhhbmRsZU1vdXNlRG93bik6IGRpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkRGVjb3JhdG9yOjpoYW5kbGVNb3VzZVVwKTogZGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGREZWNvcmF0b3I6OmhhbmRsZUNsaWNrKTog
ZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGREZWNvcmF0b3I6On5UZXh0RmllbGRE
ZWNvcmF0b3IpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZERlY29yYXRpb25F
bGVtZW50OjpUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRGaWVsZERlY29yYXRpb25FbGVtZW50Ojppc1RleHRGaWVsZERlY29yYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZERlY29yYXRpb25FbGVtZW50Ojppc01vdXNlRm9j
dXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZERlY29yYXRpb25FbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgRGlzcGF0Y2ggbW91c2UgZXZlbnRzIHRvIHRo
ZSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9ucyBvZiBUZXh0RmllbGREZWNvcmF0b3IuCisgICAgICAg
ICogaHRtbC9zaGFkb3cvVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQuaDogQWRkZWQuCisgICAg
ICAgIChUZXh0RmllbGREZWNvcmF0b3IpOgorICAgICAgICAoVGV4dEZpZWxkRGVjb3JhdGlvbkVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQ6OnRl
eHRGaWVsZERlY29yYXRvcik6CisgICAgICAgIChXZWJDb3JlOjp0b1RleHRGaWVsZERlY29yYXRp
b25FbGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZVR5cGVzLmg6IEFkZCBUZXh0Rmll
bGREZWNvcmF0aW9uUGFydC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZTo6Y29tcHV0ZUNvbnRyb2xIZWlnaHQpOgorICAgICAgICBDYWxscyBUZXh0RmllbGREZWNv
cmF0b3I6OmFkanVzdFRleHRGaWVsZGhlaWdodCgpLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUp
OgorICAgICAgICBTdXBwb3J0IGZvciBUZXh0RmllbGREZWNvcmF0aW9uUGFydC4gQ2FsbHMgVGV4
dEZpZWxkRGVjb3JhdG9yOjphZGpzdXRTdHlsZSgpLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWU6OnBhaW50KToKKyAgICAgICAgU3VwcG9ydCBmb3IgVGV4dEZpZWxkRGVjb3JhdGlvblBh
cnQuIENhbGxzIFRleHRGaWVsZERlY29yYXRvcjo6cGFpbnQoKS4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lOjp3aWxsQWRkVGV4dEZpZWxkRGVjb3JhdGlvbnNUbyk6IEFkZCBhbiBlbXB0
eSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGRUZXh0
RmllbGREZWNvcmF0aW9uc1RvKTogZGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmg6CisgICAgICAgIChSZW5kZXJUaGVtZSk6CisKIDIwMTItMDMtMDggIEVtaWwgQSBFa2x1
bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENoYW5nZSBjYWxjUmFkaWlGb3IgdG8g
SW50U2l6ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA1MTc1MGRlMmMxYzJlYWZlMjVkYjA2N2Ji
N2MzMWYzNjk3ODY2YTZkLi4yMmM3NTQzMDJkMDlmYjRmMDAyMzJiN2YwMGQwY2E2ZTAxMDc0Yzc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODk2LDYgKzg5Niw3IEBAIFNFVChXZWJDb3JlX1NP
VVJDRVMKICAgICBodG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwCiAgICAgaHRt
bC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAogICAgIGh0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHAKKyAgICBodG1sL3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9u
RWxlbWVudC5jcHAKIAogICAgIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKICAgICBpbnNw
ZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
aW5kZXggMzQ3ODJiZjgzNzlkOWY3MTU5ZDdlOGE3NWY3ZjljYTU4OWE3OTRkMS4uNWRkMjI4NmEz
NjU4OWZkOTIyZTZkYjFmNDQxNTllZWJhOWQwNTZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCkBAIC0yNDY0LDYgKzI0NjQsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCBcCisJU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9odG1sL1Bhc3N3b3JkSW5wdXRUeXBlLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvaHRtbC9QYXNzd29yZElucHV0VHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL1Bs
dWdpbkRvY3VtZW50LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
IGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA3ZmE0MzRiYzJhNjM5ZDgwM2QyZTQ4
N2FlZTZlNGYxNDNiYzViMDc1Li4wNTI0YzRhOTc5MzM2Y2NjMmVkYzY0YWYwODg0ZTQ5ZmFkYjVl
NjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKQEAgLTg3Miw2ICs4NzIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBo
dG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwIFwKICAgICBodG1sL3NoYWRvdy9T
bGlkZXJUaHVtYkVsZW1lbnQuY3BwIFwKICAgICBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuY3BwIFwKKyAgICBodG1sL3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVu
dC5jcHAgXAogICAgIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgXAogICAgIGluc3BlY3Rv
ci9Db250ZW50U2VhcmNoVXRpbHMuY3BwIFwKICAgICBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcCBc
CkBAIC0xOTYxLDYgKzE5NjIsNyBAQCBIRUFERVJTICs9IFwKICAgICBodG1sL3NoYWRvdy9IVE1M
U2hhZG93RWxlbWVudC5oIFwKICAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5o
IFwKICAgICBodG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5oIFwKKyAgICBodG1sL3No
YWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5oIFwKICAgICBodG1sL3RyYWNrL0xvYWRh
YmxlVGV4dFRyYWNrLmggXAogICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrLmggXAogICAgIGh0bWwv
dHJhY2svVGV4dFRyYWNrQ3VlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDA2YjlmNjEyNmIzZDkw
ZWFmYzBmYzY3N2E2YWM5OTZiZjdhZDA3N2EuLjM4ZGJiZDExN2U3N2ZjZmIxNjMzYzc5YjBjODVl
ZTBjMTZlNGZjYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTU2MjQsNiArNTYyNCw4IEBACiAgICAg
ICAgICAgICAnaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgnLAogICAgICAgICAgICAg
J2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAnLAogICAgICAgICAgICAg
J2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oJywKKyAgICAgICAgICAgICdo
dG1sL3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5jcHAnLAorICAgICAgICAgICAg
J2h0bWwvc2hhZG93L1RleHRGaWVsZERlY29yYXRpb25FbGVtZW50LmgnLAogICAgICAgICAgICAg
J2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwJywKICAgICAgICAgICAgICdodG1sL3Ry
YWNrL0xvYWRhYmxlVGV4dFRyYWNrLmgnLAogICAgICAgICAgICAgJ2h0bWwvdHJhY2svVGV4dFRy
YWNrLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CmluZGV4IDZhYzk3YTUyZWRlNDE1MmFiOWIwNDg1YjExYjllNmNhMzQ1Zjk2MGYuLjA2NjAyMDhl
MGUwYzRiOTUzNTNiNDRhZmJiYWQwNDJhZTExMzRhNGYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC02MjA1Miw2ICs2MjA1MiwxNCBAQAogCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcc2hhZG93XFRleHRDb250cm9sSW5uZXJFbGVtZW50cy5o
IgogCQkJCQk+CiAJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aHRtbFxzaGFkb3dcVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQuY3BwIgorCQkJCQk+CisJCQkJ
PC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcVGV4
dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KIAkJCTwvRmls
dGVyPgogCQk8L0ZpbHRlcj4KIAkJPEZpbHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE1ZGY0YmUxMzYzMjFkYmQ5NmMyN2Nm
MTllNzRmYjYwMTlmMzZjNGUuLmRmYWZjMWVlNTY1ZTNhNzc5N2VhNjRjYjhjMjA1YTYwNTZhMGU1
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTYwNjYsNiArNjA2Niw4IEBACiAJCUY1QzA0MUU1MEZGQ0E5NkQwMDgzOUQ0QSAv
KiBET01IVE1MRGF0YUxpc3RFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1QzA0MUUwMEZGQ0E5NkQwMDgzOUQ0QSAvKiBET01I
VE1MRGF0YUxpc3RFbGVtZW50SW50ZXJuYWwuaCAqLzsgfTsKIAkJRjVDMDQxRTYwRkZDQTk2RDAw
ODM5RDRBIC8qIEpTSFRNTERhdGFMaXN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNUMwNDFFMTBGRkNBOTZEMDA4MzlENEEgLyogSlNI
VE1MRGF0YUxpc3RFbGVtZW50LmNwcCAqLzsgfTsKIAkJRjVDMDQxRTcwRkZDQTk2RDAwODM5RDRB
IC8qIEpTSFRNTERhdGFMaXN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjVDMDQxRTIwRkZDQTk2RDAwODM5RDRBIC8qIEpTSFRNTERhdGFM
aXN0RWxlbWVudC5oICovOyB9OworCQlGNUMyRjlBNTE1MDlDQjg5MDBFMTIxQ0QgLyogVGV4dEZp
ZWxkRGVjb3JhdGlvbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjVDMkY5QTMxNTA5Q0I4OTAwRTEyMUNEIC8qIFRleHRGaWVsZERlY29y
YXRpb25FbGVtZW50LmNwcCAqLzsgfTsKKwkJRjVDMkY5QTYxNTA5Q0I4OTAwRTEyMUNEIC8qIFRl
eHRGaWVsZERlY29yYXRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNUMyRjlBNDE1MDlDQjg5MDBFMTIxQ0QgLyogVGV4dEZpZWxkRGVj
b3JhdGlvbkVsZW1lbnQuaCAqLzsgfTsKIAkJRjVDQzQyREMxMkY4MDFDQTAwRDVGN0UzIC8qIExv
Y2FsaXplZE51bWJlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY1Q0M0MkRCMTJGODAxQ0EwMEQ1RjdFMyAvKiBMb2NhbGl6ZWROdW1iZXJNYWMu
bW0gKi87IH07CiAJCUY3QTAzNEM0MTI2QkY2QkUwMDdEQzE5RSAvKiBGb250T3JpZW50YXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY3QTAzNEMz
MTI2QkY2QkUwMDdEQzE5RSAvKiBGb250T3JpZW50YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGOTE2QzQ4RDBEQjUxMEY4MDA3NkNEODMg
LyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjkxNkM0OEIwREI1MTBGODAwNzZDRDgzIC8qIEpT
WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCAqLzsgfTsKQEAgLTEzMTg1LDYgKzEzMTg3
LDggQEAKIAkJRjVDMjg2OTMwMjg0NkRDRDAxODYzNUNBIC8qIEFwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBBcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
azsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQlGNUMyODY5NDAyODQ2
RENEMDE4NjM1Q0EgLyogQ2FyYm9uLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ2FyYm9u
LmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCUY1QzI4Njk1MDI4NDZEQ0Qw
MTg2MzVDQSAvKiBDb2NvYS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENvY29hLmZyYW1l
d29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvY29hLmZyYW1ld29yazsg
c291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJRjVDMkY5QTMxNTA5Q0I4OTAwRTEyMUNE
IC8qIFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjVDMkY5QTQxNTA5Q0I4OTAwRTEyMUNEIC8qIFRleHRGaWVs
ZERlY29yYXRpb25FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRl
eHRGaWVsZERlY29yYXRpb25FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY1Q0M0MkRCMTJGODAxQ0EwMEQ1RjdFMyAvKiBMb2NhbGl6ZWROdW1iZXJNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2NhbGl6ZWROdW1iZXJNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY3QTAzNEMzMTI2QkY2QkUwMDdEQzE5RSAv
KiBGb250T3JpZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9u
dE9yaWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY4MjE2Mjk5MDI5
RjRGQjUwMTAwMDEzMSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgcGF0
aCA9IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKQEAgLTE0NDQzLDYgKzE0NDQ3LDggQEAKIAkJCQk0MTUwRjlFRjEyQjZFMEU3MDAw
OEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50LmggKi8sCiAJCQkJMTQyQjk3QzcxMzEzODk0MzAw
OEJFRjRCIC8qIFRleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgKi8sCiAJCQkJMTQyQjk3Qzgx
MzEzODk0MzAwOEJFRjRCIC8qIFRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oICovLAorCQkJCUY1
QzJGOUEzMTUwOUNCODkwMEUxMjFDRCAvKiBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5jcHAg
Ki8sCisJCQkJRjVDMkY5QTQxNTA5Q0I4OTAwRTEyMUNEIC8qIFRleHRGaWVsZERlY29yYXRpb25F
bGVtZW50LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHNoYWRvdzsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0yNDMyMSw2ICsyNDMyNyw3IEBACiAJCQkJQjJDM0RBNDkwRDAwNkMxRDAw
RUY2RjI2IC8qIFRleHRFbmNvZGluZ1JlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzNB
MTQzMDBCN0QxODg2MDBBNTNGRkQgLyogVGV4dEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NzdCNDFBMDEyRTY3NUE5MDA1NDM0M0QgLyogVGV4dEV2ZW50SW5wdXRUeXBlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGNUMyRjlBNjE1MDlDQjg5MDBFMTIxQ0QgLyogVGV4dEZpZWxkRGVjb3JhdGlv
bkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREQ4MTI1MUYxMkQwMDNFRjI2OSAv
KiBUZXh0RmllbGRJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTE4MDk5RTY0
OTIwMDU2RTU4MSAvKiBUZXh0R3JhbnVsYXJpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIz
RERBMTI1MUYxMkQwMDNFRjI2OSAvKiBUZXh0SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKQEAg
LTI3MzMzLDYgKzI3MzQwLDcgQEAKIAkJCQlDMTA1REE2MjBGM0FBNjhGMDAxREQ0NEYgLyogVGV4
dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJDM0RBNDgwRDAw
NkMxRDAwRUY2RjI2IC8qIFRleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTkzM0ExNDJFMEI3RDE4ODYwMEE1M0ZGRCAvKiBUZXh0RXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJRjVDMkY5QTUxNTA5Q0I4OTAwRTEyMUNEIC8qIFRleHRGaWVsZERlY29yYXRpb25F
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1NUIzREQ3MTI1MUYxMkQwMDNFRjI2OSAv
KiBUZXh0RmllbGRJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjU1QjNERDkxMjUx
RjEyRDAwM0VGMjY5IC8qIFRleHRJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMz
MDlFMUIwOTlFNjQ5MjAwNTZFNTgxIC8qIFRleHRJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdz
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCmluZGV4
IDdkODhjZWMzMjIxYjdmMGM2NzIwMWNiNWM5ZGU1ZThhODM2NTFjZDIuLmY0MWQ1ZjMwZmRhYTBl
YWI0NmQ0YjEzYTg5YjEwMmI3MWM2ZjNiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaApAQCAtNDk5LDYgKzQ5OSw5IEBAIHRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShDb250cm9sUGFydCBl
KQogICAgICAgICBjYXNlIFRleHRGaWVsZFBhcnQ6CiAgICAgICAgICAgICBtX3ZhbHVlLmlkZW50
ID0gQ1NTVmFsdWVUZXh0ZmllbGQ7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBU
ZXh0RmllbGREZWNvcmF0aW9uUGFydDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NW
YWx1ZVRleHRmaWVsZERlY29yYXRpb247CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBUZXh0QXJlYVBhcnQ6CiAgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVUZXh0
YXJlYTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlS2V5d29yZHMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jk
cy5pbgppbmRleCBhODA1ODFmNzViNjcwMzRjMmU3ZmQ5MzcxMmI3NTQ1NDM2NjIwMmY5Li5kOGQ4
MTUzZGI5OTZjMmU5YzMxMzMxMTBkMGY4NTI4ZTBjMDgwODMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVLZXl3b3Jkcy5pbgpAQCAtNjUyLDYgKzY1Miw3IEBAIHNlYXJjaGZpZWxkLXJlc3Vs
dHMtZGVjb3JhdGlvbgogc2VhcmNoZmllbGQtcmVzdWx0cy1idXR0b24KIHNlYXJjaGZpZWxkLWNh
bmNlbC1idXR0b24KIHRleHRmaWVsZAordGV4dGZpZWxkLWRlY29yYXRpb24KIHJlbGV2YW5jeS1s
ZXZlbC1pbmRpY2F0b3IKIGNvbnRpbnVvdXMtY2FwYWNpdHktbGV2ZWwtaW5kaWNhdG9yCiBkaXNj
cmV0ZS1jYXBhY2l0eS1sZXZlbC1pbmRpY2F0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDhjODI1
MDczZjQwOGRhZWMxZTM1OTk4NDU2MmFiNDUwNWIxMTllYTcuLjM4OTlhYjc1OTQ3M2JjN2EzMjcz
YmM1MjA2MmJhZDY0ZDQ2ODk0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzYwLDYgKzM2MCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNJblJhbmdlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNPdXRPZlJhbmdlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNGcmFtZUVsZW1lbnRCYXNlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0RmllbGREZWNvcmF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWluUmFu
Z2VFbmRQb2ludCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IGExNDliNjk1NzNlN2M5MjgyZTcxODBmYTU0
NmUxYTQwNTE3Njk3ZjYuLjhhNjRhODJkNGQxN2NmNjM0YzYwZGJjN2ZlMjMxYTMxM2E3YTRiMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTIyMSw3
ICsyMjEsNyBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgp
CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZWxlbWVudCgpLT5kb2N1bWVudCgpOwogICAgIFJl
ZlB0cjxSZW5kZXJUaGVtZT4gdGhlbWUgPSBkb2N1bWVudC0+cGFnZSgpID8gZG9jdW1lbnQtPnBh
Z2UoKS0+dGhlbWUoKSA6IFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKTsKICAgICBib29sIHNo
b3VsZEhhdmVTcGluQnV0dG9uID0gdGhlbWUtPnNob3VsZEhhdmVTcGluQnV0dG9uKGVsZW1lbnQo
KSk7Ci0gICAgYm9vbCBjcmVhdGVzQ29udGFpbmVyID0gc2hvdWxkSGF2ZVNwaW5CdXR0b24gfHwg
bmVlZHNDb250YWluZXIoKTsKKyAgICBib29sIGNyZWF0ZXNDb250YWluZXIgPSBzaG91bGRIYXZl
U3BpbkJ1dHRvbiB8fCBuZWVkc0NvbnRhaW5lcigpIHx8IHRoZW1lLT53aWxsQWRkVGV4dEZpZWxk
RGVjb3JhdGlvbnNUbyhlbGVtZW50KCkpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgbV9pbm5lclRleHQgPSBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCk7CkBAIC0yNTEsNiArMjUxLDggQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0
ZVNoYWRvd1N1YnRyZWUoKQogICAgICAgICBtX2lubmVyU3BpbkJ1dHRvbiA9IFNwaW5CdXR0b25F
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgICAgICBtX2NvbnRhaW5lci0+YXBwZW5kQ2hp
bGQobV9pbm5lclNwaW5CdXR0b24sIGVjKTsKICAgICB9CisKKyAgICB0aGVtZS0+YWRkVGV4dEZp
ZWxkRGVjb3JhdGlvbnNUbyhlbGVtZW50KCksIG1fY29udGFpbmVyLmdldCgpLCBtX2lubmVyQmxv
Y2suZ2V0KCkpOwogfQogCiBIVE1MRWxlbWVudCogVGV4dEZpZWxkSW5wdXRUeXBlOjpjb250YWlu
ZXJFbGVtZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1RleHRGaWVsZERlY29yYXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1RleHRGaWVsZERlY29yYXRpb25FbGVtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzJjMDMyOTNk
ZjQzNTE2YTI5ODdiZjEyZTk4MmMzNTAyYTc4OTE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQuY3BwCkBAIC0w
LDAgKzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRleHRGaWVsZERlY29y
YXRpb25FbGVtZW50LmgiCisKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVk
ZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgorI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNp
bmNsdWRlICJNb3VzZUV2ZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGV4dEZp
ZWxkRGVjb3JhdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBUZXh0RmllbGREZWNvcmF0b3I6OmFkanVzdFRl
eHRGaWVsZEhlaWdodChMYXlvdXRVbml0JiwgTGF5b3V0VW5pdCYpCit7Cit9CisKK3ZvaWQgVGV4
dEZpZWxkRGVjb3JhdG9yOjphZGp1c3RTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5
bGUqLCBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudCopCit7Cit9CisKK2Jvb2wgVGV4dEZpZWxk
RGVjb3JhdG9yOjpwYWludChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBM
YXlvdXRSZWN0JiwgSFRNTElucHV0RWxlbWVudCosIFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50
KikKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0Rmll
bGREZWNvcmF0b3I6OnNoYWRvd1BzZXVkb0lkKCkKK3sKKyAgICByZXR1cm4gbnVsbEF0b207Cit9
CisKK3ZvaWQgVGV4dEZpZWxkRGVjb3JhdG9yOjpoYW5kbGVNb3VzZURvd24oTW91c2VFdmVudCos
IEhUTUxJbnB1dEVsZW1lbnQqLCBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudCopCit7Cit9CisK
K3ZvaWQgVGV4dEZpZWxkRGVjb3JhdG9yOjpoYW5kbGVNb3VzZVVwKE1vdXNlRXZlbnQqLCBIVE1M
SW5wdXRFbGVtZW50KiwgVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQqKQoreworfQorCit2b2lk
IFRleHRGaWVsZERlY29yYXRvcjo6aGFuZGxlQ2xpY2soTW91c2VFdmVudCosIEhUTUxJbnB1dEVs
ZW1lbnQqLCBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudCopCit7Cit9CisKK1RleHRGaWVsZERl
Y29yYXRvcjo6flRleHRGaWVsZERlY29yYXRvcigpCit7Cit9CisKKy8vIFRleHRGaWVsZERlY29y
YXRpb25FbGVtZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQ6OlRleHRG
aWVsZERlY29yYXRpb25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgVGV4dEZpZWxkRGVjb3Jh
dG9yKiBkZWNvcmF0b3IpCisgICAgOiBIVE1MRGl2RWxlbWVudChIVE1MTmFtZXM6OmRpdlRhZywg
ZG9jdW1lbnQpCisgICAgLCBtX3RleHRGaWVsZERlY29yYXRvcihkZWNvcmF0b3IpCit7CisgICAg
QVNTRVJUKGRlY29yYXRvcik7CisgICAgaWYgKGRlY29yYXRvci0+dXNlc1RleHRGaWVsZERlY29y
YXRpb25BcHBlYXJhbmNlKCkpCisgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlXZWJraXRBcHBlYXJhbmNlLCBDU1NWYWx1ZVRleHRmaWVsZERlY29yYXRpb24sIHRydWUp
OworfQorCitQYXNzUmVmUHRyPFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50PiBUZXh0RmllbGRE
ZWNvcmF0aW9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgVGV4dEZpZWxkRGVj
b3JhdG9yKiBkZWNvcmF0b3IpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0RmllbGRE
ZWNvcmF0aW9uRWxlbWVudChkb2N1bWVudCwgZGVjb3JhdG9yKSk7Cit9CisKK2Jvb2wgVGV4dEZp
ZWxkRGVjb3JhdGlvbkVsZW1lbnQ6OmlzVGV4dEZpZWxkRGVjb3JhdGlvbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVGV4dEZpZWxkRGVjb3Jh
dGlvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90ZXh0
RmllbGREZWNvcmF0b3ItPnNoYWRvd1BzZXVkb0lkKCk7Cit9CisKK2Jvb2wgVGV4dEZpZWxkRGVj
b3JhdGlvbkVsZW1lbnQ6OmlzTW91c2VGb2N1c2FibGUoKSBjb25zdAoreworICAgIHJldHVybiBm
YWxzZTsKK30KKwordm9pZCBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCogZXZlbnQpCit7CisgICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IGlu
cHV0KHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihzaGFkb3dBbmNlc3Rvck5vZGUoKSkp
OworICAgIGlmIChpbnB1dC0+ZGlzYWJsZWQoKSB8fCBpbnB1dC0+cmVhZE9ubHkoKSB8fCAhZXZl
bnQtPmlzTW91c2VFdmVudCgpKSB7CisgICAgICAgIGlmICghZXZlbnQtPmRlZmF1bHRIYW5kbGVk
KCkpCisgICAgICAgICAgICBIVE1MRGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVu
dCk7CisgICAgfQorCisgICAgTW91c2VFdmVudCogbW91c2VFdmVudCA9IHN0YXRpY19jYXN0PE1v
dXNlRXZlbnQqPihldmVudCk7CisgICAgUmVmUHRyPFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50
PiBwcm90ZWN0b3IodGhpcyk7CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
Lm1vdXNlZG93bkV2ZW50KQorICAgICAgICBtX3RleHRGaWVsZERlY29yYXRvci0+aGFuZGxlTW91
c2VEb3duKG1vdXNlRXZlbnQsIGlucHV0LmdldCgpLCB0aGlzKTsKKyAgICBlbHNlIGlmIChldmVu
dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpCisgICAgICAgIG1fdGV4dEZp
ZWxkRGVjb3JhdG9yLT5oYW5kbGVNb3VzZVVwKG1vdXNlRXZlbnQsIGlucHV0LmdldCgpLCB0aGlz
KTsKKyAgICBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50
KQorICAgICAgICBtX3RleHRGaWVsZERlY29yYXRvci0+aGFuZGxlQ2xpY2sobW91c2VFdmVudCwg
aW5wdXQuZ2V0KCksIHRoaXMpOworCisgICAgaWYgKCFldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkK
KyAgICAgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZGE4MGQx
YzYwZWI4YjBiNzY5MTc1NTViYzM3ZjQ5Y2E3NDI2NzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQuaApAQCAt
MCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnRfaAorI2RlZmlu
ZSBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudF9oCisKKyNpbmNsdWRlICJIVE1MRGl2RWxlbWVu
dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7Citj
bGFzcyBNb3VzZUV2ZW50OworY2xhc3MgVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQ7CitzdHJ1
Y3QgUGFpbnRJbmZvOworCitjbGFzcyBUZXh0RmllbGREZWNvcmF0b3IgeworcHVibGljOgorICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIFRleHRGaWVsZERlY29yYXRvciB3YW50cyB0byBhZGQg
YQorICAgIC8vIGRlY29yYXRpb24gdG8gdGhlIHNwZWNpZmllZCB0ZXh0IGZpZWxkLgorICAgIHZp
cnR1YWwgYm9vbCB3aWxsQWRkRGVjb3JhdGlvblRvKEhUTUxJbnB1dEVsZW1lbnQqKSA9IDA7Cisg
ICAgLy8gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiBzaG91bGQgYWRkIGFuIGlu
c3RhbmNlIG9mCisgICAgLy8gVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQgb3IgYW4gaW5zdGFu
Y2Ugb2YgYSBzdWJjbGFzcyBvZgorICAgIC8vIFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50IHRv
IHRoZSBjb250YWluZXIgZWxlbWVudC4gdGV4dEJsb2NrIGlzIGEgY2hpbGQKKyAgICAvLyBvZiBj
b250YWluZXIsIGFuZCBpdCByZXByZXNlbnRzIGFuIGVkaXRhYmxlIHRleHQgb2YgdGhlIHRleHQg
ZmllbGQuCisgICAgdmlydHVhbCB2b2lkIGFkZERlY29yYXRpb25UbyhIVE1MSW5wdXRFbGVtZW50
KiwgSFRNTEVsZW1lbnQqIGNvbnRhaW5lciwgSFRNTEVsZW1lbnQqIHRleHRCbG9jaykgPSAwOwor
CisgICAgLy8gSWYgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSwKKyAgICAvLyAtd2Via2l0LWFw
cGVhcmFuY2U6dGV4dGZpZWxkLWRlY29yYXRpb24gaXMgYXBwbGllZCBhbmQgdGhlCisgICAgLy8g
Zm9sbG93aW5nIGFkanVzdFN0eWxlKCkgYW5kIHBhaW50KCkgYXJlIGNhbGxlZC4KKyAgICAvLyBJ
ZiB0aGUgZnVuY3Rpb24gcmV0dXJucyBmYWxzZSwgdGhlIHR3byBmdW5jdGlvbnMgYXJlIG5vdCBj
YWxsZWQKKyAgICAvLyBhbmQgdGhlIHVzdWFsIENTUyBzdHlsaW5nIGlzIGFwcGxpZWQuIFlvdSBt
aWdodCB3YW50IHRvCisgICAgLy8gb3ZlcnJpZGUgc2hhZG93UHNldWRvSWQoKSBhbmQgYWRkIGRl
ZmF1bHQgc3R5bGUgdG8gaHRtbC5jc3MuCisgICAgdmlydHVhbCBib29sIHVzZXNUZXh0RmllbGRE
ZWNvcmF0aW9uQXBwZWFyYW5jZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U3R5bGUo
Q1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1l
bnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJ
bmZvJiwgY29uc3QgTGF5b3V0UmVjdCYsIEhUTUxJbnB1dEVsZW1lbnQqLCBUZXh0RmllbGREZWNv
cmF0aW9uRWxlbWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQ
c2V1ZG9JZCgpOworCisgICAgLy8gSWYgdGhlIGRlY29yYXRpb24gbmVlZHMgbGFyZ2VyIGNvbnRl
bnQgaGVpZ2h0IG9yIGJvZGVyK3BhZGRpbmcrbWFyZ2luCisgICAgLy8gaGVpZ2h0LCB1cGRhdGUg
dGhlIHNwZWNpZmllZCB2YWx1ZS4KKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEZpZWxkSGVp
Z2h0KExheW91dFVuaXQmIGNvbnRlbnRIZWlnaHQsIExheW91dFVuaXQmIG5vbkNvbnRlbnRIZWln
aHQpOworCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZU1vdXNlRG93bihNb3VzZUV2ZW50KiwgSFRN
TElucHV0RWxlbWVudCosIFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50Kik7CisgICAgdmlydHVh
bCB2b2lkIGhhbmRsZU1vdXNlVXAoTW91c2VFdmVudCosIEhUTUxJbnB1dEVsZW1lbnQqLCBUZXh0
RmllbGREZWNvcmF0aW9uRWxlbWVudCopOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVDbGljayhN
b3VzZUV2ZW50KiwgSFRNTElucHV0RWxlbWVudCosIFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50
Kik7CisKKyAgICB2aXJ0dWFsIH5UZXh0RmllbGREZWNvcmF0b3IoKTsKK307CisKKy8vIEFuIGlu
c3RhbmNlIG9mIFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50IG11c3QgYmUgaW4gYSBzaGFkb3cg
dHJlZSBvZiBhbiBIVE1MSW5wdXRFbGVtZW50LgorY2xhc3MgVGV4dEZpZWxkRGVjb3JhdGlvbkVs
ZW1lbnQgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqLCBUZXh0
RmllbGREZWNvcmF0b3IqKTsKKyAgICBUZXh0RmllbGREZWNvcmF0b3IqIHRleHRGaWVsZERlY29y
YXRvcigpIHsgcmV0dXJuIG1fdGV4dEZpZWxkRGVjb3JhdG9yOyB9CisKK3Byb3RlY3RlZDoKKyAg
ICBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudChEb2N1bWVudCosIFRleHRGaWVsZERlY29yYXRv
ciopOworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJ
REU7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzVGV4dEZpZWxkRGVjb3JhdGlvbigp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQ
c2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlRm9jdXNh
YmxlKCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICBUZXh0RmllbGREZWNvcmF0b3IqIG1fdGV4dEZp
ZWxkRGVjb3JhdG9yOworfTsKKworaW5saW5lIFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50KiB0
b1RleHRGaWVsZERlY29yYXRpb25FbGVtZW50KE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5v
ZGUpOworICAgIEFTU0VSVChub2RlLT5pc0VsZW1lbnROb2RlKCkpOworICAgIEFTU0VSVChzdGF0
aWNfY2FzdDxFbGVtZW50Kj4obm9kZSktPmlzVGV4dEZpZWxkRGVjb3JhdGlvbigpKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQqPihub2RlKTsKK30K
KworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5
cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmgKaW5kZXggZjI1MTVm
YzFhOGRkNjIwODE4OWViMTc1MjFmNTAxNmE4MTljNjFhMC4uMDEyZjQxNGU5ODI0OGVkOTVmNzc4
MGE2Zjk3NmM3MTkxNjQxZDFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VGhlbWVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaApA
QCAtNTYsNyArNTYsNyBAQCBlbnVtIENvbnRyb2xQYXJ0IHsKICAgICBTbGlkZXJIb3Jpem9udGFs
UGFydCwgU2xpZGVyVmVydGljYWxQYXJ0LCBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0LAogICAg
IFNsaWRlclRodW1iVmVydGljYWxQYXJ0LCBDYXJldFBhcnQsIFNlYXJjaEZpZWxkUGFydCwgU2Vh
cmNoRmllbGREZWNvcmF0aW9uUGFydCwKICAgICBTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9u
UGFydCwgU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uUGFydCwKLSAgICBTZWFyY2hGaWVsZENhbmNl
bEJ1dHRvblBhcnQsIFRleHRGaWVsZFBhcnQsCisgICAgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25Q
YXJ0LCBUZXh0RmllbGRQYXJ0LCBUZXh0RmllbGREZWNvcmF0aW9uUGFydCwKICAgICBSZWxldmFu
Y3lMZXZlbEluZGljYXRvclBhcnQsIENvbnRpbnVvdXNDYXBhY2l0eUxldmVsSW5kaWNhdG9yUGFy
dCwgRGlzY3JldGVDYXBhY2l0eUxldmVsSW5kaWNhdG9yUGFydCwgUmF0aW5nTGV2ZWxJbmRpY2F0
b3JQYXJ0LAogICAgIFRleHRBcmVhUGFydCwgQ2Fwc0xvY2tJbmRpY2F0b3JQYXJ0CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lLmNwcAppbmRleCBlN2VjZWRmYTY0MjRmMjAwNjQ1MWQ3MGY5NzMyMWE3NDkwZDc4OTgy
Li41ODA4N2MxYzYyYmI5ODc5NGM5YmU4NzI3MzI1MGNlNzFkZjU2NjUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
LmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
U2ltcGxlRm9udERhdGEuaCIKICNpbmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCIK
KyNpbmNsdWRlICJUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5oIgogCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCkBAIC00NDAsNiArNDQxLDEzIEBAIExheW91dFVuaXQgUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lOjpjb21wdXRlQ29udHJvbEhlaWdodChMYXlvdXRVbml0IGxpbmVIZWlnCiAg
ICAgICAgIGxpbmVIZWlnaHQgPSBtYXgobGluZUhlaWdodCwgY2FuY2VsUmVuZGVyZXItPmhlaWdo
dCgpKTsKICAgICB9CiAKKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gY29udGFpbmVyRWxlbWVudCgp
ID8gY29udGFpbmVyRWxlbWVudCgpLT5maXJzdENoaWxkKCkgOiAwOyBjaGlsZDsgY2hpbGQgPSBj
aGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoIWNoaWxkLT5pc0VsZW1lbnROb2Rl
KCkgfHwgIXN0YXRpY19jYXN0PEVsZW1lbnQqPihjaGlsZCktPmlzVGV4dEZpZWxkRGVjb3JhdGlv
bigpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFRleHRGaWVsZERlY29yYXRpb25F
bGVtZW50KiBkZWNvcmF0aW9uID0gdG9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudChjaGlsZCk7
CisgICAgICAgIGRlY29yYXRpb24tPnRleHRGaWVsZERlY29yYXRvcigpLT5hZGp1c3RUZXh0Rmll
bGRIZWlnaHQobGluZUhlaWdodCwgbm9uQ29udGVudEhlaWdodCk7CisgICAgfQorCiAgICAgcmV0
dXJuIGxpbmVIZWlnaHQgKyBub25Db250ZW50SGVpZ2h0OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCA4ZmQyZDZjOGIxYjQ4ODBmNDdhZTM5YzA1MjFm
NmQxMDJhNjBmNTMyLi42ZTEwNWQyNWJhZDg5Y2E5ZTcxN2U0MDc3YTBlMjFjMjZkYzE0YTM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTQyLDYgKzQyLDcg
QEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0cmluZ1RydW5jYXRvci5oIgog
I2luY2x1ZGUgIlRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgorI2luY2x1ZGUgIlRleHRGaWVs
ZERlY29yYXRpb25FbGVtZW50LmgiCiAKICNpZiBFTkFCTEUoTUVURVJfVEFHKQogI2luY2x1ZGUg
IkhUTUxNZXRlckVsZW1lbnQuaCIKQEAgLTE5Nyw2ICsxOTgsMTIgQEAgdm9pZCBSZW5kZXJUaGVt
ZTo6YWRqdXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBz
dHlsZSwgRWwKICNlbmRpZgogICAgICAgICBjYXNlIFRleHRGaWVsZFBhcnQ6CiAgICAgICAgICAg
ICByZXR1cm4gYWRqdXN0VGV4dEZpZWxkU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlKTsKKyAgICAg
ICAgY2FzZSBUZXh0RmllbGREZWNvcmF0aW9uUGFydDoKKyAgICAgICAgICAgIGlmIChlICYmIGUt
PmlzVGV4dEZpZWxkRGVjb3JhdGlvbigpKSB7CisgICAgICAgICAgICAgICAgVGV4dEZpZWxkRGVj
b3JhdGlvbkVsZW1lbnQqIGRlY29yYXRpb24gPSB0b1RleHRGaWVsZERlY29yYXRpb25FbGVtZW50
KGUpOworICAgICAgICAgICAgICAgIGRlY29yYXRpb24tPnRleHRGaWVsZERlY29yYXRvcigpLT5h
ZGp1c3RTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGRlY29yYXRpb24pOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFRleHRBcmVhUGFydDoKICAgICAgICAg
ICAgIHJldHVybiBhZGp1c3RUZXh0QXJlYVN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZSk7CiAgICAg
ICAgIGNhc2UgTWVudWxpc3RQYXJ0OgpAQCAtMzY0LDYgKzM3MSwxNSBAQCBib29sIFJlbmRlclRo
ZW1lOjpwYWludChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdQogICAgICAgICAgICAgcmV0dXJuIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVj
b3JhdGlvbihvLCBwYWludEluZm8sIHIpOwogICAgICAgICBjYXNlIFNlYXJjaEZpZWxkUmVzdWx0
c0J1dHRvblBhcnQ6CiAgICAgICAgICAgICByZXR1cm4gcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNC
dXR0b24obywgcGFpbnRJbmZvLCByKTsKKyAgICAgICAgY2FzZSBUZXh0RmllbGREZWNvcmF0aW9u
UGFydDoKKyAgICAgICAgICAgIGlmIChvLT5ub2RlKCkgJiYgby0+bm9kZSgpLT5pc0VsZW1lbnRO
b2RlKCkgJiYgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG8tPm5vZGUoKSktPmlzVGV4dEZpZWxkRGVj
b3JhdGlvbigpKSB7CisgICAgICAgICAgICAgICAgVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQq
IGRlY29yYXRpb24gPSB0b1RleHRGaWVsZERlY29yYXRpb25FbGVtZW50KG8tPm5vZGUoKSk7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKGRlY29yYXRpb24tPnNoYWRvd0FuY2VzdG9yTm9kZSgpKTsK
KyAgICAgICAgICAgICAgICBBU1NFUlQoZGVjb3JhdGlvbi0+c2hhZG93QW5jZXN0b3JOb2RlKCkt
Pmhhc1RhZ05hbWUoaW5wdXRUYWcpKTsKKyAgICAgICAgICAgICAgICBIVE1MSW5wdXRFbGVtZW50
KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihkZWNvcmF0aW9uLT5zaGFk
b3dBbmNlc3Rvck5vZGUoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGRlY29yYXRpb24tPnRl
eHRGaWVsZERlY29yYXRvcigpLT5wYWludChvLCBwYWludEluZm8sIHIsIGlucHV0LCBkZWNvcmF0
aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogI2lmIEVOQUJM
RShJTlBVVF9TUEVFQ0gpCiAgICAgICAgIGNhc2UgSW5wdXRTcGVlY2hCdXR0b25QYXJ0OgogICAg
ICAgICAgICAgcmV0dXJuIHBhaW50SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbihvLCBwYWludEluZm8s
IHIpOwpAQCAtOTYyLDYgKzk3OCwxNSBAQCBib29sIFJlbmRlclRoZW1lOjpzaG91bGRIYXZlU3Bp
bkJ1dHRvbihIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpIGNvbnN0CiAgICAgcmV0dXJu
IGlucHV0RWxlbWVudC0+aXNTdGVwcGFibGUoKSAmJiAhaW5wdXRFbGVtZW50LT5pc1JhbmdlQ29u
dHJvbCgpOwogfQogCitib29sIFJlbmRlclRoZW1lOjp3aWxsQWRkVGV4dEZpZWxkRGVjb3JhdGlv
bnNUbyhIVE1MSW5wdXRFbGVtZW50KikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQg
UmVuZGVyVGhlbWU6OmFkZFRleHRGaWVsZERlY29yYXRpb25zVG8oSFRNTElucHV0RWxlbWVudCos
IEhUTUxFbGVtZW50KiwgSFRNTEVsZW1lbnQqKQoreworfQorCiB2b2lkIFJlbmRlclRoZW1lOjph
ZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSos
IEVsZW1lbnQqKSBjb25zdAogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUu
aAppbmRleCA0NGVmMTI0MWVhNzNiNDkwYmY4ODkwZDcxODlhZTkyZGI0OTcyYTBlLi5iMjM1MmEw
NzE3N2FlZTkzZmVjYzJlMDA4MDZjODIyOWRhNjE0NjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWUuaApAQCAtMjA4LDYgKzIwOCwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
dmlydHVhbCBib29sIHNob3VsZFNob3dQbGFjZWhvbGRlcldoZW5Gb2N1c2VkKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSGF2ZVNwaW5CdXR0b24oSFRN
TElucHV0RWxlbWVudCopIGNvbnN0OworICAgIC8vIFRoZSBhcmd1bWVudCBpcyBhbHdheXMgbm9u
LTAuCisgICAgdmlydHVhbCBib29sIHdpbGxBZGRUZXh0RmllbGREZWNvcmF0aW9uc1RvKEhUTUxJ
bnB1dEVsZW1lbnQqKTsKKyAgICAvLyBBbGwgb2YgdGhlIGFyZ3VtZW50cyBhcmUgYWx3YXlzIG5v
bi0wLgorICAgIHZpcnR1YWwgdm9pZCBhZGRUZXh0RmllbGREZWNvcmF0aW9uc1RvKEhUTUxJbnB1
dEVsZW1lbnQqLCBIVE1MRWxlbWVudCogY29udGFpbmVyLCBIVE1MRWxlbWVudCogdGV4dEJsb2Nr
KTsKIAogICAgIC8vIEZ1bmN0aW9ucyBmb3IgPHNlbGVjdD4gZWxlbWVudHMuCiAgICAgdmlydHVh
bCBib29sIGRlbGVnYXRlc01lbnVMaXN0UmVuZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133248</attachid>
            <date>2012-03-22 06:55:36 -0700</date>
            <delta_ts>2012-03-23 00:27:53 -0700</delta_ts>
            <desc>WIP 2</desc>
            <filename>bug-80580-20120322225533.patch</filename>
            <type>text/plain</type>
            <size>15518</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTIwYzk5ZDU1MDMzM2Vk
MjE2N2ExNjE3NWJjYTYyNGQxNTM5YjRmOS4uZGZkNGVhY2FiZmUyYzc0NGYxNjI2YWYxOTMwYTg2
ZGVmMTc4ZmYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTAzLTIzICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgVGV4dEZpZWxkRGVj
b3JhdG9yIGFuZCBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA1ODAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAg
ICAgICAqIFdlYkNvcmUuZ3lwaTogQWRkIFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50LmNwcCBh
bmQgVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQuaAorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojppc1RleHRGaWVsZERlY29yYXRpb24pOgorICAg
ICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAgICAgIENhbGxzIENo
cm9tZUNsaWVudDo6d2lsbEFkZFRleHRGaWVsZERlY29yYXRpb25zVG8oKSBhbmQgYWRkVGV4dEZp
ZWxkRGVjb3JhdGlvbnNUbygpLgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRGaWVsZERlY29y
YXRpb25FbGVtZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGREZWNv
cmF0b3I6On5UZXh0RmllbGREZWNvcmF0b3IpOgorICAgICAgICAoUmVuZGVyVGV4dEZpZWxkRGVj
b3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0RmllbGREZWNvcmF0aW9uOjpS
ZW5kZXJUZXh0RmllbGREZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZERl
Y29yYXRpb25FbGVtZW50OjpUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRGaWVsZERlY29yYXRpb25FbGVtZW50Ojppc1RleHRGaWVsZERlY29yYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQ6OmN1c3RvbVN0
eWxlRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkRGVjb3JhdGlvbkVs
ZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZERlY29y
YXRpb25FbGVtZW50Ojppc01vdXNlRm9jdXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRG
aWVsZERlY29yYXRpb25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgRGVs
ZWdhdGUgYSBjbGljayBldmVudCB0byB0aGUgY29ycmVzcG9uZGluZyBmdW5jdGlvbiBvZiBUZXh0
RmllbGREZWNvcmF0b3IuCisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dEZpZWxkRGVjb3JhdGlv
bkVsZW1lbnQuaDogQWRkZWQuCisgICAgICAgIChUZXh0RmllbGREZWNvcmF0b3IpOgorICAgICAg
ICAoVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZp
ZWxkRGVjb3JhdGlvbkVsZW1lbnQ6OnRleHRGaWVsZERlY29yYXRvcik6CisgICAgICAgIChXZWJD
b3JlOjp0b1RleHRGaWVsZERlY29yYXRpb25FbGVtZW50KToKKyAgICAgICAgKiBwYWdlL0Nocm9t
ZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50Ojp3aWxsQWRkVGV4dEZp
ZWxkRGVjb3JhdGlvbnNUbyk6IEFkZCBhbiBlbXB0eSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudDo6YWRkVGV4dEZpZWxkRGVjb3JhdGlvbnNUbyk6IGRpdHRv
LgorCiAyMDEyLTAzLTIyICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBFeHBhbmQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpjb250cm9sQ2xpcFJlY3Qo
KSB0byBjb250YWluIGNvbnRlbnRSZWN0KCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZjAwMTQwZWMy
MjNjZDQ0MTE4M2UxZThlN2JlNDU5NDMxOGIwMGZhZi4uMTllMzI1N2U3NTZjNjQzOTRjMmYxOTdk
MDA4MWEyZDliYzcwNmE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTY3Niw2ICs1Njc2LDggQEAK
ICAgICAgICAgICAgICdodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCcsCiAgICAgICAg
ICAgICAnaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCcsCiAgICAgICAg
ICAgICAnaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgnLAorICAgICAgICAg
ICAgJ2h0bWwvc2hhZG93L1RleHRGaWVsZERlY29yYXRpb25FbGVtZW50LmNwcCcsCisgICAgICAg
ICAgICAnaHRtbC9zaGFkb3cvVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQuaCcsCiAgICAgICAg
ICAgICAnaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAnLAogICAgICAgICAgICAgJ2h0
bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaCcsCiAgICAgICAgICAgICAnaHRtbC90cmFjay9U
ZXh0VHJhY2suY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGRlZjQ4ZTk0Y2Q4OWYwZGZjMmEy
NGZjZGQ0NjY2ODMxMTFlNGFmMzcuLjM0ZjZlMWUxMjM4NTJhNGNiMjg4MDMwNmU4NjQ1YTVmOTM4
M2U4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzYxLDYgKzM2MSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgaXNJblJhbmdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIGJvb2wgaXNPdXRPZlJhbmdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIGJvb2wgaXNGcmFtZUVsZW1lbnRCYXNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0RmllbGREZWNvcmF0aW9uKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9U
ZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1
dFR5cGUuY3BwCmluZGV4IGExNDliNjk1NzNlN2M5MjgyZTcxODBmYTU0NmUxYTQwNTE3Njk3ZjYu
LmUzYjAxMWJlZWUzZTAyZjIyNWVhZGJkOTAwMDcxNTRiMjJlZTU3YjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNs
dWRlICJUZXh0RmllbGRJbnB1dFR5cGUuaCIKIAogI2luY2x1ZGUgIkJlZm9yZVRleHRJbnNlcnRl
ZEV2ZW50LmgiCisjaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiRm9ybURhdGFMaXN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRl
ICJIVE1MSW5wdXRFbGVtZW50LmgiCkBAIC0yMjAsOCArMjIyLDkgQEAgdm9pZCBUZXh0RmllbGRJ
bnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gZWxlbWVudCgpLT5kb2N1bWVudCgpOwogICAgIFJlZlB0cjxSZW5kZXJUaGVtZT4gdGhlbWUg
PSBkb2N1bWVudC0+cGFnZSgpID8gZG9jdW1lbnQtPnBhZ2UoKS0+dGhlbWUoKSA6IFJlbmRlclRo
ZW1lOjpkZWZhdWx0VGhlbWUoKTsKKyAgICBDaHJvbWVDbGllbnQqIGNocm9tZUNsaWVudCA9IGRv
Y3VtZW50LT5wYWdlKCkgPyBkb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCkgOiAw
OwogICAgIGJvb2wgc2hvdWxkSGF2ZVNwaW5CdXR0b24gPSB0aGVtZS0+c2hvdWxkSGF2ZVNwaW5C
dXR0b24oZWxlbWVudCgpKTsKLSAgICBib29sIGNyZWF0ZXNDb250YWluZXIgPSBzaG91bGRIYXZl
U3BpbkJ1dHRvbiB8fCBuZWVkc0NvbnRhaW5lcigpOworICAgIGJvb2wgY3JlYXRlc0NvbnRhaW5l
ciA9IHNob3VsZEhhdmVTcGluQnV0dG9uIHx8IG5lZWRzQ29udGFpbmVyKCkgfHwgKGNocm9tZUNs
aWVudCAmJiBjaHJvbWVDbGllbnQtPndpbGxBZGRUZXh0RmllbGREZWNvcmF0aW9uc1RvKGVsZW1l
bnQoKSkpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgbV9pbm5lclRleHQgPSBU
ZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CkBAIC0yNTEsNiAr
MjU0LDkgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQog
ICAgICAgICBtX2lubmVyU3BpbkJ1dHRvbiA9IFNwaW5CdXR0b25FbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQpOwogICAgICAgICBtX2NvbnRhaW5lci0+YXBwZW5kQ2hpbGQobV9pbm5lclNwaW5CdXR0
b24sIGVjKTsKICAgICB9CisKKyAgICBpZiAoY2hyb21lQ2xpZW50KQorICAgICAgICBjaHJvbWVD
bGllbnQtPmFkZFRleHRGaWVsZERlY29yYXRpb25zVG8oZWxlbWVudCgpKTsKIH0KIAogSFRNTEVs
ZW1lbnQqIFRleHRGaWVsZElucHV0VHlwZTo6Y29udGFpbmVyRWxlbWVudCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9u
RWxlbWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzYzZWI5Y2ZlNTNhNmMwMTY4NWZhMGRjYmVhYWRkZDQx
YmZmZTFjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Rl
eHRGaWVsZERlY29yYXRpb25FbGVtZW50LmNwcApAQCAtMCwwICsxLDEzOSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5oIgorCisjaW5j
bHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIK
KyNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiTW91c2VFdmVudC5oIgor
I2luY2x1ZGUgIlJlbmRlclJlcGxhY2VkLmgiCisjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGV4dEZpZWxkRGVjb3JhdG9yIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGV4
dEZpZWxkRGVjb3JhdG9yOjp+VGV4dEZpZWxkRGVjb3JhdG9yKCkKK3sKK30KKworLy8gUmVuZGVy
VGV4dEZpZWxkRGVjb3JhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIFJlbmRlclRleHRGaWVsZERlY29y
YXRpb24gOiBwdWJsaWMgUmVuZGVyUmVwbGFjZWQgeworcHVibGljOgorICAgIFJlbmRlclRleHRG
aWVsZERlY29yYXRpb24oTm9kZSogbm9kZSkgOiBSZW5kZXJSZXBsYWNlZChub2RlKQorICAgIHsK
KyAgICAgICAgdG9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudChub2RlKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkgT1ZFUlJJREUKKyAgICB7CisgICAg
ICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVu
dCo+KG5vZGUoKS0+c2hhZG93QW5jZXN0b3JOb2RlKCkpOworICAgICAgICBUZXh0RmllbGREZWNv
cmF0b3IqIGRlY29yYXRvciA9IHRvVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQobm9kZSgpKS0+
dGV4dEZpZWxkRGVjb3JhdG9yKCk7CisgICAgICAgIEFTU0VSVChkZWNvcmF0b3IpOworICAgICAg
ICBJbWFnZSogaW1hZ2U7CisgICAgICAgIGlmIChpbnB1dC0+ZGlzYWJsZWQoKSkKKyAgICAgICAg
ICAgIGltYWdlID0gZGVjb3JhdG9yLT5pbWFnZUZvckRpc2FibGVkU3RhdGUoKTsKKyAgICAgICAg
ZWxzZSBpZiAoaW5wdXQtPnJlYWRPbmx5KCkpCisgICAgICAgICAgICBpbWFnZSA9IGRlY29yYXRv
ci0+aW1hZ2VGb3JSZWFkb25seVN0YXRlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlt
YWdlID0gZGVjb3JhdG9yLT5pbWFnZUZvck5vcm1hbFN0YXRlKCk7CisgICAgICAgIEFTU0VSVChp
bWFnZSk7CisgICAgICAgIExheW91dFJlY3QgaW1hZ2VSZWN0KHBhaW50T2Zmc2V0LngoKSArIGJv
cmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCksIHBhaW50T2Zmc2V0LnkoKSArIGJvcmRlclRvcCgp
ICsgcGFkZGluZ1RvcCgpLCBjb250ZW50V2lkdGgoKSwgY29udGVudEhlaWdodCgpKTsKKyAgICAg
ICAgSW50UmVjdCBhbGlnbmVkUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QoaW1hZ2VSZWN0KTsK
KyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGUoKS0+Y29s
b3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgfQorICAg
IAorfTsKKworLy8gVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUZXh0Rmll
bGREZWNvcmF0aW9uRWxlbWVudDo6VGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQoRG9jdW1lbnQq
IGRvY3VtZW50LCBUZXh0RmllbGREZWNvcmF0b3IqIGRlY29yYXRvcikKKyAgICA6IEhUTUxEaXZF
bGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCkKKyAgICAsIG1fdGV4dEZpZWxkRGVj
b3JhdG9yKGRlY29yYXRvcikKK3sKKyAgICBBU1NFUlQoZGVjb3JhdG9yKTsKKyAgICBzZXRIYXND
dXN0b21TdHlsZUZvclJlbmRlcmVyKCk7Cit9CisKK1Bhc3NSZWZQdHI8VGV4dEZpZWxkRGVjb3Jh
dGlvbkVsZW1lbnQ+IFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQq
IGRvY3VtZW50LCBUZXh0RmllbGREZWNvcmF0b3IqIGRlY29yYXRvcikKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50KGRvY3VtZW50LCBkZWNvcmF0
b3IpKTsKK30KKworYm9vbCBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudDo6aXNUZXh0RmllbGRE
ZWNvcmF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4gVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVu
ZGVyZXIoKQoreworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBSZW5kZXJTdHlsZTo6
Y3JlYXRlKCk7CisgICAgUmVuZGVyU3R5bGUqIGlucHV0U3R5bGUgPSBzaGFkb3dBbmNlc3Rvck5v
ZGUoKS0+cmVuZGVyU3R5bGUoKTsKKyAgICBBU1NFUlQoaW5wdXRTdHlsZSk7CisgICAgc3R5bGUt
PnNldFdpZHRoKExlbmd0aChpbnB1dFN0eWxlLT5mb250U2l6ZSgpLCBGaXhlZCkpOworICAgIHN0
eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKGlucHV0U3R5bGUtPmZvbnRTaXplKCksIEZpeGVkKSk7Cisg
ICAgcmV0dXJuIHN0eWxlLnJlbGVhc2UoKTsKK30KKworUmVuZGVyT2JqZWN0KiBUZXh0RmllbGRE
ZWNvcmF0aW9uRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5k
ZXJTdHlsZSopCit7CisgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclRleHRGaWVsZERlY29y
YXRpb24odGhpcyk7Cit9CisKK2Jvb2wgVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQ6OmlzTW91
c2VGb2N1c2FibGUoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBUZXh0
RmllbGREZWNvcmF0aW9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQp
Cit7CisgICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IGlucHV0KHN0YXRpY19jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQqPihzaGFkb3dBbmNlc3Rvck5vZGUoKSkpOworICAgIGlmIChpbnB1dC0+ZGlz
YWJsZWQoKSB8fCBpbnB1dC0+cmVhZE9ubHkoKSB8fCAhZXZlbnQtPmlzTW91c2VFdmVudCgpKSB7
CisgICAgICAgIGlmICghZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCisgICAgICAgICAgICBIVE1M
RGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gc3RhdGljX2Nhc3Q8TW91c2VF
dmVudCo+KGV2ZW50KTsKKyAgICBSZWZQdHI8VGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQ+IHBy
b3RlY3Rvcih0aGlzKTsKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xp
Y2tFdmVudCkgeworICAgICAgICBtX3RleHRGaWVsZERlY29yYXRvci0+aGFuZGxlQ2xpY2soaW5w
dXQuZ2V0KCkpOworICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICB9CisK
KyAgICBpZiAoIWV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpKQorICAgICAgICBIVE1MRGl2RWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRGaWVsZERlY29y
YXRpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0RmllbGREZWNv
cmF0aW9uRWxlbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlMjBkZTg0NDhkOWEzNWU5ODE0NTc1MTA5NTZi
MmNiMTI1NDUxNTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRl
eHRGaWVsZERlY29yYXRpb25FbGVtZW50X2gKKyNkZWZpbmUgVGV4dEZpZWxkRGVjb3JhdGlvbkVs
ZW1lbnRfaAorCisjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBIVE1MSW5wdXRFbGVtZW50OworY2xhc3MgSW1hZ2U7CitjbGFzcyBNb3Vz
ZUV2ZW50OworY2xhc3MgVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQ7CitzdHJ1Y3QgUGFpbnRJ
bmZvOworCitjbGFzcyBUZXh0RmllbGREZWNvcmF0b3IgeworcHVibGljOgorICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGlzIFRleHRGaWVsZERlY29yYXRvciB3YW50cyB0byBhZGQgYQorICAgIC8v
IGRlY29yYXRpb24gdG8gdGhlIHNwZWNpZmllZCB0ZXh0IGZpZWxkLgorICAgIHZpcnR1YWwgYm9v
bCB3aWxsQWRkRGVjb3JhdGlvblRvKEhUTUxJbnB1dEVsZW1lbnQqKSA9IDA7CisKKyAgICAvLyBB
IFRleHRGaWVsZERlY29yYXRvciBpbnN0YW5jZSBzaG91bGQgb3duIEltYWdlIG9iamVjdHMuCisg
ICAgdmlydHVhbCBJbWFnZSogaW1hZ2VGb3JOb3JtYWxTdGF0ZSgpID0gMDsKKyAgICB2aXJ0dWFs
IEltYWdlKiBpbWFnZUZvckRpc2FibGVkU3RhdGUoKSA9IDA7CisgICAgdmlydHVhbCBJbWFnZSog
aW1hZ2VGb3JSZWFkb25seVN0YXRlKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUNs
aWNrKEhUTUxJbnB1dEVsZW1lbnQqKSA9IDA7CisKKyAgICB2aXJ0dWFsIH5UZXh0RmllbGREZWNv
cmF0b3IoKTsKK307CisKKy8vIEFuIGluc3RhbmNlIG9mIFRleHRGaWVsZERlY29yYXRpb25FbGVt
ZW50IG11c3QgYmUgaW4gYSBzaGFkb3cgdHJlZSBvZiBhbiBIVE1MSW5wdXRFbGVtZW50LgorY2xh
c3MgVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50
PiBjcmVhdGUoRG9jdW1lbnQqLCBUZXh0RmllbGREZWNvcmF0b3IqKTsKKyAgICBUZXh0RmllbGRE
ZWNvcmF0b3IqIHRleHRGaWVsZERlY29yYXRvcigpIHsgcmV0dXJuIG1fdGV4dEZpZWxkRGVjb3Jh
dG9yOyB9CisKK3ByaXZhdGU6CisgICAgVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQoRG9jdW1l
bnQqLCBUZXh0RmllbGREZWNvcmF0b3IqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGaWVsZERl
Y29yYXRpb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3Vz
YWJsZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxSZW5kZXJTdHls
ZT4gY3VzdG9tU3R5bGVGb3JSZW5kZXJlcigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKikgT1ZFUlJJ
REU7CisKKyAgICBUZXh0RmllbGREZWNvcmF0b3IqIG1fdGV4dEZpZWxkRGVjb3JhdG9yOworfTsK
KworaW5saW5lIFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50KiB0b1RleHRGaWVsZERlY29yYXRp
b25FbGVtZW50KE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIEFTU0VSVChu
b2RlLT5pc0VsZW1lbnROb2RlKCkpOworICAgIEFTU0VSVChzdGF0aWNfY2FzdDxFbGVtZW50Kj4o
bm9kZSktPmlzVGV4dEZpZWxkRGVjb3JhdGlvbigpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQqPihub2RlKTsKK30KKworfQorI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBiYzUzZTE2NmFkODIxYmZkODNmMWJiMmQyODli
ODMwZmQ1ZjMzMjhjLi5kYzUwM2E4Njk3N2Y4NGRmYTY3ZTA2M2QxM2RiMzBjZDEzMDBiYjkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTUzLDYgKzUzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEdlb2xvY2F0aW9uOwogICAg
IGNsYXNzIEdyYXBoaWNzTGF5ZXI7CisgICAgY2xhc3MgSFRNTElucHV0RWxlbWVudDsKICAgICBj
bGFzcyBIaXRUZXN0UmVzdWx0OwogICAgIGNsYXNzIEludFJlY3Q7CiAgICAgY2xhc3MgTmF2aWdh
dGlvbkFjdGlvbjsKQEAgLTMwNyw2ICszMDgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIFBhZ2VQb3B1cCogb3BlblBhZ2VQb3B1cChQYWdlUG9wdXBDbGllbnQqLCBj
b25zdCBJbnRSZWN0JiBvcmlnaW5Cb3VuZHNJblJvb3RWaWV3KSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBjbG9zZVBhZ2VQb3B1cChQYWdlUG9wdXAqKSA9IDA7CiAjZW5kaWYKKyAgICAgICAg
Ly8gVGhlIGFyZ3VtZW50IGlzIGFsd2F5cyBub24tMC4KKyAgICAgICAgdmlydHVhbCBib29sIHdp
bGxBZGRUZXh0RmllbGREZWNvcmF0aW9uc1RvKEhUTUxJbnB1dEVsZW1lbnQqKSB7IHJldHVybiBm
YWxzZTsgfQorICAgICAgICAvLyBUaGUgYXJndW1lbnQgaXMgYWx3YXlzIG5vbi0wLgorICAgICAg
ICB2aXJ0dWFsIHZvaWQgYWRkVGV4dEZpZWxkRGVjb3JhdGlvbnNUbyhIVE1MSW5wdXRFbGVtZW50
KikgeyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbikg
eyB9CiAgICAgICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133438</attachid>
            <date>2012-03-23 00:28:03 -0700</date>
            <delta_ts>2012-03-23 11:49:29 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-80580-20120323162801.patch</filename>
            <type>text/plain</type>
            <size>15923</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExODExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2RlMGZhNzM4ZTUyNjg0
YTMwZGFiNmNmNzFhNzM5MmMwNTA2YzcxNi4uMjFhNmE1NWY1OGM4NzA4MDVjZDg2NDQ4ZmZjYjY5
MjExMzZiY2JiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAzLTIzICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgVGV4dEZpZWxkRGVj
b3JhdG9yIGFuZCBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA1ODAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVzZSBjbGFzc2VzIHdpbGwgYmUgdXNlZCB0
byBhZGQgYSBkZWNvcmF0aW9uIGljb24gdG8gYSB0ZXh0IGZpZWxkCisgICAgICAgIDxpbnB1dD4g
ZnJvbSBvdXRzaWRlIG9mIFdlYkNvcmUuIFdlIGhhdmUgYSBwbGFuIHRvIHVzZSB0aGVtIGluIENo
cm9taXVtCisgICAgICAgIHBvcnQuIFNvIHRoaXMgcGF0Y2ggZG9lc24ndCBhZGQgVGV4dEZpZWxk
RGVjb3JhdGlvbkVsZW1lbnQue2NwcCxofSB0bworICAgICAgICBub24tQ2hyb21pdW0gYnVpbGQg
ZmlsZXMuCisKKyAgICAgICAgSG93IGl0IHdvcmtzOgorICAgICAgICBXaGVuIGEgc2hhZG93IHN1
YnRyZWUgZm9yIGEgdGV4dCBmaWVsZCBpcyBjcmVhdGVkLCB3ZSBhc2sgQ2hyb21lQ2xpZW50Cisg
ICAgICAgIHRvIGRlY29yYXRlIGl0LiBDaHJvbWVDbGllbnQgYXBwZW5kcyBhIFRleHRGaWVsZERl
Y29yYXRpb25FbGVtZW50IHRvIHRoZQorICAgICAgICBleGlzdGluZyBzaGFkb3cgc3VidHJlZSBv
ciBhbm90aGVyIHNoYWRvdyB0cmVlLiBBIFRleHRGaWVsZERlY29yYXRvciBpcworICAgICAgICBh
c3NvY2lhdGVkIHRvIGEgVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQsIGFuZCBpdCBwcm92aWRl
cyBkZWNvcmF0aW9uCisgICAgICAgIGljb24gaW1hZ2VzIGFuZCBhIGNsaWNrIGhhbmRsZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHBhdGNoIHdvbid0IG1ha2UgYW55IGJlaGF2aW9y
IGNoYW5nZSBmb3Igbm93LgorCisgICAgICAgICogV2ViQ29yZS5neXBpOiBBZGQgVGV4dEZpZWxk
RGVjb3JhdGlvbkVsZW1lbnQuY3BwIGFuZCBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5oCisg
ICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzVGV4
dEZpZWxkRGVjb3JhdGlvbik6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0
cmVlKToKKyAgICAgICAgQ2FsbHMgQ2hyb21lQ2xpZW50Ojp3aWxsQWRkVGV4dEZpZWxkRGVjb3Jh
dGlvbnNUbygpIGFuZCBhZGRUZXh0RmllbGREZWNvcmF0aW9uc1RvKCkuCisgICAgICAgICogaHRt
bC9zaGFkb3cvVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlRleHRGaWVsZERlY29yYXRvcjo6flRleHRGaWVsZERlY29yYXRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudDo6VGV4dEZpZWxkRGVjb3Jh
dGlvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1l
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVu
dDo6aXNUZXh0RmllbGREZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZERl
Y29yYXRpb25FbGVtZW50Ojp1cGRhdGVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Rmll
bGREZWNvcmF0aW9uRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcik6CisgICAgICAgIFNl
dHMgdGhlIHNpemUgdG8gYSBzcXVhcmUgb2YgdGhlIGZvbnQtc2l6ZS4KKyAgICAgICAgKFdlYkNv
cmU6OlRleHRGaWVsZERlY29yYXRpb25FbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAg
IEFsd2F5cyBjcmVhdGVzIGEgUmVuZGVySW1hZ2UuCisgICAgICAgIChXZWJDb3JlOjpUZXh0Rmll
bGREZWNvcmF0aW9uRWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgU2V0cyBhbiBpbWFnZSBmb3Ig
YXBwcm9wcmlhdGUgc3RhdGUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGREZWNvcmF0aW9u
RWxlbWVudDo6aXNNb3VzZUZvY3VzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRE
ZWNvcmF0aW9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIERlbGVnYXRl
IGEgY2xpY2sgZXZlbnQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb24gb2YgVGV4dEZpZWxk
RGVjb3JhdG9yLgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRGaWVsZERlY29yYXRpb25FbGVt
ZW50Lmg6IEFkZGVkLgorICAgICAgICAoVGV4dEZpZWxkRGVjb3JhdG9yKTogQWRkZWQuCisgICAg
ICAgIChUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6dG9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudCk6IEFkZGVkLgorICAgICAgICAqIHBhZ2Uv
Q2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OndpbGxBZGRU
ZXh0RmllbGREZWNvcmF0aW9uc1RvKTogQWRkIGFuIGVtcHR5IGltcGxlbWVudGF0aW9uLgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjphZGRUZXh0RmllbGREZWNvcmF0aW9uc1RvKTog
ZGl0dG8uCisKIDIwMTItMDMtMjIgIEpvbmF0aGFuIERvbmcgIDxqb25hdGhhbi5kb25nQHRvcmNo
bW9iaWxlLmNvbS5jbj4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gYWRkIGludGVyZmFjZSBjbGVh
ckNyZWRlbnRpYWxzKCkgYW5kIGNsZWFyTmV2ZXJSZW1lbWJlclNpdGVzKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCAwNWYwMjdhMjc0ZTdhZTZmY2IzYWVkNDI5YTNkZWJkY2QzN2M2MzFmLi4xZWMyNmRm
MTE2YjZjMmIxYWU3MjY5ZTIyYjEyNzBlOWE5NTI1M2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC01
Njc1LDYgKzU2NzUsOCBAQAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxl
bWVudC5oJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuaCcsCisgICAgICAgICAgICAnaHRtbC9zaGFkb3cvVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1l
bnQuY3BwJywKKyAgICAgICAgICAgICdodG1sL3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxl
bWVudC5oJywKICAgICAgICAgICAgICdodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCcs
CiAgICAgICAgICAgICAnaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5oJywKICAgICAgICAg
ICAgICdodG1sL3RyYWNrL1RleHRUcmFjay5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggZGVm
NDhlOTRjZDg5ZjBkZmMyYTI0ZmNkZDQ2NjY4MzExMWU0YWYzNy4uMzRmNmUxZTEyMzg1MmE0Y2Iy
ODgwMzA2ZTg2NDVhNWY5MzgzZTgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0zNjEsNiArMzYx
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0luUmFuZ2UoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc091dE9mUmFuZ2UoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0ZyYW1lRWxlbWVudEJhc2UoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGaWVsZERlY29yYXRpb24o
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBib29sIGNhbkNvbnRhaW5S
YW5nZUVuZFBvaW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKaW5kZXggYTE0OWI2OTU3M2U3YzkyODJlNzE4MGZh
NTQ2ZTFhNDA1MTc2OTdmNi4uNWMzMDQ2Njc0MjVhZGVlODgzMDJjOGQ2Y2FjZDkyMWFjN2MyMDBl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtMzMs
NiArMzMsOCBAQAogI2luY2x1ZGUgIlRleHRGaWVsZElucHV0VHlwZS5oIgogCiAjaW5jbHVkZSAi
QmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaCIKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKQEAgLTIyMCw4ICsyMjIsMTAg
QEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogCiAgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gZWxlbWVudCgpLT5kb2N1bWVudCgpOwogICAgIFJlZlB0cjxS
ZW5kZXJUaGVtZT4gdGhlbWUgPSBkb2N1bWVudC0+cGFnZSgpID8gZG9jdW1lbnQtPnBhZ2UoKS0+
dGhlbWUoKSA6IFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKTsKKyAgICBDaHJvbWVDbGllbnQq
IGNocm9tZUNsaWVudCA9IGRvY3VtZW50LT5wYWdlKCkgPyBkb2N1bWVudC0+cGFnZSgpLT5jaHJv
bWUoKS0+Y2xpZW50KCkgOiAwOwogICAgIGJvb2wgc2hvdWxkSGF2ZVNwaW5CdXR0b24gPSB0aGVt
ZS0+c2hvdWxkSGF2ZVNwaW5CdXR0b24oZWxlbWVudCgpKTsKLSAgICBib29sIGNyZWF0ZXNDb250
YWluZXIgPSBzaG91bGRIYXZlU3BpbkJ1dHRvbiB8fCBuZWVkc0NvbnRhaW5lcigpOworICAgIGJv
b2wgc2hvdWxkQWRkRGVjb3JhdGlvbnMgPSBjaHJvbWVDbGllbnQgJiYgY2hyb21lQ2xpZW50LT53
aWxsQWRkVGV4dEZpZWxkRGVjb3JhdGlvbnNUbyhlbGVtZW50KCkpOworICAgIGJvb2wgY3JlYXRl
c0NvbnRhaW5lciA9IHNob3VsZEhhdmVTcGluQnV0dG9uIHx8IG5lZWRzQ29udGFpbmVyKCkgfHwg
c2hvdWxkQWRkRGVjb3JhdGlvbnM7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBt
X2lubmVyVGV4dCA9IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
KTsKQEAgLTI1MSw2ICsyNTUsOSBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hh
ZG93U3VidHJlZSgpCiAgICAgICAgIG1faW5uZXJTcGluQnV0dG9uID0gU3BpbkJ1dHRvbkVsZW1l
bnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgICAgIG1fY29udGFpbmVyLT5hcHBlbmRDaGlsZCht
X2lubmVyU3BpbkJ1dHRvbiwgZWMpOwogICAgIH0KKworICAgIGlmIChzaG91bGRBZGREZWNvcmF0
aW9ucykKKyAgICAgICAgY2hyb21lQ2xpZW50LT5hZGRUZXh0RmllbGREZWNvcmF0aW9uc1RvKGVs
ZW1lbnQoKSk7CiB9CiAKIEhUTUxFbGVtZW50KiBUZXh0RmllbGRJbnB1dFR5cGU6OmNvbnRhaW5l
ckVsZW1lbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
VGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjNzkzZjRhYWNl
ODFlODAzNGJmMmJhZDI3YThjYWEwNDE4ZWE5YmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5jcHAKQEAgLTAs
MCArMSwxMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4dEZpZWxkRGVjb3Jh
dGlvbkVsZW1lbnQuaCIKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiSFRNTElucHV0
RWxlbWVudC5oIgorI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworLy8gVGV4dEZpZWxkRGVjb3JhdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGV4dEZpZWxkRGVjb3JhdG9y
Ojp+VGV4dEZpZWxkRGVjb3JhdG9yKCkKK3sKK30KKworLy8gVGV4dEZpZWxkRGVjb3JhdGlvbkVs
ZW1lbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudDo6VGV4dEZpZWxkRGVj
b3JhdGlvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBUZXh0RmllbGREZWNvcmF0b3IqIGRl
Y29yYXRvcikKKyAgICA6IEhUTUxEaXZFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVu
dCkKKyAgICAsIG1fdGV4dEZpZWxkRGVjb3JhdG9yKGRlY29yYXRvcikKK3sKKyAgICBBU1NFUlQo
ZGVjb3JhdG9yKTsKKyAgICBzZXRIYXNDdXN0b21TdHlsZUZvclJlbmRlcmVyKCk7Cit9CisKK1Bh
c3NSZWZQdHI8VGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQ+IFRleHRGaWVsZERlY29yYXRpb25F
bGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBUZXh0RmllbGREZWNvcmF0b3IqIGRl
Y29yYXRvcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRGaWVsZERlY29yYXRpb25F
bGVtZW50KGRvY3VtZW50LCBkZWNvcmF0b3IpKTsKK30KKworYm9vbCBUZXh0RmllbGREZWNvcmF0
aW9uRWxlbWVudDo6aXNUZXh0RmllbGREZWNvcmF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudDo6dXBkYXRlSW1hZ2Uo
KQoreworICAgIGlmICghcmVuZGVyZXIoKSB8fCAhcmVuZGVyZXIoKS0+aXNJbWFnZSgpKQorICAg
ICAgICByZXR1cm47CisgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogcmVzb3VyY2UgPSB0b1JlbmRl
ckltYWdlKHJlbmRlcmVyKCkpLT5pbWFnZVJlc291cmNlKCk7CisgICAgSFRNTElucHV0RWxlbWVu
dCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oc2hhZG93QW5jZXN0b3JO
b2RlKCkpOworICAgIENhY2hlZEltYWdlKiBpbWFnZTsKKyAgICBpZiAoaW5wdXQtPmRpc2FibGVk
KCkpCisgICAgICAgIGltYWdlID0gbV90ZXh0RmllbGREZWNvcmF0b3ItPmltYWdlRm9yRGlzYWJs
ZWRTdGF0ZSgpOworICAgIGVsc2UgaWYgKGlucHV0LT5yZWFkT25seSgpKQorICAgICAgICBpbWFn
ZSA9IG1fdGV4dEZpZWxkRGVjb3JhdG9yLT5pbWFnZUZvclJlYWRvbmx5U3RhdGUoKTsKKyAgICBl
bHNlCisgICAgICAgIGltYWdlID0gbV90ZXh0RmllbGREZWNvcmF0b3ItPmltYWdlRm9yTm9ybWFs
U3RhdGUoKTsKKyAgICBBU1NFUlQoaW1hZ2UpOworICAgIHJlc291cmNlLT5zZXRDYWNoZWRJbWFn
ZShpbWFnZSk7Cit9CisKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFRleHRGaWVsZERlY29yYXRp
b25FbGVtZW50OjpjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkKK3sKKyAgICBSZWZQdHI8UmVuZGVy
U3R5bGU+IHN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgIFJlbmRlclN0eWxlKiBp
bnB1dFN0eWxlID0gc2hhZG93QW5jZXN0b3JOb2RlKCktPnJlbmRlclN0eWxlKCk7CisgICAgQVNT
RVJUKGlucHV0U3R5bGUpOworICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgoaW5wdXRTdHlsZS0+
Zm9udFNpemUoKSwgRml4ZWQpKTsKKyAgICBzdHlsZS0+c2V0SGVpZ2h0KExlbmd0aChpbnB1dFN0
eWxlLT5mb250U2l6ZSgpLCBGaXhlZCkpOworICAgIHVwZGF0ZUltYWdlKCk7CisgICAgcmV0dXJu
IHN0eWxlLnJlbGVhc2UoKTsKK30KKworUmVuZGVyT2JqZWN0KiBUZXh0RmllbGREZWNvcmF0aW9u
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSop
Cit7CisgICAgUmVuZGVySW1hZ2UqIGltYWdlID0gbmV3IChhcmVuYSkgUmVuZGVySW1hZ2UodGhp
cyk7CisgICAgaW1hZ2UtPnNldEltYWdlUmVzb3VyY2UoUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3Jl
YXRlKCkpOworICAgIHJldHVybiBpbWFnZTsKK30KKwordm9pZCBUZXh0RmllbGREZWNvcmF0aW9u
RWxlbWVudDo6YXR0YWNoKCkKK3sKKyAgICBIVE1MRGl2RWxlbWVudDo6YXR0YWNoKCk7CisgICAg
dXBkYXRlSW1hZ2UoKTsKK30KKworYm9vbCBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudDo6aXNN
b3VzZUZvY3VzYWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFRl
eHRGaWVsZERlY29yYXRpb25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVu
dCkKK3sKKyAgICBSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gaW5wdXQoc3RhdGljX2Nhc3Q8SFRN
TElucHV0RWxlbWVudCo+KHNoYWRvd0FuY2VzdG9yTm9kZSgpKSk7CisgICAgaWYgKGlucHV0LT5k
aXNhYmxlZCgpIHx8IGlucHV0LT5yZWFkT25seSgpIHx8ICFldmVudC0+aXNNb3VzZUV2ZW50KCkp
IHsKKyAgICAgICAgaWYgKCFldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKKyAgICAgICAgICAgIEhU
TUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIFJlZlB0cjxUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudD4gcHJvdGVj
dG9yKHRoaXMpOworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2
ZW50KSB7CisgICAgICAgIG1fdGV4dEZpZWxkRGVjb3JhdG9yLT5oYW5kbGVDbGljayhpbnB1dC5n
ZXQoKSk7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgIH0KKworICAg
IGlmICghZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCisgICAgICAgIEhUTUxEaXZFbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dEZpZWxkRGVjb3JhdGlv
bkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRGaWVsZERlY29yYXRp
b25FbGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAxYzk4NjhmNjU2OTg0ZjY5MTJhM2Q2NDNhMTY5Y2Ri
OTUwZWQ0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Rl
eHRGaWVsZERlY29yYXRpb25FbGVtZW50LmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVGV4dEZp
ZWxkRGVjb3JhdGlvbkVsZW1lbnRfaAorI2RlZmluZSBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVu
dF9oCisKKyNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIENhY2hlZEltYWdlOworY2xhc3MgSFRNTElucHV0RWxlbWVudDsKKworLy8gQSBU
ZXh0RmllbGREZWNvcmF0b3Igb2JqZWN0IG11c3QgbGl2ZSB1bnRpbCBhbGwgb2YgdGV4dCBmaWVs
ZHMgd2hpY2ggd2VyZQorLy8gZGVjb3JhdGVkIGJ5IGl0IGRpZS4KK2NsYXNzIFRleHRGaWVsZERl
Y29yYXRvciB7CitwdWJsaWM6CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgVGV4dEZpZWxk
RGVjb3JhdG9yIHdhbnRzIHRvIGFkZCBhCisgICAgLy8gZGVjb3JhdGlvbiB0byB0aGUgc3BlY2lm
aWVkIHRleHQgZmllbGQuCisgICAgdmlydHVhbCBib29sIHdpbGxBZGREZWNvcmF0aW9uVG8oSFRN
TElucHV0RWxlbWVudCopID0gMDsKKworICAgIC8vIEEgVGV4dEZpZWxkRGVjb3JhdG9yIG9iamVj
dCBzaG91bGQgb3duIHRoZSBDYWNoZWRJbWFnZSBvYmplY3RzLgorICAgIHZpcnR1YWwgQ2FjaGVk
SW1hZ2UqIGltYWdlRm9yTm9ybWFsU3RhdGUoKSA9IDA7CisgICAgdmlydHVhbCBDYWNoZWRJbWFn
ZSogaW1hZ2VGb3JEaXNhYmxlZFN0YXRlKCkgPSAwOworICAgIHZpcnR1YWwgQ2FjaGVkSW1hZ2Uq
IGltYWdlRm9yUmVhZG9ubHlTdGF0ZSgpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVD
bGljayhIVE1MSW5wdXRFbGVtZW50KikgPSAwOworCisgICAgdmlydHVhbCB+VGV4dEZpZWxkRGVj
b3JhdG9yKCk7Cit9OworCisvLyBBIFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50IG9iamVjdCBt
dXN0IGJlIGluIGEgc2hhZG93IHRyZWUgb2YgYW4KKy8vIEhUTUxJbnB1dEVsZW1lbnQuCitjbGFz
cyBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQ+
IGNyZWF0ZShEb2N1bWVudCosIFRleHRGaWVsZERlY29yYXRvciopOworICAgIFRleHRGaWVsZERl
Y29yYXRvciogdGV4dEZpZWxkRGVjb3JhdG9yKCkgeyByZXR1cm4gbV90ZXh0RmllbGREZWNvcmF0
b3I7IH0KKworcHJpdmF0ZToKKyAgICBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudChEb2N1bWVu
dCosIFRleHRGaWVsZERlY29yYXRvciopOworICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGaWVsZERl
Y29yYXRpb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IGN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7CisKKyAgICB2b2lkIHVwZGF0
ZUltYWdlKCk7CisKKyAgICBUZXh0RmllbGREZWNvcmF0b3IqIG1fdGV4dEZpZWxkRGVjb3JhdG9y
OworfTsKKworaW5saW5lIFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50KiB0b1RleHRGaWVsZERl
Y29yYXRpb25FbGVtZW50KE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIEFT
U0VSVChub2RlLT5pc0VsZW1lbnROb2RlKCkpOworICAgIEFTU0VSVChzdGF0aWNfY2FzdDxFbGVt
ZW50Kj4obm9kZSktPmlzVGV4dEZpZWxkRGVjb3JhdGlvbigpKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8VGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQqPihub2RlKTsKK30KKworfQorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBiYzUzZTE2NmFkODIxYmZkODNmMWJi
MmQyODliODMwZmQ1ZjMzMjhjLi5kYzUwM2E4Njk3N2Y4NGRmYTY3ZTA2M2QxM2RiMzBjZDEzMDBi
YjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTUzLDYgKzUzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEdlb2xvY2F0aW9u
OwogICAgIGNsYXNzIEdyYXBoaWNzTGF5ZXI7CisgICAgY2xhc3MgSFRNTElucHV0RWxlbWVudDsK
ICAgICBjbGFzcyBIaXRUZXN0UmVzdWx0OwogICAgIGNsYXNzIEludFJlY3Q7CiAgICAgY2xhc3Mg
TmF2aWdhdGlvbkFjdGlvbjsKQEAgLTMwNyw2ICszMDgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIFBhZ2VQb3B1cCogb3BlblBhZ2VQb3B1cChQYWdlUG9wdXBDbGll
bnQqLCBjb25zdCBJbnRSZWN0JiBvcmlnaW5Cb3VuZHNJblJvb3RWaWV3KSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBjbG9zZVBhZ2VQb3B1cChQYWdlUG9wdXAqKSA9IDA7CiAjZW5kaWYKKyAg
ICAgICAgLy8gVGhlIGFyZ3VtZW50IGlzIGFsd2F5cyBub24tMC4KKyAgICAgICAgdmlydHVhbCBi
b29sIHdpbGxBZGRUZXh0RmllbGREZWNvcmF0aW9uc1RvKEhUTUxJbnB1dEVsZW1lbnQqKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgICAgICAvLyBUaGUgYXJndW1lbnQgaXMgYWx3YXlzIG5vbi0wLgor
ICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkVGV4dEZpZWxkRGVjb3JhdGlvbnNUbyhIVE1MSW5wdXRF
bGVtZW50KikgeyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNh
dGlvbikgeyB9CiAgICAgICAgIAo=
</data>
<flag name="review"
          id="137429"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>