<?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>108447</bug_id>
          
          <creation_ts>2013-01-31 02:44:40 -0800</creation_ts>
          <short_desc>INPUT_MULTIPLE_FIELDS_UI: Focus order is not controllable by tabIndex attribute on &lt;input&gt;</short_desc>
          <delta_ts>2013-02-04 17:18:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          <dependson>108775</dependson>
          <blocked>108795</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>hayato</cc>
    
    <cc>mifenton</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yosin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>821294</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2013-01-31 02:44:40 -0800</bug_when>
    <thetext>&lt;body&gt;
&lt;input tabindex=30 value=30&gt;
&lt;input tabindex=20 type=date&gt;
&lt;input tabIndex=10 value=10 autofocus&gt;
&lt;/body&gt;

Steps to reproduce:
 1. Open the document above on Google Chrome 24+.
 2. Press TAB 3 times
   ==&gt; The last sub-field in the date input is focused.
 3. Press TAB

Expected:
  The input with tabindex=30 is focused.

Actual:
  The &apos;Back&apos; navigation button is focused.


The shadow host of the date input is not focusable, and it&apos;s shadow sub-fields are focusable. We have no ways to control focus sequence in this case though the shadow host has tabindex.

Possible solutions:
  A) Introduce special handling to respect tabindex on non-focusable shadow host
  B) Make the shadow host &lt;input&gt; focusable
     In this case, we&apos;d like to focus on the first sub-field when the shadow host is focused, and Shift+TAB on the first sub-field should skip focusing on the shadow host. We need another hack to detect focus direction.
  C) Stop using shadow DOM focus navigation.
    Make the shadow host &lt;input&gt; focusable, and make sub-fields non-focusable.
    We can emulate the current behavior by detecting focus direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821568</commentid>
    <comment_count>1</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-31 09:06:36 -0800</bug_when>
    <thetext>Just to make sure I understand, let me try to say it back to you in a slightly different way:

We need a way to indicate that some shadow hosts must never participate in sequential focus navigation, delegating their focusing completely to the tree they host.

Right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822071</commentid>
    <comment_count>2</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2013-01-31 16:04:34 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; We need a way to indicate that some shadow hosts must never participate in sequential focus navigation, delegating their focusing completely to the tree they host.
&gt; 
&gt; Right?

I think so.
I feel the current rule for focusable-shadow-nodes-in-non-focusable-shadow-host has a defect because component users have no ways to specify tabindex to a component.  We might want to introduce a new attribute for shadow hosts like shadow-tree-tab-index=20.

Anyway, we need a hack for input[type=date] because it should work with normal tabindex attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822208</commentid>
    <comment_count>3</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-31 18:19:35 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; &lt;body&gt;
&gt; &lt;input tabindex=30 value=30&gt;
&gt; &lt;input tabindex=20 type=date&gt;
&gt; &lt;input tabIndex=10 value=10 autofocus&gt;
&gt; &lt;/body&gt;
&gt; 
&gt; Steps to reproduce:
&gt;  1. Open the document above on Google Chrome 24+.
&gt;  2. Press TAB 3 times
&gt;    ==&gt; The last sub-field in the date input is focused.
&gt;  3. Press TAB
&gt; 
&gt; Expected:
&gt;   The input with tabindex=30 is focused.
&gt; 
&gt; Actual:
&gt;   The &apos;Back&apos; navigation button is focused.
&gt; 
&gt; 
&gt; The shadow host of the date input is not focusable, and it&apos;s shadow sub-fields are focusable. We have no ways to control focus sequence in this case though the shadow host has tabindex.
&gt; 
&gt; Possible solutions:
&gt;   A) Introduce special handling to respect tabindex on non-focusable shadow host
&gt;   B) Make the shadow host &lt;input&gt; focusable
&gt;      In this case, we&apos;d like to focus on the first sub-field when the shadow host is focused, and Shift+TAB on the first sub-field should skip focusing on the shadow host. We need another hack to detect focus direction.

B) was what I had implemented before. I called it &apos;focus delegation&apos;.
But I&apos;ve removed that to prefer a general rule defined in the spec.

I think we need a hack to keep a compatibility for built-in elements, such as input elements, which has a shadow tree unless we can have a good spec to cover this case.


&gt;   C) Stop using shadow DOM focus navigation.
&gt;     Make the shadow host &lt;input&gt; focusable, and make sub-fields non-focusable.
&gt;     We can emulate the current behavior by detecting focus direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822262</commentid>
    <comment_count>4</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2013-01-31 20:12:42 -0800</bug_when>
    <thetext>I discussed this with some people offline, and concluded we should take B.

A is not good because we need to add a hack to FocusController only for INPUT_MULTIPLE_FIELDS_UI.
C is not good because we&apos;d like to expose aria-* attributes on sub-fields. If sub-fields were not focusable, WebCore a11y would not expose them.

To implement B in HTMLInputElement, I&apos;d like to add FocusDirection argument to Node::setFocus.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822497</commentid>
    <comment_count>5</comment_count>
      <attachid>185981</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2013-02-01 01:47:41 -0800</bug_when>
    <thetext>Created attachment 185981
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822545</commentid>
    <comment_count>6</comment_count>
      <attachid>185981</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-01 02:39:35 -0800</bug_when>
    <thetext>Comment on attachment 185981
WIP

Attachment 185981 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16309541</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822571</commentid>
    <comment_count>7</comment_count>
      <attachid>185981</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-01 03:05:08 -0800</bug_when>
    <thetext>Comment on attachment 185981
WIP

Attachment 185981 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16298545</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824102</commentid>
    <comment_count>8</comment_count>
      <attachid>186315</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2013-02-03 23:55:10 -0800</bug_when>
    <thetext>Created attachment 186315
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824129</commentid>
    <comment_count>9</comment_count>
      <attachid>186315</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-04 01:10:34 -0800</bug_when>
    <thetext>Comment on attachment 186315
Patch

Attachment 186315 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16377009</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824130</commentid>
    <comment_count>10</comment_count>
      <attachid>186315</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2013-02-04 01:12:23 -0800</bug_when>
    <thetext>Comment on attachment 186315
Patch

