<?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>18887</bug_id>
          
          <creation_ts>2008-05-04 13:18:51 -0700</creation_ts>
          <short_desc>WF2 Support for autofocus controls</short_desc>
          <delta_ts>2009-11-02 14:33:14 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.w3.org/TR/web-forms-2/#the-autofocus</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>LayoutTestFailure</keywords>
          <priority>P3</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>19264</blocked>
    
    <blocked>31031</blocked>
    
    <blocked>31032</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Michelangelo De Simone">michelangelo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adele</cc>
    
    <cc>hyatt</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>79627</commentid>
    <comment_count>0</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2008-05-04 13:18:51 -0700</bug_when>
    <thetext>WebCore controls should honour the autofocus attribute, whenever applicable according to W3C/WHATWG specs.

When a form control is marked with the autofocus attribute it should be immediatly focused, as soon as the document is loaded. This applies to all controls, except for hidden ones. On document loading the viewport is &quot;moved&quot; accordingly to the last autofocus control.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79629</commentid>
    <comment_count>1</comment_count>
      <attachid>20961</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2008-05-04 13:23:54 -0700</bug_when>
    <thetext>Created attachment 20961
Initial implementation

New DOM attribute brakes testcase fast/dom/domListEnumeration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79699</commentid>
    <comment_count>2</comment_count>
      <attachid>20973</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2008-05-05 13:23:07 -0700</bug_when>
    <thetext>Created attachment 20973
Initial implementation, second revision

Fixed bad autofocus behavior on readonly/disabled controls. More tests added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79987</commentid>
    <comment_count>3</comment_count>
      <attachid>20973</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2008-05-09 09:24:49 -0700</bug_when>
    <thetext>Comment on attachment 20973
Initial implementation, second revision

This is a really good first cut, and I&apos;m glad you posted this patch!

I have  a few things that I&apos;d like you to change.

I think that instead of the code you have in the Document class, you can call focus() directly from the HTMLGenericFormElement class when you parse the attribute.  focus() will automatically handle updating the appearance style at the right time.  You shouldn&apos;t need to explicitly call theme()-&gt;stateChanged.

If you do all that work in HTMLGenericFormElement, then you shouldn&apos;t need the hasAutofocus method.  You can just do that check when you parse the attr.  And you can check document-&gt;ignoreAutofocus() at that time too.

I think you&apos;re on the right track, and I&apos;m looking forward to seeing what you post next!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80006</commentid>
    <comment_count>4</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2008-05-09 13:39:38 -0700</bug_when>
    <thetext>Michelangelo and I talked more about this on IRC, and I see now that when you parse the attribute, it really is too early to set focus.  You don&apos;t really know if its a focusable control at that point (even if it does have no renderer, you might not have parsed the disabled attr yet).  I think I&apos;m ok with storing the autofocus node in the document, but I&apos;m not sure waiting for the DOMContentLoaded event is the right time to call focus().

CC&apos;ing Hyatt, so he can weigh in, and add any other comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80295</commentid>
    <comment_count>5</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-05-13 14:26:19 -0700</bug_when>
    <thetext>You should have a change to the autofocus node kick off a timer to call focus() on the autofocus node as soon as possible rather than listening for DOMContentLoaded.  If the autofocus node changes and the timer is already running, you just update the node and don&apos;t restart the timer.  The timer callback can then just call focus() on the node.

Then you can remove all that code in the attribute parsing that is calling setChanged and updating the theme state (since focus() in the timer callback will do that for you).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81306</commentid>
    <comment_count>6</comment_count>
      <attachid>21310</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2008-05-23 07:52:28 -0700</bug_when>
    <thetext>Created attachment 21310
Initial implementation, third revision

Third revision. Code refactored, major rationalization. WebCore::Document is now minimally affected. There was no need to set a timer: focus() already does that pretty well.

Now passes all autofocus test suite from Opera:
http://tc.labs.opera.com/html/forms/input/common-attributes/autofocus/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81650</commentid>
    <comment_count>7</comment_count>
      <attachid>21310</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2008-05-27 13:59:11 -0700</bug_when>
    <thetext>Comment on attachment 21310
Initial implementation, third revision

Great work so far-- you&apos;re almost there!  A few comments...

1)The test you added is a good basic test, but it only tests that the attribute is right.  Not that the focus behavior is right.  It would be nice to add versions of those Opera tests too for a more thorough test suite.  It would also be good to have at least one test for &quot;ignoreAutofocus&quot;, if that&apos;s possible.

2) The ChangeLog should have detailed entries for each change.

3) In HTMLGenericFormElement::attach, you shouldn&apos;t need to check for disabled since that is already checked in focus() by calling supportsFocus() and isFocusable().  In fact...should isFocusable() include a check for read-only?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81830</commentid>
    <comment_count>8</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2008-05-29 07:12:38 -0700</bug_when>
    <thetext>(In reply to comment #7)

&gt; 1)The test you added is a good basic test, but it only tests that the attribute
&gt; is right.  Not that the focus behavior is right.  It would be nice to add
&gt; versions of those Opera tests too for a more thorough test suite.  It would
&gt; also be good to have at least one test for &quot;ignoreAutofocus&quot;, if that&apos;s
&gt; possible.

Opera autofocus test suite is being imported; results in platform/mac/fast/forms. 

&gt; 3) In HTMLGenericFormElement::attach, you shouldn&apos;t need to check for disabled
&gt; since that is already checked in focus() by calling supportsFocus() and
&gt; isFocusable().  In fact...should isFocusable() include a check for read-only?

It could but having isReadOnlyControl() checked during isFocusable() would brake regression on fast/forms/input-appearance-readonly.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81980</commentid>
    <comment_count>9</comment_count>
      <attachid>21439</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2008-05-30 14:46:02 -0700</bug_when>
    <thetext>Created attachment 21439
New tests imported from Opera autofocus test suite

Test suite from Opera imported.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83504</commentid>
    <comment_count>10</comment_count>
      <attachid>21310</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2008-06-16 11:34:26 -0700</bug_when>
    <thetext>Comment on attachment 21310
Initial implementation, third revision

I and Adele discussed about the patch and decided that the approach (seems) correct. No way to use &quot;isFocusable()&quot; because at the the autofocus is fired the that check always fails.

More tests waiting for later review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83511</commentid>
    <comment_count>11</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2008-06-16 11:46:48 -0700</bug_when>
    <thetext>Previous comment was to &quot;buggy&quot;, reposting.

I and Adele discussed about the patch and decided that the approach (seems) correct. No way to use &quot;isFocusable()&quot; because at the time autofocus is fired that check always fails.

More tests waiting for later review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83550</commentid>
    <comment_count>12</comment_count>
      <attachid>21746</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2008-06-16 16:11:44 -0700</bug_when>
    <thetext>Created attachment 21746
Initial implementation, fourth revision - BAD DIFF FORMATTING, IGNORE

Minor changes: cut m_autofocus (no need for it), HTMLGenericFormElement=&gt;HTMLFormElementControl rename, HTMLAttributeNames format change.

Full test suite merged.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83552</commentid>
    <comment_count>13</comment_count>
      <attachid>21747</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2008-06-16 16:15:42 -0700</bug_when>
    <thetext>Created attachment 21747
Initial implementation, fourth revision</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83556</commentid>
    <comment_count>14</comment_count>
      <attachid>21748</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2008-06-16 16:53:54 -0700</bug_when>
    <thetext>Created attachment 21748
Initial implementation, fourth revision (domListEnumeration patch merged)

domListEnumeration patched. Changelog now has logs for each method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83557</commentid>
    <comment_count>15</comment_count>
      <attachid>21748</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2008-06-16 17:08:27 -0700</bug_when>
    <thetext>Comment on attachment 21748
Initial implementation, fourth revision (domListEnumeration patch merged)

yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83558</commentid>
    <comment_count>16</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2008-06-16 18:10:13 -0700</bug_when>
    <thetext>I applied the patch, and ran the layout tests, and I&apos;m actually seeing some failures.  So I&apos;m going to investigate that before checking in</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83605</commentid>
    <comment_count>17</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2008-06-17 11:47:16 -0700</bug_when>
    <thetext>Committed revision 34626.

I altered two of the opera tests (4 and 5)  to use layoutTestController.waitUntilDone() and layoutTestController.notifyDone().</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20961</attachid>
            <date>2008-05-04 13:23:54 -0700</date>
            <delta_ts>2008-05-05 13:23:07 -0700</delta_ts>
            <desc>Initial implementation</desc>
            <filename>webkit_autofocus_patch.txt</filename>
            <type>text/plain</type>
            <size>16355</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMjg1MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMDgtMDUtMDQgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgPG0uZGVz
QG1hYy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKwlGaXJz
dCBzdXBwb3J0IGZvciBhdXRvZm9jdXMgZm9ybSBjb250cm9scy4KKworICAgICAgICBUZXN0czog
ZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZm9jdXMtY2hlY2suaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9mb3Jtcy9pbnB1dC1hdXRvZm9jdXMtb25mb2N1cy1jaGVjay5odG1sCisKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVkTGFzdFJlZik6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpz
ZXRBdXRvZm9jdXNOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjphdXRvZm9jdXNOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpp
Z25vcmVBdXRvZm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldElnbm9yZUF1
dG9mb2N1cyk6CisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisgICAgICAg
ICogaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MR2VuZXJp
Y0Zvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxHZW5lcmljRm9ybUVsZW1l
bnQ6OkhUTUxHZW5lcmljRm9ybUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEdlbmVy
aWNGb3JtRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEdlbmVyaWNGb3JtRWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxH
ZW5lcmljRm9ybUVsZW1lbnQ6OnNldEF1dG9mb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
R2VuZXJpY0Zvcm1FbGVtZW50OjpoYXNBdXRvZm9jdXMpOgorICAgICAgICAqIGh0bWwvSFRNTEdl
bmVyaWNGb3JtRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEdlbmVyaWNGb3JtRWxl
bWVudDo6YXV0b2ZvY3VzKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsOgor
ICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5pZGw6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjpzZXRVc2VyRWRp
dGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaDoKKwogMjAwOC0w
NS0wMyAgUm9iIEJ1aXMgIDxidWlzQGtkZS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2Ft
LgpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMzI4NDkpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNyw2ICszMDcsOCBAQCBEb2N1bWVudDo6RG9jdW1l
bnQoRE9NSW1wbGVtZW50YXRpb24qIGltCiAgICAgbV9kb2N1bWVudC5yZXNldFNraXBwaW5nUmVm
KHRoaXMpOwogCiAgICAgbV9wcmludGluZyA9IGZhbHNlOworICAgIAorICAgIG1faWdub3JlQXV0
b2ZvY3VzID0gZmFsc2U7CiAKICAgICBtX2ZyYW1lID0gZnJhbWU7CiAgICAgbV9yZW5kZXJBcmVu
YSA9IDA7CkBAIC0zNzMsNiArMzc1LDcgQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlZExhc3RSZWYo
KQogICAgICAgICAvLyB0aGVzZSBleHRyYSBwb2ludGVycyBvciB3ZSB3aWxsIGNyZWF0ZSBhIHJl
ZmVyZW5jZSBjeWNsZS4KICAgICAgICAgbV9kb2NUeXBlID0gMDsKICAgICAgICAgbV9mb2N1c2Vk
Tm9kZSA9IDA7CisgICAgICAgIG1fYXV0b2ZvY3VzTm9kZSA9IDA7CiAgICAgICAgIG1faG92ZXJO
b2RlID0gMDsKICAgICAgICAgbV9hY3RpdmVOb2RlID0gMDsKICAgICAgICAgbV90aXRsZUVsZW1l
bnQgPSAwOwpAQCAtMTI4Miw2ICsxMjg1LDcgQEAgdm9pZCBEb2N1bWVudDo6ZGV0YWNoKCkKICAg
ICAKICAgICBtX2hvdmVyTm9kZSA9IDA7CiAgICAgbV9mb2N1c2VkTm9kZSA9IDA7CisgICAgbV9h
dXRvZm9jdXNOb2RlID0gMDsKICAgICBtX2FjdGl2ZU5vZGUgPSAwOwogCiAgICAgQ29udGFpbmVy
Tm9kZTo6ZGV0YWNoKCk7CkBAIC0yNDY4LDYgKzI0NzIsMzEgQEAgU2V0Rm9jdXNlZE5vZGVEb25l
OgogICAgIHJldHVybiAhZm9jdXNDaGFuZ2VCbG9ja2VkOwogICB9CiAgIAorYm9vbCBEb2N1bWVu
dDo6c2V0QXV0b2ZvY3VzTm9kZShQYXNzUmVmUHRyPE5vZGU+IG5ld0F1dG9mb2N1c05vZGUpCit7
CisgICAgQVNTRVJUKGlzSFRNTERvY3VtZW50KCkpOworLy8gICAgQVNTRVJUKChzdGF0aWNfY2Fz
dDxIVE1MR2VuZXJpY0Zvcm1FbGVtZW50Kj4obmV3QXV0b2ZvY3VzTm9kZSkpLT5hdXRvZm9jdXMo
KSk7CisgICAgCisgICAgaWYgKG1fYXV0b2ZvY3VzTm9kZSAhPSBuZXdBdXRvZm9jdXNOb2RlKSB7
CisgICAgICAgIG1fYXV0b2ZvY3VzTm9kZSA9IG5ld0F1dG9mb2N1c05vZGU7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRG9j
dW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKK3sKKyAgICBpZiAoZXZ0LT50
eXBlKCkgPT0gRE9NQ29udGVudExvYWRlZEV2ZW50ICYmIGF1dG9mb2N1c05vZGUoKSkgeworICAg
ICAgICBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50KiBhZkVsZW0gPSBzdGF0aWNfY2FzdDxIVE1MR2Vu
ZXJpY0Zvcm1FbGVtZW50Kj4oYXV0b2ZvY3VzTm9kZSgpKTsKKyAgICAgICAgCisgICAgICAgIGlm
IChhZkVsZW0tPmhhc0F1dG9mb2N1cygpICYmICFpZ25vcmVBdXRvZm9jdXMoKSkKKyAgICAgICAg
ICAgIGFmRWxlbS0+Zm9jdXMoKTsKKyAgICB9CisgICAgCisgICAgQ29udGFpbmVyTm9kZTo6ZGVm
YXVsdEV2ZW50SGFuZGxlcihldnQpOworfQorCiB2b2lkIERvY3VtZW50OjpzZXRDU1NUYXJnZXQo
Tm9kZSogbikKIHsKICAgICBpZiAobV9jc3NUYXJnZXQpCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDMy
ODQ5KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDczLDYg
KzQ3MywxMyBAQCBwdWJsaWM6CiAKICAgICBib29sIHNldEZvY3VzZWROb2RlKFBhc3NSZWZQdHI8
Tm9kZT4pOwogICAgIE5vZGUqIGZvY3VzZWROb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mb2N1c2Vk
Tm9kZS5nZXQoKTsgfQorICAgIAorICAgIC8vIEF1dG9mb2N1cyBzdHVmZgorICAgIGJvb2wgc2V0
QXV0b2ZvY3VzTm9kZShQYXNzUmVmUHRyPE5vZGU+KTsKKyAgICBOb2RlKiBhdXRvZm9jdXNOb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9hdXRvZm9jdXNOb2RlLmdldCgpOyB9CisgICAgdmlydHVhbCB2
b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKKyAgICBib29sIGlnbm9yZUF1dG9mb2N1
cygpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlQXV0b2ZvY3VzOyB9OworICAgIHZvaWQgc2V0SWdu
b3JlQXV0b2ZvY3VzKGJvb2wgc2hvdWxkSWdub3JlKSB7IG1faWdub3JlQXV0b2ZvY3VzID0gc2hv
dWxkSWdub3JlOyB9OwogCiAgICAgdm9pZCBzZXRIb3Zlck5vZGUoUGFzc1JlZlB0cjxOb2RlPik7
CiAgICAgTm9kZSogaG92ZXJOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9ob3Zlck5vZGUuZ2V0KCk7
IH0KQEAgLTc3NiwxMiArNzgzLDE1IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPENTU1N0eWxlU2hl
ZXQ+IG1fbWFwcGVkRWxlbWVudFNoZWV0OwogCiAgICAgYm9vbCBtX3ByaW50aW5nOworICAgIAor
ICAgIGJvb2wgbV9pZ25vcmVBdXRvZm9jdXM7CiAKICAgICBQYXJzZU1vZGUgbV9wYXJzZU1vZGU7
CiAKICAgICBDb2xvciBtX3RleHRDb2xvcjsKIAogICAgIFJlZlB0cjxOb2RlPiBtX2ZvY3VzZWRO
b2RlOworICAgIFJlZlB0cjxOb2RlPiBtX2F1dG9mb2N1c05vZGU7CiAgICAgUmVmUHRyPE5vZGU+
IG1faG92ZXJOb2RlOwogICAgIFJlZlB0cjxOb2RlPiBtX2FjdGl2ZU5vZGU7CiAgICAgbXV0YWJs
ZSBSZWZQdHI8RWxlbWVudD4gbV9kb2N1bWVudEVsZW1lbnQ7CkluZGV4OiBXZWJDb3JlL2h0bWwv
SFRNTEF0dHJpYnV0ZU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQXR0
cmlidXRlTmFtZXMuaW4JKHJldmlzaW9uIDMyODQ5KQorKysgV2ViQ29yZS9odG1sL0hUTUxBdHRy
aWJ1dGVOYW1lcy5pbgkod29ya2luZyBjb3B5KQpAQCAtOCw2ICs4LDcgQEAgYWxpbmsKIGFsdAog
YXJjaGl2ZQogYXV0b2NvbXBsZXRlCithdXRvZm9jdXMKIGF1dG9wbGF5CiBhdXRvc2F2ZQogYXhp
cwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaWRsCShyZXZpc2lvbiAzMjg0OSkKKysr
IFdlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgIEhU
TUxGb3JtRWxlbWVudCAgICAgIGZvcm07CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0Nv
bnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgICAgICAgICAgICBhY2Nlc3NLZXk7CiAg
ICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgYm9vbGVhbiAgICAgICAgICAgICAgZGlzYWJsZWQ7
CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgYm9vbGVhbiAgICAgICAgICAgICAgYXV0b2Zv
Y3VzOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmlu
Z10gRE9NU3RyaW5nICAgICAgICAgICAgbmFtZTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
ICBET01TdHJpbmcgICAgICAgICAgICB0eXBlOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUg
IFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nICAgICAgICAgICAgdmFsdWU7Cklu
ZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEdlbmVyaWNGb3JtRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0hUTUxHZW5lcmljRm9ybUVsZW1lbnQuY3BwCShyZXZpc2lvbiAzMjg0
OSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MR2VuZXJpY0Zvcm1FbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDcsNiArNDcsNyBAQCBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50OjpIVE1MR2VuZXJp
Y0Zvcm1FCiAgICAgLCBtX2Zvcm0oZikKICAgICAsIG1fZGlzYWJsZWQoZmFsc2UpCiAgICAgLCBt
X3JlYWRPbmx5KGZhbHNlKQorICAgICwgbV9hdXRvZm9jdXMoZmFsc2UpCiAgICAgLCBtX3ZhbHVl
TWF0Y2hlc1JlbmRlcmVyKGZhbHNlKQogewogICAgIGlmICghbV9mb3JtKQpAQCAtODEsNiArODIs
MTQgQEAgdm9pZCBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50OjpwYXJzZU1hcHBlZAogICAgICAgICAg
ICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgp
KQogICAgICAgICAgICAgICAgIHRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBSZWFk
T25seVN0YXRlKTsKICAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGF1
dG9mb2N1c0F0dHIpIHsKKyAgICAgICAgYm9vbCBvbGRBdXRvZm9jdXMgPSBtX2F1dG9mb2N1czsK
KyAgICAgICAgbV9hdXRvZm9jdXMgPSAhYXR0ci0+aXNOdWxsKCk7CisgICAgICAgIGlmIChvbGRB
dXRvZm9jdXMgIT0gbV9hdXRvZm9jdXMpIHsKKyAgICAgICAgICAgIHNldENoYW5nZWQoKTsKKyAg
ICAgICAgICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmhhc0FwcGVh
cmFuY2UoKSkKKyAgICAgICAgICAgICAgICB0aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIo
KSwgRm9jdXNTdGF0ZSk7CisgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAgSFRNTEVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpAQCAtOTYsNiArMTA1LDExIEBAIHZv
aWQgSFRNTEdlbmVyaWNGb3JtRWxlbWVudDo6YXR0YWNoKCkKICAgICAvLyBvbiB0aGUgcmVuZGVy
ZXIuCiAgICAgaWYgKHJlbmRlcmVyKCkpCiAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21F
bGVtZW50KCk7CisgICAgICAgIAorICAgIC8vIFdlIHdpc2ggdG8gY2hlY2sgdGhpcyBhcyB0aGUg
RE9NIHRyZWUgaXMgcGFyc2VkIGFuZCBhdHRhY2hlZCwgaW4gb3JkZXIKKyAgICAvLyB0byBmb2N1
cyBvbmx5IHRoZSBsYXN0IG9uZSAiYXV0b2ZvY3VzIiBlbGVtZW50LgorICAgIGlmIChhdXRvZm9j
dXMoKSkKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0QXV0b2ZvY3VzTm9kZSh0aGlzKTsKIH0KIAog
dm9pZCBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50OjppbnNlcnRlZEludG9UcmVlKGJvb2wgZGVlcCkK
QEAgLTE3MSw2ICsxODUsMjYgQEAgdm9pZCBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50OjpzZXRSZWFk
T25seQogICAgIHNldEF0dHJpYnV0ZShyZWFkb25seUF0dHIsIGIgPyAiIiA6IDApOwogfQogCit2
b2lkIEhUTUxHZW5lcmljRm9ybUVsZW1lbnQ6OnNldEF1dG9mb2N1cyhib29sIGIpCit7CisgICAg
c2V0QXR0cmlidXRlKGF1dG9mb2N1c0F0dHIsIGIgPyAiYXV0b2ZvY3VzIiA6IDApOworfQorCiti
b29sIEhUTUxHZW5lcmljRm9ybUVsZW1lbnQ6Omhhc0F1dG9mb2N1cygpIGNvbnN0Cit7CisgICAg
Ly8gV2UgaGF2ZSB0byBkZXRlcm1pbmUgaWYgdGhlIGVsZW1lbnQgaXMgYSBUZXh0QXJlYS9JbnB1
dC9CdXR0b24vU2VsZWN0LAorICAgIC8vIGlmIGlucHV0IHR5cGUgaGlkZGVuIGlnbm9yZSBhdXRv
Zm9jdXMuIFNvIGlmIGRpc2FibGVkLgorICAgIGlmIChhdXRvZm9jdXMoKSAmJgorICAgICAgICBy
ZW5kZXJlcigpICYmIAorICAgICAgICAhZGlzYWJsZWQoKSAmJgorICAgICAgICAoKGhhc1RhZ05h
bWUoaW5wdXRUYWcpICYmICFpc0lucHV0VHlwZUhpZGRlbigpKSB8fAorICAgICAgICAgaGFzVGFn
TmFtZShzZWxlY3RUYWcpIHx8CisgICAgICAgICBoYXNUYWdOYW1lKGJ1dHRvblRhZykgfHwKKyAg
ICAgICAgIGhhc1RhZ05hbWUodGV4dGFyZWFUYWcpKSkKKyAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50OjpyZWNh
bGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCiB7CiAgICAgSFRNTEVsZW1lbnQ6OnJlY2FsY1N0
eWxlKGNoYW5nZSk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEdlbmVyaWNGb3JtRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MR2VuZXJpY0Zvcm1FbGVtZW50LmgJKHJl
dmlzaW9uIDMyODQ5KQorKysgV2ViQ29yZS9odG1sL0hUTUxHZW5lcmljRm9ybUVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsMTIgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBi
b29sIGlzUmVhZE9ubHlDb250cm9sKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkT25seTsgfQogICAg
IHZvaWQgc2V0UmVhZE9ubHkoYm9vbCk7CisgICAgCisgICAgLy8gYXV0b2ZvY3VzKCkgaXMgZm9y
IEpTIERPTSBiaW5kaW5nOyBoYXNBdXRvZm9jdXMoKSBpcyB1c2VkIHRvIGRldGVybWluZSBpZiB0
aGUKKyAgICAvLyBlbGVtZW50IHNob3VsZCBob25vdXIgaXRzIGF1dG9mb2N1cyBhdHRyaWJ1dGUg
ZHVyaW5nIGF0dGFjaG1lbnQKKyAgICB2aXJ0dWFsIGJvb2wgYXV0b2ZvY3VzKCkgY29uc3QgeyBy
ZXR1cm4gbV9hdXRvZm9jdXM7IH07CisgICAgdm9pZCBzZXRBdXRvZm9jdXMoYm9vbCk7CisgICAg
dmlydHVhbCBib29sIGhhc0F1dG9mb2N1cygpIGNvbnN0OyAKIAogICAgIHZpcnR1YWwgdm9pZCBy
ZWNhbGNTdHlsZShTdHlsZUNoYW5nZSk7CiAKQEAgLTEwMiw2ICsxMDgsNyBAQCBwcml2YXRlOgog
ICAgIEhUTUxGb3JtRWxlbWVudCogbV9mb3JtOwogICAgIGJvb2wgbV9kaXNhYmxlZDsKICAgICBi
b29sIG1fcmVhZE9ubHk7CisgICAgYm9vbCBtX2F1dG9mb2N1czsKICAgICBtdXRhYmxlIGJvb2wg
bV92YWx1ZU1hdGNoZXNSZW5kZXJlcjsKIH07CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5pZGwJKHJldmlzaW9uIDMyODQ5KQorKysgV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5n
IGFsdDsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gICAgICAgICBjaGVja2Vk
OwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIGRpc2FibGVkOwor
ICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIGF1dG9mb2N1czsKICAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlIGxvbmcgICAgICAgICAgICBtYXhMZW5ndGg7CiAgICAg
ICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmlu
ZyBuYW1lOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIHJlYWRP
bmx5OwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCShyZXZpc2lvbiAzMjg0OSkK
KysrIFdlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDYgKzQ2LDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
SFRNTE9wdGlvbnNDb2xsZWN0aW9uIG9wdGlvbnM7CiAKICAgICAgICAgICAgICAgICAgYXR0cmli
dXRlIGJvb2xlYW4gICAgICAgICBkaXNhYmxlZDsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRl
IGJvb2xlYW4gICAgICAgICBhdXRvZm9jdXM7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBi
b29sZWFuICAgICAgICAgbXVsdGlwbGU7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29u
dmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyAgICAgICBuYW1lOwogICAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgIHNpemU7CkluZGV4OiBXZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuaWRsCShyZXZpc2lvbiAzMjg0OSkKKysrIFdlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQCBtb2R1
bGUgaHRtbCB7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnROdWxsVG9OdWxs
U3RyaW5nXSBET01TdHJpbmcgICAgICAgICAgICBhY2Nlc3NLZXk7CiAgICAgICAgICAgICAgICAg
IGF0dHJpYnV0ZSAgbG9uZyAgICAgICAgICAgICAgICAgY29sczsKICAgICAgICAgICAgICAgICAg
YXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICBkaXNhYmxlZDsKKyAgICAgICAgICAgICAg
ICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICBhdXRvZm9jdXM7CiAgICAgICAgICAg
ICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgICAg
ICAgICAgICBuYW1lOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIGJvb2xlYW4gICAgICAg
ICAgICAgIHJlYWRPbmx5OwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIGxvbmcgICAgICAg
ICAgICAgICAgIHJvd3M7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wu
Y3BwCShyZXZpc2lvbiAzMjg0OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE1LDYgKzQxNSwxMiBAQCB2b2lkIFJlbmRlclRl
eHRDb250cm9sOjp1cGRhdGVGcm9tRWxlbWVuCiAgICAgICAgIG1fc2VhcmNoUG9wdXAtPnVwZGF0
ZUZyb21FbGVtZW50KCk7CiB9CiAKK3ZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OnNldFVzZXJFZGl0
ZWQoYm9vbCBpc1VzZXJFZGl0ZWQpCit7CisgICAgbV91c2VyRWRpdGVkID0gaXNVc2VyRWRpdGVk
OworICAgIGRvY3VtZW50KCktPnNldElnbm9yZUF1dG9mb2N1cyhpc1VzZXJFZGl0ZWQpOworfQor
CiBpbnQgUmVuZGVyVGV4dENvbnRyb2w6OnNlbGVjdGlvblN0YXJ0KCkKIHsKICAgICBGcmFtZSog
ZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbC5oCShyZXZpc2lvbiAzMjg0OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBpc1RleHRBcmVhKCkgY29uc3QgeyByZXR1cm4gbV9tdWx0aUxpbmU7
IH0KICAgICAKICAgICBib29sIGlzVXNlckVkaXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlckVk
aXRlZDsgfQotICAgIHZvaWQgc2V0VXNlckVkaXRlZChib29sIGlzVXNlckVkaXRlZCkgeyBtX3Vz
ZXJFZGl0ZWQgPSBpc1VzZXJFZGl0ZWQ7IH0KKyAgICB2b2lkIHNldFVzZXJFZGl0ZWQoYm9vbCk7
CiAKICAgICBpbnQgc2VsZWN0aW9uU3RhcnQoKTsKICAgICBpbnQgc2VsZWN0aW9uRW5kKCk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAzMjg1MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDA4LTA1LTA0ICBNaWNoZWxhbmdlbG8gRGUgU2lt
b25lICA8bS5kZXNAbWFjLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworCUJhc2ljIHRlc3RjYXNlcyBmb3IgYXV0b2ZvY3VzIGNvbnRyb2xzLgorCisgICAgICAg
ICogZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZm9jdXMtY2hlY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2Zvcm1zL2lucHV0LWF1dG9mb2N1cy1jaGVjay5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2Zvcm1zL2lucHV0LWF1dG9mb2N1cy1vbmZvY3VzLWNoZWNrLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZm9jdXMtb25m
b2N1cy1jaGVjay5odG1sOiBBZGRlZC4KKwogMjAwOC0wNS0wMyAgUm9iIEJ1aXMgIDxidWlzQGtk
ZS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtLgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9pbnB1dC1hdXRvZm9jdXMtY2hlY2stZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXV0b2ZvY3VzLWNoZWNrLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXV0b2ZvY3Vz
LWNoZWNrLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorVGhlcmUg
YXJlIHRocmVlIGlucHV0IGNvbnRyb2xzOyB0aGUgc2Vjb25kIG9uZSBoYXMgYXV0b2ZvY3VzOyBw
YXNzZXMgaWYgaXQgYW5zd2VycyBOQUEsIFlFUCwgTkFBLgorCisKKworCisKKworCitOQUEKK1lF
UAorTkFBCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXV0b2ZvY3VzLWNo
ZWNrLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1hdXRv
Zm9jdXMtY2hlY2suaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
aW5wdXQtYXV0b2ZvY3VzLWNoZWNrLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAK
KzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPklucHV0IEF1dG9mb2N1cyBDaGVjazwvdGl0bGU+
CisgICAgPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KKyAgICBmdW5jdGlvbiBwcmludChtZXNzYWdlKQorICAgIHsKKyAgICAgICAgdmFyIHBhcmFn
cmFwaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgIHBhcmFncmFwaC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQocGFyYWdyYXBoKTsK
KyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgICAgIAorICAgICAgICB2YXIgaSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlOYW1lKCdnZW9yZGknKTsKKyAgICAgICAgZm9yIChhID0gMDsgYSA8IGkubGVuZ3Ro
OyBhKyspCisgICAgICAgICAgICBpW2FdLmF1dG9mb2N1cyA/IHByaW50KCJZRVAiKSA6IHByaW50
KCJOQUEiKTsKKyAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRl
c3QoKSI+CisgICAgPHA+VGhlcmUgYXJlIHRocmVlIGlucHV0IGNvbnRyb2xzOyB0aGUgc2Vjb25k
IG9uZSBoYXMgYXV0b2ZvY3VzOyBwYXNzZXMgaWYgaXQgYW5zd2VycyBOQUEsIFlFUCwgTkFBLjwv
cD4KKyAgICA8Zm9ybT4KKyAgICAgICAgPHA+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9Imdlb3Jk
aSIgc2l6ZT0iMjAiIC8+PC9wPgorICAgICAgICA8cD48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0i
Z2VvcmRpIiBzaXplPSIyMCIgYXV0b2ZvY3VzIC8+PC9wPgorICAgICAgICA8cD48aW5wdXQgdHlw
ZT0idGV4dCIgbmFtZT0iZ2VvcmRpIiBzaXplPSIyMCIgLz48L3A+CisgICAgPC9mb3JtPgorICAg
IDxocj4KKyAgICA8cD48b2wgaWQ9ImNvbnNvbGUiPjwvb2w+PC9wPgorPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvaW5wdXQtYXV0b2ZvY3VzLW9uZm9jdXMtY2hlY2stZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXV0b2ZvY3VzLW9uZm9jdXMtY2hlY2st
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1
dC1hdXRvZm9jdXMtb25mb2N1cy1jaGVjay1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTAgQEAKK1RoaXMgdGVzdCBhaW1zIHRvIGNoZWNrIGlmIGF1dG9mb2N1cyBjb250cm9s
IGRpc3BhdGNoZXMgb25mb2N1cyBldmVudCBjb3JyZWN0bHkuIEF1dG9mb2N1cyBpcyBzZXQgb24g
dGhlIHNlY29uZCBpbnB1dC4KKworCisKKworCisKKworU1VDQ0VTUworCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWF1dG9mb2N1cy1vbmZvY3VzLWNoZWNrLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZm9jdXMtb25mb2N1cy1j
aGVjay5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1h
dXRvZm9jdXMtb25mb2N1cy1jaGVjay5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBA
Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5JbnB1dCBBdXRvZm9jdXMgRm9jdXMgQ2hlY2s8
L3RpdGxlPgorICAgIDxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2
YXNjcmlwdCI+CisgICAgCisgICAgZnVuY3Rpb24gcHJpbnQobWVzc2FnZSkgeworICAgICAgICB2
YXIgcGFyYWdyYXBoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgcGFy
YWdyYXBoLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChwYXJh
Z3JhcGgpOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBmb2N1c1RyaWdnZXJlZChvKSB7Cisg
ICAgICAgIChvID09IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnZW9yZGknKSkgPyBwcmludCgi
U1VDQ0VTUyIpIDogcHJpbnQoIkZBSUxVUkUiKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24g
dGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB9CisgICAgPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+CisgICAgPHA+VGhpcyB0ZXN0
IGFpbXMgdG8gY2hlY2sgaWYgYXV0b2ZvY3VzIGNvbnRyb2wgZGlzcGF0Y2hlcyBvbmZvY3VzIGV2
ZW50IGNvcnJlY3RseS4gQXV0b2ZvY3VzIGlzIHNldCBvbiB0aGUgc2Vjb25kIGlucHV0LjwvcD4K
KyAgICA8Zm9ybT4KKyAgICAgICAgPHA+PGlucHV0IHR5cGU9InRleHQiIGlkPSJkYXRhIiBzaXpl
PSIyMCIgb25mb2N1cz0iZm9jdXNUcmlnZ2VyZWQodGhpcyk7Ii8+PC9wPgorICAgICAgICA8cD48
aW5wdXQgdHlwZT0idGV4dCIgaWQ9Imdlb3JkaSIgc2l6ZT0iMjAiIGF1dG9mb2N1cyBvbmZvY3Vz
PSJmb2N1c1RyaWdnZXJlZCh0aGlzKTsiLz48L3A+CisgICAgICAgIDxwPjxpbnB1dCB0eXBlPSJ0
ZXh0IiBpZD0id29yZiIgc2l6ZT0iMjAiIG9uZm9jdXM9ImZvY3VzVHJpZ2dlcmVkKHRoaXMpOyIv
PjwvcD4KKyAgICA8L2Zvcm0+CisgICAgPGhyPgorICAgIDxwPjxvbCBpZD0iY29uc29sZSI+PC9v
bD48L3A+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20973</attachid>
            <date>2008-05-05 13:23:07 -0700</date>
            <delta_ts>2008-05-23 07:52:28 -0700</delta_ts>
            <desc>Initial implementation, second revision</desc>
            <filename>webkit_autofocus_patch-rev2.txt</filename>
            <type>text/plain</type>
            <size>23147</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMjg3OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzggQEAKKzIwMDgtMDUtMDUgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtLmRl
c0BtYWMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAg
ICAKKyAgICAgICAgRml4ZWQgYXV0b2ZvY3VzIGJlaGF2aW9yIG9uIHJlYWRvbmx5L2Rpc2FibGVk
IGNvbnRyb2xzLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL2lucHV0LWF1dG9mb2N1cy1j
aGVjay5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL2lucHV0LWF1dG9mb2N1cy1kaXNh
YmxlZC1jaGVjay5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL2lucHV0LWF1dG9mb2N1
cy1vbmZvY3VzLWNoZWNrLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvaW5wdXQtYXV0
b2ZvY3VzLXJlYWRvbmx5LWNoZWNrLmh0bWwKKworICAgICAgICAqIENoYW5nZUxvZzoKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVkTGFzdFJlZik6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpzZXRBdXRvZm9jdXNOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjphdXRvZm9jdXNOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjppZ25vcmVBdXRvZm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEln
bm9yZUF1dG9mb2N1cyk6CisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46Cisg
ICAgICAgICogaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1M
R2VuZXJpY0Zvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxHZW5lcmljRm9y
bUVsZW1lbnQ6OkhUTUxHZW5lcmljRm9ybUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEdlbmVyaWNGb3JtRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEdlbmVyaWNGb3JtRWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxHZW5lcmljRm9ybUVsZW1lbnQ6OnNldEF1dG9mb2N1cyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MR2VuZXJpY0Zvcm1FbGVtZW50OjpoYXNBdXRvZm9jdXMpOgorICAgICAgICAqIGh0bWwv
SFRNTEdlbmVyaWNGb3JtRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEdlbmVyaWNG
b3JtRWxlbWVudDo6YXV0b2ZvY3VzKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQu
aWRsOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGw6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjpzZXRV
c2VyRWRpdGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaDoKKwor
MjAwOC0wNS0wNCAgTWljaGVsYW5nZWxvIERlIFNpbW9uZSA8bS5kZXNAbWFjLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworCUZpcnN0IHN1cHBvcnQgZm9yIGF1
dG9mb2N1cyBmb3JtIGNvbnRyb2xzLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL2lucHV0
LWF1dG9mb2N1cy1jaGVjay5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL2lucHV0LWF1
dG9mb2N1cy1vbmZvY3VzLWNoZWNrLmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEF1dG9mb2N1c05vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmF1dG9m
b2N1c05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omlnbm9yZUF1dG9mb2N1cyk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0SWdub3JlQXV0b2ZvY3VzKToKKyAgICAg
ICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxCdXR0
b25FbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxHZW5lcmljRm9ybUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEdlbmVyaWNGb3JtRWxlbWVudDo6SFRNTEdlbmVyaWNG
b3JtRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MR2VuZXJpY0Zvcm1FbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MR2VuZXJpY0Zvcm1F
bGVtZW50OjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEdlbmVyaWNGb3JtRWxlbWVu
dDo6c2V0QXV0b2ZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxHZW5lcmljRm9ybUVsZW1l
bnQ6Omhhc0F1dG9mb2N1cyk6CisgICAgICAgICogaHRtbC9IVE1MR2VuZXJpY0Zvcm1FbGVtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MR2VuZXJpY0Zvcm1FbGVtZW50OjphdXRvZm9jdXMp
OgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9I
VE1MU2VsZWN0RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmlkbDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OnNldFVzZXJFZGl0ZWQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oOgorCiAyMDA4LTA1LTA1ICBBbGV4ZXkgUHJv
c2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4K
SW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDMyODc5KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDcsNiArMzA3LDggQEAgRG9jdW1lbnQ6OkRvY3VtZW50
KERPTUltcGxlbWVudGF0aW9uKiBpbQogICAgIG1fZG9jdW1lbnQucmVzZXRTa2lwcGluZ1JlZih0
aGlzKTsKIAogICAgIG1fcHJpbnRpbmcgPSBmYWxzZTsKKyAgICAKKyAgICBtX2lnbm9yZUF1dG9m
b2N1cyA9IGZhbHNlOwogCiAgICAgbV9mcmFtZSA9IGZyYW1lOwogICAgIG1fcmVuZGVyQXJlbmEg
PSAwOwpAQCAtMzczLDYgKzM3NSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmKCkK
ICAgICAgICAgLy8gdGhlc2UgZXh0cmEgcG9pbnRlcnMgb3Igd2Ugd2lsbCBjcmVhdGUgYSByZWZl
cmVuY2UgY3ljbGUuCiAgICAgICAgIG1fZG9jVHlwZSA9IDA7CiAgICAgICAgIG1fZm9jdXNlZE5v
ZGUgPSAwOworICAgICAgICBtX2F1dG9mb2N1c05vZGUgPSAwOwogICAgICAgICBtX2hvdmVyTm9k
ZSA9IDA7CiAgICAgICAgIG1fYWN0aXZlTm9kZSA9IDA7CiAgICAgICAgIG1fdGl0bGVFbGVtZW50
ID0gMDsKQEAgLTEyODIsNiArMTI4NSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRldGFjaCgpCiAgICAg
CiAgICAgbV9ob3Zlck5vZGUgPSAwOwogICAgIG1fZm9jdXNlZE5vZGUgPSAwOworICAgIG1fYXV0
b2ZvY3VzTm9kZSA9IDA7CiAgICAgbV9hY3RpdmVOb2RlID0gMDsKIAogICAgIENvbnRhaW5lck5v
ZGU6OmRldGFjaCgpOwpAQCAtMjQ2OCw2ICsyNDcyLDI4IEBAIFNldEZvY3VzZWROb2RlRG9uZToK
ICAgICByZXR1cm4gIWZvY3VzQ2hhbmdlQmxvY2tlZDsKICAgfQogICAKK2Jvb2wgRG9jdW1lbnQ6
OnNldEF1dG9mb2N1c05vZGUoUGFzc1JlZlB0cjxOb2RlPiBuZXdBdXRvZm9jdXNOb2RlKQorewor
ICAgIGlmIChtX2F1dG9mb2N1c05vZGUgIT0gbmV3QXV0b2ZvY3VzTm9kZSkgeworICAgICAgICBt
X2F1dG9mb2N1c05vZGUgPSBuZXdBdXRvZm9jdXNOb2RlOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIERvY3VtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldnQpCit7CisgICAgaWYgKGV2dC0+dHlwZSgpID09IERP
TUNvbnRlbnRMb2FkZWRFdmVudCAmJiBhdXRvZm9jdXNOb2RlKCkpIHsKKyAgICAgICAgSFRNTEdl
bmVyaWNGb3JtRWxlbWVudCogYWZFbGVtID0gc3RhdGljX2Nhc3Q8SFRNTEdlbmVyaWNGb3JtRWxl
bWVudCo+KGF1dG9mb2N1c05vZGUoKSk7CisgICAgICAgIAorICAgICAgICBpZiAoYWZFbGVtLT5o
YXNBdXRvZm9jdXMoKSAmJiAhaWdub3JlQXV0b2ZvY3VzKCkpCisgICAgICAgICAgICBhZkVsZW0t
PmZvY3VzKCk7CisgICAgfQorICAgIAorICAgIENvbnRhaW5lck5vZGU6OmRlZmF1bHRFdmVudEhh
bmRsZXIoZXZ0KTsKK30KKwogdm9pZCBEb2N1bWVudDo6c2V0Q1NTVGFyZ2V0KE5vZGUqIG4pCiB7
CiAgICAgaWYgKG1fY3NzVGFyZ2V0KQpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAzMjg3OSkKKysrIFdl
YkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3Myw2ICs0NzMsMTMgQEAg
cHVibGljOgogCiAgICAgYm9vbCBzZXRGb2N1c2VkTm9kZShQYXNzUmVmUHRyPE5vZGU+KTsKICAg
ICBOb2RlKiBmb2N1c2VkTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9jdXNlZE5vZGUuZ2V0KCk7
IH0KKyAgICAKKyAgICAvLyBBdXRvZm9jdXMgc3R1ZmYKKyAgICBib29sIHNldEF1dG9mb2N1c05v
ZGUoUGFzc1JlZlB0cjxOb2RlPik7CisgICAgTm9kZSogYXV0b2ZvY3VzTm9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYXV0b2ZvY3VzTm9kZS5nZXQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50Kik7CisgICAgYm9vbCBpZ25vcmVBdXRvZm9jdXMoKSBjb25zdCB7
IHJldHVybiBtX2lnbm9yZUF1dG9mb2N1czsgfTsKKyAgICB2b2lkIHNldElnbm9yZUF1dG9mb2N1
cyhib29sIHNob3VsZElnbm9yZSkgeyBtX2lnbm9yZUF1dG9mb2N1cyA9IHNob3VsZElnbm9yZTsg
fTsKIAogICAgIHZvaWQgc2V0SG92ZXJOb2RlKFBhc3NSZWZQdHI8Tm9kZT4pOwogICAgIE5vZGUq
IGhvdmVyTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faG92ZXJOb2RlLmdldCgpOyB9CkBAIC03NzYs
MTIgKzc4MywxNSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBtX21hcHBl
ZEVsZW1lbnRTaGVldDsKIAogICAgIGJvb2wgbV9wcmludGluZzsKKyAgICAKKyAgICBib29sIG1f
aWdub3JlQXV0b2ZvY3VzOwogCiAgICAgUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogCiAgICAgQ29s
b3IgbV90ZXh0Q29sb3I7CiAKICAgICBSZWZQdHI8Tm9kZT4gbV9mb2N1c2VkTm9kZTsKKyAgICBS
ZWZQdHI8Tm9kZT4gbV9hdXRvZm9jdXNOb2RlOwogICAgIFJlZlB0cjxOb2RlPiBtX2hvdmVyTm9k
ZTsKICAgICBSZWZQdHI8Tm9kZT4gbV9hY3RpdmVOb2RlOwogICAgIG11dGFibGUgUmVmUHRyPEVs
ZW1lbnQ+IG1fZG9jdW1lbnRFbGVtZW50OwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1
dGVOYW1lcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVz
LmluCShyZXZpc2lvbiAzMjg3OSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTgsNiArOCw3IEBAIGFsaW5rCiBhbHQKIGFyY2hpdmUKIGF1
dG9jb21wbGV0ZQorYXV0b2ZvY3VzCiBhdXRvcGxheQogYXV0b3NhdmUKIGF4aXMKSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL0hUTUxCdXR0b25FbGVtZW50LmlkbAkocmV2aXNpb24gMzI4NzkpCisrKyBXZWJDb3JlL2h0
bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBA
IG1vZHVsZSBodG1sIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlICBIVE1MRm9ybUVsZW1l
bnQgICAgICBmb3JtOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIFtDb252ZXJ0TnVsbFRv
TnVsbFN0cmluZ10gRE9NU3RyaW5nICAgICAgICAgICAgYWNjZXNzS2V5OwogICAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGUgIGJvb2xlYW4gICAgICAgICAgICAgIGRpc2FibGVkOworICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGUgIGJvb2xlYW4gICAgICAgICAgICAgIGF1dG9mb2N1czsKICAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlICBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmlu
ZyAgICAgICAgICAgIG5hbWU7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSAgRE9NU3RyaW5n
ICAgICAgICAgICAgdHlwZTsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBbQ29udmVydE51
bGxUb051bGxTdHJpbmddIERPTVN0cmluZyAgICAgICAgICAgIHZhbHVlOwpJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxHZW5lcmljRm9ybUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MR2VuZXJpY0Zvcm1FbGVtZW50LmNwcAkocmV2aXNpb24gMzI4NzkpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTEdlbmVyaWNGb3JtRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDYgKzQ3LDcgQEAgSFRNTEdlbmVyaWNGb3JtRWxlbWVudDo6SFRNTEdlbmVyaWNGb3JtRQogICAg
ICwgbV9mb3JtKGYpCiAgICAgLCBtX2Rpc2FibGVkKGZhbHNlKQogICAgICwgbV9yZWFkT25seShm
YWxzZSkKKyAgICAsIG1fYXV0b2ZvY3VzKGZhbHNlKQogICAgICwgbV92YWx1ZU1hdGNoZXNSZW5k
ZXJlcihmYWxzZSkKIHsKICAgICBpZiAoIW1fZm9ybSkKQEAgLTgxLDYgKzgyLDE0IEBAIHZvaWQg
SFRNTEdlbmVyaWNGb3JtRWxlbWVudDo6cGFyc2VNYXBwZWQKICAgICAgICAgICAgIGlmIChyZW5k
ZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKICAgICAgICAg
ICAgICAgICB0aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgUmVhZE9ubHlTdGF0ZSk7
CiAgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhdXRvZm9jdXNBdHRy
KSB7CisgICAgICAgIGJvb2wgb2xkQXV0b2ZvY3VzID0gbV9hdXRvZm9jdXM7CisgICAgICAgIG1f
YXV0b2ZvY3VzID0gIWF0dHItPmlzTnVsbCgpOworICAgICAgICBpZiAob2xkQXV0b2ZvY3VzICE9
IG1fYXV0b2ZvY3VzKSB7CisgICAgICAgICAgICBzZXRDaGFuZ2VkKCk7CisgICAgICAgICAgICBp
ZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpCisg
ICAgICAgICAgICAgICAgdGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEZvY3VzU3Rh
dGUpOworICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KQEAgLTk2LDYgKzEwNSwxMSBAQCB2b2lkIEhUTUxHZW5l
cmljRm9ybUVsZW1lbnQ6OmF0dGFjaCgpCiAgICAgLy8gb24gdGhlIHJlbmRlcmVyLgogICAgIGlm
IChyZW5kZXJlcigpKQogICAgICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOwor
ICAgICAgICAKKyAgICAvLyBXZSB3aXNoIHRvIGNoZWNrIHRoaXMgYXMgdGhlIERPTSB0cmVlIGlz
IHBhcnNlZCBhbmQgYXR0YWNoZWQsIGluIG9yZGVyCisgICAgLy8gdG8gZm9jdXMgb25seSB0aGUg
bGFzdCBvbmUgImF1dG9mb2N1cyIgZWxlbWVudC4KKyAgICBpZiAoaGFzQXV0b2ZvY3VzKCkpCisg
ICAgICAgIGRvY3VtZW50KCktPnNldEF1dG9mb2N1c05vZGUodGhpcyk7CiB9CiAKIHZvaWQgSFRN
TEdlbmVyaWNGb3JtRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShib29sIGRlZXApCkBAIC0xNzEs
NiArMTg1LDI3IEBAIHZvaWQgSFRNTEdlbmVyaWNGb3JtRWxlbWVudDo6c2V0UmVhZE9ubHkKICAg
ICBzZXRBdHRyaWJ1dGUocmVhZG9ubHlBdHRyLCBiID8gIiIgOiAwKTsKIH0KIAordm9pZCBIVE1M
R2VuZXJpY0Zvcm1FbGVtZW50OjpzZXRBdXRvZm9jdXMoYm9vbCBiKQoreworICAgIHNldEF0dHJp
YnV0ZShhdXRvZm9jdXNBdHRyLCBiID8gImF1dG9mb2N1cyIgOiAwKTsKK30KKworYm9vbCBIVE1M
R2VuZXJpY0Zvcm1FbGVtZW50OjpoYXNBdXRvZm9jdXMoKSBjb25zdAoreworICAgIC8vIFdlIGhh
dmUgdG8gZGV0ZXJtaW5lIGlmIHRoZSBlbGVtZW50IGlzIGEgVGV4dEFyZWEvSW5wdXQvQnV0dG9u
L1NlbGVjdCwKKyAgICAvLyBpZiBpbnB1dCB0eXBlIGhpZGRlbiBpZ25vcmUgYXV0b2ZvY3VzLiBT
byBpZiBkaXNhYmxlZCBvciByZWFkb25seS4KKyAgICBpZiAoYXV0b2ZvY3VzKCkgJiYKKyAgICAg
ICAgcmVuZGVyZXIoKSAmJiAKKyAgICAgICAgIWRpc2FibGVkKCkgJiYKKyAgICAgICAgIWlzUmVh
ZE9ubHlDb250cm9sKCkgJiYgCisgICAgICAgICgoaGFzVGFnTmFtZShpbnB1dFRhZykgJiYgIWlz
SW5wdXRUeXBlSGlkZGVuKCkpIHx8CisgICAgICAgICBoYXNUYWdOYW1lKHNlbGVjdFRhZykgfHwK
KyAgICAgICAgIGhhc1RhZ05hbWUoYnV0dG9uVGFnKSB8fAorICAgICAgICAgaGFzVGFnTmFtZSh0
ZXh0YXJlYVRhZykpKQorICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiB2b2lkIEhUTUxHZW5lcmljRm9ybUVsZW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdl
IGNoYW5nZSkKIHsKICAgICBIVE1MRWxlbWVudDo6cmVjYWxjU3R5bGUoY2hhbmdlKTsKSW5kZXg6
IFdlYkNvcmUvaHRtbC9IVE1MR2VuZXJpY0Zvcm1FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxHZW5lcmljRm9ybUVsZW1lbnQuaAkocmV2aXNpb24gMzI4NzkpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTEdlbmVyaWNGb3JtRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03
MCw2ICs3MCwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZWFkT25seUNvbnRy
b2woKSBjb25zdCB7IHJldHVybiBtX3JlYWRPbmx5OyB9CiAgICAgdm9pZCBzZXRSZWFkT25seShi
b29sKTsKKyAgICAKKyAgICAvLyBhdXRvZm9jdXMoKSBpcyBmb3IgSlMgRE9NIGJpbmRpbmc7IGhh
c0F1dG9mb2N1cygpIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlCisgICAgLy8gZWxl
bWVudCBzaG91bGQgaG9ub3VyIGl0cyBhdXRvZm9jdXMgYXR0cmlidXRlLgorICAgIHZpcnR1YWwg
Ym9vbCBhdXRvZm9jdXMoKSBjb25zdCB7IHJldHVybiBtX2F1dG9mb2N1czsgfTsKKyAgICB2b2lk
IHNldEF1dG9mb2N1cyhib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQXV0b2ZvY3VzKCkgY29u
c3Q7IAogCiAgICAgdmlydHVhbCB2b2lkIHJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlKTsKIApAQCAt
MTAyLDYgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgSFRNTEZvcm1FbGVtZW50KiBtX2Zvcm07CiAg
ICAgYm9vbCBtX2Rpc2FibGVkOwogICAgIGJvb2wgbV9yZWFkT25seTsKKyAgICBib29sIG1fYXV0
b2ZvY3VzOwogICAgIG11dGFibGUgYm9vbCBtX3ZhbHVlTWF0Y2hlc1JlbmRlcmVyOwogfTsKIApJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAkocmV2aXNpb24gMzI4NzkpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1
LDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnRO
dWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgYWx0OwogICAgICAgICAgICAgICAgICBhdHRyaWJ1
dGUgYm9vbGVhbiAgICAgICAgIGNoZWNrZWQ7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBi
b29sZWFuICAgICAgICAgZGlzYWJsZWQ7CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBib29s
ZWFuICAgICAgICAgYXV0b2ZvY3VzOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgbG9uZyAg
ICAgICAgICAgIG1heExlbmd0aDsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0
TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWU7CiAgICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZSBib29sZWFuICAgICAgICAgcmVhZE9ubHk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxl
bWVudC5pZGwJKHJldmlzaW9uIDMyODc5KQorKysgV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBtb2R1bGUgaHRtbCB7CiAg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gb3B0aW9uczsK
IAogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIGRpc2FibGVkOwor
ICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIGF1dG9mb2N1czsKICAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gICAgICAgICBtdWx0aXBsZTsKICAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5n
ICAgICAgIG5hbWU7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBsb25nICAgICAgICAgICAg
c2l6ZTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwJKHJldmlzaW9uIDMy
ODc5KQorKysgV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw2ICszMCw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgICAgICAgICAgYXR0
cmlidXRlICBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyAgICAgICAgICAgIGFj
Y2Vzc0tleTsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBsb25nICAgICAgICAgICAgICAg
ICBjb2xzOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIGJvb2xlYW4gICAgICAgICAgICAg
IGRpc2FibGVkOworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIGJvb2xlYW4gICAgICAgICAg
ICAgIGF1dG9mb2N1czsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBbQ29udmVydE51bGxU
b051bGxTdHJpbmddIERPTVN0cmluZyAgICAgICAgICAgIG5hbWU7CiAgICAgICAgICAgICAgICAg
IGF0dHJpYnV0ZSAgYm9vbGVhbiAgICAgICAgICAgICAgcmVhZE9ubHk7CiAgICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZSAgbG9uZyAgICAgICAgICAgICAgICAgcm93czsKSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAJKHJldmlzaW9uIDMyODc5KQorKysgV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTUs
NiArNDE1LDEyIEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OnVwZGF0ZUZyb21FbGVtZW4KICAg
ICAgICAgbV9zZWFyY2hQb3B1cC0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKIH0KIAordm9pZCBSZW5k
ZXJUZXh0Q29udHJvbDo6c2V0VXNlckVkaXRlZChib29sIGlzVXNlckVkaXRlZCkKK3sKKyAgICBt
X3VzZXJFZGl0ZWQgPSBpc1VzZXJFZGl0ZWQ7CisgICAgZG9jdW1lbnQoKS0+c2V0SWdub3JlQXV0
b2ZvY3VzKGlzVXNlckVkaXRlZCk7Cit9CisKIGludCBSZW5kZXJUZXh0Q29udHJvbDo6c2VsZWN0
aW9uU3RhcnQoKQogewogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7Cklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgJKHJldmlzaW9uIDMyODc5KQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAkod29ya2luZyBjb3B5KQpA
QCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzVGV4dEFyZWEoKSBj
b25zdCB7IHJldHVybiBtX211bHRpTGluZTsgfQogICAgIAogICAgIGJvb2wgaXNVc2VyRWRpdGVk
KCkgY29uc3QgeyByZXR1cm4gbV91c2VyRWRpdGVkOyB9Ci0gICAgdm9pZCBzZXRVc2VyRWRpdGVk
KGJvb2wgaXNVc2VyRWRpdGVkKSB7IG1fdXNlckVkaXRlZCA9IGlzVXNlckVkaXRlZDsgfQorICAg
IHZvaWQgc2V0VXNlckVkaXRlZChib29sKTsKIAogICAgIGludCBzZWxlY3Rpb25TdGFydCgpOwog
ICAgIGludCBzZWxlY3Rpb25FbmQoKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDMyODc5KQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMDgt
MDUtMDUgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtLmRlc0BtYWMuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTW9yZSB0ZXN0
cyBhZGRlZCB0byBjaGVjayBhdXRvZm9jdXMgYmVoYXZpb3Igb24gcmVhZG9ubHkgYW5kIGRpc2Fi
bGVkIGNvbnRyb2xzLgorCisgICAgICAgICogQ2hhbmdlTG9nOgorICAgICAgICAqIGZhc3QvZm9y
bXMvaW5wdXQtYXV0b2ZvY3VzLWNoZWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZm9jdXMtY2hlY2suaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZm9jdXMtZGlzYWJsZWQtY2hlY2stZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2lucHV0LWF1dG9mb2N1cy1kaXNhYmxlZC1jaGVj
ay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2lucHV0LWF1dG9mb2N1cy1vbmZv
Y3VzLWNoZWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9pbnB1
dC1hdXRvZm9jdXMtb25mb2N1cy1jaGVjay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL2lucHV0LWF1dG9mb2N1cy1yZWFkb25seS1jaGVjay1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtYXV0b2ZvY3VzLXJlYWRvbmx5LWNoZWNrLmh0bWw6
IEFkZGVkLgorCisyMDA4LTA1LTA0ICBNaWNoZWxhbmdlbG8gRGUgU2ltb25lICA8bS5kZXNAbWFj
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworCUJhc2ljIHRl
c3RjYXNlcyBmb3IgYXV0b2ZvY3VzIGNvbnRyb2xzLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9p
bnB1dC1hdXRvZm9jdXMtY2hlY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Zvcm1zL2lucHV0LWF1dG9mb2N1cy1jaGVjay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Zvcm1zL2lucHV0LWF1dG9mb2N1cy1vbmZvY3VzLWNoZWNrLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZm9jdXMtb25mb2N1cy1jaGVjay5odG1s
OiBBZGRlZC4KKwogMjAwOC0wNS0wNSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2lucHV0LWF1dG9mb2N1cy1jaGVjay1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZm9jdXMtY2hlY2stZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZm9jdXMt
Y2hlY2stZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACitUaGVyZSBh
cmUgdGhyZWUgaW5wdXQgY29udHJvbHM7IHRoZSBzZWNvbmQgb25lIGhhcyBhdXRvZm9jdXM7IHBh
c3NlcyBpZiBpdCBhbnN3ZXJzIE5BQSwgWUVQLCBOQUEuCisKKworCisKKworCisKK05BQQorWUVQ
CitOQUEKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZm9jdXMtY2hl
Y2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWF1dG9m
b2N1cy1jaGVjay5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9p
bnB1dC1hdXRvZm9jdXMtY2hlY2suaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAor
PGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+SW5wdXQgQXV0b2ZvY3VzIENoZWNrPC90aXRsZT4K
KyAgICA8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgorICAgIGZ1bmN0aW9uIHByaW50KG1lc3NhZ2UpCisgICAgeworICAgICAgICB2YXIgcGFyYWdy
YXBoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgcGFyYWdyYXBoLmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChwYXJhZ3JhcGgpOwor
ICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgICAgICAgICAgCisgICAgICAgIHZhciBpID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeU5hbWUoJ2dlb3JkaScpOworICAgICAgICBmb3IgKGEgPSAwOyBhIDwgaS5sZW5ndGg7
IGErKykKKyAgICAgICAgICAgIGlbYV0uYXV0b2ZvY3VzID8gcHJpbnQoIllFUCIpIDogcHJpbnQo
Ik5BQSIpOworICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVz
dCgpIj4KKyAgICA8cD5UaGVyZSBhcmUgdGhyZWUgaW5wdXQgY29udHJvbHM7IHRoZSBzZWNvbmQg
b25lIGhhcyBhdXRvZm9jdXM7IHBhc3NlcyBpZiBpdCBhbnN3ZXJzIE5BQSwgWUVQLCBOQUEuPC9w
PgorICAgIDxmb3JtPgorICAgICAgICA8cD48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZ2VvcmRp
IiBzaXplPSIyMCIgLz48L3A+CisgICAgICAgIDxwPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJn
ZW9yZGkiIHNpemU9IjIwIiBhdXRvZm9jdXMgLz48L3A+CisgICAgICAgIDxwPjxpbnB1dCB0eXBl
PSJ0ZXh0IiBuYW1lPSJnZW9yZGkiIHNpemU9IjIwIiAvPjwvcD4KKyAgICA8L2Zvcm0+CisgICAg
PGhyPgorICAgIDxwPjxvbCBpZD0iY29uc29sZSI+PC9vbD48L3A+Cis8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9pbnB1dC1hdXRvZm9jdXMtZGlzYWJsZWQtY2hlY2stZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXV0b2ZvY3VzLWRpc2FibGVkLWNoZWNr
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5w
dXQtYXV0b2ZvY3VzLWRpc2FibGVkLWNoZWNrLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0IGFpbXMgdG8gY2hlY2sgd2hhdCBoYXBwZW5zIHdoZW4g
YXV0b2ZvY3VzIGlzIHNldCBvbiBtdWx0aXBsZSBjb250cm9scyB3aXRoIG9uZSBzZXQgYXMgZGlz
YWJsZWQuIEZvY3VzIHNob3VsZCByZW1haW4gb24gdGhlIGxhc3Qgbm9uLWRpc2FibGVkIGF1dG9m
b2N1cyBjb250cm9sICh0aGUgc2Vjb25kIG9uZSkuIFBhc3NlcyBpZiBwcmludHMgIlNVQ0NFU1Mi
LCBmYWlscyBvdGhlcndpc2UuCisKKworCisKKworCisKK1NVQ0NFU1MKKwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZm9jdXMtZGlzYWJsZWQtY2hlY2suaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWF1dG9mb2N1cy1kaXNhYmxl
ZC1jaGVjay5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1
dC1hdXRvZm9jdXMtZGlzYWJsZWQtY2hlY2suaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
MiBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+SW5wdXQgQXV0b2ZvY3VzIG9uIERpc2Fi
bGVkIENoZWNrPC90aXRsZT4KKyAgICA8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIAorICAgIGZ1bmN0aW9uIHByaW50KG1lc3NhZ2UpIHsK
KyAgICAgICAgdmFyIHBhcmFncmFwaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7Cisg
ICAgICAgIHBhcmFncmFwaC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNz
YWdlKSk7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5k
Q2hpbGQocGFyYWdyYXBoKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gZm9jdXNUcmlnZ2Vy
ZWQobykgeworICAgICAgICAobyA9PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2VvcmRpJykp
ID8gcHJpbnQoIlNVQ0NFU1MiKSA6IHByaW50KCJGQUlMVVJFIik7CisgICAgfQorICAgIAorICAg
IGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
fQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorICAgIDxw
PlRoaXMgdGVzdCBhaW1zIHRvIGNoZWNrIHdoYXQgaGFwcGVucyB3aGVuIGF1dG9mb2N1cyBpcyBz
ZXQgb24gbXVsdGlwbGUgY29udHJvbHMgd2l0aCBvbmUgc2V0IGFzIGRpc2FibGVkLiBGb2N1cyBz
aG91bGQgcmVtYWluIG9uIHRoZSBsYXN0IG5vbi1kaXNhYmxlZCBhdXRvZm9jdXMgY29udHJvbCAo
dGhlIHNlY29uZCBvbmUpLiBQYXNzZXMgaWYgcHJpbnRzICJTVUNDRVNTIiwgZmFpbHMgb3RoZXJ3
aXNlLjwvcD4KKyAgICA8Zm9ybT4KKyAgICAgICAgPHA+PGlucHV0IHR5cGU9InRleHQiIGlkPSJk
YXRhIiBzaXplPSIyMCIgYXV0b2ZvY3VzIG9uZm9jdXM9ImZvY3VzVHJpZ2dlcmVkKHRoaXMpOyIv
PjwvcD4KKyAgICAgICAgPHA+PGlucHV0IHR5cGU9InRleHQiIGlkPSJnZW9yZGkiIHNpemU9IjIw
IiBhdXRvZm9jdXMgb25mb2N1cz0iZm9jdXNUcmlnZ2VyZWQodGhpcyk7Ii8+PC9wPgorICAgICAg
ICA8cD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9IndvcmYiIHNpemU9IjIwIiBhdXRvZm9jdXMgZGlz
YWJsZWQgb25mb2N1cz0iZm9jdXNUcmlnZ2VyZWQodGhpcyk7Ii8+PC9wPgorICAgIDwvZm9ybT4K
KyAgICA8aHI+CisgICAgPHA+PG9sIGlkPSJjb25zb2xlIj48L29sPjwvcD4KKzwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2lucHV0LWF1dG9mb2N1cy1vbmZvY3VzLWNoZWNrLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWF1dG9mb2N1cy1vbmZvY3VzLWNo
ZWNrLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
aW5wdXQtYXV0b2ZvY3VzLW9uZm9jdXMtY2hlY2stZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDEwIEBACitUaGlzIHRlc3QgYWltcyB0byBjaGVjayBpZiBhdXRvZm9jdXMgY29u
dHJvbCBkaXNwYXRjaGVzIG9uZm9jdXMgZXZlbnQgY29ycmVjdGx5LiBBdXRvZm9jdXMgaXMgc2V0
IG9uIHRoZSBzZWNvbmQgaW5wdXQuCisKKworCisKKworCisKK1NVQ0NFU1MKKwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZm9jdXMtb25mb2N1cy1jaGVjay5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXV0b2ZvY3VzLW9uZm9j
dXMtY2hlY2suaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5w
dXQtYXV0b2ZvY3VzLW9uZm9jdXMtY2hlY2suaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
MiBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+SW5wdXQgQXV0b2ZvY3VzIEZvY3VzIENo
ZWNrPC90aXRsZT4KKyAgICA8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgorICAgIAorICAgIGZ1bmN0aW9uIHByaW50KG1lc3NhZ2UpIHsKKyAgICAg
ICAgdmFyIHBhcmFncmFwaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAg
IHBhcmFncmFwaC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7
CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQo
cGFyYWdyYXBoKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gZm9jdXNUcmlnZ2VyZWQobykg
eworICAgICAgICAobyA9PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2VvcmRpJykpID8gcHJp
bnQoIlNVQ0NFU1MiKSA6IHByaW50KCJGQUlMVVJFIik7CisgICAgfQorICAgIAorICAgIGZ1bmN0
aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgfQorICAg
IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorICAgIDxwPlRoaXMg
dGVzdCBhaW1zIHRvIGNoZWNrIGlmIGF1dG9mb2N1cyBjb250cm9sIGRpc3BhdGNoZXMgb25mb2N1
cyBldmVudCBjb3JyZWN0bHkuIEF1dG9mb2N1cyBpcyBzZXQgb24gdGhlIHNlY29uZCBpbnB1dC48
L3A+CisgICAgPGZvcm0+CisgICAgICAgIDxwPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZGF0YSIg
c2l6ZT0iMjAiIG9uZm9jdXM9ImZvY3VzVHJpZ2dlcmVkKHRoaXMpOyIvPjwvcD4KKyAgICAgICAg
PHA+PGlucHV0IHR5cGU9InRleHQiIGlkPSJnZW9yZGkiIHNpemU9IjIwIiBhdXRvZm9jdXMgb25m
b2N1cz0iZm9jdXNUcmlnZ2VyZWQodGhpcyk7Ii8+PC9wPgorICAgICAgICA8cD48aW5wdXQgdHlw
ZT0idGV4dCIgaWQ9IndvcmYiIHNpemU9IjIwIiBvbmZvY3VzPSJmb2N1c1RyaWdnZXJlZCh0aGlz
KTsiLz48L3A+CisgICAgPC9mb3JtPgorICAgIDxocj4KKyAgICA8cD48b2wgaWQ9ImNvbnNvbGUi
Pjwvb2w+PC9wPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXV0b2ZvY3VzLXJlYWRvbmx5LWNo
ZWNrLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lu
cHV0LWF1dG9mb2N1cy1yZWFkb25seS1jaGVjay1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWF1dG9mb2N1cy1yZWFkb25seS1jaGVjay1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdCBhaW1z
IHRvIGNoZWNrIHdoYXQgaGFwcGVucyB3aGVuIGF1dG9mb2N1cyBpcyBzZXQgb24gbXVsdGlwbGUg
Y29udHJvbHMgd2l0aCBvbmUgc2V0IGFzIHJlYWRvbmx5LiBGb2N1cyBzaG91bGQgcmVtYWluIG9u
IHRoZSBsYXN0IG5vbi1yZWFkb25seSBhdXRvZm9jdXMgY29udHJvbCAodGhlIHNlY29uZCBvbmUp
LiBQYXNzZXMgaWYgcHJpbnRzICJTVUNDRVNTIiwgZmFpbHMgb3RoZXJ3aXNlLgorCisKKworCisK
KworCitTVUNDRVNTCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXV0b2Zv
Y3VzLXJlYWRvbmx5LWNoZWNrLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9pbnB1dC1hdXRvZm9jdXMtcmVhZG9ubHktY2hlY2suaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXV0b2ZvY3VzLXJlYWRvbmx5LWNoZWNrLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPHRp
dGxlPklucHV0IEF1dG9mb2N1cyBvbiBSZWFkb25seSBDaGVjazwvdGl0bGU+CisgICAgPHNjcmlw
dCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAKKyAg
ICBmdW5jdGlvbiBwcmludChtZXNzYWdlKSB7CisgICAgICAgIHZhciBwYXJhZ3JhcGggPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICBwYXJhZ3JhcGguYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKHBhcmFncmFwaCk7CisgICAgfQorICAg
IAorICAgIGZ1bmN0aW9uIGZvY3VzVHJpZ2dlcmVkKG8pIHsKKyAgICAgICAgKG8gPT0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2dlb3JkaScpKSA/IHByaW50KCJTVUNDRVNTIikgOiBwcmludCgi
RkFJTFVSRSIpOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0idGVzdCgpIj4KKyAgICA8cD5UaGlzIHRlc3QgYWltcyB0byBjaGVjayB3aGF0
IGhhcHBlbnMgd2hlbiBhdXRvZm9jdXMgaXMgc2V0IG9uIG11bHRpcGxlIGNvbnRyb2xzIHdpdGgg
b25lIHNldCBhcyByZWFkb25seS4gRm9jdXMgc2hvdWxkIHJlbWFpbiBvbiB0aGUgbGFzdCBub24t
cmVhZG9ubHkgYXV0b2ZvY3VzIGNvbnRyb2wgKHRoZSBzZWNvbmQgb25lKS4gUGFzc2VzIGlmIHBy
aW50cyAiU1VDQ0VTUyIsIGZhaWxzIG90aGVyd2lzZS48L3A+CisgICAgPGZvcm0+CisgICAgICAg
IDxwPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZGF0YSIgc2l6ZT0iMjAiIGF1dG9mb2N1cyBvbmZv
Y3VzPSJmb2N1c1RyaWdnZXJlZCh0aGlzKTsiLz48L3A+CisgICAgICAgIDxwPjxpbnB1dCB0eXBl
PSJ0ZXh0IiBpZD0iZ2VvcmRpIiBzaXplPSIyMCIgYXV0b2ZvY3VzIG9uZm9jdXM9ImZvY3VzVHJp
Z2dlcmVkKHRoaXMpOyIvPjwvcD4KKyAgICAgICAgPHA+PGlucHV0IHR5cGU9InRleHQiIGlkPSJ3
b3JmIiBzaXplPSIyMCIgYXV0b2ZvY3VzIHJlYWRvbmx5IG9uZm9jdXM9ImZvY3VzVHJpZ2dlcmVk
KHRoaXMpOyIvPjwvcD4KKyAgICA8L2Zvcm0+CisgICAgPGhyPgorICAgIDxwPjxvbCBpZD0iY29u
c29sZSI+PC9vbD48L3A+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQo=
</data>
<flag name="review"
          id="9175"
          type_id="1"
          status="-"
          setter="adele"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21310</attachid>
            <date>2008-05-23 07:52:28 -0700</date>
            <delta_ts>2008-06-16 16:11:44 -0700</delta_ts>
            <desc>Initial implementation, third revision</desc>
            <filename>webkit_autofocus_patch-rev3.txt</filename>
            <type>text/plain</type>
            <size>11692</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNDA3NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMDgtMDUtMjMgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtLmRl
c0BtYWMuY29tPgorCisgICAgICAgIFN1cHBvcnQgZm9yIGF1dG9mb2N1cyBjb250cm9scy4KKyAg
ICAgICAgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg4Nwor
ICAgICAgICAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGVzdDogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtYXR0cmlidXRlLmh0bWwKKworICAgICAgICAqIGRv
bS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omln
bm9yZUF1dG9mb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0SWdub3JlQXV0
b2ZvY3VzKToKKyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAg
KiBodG1sL0hUTUxCdXR0b25FbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxHZW5lcmlj
Rm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEdlbmVyaWNGb3JtRWxlbWVu
dDo6SFRNTEdlbmVyaWNGb3JtRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MR2VuZXJp
Y0Zvcm1FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MR2VuZXJpY0Zvcm1FbGVtZW50OjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEdl
bmVyaWNGb3JtRWxlbWVudDo6c2V0QXV0b2ZvY3VzKToKKyAgICAgICAgKiBodG1sL0hUTUxHZW5l
cmljRm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxHZW5lcmljRm9ybUVsZW1l
bnQ6OmF1dG9mb2N1cyk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbDoKKyAg
ICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuaWRsOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6c2V0VXNlckVkaXRl
ZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmg6CisKIDIwMDgtMDUt
MjMgIEFyaXlhIEhpZGF5YXQgIDxhcml5YS5oaWRheWF0QHRyb2xsdGVjaC5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24uCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAzNDA3NCkKKysr
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDYgKzMwNCw4
IEBAIERvY3VtZW50OjpEb2N1bWVudChET01JbXBsZW1lbnRhdGlvbiogaW0KICAgICBtX2RvY3Vt
ZW50LnJlc2V0U2tpcHBpbmdSZWYodGhpcyk7CiAKICAgICBtX3ByaW50aW5nID0gZmFsc2U7Cisg
ICAgCisgICAgbV9pZ25vcmVBdXRvZm9jdXMgPSBmYWxzZTsKIAogICAgIG1fZnJhbWUgPSBmcmFt
ZTsKICAgICBtX3JlbmRlckFyZW5hID0gMDsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMzQwNzQpCisr
KyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzMsNiArNDczLDEw
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2V0Rm9jdXNlZE5vZGUoUGFzc1JlZlB0cjxOb2RlPik7
CiAgICAgTm9kZSogZm9jdXNlZE5vZGUoKSBjb25zdCB7IHJldHVybiBtX2ZvY3VzZWROb2RlLmdl
dCgpOyB9CisgICAgCisgICAgLy8gQXV0b2ZvY3VzIHN0dWZmCisgICAgYm9vbCBpZ25vcmVBdXRv
Zm9jdXMoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUF1dG9mb2N1czsgfTsKKyAgICB2b2lkIHNl
dElnbm9yZUF1dG9mb2N1cyhib29sIHNob3VsZElnbm9yZSA9IHRydWUpIHsgbV9pZ25vcmVBdXRv
Zm9jdXMgPSBzaG91bGRJZ25vcmU7IH07CiAKICAgICB2b2lkIHNldEhvdmVyTm9kZShQYXNzUmVm
UHRyPE5vZGU+KTsKICAgICBOb2RlKiBob3Zlck5vZGUoKSBjb25zdCB7IHJldHVybiBtX2hvdmVy
Tm9kZS5nZXQoKTsgfQpAQCAtNzc5LDYgKzc4Myw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPENT
U1N0eWxlU2hlZXQ+IG1fbWFwcGVkRWxlbWVudFNoZWV0OwogCiAgICAgYm9vbCBtX3ByaW50aW5n
OworICAgIAorICAgIGJvb2wgbV9pZ25vcmVBdXRvZm9jdXM7CiAKICAgICBQYXJzZU1vZGUgbV9w
YXJzZU1vZGU7CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgkocmV2aXNpb24g
MzQwNzQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC0xOCw2ICsxOCw3IEBAIGFyaWEtdmFsdWVtYXgKIGFyaWEtdmFsdWVtaW4KIGFyaWEt
dmFsdWVub3cKIGF1dG9jb21wbGV0ZQorYXV0b2ZvY3VzCiBhdXRvcGxheQogYXV0b3NhdmUKIGF4
aXMKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmlkbAkocmV2aXNpb24gMzQwNzQpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCw2ICsyOCw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlICBI
VE1MRm9ybUVsZW1lbnQgICAgICBmb3JtOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIFtD
b252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nICAgICAgICAgICAgYWNjZXNzS2V5Owog
ICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIGJvb2xlYW4gICAgICAgICAgICAgIGRpc2FibGVk
OworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIGJvb2xlYW4gICAgICAgICAgICAgIGF1dG9m
b2N1czsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBbQ29udmVydE51bGxUb051bGxTdHJp
bmddIERPTVN0cmluZyAgICAgICAgICAgIG5hbWU7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSAgRE9NU3RyaW5nICAgICAgICAgICAgdHlwZTsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRl
ICBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyAgICAgICAgICAgIHZhbHVlOwpJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUxHZW5lcmljRm9ybUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MR2VuZXJpY0Zvcm1FbGVtZW50LmNwcAkocmV2aXNpb24gMzQw
NzQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEdlbmVyaWNGb3JtRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgSFRNTEdlbmVyaWNGb3JtRWxlbWVudDo6SFRNTEdlbmVy
aWNGb3JtRQogICAgICwgbV9mb3JtKGYpCiAgICAgLCBtX2Rpc2FibGVkKGZhbHNlKQogICAgICwg
bV9yZWFkT25seShmYWxzZSkKKyAgICAsIG1fYXV0b2ZvY3VzKGZhbHNlKQogICAgICwgbV92YWx1
ZU1hdGNoZXNSZW5kZXJlcihmYWxzZSkKIHsKICAgICBpZiAoIW1fZm9ybSkKQEAgLTgxLDYgKzgy
LDExIEBAIHZvaWQgSFRNTEdlbmVyaWNGb3JtRWxlbWVudDo6cGFyc2VNYXBwZWQKICAgICAgICAg
ICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmhhc0FwcGVhcmFuY2Uo
KSkKICAgICAgICAgICAgICAgICB0aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgUmVh
ZE9ubHlTdGF0ZSk7CiAgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBh
dXRvZm9jdXNBdHRyKSB7CisgICAgICAgIC8vIEp1c3QgcGFyc2UgZm9yIGF1dG9mb2N1cyBhdHRy
aWJ1dGU7IGF0IHRoaXMgdGltZSB3ZSBhcmUgbm90IGFibGUgdG8gdGVsbCBpZiB0aGUKKyAgICAg
ICAgLy8gZWxlbWVudCBzaG91bGQgaG9ub3VyIGl0cyBhdXRvZm9jdXMgYXR0cmlidXRlLCBwZXJo
YXBzIGl0J3MgZGlzYWJsZWQgb3IgcmVhZG9ubHkKKyAgICAgICAgLy8gYW5kIHdlIGRvbid0IGtu
b3cgaXQgeWV0LiBBbHNvLCB0aGVyZSBpcyBubyByZW5kZXJlciBzZXQgdXAuCisgICAgICAgIG1f
YXV0b2ZvY3VzID0gIWF0dHItPmlzTnVsbCgpOwogICAgIH0gZWxzZQogICAgICAgICBIVE1MRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CkBAIC05Niw2ICsxMDIsMTUgQEAg
dm9pZCBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50OjphdHRhY2goKQogICAgIC8vIG9uIHRoZSByZW5k
ZXJlci4KICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJv
bUVsZW1lbnQoKTsKKworICAgIC8vIEZvY3VzIHRoZSBlbGVtZW50IGlmIGl0IHNob3VsZCBob25v
dXIgaXRzIGF1dG9mb2N1cyBhdHRyaWJ1dGUuCisgICAgLy8gV2UgaGF2ZSB0byBkZXRlcm1pbmUg
aWYgdGhlIGVsZW1lbnQgaXMgYSBUZXh0QXJlYS9JbnB1dC9CdXR0b24vU2VsZWN0LAorICAgIC8v
IGlmIGlucHV0IHR5cGUgaGlkZGVuIGlnbm9yZSBhdXRvZm9jdXMuIFNvIGlmIGRpc2FibGVkIG9y
IHJlYWRvbmx5LgorICAgIGlmIChhdXRvZm9jdXMoKSAmJiByZW5kZXJlcigpICYmICFkb2N1bWVu
dCgpLT5pZ25vcmVBdXRvZm9jdXMoKSAmJiAKKyAgICAgICAgIWRpc2FibGVkKCkgJiYgIWlzUmVh
ZE9ubHlDb250cm9sKCkgJiYKKyAgICAgICAgKChoYXNUYWdOYW1lKGlucHV0VGFnKSAmJiAhaXNJ
bnB1dFR5cGVIaWRkZW4oKSkgfHwKKyAgICAgICAgIGhhc1RhZ05hbWUoc2VsZWN0VGFnKSB8fCBo
YXNUYWdOYW1lKGJ1dHRvblRhZykgfHwgaGFzVGFnTmFtZSh0ZXh0YXJlYVRhZykpKQorICAgICAg
ICAgZm9jdXMoKTsKIH0KIAogdm9pZCBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50OjppbnNlcnRlZElu
dG9UcmVlKGJvb2wgZGVlcCkKQEAgLTE3MSw2ICsxODYsMTEgQEAgdm9pZCBIVE1MR2VuZXJpY0Zv
cm1FbGVtZW50OjpzZXRSZWFkT25seQogICAgIHNldEF0dHJpYnV0ZShyZWFkb25seUF0dHIsIGIg
PyAiIiA6IDApOwogfQogCit2b2lkIEhUTUxHZW5lcmljRm9ybUVsZW1lbnQ6OnNldEF1dG9mb2N1
cyhib29sIGIpCit7CisgICAgc2V0QXR0cmlidXRlKGF1dG9mb2N1c0F0dHIsIGIgPyAiYXV0b2Zv
Y3VzIiA6IDApOworfQorCiB2b2lkIEhUTUxHZW5lcmljRm9ybUVsZW1lbnQ6OnJlY2FsY1N0eWxl
KFN0eWxlQ2hhbmdlIGNoYW5nZSkKIHsKICAgICBIVE1MRWxlbWVudDo6cmVjYWxjU3R5bGUoY2hh
bmdlKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MR2VuZXJpY0Zvcm1FbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxHZW5lcmljRm9ybUVsZW1lbnQuaAkocmV2aXNpb24g
MzQwNzQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEdlbmVyaWNGb3JtRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC03MSw2ICs3MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNSZWFk
T25seUNvbnRyb2woKSBjb25zdCB7IHJldHVybiBtX3JlYWRPbmx5OyB9CiAgICAgdm9pZCBzZXRS
ZWFkT25seShib29sKTsKIAorICAgIHZpcnR1YWwgYm9vbCBhdXRvZm9jdXMoKSBjb25zdCB7IHJl
dHVybiBtX2F1dG9mb2N1czsgfTsKKyAgICB2b2lkIHNldEF1dG9mb2N1cyhib29sKTsKKyAgICAK
ICAgICB2aXJ0dWFsIHZvaWQgcmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpOwogCiAgICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdDsKQEAgLTEwMiw2ICsxMDUsNyBAQCBw
cml2YXRlOgogICAgIEhUTUxGb3JtRWxlbWVudCogbV9mb3JtOwogICAgIGJvb2wgbV9kaXNhYmxl
ZDsKICAgICBib29sIG1fcmVhZE9ubHk7CisgICAgYm9vbCBtX2F1dG9mb2N1czsKICAgICBtdXRh
YmxlIGJvb2wgbV92YWx1ZU1hdGNoZXNSZW5kZXJlcjsKIH07CiAKSW5kZXg6IFdlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5pZGwJKHJldmlzaW9uIDM0MDc0KQorKysgV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBAIG1vZHVsZSBodG1s
IHsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10g
RE9NU3RyaW5nIGFsdDsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gICAgICAg
ICBjaGVja2VkOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIGRp
c2FibGVkOworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIGF1dG9m
b2N1czsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGxvbmcgICAgICAgICAgICBtYXhMZW5n
dGg7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmdd
IERPTVN0cmluZyBuYW1lOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAg
ICAgIHJlYWRPbmx5OwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCShyZXZpc2lv
biAzNDA3NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgSFRNTE9wdGlvbnNDb2xsZWN0aW9uIG9wdGlvbnM7CiAKICAgICAgICAgICAgICAg
ICAgYXR0cmlidXRlIGJvb2xlYW4gICAgICAgICBkaXNhYmxlZDsKKyAgICAgICAgICAgICAgICAg
YXR0cmlidXRlIGJvb2xlYW4gICAgICAgICBhdXRvZm9jdXM7CiAgICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZSBib29sZWFuICAgICAgICAgbXVsdGlwbGU7CiAgICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyAgICAgICBuYW1lOwogICAg
ICAgICAgICAgICAgICBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgIHNpemU7CkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCShyZXZpc2lvbiAzNDA3NCkKKysrIFdlYkNvcmUv
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAs
NyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnRO
dWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgICAgICAgICAgICBhY2Nlc3NLZXk7CiAgICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZSAgbG9uZyAgICAgICAgICAgICAgICAgY29sczsKICAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICBkaXNhYmxlZDsKKyAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICBhdXRvZm9jdXM7CiAg
ICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01T
dHJpbmcgICAgICAgICAgICBuYW1lOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIGJvb2xl
YW4gICAgICAgICAgICAgIHJlYWRPbmx5OwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIGxv
bmcgICAgICAgICAgICAgICAgIHJvd3M7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2wuY3BwCShyZXZpc2lvbiAzNDA3NCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE1LDYgKzQxNSwxMiBAQCB2b2lk
IFJlbmRlclRleHRDb250cm9sOjp1cGRhdGVGcm9tRWxlbWVuCiAgICAgICAgIG1fc2VhcmNoUG9w
dXAtPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKK3ZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OnNl
dFVzZXJFZGl0ZWQoYm9vbCBpc1VzZXJFZGl0ZWQpCit7CisgICAgbV91c2VyRWRpdGVkID0gaXNV
c2VyRWRpdGVkOworICAgIGRvY3VtZW50KCktPnNldElnbm9yZUF1dG9mb2N1cyhpc1VzZXJFZGl0
ZWQpOworfQorCiBpbnQgUmVuZGVyVGV4dENvbnRyb2w6OnNlbGVjdGlvblN0YXJ0KCkKIHsKICAg
ICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpOwpJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbC5oCShyZXZpc2lvbiAzNDA3NCkKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRBcmVhKCkgY29uc3QgeyByZXR1cm4gbV9t
dWx0aUxpbmU7IH0KICAgICAKICAgICBib29sIGlzVXNlckVkaXRlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fdXNlckVkaXRlZDsgfQotICAgIHZvaWQgc2V0VXNlckVkaXRlZChib29sIGlzVXNlckVkaXRl
ZCkgeyBtX3VzZXJFZGl0ZWQgPSBpc1VzZXJFZGl0ZWQ7IH0KKyAgICB2b2lkIHNldFVzZXJFZGl0
ZWQoYm9vbCk7CiAKICAgICBpbnQgc2VsZWN0aW9uU3RhcnQoKTsKICAgICBpbnQgc2VsZWN0aW9u
RW5kKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzNDA3NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDA4LTA1LTIzICBNaWNoZWxhbmdl
bG8gRGUgU2ltb25lICA8bS5kZXNAbWFjLmNvbT4KKworICAgICAgICBBdXRvZm9jdXMgYXR0cmli
dXRlIHRlc3QgY2FzZS4KKyAgICAgICAgCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtYXR0cmlidXRlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtYXR0cmlidXRlLmh0
bWw6IEFkZGVkLgorCiAyMDA4LTA1LTIzICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyLgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9hdXRvZm9jdXMtYXR0cmlidXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtYXR0cmlidXRl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitUaGlzIHRlc3QgY2hl
Y2tzIGZvciB0aGUgYXV0b2ZvY3VzIGF0dHJpYnV0ZS4gQXV0b2ZvY3VzIGlzIHNldCBvbiB0aGUg
Zmlyc3QgYW5kIG9uIHRoZSB0aGlyZCBpbnB1dC4gU3VjY2VzcyBvbiAiWUVTIE5PIFlFUyIuCisK
KyAgCitZRVMKK05PCitZRVMKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3Vz
LWF0dHJpYnV0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0
b2ZvY3VzLWF0dHJpYnV0ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9hdXRvZm9jdXMtYXR0cmlidXRlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkg
QEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+YXV0b2ZvY3VzIGF0dHJpYnV0ZSB0ZXN0PC90aXRs
ZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgCisgICAgICAgIHZhciBhID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImlucHV0Iik7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKQorICAg
ICAgICAgICAgYS5pdGVtKGkpLmF1dG9mb2N1cyA/IGxvZygiWUVTIikgOiBsb2coIk5PIik7Cisg
ICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UaGlz
IHRlc3QgY2hlY2tzIGZvciB0aGUgYXV0b2ZvY3VzIGF0dHJpYnV0ZS4gQXV0b2ZvY3VzIGlzIHNl
dCBvbiB0aGUgZmlyc3QKK2FuZCBvbiB0aGUgdGhpcmQgaW5wdXQuIFN1Y2Nlc3Mgb24gIllFUyBO
TyBZRVMiLjwvcD4KKzxpbnB1dCBhdXRvZm9jdXMgaWQ9Im9uZSIvPgorPGlucHV0Lz4KKzxpbnB1
dCBhdXRvZm9jdXMvPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9o
dG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21439</attachid>
            <date>2008-05-30 14:46:02 -0700</date>
            <delta_ts>2008-06-16 16:11:44 -0700</delta_ts>
            <desc>New tests imported from Opera autofocus test suite</desc>
            <filename>autofocus_testsuite.patch</filename>
            <type>text/plain</type>
            <size>15210</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM0MjY3
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMDgtMDUt
MzAgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtLmRlc0BtYWMuY29tPgorCisJQWRkZWQgYSB0
ZXN0IGNhc2UgdG8gY2hlY2sgZm9yIHRoZSBhdXRvZm9jdXMgYXR0cmlidXRlLgorCisJVGhlIHdo
b2xlIE9wZXJhIHRlc3Qgc3VpdGUgZm9yIHRoZSBhdXRvZm9jdXMgYXR0cmlidXRlIGlzCisJbm93
IGltcG9ydGVkIGFuZCBhZGFwdGVkIHRvIGJlIHJ1biBhdXRvbWF0aWNhbGx5LiBFeHBlY3RlZAor
CXJlc3VsdHMgYXJlIHBsYXRmb3JtIGluZGlwZW5kZW50IGFuZCBkdW1wZWQgaW4gcGxhaW4gdGV4
dC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZh
c3QvZm9ybXMvYXV0b2ZvY3VzLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZm9ybXMvYXV0b2ZvY3VzLWF0dHJpYnV0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDEuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAyLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAyLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA1LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA1Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwNi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAw
Ni5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDct
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVy
YS0wMDcuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEt
MDA4LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9hdXRvZm9jdXMt
b3BlcmEtMDA4Lmh0bWw6IEFkZGVkLgorCiAyMDA4LTA1LTMwICBEYW4gQmVybnN0ZWluICA8bWl0
ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBm
YXN0L2Zvcm1zL2F1dG9mb2N1cy1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGZhc3QvZm9ybXMvYXV0b2ZvY3VzLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDYgQEAKK1RoaXMgdGVzdCBjaGVja3MgZm9yIHRoZSBhdXRvZm9jdXMg
YXR0cmlidXRlLiBBdXRvZm9jdXMgaXMgc2V0IG9uIHRoZSBmaXJzdCBhbmQgb24gdGhlIHRoaXJk
IGlucHV0LiBTdWNjZXNzIG9uICJZRVMgTk8gWUVTIi4KKworICAKK1lFUworTk8KK1lFUwpJbmRl
eDogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtYXR0cmlidXRlLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZmFz
dC9mb3Jtcy9hdXRvZm9jdXMtYXR0cmlidXRlLmh0bWwJKHJldmlzaW9uIDApCisrKyBmYXN0L2Zv
cm1zL2F1dG9mb2N1cy1hdHRyaWJ1dGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOSBA
QAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5hdXRvZm9jdXMgYXR0cmlidXRlIHRlc3Q8L3RpdGxl
PgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
KyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAg
IH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgICAKKyAgICAgICAgdmFyIGEgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgiaW5wdXQiKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspCisgICAg
ICAgICAgICBhLml0ZW0oaSkuYXV0b2ZvY3VzID8gbG9nKCJZRVMiKSA6IGxvZygiTk8iKTsKKyAg
ICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoaXMg
dGVzdCBjaGVja3MgZm9yIHRoZSBhdXRvZm9jdXMgYXR0cmlidXRlLiBBdXRvZm9jdXMgaXMgc2V0
IG9uIHRoZSBmaXJzdAorYW5kIG9uIHRoZSB0aGlyZCBpbnB1dC4gU3VjY2VzcyBvbiAiWUVTIE5P
IFlFUyIuPC9wPgorPGlucHV0IGF1dG9mb2N1cyBpZD0ib25lIi8+Cis8aW5wdXQvPgorPGlucHV0
IGF1dG9mb2N1cy8+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0
bWw+CisKSW5kZXg6IGZhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAxLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIGZhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorVGhpcyBmb3JtIGNvbnRyb2wgc2hv
dWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kIGFuZCBhY3RpdmUgc3RhdGU6IAorCitTVUNDRVNT
CkluZGV4OiBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDEuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDEuaHRtbAkocmV2aXNpb24gMCkKKysrIGZh
c3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDI5IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPmJhc2ljICJhdXRvZm9jdXMiIHRlc3Q8L3Rp
dGxlPgorPHN0eWxlPgorIGlucHV0IHsgYmFja2dyb3VuZDpyZWQgfQorIGlucHV0OmZvY3VzIHsg
YmFja2dyb3VuZDpsaW1lIH0KKzwvc3R5bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0
IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7Cisg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8
bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAo
ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
aW5wdXQiKVswXSkKKyAgICAgICAgICAgIGxvZygiU1VDQ0VTUyIpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoaXMgZm9ybSBjb250cm9sIHNob3VsZCBoYXZlIGEg
Z3JlZW4gYmFja2dyb3VuZCBhbmQgYWN0aXZlIHN0YXRlOiA8aW5wdXQgYXV0b2ZvY3VzPgorPGhy
PgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKSW5kZXg6IGZhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMi1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAyLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIGZhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAw
Mi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorVGhpcyBmb3JtIGNv
bnRyb2wgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kOiAKKworU1VDQ0VTUwpJbmRleDog
ZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZmFzdC9m
b3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAyLmh0bWwJKHJldmlzaW9uIDApCisrKyBmYXN0L2Zvcm1z
L2F1dG9mb2N1cy1vcGVyYS0wMDIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAor
PGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5keW5hbWljYWxseSBpbnNlcnRlZCBjb250cm9sIHdpdGgg
ImF1dG9mb2N1cyIgc2V0PC90aXRsZT4KKzxzdHlsZT4KKyBpbnB1dCB7IGJhY2tncm91bmQ6cmVk
IH0KKyBpbnB1dDpmb2N1cyB7IGJhY2tncm91bmQ6bGltZSB9Cis8L3N0eWxlPgorPHNjcmlwdCBs
YW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlv
biBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29s
ZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAg
ICAgICAKKyAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF0pCisgICAgICAgICAgICBsb2coIlNVQ0NFU1Mi
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9nKCJGQUlMVVJFIik7CisgICAgfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5GQUlMIChUaGUgc2Ny
aXB0IGRpZCBub3QgcnVuLik8L3A+Cis8c2NyaXB0PgorIGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCdwJylbMF0uaW5uZXJIVE1MID0gIlRoaXMgZm9ybSBjb250cm9sIHNob3VsZCBoYXZl
IGEgZ3JlZW4gYmFja2dyb3VuZDogPGlucHV0IGF1dG9mb2N1cz4iOworPC9zY3JpcHQ+Cis8aHI+
Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpJbmRleDogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitUaGlzIGZvcm0gY29u
dHJvbCBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQ6IAorU1VDQ0VTUwpJbmRleDogZmFz
dC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZmFzdC9mb3Jt
cy9hdXRvZm9jdXMtb3BlcmEtMDAzLmh0bWwJKHJldmlzaW9uIDApCisrKyBmYXN0L2Zvcm1zL2F1
dG9mb2N1cy1vcGVyYS0wMDMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMSBAQAorPGh0
bWw+Cis8aGVhZD4KKzx0aXRsZT4iYXV0b2ZvY3VzIiBzY3JvbGxpbmcgdGVzdDwvdGl0bGU+Cis8
c3R5bGU+CisgcCN0ZXN0eyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjE1MCUgfQorIGlucHV0IHsg
YmFja2dyb3VuZDpyZWQgfQorIGlucHV0OmZvY3VzIHsgYmFja2dyb3VuZDpsaW1lIH0KKzwvc3R5
bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKworICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSAmJgorICAgICAgICAgICAgZG9jdW1lbnQu
Ym9keS5zY3JvbGxUb3AgIT0gMCkKKyAgICAgICAgICAgIGxvZygiU1VDQ0VTUyIpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwIGlkPSJ0ZXN0Ij5UaGlzIGZvcm0gY29u
dHJvbCBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQ6IDxpbnB1dCBhdXRvZm9jdXM+Cis8
aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA0LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEt
MDA0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitUaGUgZm9ybSBj
b250cm9sIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZDogCisKK1NVQ0NFU1MKSW5kZXg6
IGZhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwNC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGZhc3Qv
Zm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwNC5odG1sCShyZXZpc2lvbiAwKQorKysgZmFzdC9mb3Jt
cy9hdXRvZm9jdXMtb3BlcmEtMDA0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAK
KzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPHRp
dGxlPnRlc3RpbmcgImF1dG9mb2N1cyIgaW4gWEhUTUwgY29tYmluZWQgd2l0aCBkeW5hbWljIGNo
YW5nZXM8L3RpdGxlPgorPHN0eWxlPgorIGlucHV0IHsgYmFja2dyb3VuZDpyZWQgfQorIGlucHV0
OmZvY3VzIHsgYmFja2dyb3VuZDpsaW1lIH0KKzwvc3R5bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJK
YXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNz
YWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJI
VE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVz
dCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICB2YXIgaW5w
dXQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXTsKKyAgICAgICAg
dmFyIHAgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgncCcpWzBdOworICAgICAgICB2
YXIgaW5wdXQgPSBwLnJlbW92ZUNoaWxkKGlucHV0KTsKKyAgICAgICAgaW5wdXQuc2V0QXR0cmli
dXRlKCdhdXRvZm9jdXMnLCdmYWxzZScpOworICAgICAgICBwLmFwcGVuZENoaWxkKGlucHV0KTsK
KworICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSkKKyAgICAgICAgICAgIGxvZygiU1VDQ0VTUyIpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZSBmb3JtIGNvbnRyb2wg
c2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kOiA8aW5wdXQvPjwvcD4KKzxoci8+Cis8b2wg
aWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpJbmRleDogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA1LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA1LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitUaGUgZm9ybSBjb250cm9sIHNo
b3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZDogCisKK1NVQ0NFU1MKSW5kZXg6IGZhc3QvZm9y
bXMvYXV0b2ZvY3VzLW9wZXJhLTAwNS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGZhc3QvZm9ybXMvYXV0
b2ZvY3VzLW9wZXJhLTAwNS5odG1sCShyZXZpc2lvbiAwKQorKysgZmFzdC9mb3Jtcy9hdXRvZm9j
dXMtb3BlcmEtMDA1Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKzxodG1sIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPHRpdGxlPnRlc3Rp
bmcgImF1dG9mb2N1cyIgaW4gWEhUTUwgd2l0aCBkeW5hbWljIGNoYW5nZXMgKHBhcnQgdHdvKTwv
dGl0bGU+Cis8c3R5bGU+CisgaW5wdXQgeyBiYWNrZ3JvdW5kOnJlZCB9CisgaW5wdXQ6Zm9jdXMg
eyBiYWNrZ3JvdW5kOmxpbWUgfQorPC9zdHlsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3Jp
cHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsK
KyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0g
IjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgewor
ICAgICAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQn
KVswXTsKKyAgICAgICAgdmFyIHAgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgncCcp
WzBdOworICAgICAgICB2YXIgaW5wdXQgPSBwLnJlbW92ZUNoaWxkKGlucHV0KTsKKyAgICAgICAg
aW5wdXQuYXV0b2ZvY3VzID0gdHJ1ZTsKKyAgICAgICAgcC5hcHBlbmRDaGlsZChpbnB1dCk7CisK
KyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICBpZiAoZG9jdW1lbnQu
YWN0aXZlRWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVsw
XSkKKyAgICAgICAgICAgIGxvZygiU1VDQ0VTUyIpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBsb2coIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0idGVzdCgpIj4KKzxwPlRoZSBmb3JtIGNvbnRyb2wgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNr
Z3JvdW5kOiA8aW5wdXQvPjwvcD4KKzxoci8+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogZmFzdC9mb3Jt
cy9hdXRvZm9jdXMtb3BlcmEtMDA2LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBmYXN0L2Zv
cm1zL2F1dG9mb2N1cy1vcGVyYS0wMDYtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgZmFz
dC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA2LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNSBAQAorQWxsIGZvcm0gY29udHJvbHMgYmVsb3cgc2hvdWxkIGhhdmUgYSBncmVl
biBiYWNrZ3JvdW5kOgorCisKKworCisKKworCisKKworCisKKworCitTVUNDRVNTCkluZGV4OiBm
YXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBmYXN0L2Zv
cm1zL2F1dG9mb2N1cy1vcGVyYS0wMDYuaHRtbAkocmV2aXNpb24gMCkKKysrIGZhc3QvZm9ybXMv
YXV0b2ZvY3VzLW9wZXJhLTAwNi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1IEBACis8
aHRtbD4KKzxoZWFkPgorPHRpdGxlPnRlc3Qgd2l0aCBtdWx0aXBsZSBjb250cm9scyBoYXZpbmcg
ImF1dG9mb2N1cyIgc2V0PC90aXRsZT4KKzxzdHlsZT4KKyBpbnB1dCwgaW5wdXQjdGVzdDpmb2N1
cyB7IGJhY2tncm91bmQ6bGltZSB9CisgaW5wdXQ6Zm9jdXMsIGlucHV0I3Rlc3QgeyBiYWNrZ3Jv
dW5kOnJlZCB9Cis8L3N0eWxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVz
c2FnZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1l
bnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKSkKKyAgICAgICAgICAgIGxvZygi
U1VDQ0VTUyIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2coIkZBSUxVUkUiKTsKKyAg
ICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPkFsbCBm
b3JtIGNvbnRyb2xzIGJlbG93IHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZDo8L3A+Cis8
cD48aW5wdXQgYXV0b2ZvY3VzPgorPHA+PGlucHV0IGF1dG9mb2N1cz4KKzxwPjxpbnB1dCBhdXRv
Zm9jdXM+Cis8cD48aW5wdXQ+Cis8cD48aW5wdXQgYXV0b2ZvY3VzIGlkPSJ0ZXN0Ij4KKzxwPjxp
bnB1dD4KKzxoci8+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3Bl
cmEtMDA3LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1v
cGVyYS0wMDctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgZmFzdC9mb3Jtcy9hdXRvZm9j
dXMtb3BlcmEtMDA3LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACitU
aGUgZm9ybSBjb250cm9sIGJlbG93IHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZDoKKwor
CisKK1NVQ0NFU1MKSW5kZXg6IGZhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwNy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGZhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwNy5odG1sCShyZXZpc2lv
biAwKQorKysgZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA3Lmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzYgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+ImF1dG9mb2N1cyIgYW5k
IHRoZSBibHVyKCkgbWV0aG9kPC90aXRsZT4KKzxzdHlsZT4KKyBpbnB1dCB7IGJhY2tncm91bmQ6
bGltZSB9CisgaW5wdXQ6Zm9jdXMgeyBiYWNrZ3JvdW5kOnJlZCB9Cis8L3N0eWxlPgorPHNjcmlw
dCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICB2YXIg
Z290Qmx1ciA9IGZhbHNlOworCisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21l
c3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzd2l0Y2hCbHVyKCkgeworICAg
ICAgICBnb3RCbHVyID0gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gdGVzdCgpIHsK
KyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICBpZiAoZ290Qmx1cikK
KyAgICAgICAgICAgIGxvZygiU1VDQ0VTUyIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBs
b2coIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
dGVzdCgpIj4KKzxwPlRoZSBmb3JtIGNvbnRyb2wgYmVsb3cgc2hvdWxkIGhhdmUgYSBncmVlbiBi
YWNrZ3JvdW5kOgorPHA+PGlucHV0IGF1dG9mb2N1cyBvbmZvY3VzPSJ0aGlzLmJsdXIoKSIgb25i
bHVyPSJzd2l0Y2hCbHVyKCkiPgorPGhyLz4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBmYXN0L2Zvcm1z
L2F1dG9mb2N1cy1vcGVyYS0wMDgtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGZhc3QvZm9y
bXMvYXV0b2ZvY3VzLW9wZXJhLTAwOC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBmYXN0
L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDkgQEAKK1RoZSBmb3JtIGNvbnRyb2xzIGJlbG93IHNob3VsZCBoYXZlIGEgZ3JlZW4g
YmFja2dyb3VuZDoKKworCisKKworCisKKworU1VDQ0VTUwpJbmRleDogZmFzdC9mb3Jtcy9hdXRv
Zm9jdXMtb3BlcmEtMDA4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZmFzdC9mb3Jtcy9hdXRvZm9jdXMt
b3BlcmEtMDA4Lmh0bWwJKHJldmlzaW9uIDApCisrKyBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVy
YS0wMDguaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorPGh0bWwgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+ImF1dG9mb2N1cyIg
aW4gWEhUTUwgYW5kIHRoZSBmb2N1cygpIG1ldGhvZDwvdGl0bGU+Cis8c3R5bGU+CisgaW5wdXQs
IGlucHV0I3Rlc3Q6Zm9jdXMgeyBiYWNrZ3JvdW5kOmxpbWUgfQorIGlucHV0I3Rlc3QsIGlucHV0
OmZvY3VzIHsgYmFja2dyb3VuZDpyZWQgfQorPC9zdHlsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9Ikph
dmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3Nh
Z2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhU
TUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0
KCkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXS5m
b2N1cygpOworICAgICAgICAKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAg
ICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgnaW5wdXQnKVswXSkKKyAgICAgICAgICAgIGxvZygiU1VDQ0VTUyIpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZSBmb3JtIGNvbnRyb2xzIGJlbG93
IHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZDo8L3A+Cis8cD48aW5wdXQgaWQ9InRlc3Qi
Lz48L3A+Cis8cD48aW5wdXQgYXV0b2ZvY3VzPSJhdXRvZm9jdXMiLz48L3A+Cis8cD48aW5wdXQg
YXV0b2ZvY3VzPSJhdXRvZm9jdXMiLz48L3A+Cis8aHIvPgorPG9sIGlkPSJjb25zb2xlIj48L29s
PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21746</attachid>
            <date>2008-06-16 16:11:44 -0700</date>
            <delta_ts>2008-06-16 16:15:42 -0700</delta_ts>
            <desc>Initial implementation, fourth revision - BAD DIFF FORMATTING, IGNORE</desc>
            <filename>webkit_autofocus_patch-rev4.txt</filename>
            <type>text/plain</type>
            <size>23930</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDEwYmI5MzQuLjhlYzExYTggMTAwNjQ0Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDA4LTA2LTE2ICBNaWNo