(In reply to comment #9)
&gt; (From update of attachment 186315 [details])
&gt; Attachment 186315 [details] did not pass win-ews (win):
&gt; Output: http://queues.webkit.org/results/16377009

false alarm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824835</commentid>
    <comment_count>11</comment_count>
      <attachid>186315</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-02-04 15:37:58 -0800</bug_when>
    <thetext>Comment on attachment 186315
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824932</commentid>
    <comment_count>12</comment_count>
      <attachid>186315</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-04 17:18:47 -0800</bug_when>
    <thetext>Comment on attachment 186315
Patch

Clearing flags on attachment: 186315

Committed r141835: &lt;http://trac.webkit.org/changeset/141835&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824933</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-04 17:18:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185981</attachid>
            <date>2013-02-01 01:47:41 -0800</date>
            <delta_ts>2013-02-03 23:55:06 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-108447-20130201184423.patch</filename>
            <type>text/plain</type>
            <size>29359</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzhlNjYyNWUwM2Q4YThm
YjAxOGY5MzZhM2Y2NjZlNzBkZDQxOWI1MC4uMWEyMjdkY2ZhZjQwNjQzM2FjYjRkNjI3MDM3ZGVj
Y2M4YjAzYWI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDEzLTAyLTAxICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBJTlBVVF9NVUxUSVBMRV9G
SUVMRFNfVUk6IEZvY3VzIG9yZGVyIGlzIG5vdCBjb250cm9sbGFibGUgYnkgdGFiSW5kZXggYXR0
cmlidXRlIG9uIDxpbnB1dD4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwODQ0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRGb2N1c2VkTm9kZSk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICogZG9t
L0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Zm9jdXMpOgorICAgICAg
ICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChFbGVtZW50KToKKyAgICAgICAgKiBkb20vTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaEZvY3VzRXZlbnQpOgorICAg
ICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKiBodG1sL0Jhc2VN
dWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlOjpoYW5kbGVGb2N1c0V2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRU
eXBlOjppc0tleWJvYXJkRm9jdXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VNdWx0aXBs
ZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlOjppc01vdXNlRm9jdXNhYmxlKToKKyAgICAgICAg
KiBodG1sL0Jhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmg6CisgICAgICAg
IChCYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZSk6CisgICAgICAgICogaHRt
bC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAg
ICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5w
dXRFbGVtZW50OjpoYW5kbGVGb2N1c0V2ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaDoKKyAgICAgICAgKEhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRN
TExhYmVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGFiZWxFbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMYWJlbEVsZW1lbnQ6
OmZvY3VzKToKKyAgICAgICAgKiBodG1sL0hUTUxMYWJlbEVsZW1lbnQuaDoKKyAgICAgICAgKEhU
TUxMYWJlbEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTExlZ2VuZEVsZW1lbnQ6OmZvY3VzKToKKyAgICAgICAgKiBo
dG1sL0hUTUxMZWdlbmRFbGVtZW50Lmg6CisgICAgICAgIChIVE1MTGVnZW5kRWxlbWVudCk6Cisg
ICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MU2VsZWN0RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KToKKyAgICAgICAgKiBodG1sL0hU
TUxTZWxlY3RFbGVtZW50Lmg6CisgICAgICAgIChIVE1MU2VsZWN0RWxlbWVudCk6CisgICAgICAg
ICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KToKKyAgICAg
ICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgIChIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6aGFuZGxlRm9jdXNFdmVudCk6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpoYW5kbGVGb2N1c0V2ZW50KToKKyAg
ICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAoSW5wdXRUeXBlKToKKyAgICAgICAg
KiBodG1sL1Bhc3N3b3JkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3N3b3Jk
SW5wdXRUeXBlOjpoYW5kbGVGb2N1c0V2ZW50KToKKyAgICAgICAgKiBodG1sL1Bhc3N3b3JkSW5w
dXRUeXBlLmg6CisgICAgICAgIChQYXNzd29yZElucHV0VHlwZSk6CisgICAgICAgICogcGFnZS9G
b2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hFdmVudHNPbldp
bmRvd0FuZEZvY3VzZWROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6
YWR2YW5jZUZvY3VzSW5Eb2N1bWVudE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29u
dHJvbGxlcjo6c2V0Rm9jdXNlZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9s
bGVyOjphZHZhbmNlRm9jdXNEaXJlY3Rpb25hbGx5SW5Db250YWluZXIpOgorICAgICAgICAqIHBh
Z2UvRm9jdXNDb250cm9sbGVyLmg6CisgICAgICAgIChGb2N1c0NvbnRyb2xsZXIpOgorCiAyMDEz
LTAxLTMxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZWZh
Y3RvcmluZzogUmVtb3ZlIHRoZSBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlIGZvciBOb2RlOjpzZXRG
b2N1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMGU5MjVmMDY0YWUzZGZkZDVkNTc3OWQx
MGNjODEwZjhjODdmNTY3ZC4uN2QyYzM2ZDFkOGYwYWMyOTcwYmQ0NzE4MGU3Y2ViMjA4YTA5YTA5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zMjg2LDcgKzMyODYsNyBAQCB2b2lkIERv
Y3VtZW50OjpzZXRBbm5vdGF0ZWRSZWdpb25zKGNvbnN0IFZlY3RvcjxBbm5vdGF0ZWRSZWdpb25W
YWx1ZT4mIHJlZ2lvbnMpCiB9CiAjZW5kaWYKIAotYm9vbCBEb2N1bWVudDo6c2V0Rm9jdXNlZE5v
ZGUoUGFzc1JlZlB0cjxOb2RlPiBwcnBOZXdGb2N1c2VkTm9kZSkKK2Jvb2wgRG9jdW1lbnQ6OnNl
dEZvY3VzZWROb2RlKFBhc3NSZWZQdHI8Tm9kZT4gcHJwTmV3Rm9jdXNlZE5vZGUsIEZvY3VzRGly
ZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBSZWZQdHI8Tm9kZT4gbmV3Rm9jdXNlZE5vZGUgPSBw
cnBOZXdGb2N1c2VkTm9kZTsKIApAQCAtMzM2NCw3ICszMzY0LDcgQEAgYm9vbCBEb2N1bWVudDo6
c2V0Rm9jdXNlZE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBwcnBOZXdGb2N1c2VkTm9kZSkKICAgICAg
ICAgbV9mb2N1c2VkTm9kZSA9IG5ld0ZvY3VzZWROb2RlOwogCiAgICAgICAgIC8vIERpc3BhdGNo
IHRoZSBmb2N1cyBldmVudCBhbmQgbGV0IHRoZSBub2RlIGRvIGFueSBvdGhlciBmb2N1cyByZWxh
dGVkIGFjdGl2aXRpZXMgKGltcG9ydGFudCBmb3IgdGV4dCBmaWVsZHMpCi0gICAgICAgIG1fZm9j
dXNlZE5vZGUtPmRpc3BhdGNoRm9jdXNFdmVudChvbGRGb2N1c2VkTm9kZSk7CisgICAgICAgIG1f
Zm9jdXNlZE5vZGUtPmRpc3BhdGNoRm9jdXNFdmVudChvbGRGb2N1c2VkTm9kZSwgZGlyZWN0aW9u
KTsKIAogICAgICAgICBpZiAobV9mb2N1c2VkTm9kZSAhPSBuZXdGb2N1c2VkTm9kZSkgewogICAg
ICAgICAgICAgLy8gaGFuZGxlciBzaGlmdGVkIGZvY3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4
IGUxYmI4Mzc5ZjdjMjNjNGZlMTk5YTRjMjYxYzk4YTAxZmZlNjg5OTAuLjdiZDlmMTkwYzQ3NWE1
NzMyZTMzMjM1MzFlN2ViNTc0NDE2MmIxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSAiRE9NVGltZVN0YW1wLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRF
dmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaW1pbmcuaCIKKyNpbmNsdWRlICJGb2N1
c0RpcmVjdGlvbi5oIgogI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JD
b3VudGVycy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTY4Niw3ICs2ODcsNyBAQCBwdWJs
aWM6CiAgICAgU3RyaW5nIHNlbGVjdGVkU3R5bGVzaGVldFNldCgpIGNvbnN0OwogICAgIHZvaWQg
c2V0U2VsZWN0ZWRTdHlsZXNoZWV0U2V0KGNvbnN0IFN0cmluZyYpOwogCi0gICAgYm9vbCBzZXRG
b2N1c2VkTm9kZShQYXNzUmVmUHRyPE5vZGU+KTsKKyAgICBib29sIHNldEZvY3VzZWROb2RlKFBh
c3NSZWZQdHI8Tm9kZT4sIEZvY3VzRGlyZWN0aW9uID0gRm9jdXNEaXJlY3Rpb25Ob25lKTsKICAg
ICBOb2RlKiBmb2N1c2VkTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9jdXNlZE5vZGUuZ2V0KCk7
IH0KICAgICBVc2VyQWN0aW9uRWxlbWVudFNldCYgdXNlckFjdGlvbkVsZW1lbnRzKCkgIHsgcmV0
dXJuIG1fdXNlckFjdGlvbkVsZW1lbnRzOyB9CiAgICAgY29uc3QgVXNlckFjdGlvbkVsZW1lbnRT
ZXQmIHVzZXJBY3Rpb25FbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlckFjdGlvbkVsZW1l
bnRzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggOWRiMmU2NDEyMmE3YmNjM2ZhNTIwZjY2
NzBlZGU5MjA0Y2Y1NzU3Zi4uMzA5Y2IwMTg0ZTNkNWU2YTRmMjc3M2NhYmZiOWQyN2QzY2YyZjFi
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTg2NCw3ICsxODY0LDcgQEAgQ1NTU3R5bGVE
ZWNsYXJhdGlvbiAqRWxlbWVudDo6c3R5bGUoKQogICAgIHJldHVybiAwOwogfQogCi12b2lkIEVs
ZW1lbnQ6OmZvY3VzKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uKQordm9pZCBFbGVtZW50
Ojpmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiwgRm9jdXNEaXJlY3Rpb24gZGly
ZWN0aW9uKQogewogICAgIGlmICghaW5Eb2N1bWVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0x
ODkxLDcgKzE4OTEsNyBAQCB2b2lkIEVsZW1lbnQ6OmZvY3VzKGJvb2wgcmVzdG9yZVByZXZpb3Vz
U2VsZWN0aW9uKQogICAgICAgICAvLyBJZiBhIGZvY3VzIGV2ZW50IGhhbmRsZXIgY2hhbmdlcyB0
aGUgZm9jdXMgdG8gYSBkaWZmZXJlbnQgbm9kZSBpdAogICAgICAgICAvLyBkb2VzIG5vdCBtYWtl
IHNlbnNlIHRvIGNvbnRpbnVlIGFuZCB1cGRhdGUgYXBwZWFyZW5jZS4KICAgICAgICAgcHJvdGVj
dCA9IHRoaXM7Ci0gICAgICAgIGlmICghcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPnNldEZvY3Vz
ZWROb2RlKHRoaXMsIGRvYy0+ZnJhbWUoKSkpCisgICAgICAgIGlmICghcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPnNldEZvY3VzZWROb2RlKHRoaXMsIGRvYy0+ZnJhbWUoKSwgZGlyZWN0aW9uKSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGNlNTQx
ZjUzZTAwNTlhMGJlYzVmM2JkMmE1YmE5OThjZjMxNzk4NDcuLmRmMTYzM2RkYWM2MDJmYjM1M2Ex
N2QwMjY5MGFlNDNlZTVkZmI1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzQ1LDcgKzM0NSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGltYWdlU291cmNl
QXR0cmlidXRlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHRhcmdldCgpIGNvbnN0
IHsgcmV0dXJuIFN0cmluZygpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoYm9vbCByZXN0
b3JlUHJldmlvdXNTZWxlY3Rpb24gPSB0cnVlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoYm9v
bCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24gPSB0cnVlLCBGb2N1c0RpcmVjdGlvbiA9IEZvY3Vz
RGlyZWN0aW9uTm9uZSk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZvY3VzQXBwZWFyYW5jZShi
b29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbik7CiAgICAgdmlydHVhbCB2b2lkIGJsdXIoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCmluZGV4IDE4ZTVkMzRjMTI2ZWNkMWZkNGQzMTEyMTRmMDdiNWFmZjY1
NThiOTUuLmFlNGVlZWQzYjk0NGU1OWFkZDkyNzY5NDQwNDc0NGQwZTAyY2U4ZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKQEAgLTI0MTIsNyArMjQxMiw3IEBAIGJvb2wgTm9kZTo6ZGlzcGF0Y2hXaGVlbEV2
ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQpCiAgICAgcmV0dXJuIEV2ZW50RGlz
cGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCh0aGlzLCBXaGVlbEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6
Y3JlYXRlKGV2ZW50LCBkb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKSk7CiB9CiAKLXZvaWQgTm9k
ZTo6ZGlzcGF0Y2hGb2N1c0V2ZW50KFBhc3NSZWZQdHI8Tm9kZT4gb2xkRm9jdXNlZE5vZGUpCit2
b2lkIE5vZGU6OmRpc3BhdGNoRm9jdXNFdmVudChQYXNzUmVmUHRyPE5vZGU+IG9sZEZvY3VzZWRO
b2RlLCBGb2N1c0RpcmVjdGlvbikKIHsKICAgICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgpKQogICAg
ICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZWxlbWVudERpZEZv
Y3VzKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggMWMyNDRlYjJhODkxZTkzNjQ0MDFiNTcwNjFhY2Zh
Njc5MTM4N2JjNC4uNjU2MzQ3YmJkZTE1ODY4YWQ2MmY4ZjllODhkNjllOWI1YmM0NmFkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJFZGl0aW5nQm91bmRhcnku
aCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkZvY3VzRGlyZWN0aW9uLmgi
CiAjaW5jbHVkZSAiS1VSTEhhc2guaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVk
ZSAiTXV0YXRpb25PYnNlcnZlci5oIgpAQCAtNjM3LDcgKzYzOCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpc3BhdGNoU2ltdWxhdGVkQ2xpY2soRXZlbnQqIHVuZGVybHlpbmdFdmVudCwgU2ltdWxh
dGVkQ2xpY2tNb3VzZUV2ZW50T3B0aW9ucyA9IFNlbmROb0V2ZW50cywgU2ltdWxhdGVkQ2xpY2tW
aXN1YWxPcHRpb25zID0gU2hvd1ByZXNzZWRMb29rKTsKICAgICBib29sIGRpc3BhdGNoQmVmb3Jl
TG9hZEV2ZW50KGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKIAotICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaEZvY3VzRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiBvbGRGb2N1c2VkTm9kZSk7CisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRm9jdXNFdmVudChQYXNzUmVmUHRyPE5vZGU+IG9sZEZvY3Vz
ZWROb2RlLCBGb2N1c0RpcmVjdGlvbik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoQmx1ckV2
ZW50KFBhc3NSZWZQdHI8Tm9kZT4gbmV3Rm9jdXNlZE5vZGUpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaENoYW5nZUV2ZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoSW5wdXRFdmVu
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlTXVsdGlwbGVGaWVsZHNE
YXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VNdWx0aXBs
ZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAppbmRleCA4YzgzZGJkNzU5ZDllYjI2NzRi
NjRlMjNjZmFlZjIwNjRhNzI0NzhlLi4wZWU2YjYwNGRhOWQyMTIzNzk3MTY0NDFiNmU5Y2I5MWNh
MGE4MTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VNdWx0aXBsZUZpZWxk
c0RhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VN
dWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcApAQCAtMzYsNiArMzYsNyBAQAog
I2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiRGF0ZVRpbWVGaWVsZHNTdGF0
ZS5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKKyNpbmNsdWRlICJGb2N1c0NvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJGb3JtQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhUTUxEYXRhTGlz
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCkBAIC0yNDAsOSArMjQx
LDE0IEBAIHZvaWQgQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmRlc3Ry
b3lTaGFkb3dTdWJ0cmVlKCkKICAgICBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmRlc3Ryb3lT
aGFkb3dTdWJ0cmVlKCk7CiB9CiAKLXZvaWQgQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJ
bnB1dFR5cGU6OmZvY3VzKGJvb2wpCit2b2lkIEJhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1l
SW5wdXRUeXBlOjpoYW5kbGVGb2N1c0V2ZW50KEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsK
LSAgICBpZiAobV9kYXRlVGltZUVkaXRFbGVtZW50KQorICAgIGlmICghbV9kYXRlVGltZUVkaXRF
bGVtZW50KQorICAgICAgICByZXR1cm47CisgICAgaWYgKGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVj
dGlvbkJhY2t3YXJkKSB7CisgICAgICAgIGlmIChlbGVtZW50KCktPmRvY3VtZW50KCktPnBhZ2Uo
KSkKKyAgICAgICAgICAgIGVsZW1lbnQoKS0+ZG9jdW1lbnQoKS0+cGFnZSgpLT5mb2N1c0NvbnRy
b2xsZXIoKS0+YWR2YW5jZUZvY3VzKGRpcmVjdGlvbiwgMCk7CisgICAgfSBlbHNlCiAgICAgICAg
IG1fZGF0ZVRpbWVFZGl0RWxlbWVudC0+Zm9jdXNCeU93bmVyKCk7CiB9CiAKQEAgLTI4MywxOSAr
Mjg5LDE1IEBAIGJvb2wgQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGU6Omhh
c0JhZElucHV0KCkgY29uc3QKICAgICByZXR1cm4gZWxlbWVudCgpLT52YWx1ZSgpLmlzRW1wdHko
KSAmJiBtX2RhdGVUaW1lRWRpdEVsZW1lbnQgJiYgbV9kYXRlVGltZUVkaXRFbGVtZW50LT5hbnlF
ZGl0YWJsZUZpZWxkc0hhdmVWYWx1ZXMoKTsKIH0KIAotYm9vbCBCYXNlTXVsdGlwbGVGaWVsZHNE
YXRlQW5kVGltZUlucHV0VHlwZTo6aXNGb2N1c2FibGVCeUNsaWNrT25MYWJlbCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIGVsZW1lbnQoKS0+aXNUZXh0Rm9ybUNvbnRyb2xGb2N1c2FibGUoKTsKLX0K
LQogYm9vbCBCYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZTo6aXNLZXlib2Fy
ZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3QKIHsKLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGZvY3VzYWJsZSBldmVuIGlmIHJlYWRPbmx5KCku
CisgICAgcmV0dXJuIGVsZW1lbnQoKS0+aXNUZXh0Rm9ybUNvbnRyb2xGb2N1c2FibGUoKSAmJiAh
ZWxlbWVudCgpLT5yZWFkT25seSgpOwogfQogCiBib29sIEJhc2VNdWx0aXBsZUZpZWxkc0RhdGVB
bmRUaW1lSW5wdXRUeXBlOjppc01vdXNlRm9jdXNhYmxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIGVsZW1lbnQoKS0+aXNUZXh0Rm9ybUNvbnRyb2xGb2N1c2FibGUo
KTsKIH0KIAogQXRvbWljU3RyaW5nIEJhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRU
eXBlOjpsb2NhbGVJZGVudGlmaWVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaAppbmRl
eCBkMmYzYTViMjYyNDI1OTg1OTUwMTU4Y2Y4M2Q2OWJhNTNkYTk5ZTA3Li5mNzhhNmRjOTEwZjFk
ZjY0M2FiOWYxZjNlYjc4ODZmYjdhYzVlNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Jhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9CYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZS5oCkBA
IC04MSwxMiArODEsMTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU2hhZG93
U3VidHJlZSgpIE9WRVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95U2hhZG93
U3VidHJlZSgpIE9WRVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlZEF0dHJp
YnV0ZUNoYW5nZWQoKSBPVkVSUklERSBGSU5BTDsKLSAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoYm9v
bCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pIE9WRVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwg
dm9pZCBmb3J3YXJkRXZlbnQoRXZlbnQqKSBPVkVSUklERSBGSU5BTDsKKyAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlRm9jdXNFdmVudChGb2N1c0RpcmVjdGlvbikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KikgT1ZFUlJJREUgRklOQUw7
CiAgICAgdmlydHVhbCBib29sIGhhc0JhZElucHV0KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBib29sIGhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdCBPVkVSUklERSBGSU5BTDsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2FibGVCeUNsaWNrT25MYWJlbCgpIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBj
b25zdCBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgp
IGNvbnN0IE9WRVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwgdm9pZCBtaW5Pck1heEF0dHJpYnV0
ZUNoYW5nZWQoKSBPVkVSUklERSBGSU5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
aW5kZXggOTc3NGZjOGNkYjgwMzY3YzNiODJjYjAyNGM5ZTI2N2ZkYjYxYmIzNi4uYmQ3OTJlOTAz
OTJhYTg1OTc3YmM5OWIzMDc3MGJiMDVjOTQ3ZmU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAKQEAgLTExNjMsMTEgKzExNjMsNiBAQCB2b2lkIEhUTUxFbGVtZW50OjphZGRIVE1M
Q29sb3JUb1N0eWxlKFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlLCBDU1NQcm9wZXJ0eUlEIHBybwog
ICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBjc3NWYWx1ZVBvb2woKS5jcmVhdGVD
b2xvclZhbHVlKHBhcnNlZENvbG9yLnJnYigpKSk7CiB9CiAKLWJvb2wgSFRNTEVsZW1lbnQ6Omlz
Rm9jdXNhYmxlQnlDbGlja09uTGFiZWwoKSBjb25zdAotewotICAgIHJldHVybiBpc01vdXNlRm9j
dXNhYmxlKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2lmbmRlZiBOREVCVUcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCBjMjhmM2NjY2YxNDYwYWFmMmI0M2QzMDdh
Yjc1MWYyNDJlMjkwYmE2Li5lNWFlZjBkMWQ5NTAxNDA5ZmMxMDUzMzg2MzI3ZTdiZWY5NmQxOGM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC0xMDUsNyArMTA1LDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBpc0hUTUxVbmtub3duRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNMYWJlbGFibGUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzYWJsZUJ5Q2xpY2tPbkxhYmVsKCkg
Y29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBIVE1MRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCosIENvbnN0cnVjdGlvblR5cGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggYmYyN2Q4NTRjZWIwZjg1NGE4ZjllNWY0ODcx
Y2JmNmQwZGYwNzgxNi4uZGUzMDg1NGI2OTg5Y2Q0OWRmNjhmNDY5NjNhOWMyMDE0MGFmNmU1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0zNzAsMTYgKzM3
MCw2IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEJsdXIoKQogICAgIEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50OjpibHVyKCk7CiB9CiAKLXZvaWQgSFRNTElucHV0RWxlbWVudDo6
ZGVmYXVsdEZvY3VzKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uKQotewotICAgIEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpmb2N1cyhyZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pOwot
fQotCi12b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmZvY3VzKGJvb2wgcmVzdG9yZVByZXZpb3VzU2Vs
ZWN0aW9uKQotewotICAgIG1faW5wdXRUeXBlLT5mb2N1cyhyZXN0b3JlUHJldmlvdXNTZWxlY3Rp
b24pOwotfQotCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6Omhhc0N1c3RvbUZvY3VzTG9naWMoKSBj
b25zdAogewogICAgIHJldHVybiBtX2lucHV0VHlwZS0+aGFzQ3VzdG9tRm9jdXNMb2dpYygpOwpA
QCAtNDM3LDkgKzQyNyw5IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6c2hvdWxkVXNlSW5wdXRN
ZXRob2QoKQogICAgIHJldHVybiBtX2lucHV0VHlwZS0+c2hvdWxkVXNlSW5wdXRNZXRob2QoKTsK
IH0KIAotdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpoYW5kbGVGb2N1c0V2ZW50KCkKK3ZvaWQgSFRN
TElucHV0RWxlbWVudDo6aGFuZGxlRm9jdXNFdmVudChGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24p
CiB7Ci0gICAgbV9pbnB1dFR5cGUtPmhhbmRsZUZvY3VzRXZlbnQoKTsKKyAgICBtX2lucHV0VHlw
ZS0+aGFuZGxlRm9jdXNFdmVudChkaXJlY3Rpb24pOwogfQogCiB2b2lkIEhUTUxJbnB1dEVsZW1l
bnQ6OmhhbmRsZUJsdXJFdmVudCgpCkBAIC0xMjMyLDExICsxMjIyLDYgQEAgYm9vbCBIVE1MSW5w
dXRFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29u
c3QKICAgICByZXR1cm4gYXR0cmlidXRlLm5hbWUoKSA9PSBzcmNBdHRyIHx8IGF0dHJpYnV0ZS5u
YW1lKCkgPT0gZm9ybWFjdGlvbkF0dHIgfHwgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6Omlz
VVJMQXR0cmlidXRlKGF0dHJpYnV0ZSk7CiB9CiAKLWJvb2wgSFRNTElucHV0RWxlbWVudDo6aXNG
b2N1c2FibGVCeUNsaWNrT25MYWJlbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBl
LT5pc0ZvY3VzYWJsZUJ5Q2xpY2tPbkxhYmVsKCk7Ci19Ci0KIFN0cmluZyBIVE1MSW5wdXRFbGVt
ZW50OjpkZWZhdWx0VmFsdWUoKSBjb25zdAogewogICAgIHJldHVybiBmYXN0R2V0QXR0cmlidXRl
KHZhbHVlQXR0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IGVl
ZjZlNDQwZjUyYWFkMWE5OGI0ZTZlNWQ0YjAzNDA4MWQzY2JjYjguLjBmOWRiMDkzYWYyZjlmNDBh
ZjgxMzlhZjEzZmQ2M2E4Zjg4MmNiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5oCkBAIC0yODAsOCArMjgwLDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGJs
dXIoKSBPVkVSUklERTsKICAgICB2b2lkIGRlZmF1bHRCbHVyKCk7Ci0gICAgdm9pZCBkZWZhdWx0
Rm9jdXMoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pOwotICAgIHZpcnR1YWwgdm9pZCBm
b2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiA9IHRydWUpIE9WRVJSSURFOwogCiAg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdCBPVkVSUklERTsKIApA
QCAtMzYwLDcgKzM1OCw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBvc3REaXNwYXRj
aEV2ZW50SGFuZGxlcihFdmVudCosIHZvaWQqIGRhdGFGcm9tUHJlRGlzcGF0Y2gpOwogCiAgICAg
dmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IE9WRVJS
SURFOwotICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzYWJsZUJ5Q2xpY2tPbkxhYmVsKCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzSW5SYW5nZSgpIGNvbnN0OwogICAgIHZpcnR1
YWwgYm9vbCBpc091dE9mUmFuZ2UoKSBjb25zdDsKIApAQCAtMzgwLDcgKzM3Nyw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpOwogICAgIHZpcnR1
YWwgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBpbm5lclRleHRW
YWx1ZSgpLmlzRW1wdHkoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5U3VnZ2VzdGVkVmFs
dWUoKSBjb25zdCB7IHJldHVybiBzdWdnZXN0ZWRWYWx1ZSgpLmlzRW1wdHkoKTsgfQotICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVGb2N1c0V2ZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUZv
Y3VzRXZlbnQoRm9jdXNEaXJlY3Rpb24pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVCbHVyRXZlbnQoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRyb2wo
KSBjb25zdCB7IHJldHVybiAhaXNSZXF1aXJlZEZvcm1Db250cm9sKCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCmluZGV4IDBiODI3YWVkODkxMGVmNTRkNzMzYTE5
MmU4YzRiMWZmNjMyYzJkYzYuLmY1NmYyZTcyZDMxZDYzNTIwNTc3OWFmMmY0OWMzYWU3OTU3MGM0
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcApAQCAtMTM2LDcg
KzEzNiw3IEBAIHZvaWQgSFRNTExhYmVsRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCogZXZ0KQogICAgICAgICAvLyBDbGljayB0aGUgY29ycmVzcG9uZGluZyBjb250cm9sLgogICAg
ICAgICBlbGVtZW50LT5kaXNwYXRjaFNpbXVsYXRlZENsaWNrKGV2dCk7CiAKLSAgICAgICAgaWYg
KGVsZW1lbnQtPmlzRm9jdXNhYmxlQnlDbGlja09uTGFiZWwoKSkKKyAgICAgICAgaWYgKGVsZW1l
bnQtPmlzTW91c2VGb2N1c2FibGUoKSkKICAgICAgICAgICAgIGVsZW1lbnQtPmZvY3VzKCk7CiAK
ICAgICAgICAgcHJvY2Vzc2luZ0NsaWNrID0gZmFsc2U7CkBAIC0xNTUsMTEgKzE1NSwxMSBAQCBi
b29sIEhUTUxMYWJlbEVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkKICAg
ICByZXR1cm4gSFRNTEVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCk7CiB9
CiAKLXZvaWQgSFRNTExhYmVsRWxlbWVudDo6Zm9jdXMoYm9vbCkKK3ZvaWQgSFRNTExhYmVsRWxl
bWVudDo6Zm9jdXMoYm9vbCwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIC8vIHRv
IG1hdGNoIG90aGVyIGJyb3dzZXJzLCBhbHdheXMgcmVzdG9yZSBwcmV2aW91cyBzZWxlY3Rpb24K
ICAgICBpZiAoSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBjb250cm9sKCkpCi0gICAgICAgIGVsZW1l
bnQtPmZvY3VzKCk7CisgICAgICAgIGVsZW1lbnQtPmZvY3VzKHRydWUsIGRpcmVjdGlvbik7CiB9
CiAKIHZvaWQgSFRNTExhYmVsRWxlbWVudDo6YWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNl
RXZlbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuaAppbmRleCBmNDhjNjgw
NWU0OTFhZDZlODA0OTk0ZjZiNmNlNzk2YjhhOTZmZWZhLi4wOGJhYTllYjkwZDU3YjI2OGY2OWYz
NTg5NDMyZjRjZWQ2ZjVmYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
YWJlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQu
aApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIC8vIE92ZXJyaWRkZW4gdG8gZWl0aGVy
IGNsaWNrKCkgb3IgZm9jdXMoKSB0aGUgY29ycmVzcG9uZGluZyBjb250cm9sLgogICAgIHZpcnR1
YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAKLSAgICB2b2lkIGZvY3VzKGJv
b2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uID0gdHJ1ZSk7CisgICAgdmlydHVhbCB2b2lkIGZv
Y3VzKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uLCBGb2N1c0RpcmVjdGlvbikgT1ZFUlJJ
REU7CiB9OwogCiB9IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMZWdlbmRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVs
ZW1lbnQuY3BwCmluZGV4IGQ0NmM2ZDkyMTk5MDNmNTA3YTk0MmY5NzRhMGJmYTQ2MzNkNTY3OTAu
LjM3OGJmNDkzNzU4YmE5ZThmZDU0NzUxYTRhZDljZTk4NTZiOWRiYjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwCkBAIC02NywxNCArNjcsMTQgQEAgSFRNTEZv
cm1Db250cm9sRWxlbWVudCogSFRNTExlZ2VuZEVsZW1lbnQ6OmFzc29jaWF0ZWRDb250cm9sKCkK
ICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBIVE1MTGVnZW5kRWxlbWVudDo6Zm9jdXMoYm9vbCkK
K3ZvaWQgSFRNTExlZ2VuZEVsZW1lbnQ6OmZvY3VzKGJvb2wsIEZvY3VzRGlyZWN0aW9uIGRpcmVj
dGlvbikKIHsKICAgICBpZiAoaXNGb2N1c2FibGUoKSkKLSAgICAgICAgRWxlbWVudDo6Zm9jdXMo
KTsKKyAgICAgICAgRWxlbWVudDo6Zm9jdXModHJ1ZSwgZGlyZWN0aW9uKTsKICAgICAgICAgCiAg
ICAgLy8gVG8gbWF0Y2ggb3RoZXIgYnJvd3NlcnMnIGJlaGF2aW9yLCBuZXZlciByZXN0b3JlIHBy
ZXZpb3VzIHNlbGVjdGlvbi4KICAgICBpZiAoSFRNTEZvcm1Db250cm9sRWxlbWVudCogY29udHJv
bCA9IGFzc29jaWF0ZWRDb250cm9sKCkpCi0gICAgICAgIGNvbnRyb2wtPmZvY3VzKGZhbHNlKTsK
KyAgICAgICAgY29udHJvbC0+Zm9jdXMoZmFsc2UsIGRpcmVjdGlvbik7CiB9CiAKIHZvaWQgSFRN
TExlZ2VuZEVsZW1lbnQ6OmFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuaAppbmRleCA1NDllMTNiNjFiNzFmZmVk
Yjk0OTQwNGRhNTJmNDEyMWE4NGEyODM5Li42YzE3NjcwMWQ3MzgyODA5NGQ4OTcxNjY0MzI5Zjg5
Nzk0MTJkM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5oCkBAIC00
MSw3ICs0MSw3IEBAIHByaXZhdGU6CiAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogYXNzb2Np
YXRlZENvbnRyb2woKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBz
ZW5kTW91c2VFdmVudHMpOwotICAgIHZpcnR1YWwgdm9pZCBmb2N1cyhib29sIHJlc3RvcmVQcmV2
aW91c1NlbGVjdGlvbiA9IHRydWUpOworICAgIHZpcnR1YWwgdm9pZCBmb2N1cyhib29sLCBGb2N1
c0RpcmVjdGlvbikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBIVE1MRm9ybUVsZW1lbnQqIHZpcnR1
YWxGb3JtKCkgY29uc3QgT1ZFUlJJREU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuY3BwCmluZGV4IGQ3YTZmNGQ5MTZiYjY1YmI5NWNmMTAxNDRmODEwMjYzMjJl
NzlmNWUuLmExOTBhZWNkMDQwMmY4NzQ3ZWZhZmNjY2E4NDliYjc5ZGIyMTVhZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC05MDAsMTMgKzkwMCwxMyBA
QCBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RUb09wdGlvbkluZGV4KGludCBsaXN0SW5kZXgp
IGNvbnN0CiAgICAgcmV0dXJuIG9wdGlvbkluZGV4OwogfQogCi12b2lkIEhUTUxTZWxlY3RFbGVt
ZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiBvbGRGb2N1c2VkTm9kZSkK
K3ZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudChQYXNzUmVmUHRyPE5v
ZGU+IG9sZEZvY3VzZWROb2RlLCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgLy8g
U2F2ZSB0aGUgc2VsZWN0aW9uIHNvIGl0IGNhbiBiZSBjb21wYXJlZCB0byB0aGUgbmV3IHNlbGVj
dGlvbiB3aGVuCiAgICAgLy8gZGlzcGF0Y2hpbmcgY2hhbmdlIGV2ZW50cyBkdXJpbmcgYmx1ciBl
dmVudCBkaXNwYXRjaC4KICAgICBpZiAodXNlc01lbnVMaXN0KCkpCiAgICAgICAgIHNhdmVMYXN0
U2VsZWN0aW9uKCk7Ci0gICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGlzcGF0
Y2hGb2N1c0V2ZW50KG9sZEZvY3VzZWROb2RlKTsKKyAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
V2l0aFN0YXRlOjpkaXNwYXRjaEZvY3VzRXZlbnQob2xkRm9jdXNlZE5vZGUsIGRpcmVjdGlvbik7
CiB9CiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KFBhc3NSZWZQ
dHI8Tm9kZT4gbmV3Rm9jdXNlZE5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmgKaW5kZXggYTJmMjY1MGY2MDMwNmY4NzRlNzBhODQ1MjBlOGY2OTExYmU0NDEyNC4uYzNi
MGEwYjlmYjc2YTkwODdiN2MwYzJiZDhmZmU3MWRlNzBmYmYzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNlbGVjdEVsZW1lbnQuaApAQCAtMTE0LDcgKzExNCw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hGb2N1c0V2ZW50KFBhc3NSZWZQdHI8Tm9kZT4gb2xkRm9jdXNlZE5vZGUp
OworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZvY3VzRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiBv
bGRGb2N1c2VkTm9kZSwgRm9jdXNEaXJlY3Rpb24pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaEJsdXJFdmVudChQYXNzUmVmUHRyPE5vZGU+IG5ld0ZvY3VzZWROb2RlKTsKICAg
ICAKICAgICB2aXJ0dWFsIGJvb2wgY2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50LmNwcAppbmRleCA5MGNiMzU5YzQ3NmYxMzhkZTMwODc2Mjk2MzYwMGYxZTNmM2FlMjc4
Li42ZmJhZjFkYzQ5YmVkM2UwOTIyMDgxYjQ0YzQzMmE4ZGQ5MDUwMTcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtODQs
MTIgKzg0LDEyIEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250CiAgICAgcmV0dXJuIEluc2VydGlv
bkRvbmU7CiB9CiAKLXZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoRm9j
dXNFdmVudChQYXNzUmVmUHRyPE5vZGU+IG9sZEZvY3VzZWROb2RlKQordm9pZCBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KFBhc3NSZWZQdHI8Tm9kZT4gb2xk
Rm9jdXNlZE5vZGUsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBpZiAoc3VwcG9y
dHNQbGFjZWhvbGRlcigpKQogICAgICAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoZmFs
c2UpOwotICAgIGhhbmRsZUZvY3VzRXZlbnQoKTsKLSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
V2l0aFN0YXRlOjpkaXNwYXRjaEZvY3VzRXZlbnQob2xkRm9jdXNlZE5vZGUpOworICAgIGhhbmRs
ZUZvY3VzRXZlbnQoZGlyZWN0aW9uKTsKKyAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0
YXRlOjpkaXNwYXRjaEZvY3VzRXZlbnQob2xkRm9jdXNlZE5vZGUsIGRpcmVjdGlvbik7CiB9CiAK
IHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KFBhc3NS
ZWZQdHI8Tm9kZT4gbmV3Rm9jdXNlZE5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggYjliNDNkNWZhYTc2ZWUyMDFmYWVmY2Vh
YTRmNTA4ZjA5ZmEzZGZlYS4uMzdkNmEzMWE2ZDM4ZjkwZWFmZDQ5NTA5MGNkMTQyZjRmZDU0YzZj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuaApAQCAtMTE4LDcgKzExOCw3IEBAIHByaXZhdGU6CiAgICAgaW50IGNvbXB1dGVTZWxlY3Rp
b25FbmQoKSBjb25zdDsKICAgICBUZXh0RmllbGRTZWxlY3Rpb25EaXJlY3Rpb24gY29tcHV0ZVNl
bGVjdGlvbkRpcmVjdGlvbigpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRm9j
dXNFdmVudChQYXNzUmVmUHRyPE5vZGU+IG9sZEZvY3VzZWROb2RlKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hGb2N1c0V2ZW50KFBhc3NSZWZQdHI8Tm9kZT4gb2xkRm9jdXNlZE5vZGUsIEZv
Y3VzRGlyZWN0aW9uKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hCbHVyRXZl
bnQoUGFzc1JlZlB0cjxOb2RlPiBuZXdGb2N1c2VkTm9kZSk7CiAgICAgdmlydHVhbCBib29sIGNo
aWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBjb25z
dCBPVkVSUklERTsKIApAQCAtMTI3LDcgKzEyNyw3IEBAIHByaXZhdGU6CiAgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIHN1Z2dlc3RlZCB2YWx1ZSBpcyBlbXB0eS4gVXNlZCB0byBjaGVjayBwbGFjZWhv
bGRlciB2aXNpYmlsaXR5LgogICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5U3VnZ2VzdGVkVmFsdWUo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgLy8gQ2FsbGVkIGluIGRpc3BhdGNoRm9jdXNF
dmVudCgpLCBhZnRlciBwbGFjZWhvbGRlciBwcm9jZXNzLCBiZWZvcmUgY2FsbGluZyBwYXJlbnQn
cyBkaXNwYXRjaEZvY3VzRXZlbnQoKS4KLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRm9jdXNFdmVu
dCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVGb2N1c0V2ZW50KEZvY3VzRGlyZWN0aW9u
KSB7IH0KICAgICAvLyBDYWxsZWQgaW4gZGlzcGF0Y2hCbHVyRXZlbnQoKSwgYWZ0ZXIgcGxhY2Vo
b2xkZXIgcHJvY2VzcywgYmVmb3JlIGNhbGxpbmcgcGFyZW50J3MgZGlzcGF0Y2hCbHVyRXZlbnQo
KS4KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQmx1ckV2ZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRUeXBlLmNwcAppbmRleCA0ODBmMjhlMWQ5ZDEwM2Q4OTQzNGFmZDFjYzYyODYzMzlhZDBh
ZGZiLi4xMTAwOTJlYjQ0MzQzMGRmYWQ0N2I3NjA4OWJmMDNlMWJlYjc2M2FlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGUuY3BwCkBAIC00NzAsMTEgKzQ3MCw2IEBAIHZvaWQgSW5wdXRUeXBlOjpi
bHVyKCkKICAgICBlbGVtZW50KCktPmRlZmF1bHRCbHVyKCk7CiB9CiAKLXZvaWQgSW5wdXRUeXBl
Ojpmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbikKLXsKLSAgICBlbGVtZW50KCkt
PmRlZmF1bHRGb2N1cyhyZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pOwotfQotCiB2b2lkIElucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiB7CiB9CkBAIC01NDcsMTEgKzU0Miw2IEBAIGJv
b2wgSW5wdXRUeXBlOjpoYXNDdXN0b21Gb2N1c0xvZ2ljKCkgY29uc3QKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBJbnB1dFR5cGU6OmlzRm9jdXNhYmxlQnlDbGlja09uTGFiZWwoKSBjb25z
dAotewotICAgIHJldHVybiBpc01vdXNlRm9jdXNhYmxlKCk7Ci19Ci0KIGJvb2wgSW5wdXRUeXBl
Ojppc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqIGV2ZW50KSBjb25zdAogewogICAg
IHJldHVybiBlbGVtZW50KCktPmlzVGV4dEZvcm1Db250cm9sS2V5Ym9hcmRGb2N1c2FibGUoZXZl
bnQpOwpAQCAtNTY3LDcgKzU1Nyw3IEBAIGJvb2wgSW5wdXRUeXBlOjpzaG91bGRVc2VJbnB1dE1l
dGhvZCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIElucHV0VHlwZTo6aGFu
ZGxlRm9jdXNFdmVudCgpCit2b2lkIElucHV0VHlwZTo6aGFuZGxlRm9jdXNFdmVudChGb2N1c0Rp
cmVjdGlvbikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggOWE3NjcwOWExMGRk
NjJjMDNjNWE5OGUyZTFjYjNmMWNlNmIxMGYyMS4uYWI2OWNiODhkZTlmNzFjOGQ3Zjg0NzNlZTk3
ZmExZTgzZWJmMGM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC0yMDEsMTEgKzIwMSwx
MCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZFN1Ym1pdEltcGxpY2l0bHkoRXZl
bnQqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBmb3JtRm9yU3Vi
bWlzc2lvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBoYXNDdXN0b21Gb2N1c0xvZ2ljKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzRm9jdXNhYmxlQnlDbGlja09uTGFiZWwoKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50Kikg
Y29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkVXNlSW5wdXRNZXRob2QoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlRm9jdXNFdmVudCgpOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVGb2N1c0V2ZW50
KEZvY3VzRGlyZWN0aW9uKTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQmx1ckV2ZW50KCk7CiAg
ICAgdmlydHVhbCB2b2lkIGFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cyk7CiAg
ICAgdmlydHVhbCBib29sIGNhbkJlU3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbigpOwpAQCAtMjE1LDcg
KzIxNCw2IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGJsdXIoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZm9jdXMoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pOwogCiAg
ICAgLy8gU2hhZG93IHRyZWUgaGFuZGxpbmcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9QYXNzd29yZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Bhc3N3b3Jk
SW5wdXRUeXBlLmNwcAppbmRleCA1YzY4Yzk3NWRkYzg0YmI5MWIwZTQwZGYyZThhZWI1NTE2OWM5
YjRlLi45ZmUzMWFjNmQzNGI4ZjRiNjk4OThjOWQ0NDIzYjUzMjFhYzQ1YWZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Bhc3N3b3JkSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1Bhc3N3b3JkSW5wdXRUeXBlLmNwcApAQCAtOTUsOSArOTUsOSBAQCBib29s
IFBhc3N3b3JkSW5wdXRUeXBlOjppc1Bhc3N3b3JkRmllbGQoKSBjb25zdAogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIFBhc3N3b3JkSW5wdXRUeXBlOjpoYW5kbGVGb2N1c0V2ZW50KCkKK3Zv
aWQgUGFzc3dvcmRJbnB1dFR5cGU6OmhhbmRsZUZvY3VzRXZlbnQoRm9jdXNEaXJlY3Rpb24gZGly
ZWN0aW9uKQogewotICAgIEJhc2VUZXh0SW5wdXRUeXBlOjpoYW5kbGVGb2N1c0V2ZW50KCk7Cisg
ICAgQmFzZVRleHRJbnB1dFR5cGU6OmhhbmRsZUZvY3VzRXZlbnQoZGlyZWN0aW9uKTsKICAgICBp
ZiAoZWxlbWVudCgpLT5kb2N1bWVudCgpLT5mcmFtZSgpKQogICAgICAgICBlbGVtZW50KCktPmRv
Y3VtZW50KCktPnNldFVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKHRydWUpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QYXNzd29yZElucHV0VHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9QYXNzd29yZElucHV0VHlwZS5oCmluZGV4IGZiOTEwMWMwMmNkMjRj
MDE3YzBkMzcwYjgyYTgxMWVjZmE2MTYwODMuLjJiMjdlNGM2ZDc2NTNlMzM2ZGE5ZjQ4YTRiYWQz
MjkxZTc5YzIyNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGFzc3dvcmRJbnB1
dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Bhc3N3b3JkSW5wdXRUeXBlLmgKQEAg
LTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVzcGVjdExp
c3RBdHRyaWJ1dGUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVzcGVjdFNw
ZWVjaEF0dHJpYnV0ZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1Bhc3N3b3JkRmll
bGQoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRm9jdXNFdmVudCgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVGb2N1c0V2ZW50KEZvY3VzRGlyZWN0
aW9uKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQmx1ckV2ZW50KCkgT1ZFUlJJ
REU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXggNzE3
OWI3OTBhNWY4OGM0NTM4MzE2MDhhNjhhN2I2M2E5ZTNlOGQyOS4uYWFkMGM3MWFkMzIzMTNjMjdh
NzM1ZmJhZjlhMjY1ZGIzMzY1OWIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
b2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9s
bGVyLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkaXNwYXRjaEV2
ZW50c09uV2luZG93QW5kRm9jdXNlZE5vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sCiAgICAg
ICAgIGRvY3VtZW50LT5mb2N1c2VkTm9kZSgpLT5kaXNwYXRjaEJsdXJFdmVudCgwKTsKICAgICBk
b2N1bWVudC0+ZGlzcGF0Y2hXaW5kb3dFdmVudChFdmVudDo6Y3JlYXRlKGZvY3VzZWQgPyBldmVu
dE5hbWVzKCkuZm9jdXNFdmVudCA6IGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQsIGZhbHNlLCBmYWxz
ZSkpOwogICAgIGlmIChmb2N1c2VkICYmIGRvY3VtZW50LT5mb2N1c2VkTm9kZSgpKQotICAgICAg
ICBkb2N1bWVudC0+Zm9jdXNlZE5vZGUoKS0+ZGlzcGF0Y2hGb2N1c0V2ZW50KDApOworICAgICAg
ICBkb2N1bWVudC0+Zm9jdXNlZE5vZGUoKS0+ZGlzcGF0Y2hGb2N1c0V2ZW50KDAsIEZvY3VzRGly
ZWN0aW9uTm9uZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNDdXN0b21Gb2N1c0xvZ2lj
KE5vZGUqIG5vZGUpCkBAIC0zNTMsNyArMzUzLDcgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFk
dmFuY2VGb2N1c0luRG9jdW1lbnRPcmRlcihGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtleWIK
ICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlv
bik7CiAgICAgfQogCi0gICAgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUuZ2V0KCkpLT5mb2N1
cyhmYWxzZSk7CisgICAgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUuZ2V0KCkpLT5mb2N1cyhm
YWxzZSwgZGlyZWN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTc4LDcgKzU3OCw3
IEBAIHN0YXRpYyB2b2lkIGNsZWFyU2VsZWN0aW9uSWZOZWVkZWQoRnJhbWUqIG9sZEZvY3VzZWRG
cmFtZSwgRnJhbWUqIG5ld0ZvY3VzZWRGcmFtCiAgICAgcy0+Y2xlYXIoKTsKIH0KIAotYm9vbCBG
b2N1c0NvbnRyb2xsZXI6OnNldEZvY3VzZWROb2RlKE5vZGUqIG5vZGUsIFBhc3NSZWZQdHI8RnJh
bWU+IG5ld0ZvY3VzZWRGcmFtZSkKK2Jvb2wgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkTm9k
ZShOb2RlKiBub2RlLCBQYXNzUmVmUHRyPEZyYW1lPiBuZXdGb2N1c2VkRnJhbWUsIEZvY3VzRGly
ZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBSZWZQdHI8RnJhbWU+IG9sZEZvY3VzZWRGcmFtZSA9
IGZvY3VzZWRGcmFtZSgpOwogICAgIFJlZlB0cjxEb2N1bWVudD4gb2xkRG9jdW1lbnQgPSBvbGRG
b2N1c2VkRnJhbWUgPyBvbGRGb2N1c2VkRnJhbWUtPmRvY3VtZW50KCkgOiAwOwpAQCAtNjE3LDcg
KzYxNyw3IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkTm9kZShOb2RlKiBub2Rl
LCBQYXNzUmVmUHRyPEZyYW1lPiBuZXdGb2N1c2VkRnJhCiAgICAgLy8gU2V0dGluZyB0aGUgZm9j
dXNlZCBub2RlIGNhbiByZXN1bHQgaW4gbG9zaW5nIG91ciBsYXN0IHJlZnQgdG8gbm9kZSB3aGVu
IEpTIGV2ZW50IGhhbmRsZXJzIGZpcmUuCiAgICAgUmVmUHRyPE5vZGU+IHByb3RlY3QgPSBub2Rl
OwogICAgIGlmIChuZXdEb2N1bWVudCkgewotICAgICAgICBib29sIHN1Y2Nlc3NmdWxseUZvY3Vz
ZWQgPSBuZXdEb2N1bWVudC0+c2V0Rm9jdXNlZE5vZGUobm9kZSk7CisgICAgICAgIGJvb2wgc3Vj
Y2Vzc2Z1bGx5Rm9jdXNlZCA9IG5ld0RvY3VtZW50LT5zZXRGb2N1c2VkTm9kZShub2RlLCBkaXJl
Y3Rpb24pOwogICAgICAgICBpZiAoIXN1Y2Nlc3NmdWxseUZvY3VzZWQpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtODMxLDcgKzgzMSw3IEBAIGJvb2wgRm9jdXNDb250cm9s
bGVyOjphZHZhbmNlRm9jdXNEaXJlY3Rpb25hbGx5SW5Db250YWluZXIoTm9kZSogY29udGFpbmVy
LCBjb25zCiAgICAgRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudChmb2N1c0NhbmRpZGF0ZS5m
b2N1c2FibGVOb2RlKTsKICAgICBBU1NFUlQoZWxlbWVudCk7CiAKLSAgICBlbGVtZW50LT5mb2N1
cyhmYWxzZSk7CisgICAgZWxlbWVudC0+Zm9jdXMoZmFsc2UsIGRpcmVjdGlvbik7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oCmluZGV4IDRm
NTk4NmQ5NmQyMjc4ZDM0MjAwODg3ZTRmZWJmNTdjMjYyYzYyOGMuLmEzMzNmN2Q3NTY1ZTA3ZWQ5
MzJiNWIzYWE4ZjJhMmZlMWM3NjBhMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Rm9jdXNDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xs
ZXIuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZXRJbml0aWFsRm9jdXMo
Rm9jdXNEaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqKTsKICAgICBib29sIGFkdmFuY2VGb2N1cyhG
b2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCosIGJvb2wgaW5pdGlhbEZvY3VzID0gZmFsc2Up
OwogICAgICAgICAKLSAgICBib29sIHNldEZvY3VzZWROb2RlKE5vZGUqLCBQYXNzUmVmUHRyPEZy
YW1lPik7CisgICAgYm9vbCBzZXRGb2N1c2VkTm9kZShOb2RlKiwgUGFzc1JlZlB0cjxGcmFtZT4s
IEZvY3VzRGlyZWN0aW9uID0gRm9jdXNEaXJlY3Rpb25Ob25lKTsKIAogICAgIHZvaWQgc2V0QWN0
aXZlKGJvb2wpOwogICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX2lzQWN0aXZl
OyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186315</attachid>
            <date>2013-02-03 23:55:10 -0800</date>
            <delta_ts>2013-02-04 17:18:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108447-20130204165149.patch</filename>
            <type>text/plain</type>
            <size>19558</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI3ZjMyNDMyYmEyMzU5
MzViZjU3MGJmYThmYmQ2ODEzN2FjZmVlYS4uYzY0YzZjODVlNWRjNjQ0OGI5ZWZhNWI3MmI2NTFl
ZGJmMzA1OTdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEzLTAyLTA0ICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBJTlBVVF9NVUxUSVBMRV9G
SUVMRFNfVUk6IEZvY3VzIG9yZGVyIGlzIG5vdCBjb250cm9sbGFibGUgYnkgdGFiSW5kZXggYXR0
cmlidXRlIG9uIDxpbnB1dD4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwODQ0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdlIG1ha2UgPGlucHV0PiBlbGVtZW50cyB3aXRoIHRoZSBtdWx0aXBsZS1maWVs
ZHMgVUkgZm9jdXNhYmxlLgorICAgICAgICAgLSBIb3dldmVyLCB3ZSBkb24ndCB3YW50IHRvIGNo
YW5nZSB0aGUgZXhpc3RpbmcgZm9jdXMgYmVoYXZpb3IgZm9yCisgICAgICAgICAgIG11bHRpcGxl
LWZpZWxkcyA8aW5wdXQ+LiBXZSdkIGxpa2UgdG8gZm9jdXMgb24gdGhlIGxhc3Qgc3ViLWZpZWxk
IG9mCisgICAgICAgICAgIGFuPGlucHV0PiB3aXRoIFNoaWZ0ICsgVEFCIGZvY3VzIG5hdmlnYXRp
b24sIGFuZCBmb2N1cyBvbiB0aGUgZmlyc3QKKyAgICAgICAgICAgc3ViLWZpZWxkIG9mIHRoZSA8
aW5wdXQ+IG90aGVyd2lzZS4gU28sIHdlIG1vdmUgZm9jdXMgaW1tZWRpYXRlbHkKKyAgICAgICAg
ICAgYWZ0ZXIgdGhlIDxpbnB1dD4gZ2V0cyBmb2N1cy4KKyAgICAgICAgIC0gV2UgZG9uJ3QgbmVl
ZCB0aGUgaXNGb2N1c2FibGVCeUNsaWNrT25MYWJlbCBoYWNrIGFueSBtb3JlLiA8aW5wdXQ+Cisg
ICAgICAgICAgIGVsZW1lbnRzIHdpdGggdGhlIG11bHRpcGxlLWZpZWxkcyBVSSBhcmUgbW91c2Ut
Zm9jdXNhYmxlLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVs
ZHMvdGltZS1tdWx0aXBsZS1maWVsZHMtdGFiaW5kZXguaHRtbAorCisgICAgICAgICogaHRtbC9J
bnB1dFR5cGUuaDoKKyAgICAgICAgKElucHV0VHlwZSk6IEFkZCBGb2N1c0RpcmVjdGlvbiBhcmd1
bWVudCB0byBoYW5kbGVGb2N1c0V2ZW50LCBhbmQgcmVtb3ZlCisgICAgICAgIHVubmVjZXNzYXJ5
IGlzRm9jdXNhYmxlQnlDbGlja09uTGFiZWwgYW5kIGZvY3VzLgorICAgICAgICAqIGh0bWwvSW5w
dXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6aGFuZGxlRm9jdXNFdmVu
dCk6IERpdHRvLgorICAgICAgICAqIGh0bWwvUGFzc3dvcmRJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzc3dvcmRJbnB1dFR5cGU6OmhhbmRsZUZvY3VzRXZlbnQpOiBGb2xsb3cg
dGhlIGFyZ3VtZW50IGNoYW5nZS4KKyAgICAgICAgKiBodG1sL1Bhc3N3b3JkSW5wdXRUeXBlLmg6
CisgICAgICAgIChQYXNzd29yZElucHV0VHlwZSk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9C
YXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZTo6aGFuZGxlRm9jdXNF
dmVudCk6CisgICAgICAgIElmIHRoaXMgZWxlbWVudCBnZXRzIGZvY3VzIGJ5IEZvY3VzRGlyZWN0
aW9uQmFja3dhcmQgKGl0IG1lYW5zIHRoZSBmb2N1cworICAgICAgICBpcyBtb3ZlZCBmcm9tIHRo
ZSBmaXJzdCBzdWItZmllbGQgb2YgdGhlIGVsZW1lbnQsKSBtb3ZlIHRoZSBmb2N1cworICAgICAg
ICBiYWNrd2FyZCBvbmNlIG1vcmUuIE90aGVyd2lzZSwgd2UgZm9jdXMgb24gdGhlIGZpcnN0IHN1
Yi1maWxlZCBvZiB0aGUKKyAgICAgICAgZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkJhc2VN
dWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlOjppc0tleWJvYXJkRm9jdXNhYmxlKToK
KyAgICAgICAgTWFrZSB0aGlzIGtleWJvYXJkLWZvY3VzYWJsZS4gV2UgaGF2ZSBhIHdyb25nIHRl
c3QgdG8gZW5zdXJlIHJlYWQtb25seQorICAgICAgICBpbnB1dCBkb2VzIE5PVCBnZXQgZm9jdXMu
IFdlJ2xsIGFkZHJlc3MgaXQgbGF0ZXIuCisgICAgICAgIChXZWJDb3JlOjpCYXNlTXVsdGlwbGVG
aWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZTo6aXNNb3VzZUZvY3VzYWJsZSk6CisgICAgICAgIE1h
a2UgdGhpcyBtb3VzZS1mb2N1c2FibGUuCisgICAgICAgICogaHRtbC9CYXNlTXVsdGlwbGVGaWVs
ZHNEYXRlQW5kVGltZUlucHV0VHlwZS5oOgorICAgICAgICAoQmFzZU11bHRpcGxlRmllbGRzRGF0
ZUFuZFRpbWVJbnB1dFR5cGUpOgorCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6
CisgICAgICAgIChIVE1MSW5wdXRFbGVtZW50KTogUmVtb3ZlIGRlZmF1bHRGb2N1cywgZm9jdXMs
IGFuZCBpc0ZvY3VzYWJsZUJ5Q2xpY2tPbkxhYmVsLgorICAgICAgICBBZGQgbWlzc2luZyBPVkVS
UklERSB0byBoYW5kbGVGb2N1c0V2ZW50LgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHA6IFJlbW92ZSB1bm5lY2Vzc2FyeSBmdW5jdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50OjpoYW5kbGVGb2N1c0V2ZW50KToKKyAgICAgICAgUGFzcyBGb2N1c0Rp
cmVjdGlvbiB2YWx1ZSB0byBJbnB1dFRZcGU6OmhhbmRsZUZvY3VzRXZlbnQuCisKKyAgICAgICAg
KiBodG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExhYmVs
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIFVzZSBpc01vdXNlRm9jdXNh
YmxlKCkuCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6IFJlbW92ZSB1bm5lY2Vzc2Fy
eSBpc0ZvY3VzYWJsZUJ5Q2xpY2tPbkxhYmVsLgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQu
aDogRGl0dG8uCisKIDIwMTMtMDItMDMgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFN1cHBvcnQgc2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVu
YWJsZWQgb24gQ2hyb21pdW0gV2luZG93cyBYUApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Jhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcApp
bmRleCBlYjI4YjM4ZDEyZDU4MjQwOTFiMDUxOGI1ZjFjOGE3NjExYWNhZGE3Li41NjQyMzcxMGI0
ZDAxYjI5NzNhOTQ5MWM0NjkyZDJmMDdkYmI4ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBl
LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCiAjaW5j
bHVkZSAiRGF0ZVRpbWVGaWVsZHNTdGF0ZS5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIK
KyNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGb3JtQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIkhUTUxEYXRhTGlzdEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRF
bGVtZW50LmgiCkBAIC0yNDAsOSArMjQxLDE0IEBAIHZvaWQgQmFzZU11bHRpcGxlRmllbGRzRGF0
ZUFuZFRpbWVJbnB1dFR5cGU6OmRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkKICAgICBCYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGU6OmRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCk7CiB9CiAKLXZvaWQgQmFzZU11
bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmZvY3VzKGJvb2wsIEZvY3VzRGlyZWN0
aW9uKQordm9pZCBCYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZTo6aGFuZGxl
Rm9jdXNFdmVudChGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7Ci0gICAgaWYgKG1fZGF0ZVRp
bWVFZGl0RWxlbWVudCkKKyAgICBpZiAoIW1fZGF0ZVRpbWVFZGl0RWxlbWVudCkKKyAgICAgICAg
cmV0dXJuOworICAgIGlmIChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25CYWNrd2FyZCkgewor
ICAgICAgICBpZiAoZWxlbWVudCgpLT5kb2N1bWVudCgpLT5wYWdlKCkpCisgICAgICAgICAgICBl
bGVtZW50KCktPmRvY3VtZW50KCktPnBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCktPmFkdmFuY2VG
b2N1cyhkaXJlY3Rpb24sIDApOworICAgIH0gZWxzZQogICAgICAgICBtX2RhdGVUaW1lRWRpdEVs
ZW1lbnQtPmZvY3VzQnlPd25lcigpOwogfQogCkBAIC0yODMsMTkgKzI4OSwxNSBAQCBib29sIEJh
c2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlOjpoYXNCYWRJbnB1dCgpIGNvbnN0
CiAgICAgcmV0dXJuIGVsZW1lbnQoKS0+dmFsdWUoKS5pc0VtcHR5KCkgJiYgbV9kYXRlVGltZUVk
aXRFbGVtZW50ICYmIG1fZGF0ZVRpbWVFZGl0RWxlbWVudC0+YW55RWRpdGFibGVGaWVsZHNIYXZl
VmFsdWVzKCk7CiB9CiAKLWJvb2wgQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5
cGU6OmlzRm9jdXNhYmxlQnlDbGlja09uTGFiZWwoKSBjb25zdAotewotICAgIHJldHVybiBlbGVt
ZW50KCktPmlzVGV4dEZvcm1Db250cm9sRm9jdXNhYmxlKCk7Ci19Ci0KIGJvb2wgQmFzZU11bHRp
cGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9h
cmRFdmVudCopIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCBiZSBmb2N1c2FibGUgZXZlbiBpZiByZWFkT25seSgpLiB3ZWJraXQub3JnL2IvMTA4
Nzk1LgorICAgIHJldHVybiBlbGVtZW50KCktPmlzVGV4dEZvcm1Db250cm9sRm9jdXNhYmxlKCkg
JiYgIWVsZW1lbnQoKS0+cmVhZE9ubHkoKTsKIH0KIAogYm9vbCBCYXNlTXVsdGlwbGVGaWVsZHNE
YXRlQW5kVGltZUlucHV0VHlwZTo6aXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiBlbGVtZW50KCktPmlzVGV4dEZvcm1Db250cm9sRm9jdXNh
YmxlKCk7CiB9CiAKIEF0b21pY1N0cmluZyBCYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlu
cHV0VHlwZTo6bG9jYWxlSWRlbnRpZmllcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Jhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmgK
aW5kZXggYjM0Y2Y4YjQwNmUwZjdkY2M2M2ViN2M4N2JlZDc1ZGI3Y2IwZDI5OC4uZjc4YTZkYzkx
MGYxZGY2NDNhYjlmMWYzZWI3ODg2ZmI3YWM1ZTQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9CYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUu
aApAQCAtODEsMTIgKzgxLDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNo
YWRvd1N1YnRyZWUoKSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveVNo
YWRvd1N1YnRyZWUoKSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZWRB
dHRyaWJ1dGVDaGFuZ2VkKCkgT1ZFUlJJREUgRklOQUw7Ci0gICAgdmlydHVhbCB2b2lkIGZvY3Vz
KGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uLCBGb2N1c0RpcmVjdGlvbikgT1ZFUlJJREUg
RklOQUw7CiAgICAgdmlydHVhbCB2b2lkIGZvcndhcmRFdmVudChFdmVudCopIE9WRVJSSURFIEZJ
TkFMOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVGb2N1c0V2ZW50KEZvY3VzRGlyZWN0aW9uKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZl
bnQqKSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzQmFkSW5wdXQoKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzQ3VzdG9tRm9jdXNMb2dpYygpIGNvbnN0
IE9WRVJSSURFIEZJTkFMOwotICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzYWJsZUJ5Q2xpY2tPbkxh
YmVsKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzS2V5Ym9hcmRGb2N1c2Fi
bGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IE9WRVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwgYm9v
bCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3QgT1ZFUlJJREUgRklOQUw7CiAgICAgdmlydHVhbCB2
b2lkIG1pbk9yTWF4QXR0cmlidXRlQ2hhbmdlZCgpIE9WRVJSSURFIEZJTkFMOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCA5Nzc0ZmM4Y2RiODAzNjdjM2I4MmNiMDI0YzllMjY3
ZmRiNjFiYjM2Li5iZDc5MmU5MDM5MmFhODU5NzdiYzk5YjMwNzcwYmIwNWM5NDdmZTlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMTE2MywxMSArMTE2Myw2IEBAIHZvaWQg
SFRNTEVsZW1lbnQ6OmFkZEhUTUxDb2xvclRvU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUs
IENTU1Byb3BlcnR5SUQgcHJvCiAgICAgc3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIGNz
c1ZhbHVlUG9vbCgpLmNyZWF0ZUNvbG9yVmFsdWUocGFyc2VkQ29sb3IucmdiKCkpKTsKIH0KIAot
Ym9vbCBIVE1MRWxlbWVudDo6aXNGb2N1c2FibGVCeUNsaWNrT25MYWJlbCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIGlzTW91c2VGb2N1c2FibGUoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCmluZGV4IGMyOGYz
Y2NjZjE0NjBhYWYyYjQzZDMwN2FiNzUxZjI0MmUyOTBiYTYuLmU1YWVmMGQxZDk1MDE0MDlmYzEw
NTMzODYzMjdlN2JlZjk2ZDE4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKQEAgLTEw
NSw3ICsxMDUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzSFRNTFVua25vd25FbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0xhYmVs
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRm9jdXNh
YmxlQnlDbGlja09uTGFiZWwoKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIEhUTUxFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiwgQ29uc3RydWN0aW9uVHlw
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA0OGQ5NzNh
N2UzYWIyYjRkYTMxYmU4OThjNmZhNWFmY2UwZmIxMjBmLi45N2JiYTFmZmYxY2Y0YjdiNWM0NGIy
Mjc4YTkyZjYyYjUxZjlhODcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKQEAgLTM3MCwxNiArMzcwLDYgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0
Qmx1cigpCiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmJsdXIoKTsKIH0KIAotdm9p
ZCBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0Rm9jdXMoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxl
Y3Rpb24sIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKLXsKLSAgICBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6Zm9jdXMocmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uLCBkaXJlY3Rpb24pOwot
fQotCi12b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmZvY3VzKGJvb2wgcmVzdG9yZVByZXZpb3VzU2Vs
ZWN0aW9uLCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgbV9pbnB1dFR5cGUtPmZv
Y3VzKHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiwgZGlyZWN0aW9uKTsKLX0KLQogYm9vbCBIVE1M
SW5wdXRFbGVtZW50OjpoYXNDdXN0b21Gb2N1c0xvZ2ljKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9pbnB1dFR5cGUtPmhhc0N1c3RvbUZvY3VzTG9naWMoKTsKQEAgLTQzNywxMCArNDI3LDkgQEAg
Ym9vbCBIVE1MSW5wdXRFbGVtZW50OjpzaG91bGRVc2VJbnB1dE1ldGhvZCgpCiAgICAgcmV0dXJu
IG1faW5wdXRUeXBlLT5zaG91bGRVc2VJbnB1dE1ldGhvZCgpOwogfQogCi12b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6OmhhbmRsZUZvY3VzRXZlbnQoRm9jdXNEaXJlY3Rpb24pCit2b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6OmhhbmRsZUZvY3VzRXZlbnQoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogewot
ICAgIC8vIEZJWE1FOiBQYXNzIHRoZSBGb2N1c0RpcmVjdGlvbiBhcmd1bWVudCB0byBJbnB1dFR5
cGU6aGFuZGxlRm9jdXNFdmVudC4KLSAgICBtX2lucHV0VHlwZS0+aGFuZGxlRm9jdXNFdmVudCgp
OworICAgIG1faW5wdXRUeXBlLT5oYW5kbGVGb2N1c0V2ZW50KGRpcmVjdGlvbik7CiB9CiAKIHZv
aWQgSFRNTElucHV0RWxlbWVudDo6aGFuZGxlQmx1ckV2ZW50KCkKQEAgLTEyMzMsMTEgKzEyMjIs
NiBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0
ZSYgYXR0cmlidXRlKSBjb25zdAogICAgIHJldHVybiBhdHRyaWJ1dGUubmFtZSgpID09IHNyY0F0
dHIgfHwgYXR0cmlidXRlLm5hbWUoKSA9PSBmb3JtYWN0aW9uQXR0ciB8fCBIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoYXR0cmlidXRlKTsKIH0KIAotYm9vbCBIVE1M
SW5wdXRFbGVtZW50Ojppc0ZvY3VzYWJsZUJ5Q2xpY2tPbkxhYmVsKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9pbnB1dFR5cGUtPmlzRm9jdXNhYmxlQnlDbGlja09uTGFiZWwoKTsKLX0KLQogU3Ry
aW5nIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRWYWx1ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGZhc3RHZXRBdHRyaWJ1dGUodmFsdWVBdHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmgKaW5kZXggNWQzNGYzNDIyZGM2ODMwMTFhOTJlZjdjZDE3NGQzMzRiZmU1OGFiOS4u
MGY5ZGIwOTNhZjJmOWY0MGFmODEzOWFmMTNmZDYzYThmODgyY2JjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTI4MCw4ICsyODAsNiBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgYmx1cigpIE9WRVJSSURFOwogICAgIHZvaWQgZGVmYXVsdEJsdXIoKTsK
LSAgICB2b2lkIGRlZmF1bHRGb2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiwgRm9j
dXNEaXJlY3Rpb24pOwotICAgIHZpcnR1YWwgdm9pZCBmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91
c1NlbGVjdGlvbiA9IHRydWUsIEZvY3VzRGlyZWN0aW9uID0gRm9jdXNEaXJlY3Rpb25Ob25lKSBP
VkVSUklERTsKIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKCkgY29uc3Qg
T1ZFUlJJREU7CiAKQEAgLTM2MCw3ICszNTgsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBwb3N0RGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqLCB2b2lkKiBkYXRhRnJvbVByZURpc3Bh
dGNoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUm
KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2FibGVCeUNsaWNrT25M
YWJlbCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc0luUmFuZ2UoKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgaXNPdXRPZlJhbmdlKCkgY29uc3Q7CiAKQEAgLTM4MCw3ICsz
NzcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQbGFjZWhvbGRlclRleHQo
KTsKICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gaW5uZXJUZXh0VmFsdWUoKS5pc0VtcHR5KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0
eVN1Z2dlc3RlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3VnZ2VzdGVkVmFsdWUoKS5pc0VtcHR5
KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRm9jdXNFdmVudChGb2N1c0RpcmVjdGlvbik7
CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUZvY3VzRXZlbnQoRm9jdXNEaXJlY3Rpb24pIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVCbHVyRXZlbnQoKTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBpc09wdGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiAhaXNSZXF1aXJlZEZv
cm1Db250cm9sKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVs
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCmlu
ZGV4IDkzZTBmZmNmZGQwYWE3NjQzZjg1YTQzZmUwYTdkOTUyMmUxMWFiZjUuLmY1NmYyZTcyZDMx
ZDYzNTIwNTc3OWFmMmY0OWMzYWU3OTU3MGM0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGFiZWxFbGVtZW50LmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgSFRNTExhYmVsRWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZ0KQogICAgICAgICAvLyBDbGljayB0aGUg
Y29ycmVzcG9uZGluZyBjb250cm9sLgogICAgICAgICBlbGVtZW50LT5kaXNwYXRjaFNpbXVsYXRl
ZENsaWNrKGV2dCk7CiAKLSAgICAgICAgaWYgKGVsZW1lbnQtPmlzRm9jdXNhYmxlQnlDbGlja09u
TGFiZWwoKSkKKyAgICAgICAgaWYgKGVsZW1lbnQtPmlzTW91c2VGb2N1c2FibGUoKSkKICAgICAg
ICAgICAgIGVsZW1lbnQtPmZvY3VzKCk7CiAKICAgICAgICAgcHJvY2Vzc2luZ0NsaWNrID0gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggODIwZTVjODJmZjRlMTYwMTBkMmRh
YjBjMGRiYWRkMWFiYTM1N2NlYS4uMTEwMDkyZWI0NDM0MzBkZmFkNDdiNzYwODliZjAzZTFiZWI3
NjNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtNDcwLDExICs0NzAsNiBAQCB2
b2lkIElucHV0VHlwZTo6Ymx1cigpCiAgICAgZWxlbWVudCgpLT5kZWZhdWx0Qmx1cigpOwogfQog
Ci12b2lkIElucHV0VHlwZTo6Zm9jdXMoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24sIEZv
Y3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKLXsKLSAgICBlbGVtZW50KCktPmRlZmF1bHRGb2N1cyhy
ZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24sIGRpcmVjdGlvbik7Ci19Ci0KIHZvaWQgSW5wdXRUeXBl
OjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHsKIH0KQEAgLTU0NywxMSArNTQyLDYgQEAgYm9vbCBJ
bnB1dFR5cGU6Omhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIElucHV0VHlwZTo6aXNGb2N1c2FibGVCeUNsaWNrT25MYWJlbCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIGlzTW91c2VGb2N1c2FibGUoKTsKLX0KLQogYm9vbCBJbnB1dFR5cGU6Omlz
S2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCogZXZlbnQpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGVsZW1lbnQoKS0+aXNUZXh0Rm9ybUNvbnRyb2xLZXlib2FyZEZvY3VzYWJsZShldmVudCk7
CkBAIC01NjcsNyArNTU3LDcgQEAgYm9vbCBJbnB1dFR5cGU6OnNob3VsZFVzZUlucHV0TWV0aG9k
KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSW5wdXRUeXBlOjpoYW5kbGVG
b2N1c0V2ZW50KCkKK3ZvaWQgSW5wdXRUeXBlOjpoYW5kbGVGb2N1c0V2ZW50KEZvY3VzRGlyZWN0
aW9uKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCA0NWRlYjdkNzFiNTQ0YmRh
YTBmYmQ3OTkyNTIwMzEyZWYzMGE5ODIwLi5hYjY5Y2I4OGRlOWY3MWM4ZDdmODQ3M2VlOTdmYTFl
ODNlYmYwYzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTIwMSwxMSArMjAxLDEwIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VibWl0SW1wbGljaXRseShFdmVudCop
OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+IGZvcm1Gb3JTdWJtaXNz
aW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25z
dDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2FibGVCeUNsaWNrT25MYWJlbCgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0OwogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRVc2VJbnB1dE1ldGhvZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVGb2N1c0V2ZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUZvY3VzRXZlbnQoRm9j
dXNEaXJlY3Rpb24pOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVCbHVyRXZlbnQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKTsKICAgICB2
aXJ0dWFsIGJvb2wgY2FuQmVTdWNjZXNzZnVsU3VibWl0QnV0dG9uKCk7CkBAIC0yMTUsNyArMjE0
LDYgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgYmx1cigpOwotICAgIHZp
cnR1YWwgdm9pZCBmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiwgRm9jdXNEaXJl
Y3Rpb24pOwogCiAgICAgLy8gU2hhZG93IHRyZWUgaGFuZGxpbmcKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9QYXNzd29yZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1Bhc3N3b3JkSW5wdXRUeXBlLmNwcAppbmRleCA1YzY4Yzk3NWRkYzg0YmI5MWIwZTQwZGYy
ZThhZWI1NTE2OWM5YjRlLi45ZmUzMWFjNmQzNGI4ZjRiNjk4OThjOWQ0NDIzYjUzMjFhYzQ1YWZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Bhc3N3b3JkSW5wdXRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Bhc3N3b3JkSW5wdXRUeXBlLmNwcApAQCAtOTUsOSAr
OTUsOSBAQCBib29sIFBhc3N3b3JkSW5wdXRUeXBlOjppc1Bhc3N3b3JkRmllbGQoKSBjb25zdAog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFBhc3N3b3JkSW5wdXRUeXBlOjpoYW5kbGVGb2N1
c0V2ZW50KCkKK3ZvaWQgUGFzc3dvcmRJbnB1dFR5cGU6OmhhbmRsZUZvY3VzRXZlbnQoRm9jdXNE
aXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIEJhc2VUZXh0SW5wdXRUeXBlOjpoYW5kbGVGb2N1
c0V2ZW50KCk7CisgICAgQmFzZVRleHRJbnB1dFR5cGU6OmhhbmRsZUZvY3VzRXZlbnQoZGlyZWN0
aW9uKTsKICAgICBpZiAoZWxlbWVudCgpLT5kb2N1bWVudCgpLT5mcmFtZSgpKQogICAgICAgICBl
bGVtZW50KCktPmRvY3VtZW50KCktPnNldFVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZl
KHRydWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QYXNzd29yZElucHV0
VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QYXNzd29yZElucHV0VHlwZS5oCmluZGV4IGZi
OTEwMWMwMmNkMjRjMDE3YzBkMzcwYjgyYTgxMWVjZmE2MTYwODMuLjJiMjdlNGM2ZDc2NTNlMzM2
ZGE5ZjQ4YTRiYWQzMjkxZTc5YzIyNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UGFzc3dvcmRJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Bhc3N3b3JkSW5w
dXRUeXBlLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkUmVzcGVjdExpc3RBdHRyaWJ1dGUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkUmVzcGVjdFNwZWVjaEF0dHJpYnV0ZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBp
c1Bhc3N3b3JkRmllbGQoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
Rm9jdXNFdmVudCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVGb2N1c0V2ZW50
KEZvY3VzRGlyZWN0aW9uKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQmx1ckV2
ZW50KCkgT1ZFUlJJREU7CiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjU0ZTc4YzcyMzgzODk1ZjE5NzNiZDM3ZjZk
MDliM2Q2YzcxY2I2Mi4uYmEzZjg2MmY0OThlYWY2ZjgxMWI3YWZkOTlkZjdjMTg0ODlmN2Y5MSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAyLTA0ICBLZW50IFRhbXVyYSAgPHRrZW50QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBJTlBVVF9NVUxUSVBMRV9GSUVMRFNfVUk6IEZvY3VzIG9y
ZGVyIGlzIG5vdCBjb250cm9sbGFibGUgYnkgdGFiSW5kZXggYXR0cmlidXRlIG9uIDxpbnB1dD4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODQ0Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9m
b3Jtcy90aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy10YWJpbmRleC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1m
aWVsZHMvdGltZS1tdWx0aXBsZS1maWVsZHMtdGFiaW5kZXguaHRtbDogQWRkZWQuCisKIDIwMTMt
MDItMDMgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFN1cHBv
cnQgc2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQgb24gQ2hyb21pdW0g
V2luZG93cyBYUApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90aW1lLW11bHRp
cGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy10YWJpbmRleC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RpbWUtbXVsdGlwbGUtZmllbGRzL3RpbWUtbXVsdGlwbGUt
ZmllbGRzLXRhYmluZGV4LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjViODc5NTFlZjA1ZTIx
NjFmZjI3ZDZhNzUxOWJjZGJlYTYxMzdhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy90aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy10YWJp
bmRleC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorRm9yd29yZDoKK1BBU1MgZXZlbnRT
ZW5kZXIua2V5RG93bih0YWIpOyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmlkIGlzICJ0YWJpbmRl
eDIwLTEiCitQQVNTIGV2ZW50U2VuZGVyLmtleURvd24odGFiKTsgZG9jdW1lbnQuYWN0aXZlRWxl
bWVudC5pZCBpcyAidGltZS13aXRoLXRhYmluZGV4MjAiCitQQVNTIHNoYWRvd1Jvb3QuYWN0aXZl
RWxlbWVudC5nZXRBdHRyaWJ1dGUoInBzZXVkbyIpIGlzIGZpcnN0U3ViRmllbGQKK1BBU1MgZXZl
bnRTZW5kZXIua2V5RG93bih0YWIpOyBldmVudFNlbmRlci5rZXlEb3duKHRhYik7IHNoYWRvd1Jv
b3QuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoInBzZXVkbyIpIGlzIGxhc3RTdWJGaWVsZAor
UEFTUyBldmVudFNlbmRlci5rZXlEb3duKHRhYik7IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuaWQg
aXMgInRhYmluZGV4MjAtMyIKK1BBU1MgZXZlbnRTZW5kZXIua2V5RG93bih0YWIpOyBkb2N1bWVu
dC5hY3RpdmVFbGVtZW50LmlkIGlzICJ0YWJpbmRleDMwIgorCitCYWNrd29yZDoKK1BBU1MgZXZl
bnRTZW5kZXIua2V5RG93bih0YWIsIHNoaWZ0KTsgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5pZCBp
cyAidGFiaW5kZXgyMC0zIgorUEFTUyBldmVudFNlbmRlci5rZXlEb3duKHRhYiwgc2hpZnQpOyBk
b2N1bWVudC5hY3RpdmVFbGVtZW50LmlkIGlzICJ0aW1lLXdpdGgtdGFiaW5kZXgyMCIKK1BBU1Mg
c2hhZG93Um9vdC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgicHNldWRvIikgaXMgbGFzdFN1
YkZpZWxkCitQQVNTIGV2ZW50U2VuZGVyLmtleURvd24odGFiLCBzaGlmdCk7IGV2ZW50U2VuZGVy
LmtleURvd24odGFiLCBzaGlmdCk7IHNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1
dGUoInBzZXVkbyIpIGlzIGZpcnN0U3ViRmllbGQKK1BBU1MgZXZlbnRTZW5kZXIua2V5RG93bih0
YWIsIHNoaWZ0KTsgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5pZCBpcyAidGFiaW5kZXgyMC0xIgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisgICAgCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RpbWUtbXVsdGlwbGUtZmllbGRzL3Rp
bWUtbXVsdGlwbGUtZmllbGRzLXRhYmluZGV4Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3RpbWUtbXVsdGlwbGUtZmllbGRzL3RpbWUtbXVsdGlwbGUtZmllbGRzLXRhYmluZGV4Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzg0N2Y3M2UyZGRhODQwZTlkMDExOTg4MWI4MmE2Y2I3M2ExYjFmNwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVs
ZHMvdGltZS1tdWx0aXBsZS1maWVsZHMtdGFiaW5kZXguaHRtbApAQCAtMCwwICsxLDQ1IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvY29tbW9uLmpzIj48L3NjcmlwdD4KKworPGlucHV0IGlkPSJ0YWJpbmRleDMwIiB0YWJpbmRl
eD0iMzAiPgorPGlucHV0IGlkPSJ0YWJpbmRleDIwLTEiIHRhYmluZGV4PSIyMCI+Cis8aW5wdXQg
aWQ9InRpbWUtd2l0aC10YWJpbmRleDIwIiB0YWJpbmRleD0iMjAiIHR5cGU9InRpbWUiPgorPGlu
cHV0IGlkPSJ0YWJpbmRleDIwLTMiIHRhYmluZGV4PSIyMCI+Cis8aW5wdXQgaWQ9InRhYmluZGV4
MTAiIHRhYmluZGV4PSIxMCI+CisKKzxzY3JpcHQ+CitpZiAoIXdpbmRvdy5ldmVudFNlbmRlciB8
fCAhd2luZG93LmludGVybmFscykKKyAgICBkZWJ1ZygnVGhpcyByZXF1aXJlcyBEUlQvV1JULicp
OworCit2YXIgZmlyc3RTdWJGaWVsZCA9ICItd2Via2l0LWRhdGV0aW1lLWVkaXQtaG91ci1maWVs
ZCI7Cit2YXIgbGFzdFN1YkZpZWxkID0gIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1hbXBtLWZpZWxk
IjsKK3ZhciB0YWIgPSAnXHQnOwordmFyIHNoaWZ0ID0gWydzaGlmdEtleSddOworCiskKCd0YWJp
bmRleDEwJykuZm9jdXMoKTsKK3ZhciBzaGFkb3dSb290ID0gaW50ZXJuYWxzLnlvdW5nZXN0U2hh
ZG93Um9vdCgkKCd0aW1lLXdpdGgtdGFiaW5kZXgyMCcpKTsKKworZGVidWcoJ0ZvcndvcmQ6Jyk7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50U2VuZGVyLmtleURvd24odGFiKTsgZG9jdW1l
bnQuYWN0aXZlRWxlbWVudC5pZCcsICd0YWJpbmRleDIwLTEnKTsKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygnZXZlbnRTZW5kZXIua2V5RG93bih0YWIpOyBkb2N1bWVudC5hY3RpdmVFbGVtZW50Lmlk
JywgJ3RpbWUtd2l0aC10YWJpbmRleDIwJyk7CitzaG91bGRCZSgnc2hhZG93Um9vdC5hY3RpdmVF
bGVtZW50LmdldEF0dHJpYnV0ZSgicHNldWRvIiknLCAnZmlyc3RTdWJGaWVsZCcpOworc2hvdWxk
QmUoJ2V2ZW50U2VuZGVyLmtleURvd24odGFiKTsgZXZlbnRTZW5kZXIua2V5RG93bih0YWIpOyBz
aGFkb3dSb290LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJwc2V1ZG8iKScsICdsYXN0U3Vi
RmllbGQnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZXZlbnRTZW5kZXIua2V5RG93bih0YWIp
OyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmlkJywgJ3RhYmluZGV4MjAtMycpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdldmVudFNlbmRlci5rZXlEb3duKHRhYik7IGRvY3VtZW50LmFjdGl2ZUVs
ZW1lbnQuaWQnLCAndGFiaW5kZXgzMCcpOworCitkZWJ1ZygnJyk7CitkZWJ1ZygnQmFja3dvcmQ6
Jyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50U2VuZGVyLmtleURvd24odGFiLCBzaGlm
dCk7IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuaWQnLCAndGFiaW5kZXgyMC0zJyk7CitzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ2V2ZW50U2VuZGVyLmtleURvd24odGFiLCBzaGlmdCk7IGRvY3VtZW50
LmFjdGl2ZUVsZW1lbnQuaWQnLCAndGltZS13aXRoLXRhYmluZGV4MjAnKTsKK3Nob3VsZEJlKCdz
aGFkb3dSb290LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJwc2V1ZG8iKScsICdsYXN0U3Vi
RmllbGQnKTsKK3Nob3VsZEJlKCdldmVudFNlbmRlci5rZXlEb3duKHRhYiwgc2hpZnQpOyBldmVu
dFNlbmRlci5rZXlEb3duKHRhYiwgc2hpZnQpOyBzaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQuZ2V0
QXR0cmlidXRlKCJwc2V1ZG8iKScsICdmaXJzdFN1YkZpZWxkJyk7CitzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ2V2ZW50U2VuZGVyLmtleURvd24odGFiLCBzaGlmdCk7IGRvY3VtZW50LmFjdGl2ZUVs
ZW1lbnQuaWQnLCAndGFiaW5kZXgyMC0xJyk7CisKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>