ZWxhbmdlbG8gRGUgU2ltb25lICA8bS5kZXNAbWFjLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgdGVzdCBzdWl0ZSBj
aGVja3MgdGhlIGF1dG9mb2N1cyBiZWhhdmlvci4gVGVzdCBjYXNlcworICAgICAgICAiYXV0b2Zv
Y3VzLW9wZXJhKiIgaGF2ZSBiZWVuIGltcG9ydGVkIGZyb20gdGhlIE9wZXJhIHRlc3Qgc3VpdGUK
KyAgICAgICAgb3JpZ2luYWxseSBsb2NhdGVkIGF0OgorICAgICAgICBodHRwOi8vdGMubGFicy5v
cGVyYS5jb20vaHRtbC9mb3Jtcy9pbnB1dC9jb21tb24tYXR0cmlidXRlcy9hdXRvZm9jdXMvCisK
KyAgICAgICAgKiBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1hdHRyaWJ1dGUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAxLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAxLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMi5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0w
MDMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA0
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3Bl
cmEtMDA0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJh
LTAwNS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvYXV0b2ZvY3Vz
LW9wZXJhLTAwNS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1v
cGVyYS0wMDYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2F1dG9m
b2N1cy1vcGVyYS0wMDYuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9hdXRvZm9j
dXMtb3BlcmEtMDA3LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9h
dXRvZm9jdXMtb3BlcmEtMDA3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvYXV0
b2ZvY3VzLW9wZXJhLTAwOC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9y
bXMvYXV0b2ZvY3VzLW9wZXJhLTAwOC5odG1sOiBBZGRlZC4KKwogMjAwOC0wNi0xNSAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWlu
aWcuCmRpZmYgLS1naXQgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtYXR0cmlidXRl
LWV4cGVjdGVkLnR4dCBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1hdHRyaWJ1dGUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyZDZmYzQK
LS0tIC9kZXYvbnVsbAorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtYXR0cmli
dXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK1RoaXMgdGVzdCBjaGVja3MgZm9yIHRo
ZSBhdXRvZm9jdXMgYXR0cmlidXRlLiBBdXRvZm9jdXMgaXMgc2V0IG9uIHRoZSBmaXJzdCBhbmQg
b24gdGhlIHRoaXJkIGlucHV0LiBTdWNjZXNzIG9uICJZRVMgTk8gWUVTIi4KKworICAKK1lFUwor
Tk8KK1lFUwpkaWZmIC0tZ2l0IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLWF0dHJp
YnV0ZS5odG1sIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLWF0dHJpYnV0ZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkYWI2ZmEKLS0tIC9kZXYvbnVs
bAorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtYXR0cmlidXRlLmh0bWwKQEAg
LTAsMCArMSwyOSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5hdXRvZm9jdXMgYXR0cmlidXRl
IHRlc3Q8L3RpdGxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2FnZSsi
PC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgICAKKyAgICAgICAgdmFyIGEgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiaW5wdXQiKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGEubGVuZ3Ro
OyBpKyspCisgICAgICAgICAgICBhLml0ZW0oaSkuYXV0b2ZvY3VzID8gbG9nKCJZRVMiKSA6IGxv
ZygiTk8iKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgp
Ij4KKzxwPlRoaXMgdGVzdCBjaGVja3MgZm9yIHRoZSBhdXRvZm9jdXMgYXR0cmlidXRlLiBBdXRv
Zm9jdXMgaXMgc2V0IG9uIHRoZSBmaXJzdAorYW5kIG9uIHRoZSB0aGlyZCBpbnB1dC4gU3VjY2Vz
cyBvbiAiWUVTIE5PIFlFUyIuPC9wPgorPGlucHV0IGF1dG9mb2N1cyBpZD0ib25lIi8+Cis8aW5w
dXQvPgorPGlucHV0IGF1dG9mb2N1cy8+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8
L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9m
b2N1cy1vcGVyYS0wMDEtZXhwZWN0ZWQudHh0IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2Zv
Y3VzLW9wZXJhLTAwMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZGYzNTEzMwotLS0gL2Rldi9udWxsCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1
dG9mb2N1cy1vcGVyYS0wMDEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGhpcyBmb3Jt
IGNvbnRyb2wgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kIGFuZCBhY3RpdmUgc3RhdGU6
IAorCitTVUNDRVNTCmRpZmYgLS1naXQgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMt
b3BlcmEtMDAxLmh0bWwgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAx
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg0OTdjNwotLS0gL2Rl
di9udWxsCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDEuaHRt
bApAQCAtMCwwICsxLDI5IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPmJhc2ljICJhdXRvZm9j
dXMiIHRlc3Q8L3RpdGxlPgorPHN0eWxlPgorIGlucHV0IHsgYmFja2dyb3VuZDpyZWQgfQorIGlu
cHV0OmZvY3VzIHsgYmFja2dyb3VuZDpsaW1lIH0KKzwvc3R5bGU+Cis8c2NyaXB0IGxhbmd1YWdl
PSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyht
ZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5u
ZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24g
dGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIAor
ICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgiaW5wdXQiKVswXSkKKyAgICAgICAgICAgIGxvZygiU1VDQ0VTUyIpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoaXMgZm9ybSBjb250cm9sIHNo
b3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZCBhbmQgYWN0aXZlIHN0YXRlOiA8aW5wdXQgYXV0
b2ZvY3VzPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2F1dG9mb2N1cy1vcGVyYS0wMDItZXhwZWN0ZWQudHh0IExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvYXV0b2ZvY3VzLW9wZXJhLTAwMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uODQ0YTU0OAotLS0gL2Rldi9udWxsCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAor
VGhpcyBmb3JtIGNvbnRyb2wgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kOiAKKworU1VD
Q0VTUwpkaWZmIC0tZ2l0IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAw
Mi5odG1sIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzYzYwMGYKLS0tIC9kZXYvbnVsbAor
KysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAyLmh0bWwKQEAgLTAs
MCArMSwzMiBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5keW5hbWljYWxseSBpbnNlcnRlZCBj
b250cm9sIHdpdGggImF1dG9mb2N1cyIgc2V0PC90aXRsZT4KKzxzdHlsZT4KKyBpbnB1dCB7IGJh
Y2tncm91bmQ6cmVkIH0KKyBpbnB1dDpmb2N1cyB7IGJhY2tncm91bmQ6bGltZSB9Cis8L3N0eWxl
PgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
KyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAg
IH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF0pCisgICAgICAgICAgICBs
b2coIlNVQ0NFU1MiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9nKCJGQUlMVVJFIik7
CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5G
QUlMIChUaGUgc2NyaXB0IGRpZCBub3QgcnVuLik8L3A+Cis8c2NyaXB0PgorIGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCdwJylbMF0uaW5uZXJIVE1MID0gIlRoaXMgZm9ybSBjb250cm9s
IHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZDogPGlucHV0IGF1dG9mb2N1cz4iOworPC9z
Y3JpcHQ+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvYXV0b2ZvY3VzLW9wZXJhLTAwMy1leHBlY3RlZC50eHQgTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9hdXRvZm9jdXMtb3BlcmEtMDAzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5kYzQyMmYxCi0tLSAvZGV2L251bGwKKysrIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitU
aGlzIGZvcm0gY29udHJvbCBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQ6IAorU1VDQ0VT
UwpkaWZmIC0tZ2l0IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMy5o
dG1sIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiYTI1OWEKLS0tIC9kZXYvbnVsbAorKysg
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAzLmh0bWwKQEAgLTAsMCAr
MSwzMSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT4iYXV0b2ZvY3VzIiBzY3JvbGxpbmcgdGVz
dDwvdGl0bGU+Cis8c3R5bGU+CisgcCN0ZXN0eyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjE1MCUg
fQorIGlucHV0IHsgYmFja2dyb3VuZDpyZWQgfQorIGlucHV0OmZvY3VzIHsgYmFja2dyb3VuZDps
aW1lIH0KKzwvc3R5bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdl
KyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSAmJgorICAgICAgICAg
ICAgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgIT0gMCkKKyAgICAgICAgICAgIGxvZygiU1VDQ0VT
UyIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwIGlkPSJ0ZXN0Ij5U
aGlzIGZvcm0gY29udHJvbCBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQ6IDxpbnB1dCBh
dXRvZm9jdXM+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwNC1leHBlY3RlZC50eHQgTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi41NThjZDYwCi0tLSAvZGV2L251bGwKKysrIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwNC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBA
CitUaGUgZm9ybSBjb250cm9sIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZDogCisKK1NV
Q0NFU1MKZGlmZiAtLWdpdCBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0w
MDQuaHRtbCBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTBmMzczCi0tLSAvZGV2L251bGwK
KysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwNC5odG1sCkBAIC0w
LDAgKzEsMzUgQEAKKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4K
KzxoZWFkPgorPHRpdGxlPnRlc3RpbmcgImF1dG9mb2N1cyIgaW4gWEhUTUwgY29tYmluZWQgd2l0
aCBkeW5hbWljIGNoYW5nZXM8L3RpdGxlPgorPHN0eWxlPgorIGlucHV0IHsgYmFja2dyb3VuZDpy
ZWQgfQorIGlucHV0OmZvY3VzIHsgYmFja2dyb3VuZDpsaW1lIH0KKzwvc3R5bGU+Cis8c2NyaXB0
IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0
aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25z
b2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAg
ICAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVsw
XTsKKyAgICAgICAgdmFyIHAgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgncCcpWzBd
OworICAgICAgICB2YXIgaW5wdXQgPSBwLnJlbW92ZUNoaWxkKGlucHV0KTsKKyAgICAgICAgaW5w
dXQuc2V0QXR0cmlidXRlKCdhdXRvZm9jdXMnLCdmYWxzZScpOworICAgICAgICBwLmFwcGVuZENo
aWxkKGlucHV0KTsKKworICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSkKKyAgICAgICAgICAgIGxvZygi
U1VDQ0VTUyIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2coIkZBSUxVUkUiKTsKKyAg
ICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZSBm
b3JtIGNvbnRyb2wgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kOiA8aW5wdXQvPjwvcD4K
Kzxoci8+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0
b2ZvY3VzLW9wZXJhLTAwNS1leHBlY3RlZC50eHQgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRv
Zm9jdXMtb3BlcmEtMDA1LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi41NThjZDYwCi0tLSAvZGV2L251bGwKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
YXV0b2ZvY3VzLW9wZXJhLTAwNS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUaGUgZm9y
bSBjb250cm9sIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZDogCisKK1NVQ0NFU1MKZGlm
ZiAtLWdpdCBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDUuaHRtbCBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjdhYzNlCi0tLSAvZGV2L251bGwKKysrIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwNS5odG1sCkBAIC0wLDAgKzEsMzUg
QEAKKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgor
PHRpdGxlPnRlc3RpbmcgImF1dG9mb2N1cyIgaW4gWEhUTUwgd2l0aCBkeW5hbWljIGNoYW5nZXMg
KHBhcnQgdHdvKTwvdGl0bGU+Cis8c3R5bGU+CisgaW5wdXQgeyBiYWNrZ3JvdW5kOnJlZCB9Cisg
aW5wdXQ6Zm9jdXMgeyBiYWNrZ3JvdW5kOmxpbWUgfQorPC9zdHlsZT4KKzxzY3JpcHQgbGFuZ3Vh
Z2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9n
KG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5p
bm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlv
biB0ZXN0KCkgeworICAgICAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgnaW5wdXQnKVswXTsKKyAgICAgICAgdmFyIHAgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgncCcpWzBdOworICAgICAgICB2YXIgaW5wdXQgPSBwLnJlbW92ZUNoaWxkKGlucHV0
KTsKKyAgICAgICAgaW5wdXQuYXV0b2ZvY3VzID0gdHJ1ZTsKKyAgICAgICAgcC5hcHBlbmRDaGls
ZChpbnB1dCk7CisKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICBp
ZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgiaW5wdXQiKVswXSkKKyAgICAgICAgICAgIGxvZygiU1VDQ0VTUyIpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZSBmb3JtIGNvbnRyb2wgc2hvdWxkIGhhdmUg
YSBncmVlbiBiYWNrZ3JvdW5kOiA8aW5wdXQvPjwvcD4KKzxoci8+Cis8b2wgaWQ9ImNvbnNvbGUi
Pjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwNi1leHBlY3Rl
ZC50eHQgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA2LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTA0YjJlCi0tLSAvZGV2
L251bGwKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwNi1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorQWxsIGZvcm0gY29udHJvbHMgYmVsb3cgc2hvdWxk
IGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kOgorCisKKworCisKKworCisKKworCisKKworCitTVUND
RVNTCmRpZmYgLS1naXQgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA2
Lmh0bWwgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA2Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU1ZGVjNgotLS0gL2Rldi9udWxsCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDYuaHRtbApAQCAtMCww
ICsxLDM1IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPnRlc3Qgd2l0aCBtdWx0aXBsZSBjb250
cm9scyBoYXZpbmcgImF1dG9mb2N1cyIgc2V0PC90aXRsZT4KKzxzdHlsZT4KKyBpbnB1dCwgaW5w
dXQjdGVzdDpmb2N1cyB7IGJhY2tncm91bmQ6bGltZSB9CisgaW5wdXQ6Zm9jdXMsIGlucHV0I3Rl
c3QgeyBiYWNrZ3JvdW5kOnJlZCB9Cis8L3N0eWxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNj
cmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkg
eworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCAr
PSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7
CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgaWYgKGRvY3VtZW50
LmFjdGl2ZUVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKSkKKyAgICAg
ICAgICAgIGxvZygiU1VDQ0VTUyIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2coIkZB
SUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgp
Ij4KKzxwPkFsbCBmb3JtIGNvbnRyb2xzIGJlbG93IHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dy
b3VuZDo8L3A+Cis8cD48aW5wdXQgYXV0b2ZvY3VzPgorPHA+PGlucHV0IGF1dG9mb2N1cz4KKzxw
PjxpbnB1dCBhdXRvZm9jdXM+Cis8cD48aW5wdXQ+Cis8cD48aW5wdXQgYXV0b2ZvY3VzIGlkPSJ0
ZXN0Ij4KKzxwPjxpbnB1dD4KKzxoci8+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwNy1leHBlY3RlZC50eHQgTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA3LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjhjMmRmCi0tLSAvZGV2L251bGwKKysrIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwNy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw1IEBACitUaGUgZm9ybSBjb250cm9sIGJlbG93IHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFj
a2dyb3VuZDoKKworCisKK1NVQ0NFU1MKZGlmZiAtLWdpdCBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2F1dG9mb2N1cy1vcGVyYS0wMDcuaHRtbCBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1
cy1vcGVyYS0wMDcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjBj
OWFlCi0tLSAvZGV2L251bGwKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9w
ZXJhLTAwNy5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+ImF1
dG9mb2N1cyIgYW5kIHRoZSBibHVyKCkgbWV0aG9kPC90aXRsZT4KKzxzdHlsZT4KKyBpbnB1dCB7
IGJhY2tncm91bmQ6bGltZSB9CisgaW5wdXQ6Zm9jdXMgeyBiYWNrZ3JvdW5kOnJlZCB9Cis8L3N0
eWxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KKyAgICB2YXIgZ290Qmx1ciA9IGZhbHNlOworCisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2Up
IHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwg
Kz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzd2l0Y2hC
bHVyKCkgeworICAgICAgICBnb3RCbHVyID0gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rp
b24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICBp
ZiAoZ290Qmx1cikKKyAgICAgICAgICAgIGxvZygiU1VDQ0VTUyIpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZSBmb3JtIGNvbnRyb2wgYmVsb3cgc2hvdWxkIGhh
dmUgYSBncmVlbiBiYWNrZ3JvdW5kOgorPHA+PGlucHV0IGF1dG9mb2N1cyBvbmZvY3VzPSJ0aGlz
LmJsdXIoKSIgb25ibHVyPSJzd2l0Y2hCbHVyKCkiPgorPGhyLz4KKzxvbCBpZD0iY29uc29sZSI+
PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA4LWV4cGVjdGVk
LnR4dCBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDgtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2NzlmZWYKLS0tIC9kZXYv
bnVsbAorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA4LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK1RoZSBmb3JtIGNvbnRyb2xzIGJlbG93IHNob3VsZCBo
YXZlIGEgZ3JlZW4gYmFja2dyb3VuZDoKKworCisKKworCisKKworU1VDQ0VTUwpkaWZmIC0tZ2l0
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwOC5odG1sIExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwOC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmQ0Mjk4MmMKLS0tIC9kZXYvbnVsbAorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA4Lmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPGh0
bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+
ImF1dG9mb2N1cyIgaW4gWEhUTUwgYW5kIHRoZSBmb2N1cygpIG1ldGhvZDwvdGl0bGU+Cis8c3R5
bGU+CisgaW5wdXQsIGlucHV0I3Rlc3Q6Zm9jdXMgeyBiYWNrZ3JvdW5kOmxpbWUgfQorIGlucHV0
I3Rlc3QsIGlucHV0OmZvY3VzIHsgYmFja2dyb3VuZDpyZWQgfQorPC9zdHlsZT4KKzxzY3JpcHQg
bGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNv
bGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgn
aW5wdXQnKVswXS5mb2N1cygpOworICAgICAgICAKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKworICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXSkKKyAgICAgICAgICAgIGxvZygiU1VDQ0VT
UyIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZSBmb3JtIGNv
bnRyb2xzIGJlbG93IHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZDo8L3A+Cis8cD48aW5w
dXQgaWQ9InRlc3QiLz48L3A+Cis8cD48aW5wdXQgYXV0b2ZvY3VzPSJhdXRvZm9jdXMiLz48L3A+
Cis8cD48aW5wdXQgYXV0b2ZvY3VzPSJhdXRvZm9jdXMiLz48L3A+Cis8aHIvPgorPG9sIGlkPSJj
b25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IFdlYkNvcmUvQ2hhbmdl
TG9nIFdlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE5YjIyMDguLmFjODZhZmYgMTAwNjQ0Ci0tLSBX
ZWJDb3JlL0NoYW5nZUxvZworKysgV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAor
MjAwOC0wNi0xNiAgTWljaGVsYW5nZWxvIERlIFNpbW9uZSAgPG0uZGVzQG1hYy5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgIAlBZGRlZCBzdXBwb3J0
IGZvciBhdXRvZm9jdXMgY29udHJvbHMuCisKKyAgICAJV2hlbiBhdXRob3JzIHNwZWNpZnkgdGhl
ICJhdXRvZm9jdXMiIGF0dHJpYnV0ZSBvbgorICAgIAlmb3JtIGNvbnRyb2xzIHRoZXNlIGFjcXVp
cmUgZm9jdXMgYXV0b21hdGljYWxseSBhcworICAgIAl0aGUgZG9jdW1lbnQgaXMgcmVuZGVyZWQu
CisgICAgCisgICAgCWZhc3QvZG9tL2RvbUxpc3RFbnVtZXJhdGlvbiBUQyBzaG91bGQgYmUgdXBk
YXRlZAorICAgIAl0byByZWZsZWN0IHRoaXMgbmV3IGF0dHJpYnV0ZS4KKworICAgICAgICBUZXN0
czogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtYXR0cmlidXRlLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zv
cm1zL2F1dG9mb2N1cy1vcGVyYS0wMDIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy9h
dXRvZm9jdXMtb3BlcmEtMDAzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvYXV0b2Zv
Y3VzLW9wZXJhLTAwNC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1v
cGVyYS0wMDUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEt
MDA2Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwNy5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDguaHRtbAor
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MQXR0cmlidXRlTmFtZXMuaW46CisgICAgICAgICogaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5p
ZGw6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjphdXRvZm9jdXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0QXV0b2ZvY3VzKToKKyAgICAgICAgKiBodG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1l
bnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsOgorICAgICAgICAq
IGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGw6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjpz
ZXRVc2VyRWRpdGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaDoK
KwogMjAwOC0wNi0xNiAgSm9uYXRob24gSm9uZ3NtYSAgPGpvbmF0aG9uLmpvbmdzbWFAY29sbGFi
b3JhLmNvLnVrPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1n
aXQgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCA4ZjAxYzk5Li5iNjc5MjNlIDEwMDY0NAotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTMwMiw2ICszMDIsOCBAQCBEb2N1bWVudDo6
RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBib29sIGlzWEhUTUwpCiAgICAgbV9kb2N1bWVudC5yZXNl
dFNraXBwaW5nUmVmKHRoaXMpOwogCiAgICAgbV9wcmludGluZyA9IGZhbHNlOworICAgIAorICAg
IG1faWdub3JlQXV0b2ZvY3VzID0gZmFsc2U7CiAKICAgICBtX2ZyYW1lID0gZnJhbWU7CiAgICAg
bV9yZW5kZXJBcmVuYSA9IDA7CmRpZmYgLS1naXQgV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBXZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGExMzQ5YTEuLjljODFjZWMgMTAwNjQ0Ci0tLSBXZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC00ODIsNiAr
NDgyLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHNldEZvY3VzZWROb2RlKFBhc3NSZWZQdHI8Tm9k
ZT4pOwogICAgIE5vZGUqIGZvY3VzZWROb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mb2N1c2VkTm9k
ZS5nZXQoKTsgfQogCisgICAgLy8gQXV0b2ZvY3VzIHN0dWZmCisgICAgYm9vbCBpZ25vcmVBdXRv
Zm9jdXMoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUF1dG9mb2N1czsgfTsKKyAgICB2b2lkIHNl
dElnbm9yZUF1dG9mb2N1cyhib29sIHNob3VsZElnbm9yZSA9IHRydWUpIHsgbV9pZ25vcmVBdXRv
Zm9jdXMgPSBzaG91bGRJZ25vcmU7IH07CisKICAgICB2b2lkIHNldEhvdmVyTm9kZShQYXNzUmVm
UHRyPE5vZGU+KTsKICAgICBOb2RlKiBob3Zlck5vZGUoKSBjb25zdCB7IHJldHVybiBtX2hvdmVy
Tm9kZS5nZXQoKTsgfQogCkBAIC04MDUsNiArODA5LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8
Q1NTU3R5bGVTaGVldD4gbV9tYXBwZWRFbGVtZW50U2hlZXQ7CiAKICAgICBib29sIG1fcHJpbnRp
bmc7CisgICAgCisgICAgYm9vbCBtX2lnbm9yZUF1dG9mb2N1czsKIAogICAgIFBhcnNlTW9kZSBt
X3BhcnNlTW9kZTsKIApkaWZmIC0tZ2l0IFdlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMu
aW4gV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgppbmRleCA2ZDdkYjMwLi4yNTA3
NDAxIDEwMDY0NAotLS0gV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgorKysgV2Vi
Q29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtMTksNiArMTksNyBAQAogPGFyaWEt
dmFsdWVtaW4vPgogPGFyaWEtdmFsdWVub3cvPgogPGF1dG9jb21wbGV0ZS8+Cis8YXV0b2ZvY3Vz
Lz4KIDxhdXRvcGxheS8+CiA8YXV0b3NhdmUvPgogPGF4aXMvPgpkaWZmIC0tZ2l0IFdlYkNvcmUv
aHRtbC9IVE1MQnV0dG9uRWxlbWVudC5pZGwgV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50
LmlkbAppbmRleCBkNmY4Yjg3Li5hYWZkM2ExIDEwMDY0NAotLS0gV2ViQ29yZS9odG1sL0hUTUxC
dXR0b25FbGVtZW50LmlkbAorKysgV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmlkbApA
QCAtMjgsNiArMjgsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSAgSFRNTEZvcm1FbGVtZW50ICAgICAgZm9ybTsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRl
ICBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyAgICAgICAgICAgIGFjY2Vzc0tl
eTsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICBkaXNh
YmxlZDsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICBh
dXRvZm9jdXM7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnROdWxsVG9OdWxs
U3RyaW5nXSBET01TdHJpbmcgICAgICAgICAgICBuYW1lOwogICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgIERPTVN0cmluZyAgICAgICAgICAgIHR5cGU7CiAgICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZSAgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgICAgICAgICAgICB2YWx1
ZTsKZGlmZiAtLWdpdCBXZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IGMyOWQ2ZjEuLmVjNTgz
NjMgMTAwNjQ0Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysr
IFdlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtOTYsNiArOTYsMTQg
QEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjphdHRhY2goKQogICAgIC8vIG9uIHRoZSBy
ZW5kZXJlci4KICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRl
RnJvbUVsZW1lbnQoKTsKKyAgICAgICAgCisgICAgLy8gRm9jdXMgdGhlIGVsZW1lbnQgaWYgaXQg
c2hvdWxkIGhvbm91ciBpdHMgYXV0b2ZvY3VzIGF0dHJpYnV0ZS4KKyAgICAvLyBXZSBoYXZlIHRv
IGRldGVybWluZSBpZiB0aGUgZWxlbWVudCBpcyBhIFRleHRBcmVhL0lucHV0L0J1dHRvbi9TZWxl
Y3QsCisgICAgLy8gaWYgaW5wdXQgdHlwZSBoaWRkZW4gaWdub3JlIGF1dG9mb2N1cy4gU28gaWYg
ZGlzYWJsZWQgb3IgcmVhZG9ubHkuCisgICAgaWYgKGF1dG9mb2N1cygpICYmIHJlbmRlcmVyKCkg
JiYgIWRvY3VtZW50KCktPmlnbm9yZUF1dG9mb2N1cygpICYmICFpc1JlYWRPbmx5Q29udHJvbCgp
ICYmCisgICAgICAgICgoaGFzVGFnTmFtZShpbnB1dFRhZykgJiYgIWlzSW5wdXRUeXBlSGlkZGVu
KCkpIHx8IGhhc1RhZ05hbWUoc2VsZWN0VGFnKSB8fAorICAgICAgICBoYXNUYWdOYW1lKGJ1dHRv
blRhZykgfHwgaGFzVGFnTmFtZSh0ZXh0YXJlYVRhZykpKQorICAgICAgICAgZm9jdXMoKTsKIH0K
IAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjppbnNlcnRlZEludG9UcmVlKGJvb2wgZGVl
cCkKQEAgLTE3MSw2ICsxNzksMTYgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRS
ZWFkT25seShib29sIGIpCiAgICAgc2V0QXR0cmlidXRlKHJlYWRvbmx5QXR0ciwgYiA/ICIiIDog
MCk7CiB9CiAKK2Jvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXV0b2ZvY3VzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gaGFzQXR0cmlidXRlKGF1dG9mb2N1c0F0dHIpOworfQorCit2b2lkIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldEF1dG9mb2N1cyhib29sIGIpCit7CisgICAgc2V0QXR0
cmlidXRlKGF1dG9mb2N1c0F0dHIsIGIgPyAiYXV0b2ZvY3VzIiA6IDApOworfQorCiB2b2lkIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKIHsK
ICAgICBIVE1MRWxlbWVudDo6cmVjYWxjU3R5bGUoY2hhbmdlKTsKZGlmZiAtLWdpdCBXZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmgKaW5kZXggMDRjMmE4Ny4uMjM3ZWU1MSAxMDA2NDQKLS0tIFdlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmgKQEAgLTcwLDYgKzcwLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
aXNSZWFkT25seUNvbnRyb2woKSBjb25zdCB7IHJldHVybiBtX3JlYWRPbmx5OyB9CiAgICAgdm9p
ZCBzZXRSZWFkT25seShib29sKTsKIAorICAgIC8vIEF1dG9mb2N1cyBzdHVmZgorICAgIHZpcnR1
YWwgYm9vbCBhdXRvZm9jdXMoKSBjb25zdDsKKyAgICB2b2lkIHNldEF1dG9mb2N1cyhib29sKTsK
KwogICAgIHZpcnR1YWwgdm9pZCByZWNhbGNTdHlsZShTdHlsZUNoYW5nZSk7CiAKICAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IFdlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbCBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5p
ZGwKaW5kZXggZDZmYWM2OC4uYTcxOGUwNyAxMDA2NDQKLS0tIFdlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmlkbAorKysgV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCkBAIC0z
NSw2ICszNSw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtD
b252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIGFsdDsKICAgICAgICAgICAgICAgICAg
YXR0cmlidXRlIGJvb2xlYW4gICAgICAgICBjaGVja2VkOwogICAgICAgICAgICAgICAgICBhdHRy
aWJ1dGUgYm9vbGVhbiAgICAgICAgIGRpc2FibGVkOworICAgICAgICAgICAgICAgICBhdHRyaWJ1
dGUgYm9vbGVhbiAgICAgICAgIGF1dG9mb2N1czsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRl
IGxvbmcgICAgICAgICAgICBtYXhMZW5ndGg7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBb
Q29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBuYW1lOwogICAgICAgICAgICAgICAg
ICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIHJlYWRPbmx5OwpkaWZmIC0tZ2l0IFdlYkNvcmUv
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGwgV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmlkbAppbmRleCAzZmRlZWNkLi42NGNjMDkzIDEwMDY0NAotLS0gV2ViQ29yZS9odG1sL0hUTUxT
ZWxlY3RFbGVtZW50LmlkbAorKysgV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbApA
QCAtNDYsNiArNDYsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gb3B0aW9uczsKIAogICAgICAgICAgICAgICAgICBhdHRy
aWJ1dGUgYm9vbGVhbiAgICAgICAgIGRpc2FibGVkOworICAgICAgICAgICAgICAgICBhdHRyaWJ1
dGUgYm9vbGVhbiAgICAgICAgIGF1dG9mb2N1czsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRl
IGJvb2xlYW4gICAgICAgICBtdWx0aXBsZTsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtD
b252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nICAgICAgIG5hbWU7CiAgICAgICAgICAg
ICAgICAgIGF0dHJpYnV0ZSBsb25nICAgICAgICAgICAgc2l6ZTsKZGlmZiAtLWdpdCBXZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwgV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuaWRsCmluZGV4IGEzMmY4NGEuLjMyMTg2YjEgMTAwNjQ0Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5pZGwKKysrIFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmlkbApAQCAtMzAsNiArMzAsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgICAgICAgICAg
IGF0dHJpYnV0ZSAgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgICAgICAgICAg
ICBhY2Nlc3NLZXk7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgbG9uZyAgICAgICAgICAg
ICAgICAgY29sczsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAg
ICAgICBkaXNhYmxlZDsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAg
ICAgICAgICBhdXRvZm9jdXM7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnRO
dWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgICAgICAgICAgICBuYW1lOwogICAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGUgIGJvb2xlYW4gICAgICAgICAgICAgIHJlYWRPbmx5OwogICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGUgIGxvbmcgICAgICAgICAgICAgICAgIHJvd3M7CmRpZmYgLS1naXQg
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sLmNwcAppbmRleCA1YTFjNjhhLi5hZTA3YjRiIDEwMDY0NAotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKQEAgLTQxNSw2ICs0MTUsMTIgQEAgdm9pZCBSZW5k
ZXJUZXh0Q29udHJvbDo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgICAgICBtX3NlYXJjaFBvcHVw
LT51cGRhdGVGcm9tRWxlbWVudCgpOwogfQogCit2b2lkIFJlbmRlclRleHRDb250cm9sOjpzZXRV
c2VyRWRpdGVkKGJvb2wgaXNVc2VyRWRpdGVkKQoreworICAgIG1fdXNlckVkaXRlZCA9IGlzVXNl
ckVkaXRlZDsKKyAgICBkb2N1bWVudCgpLT5zZXRJZ25vcmVBdXRvZm9jdXMoaXNVc2VyRWRpdGVk
KTsKK30KKwogaW50IFJlbmRlclRleHRDb250cm9sOjpzZWxlY3Rpb25TdGFydCgpCiB7CiAgICAg
RnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsKZGlmZiAtLWdpdCBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sLmgKaW5kZXggNzVkMTJjOC4uNzA3MjczNiAxMDA2NDQKLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sLmgKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1Rl
eHRBcmVhKCkgY29uc3QgeyByZXR1cm4gbV9tdWx0aUxpbmU7IH0KICAgICAKICAgICBib29sIGlz
VXNlckVkaXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlckVkaXRlZDsgfQotICAgIHZvaWQgc2V0
VXNlckVkaXRlZChib29sIGlzVXNlckVkaXRlZCkgeyBtX3VzZXJFZGl0ZWQgPSBpc1VzZXJFZGl0
ZWQ7IH0KKyAgICB2b2lkIHNldFVzZXJFZGl0ZWQoYm9vbCBpc1VzZXJFZGl0ZWQpOwogCiAgICAg
aW50IHNlbGVjdGlvblN0YXJ0KCk7CiAgICAgaW50IHNlbGVjdGlvbkVuZCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21747</attachid>
            <date>2008-06-16 16:15:42 -0700</date>
            <delta_ts>2008-06-16 16:53:54 -0700</delta_ts>
            <desc>Initial implementation, fourth revision</desc>
            <filename>webkit_autofocus_patch-rev4.txt</filename>
            <type>text/plain</type>
            <size>24142</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxMGJiOTM0Li44ZWMxMWE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMDgtMDYt
MTYgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtLmRlc0BtYWMuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyB0ZXN0
IHN1aXRlIGNoZWNrcyB0aGUgYXV0b2ZvY3VzIGJlaGF2aW9yLiBUZXN0IGNhc2VzCisgICAgICAg
ICJhdXRvZm9jdXMtb3BlcmEqIiBoYXZlIGJlZW4gaW1wb3J0ZWQgZnJvbSB0aGUgT3BlcmEgdGVz
dCBzdWl0ZQorICAgICAgICBvcmlnaW5hbGx5IGxvY2F0ZWQgYXQ6CisgICAgICAgIGh0dHA6Ly90
Yy5sYWJzLm9wZXJhLmNvbS9odG1sL2Zvcm1zL2lucHV0L2NvbW1vbi1hdHRyaWJ1dGVzL2F1dG9m
b2N1cy8KKworICAgICAgICAqIGZhc3QvZm9ybXMvYXV0b2ZvY3VzLWF0dHJpYnV0ZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvYXV0b2ZvY3VzLWF0dHJpYnV0ZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDEtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0w
MDEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAy
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3Bl
cmEtMDAyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJh
LTAwMy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvYXV0b2ZvY3Vz
LW9wZXJhLTAwMy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1v
cGVyYS0wMDQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2F1dG9m
b2N1cy1vcGVyYS0wMDQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9hdXRvZm9j
dXMtb3BlcmEtMDA1LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9h
dXRvZm9jdXMtb3BlcmEtMDA1Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvYXV0
b2ZvY3VzLW9wZXJhLTAwNi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9y
bXMvYXV0b2ZvY3VzLW9wZXJhLTAwNi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1z
L2F1dG9mb2N1cy1vcGVyYS0wMDctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDcuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
b3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA4LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA4Lmh0bWw6IEFkZGVkLgorCiAyMDA4LTA2LTE1
ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
U2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3Vz
LWF0dHJpYnV0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1
cy1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjgyZDZmYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1
dG9mb2N1cy1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorVGhpcyB0ZXN0
IGNoZWNrcyBmb3IgdGhlIGF1dG9mb2N1cyBhdHRyaWJ1dGUuIEF1dG9mb2N1cyBpcyBzZXQgb24g
dGhlIGZpcnN0IGFuZCBvbiB0aGUgdGhpcmQgaW5wdXQuIFN1Y2Nlc3Mgb24gIllFUyBOTyBZRVMi
LgorCisgIAorWUVTCitOTworWUVTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2F1dG9mb2N1cy1hdHRyaWJ1dGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2Zv
Y3VzLWF0dHJpYnV0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJk
YWI2ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1
cy1hdHRyaWJ1dGUuaHRtbApAQCAtMCwwICsxLDI5IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxl
PmF1dG9mb2N1cyBhdHRyaWJ1dGUgdGVzdDwvdGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZh
U2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdl
KSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1M
ICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgp
IHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgIAorICAgICAgICB2YXIg
YSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpOworICAgICAgICBmb3Ig
KGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGEuaXRlbShpKS5hdXRvZm9j
dXMgPyBsb2coIllFUyIpIDogbG9nKCJOTyIpOworICAgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+VGhpcyB0ZXN0IGNoZWNrcyBmb3IgdGhlIGF1dG9m
b2N1cyBhdHRyaWJ1dGUuIEF1dG9mb2N1cyBpcyBzZXQgb24gdGhlIGZpcnN0CithbmQgb24gdGhl
IHRoaXJkIGlucHV0LiBTdWNjZXNzIG9uICJZRVMgTk8gWUVTIi48L3A+Cis8aW5wdXQgYXV0b2Zv
Y3VzIGlkPSJvbmUiLz4KKzxpbnB1dC8+Cis8aW5wdXQgYXV0b2ZvY3VzLz4KKzxocj4KKzxvbCBp
ZD0iY29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAxLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGYzNTEzMwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwzIEBACitUaGlzIGZvcm0gY29udHJvbCBzaG91bGQgaGF2ZSBhIGdyZWVuIGJh
Y2tncm91bmQgYW5kIGFjdGl2ZSBzdGF0ZTogCisKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZTg0OTdjNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMS5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzxodG1s
PgorPGhlYWQ+Cis8dGl0bGU+YmFzaWMgImF1dG9mb2N1cyIgdGVzdDwvdGl0bGU+Cis8c3R5bGU+
CisgaW5wdXQgeyBiYWNrZ3JvdW5kOnJlZCB9CisgaW5wdXQ6Zm9jdXMgeyBiYWNrZ3JvdW5kOmxp
bWUgfQorPC9zdHlsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQv
amF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2Ur
IjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgCisgICAgICAgIGlmIChkb2N1bWVudC5hY3Rp
dmVFbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdKQor
ICAgICAgICAgICAgbG9nKCJTVUNDRVNTIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxv
ZygiRkFJTFVSRSIpOworICAgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0
ZXN0KCkiPgorPHA+VGhpcyBmb3JtIGNvbnRyb2wgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3Jv
dW5kIGFuZCBhY3RpdmUgc3RhdGU6IDxpbnB1dCBhdXRvZm9jdXM+Cis8aHI+Cis8b2wgaWQ9ImNv
bnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAw
Mi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ0YTU0
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9w
ZXJhLTAwMi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUaGlzIGZvcm0gY29udHJvbCBz
aG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQ6IAorCitTVUNDRVNTCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDIuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjkzYzYwMGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDIuaHRtbApAQCAtMCwwICsxLDMyIEBACis8
aHRtbD4KKzxoZWFkPgorPHRpdGxlPmR5bmFtaWNhbGx5IGluc2VydGVkIGNvbnRyb2wgd2l0aCAi
YXV0b2ZvY3VzIiBzZXQ8L3RpdGxlPgorPHN0eWxlPgorIGlucHV0IHsgYmFja2dyb3VuZDpyZWQg
fQorIGlucHV0OmZvY3VzIHsgYmFja2dyb3VuZDpsaW1lIH0KKzwvc3R5bGU+Cis8c2NyaXB0IGxh
bmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9u
IGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xl
IikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAg
ICAgIAorICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSkKKyAgICAgICAgICAgIGxvZygiU1VDQ0VTUyIp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9Cis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPkZBSUwgKFRoZSBzY3Jp
cHQgZGlkIG5vdCBydW4uKTwvcD4KKzxzY3JpcHQ+CisgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoJ3AnKVswXS5pbm5lckhUTUwgPSAiVGhpcyBmb3JtIGNvbnRyb2wgc2hvdWxkIGhhdmUg
YSBncmVlbiBiYWNrZ3JvdW5kOiA8aW5wdXQgYXV0b2ZvY3VzPiI7Cis8L3NjcmlwdD4KKzxocj4K
KzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1
cy1vcGVyYS0wMDMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9j
dXMtb3BlcmEtMDAzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5kYzQyMmYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9h
dXRvZm9jdXMtb3BlcmEtMDAzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIgQEAKK1RoaXMgZm9y
bSBjb250cm9sIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZDogCitTVUNDRVNTCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDMuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiYTI1OWEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDMuaHRtbApAQCAtMCwwICsx
LDMxIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPiJhdXRvZm9jdXMiIHNjcm9sbGluZyB0ZXN0
PC90aXRsZT4KKzxzdHlsZT4KKyBwI3Rlc3R7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MTUwJSB9
CisgaW5wdXQgeyBiYWNrZ3JvdW5kOnJlZCB9CisgaW5wdXQ6Zm9jdXMgeyBiYWNrZ3JvdW5kOmxp
bWUgfQorPC9zdHlsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQv
amF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2Ur
IjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdICYmCisgICAgICAgICAg
ICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCAhPSAwKQorICAgICAgICAgICAgbG9nKCJTVUNDRVNT
Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvZygiRkFJTFVSRSIpOworICAgIH0KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHAgaWQ9InRlc3QiPlRo
aXMgZm9ybSBjb250cm9sIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZDogPGlucHV0IGF1
dG9mb2N1cz4KKzxocj4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi41NThjZDYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDMgQEAKK1RoZSBmb3JtIGNvbnRyb2wgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kOiAK
KworU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMt
b3BlcmEtMDA0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0w
MDQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTBmMzczCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA0
Lmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+dGVzdGluZyAiYXV0b2ZvY3VzIiBpbiBYSFRNTCBj
b21iaW5lZCB3aXRoIGR5bmFtaWMgY2hhbmdlczwvdGl0bGU+Cis8c3R5bGU+CisgaW5wdXQgeyBi
YWNrZ3JvdW5kOnJlZCB9CisgaW5wdXQ6Zm9jdXMgeyBiYWNrZ3JvdW5kOmxpbWUgfQorPC9zdHls
ZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworCisgICAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCdpbnB1dCcpWzBdOworICAgICAgICB2YXIgcCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCdwJylbMF07CisgICAgICAgIHZhciBpbnB1dCA9IHAucmVtb3ZlQ2hpbGQoaW5wdXQpOwor
ICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ2F1dG9mb2N1cycsJ2ZhbHNlJyk7CisgICAgICAg
IHAuYXBwZW5kQ2hpbGQoaW5wdXQpOworCisgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVt
ZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdKQorICAgICAg
ICAgICAgbG9nKCJTVUNDRVNTIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvZygiRkFJ
TFVSRSIpOworICAgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCki
PgorPHA+VGhlIGZvcm0gY29udHJvbCBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQ6IDxp
bnB1dC8+PC9wPgorPGhyLz4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRt
bD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA1LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi41NThjZDYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA1LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDMgQEAKK1RoZSBmb3JtIGNvbnRyb2wgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5k
OiAKKworU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9j
dXMtb3BlcmEtMDA1Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVy
YS0wMDUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjdhYzNlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEt
MDA1Lmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+dGVzdGluZyAiYXV0b2ZvY3VzIiBpbiBYSFRN
TCB3aXRoIGR5bmFtaWMgY2hhbmdlcyAocGFydCB0d28pPC90aXRsZT4KKzxzdHlsZT4KKyBpbnB1
dCB7IGJhY2tncm91bmQ6cmVkIH0KKyBpbnB1dDpmb2N1cyB7IGJhY2tncm91bmQ6bGltZSB9Cis8
L3N0eWxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4i
OworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIHZhciBpbnB1dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdOworICAgICAgICB2YXIgcCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdwJylbMF07CisgICAgICAgIHZhciBpbnB1
dCA9IHAucmVtb3ZlQ2hpbGQoaW5wdXQpOworICAgICAgICBpbnB1dC5hdXRvZm9jdXMgPSB0cnVl
OworICAgICAgICBwLmFwcGVuZENoaWxkKGlucHV0KTsKKworICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworCisgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdKQorICAgICAgICAgICAgbG9nKCJT
VUNDRVNTIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvZygiRkFJTFVSRSIpOworICAg
IH0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+VGhlIGZv
cm0gY29udHJvbCBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQ6IDxpbnB1dC8+PC9wPgor
PGhyLz4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1
dG9mb2N1cy1vcGVyYS0wMDYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9h
dXRvZm9jdXMtb3BlcmEtMDA2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4wZTA0YjJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitB
bGwgZm9ybSBjb250cm9scyBiZWxvdyBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQ6CisK
KworCisKKworCisKKworCisKKworCisKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwNi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOTU1ZGVjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvYXV0b2ZvY3VzLW9wZXJhLTAwNi5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzxodG1sPgorPGhl
YWQ+Cis8dGl0bGU+dGVzdCB3aXRoIG11bHRpcGxlIGNvbnRyb2xzIGhhdmluZyAiYXV0b2ZvY3Vz
IiBzZXQ8L3RpdGxlPgorPHN0eWxlPgorIGlucHV0LCBpbnB1dCN0ZXN0OmZvY3VzIHsgYmFja2dy
b3VuZDpsaW1lIH0KKyBpbnB1dDpmb2N1cywgaW5wdXQjdGVzdCB7IGJhY2tncm91bmQ6cmVkIH0K
Kzwvc3R5bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xp
PiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKworICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpKQorICAgICAgICAgICAgbG9nKCJTVUNDRVNTIik7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvZygiRkFJTFVSRSIpOworICAgIH0KKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+QWxsIGZvcm0gY29udHJv
bHMgYmVsb3cgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kOjwvcD4KKzxwPjxpbnB1dCBh
dXRvZm9jdXM+Cis8cD48aW5wdXQgYXV0b2ZvY3VzPgorPHA+PGlucHV0IGF1dG9mb2N1cz4KKzxw
PjxpbnB1dD4KKzxwPjxpbnB1dCBhdXRvZm9jdXMgaWQ9InRlc3QiPgorPHA+PGlucHV0PgorPGhy
Lz4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9m
b2N1cy1vcGVyYS0wMDctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRv
Zm9jdXMtb3BlcmEtMDA3LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi40MjhjMmRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9hdXRvZm9jdXMtb3BlcmEtMDA3LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1RoZSBm
b3JtIGNvbnRyb2wgYmVsb3cgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kOgorCisKKwor
U1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3Bl
cmEtMDA3Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDcu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjBjOWFlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA3Lmh0
bWwKQEAgLTAsMCArMSwzNiBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT4iYXV0b2ZvY3VzIiBh
bmQgdGhlIGJsdXIoKSBtZXRob2Q8L3RpdGxlPgorPHN0eWxlPgorIGlucHV0IHsgYmFja2dyb3Vu
ZDpsaW1lIH0KKyBpbnB1dDpmb2N1cyB7IGJhY2tncm91bmQ6cmVkIH0KKzwvc3R5bGU+Cis8c2Ny
aXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIHZh
ciBnb3RCbHVyID0gZmFsc2U7CisKKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIr
bWVzc2FnZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN3aXRjaEJsdXIoKSB7Cisg
ICAgICAgIGdvdEJsdXIgPSB0cnVlOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiB0ZXN0KCkg
eworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIGlmIChnb3RCbHVy
KQorICAgICAgICAgICAgbG9nKCJTVUNDRVNTIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGxvZygiRkFJTFVSRSIpOworICAgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJ0ZXN0KCkiPgorPHA+VGhlIGZvcm0gY29udHJvbCBiZWxvdyBzaG91bGQgaGF2ZSBhIGdyZWVu
IGJhY2tncm91bmQ6Cis8cD48aW5wdXQgYXV0b2ZvY3VzIG9uZm9jdXM9InRoaXMuYmx1cigpIiBv
bmJsdXI9InN3aXRjaEJsdXIoKSI+Cis8aHIvPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9i
b2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwOC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDgtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2NzlmZWYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDgtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsOSBAQAorVGhlIGZvcm0gY29udHJvbHMgYmVsb3cgc2hvdWxkIGhhdmUg
YSBncmVlbiBiYWNrZ3JvdW5kOgorCisKKworCisKKworCitTVUNDRVNTCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDguaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwOC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmQ0Mjk4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDguaHRtbApAQCAtMCwwICsxLDM0IEBACis8
aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzx0aXRs
ZT4iYXV0b2ZvY3VzIiBpbiBYSFRNTCBhbmQgdGhlIGZvY3VzKCkgbWV0aG9kPC90aXRsZT4KKzxz
dHlsZT4KKyBpbnB1dCwgaW5wdXQjdGVzdDpmb2N1cyB7IGJhY2tncm91bmQ6bGltZSB9CisgaW5w
dXQjdGVzdCwgaW5wdXQ6Zm9jdXMgeyBiYWNrZ3JvdW5kOnJlZCB9Cis8L3N0eWxlPgorPHNjcmlw
dCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5j
dGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29u
c29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCdpbnB1dCcpWzBdLmZvY3VzKCk7CisgICAgICAgIAorICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworCisgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdKQorICAgICAgICAgICAgbG9nKCJTVUND
RVNTIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvZygiRkFJTFVSRSIpOworICAgIH0K
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+VGhlIGZvcm0g
Y29udHJvbHMgYmVsb3cgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kOjwvcD4KKzxwPjxp
bnB1dCBpZD0idGVzdCIvPjwvcD4KKzxwPjxpbnB1dCBhdXRvZm9jdXM9ImF1dG9mb2N1cyIvPjwv
cD4KKzxwPjxpbnB1dCBhdXRvZm9jdXM9ImF1dG9mb2N1cyIvPjwvcD4KKzxoci8+Cis8b2wgaWQ9
ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0No
YW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE5YjIyMDguLmFjODZhZmYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDMgQEAKKzIwMDgtMDYtMTYgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtLmRlc0BtYWMu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAJQWRk
ZWQgc3VwcG9ydCBmb3IgYXV0b2ZvY3VzIGNvbnRyb2xzLgorCisgICAgCVdoZW4gYXV0aG9ycyBz
cGVjaWZ5IHRoZSAiYXV0b2ZvY3VzIiBhdHRyaWJ1dGUgb24KKyAgICAJZm9ybSBjb250cm9scyB0
aGVzZSBhY3F1aXJlIGZvY3VzIGF1dG9tYXRpY2FsbHkgYXMKKyAgICAJdGhlIGRvY3VtZW50IGlz
IHJlbmRlcmVkLgorICAgIAorICAgIAlmYXN0L2RvbS9kb21MaXN0RW51bWVyYXRpb24gVEMgc2hv
dWxkIGJlIHVwZGF0ZWQKKyAgICAJdG8gcmVmbGVjdCB0aGlzIG5ldyBhdHRyaWJ1dGUuCisKKyAg
ICAgICAgVGVzdHM6IGZhc3QvZm9ybXMvYXV0b2ZvY3VzLWF0dHJpYnV0ZS5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDEuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAyLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zv
cm1zL2F1dG9mb2N1cy1vcGVyYS0wMDQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy9h
dXRvZm9jdXMtb3BlcmEtMDA1Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvYXV0b2Zv
Y3VzLW9wZXJhLTAwNi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1v
cGVyYS0wMDcuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEt
MDA4Lmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluOgorICAgICAgICAqIGh0bWwvSFRNTEJ1dHRv
bkVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjphdHRhY2gpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXV0b2ZvY3VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldEF1dG9mb2N1cyk6CisgICAg
ICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbDoK
KyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0
Q29udHJvbDo6c2V0VXNlckVkaXRlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sLmg6CisKIDIwMDgtMDYtMTYgIEpvbmF0aG9uIEpvbmdzbWEgIDxqb25hdGhvbi5qb25n
c21hQGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWlu
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IDhmMDFjOTkuLmI2NzkyM2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTMwMiw2ICsz
MDIsOCBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBib29sIGlzWEhUTUwpCiAg
ICAgbV9kb2N1bWVudC5yZXNldFNraXBwaW5nUmVmKHRoaXMpOwogCiAgICAgbV9wcmludGluZyA9
IGZhbHNlOworICAgIAorICAgIG1faWdub3JlQXV0b2ZvY3VzID0gZmFsc2U7CiAKICAgICBtX2Zy
YW1lID0gZnJhbWU7CiAgICAgbV9yZW5kZXJBcmVuYSA9IDA7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBhMTM0OWExLi45
YzgxY2VjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKQEAgLTQ4Miw2ICs0ODIsMTAgQEAgcHVibGljOgogICAgIGJvb2wgc2V0
Rm9jdXNlZE5vZGUoUGFzc1JlZlB0cjxOb2RlPik7CiAgICAgTm9kZSogZm9jdXNlZE5vZGUoKSBj
b25zdCB7IHJldHVybiBtX2ZvY3VzZWROb2RlLmdldCgpOyB9CiAKKyAgICAvLyBBdXRvZm9jdXMg
c3R1ZmYKKyAgICBib29sIGlnbm9yZUF1dG9mb2N1cygpIGNvbnN0IHsgcmV0dXJuIG1faWdub3Jl
QXV0b2ZvY3VzOyB9OworICAgIHZvaWQgc2V0SWdub3JlQXV0b2ZvY3VzKGJvb2wgc2hvdWxkSWdu
b3JlID0gdHJ1ZSkgeyBtX2lnbm9yZUF1dG9mb2N1cyA9IHNob3VsZElnbm9yZTsgfTsKKwogICAg
IHZvaWQgc2V0SG92ZXJOb2RlKFBhc3NSZWZQdHI8Tm9kZT4pOwogICAgIE5vZGUqIGhvdmVyTm9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faG92ZXJOb2RlLmdldCgpOyB9CiAKQEAgLTgwNSw2ICs4MDks
OCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBtX21hcHBlZEVsZW1lbnRT
aGVldDsKIAogICAgIGJvb2wgbV9wcmludGluZzsKKyAgICAKKyAgICBib29sIG1faWdub3JlQXV0
b2ZvY3VzOwogCiAgICAgUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1
dGVOYW1lcy5pbgppbmRleCA2ZDdkYjMwLi4yNTA3NDAxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRl
TmFtZXMuaW4KQEAgLTE5LDYgKzE5LDcgQEAKIDxhcmlhLXZhbHVlbWluLz4KIDxhcmlhLXZhbHVl
bm93Lz4KIDxhdXRvY29tcGxldGUvPgorPGF1dG9mb2N1cy8+CiA8YXV0b3BsYXkvPgogPGF1dG9z
YXZlLz4KIDxheGlzLz4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVu
dC5pZGwgYi9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaWRsCmluZGV4IGQ2ZjhiODcu
LmFhZmQzYTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5pZGwK
KysrIGIvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmlkbApAQCAtMjgsNiArMjgsNyBA
QCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSAgSFRNTEZvcm1FbGVt
ZW50ICAgICAgZm9ybTsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBbQ29udmVydE51bGxU
b051bGxTdHJpbmddIERPTVN0cmluZyAgICAgICAgICAgIGFjY2Vzc0tleTsKICAgICAgICAgICAg
ICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICBkaXNhYmxlZDsKKyAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICBhdXRvZm9jdXM7CiAgICAg
ICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJp
bmcgICAgICAgICAgICBuYW1lOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgIERPTVN0cmlu
ZyAgICAgICAgICAgIHR5cGU7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnRO
dWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgICAgICAgICAgICB2YWx1ZTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCBjMjlkNmYxLi5lYzU4MzYzIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC05Niw2ICs5NiwxNCBAQCB2b2lk
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmF0dGFjaCgpCiAgICAgLy8gb24gdGhlIHJlbmRlcmVy
LgogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9tRWxl
bWVudCgpOworICAgICAgICAKKyAgICAvLyBGb2N1cyB0aGUgZWxlbWVudCBpZiBpdCBzaG91bGQg
aG9ub3VyIGl0cyBhdXRvZm9jdXMgYXR0cmlidXRlLgorICAgIC8vIFdlIGhhdmUgdG8gZGV0ZXJt
aW5lIGlmIHRoZSBlbGVtZW50IGlzIGEgVGV4dEFyZWEvSW5wdXQvQnV0dG9uL1NlbGVjdCwKKyAg
ICAvLyBpZiBpbnB1dCB0eXBlIGhpZGRlbiBpZ25vcmUgYXV0b2ZvY3VzLiBTbyBpZiBkaXNhYmxl
ZCBvciByZWFkb25seS4KKyAgICBpZiAoYXV0b2ZvY3VzKCkgJiYgcmVuZGVyZXIoKSAmJiAhZG9j
dW1lbnQoKS0+aWdub3JlQXV0b2ZvY3VzKCkgJiYgIWlzUmVhZE9ubHlDb250cm9sKCkgJiYKKyAg
ICAgICAgKChoYXNUYWdOYW1lKGlucHV0VGFnKSAmJiAhaXNJbnB1dFR5cGVIaWRkZW4oKSkgfHwg
aGFzVGFnTmFtZShzZWxlY3RUYWcpIHx8CisgICAgICAgIGhhc1RhZ05hbWUoYnV0dG9uVGFnKSB8
fCBoYXNUYWdOYW1lKHRleHRhcmVhVGFnKSkpCisgICAgICAgICBmb2N1cygpOwogfQogCiB2b2lk
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUoYm9vbCBkZWVwKQpAQCAt
MTcxLDYgKzE3OSwxNiBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFJlYWRPbmx5
KGJvb2wgYikKICAgICBzZXRBdHRyaWJ1dGUocmVhZG9ubHlBdHRyLCBiID8gIiIgOiAwKTsKIH0K
IAorYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjphdXRvZm9jdXMoKSBjb25zdAoreworICAg
IHJldHVybiBoYXNBdHRyaWJ1dGUoYXV0b2ZvY3VzQXR0cik7Cit9CisKK3ZvaWQgSFRNTEZvcm1D
b250cm9sRWxlbWVudDo6c2V0QXV0b2ZvY3VzKGJvb2wgYikKK3sKKyAgICBzZXRBdHRyaWJ1dGUo
YXV0b2ZvY3VzQXR0ciwgYiA/ICJhdXRvZm9jdXMiIDogMCk7Cit9CisKIHZvaWQgSFRNTEZvcm1D
b250cm9sRWxlbWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQogewogICAgIEhU
TUxFbGVtZW50OjpyZWNhbGNTdHlsZShjaGFuZ2UpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmgKaW5kZXggMDRjMmE4Ny4uMjM3ZWU1MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5oCkBAIC03MCw2ICs3MCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGlzUmVhZE9ubHlDb250cm9sKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkT25seTsgfQogICAgIHZv
aWQgc2V0UmVhZE9ubHkoYm9vbCk7CiAKKyAgICAvLyBBdXRvZm9jdXMgc3R1ZmYKKyAgICB2aXJ0
dWFsIGJvb2wgYXV0b2ZvY3VzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRBdXRvZm9jdXMoYm9vbCk7
CisKICAgICB2aXJ0dWFsIHZvaWQgcmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpOwogCiAgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmlkbAppbmRleCBkNmZhYzY4Li5hNzE4ZTA3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5pZGwKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
aWRsCkBAIC0zNSw2ICszNSw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgICAgICAgICAgYXR0
cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIGFsdDsKICAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gICAgICAgICBjaGVja2VkOwogICAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIGRpc2FibGVkOworICAgICAgICAgICAgICAg
ICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIGF1dG9mb2N1czsKICAgICAgICAgICAgICAgICAg
YXR0cmlidXRlIGxvbmcgICAgICAgICAgICBtYXhMZW5ndGg7CiAgICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBuYW1lOwogICAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIHJlYWRPbmx5OwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbCBiL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5pZGwKaW5kZXggM2ZkZWVjZC4uNjRjYzA5MyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuaWRsCkBAIC00Niw2ICs0Niw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIEhUTUxPcHRpb25zQ29sbGVjdGlvbiBvcHRpb25zOwogCiAgICAg
ICAgICAgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgZGlzYWJsZWQ7CisgICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgYXV0b2ZvY3VzOwogICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIG11bHRpcGxlOwogICAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgICAgICAg
bmFtZTsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGxvbmcgICAgICAgICAgICBzaXplOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsIGIvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCmluZGV4IGEzMmY4NGEuLjMyMTg2YjEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwKQEAgLTMwLDYgKzMwLDcgQEAgbW9kdWxl
IGh0bWwgewogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIFtDb252ZXJ0TnVsbFRvTnVsbFN0
cmluZ10gRE9NU3RyaW5nICAgICAgICAgICAgYWNjZXNzS2V5OwogICAgICAgICAgICAgICAgICBh
dHRyaWJ1dGUgIGxvbmcgICAgICAgICAgICAgICAgIGNvbHM7CiAgICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZSAgYm9vbGVhbiAgICAgICAgICAgICAgZGlzYWJsZWQ7CisgICAgICAgICAgICAgICAg
IGF0dHJpYnV0ZSAgYm9vbGVhbiAgICAgICAgICAgICAgYXV0b2ZvY3VzOwogICAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGUgIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nICAgICAg
ICAgICAgbmFtZTsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAg
ICAgICByZWFkT25seTsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBsb25nICAgICAgICAg
ICAgICAgICByb3dzOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2wuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCmluZGV4
IDVhMWM2OGEuLmFlMDdiNGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5j
cHAKQEAgLTQxNSw2ICs0MTUsMTIgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6dXBkYXRlRnJv
bUVsZW1lbnQoKQogICAgICAgICBtX3NlYXJjaFBvcHVwLT51cGRhdGVGcm9tRWxlbWVudCgpOwog
fQogCit2b2lkIFJlbmRlclRleHRDb250cm9sOjpzZXRVc2VyRWRpdGVkKGJvb2wgaXNVc2VyRWRp
dGVkKQoreworICAgIG1fdXNlckVkaXRlZCA9IGlzVXNlckVkaXRlZDsKKyAgICBkb2N1bWVudCgp
LT5zZXRJZ25vcmVBdXRvZm9jdXMoaXNVc2VyRWRpdGVkKTsKK30KKwogaW50IFJlbmRlclRleHRD
b250cm9sOjpzZWxlY3Rpb25TdGFydCgpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQo
KS0+ZnJhbWUoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCmluZGV4IDc1ZDEy
YzguLjcwNzI3MzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaApAQCAtNjIs
NyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzVGV4dEFyZWEoKSBjb25zdCB7
IHJldHVybiBtX211bHRpTGluZTsgfQogICAgIAogICAgIGJvb2wgaXNVc2VyRWRpdGVkKCkgY29u
c3QgeyByZXR1cm4gbV91c2VyRWRpdGVkOyB9Ci0gICAgdm9pZCBzZXRVc2VyRWRpdGVkKGJvb2wg
aXNVc2VyRWRpdGVkKSB7IG1fdXNlckVkaXRlZCA9IGlzVXNlckVkaXRlZDsgfQorICAgIHZvaWQg
c2V0VXNlckVkaXRlZChib29sIGlzVXNlckVkaXRlZCk7CiAKICAgICBpbnQgc2VsZWN0aW9uU3Rh
cnQoKTsKICAgICBpbnQgc2VsZWN0aW9uRW5kKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21748</attachid>
            <date>2008-06-16 16:53:54 -0700</date>
            <delta_ts>2008-06-16 17:08:27 -0700</delta_ts>
            <desc>Initial implementation, fourth revision (domListEnumeration patch merged)</desc>
            <filename>webkit_autofocus_patch-rev4b.txt</filename>
            <type>text/plain</type>
            <size>25872</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxMGJiOTM0Li4yMGZhNDM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMDgtMDYt
MTYgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtLmRlc0BtYWMuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgdGVzdCBzdWl0ZSBj
aGVja3MgdGhlIGF1dG9mb2N1cyBiZWhhdmlvci4gVGVzdCBjYXNlcworICAgICAgICAiYXV0b2Zv
Y3VzLW9wZXJhKiIgaGF2ZSBiZWVuIGltcG9ydGVkIGZyb20gdGhlIE9wZXJhIHRlc3Qgc3VpdGUK
KyAgICAgICAgb3JpZ2luYWxseSBsb2NhdGVkIGF0OgorICAgICAgICBodHRwOi8vdGMubGFicy5v
cGVyYS5jb20vaHRtbC9mb3Jtcy9pbnB1dC9jb21tb24tYXR0cmlidXRlcy9hdXRvZm9jdXMvCisg
ICAgICAgIAorICAgICAgICBmYXN0L2RvbS9kb21MaXN0RW51bWVyYXRpb24gbW9kaWZpZWQgdG8g
cmVmbGVjdCB0aGlzIG5ldyBhdHRyaWJ1dGUuCisKKyAgICAgICAgKiBmYXN0L2RvbS9kb21MaXN0
RW51bWVyYXRpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL3Jlc291cmNlcy9k
b21MaXN0RW51bWVyYXRpb24uanM6CisgICAgICAgICogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtYXR0
cmlidXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9hdXRvZm9j
dXMtYXR0cmlidXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvYXV0b2ZvY3Vz
LW9wZXJhLTAwMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvYXV0
b2ZvY3VzLW9wZXJhLTAwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2F1dG9m
b2N1cy1vcGVyYS0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1z
L2F1dG9mb2N1cy1vcGVyYS0wMDIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9h
dXRvZm9jdXMtb3BlcmEtMDAzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
b3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9y
bXMvYXV0b2ZvY3VzLW9wZXJhLTAwNC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwNC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDUuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA2Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwNy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwNy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDgtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDguaHRtbDogQWRkZWQu
CisKIDIwMDgtMDYtMTUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vZG9tTGlzdEVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2RvbUxpc3RFbnVtZXJhdGlvbi1leHBlY3RlZC50eHQKaW5kZXggOTczZmZiZS4uNDBmMThmYyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9tTGlzdEVudW1lcmF0aW9uLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9kb21MaXN0RW51bWVyYXRpb24tZXhw
ZWN0ZWQudHh0CkBAIC00MSw3ICs0MSw3IEBAIFBBU1MgcmVzdWx0QXJyYXlbMl0uaSBpcyAnMicK
IFBBU1MgcmVzdWx0QXJyYXlbMl0uaXRlbSBpcyBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgnc2VsZWN0JylbMl0KIAogW29iamVjdCBIVE1MU2VsZWN0RWxlbWVudF0KLVBBU1MgcmVzdWx0
QXJyYXkubGVuZ3RoIGlzIDEyNAorUEFTUyByZXN1bHRBcnJheS5sZW5ndGggaXMgMTI1CiBQQVNT
IHJlc3VsdEFycmF5WzBdLmkgaXMgJzAnCiBQQVNTIHJlc3VsdEFycmF5WzBdLml0ZW0gaXMgZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ29wdGlvbicpWzBdCiBQQVNTIHJlc3VsdEFycmF5
WzFdLmkgaXMgJzEnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMv
ZG9tTGlzdEVudW1lcmF0aW9uLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2Rv
bUxpc3RFbnVtZXJhdGlvbi5qcwppbmRleCA1MWVjYTRhLi5lYzZlYmYxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvZG9tTGlzdEVudW1lcmF0aW9uLmpzCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9kb21MaXN0RW51bWVyYXRpb24uanMKQEAg
LTE0MSw3ICsxNDEsNyBAQCBzaG91bGRCZSgicmVzdWx0QXJyYXlbMl0uaXRlbSIsICJkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0JylbMl0iKTsKIC8vIEhUTUxTZWxlY3RFbGVt
ZW50CiB2YXIgaHRtbFNlbGVjdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgnc2VsZWN0JylbMF07CiByZXN1bHRBcnJheSA9IGl0ZXJhdGVMaXN0KGh0bWxTZWxlY3RFbGVt
ZW50KTsKLXNob3VsZEJlKCJyZXN1bHRBcnJheS5sZW5ndGgiLCAiMTI0Iik7CitzaG91bGRCZSgi
cmVzdWx0QXJyYXkubGVuZ3RoIiwgIjEyNSIpOwogc2hvdWxkQmUoInJlc3VsdEFycmF5WzBdLmki
LCAiJzAnIik7CiBzaG91bGRCZSgicmVzdWx0QXJyYXlbMF0uaXRlbSIsICJkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgnb3B0aW9uJylbMF0iKTsKIHNob3VsZEJlKCJyZXN1bHRBcnJheVsx
XS5pIiwgIicxJyIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9j
dXMtYXR0cmlidXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2Zv
Y3VzLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uODJkNmZjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
YXV0b2ZvY3VzLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitUaGlzIHRl
c3QgY2hlY2tzIGZvciB0aGUgYXV0b2ZvY3VzIGF0dHJpYnV0ZS4gQXV0b2ZvY3VzIGlzIHNldCBv
biB0aGUgZmlyc3QgYW5kIG9uIHRoZSB0aGlyZCBpbnB1dC4gU3VjY2VzcyBvbiAiWUVTIE5PIFlF
UyIuCisKKyAgCitZRVMKK05PCitZRVMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvYXV0b2ZvY3VzLWF0dHJpYnV0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRv
Zm9jdXMtYXR0cmlidXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MmRhYjZmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2Zv
Y3VzLWF0dHJpYnV0ZS5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0
bGU+YXV0b2ZvY3VzIGF0dHJpYnV0ZSB0ZXN0PC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9Ikph
dmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3Nh
Z2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhU
TUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0
KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgCisgICAgICAgIHZh
ciBhID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0Iik7CisgICAgICAgIGZv
ciAoaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgYS5pdGVtKGkpLmF1dG9m
b2N1cyA/IGxvZygiWUVTIikgOiBsb2coIk5PIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UaGlzIHRlc3QgY2hlY2tzIGZvciB0aGUgYXV0
b2ZvY3VzIGF0dHJpYnV0ZS4gQXV0b2ZvY3VzIGlzIHNldCBvbiB0aGUgZmlyc3QKK2FuZCBvbiB0
aGUgdGhpcmQgaW5wdXQuIFN1Y2Nlc3Mgb24gIllFUyBOTyBZRVMiLjwvcD4KKzxpbnB1dCBhdXRv
Zm9jdXMgaWQ9Im9uZSIvPgorPGlucHV0Lz4KKzxpbnB1dCBhdXRvZm9jdXMvPgorPGhyPgorPG9s
IGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDEtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAxLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjM1MTMzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAxLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDMgQEAKK1RoaXMgZm9ybSBjb250cm9sIHNob3VsZCBoYXZlIGEgZ3JlZW4g
YmFja2dyb3VuZCBhbmQgYWN0aXZlIHN0YXRlOiAKKworU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAxLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5lODQ5N2M3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAxLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPGh0
bWw+Cis8aGVhZD4KKzx0aXRsZT5iYXNpYyAiYXV0b2ZvY3VzIiB0ZXN0PC90aXRsZT4KKzxzdHls
ZT4KKyBpbnB1dCB7IGJhY2tncm91bmQ6cmVkIH0KKyBpbnB1dDpmb2N1cyB7IGJhY2tncm91bmQ6
bGltZSB9Cis8L3N0eWxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2Fn
ZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKGRvY3VtZW50LmFj
dGl2ZUVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF0p
CisgICAgICAgICAgICBsb2coIlNVQ0NFU1MiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
bG9nKCJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InRlc3QoKSI+Cis8cD5UaGlzIGZvcm0gY29udHJvbCBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tn
cm91bmQgYW5kIGFjdGl2ZSBzdGF0ZTogPGlucHV0IGF1dG9mb2N1cz4KKzxocj4KKzxvbCBpZD0i
Y29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0w
MDItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEt
MDAyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDRh
NTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMt
b3BlcmEtMDAyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1RoaXMgZm9ybSBjb250cm9s
IHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZDogCisKK1NVQ0NFU1MKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMi5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAyLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uOTNjNjAwZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMi5odG1sCkBAIC0wLDAgKzEsMzIgQEAK
KzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+ZHluYW1pY2FsbHkgaW5zZXJ0ZWQgY29udHJvbCB3aXRo
ICJhdXRvZm9jdXMiIHNldDwvdGl0bGU+Cis8c3R5bGU+CisgaW5wdXQgeyBiYWNrZ3JvdW5kOnJl
ZCB9CisgaW5wdXQ6Zm9jdXMgeyBiYWNrZ3JvdW5kOmxpbWUgfQorPC9zdHlsZT4KKzxzY3JpcHQg
bGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNv
bGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICAgICAgCisgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdKQorICAgICAgICAgICAgbG9nKCJTVUNDRVNT
Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvZygiRkFJTFVSRSIpOworICAgIH0KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+RkFJTCAoVGhlIHNj
cmlwdCBkaWQgbm90IHJ1bi4pPC9wPgorPHNjcmlwdD4KKyBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgncCcpWzBdLmlubmVySFRNTCA9ICJUaGlzIGZvcm0gY29udHJvbCBzaG91bGQgaGF2
ZSBhIGdyZWVuIGJhY2tncm91bmQ6IDxpbnB1dCBhdXRvZm9jdXM+IjsKKzwvc2NyaXB0PgorPGhy
PgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2Zv
Y3VzLW9wZXJhLTAwMy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9m
b2N1cy1vcGVyYS0wMDMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmRjNDIyZjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2F1dG9mb2N1cy1vcGVyYS0wMDMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorVGhpcyBm
b3JtIGNvbnRyb2wgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kOiAKK1NVQ0NFU1MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMy5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JhMjU5YQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMy5odG1sCkBAIC0wLDAg
KzEsMzEgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+ImF1dG9mb2N1cyIgc2Nyb2xsaW5nIHRl
c3Q8L3RpdGxlPgorPHN0eWxlPgorIHAjdGVzdHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDoxNTAl
IH0KKyBpbnB1dCB7IGJhY2tncm91bmQ6cmVkIH0KKyBpbnB1dDpmb2N1cyB7IGJhY2tncm91bmQ6
bGltZSB9Cis8L3N0eWxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2Fn
ZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQg
PT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF0gJiYKKyAgICAgICAg
ICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wICE9IDApCisgICAgICAgICAgICBsb2coIlNVQ0NF
U1MiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9nKCJGQUlMVVJFIik7CisgICAgfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cCBpZD0idGVzdCI+
VGhpcyBmb3JtIGNvbnRyb2wgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kOiA8aW5wdXQg
YXV0b2ZvY3VzPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1OGNkNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMyBAQAorVGhlIGZvcm0gY29udHJvbCBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQ6
IAorCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1
cy1vcGVyYS0wMDQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJh
LTAwNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlMGYzNzMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0w
MDQuaHRtbApAQCAtMCwwICsxLDM1IEBACis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94aHRtbCI+Cis8aGVhZD4KKzx0aXRsZT50ZXN0aW5nICJhdXRvZm9jdXMiIGluIFhIVE1M
IGNvbWJpbmVkIHdpdGggZHluYW1pYyBjaGFuZ2VzPC90aXRsZT4KKzxzdHlsZT4KKyBpbnB1dCB7
IGJhY2tncm91bmQ6cmVkIH0KKyBpbnB1dDpmb2N1cyB7IGJhY2tncm91bmQ6bGltZSB9Cis8L3N0
eWxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisKKyAgICAgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ2lucHV0JylbMF07CisgICAgICAgIHZhciBwID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoJ3AnKVswXTsKKyAgICAgICAgdmFyIGlucHV0ID0gcC5yZW1vdmVDaGlsZChpbnB1dCk7
CisgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgnYXV0b2ZvY3VzJywnZmFsc2UnKTsKKyAgICAg
ICAgcC5hcHBlbmRDaGlsZChpbnB1dCk7CisKKyAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVs
ZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF0pCisgICAg
ICAgICAgICBsb2coIlNVQ0NFU1MiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9nKCJG
QUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3Qo
KSI+Cis8cD5UaGUgZm9ybSBjb250cm9sIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZDog
PGlucHV0Lz48L3A+Cis8aHIvPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwNS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1OGNkNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMyBAQAorVGhlIGZvcm0gY29udHJvbCBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91
bmQ6IAorCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9m
b2N1cy1vcGVyYS0wMDUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9w
ZXJhLTAwNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2N2FjM2UK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVy
YS0wMDUuaHRtbApAQCAtMCwwICsxLDM1IEBACis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzx0aXRsZT50ZXN0aW5nICJhdXRvZm9jdXMiIGluIFhI
VE1MIHdpdGggZHluYW1pYyBjaGFuZ2VzIChwYXJ0IHR3byk8L3RpdGxlPgorPHN0eWxlPgorIGlu
cHV0IHsgYmFja2dyb3VuZDpyZWQgfQorIGlucHV0OmZvY3VzIHsgYmFja2dyb3VuZDpsaW1lIH0K
Kzwvc3R5bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xp
PiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgdmFyIGlucHV0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF07CisgICAgICAgIHZhciBw
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3AnKVswXTsKKyAgICAgICAgdmFyIGlu
cHV0ID0gcC5yZW1vdmVDaGlsZChpbnB1dCk7CisgICAgICAgIGlucHV0LmF1dG9mb2N1cyA9IHRy
dWU7CisgICAgICAgIHAuYXBwZW5kQ2hpbGQoaW5wdXQpOworCisgICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisKKyAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF0pCisgICAgICAgICAgICBsb2co
IlNVQ0NFU1MiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9nKCJGQUlMVVJFIik7Cisg
ICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UaGUg
Zm9ybSBjb250cm9sIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZDogPGlucHV0Lz48L3A+
Cis8aHIvPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
YXV0b2ZvY3VzLW9wZXJhLTAwNi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2F1dG9mb2N1cy1vcGVyYS0wMDYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjBlMDRiMmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAK
K0FsbCBmb3JtIGNvbnRyb2xzIGJlbG93IHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZDoK
KworCisKKworCisKKworCisKKworCisKKworU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA2Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi45NTVkZWM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA2Lmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPGh0bWw+Cis8
aGVhZD4KKzx0aXRsZT50ZXN0IHdpdGggbXVsdGlwbGUgY29udHJvbHMgaGF2aW5nICJhdXRvZm9j
dXMiIHNldDwvdGl0bGU+Cis8c3R5bGU+CisgaW5wdXQsIGlucHV0I3Rlc3Q6Zm9jdXMgeyBiYWNr
Z3JvdW5kOmxpbWUgfQorIGlucHV0OmZvY3VzLCBpbnB1dCN0ZXN0IHsgYmFja2dyb3VuZDpyZWQg
fQorPC9zdHlsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2
YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwv
bGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworCisgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0IikpCisgICAgICAgICAgICBsb2coIlNVQ0NFU1Mi
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9nKCJGQUlMVVJFIik7CisgICAgfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5BbGwgZm9ybSBjb250
cm9scyBiZWxvdyBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQ6PC9wPgorPHA+PGlucHV0
IGF1dG9mb2N1cz4KKzxwPjxpbnB1dCBhdXRvZm9jdXM+Cis8cD48aW5wdXQgYXV0b2ZvY3VzPgor
PHA+PGlucHV0PgorPHA+PGlucHV0IGF1dG9mb2N1cyBpZD0idGVzdCI+Cis8cD48aW5wdXQ+Cis8
aHIvPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0
b2ZvY3VzLW9wZXJhLTAwNy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1
dG9mb2N1cy1vcGVyYS0wMDctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjQyOGMyZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2F1dG9mb2N1cy1vcGVyYS0wMDctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGhl
IGZvcm0gY29udHJvbCBiZWxvdyBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQ6CisKKwor
CitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1v
cGVyYS0wMDcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAw
Ny5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MGM5YWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDcu
aHRtbApAQCAtMCwwICsxLDM2IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPiJhdXRvZm9jdXMi
IGFuZCB0aGUgYmx1cigpIG1ldGhvZDwvdGl0bGU+Cis8c3R5bGU+CisgaW5wdXQgeyBiYWNrZ3Jv
dW5kOmxpbWUgfQorIGlucHV0OmZvY3VzIHsgYmFja2dyb3VuZDpyZWQgfQorPC9zdHlsZT4KKzxz
Y3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAg
dmFyIGdvdEJsdXIgPSBmYWxzZTsKKworICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+
IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3dpdGNoQmx1cigpIHsK
KyAgICAgICAgZ290Qmx1ciA9IHRydWU7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHRlc3Qo
KSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgaWYgKGdvdEJs
dXIpCisgICAgICAgICAgICBsb2coIlNVQ0NFU1MiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbG9nKCJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InRlc3QoKSI+Cis8cD5UaGUgZm9ybSBjb250cm9sIGJlbG93IHNob3VsZCBoYXZlIGEgZ3Jl
ZW4gYmFja2dyb3VuZDoKKzxwPjxpbnB1dCBhdXRvZm9jdXMgb25mb2N1cz0idGhpcy5ibHVyKCki
IG9uYmx1cj0ic3dpdGNoQmx1cigpIj4KKzxoci8+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8
L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA4LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwOC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY3OWZlZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwOC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw5IEBACitUaGUgZm9ybSBjb250cm9scyBiZWxvdyBzaG91bGQgaGF2
ZSBhIGdyZWVuIGJhY2tncm91bmQ6CisKKworCisKKworCisKK1NVQ0NFU1MKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwOC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA4Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZDQyOTgyYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwOC5odG1sCkBAIC0wLDAgKzEsMzQgQEAK
KzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPHRp
dGxlPiJhdXRvZm9jdXMiIGluIFhIVE1MIGFuZCB0aGUgZm9jdXMoKSBtZXRob2Q8L3RpdGxlPgor
PHN0eWxlPgorIGlucHV0LCBpbnB1dCN0ZXN0OmZvY3VzIHsgYmFja2dyb3VuZDpsaW1lIH0KKyBp
bnB1dCN0ZXN0LCBpbnB1dDpmb2N1cyB7IGJhY2tncm91bmQ6cmVkIH0KKzwvc3R5bGU+Cis8c2Ny
aXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1
bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ2lucHV0JylbMF0uZm9jdXMoKTsKKyAgICAgICAgCisgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisKKyAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF0pCisgICAgICAgICAgICBsb2coIlNV
Q0NFU1MiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9nKCJGQUlMVVJFIik7CisgICAg
fQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UaGUgZm9y
bSBjb250cm9scyBiZWxvdyBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQ6PC9wPgorPHA+
PGlucHV0IGlkPSJ0ZXN0Ii8+PC9wPgorPHA+PGlucHV0IGF1dG9mb2N1cz0iYXV0b2ZvY3VzIi8+
PC9wPgorPHA+PGlucHV0IGF1dG9mb2N1cz0iYXV0b2ZvY3VzIi8+PC9wPgorPGhyLz4KKzxvbCBp
ZD0iY29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTliMjIwOC4uNTY5Yzc2MyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAwOC0wNi0xNiAgTWljaGVsYW5nZWxvIERlIFNpbW9uZSAgPG0uZGVzQG1h
Yy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAor
ICAgICAgCUFkZGVkIHN1cHBvcnQgZm9yIGF1dG9mb2N1cyBjb250cm9scy4KKworICAgIAlXaGVu
IGF1dGhvcnMgc3BlY2lmeSB0aGUgImF1dG9mb2N1cyIgYXR0cmlidXRlIG9uCisgICAgCWZvcm0g
Y29udHJvbHMgdGhlc2UgYWNxdWlyZSBmb2N1cyBhdXRvbWF0aWNhbGx5IGFzCisgICAgCXRoZSBk
b2N1bWVudCBpcyByZW5kZXJlZC4KKworICAgICAgICBUZXN0czogZmFzdC9mb3Jtcy9hdXRvZm9j
dXMtYXR0cmlidXRlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvYXV0b2ZvY3VzLW9w
ZXJhLTAwMS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0w
MDIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAzLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwNC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDUuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA2Lmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwNy5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDguaHRtbAorCisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAgICAg
ICAgICBJZ25vcmUgYXV0b2ZvY3VzIGZsYWcgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAg
ICAgKiBodG1sL0hUTUxCdXR0b25FbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxl
bWVudDo6YXR0YWNoKToKKyAgICAgICAgICAgIFNldHMgZm9jdXMgb250byB0aGUgImF1dG9mb2N1
cydlZCIgY29udHJvbAorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6
YXV0b2ZvY3VzKToKKyAgICAgICAgICAgIEF1dG9mb2N1cyBhdHRyIGdldHRlcgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0QXV0b2ZvY3VzKToKKyAgICAgICAg
ICAgIEF1dG9mb2N1cyBhdHRyIHNldHRlcgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5pZGw6CisgICAgICAg
ICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmlkbDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OnNldFVzZXJFZGl0ZWQpOgor
ICAgICAgICAgICAgU2V0cyB0aGUgImlnbm9yZSBhdXRvZm9jdXMiIGZsYWcgb24gZG9jdW1lbnQg
aWYgdGhlIHVzZXIgZWRpdGVkCisgICAgICAgICAgICB0aGUgY29udHJvbC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaDoKKwogMjAwOC0wNi0xNiAgSm9uYXRob24gSm9u
Z3NtYSAgPGpvbmF0aG9uLmpvbmdzbWFAY29sbGFib3JhLmNvLnVrPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOGYwMWM5OS4uYjY3OTIzZSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtMzAyLDYgKzMwMiw4IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJh
bWUsIGJvb2wgaXNYSFRNTCkKICAgICBtX2RvY3VtZW50LnJlc2V0U2tpcHBpbmdSZWYodGhpcyk7
CiAKICAgICBtX3ByaW50aW5nID0gZmFsc2U7CisgICAgCisgICAgbV9pZ25vcmVBdXRvZm9jdXMg
PSBmYWxzZTsKIAogICAgIG1fZnJhbWUgPSBmcmFtZTsKICAgICBtX3JlbmRlckFyZW5hID0gMDsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCmluZGV4IGExMzQ5YTEuLjljODFjZWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNDgyLDYgKzQ4MiwxMCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBzZXRGb2N1c2VkTm9kZShQYXNzUmVmUHRyPE5vZGU+KTsKICAgICBO
b2RlKiBmb2N1c2VkTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9jdXNlZE5vZGUuZ2V0KCk7IH0K
IAorICAgIC8vIEF1dG9mb2N1cyBzdHVmZgorICAgIGJvb2wgaWdub3JlQXV0b2ZvY3VzKCkgY29u
c3QgeyByZXR1cm4gbV9pZ25vcmVBdXRvZm9jdXM7IH07CisgICAgdm9pZCBzZXRJZ25vcmVBdXRv
Zm9jdXMoYm9vbCBzaG91bGRJZ25vcmUgPSB0cnVlKSB7IG1faWdub3JlQXV0b2ZvY3VzID0gc2hv
dWxkSWdub3JlOyB9OworCiAgICAgdm9pZCBzZXRIb3Zlck5vZGUoUGFzc1JlZlB0cjxOb2RlPik7
CiAgICAgTm9kZSogaG92ZXJOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9ob3Zlck5vZGUuZ2V0KCk7
IH0KIApAQCAtODA1LDYgKzgwOSw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPENTU1N0eWxlU2hl
ZXQ+IG1fbWFwcGVkRWxlbWVudFNoZWV0OwogCiAgICAgYm9vbCBtX3ByaW50aW5nOworICAgIAor
ICAgIGJvb2wgbV9pZ25vcmVBdXRvZm9jdXM7CiAKICAgICBQYXJzZU1vZGUgbV9wYXJzZU1vZGU7
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9XZWJD
b3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4IDZkN2RiMzAuLjI1MDc0MDEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtMTksNiArMTksNyBAQAogPGFyaWEtdmFs
dWVtaW4vPgogPGFyaWEtdmFsdWVub3cvPgogPGF1dG9jb21wbGV0ZS8+Cis8YXV0b2ZvY3VzLz4K
IDxhdXRvcGxheS8+CiA8YXV0b3NhdmUvPgogPGF4aXMvPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxCdXR0b25FbGVtZW50LmlkbCBiL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVu
dC5pZGwKaW5kZXggZDZmOGI4Ny4uYWFmZDNhMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxCdXR0b25FbGVtZW50LmlkbAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQu
aWRsCkBAIC0yOCw2ICsyOCw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlICBIVE1MRm9ybUVsZW1lbnQgICAgICBmb3JtOwogICAgICAgICAgICAgICAgICBhdHRy
aWJ1dGUgIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nICAgICAgICAgICAgYWNj
ZXNzS2V5OwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIGJvb2xlYW4gICAgICAgICAgICAg
IGRpc2FibGVkOworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIGJvb2xlYW4gICAgICAgICAg
ICAgIGF1dG9mb2N1czsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBbQ29udmVydE51bGxU
b051bGxTdHJpbmddIERPTVN0cmluZyAgICAgICAgICAgIG5hbWU7CiAgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSAgRE9NU3RyaW5nICAgICAgICAgICAgdHlwZTsKICAgICAgICAgICAgICAgICAg
YXR0cmlidXRlICBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyAgICAgICAgICAg
IHZhbHVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IGMyOWQ2
ZjEuLmVjNTgzNjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAg
LTk2LDYgKzk2LDE0IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXR0YWNoKCkKICAg
ICAvLyBvbiB0aGUgcmVuZGVyZXIuCiAgICAgaWYgKHJlbmRlcmVyKCkpCiAgICAgICAgIHJlbmRl
cmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CisgICAgICAgIAorICAgIC8vIEZvY3VzIHRoZSBl
bGVtZW50IGlmIGl0IHNob3VsZCBob25vdXIgaXRzIGF1dG9mb2N1cyBhdHRyaWJ1dGUuCisgICAg
Ly8gV2UgaGF2ZSB0byBkZXRlcm1pbmUgaWYgdGhlIGVsZW1lbnQgaXMgYSBUZXh0QXJlYS9JbnB1
dC9CdXR0b24vU2VsZWN0LAorICAgIC8vIGlmIGlucHV0IHR5cGUgaGlkZGVuIGlnbm9yZSBhdXRv
Zm9jdXMuIFNvIGlmIGRpc2FibGVkIG9yIHJlYWRvbmx5LgorICAgIGlmIChhdXRvZm9jdXMoKSAm
JiByZW5kZXJlcigpICYmICFkb2N1bWVudCgpLT5pZ25vcmVBdXRvZm9jdXMoKSAmJiAhaXNSZWFk
T25seUNvbnRyb2woKSAmJgorICAgICAgICAoKGhhc1RhZ05hbWUoaW5wdXRUYWcpICYmICFpc0lu
cHV0VHlwZUhpZGRlbigpKSB8fCBoYXNUYWdOYW1lKHNlbGVjdFRhZykgfHwKKyAgICAgICAgaGFz
VGFnTmFtZShidXR0b25UYWcpIHx8IGhhc1RhZ05hbWUodGV4dGFyZWFUYWcpKSkKKyAgICAgICAg
IGZvY3VzKCk7CiB9CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6aW5zZXJ0ZWRJbnRv
VHJlZShib29sIGRlZXApCkBAIC0xNzEsNiArMTc5LDE2IEBAIHZvaWQgSFRNTEZvcm1Db250cm9s
RWxlbWVudDo6c2V0UmVhZE9ubHkoYm9vbCBiKQogICAgIHNldEF0dHJpYnV0ZShyZWFkb25seUF0
dHIsIGIgPyAiIiA6IDApOwogfQogCitib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmF1dG9m
b2N1cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShhdXRvZm9jdXNBdHRyKTsK
K30KKwordm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRBdXRvZm9jdXMoYm9vbCBiKQor
eworICAgIHNldEF0dHJpYnV0ZShhdXRvZm9jdXNBdHRyLCBiID8gImF1dG9mb2N1cyIgOiAwKTsK
K30KKwogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5n
ZSBjaGFuZ2UpCiB7CiAgICAgSFRNTEVsZW1lbnQ6OnJlY2FsY1N0eWxlKGNoYW5nZSk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCAwNGMyYTg3Li4yMzdlZTUxIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTcwLDYgKzcwLDEwIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgaXNSZWFkT25seUNvbnRyb2woKSBjb25zdCB7IHJldHVybiBt
X3JlYWRPbmx5OyB9CiAgICAgdm9pZCBzZXRSZWFkT25seShib29sKTsKIAorICAgIC8vIEF1dG9m
b2N1cyBzdHVmZgorICAgIHZpcnR1YWwgYm9vbCBhdXRvZm9jdXMoKSBjb25zdDsKKyAgICB2b2lk
IHNldEF1dG9mb2N1cyhib29sKTsKKwogICAgIHZpcnR1YWwgdm9pZCByZWNhbGNTdHlsZShTdHls
ZUNoYW5nZSk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsIGIvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCmluZGV4IGQ2ZmFjNjguLmE3MThlMDcgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAorKysgYi9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5pZGwKQEAgLTM1LDYgKzM1LDcgQEAgbW9kdWxlIGh0bWwgewog
ICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01T
dHJpbmcgYWx0OwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIGNo
ZWNrZWQ7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgZGlzYWJs
ZWQ7CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgYXV0b2ZvY3Vz
OwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgIG1heExlbmd0aDsK
ICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9N
U3RyaW5nIG5hbWU7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAg
cmVhZE9ubHk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRs
IGIvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbAppbmRleCAzZmRlZWNkLi42NGNj
MDkzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGwKQEAgLTQ2LDYgKzQ2LDcgQEAgbW9k
dWxlIGh0bWwgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTE9wdGlvbnNDb2xsZWN0
aW9uIG9wdGlvbnM7CiAKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gICAgICAg
ICBkaXNhYmxlZDsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gICAgICAgICBh
dXRvZm9jdXM7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgbXVs
dGlwbGU7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJp
bmddIERPTVN0cmluZyAgICAgICBuYW1lOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgbG9u
ZyAgICAgICAgICAgIHNpemU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5pZGwgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwKaW5kZXgg
YTMyZjg0YS4uMzIxODZiMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuaWRsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbApAQCAt
MzAsNiArMzAsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAg
W0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgICAgICAgICAgICBhY2Nlc3NLZXk7
CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgbG9uZyAgICAgICAgICAgICAgICAgY29sczsK
ICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICBkaXNhYmxl
ZDsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICBhdXRv
Zm9jdXM7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnROdWxsVG9OdWxsU3Ry
aW5nXSBET01TdHJpbmcgICAgICAgICAgICBuYW1lOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1
dGUgIGJvb2xlYW4gICAgICAgICAgICAgIHJlYWRPbmx5OwogICAgICAgICAgICAgICAgICBhdHRy
aWJ1dGUgIGxvbmcgICAgICAgICAgICAgICAgIHJvd3M7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbC5jcHAKaW5kZXggNWExYzY4YS4uYWUwN2I0YiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sLmNwcApAQCAtNDE1LDYgKzQxNSwxMiBAQCB2b2lkIFJlbmRlclRl
eHRDb250cm9sOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgICAgIG1fc2VhcmNoUG9wdXAtPnVw
ZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKK3ZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OnNldFVzZXJF
ZGl0ZWQoYm9vbCBpc1VzZXJFZGl0ZWQpCit7CisgICAgbV91c2VyRWRpdGVkID0gaXNVc2VyRWRp
dGVkOworICAgIGRvY3VtZW50KCktPnNldElnbm9yZUF1dG9mb2N1cyhpc1VzZXJFZGl0ZWQpOwor
fQorCiBpbnQgUmVuZGVyVGV4dENvbnRyb2w6OnNlbGVjdGlvblN0YXJ0KCkKIHsKICAgICBGcmFt
ZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sLmgKaW5kZXggNzVkMTJjOC4uNzA3MjczNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbC5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
aXNUZXh0QXJlYSgpIGNvbnN0IHsgcmV0dXJuIG1fbXVsdGlMaW5lOyB9CiAgICAgCiAgICAgYm9v
bCBpc1VzZXJFZGl0ZWQoKSBjb25zdCB7IHJldHVybiBtX3VzZXJFZGl0ZWQ7IH0KLSAgICB2b2lk
IHNldFVzZXJFZGl0ZWQoYm9vbCBpc1VzZXJFZGl0ZWQpIHsgbV91c2VyRWRpdGVkID0gaXNVc2Vy
RWRpdGVkOyB9CisgICAgdm9pZCBzZXRVc2VyRWRpdGVkKGJvb2wgaXNVc2VyRWRpdGVkKTsKIAog
ICAgIGludCBzZWxlY3Rpb25TdGFydCgpOwogICAgIGludCBzZWxlY3Rpb25FbmQoKTsK
</data>
<flag name="review"
          id="9564"
          type_id="1"
          status="+"
          setter="adele"
    />
          </attachment>
      

    </bug>

</bugzilla>