<?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>173148</bug_id>
          
          <creation_ts>2017-06-09 03:51:47 -0700</creation_ts>
          <short_desc>Not possible to remove the &apos;li&apos; element inside the table cell</short_desc>
          <delta_ts>2017-08-08 05:23:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.chromium.org/p/chromium/issues/detail?id=731621</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Javier Fernandez">jfernandez</reporter>
          <assigned_to name="Javier Fernandez">jfernandez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>jfernandez</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1317336</commentid>
    <comment_count>0</comment_count>
      <attachid>312421</attachid>
    <who name="Javier Fernandez">jfernandez</who>
    <bug_when>2017-06-09 03:51:47 -0700</bug_when>
    <thetext>Created attachment 312421
Test case to reproduce the issue

What steps will reproduce the problem?
(1) Load the attached test case
(2) Place the cursor at any of the li items
(3) hit backspace

What is the expected result?

Both list items can be deleted.

What happens instead?

None of these list items can be deleted by hitting backspace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317339</commentid>
    <comment_count>1</comment_count>
    <who name="Javier Fernandez">jfernandez</who>
    <bug_when>2017-06-09 03:52:50 -0700</bug_when>
    <thetext>This looks like a clear interoperability issue, as both Firefox and IE/Edge allow deleting the list item element inside the table cel</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318364</commentid>
    <comment_count>2</comment_count>
      <attachid>312695</attachid>
    <who name="Javier Fernandez">jfernandez</who>
    <bug_when>2017-06-12 14:08:56 -0700</bug_when>
    <thetext>Created attachment 312695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318784</commentid>
    <comment_count>3</comment_count>
      <attachid>312695</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-13 13:31:44 -0700</bug_when>
    <thetext>Comment on attachment 312695
Patch

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

It would be nice if there were a web platform test for this and a link to the relevant specification.
This seems like it might be good, but I&apos;m not the right reviewer for this code.

&gt; LayoutTests/editing/assert_selection.js:3
&gt; +// found in the LICENSE file.

The LICENSE file isn&apos;t included here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319036</commentid>
    <comment_count>4</comment_count>
    <who name="Javier Fernandez">jfernandez</who>
    <bug_when>2017-06-14 00:44:09 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #3)
&gt; Comment on attachment 312695 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=312695&amp;action=review
&gt; 
&gt; It would be nice if there were a web platform test for this and a link to
&gt; the relevant specification.

Oh, there is, indeed. I added such test as part of my patch for Blink. The problem is that WebKit doesn&apos;t import the WPT tests yet. I was tempted to do it but I thought there were lots of failures and wasn&apos;t sure it was a good idea. 


&gt; &gt; LayoutTests/editing/assert_selection.js:3
&gt; &gt; +// found in the LICENSE file.
&gt; 
&gt; The LICENSE file isn&apos;t included here.

Indeed, Ill add it. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319108</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-06-14 07:25:31 -0700</bug_when>
    <thetext>(In reply to Javier Fernandez from comment #4)
&gt; (In reply to Alex Christensen from comment #3)
&gt; &gt; It would be nice if there were a web platform test for this and a link to
&gt; &gt; the relevant specification.
&gt; 
&gt; Oh, there is, indeed. I added such test as part of my patch for Blink. The
&gt; problem is that WebKit doesn&apos;t import the WPT tests yet. I was tempted to do
&gt; it but I thought there were lots of failures and wasn&apos;t sure it was a good
&gt; idea. 

I think it’s a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320818</commentid>
    <comment_count>6</comment_count>
    <who name="Javier Fernandez">jfernandez</who>
    <bug_when>2017-06-19 13:55:01 -0700</bug_when>
    <thetext>@rniwa, any comment on this issue ? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321432</commentid>
    <comment_count>7</comment_count>
      <attachid>312695</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-21 00:54:07 -0700</bug_when>
    <thetext>Comment on attachment 312695
Patch

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

Code change looks okay but the test needs to be placed elsewhere or be rewritten (preferred).

&gt; LayoutTests/editing/assert_selection.js:1
&gt; +// Copyright 2016 The Chromium Authors. All rights reserved.

This code is just incomprehensible.
Either we should add this under LayoutTests/imported/ or not add it and write our own test instead.

&gt; LayoutTests/editing/deleting/delete-list-items-in-table-cell-expected.txt:6
&gt; +
&gt; +PASS Delete - When deleting the second ordered list items in a table cell its content is merged with the first list item. 
&gt; +PASS Delete - When deleting the second unordered list items in a table cell its content is merged with the first list item. 
&gt; +PASS Delete - When deleting the last ordered list item in a table cell we must delete the whole ordered list. 
&gt; +PASS Delete - When deleting the last unrdered list item in a table cell we must delete the whole unordered list. 
&gt; +

This output doesn&apos;t tell us what kind of markup is being tested at all.
Please use dump-as-markup.js to dump the content as the content is edited.
See other tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321434</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-21 01:03:29 -0700</bug_when>
    <thetext>Also, please add a test case where the table cell is the root editable element, and other case where the entire editable content is inside a (non-editable) table cell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324184</commentid>
    <comment_count>9</comment_count>
      <attachid>314194</attachid>
    <who name="Javier Fernandez">jfernandez</who>
    <bug_when>2017-06-29 17:26:13 -0700</bug_when>
    <thetext>Created attachment 314194
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330794</commentid>
    <comment_count>10</comment_count>
    <who name="Javier Fernandez">jfernandez</who>
    <bug_when>2017-07-20 15:20:21 -0700</bug_when>
    <thetext>@rniwa, could you please take another look ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332245</commentid>
    <comment_count>11</comment_count>
      <attachid>314194</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-07-25 21:12:49 -0700</bug_when>
    <thetext>Comment on attachment 314194
Patch

r=me. The patch looks great now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336436</commentid>
    <comment_count>12</comment_count>
      <attachid>314194</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-08 05:22:36 -0700</bug_when>
    <thetext>Comment on attachment 314194
Patch

Clearing flags on attachment: 314194

Committed r220398: &lt;http://trac.webkit.org/changeset/220398&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336437</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-08 05:22:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336438</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-08 05:23:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/33773900&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>312421</attachid>
            <date>2017-06-09 03:51:47 -0700</date>
            <delta_ts>2017-06-09 03:51:47 -0700</delta_ts>
            <desc>Test case to reproduce the issue</desc>
            <filename>backspaceOutOfLIInCell.html</filename>
            <type>text/html</type>
            <size>362</size>
            <attacher name="Javier Fernandez">jfernandez</attacher>
            
              <data encoding="base64">PHN0eWxlPgp0ZCB7IHdpZHRoOiAyMDBweDsgfQo8L3N0eWxlPgpCYWNrc3BhY2luZyBvdXRzaWRl
IHRoZSB0YWJsZSByZW1vdmVzIHRoZSBMSS4gIEhvd2V2ZXIsIGl0IGlzIG5vdCBwb3NzaWJsZSB0
byByZW1vdmUgdGhlIExJIGluc2lkZSB0aGUgdGFibGUgY2VsbC4KPGRpdiBpZD0iZWRpdGFibGUi
IGNvbnRlbnRlZGl0YWJsZT48dGFibGUgYm9yZGVyPSIxIj48dHI+PHRkPjxvbD48bGk+YTwvbGk+
PC9vbD48L3RkPjx0ZD48b2w+PGxpPmI8L2xpPjwvb2w+PC90ZD48L3RyPjx0cj48dGQ+PGJyPjwv
dGQ+PHRkPjxicj48L3RkPjwvdHI+PC90YWJsZT4KPGRpdj5oZWxsbzwvZGl2Pgo8b2w+PGxpPjxi
cj48L2xpPjwvb2w+CjwvZGl2Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312695</attachid>
            <date>2017-06-12 14:08:56 -0700</date>
            <delta_ts>2017-06-29 17:26:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173148-20170612230855.patch</filename>
            <type>text/plain</type>
            <size>36232</size>
            <attacher name="Javier Fernandez">jfernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3OTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTlkZWFjMWQ4Njc2OGE3
ODgxYzE3Yzk3ODhjOTc2ZjM2NGZkMjgzMi4uMWEyMDVjZTdmYzkwMzU5NTBiZDM2Njc2ZjcyOWQw
MTk1ZjZkNmMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA2LTEyICBKYXZp
ZXIgRmVybmFuZGV6ICA8amZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIE5vdCBwb3Nz
aWJsZSB0byByZW1vdmUgdGhlICdsaScgZWxlbWVudCBpbnNpZGUgdGhlIHRhYmxlIGNlbGwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzE0OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIG5lZWQgdG8g
YWRkIGEgbmV3IGNhc2UgZm9yIGJyZWFraW5nIG91dCBlbXB0eSBsaXN0IGl0ZW1zIHdoZW4gdGhl
eSBhcmUKKyAgICAgICAgYXQgdGhlIHN0YXJ0IG9mIGFuIGVkaXRhYmxlIGFyZWEuIFNpbmNlIGxp
c3QgaXRlbXMgY2FuIGJlIGFsc28gaW5zaWRlCisgICAgICAgIHRhYmxlIGNlbGxzLCB3ZSBuZWVk
IHRvIGNvbnNpZGVyIHRoaXMga2luZCBvZiBlbGVtZW50cyBhcyB3ZWxsLgorCisgICAgICAgIFRl
c3Q6IGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpc3QtaXRlbXMtaW4tdGFibGUtY2VsbC5odG1s
CisKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZCk6CisKIDIwMTctMDYtMDkgIEFhcm9u
IENodSAgPGFhcm9uX2NodUBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IE1lZGlhIENvbnRyb2xz
OiBNaXNzaW5nIGxhYmVscyBmb3IgdGhlIFRpbWUgTGFiZWxzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVHlwaW5nQ29tbWFuZC5jcHAKaW5kZXggN2JkOTVjYzA4YjM1MjZiZGYzNzNhNGRmYzRmNzY0
N2IwMDk1NzgyZS4uOTYyMGJmYjcxMjcwY2NkYzM2MzVhZGZkZGFmZWYzMjFhNjA4OTQwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC02NjksNyArNjY5LDEx
IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHksIGJvb2wgc2hvdWxkQWRkCiAgICAgICAgIGlmIChzaG91bGRBZGRUb0tpbGxS
aW5nICYmIHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgZ3JhbnVsYXJpdHkgIT0gQ2hhcmFjdGVyR3Jh
bnVsYXJpdHkpCiAgICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpB
bHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkp
OwogCi0gICAgICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKS5wcmV2aW91
cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSkuaXNOdWxsKCkpIHsKKyAgICAgICAgY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlU3RhcnQgPSBlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxl
U3RhcnQoKTsKKyAgICAgICAgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwcmV2aW91c1Bvc2l0aW9u
ID0gdmlzaWJsZVN0YXJ0LnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKKyAg
ICAgICAgTm9kZSogZW5jbG9zaW5nVGFibGVDZWxsID0gZW5jbG9zaW5nTm9kZU9mVHlwZSh2aXNp
YmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKSwgJmlzVGFibGVDZWxsKTsKKyAgICAgICAgY29uc3Qg
Tm9kZSogZW5jbG9zaW5nVGFibGVDZWxsRm9yUHJldmlvdXNQb3NpdGlvbiA9IGVuY2xvc2luZ05v
ZGVPZlR5cGUocHJldmlvdXNQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLCAmaXNUYWJsZUNlbGwp
OworICAgICAgICBpZiAocHJldmlvdXNQb3NpdGlvbi5pc051bGwoKSB8fCBlbmNsb3NpbmdUYWJs
ZUNlbGwgIT0gZW5jbG9zaW5nVGFibGVDZWxsRm9yUHJldmlvdXNQb3NpdGlvbikgewogICAgICAg
ICAgICAgLy8gV2hlbiB0aGUgY2FyZXQgaXMgYXQgdGhlIHN0YXJ0IG9mIHRoZSBlZGl0YWJsZSBh
cmVhIGluIGFuIGVtcHR5IGxpc3QgaXRlbSwgYnJlYWsgb3V0IG9mIHRoZSBsaXN0IGl0ZW0uCiAg
ICAgICAgICAgICBpZiAoYXV0byBkZWxldGVMaXN0U2VsZWN0aW9uID0gc2hvdWxkQnJlYWtPdXRP
ZkVtcHR5TGlzdEl0ZW0oKSkgewogICAgICAgICAgICAgICAgIGlmICh3aWxsQWRkVHlwaW5nVG9P
cGVuQ29tbWFuZChEZWxldGVLZXksIGdyYW51bGFyaXR5LCB7IH0sIFJhbmdlOjpjcmVhdGUoZG9j
dW1lbnQoKSwgZGVsZXRlTGlzdFNlbGVjdGlvbi52YWx1ZSgpLnN0YXJ0KCksIGRlbGV0ZUxpc3RT
ZWxlY3Rpb24udmFsdWUoKS5lbmQoKSkpKSB7CkBAIC02NzgsMTcgKzY4MiwxNyBAQCB2b2lkIFR5
cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
LCBib29sIHNob3VsZEFkZAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHByZXZpb3VzUG9zaXRp
b24uaXNOdWxsKCkpIHsKICAgICAgICAgICAgIC8vIFdoZW4gdGhlcmUgYXJlIG5vIHZpc2libGUg
cG9zaXRpb25zIGluIHRoZSBlZGl0aW5nIHJvb3QsIGRlbGV0ZSBpdHMgZW50aXJlIGNvbnRlbnRz
LgogICAgICAgICAgICAgLy8gRklYTUU6IERpc3BhdGNoIGEgYGJlZm9yZWlucHV0YCBldmVudCBo
ZXJlIGFuZCBiYWlsIGlmIHByZXZlbnREZWZhdWx0KCkgd2FzIGludm9rZWQuCi0gICAgICAgICAg
ICBpZiAoZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkubmV4dChDYW5ub3RDcm9zc0Vk
aXRpbmdCb3VuZGFyeSkuaXNOdWxsKCkgJiYgbWFrZUVkaXRhYmxlUm9vdEVtcHR5KCkpIHsKKyAg
ICAgICAgICAgIGlmICh2aXNpYmxlU3RhcnQubmV4dChDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFy
eSkuaXNOdWxsKCkgJiYgbWFrZUVkaXRhYmxlUm9vdEVtcHR5KCkpIHsKICAgICAgICAgICAgICAg
ICB0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQoRGVsZXRlS2V5KTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBWaXNpYmxlUG9zaXRp
b24gdmlzaWJsZVN0YXJ0KGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpKTsKICAgICAg
ICAgLy8gSWYgd2UgaGF2ZSBhIGNhcmV0IHNlbGVjdGlvbiBhdCB0aGUgYmVnaW5uaW5nIG9mIGEg
Y2VsbCwgd2UgaGF2ZSBub3RoaW5nIHRvIGRvLgotICAgICAgICBOb2RlKiBlbmNsb3NpbmdUYWJs
ZUNlbGwgPSBlbmNsb3NpbmdOb2RlT2ZUeXBlKHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgp
LCAmaXNUYWJsZUNlbGwpOwogICAgICAgICBpZiAoZW5jbG9zaW5nVGFibGVDZWxsICYmIHZpc2li
bGVTdGFydCA9PSBmaXJzdFBvc2l0aW9uSW5Ob2RlKGVuY2xvc2luZ1RhYmxlQ2VsbCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4NDczYzE3NzExN2U4MDNiOTEzMTBmMjE3ZWU5Njlk
N2Y4YWRlMWQzLi42ZTM2ODk3ZDBjYjZkYjZhY2M1NmVkOWQxZjY2Yzk0NWM4Y2UxY2ZkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDQgQEAKKzIwMTctMDYtMTIgIEphdmllciBGZXJuYW5kZXogIDxqZmVybmFu
ZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgTm90IHBvc3NpYmxlIHRvIHJlbW92ZSB0aGUgJ2xp
JyBlbGVtZW50IGluc2lkZSB0aGUgdGFibGUgY2VsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczMTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVncmVzc2lvbiB0ZXN0cyBmb3IgZGlmZmVyZW50IHNj
ZW5hcmlvcyBvZiBsaXN0IGl0ZW1zIHJlbW92YWwuCisgICAgICAgIEFkZGVkIGFsc28gYSBuZXcg
c2NyaXB0IGZpbGUgdG8gZWFzZSB0aGUgZGVmaW5pdGlvbiBvZiBzZWxlY3Rpb24gYmFzZWQgdGVz
dHMuCisKKyAgICAgICAgKiBlZGl0aW5nL2Fzc2VydF9zZWxlY3Rpb24uanM6IEFkZGVkLgorICAg
ICAgICAoVHJhdmVyc2FsLnByb3RvdHlwZS5maXJzdENoaWxkT2YpOgorICAgICAgICAoVHJhdmVy
c2FsLnByb3RvdHlwZS5jaGlsZE5vZGVzT2YpOgorICAgICAgICAoVHJhdmVyc2FsLnByb3RvdHlw
ZS5mcm9tRE9NU2VsZWN0aW9uKToKKyAgICAgICAgKFRyYXZlcnNhbC5wcm90b3R5cGUubmV4dFNp
YmxpbmdPZik6CisgICAgICAgIChUcmF2ZXJzYWwpOgorICAgICAgICAoRE9NVHJlZVRyYXZlcnNh
bC5wcm90b3R5cGUuZmlyc3RDaGlsZE9mKToKKyAgICAgICAgKERPTVRyZWVUcmF2ZXJzYWwucHJv
dG90eXBlLmZyb21ET01TZWxlY3Rpb24pOgorICAgICAgICAoRE9NVHJlZVRyYXZlcnNhbC5wcm90
b3R5cGUubmV4dFNpYmxpbmdPZik6CisgICAgICAgIChET01UcmVlVHJhdmVyc2FsKToKKyAgICAg
ICAgKEZsYXRUcmVlVHJhdmVyc2FsLnByb3RvdHlwZS5maXJzdENoaWxkT2YpOgorICAgICAgICAo
RmxhdFRyZWVUcmF2ZXJzYWwucHJvdG90eXBlLmZyb21ET01TZWxlY3Rpb24pOgorICAgICAgICAo
RmxhdFRyZWVUcmF2ZXJzYWwucHJvdG90eXBlLm5leHRTaWJsaW5nT2YpOgorICAgICAgICAoRmxh
dFRyZWVUcmF2ZXJzYWwpOgorICAgICAgICAoaXNDaGFyYWN0ZXJEYXRhKToKKyAgICAgICAgKGlz
RWxlbWVudCk6CisgICAgICAgIChjaGVja1ZhbGlkTm9kZUFuZE9mZnNldCk6CisgICAgICAgIChw
cm90b3R5cGUuY29sbGFwc2UpOgorICAgICAgICAocHJvdG90eXBlLmV4dGVuZCk6CisgICAgICAg
IChwcm90b3R5cGUuZ2V0IGFuY2hvck5vZGUpOgorICAgICAgICAocHJvdG90eXBlLmdldCBhbmNo
b3JPZmZzZXQpOgorICAgICAgICAocHJvdG90eXBlLmdldCBmb2N1c05vZGUpOgorICAgICAgICAo
cHJvdG90eXBlLmdldCBmb2N1c09mZnNldCk6CisgICAgICAgIChwcm90b3R5cGUuZ2V0IHNoYWRv
d0hvc3QpOgorICAgICAgICAocHJvdG90eXBlLmdldCBpc0NvbGxhcHNlZCk6CisgICAgICAgIChw
cm90b3R5cGUuZ2V0IGlzTm9uZSk6CisgICAgICAgIChmcm9tRE9NU2VsZWN0aW9uKToKKyAgICAg
ICAgKHByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgICogZWRpdGluZy9kZWxldGluZy9kZWxl
dGUtbGlzdC1pdGVtcy1pbi10YWJsZS1jZWxsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGlzdC1pdGVtcy1pbi10YWJsZS1jZWxsLmh0bWw6
IEFkZGVkLgorCiAyMDE3LTA2LTA5ICBBYXJvbiBDaHUgIDxhYXJvbl9jaHVAYXBwbGUuY29tPgog
CiAgICAgICAgIEFYOiBNZWRpYSBDb250cm9sczogTWlzc2luZyBsYWJlbHMgZm9yIHRoZSBUaW1l
IExhYmVscy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvYXNzZXJ0X3NlbGVjdGlv
bi5qcyBiL0xheW91dFRlc3RzL2VkaXRpbmcvYXNzZXJ0X3NlbGVjdGlvbi5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hOTJkNjVlMzFkMGJmYmZiZWM0YzQzZjBhOGQ1OTU5MGVhNWE0YjcyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9hc3NlcnRfc2VsZWN0aW9uLmpzCkBAIC0wLDAgKzEs
OTM5IEBACisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisKKyd1c2Ugc3RyaWN0JzsKKworLy8gVGhpcyBmaWxlIHByb3ZpZGVzIHxhc3NlcnRfc2Vs
ZWN0aW9uKHNhbXBsZSwgdGVzdGVyLCBleHBlY3RlZFRleHQsIG9wdGlvbnMpfAorLy8gYXNzZXJ0
aW9uIHRvIFczQyB0ZXN0IGhhcm5lc3MgdG8gd3JpdGUgZWRpdGluZyB0ZXN0IGNhc2VzIGVhc2ll
ci4KKy8vCisvLyB8c2FtcGxlfCBpcyBhbiBIVE1MIGZyYWdtZW50IHRleHQgd2hpY2ggaXMgaW5z
ZXJ0ZWQgYXMgfGlubmVySFRNTHwuIEl0IHNob3VsZAorLy8gaGF2ZSBhdCBsZWFzdCBvbmUgZm9j
dXMgYm91bmRhcnkgcG9pbnQgbWFya2VyICJ8IiBhbmQgYXQgbW9zdCBvbmUgYW5jaG9yCisvLyBi
b3VuZGFyeSBwb2ludCBtYXJrZXIgIl4iLgorLy8KKy8vIHx0ZXN0ZXJ8IGlzIGVpdGhlciBuYW1l
IHdpdGggcGFyYW1ldGVyIG9mIGV4ZWNDb21tYW5kIG9yIGZ1bmN0aW9uIHRha2luZworLy8gb25l
IHBhcmFtZXRlciB8U2VsZWN0aW9ufC4KKy8vCisvLyB8ZXhwZWN0ZWRUZXh0fCBpcyBhbiBIVE1M
IGZyYWdtZW50IHRleHQgY29udGFpbmluZyBhdCBtb3N0IG9uZSBmb2N1cyBtYXJrZXIKKy8vIGFu
ZCBhbmNob3IgbWFya2VyLiBJZiByZXN1bHRpbmcgc2VsZWN0aW9uIGlzIG5vbmUsIHlvdSBkb24n
dCBuZWVkIHRvIGhhdmUKKy8vIGFuY2hvciBhbmQgZm9jdXMgbWFya2Vycy4KKy8vCisvLyB8b3B0
aW9uc3wgaXMgYSBzdHJpbmcgYXMgZGVzY3JpcHRpb24sIHVuZGVmaW5lZCwgb3IgYSBkaWN0aW9u
YXJ5IGNvbnRhaW5pbmc6CisvLyAgZGVzY3JpcHRpb246IEEgZGVzY3JpcHRpb24KKy8vICBkdW1w
QXM6ICdkb210cmVlJyBvciAnZmxhdHRyZWUnLiBEZWZhdWx0IGlzICdkb210cmVlJy4KKy8vICBy
ZW1vdmVTYW1wbGVJZlN1Y2NlZWRlZDogQSBib29sZWFuLiBEZWZhdWx0IGlzIHRydWUuCisvLyAg
ZHVtcEZyb21Sb290OiBBIGJvb2xlYW4uIERlZmF1bHQgaXMgZmFsc2UuCisvLworLy8gRXhhbXBs
ZToKKy8vICB0ZXN0KCgpID0+IHsKKy8vICAgIGFzc2VydF9zZWxlY3Rpb24oCisvLyAgICAgICd8
Zm9vJywKKy8vICAgICAgKHNlbGVjdGlvbikgPT4gc2VsZWN0aW9uLm1vZGlmeSgnZXh0ZW50Jywg
J2ZvcndhcmQsICdjaGFyYWN0ZXInKSwKKy8vICAgICAgJzxhIGhyZWY9Imh0dHA6Ly9iYXIiPl5m
fG9vPC9hPicKKy8vICB9KTsKKy8vCisvLyAgdGVzdCgoKSA9PiB7CisvLyAgICBhc3NlcnRfc2Vs
ZWN0aW9uKAorLy8gICAgICAneF55fHonLAorLy8gICAgICAnYm9sZCcsICAvLyBleGVjQ29tbWFu
ZCBuYW1lIGFzIGEgdGVzdAorLy8gICAgICAneDxiPnk8L2I+eicsCisvLyAgICAgICdJbnNlcnQg
QiB0YWcnKTsKKy8vICB9KTsKKy8vCisvLyAgdGVzdCgoKSA9PiB7CisvLyAgICBhc3NlcnRfc2Vs
ZWN0aW9uKAorLy8gICAgICAneF55fHonLAorLy8gICAgICAnY3JlYXRlTGluayBodHRwOi8vZm9v
JywgIC8vIGV4ZWNDb21tYW5kIG5hbWUgYW5kIHBhcmFtZXRlcgorLy8gICAgICAneDxhIGhyZWY9
Imh0dHA6Ly9mb28vIj55PC9hPjwvYj56JywKKy8vICAgICAgJ0luc2VydCBCIHRhZycpOworLy8g
IH0pOworLy8KKy8vCisKKy8vIFRPRE8oeW9zaW4pOiBQbGVhc2UgdXNlICJjbGFuZy1mb3JtYXQg
LXN0eWxlPUNocm9taXVtIC1pIiBmb3IgZm9ybWF0dGluZworLy8gdGhpcyBmaWxlLgorCisoZnVu
Y3Rpb24oKSB7CisvKiogQGVudW17c3RyaW5nfSAqLworY29uc3QgRHVtcEFzID0geworICBET01f
VFJFRTogJ2RvbXRyZWUnLAorICBGTEFUX1RSRUU6ICdmbGF0dHJlZScsCit9OworCisvKiogQGNv
bnN0IEB0eXBlIHtzdHJpbmd9ICovCitjb25zdCBrVGV4dEFyZWEgPSAnVEVYVEFSRUEnOworCitj
bGFzcyBUcmF2ZXJzYWwgeworICAvKioKKyAgICogQHBhcmFtIHshTm9kZX0gbm9kZQorICAgKiBA
cmV0dXJuIHtOb2RlfQorICAgKi8KKyAgZmlyc3RDaGlsZE9mKG5vZGUpIHsgdGhyb3cgbmV3IEVy
cm9yKCdZb3Ugc2hvdWxkIGltcGxlbWVudCBmaXJzdENoaWxkT2YnKTsgfQorCisgIC8qKgorICAg
KiBAcGFyYW0geyFOb2RlfSBub2RlCisgICAqIEByZXR1cm4geyFHZW5lcmF0b3I8Tm9kZT59Cisg
ICAqLworICAqY2hpbGROb2Rlc09mKG5vZGUpIHsKKyAgICBmb3IgKGxldCBjaGlsZCA9IHRoaXMu
Zmlyc3RDaGlsZE9mKG5vZGUpOyBjaGlsZCAhPT0gbnVsbDsKKyAgICAgICAgIGNoaWxkID0gdGhp
cy5uZXh0U2libGluZ09mKGNoaWxkKSkgeworICAgICAgeWllbGQgY2hpbGQ7CisgICAgfQorICB9
CisKKyAgLyoqCisgICAqIEBwYXJhbSB7IURPTVNlbGVjdGlvbn0gc2VsZWN0aW9uCisgICAqIEBy
ZXR1cm4gIVNhbXBsZVNlbGVjdGlvbgorICAgKi8KKyAgZnJvbURPTVNlbGVjdGlvbihzZWxlY3Rp
b24pIHsKKyAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBzaG91bGQgaW1wbGVtZW50IGZyb21ET01T
ZWxlY3Rpb24nKTsKKyAgfQorCisgIC8qKgorICAgKiBAcGFyYW0geyFOb2RlfSBub2RlCisgICAq
IEByZXR1cm4ge05vZGV9CisgICAqLworICBuZXh0U2libGluZ09mKG5vZGUpIHsgdGhyb3cgbmV3
IEVycm9yKCdZb3Ugc2hvdWxkIGltcGxlbWVudCBuZXh0U2libGluZ09mJyk7IH0KK30KKworY2xh
c3MgRE9NVHJlZVRyYXZlcnNhbCBleHRlbmRzIFRyYXZlcnNhbCB7CisgIC8qKgorICAgKiBAb3Zl
cnJpZGUKKyAgICogQHBhcmFtIHshTm9kZX0gbm9kZQorICAgKiBAcmV0dXJuIHtOb2RlfQorICAg
Ki8KKyAgZmlyc3RDaGlsZE9mKG5vZGUpIHsgcmV0dXJuIG5vZGUuZmlyc3RDaGlsZDsgfQorCisg
IC8qKgorICAgKiBAcGFyYW0geyFET01TZWxlY3Rpb259IHNlbGVjdGlvbgorICAgKiBAcmV0dXJu
ICFTYW1wbGVTZWxlY3Rpb24KKyAgICovCisgIGZyb21ET01TZWxlY3Rpb24oc2VsZWN0aW9uKSB7
CisgICAgcmV0dXJuIFNhbXBsZVNlbGVjdGlvbi5mcm9tRE9NU2VsZWN0aW9uKHNlbGVjdGlvbik7
CisgIH0KKworICAvKioKKyAgICogQHBhcmFtIHshTm9kZX0gbm9kZQorICAgKiBAcmV0dXJuIHtO
b2RlfQorICAgKi8KKyAgbmV4dFNpYmxpbmdPZihub2RlKSB7IHJldHVybiBub2RlLm5leHRTaWJs
aW5nOyB9Cit9OworCitjbGFzcyBGbGF0VHJlZVRyYXZlcnNhbCBleHRlbmRzIFRyYXZlcnNhbCB7
CisgIC8qKgorICAgKiBAb3ZlcnJpZGUKKyAgICogQHBhcmFtIHshTm9kZX0gbm9kZQorICAgKiBA
cmV0dXJuIHtOb2RlfQorICAgKi8KKyAgZmlyc3RDaGlsZE9mKG5vZGUpIHsgcmV0dXJuIGludGVy
bmFscy5maXJzdENoaWxkSW5GbGF0VHJlZShub2RlKTsgfQorCisgIC8qKgorICAgKiBAcGFyYW0g
eyFET01TZWxlY3Rpb259IHNlbGVjdGlvbgorICAgKiBAcmV0dXJuICFTYW1wbGVTZWxlY3Rpb24K
KyAgICovCisgIGZyb21ET01TZWxlY3Rpb24oc2VsZWN0aW9uKSB7CisgICAgLy8gVE9ETyh5b3Np
bik6IFdlIHNob3VsZCByZXR1cm4gbm9uLXNjb3BlZCBzZWxlY3Rpb24gcmF0aGVyIHRoYW4gc2Vs
ZWN0aW9uCisgICAgLy8gc2NvcGVkIGluIG1haW4gdHJlZS4KKyAgICByZXR1cm4gU2FtcGxlU2Vs
ZWN0aW9uLmZyb21ET01TZWxlY3Rpb24oc2VsZWN0aW9uKTsKKyAgfQorCisgIC8qKgorICAgKiBA
cGFyYW0geyFOb2RlfSBub2RlCisgICAqIEByZXR1cm4ge05vZGV9CisgICAqLworICBuZXh0U2li
bGluZ09mKG5vZGUpIHsgcmV0dXJuIGludGVybmFscy5uZXh0U2libGluZ0luRmxhdFRyZWUobm9k
ZSk7IH0KK30KKworLyoqCisgKiBAcGFyYW0geyFOb2RlfSBub2RlCisgKiBAcmV0dXJuIHtib29s
ZWFufQorICovCitmdW5jdGlvbiBpc0NoYXJhY3RlckRhdGEobm9kZSkgeworICByZXR1cm4gbm9k
ZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUgfHwKKyAgICAgIG5vZGUubm9kZVR5cGUgPT09
IE5vZGUuQ09NTUVOVF9OT0RFOworfQorCisvKioKKyAqIEBwYXJhbSB7IU5vZGV9IG5vZGUKKyAq
IEByZXR1cm4ge2Jvb2xlYW59CisgKi8KK2Z1bmN0aW9uIGlzRWxlbWVudChub2RlKSB7CisgIHJl
dHVybiBub2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERTsKK30KKworLyoqCisgKiBA
cGFyYW0geyFOb2RlfSBub2RlCisgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0CisgKi8KK2Z1bmN0
aW9uIGNoZWNrVmFsaWROb2RlQW5kT2Zmc2V0KG5vZGUsIG9mZnNldCkgeworICBpZiAoIW5vZGUp
CisgICAgdGhyb3cgbmV3IEVycm9yKCdOb2RlIHBhcmFtZXRlciBzaG91bGQgbm90IGJlIGEgbnVs
bC4nKTsKKyAgaWYgKG9mZnNldCA8IDApCisgICAgdGhyb3cgbmV3IEVycm9yKGBBc3N1bWVzICR7
b2Zmc2V0fSA+PSAwYCk7CisgIGlmIChpc0VsZW1lbnQobm9kZSkpIHsKKyAgICBpZiAob2Zmc2V0
ID4gbm9kZS5jaGlsZE5vZGVzLmxlbmd0aCkKKyAgICAgIHRocm93IG5ldyBFcnJvcihgQmFkIG9m
ZnNldCAke29mZnNldH0gZm9yICR7bm9kZX1gKTsKKyAgICByZXR1cm47CisgIH0KKyAgaWYgKGlz
Q2hhcmFjdGVyRGF0YShub2RlKSkgeworICAgIGlmIChvZmZzZXQgPiBub2RlLm5vZGVWYWx1ZS5s
ZW5ndGgpCisgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJhZCBvZmZzZXQgJHtvZmZzZXR9IGZvciAk
e25vZGV9YCk7CisgICAgcmV0dXJuOworICB9CisgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBu
b2RlOiAke25vZGV9YCk7Cit9CisKK2NsYXNzIFNhbXBsZVNlbGVjdGlvbiB7CisgIC8qKiBAcHVi
bGljICovCisgIGNvbnN0cnVjdG9yKCkgeworICAgIC8qKiBAdHlwZSB7P05vZGV9ICovCisgICAg
dGhpcy5hbmNob3JOb2RlXyA9IG51bGw7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovCisgICAg
dGhpcy5hbmNob3JPZmZzZXRfID0gMDsKKyAgICAvKiogQHR5cGUgez9Ob2RlfSAqLworICAgIHRo
aXMuZm9jdXNOb2RlXyA9IG51bGw7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovCisgICAgdGhp
cy5mb2N1c09mZnNldF8gPSAwOworICAgIC8qKiBAdHlwZSB7SFRNTEVsZW1lbnR9ICovCisgICAg
dGhpcy5zaGFkb3dIb3N0XyA9IG51bGw7CisgIH0KKworICAvKioKKyAgICogQHB1YmxpYworICAg
KiBAcGFyYW0geyFOb2RlfSBub2RlCisgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQKKyAgICov
CisgIGNvbGxhcHNlKG5vZGUsIG9mZnNldCkgeworICAgIGNoZWNrVmFsaWROb2RlQW5kT2Zmc2V0
KG5vZGUsIG9mZnNldCk7CisgICAgdGhpcy5hbmNob3JOb2RlXyA9IHRoaXMuZm9jdXNOb2RlXyA9
IG5vZGU7CisgICAgdGhpcy5hbmNob3JPZmZzZXRfID0gdGhpcy5mb2N1c09mZnNldF8gPSBvZmZz
ZXQ7CisgIH0KKworICAvKioKKyAgICogQHB1YmxpYworICAgKiBAcGFyYW0geyFOb2RlfSBub2Rl
CisgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQKKyAgICovCisgIGV4dGVuZChub2RlLCBvZmZz
ZXQpIHsKKyAgICBjaGVja1ZhbGlkTm9kZUFuZE9mZnNldChub2RlLCBvZmZzZXQpOworICAgIHRo
aXMuZm9jdXNOb2RlXyA9IG5vZGU7CisgICAgdGhpcy5mb2N1c09mZnNldF8gPSBvZmZzZXQ7Cisg
IH0KKworICAvKiogQHB1YmxpYyBAcmV0dXJuIHs/Tm9kZX0gKi8KKyAgZ2V0IGFuY2hvck5vZGUo
KSB7CisgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuaXNOb25lLCAnU2VsZWN0aW9uIHNob3VsZCBu
b3QgYmUgYSBub25lLicpOworICAgIHJldHVybiB0aGlzLmFuY2hvck5vZGVfOworICB9CisgIC8q
KiBAcHVibGljIEByZXR1cm4ge251bWJlcn0gKi8KKyAgZ2V0IGFuY2hvck9mZnNldCgpIHsKKyAg
ICBjb25zb2xlLmFzc2VydCghdGhpcy5pc05vbmUsICdTZWxlY3Rpb24gc2hvdWxkIG5vdCBiZSBh
IG5vbmUuJyk7CisgICAgcmV0dXJuIHRoaXMuYW5jaG9yT2Zmc2V0XzsKKyAgfQorICAvKiogQHB1
YmxpYyBAcmV0dXJuIHs/Tm9kZX0gKi8KKyAgZ2V0IGZvY3VzTm9kZSgpIHsKKyAgICBjb25zb2xl
LmFzc2VydCghdGhpcy5pc05vbmUsICdTZWxlY3Rpb24gc2hvdWxkIG5vdCBiZSBhIG5vbmUuJyk7
CisgICAgcmV0dXJuIHRoaXMuZm9jdXNOb2RlXzsKKyAgfQorICAvKiogQHB1YmxpYyBAcmV0dXJu
IHtudW1iZXJ9ICovCisgIGdldCBmb2N1c09mZnNldCgpIHsKKyAgICBjb25zb2xlLmFzc2VydCgh
dGhpcy5pc05vbmUsICdTZWxlY3Rpb24gc2hvdWxkIG5vdCBiZSBhIG5vbmUuJyk7CisgICAgcmV0
dXJuIHRoaXMuZm9jdXNPZmZzZXRfOworICB9CisKKyAgLyoqIEBwdWJsaWMgQHJldHVybiB7SFRN
TEVsZW1lbnR9ICovCisgIGdldCBzaGFkb3dIb3N0KCkgeworICAgIHJldHVybiB0aGlzLnNoYWRv
d0hvc3RfOworICB9CisKKyAgLyoqCisgICAqIEBwdWJsaWMKKyAgICogQHJldHVybiB7Ym9vbGVh
bn0KKyAgICovCisgIGdldCBpc0NvbGxhcHNlZCgpIHsKKyAgICByZXR1cm4gdGhpcy5hbmNob3JO
b2RlID09PSB0aGlzLmZvY3VzTm9kZSAmJgorICAgICAgICB0aGlzLmFuY2hvck9mZnNldCA9PT0g
dGhpcy5mb2N1c09mZnNldDsKKyAgfQorCisgIC8qKgorICAgKiBAcHVibGljCisgICAqIEByZXR1
cm4ge2Jvb2xlYW59CisgICAqLworICBnZXQgaXNOb25lKCkgeyByZXR1cm4gdGhpcy5hbmNob3JO
b2RlXyA9PT0gbnVsbDsgfQorCisgIC8qKgorICAgKiBAcHVibGljCisgICAqIEBwYXJhbSB7IVNl
bGVjdGlvbn0gZG9tU2VsZWN0aW9uCisgICAqIEByZXR1cm4geyFTYW1wbGVTZWxlY3Rpb259Cisg
ICAqLworICBzdGF0aWMgZnJvbURPTVNlbGVjdGlvbihkb21TZWxlY3Rpb24pIHsKKyAgICAvKiog
dHlwZSB7IVNhbXBsZVNlbGVjdGlvbn0gKi8KKyAgICBjb25zdCBzZWxlY3Rpb24gPSBuZXcgU2Ft
cGxlU2VsZWN0aW9uKCk7CisgICAgc2VsZWN0aW9uLmFuY2hvck5vZGVfID0gZG9tU2VsZWN0aW9u
LmFuY2hvck5vZGU7CisgICAgc2VsZWN0aW9uLmFuY2hvck9mZnNldF8gPSBkb21TZWxlY3Rpb24u
YW5jaG9yT2Zmc2V0OworICAgIHNlbGVjdGlvbi5mb2N1c05vZGVfID0gZG9tU2VsZWN0aW9uLmZv
Y3VzTm9kZTsKKyAgICBzZWxlY3Rpb24uZm9jdXNPZmZzZXRfID0gZG9tU2VsZWN0aW9uLmZvY3Vz
T2Zmc2V0OworCisgICAgaWYgKHNlbGVjdGlvbi5hbmNob3JOb2RlXyA9PT0gbnVsbCkKKyAgICAg
IHJldHVybiBzZWxlY3Rpb247CisKKyAgICBjb25zdCBkb2N1bWVudCA9IHNlbGVjdGlvbi5hbmNo
b3JOb2RlXy5vd25lckRvY3VtZW50OworICAgIHNlbGVjdGlvbi5zaGFkb3dIb3N0XyA9ICgoKSA9
PiB7CisgICAgICAgIGlmICghZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkKKyAgICAgICAgICByZXR1
cm4gbnVsbDsKKyAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQubm9kZU5hbWUgIT09
IGtUZXh0QXJlYSkKKyAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgY29uc3Qgc2VsZWN0
ZWROb2RlID0KKyAgICAgICAgICAgIHNlbGVjdGlvbi5hbmNob3JOb2RlLmNoaWxkTm9kZXNbc2Vs
ZWN0aW9uLmFuY2hvck9mZnNldF07CisgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50
ICE9PSBzZWxlY3RlZE5vZGUpCisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIHJldHVy
biBzZWxlY3RlZE5vZGU7CisgICAgfSkoKTsKKyAgICByZXR1cm4gc2VsZWN0aW9uOworICB9CisK
KyAgLyoqIEBvdmVycmlkZSAqLworICB0b1N0cmluZygpIHsKKyAgICBpZiAodGhpcy5pc05vbmUp
CisgICAgICByZXR1cm4gJ1NhbXBsZVNlbGVjdGlvbigpJzsKKyAgICBpZiAodGhpcy5pc0NvbGxh
cHNlZCkKKyAgICAgIHJldHVybiBgU2FtcGxlU2VsZWN0aW9uKCR7dGhpcy5mb2N1c05vZGVffUAk
e3RoaXMuZm9jdXNPZmZzZXRffSlgOworICAgIHJldHVybiBgU2FtcGxlU2VsZWN0aW9uKGFuY2hv
cjogJHt0aGlzLmFuY2hvck5vZGVffUAke3RoaXMuYW5jaG9yT2Zmc2V0X31gICsKKyAgICAgICAg
YGZvY3VzOiAke3RoaXMuZm9jdXNOb2RlX31AJHt0aGlzLmZvY3VzT2Zmc2V0X31gOworICB9Cit9
CisKKy8vIEV4dHJhY3RzIHNlbGVjdGlvbiBmcm9tIG1hcmtlciAiXiIgYXMgYW5jaG9yIGFuZCAi
fCIgYXMgZm9jdXMgZnJvbQorLy8gRE9NIHRyZWUgYW5kIHJlbW92ZXMgdGhlbS4KK2NsYXNzIFBh
cnNlciB7CisgIC8qKiBAcHJpdmF0ZSAqLworICBjb25zdHJ1Y3RvcigpIHsKKyAgICAvKiogQHR5
cGUgez9Ob2RlfSAqLworICAgIHRoaXMuYW5jaG9yTm9kZV8gPSBudWxsOworICAgIC8qKiBAdHlw
ZSB7bnVtYmVyfSAqLworICAgIHRoaXMuYW5jaG9yT2Zmc2V0XyA9IDA7CisgICAgLyoqIEB0eXBl
IHs/Tm9kZX0gKi8KKyAgICB0aGlzLmZvY3VzTm9kZV8gPSBudWxsOworICAgIC8qKiBAdHlwZSB7
bnVtYmVyfSAqLworICAgIHRoaXMuZm9jdXNPZmZzZXRfID0gMDsKKyAgfQorCisgIC8qKgorICAg
KiBAcHVibGljCisgICAqIEByZXR1cm4geyFTYW1wbGVTZWxlY3Rpb259CisgICAqLworICBnZXQg
c2VsZWN0aW9uKCkgeworICAgIGNvbnN0IHNlbGVjdGlvbiA9IG5ldyBTYW1wbGVTZWxlY3Rpb24o
KTsKKyAgICBpZiAoIXRoaXMuYW5jaG9yTm9kZV8gJiYgIXRoaXMuZm9jdXNOb2RlXykKKyAgICAg
IHJldHVybiBzZWxlY3Rpb247CisgICAgaWYgKHRoaXMuYW5jaG9yTm9kZV8gJiYgdGhpcy5mb2N1
c05vZGVfKSB7CisgICAgICBzZWxlY3Rpb24uY29sbGFwc2UodGhpcy5hbmNob3JOb2RlXywgdGhp
cy5hbmNob3JPZmZzZXRfKTsKKyAgICAgIHNlbGVjdGlvbi5leHRlbmQodGhpcy5mb2N1c05vZGVf
LCB0aGlzLmZvY3VzT2Zmc2V0Xyk7CisgICAgICByZXR1cm4gc2VsZWN0aW9uOworICAgIH0KKyAg
ICBpZiAodGhpcy5mb2N1c05vZGVfKSB7CisgICAgICBzZWxlY3Rpb24uY29sbGFwc2UodGhpcy5m
b2N1c05vZGVfLCB0aGlzLmZvY3VzT2Zmc2V0Xyk7CisgICAgICByZXR1cm4gc2VsZWN0aW9uOwor
ICAgIH0KKyAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZXJlIGlzIG5vIGZvY3VzIG1hcmtlcicpOwor
ICB9CisKKyAgLyoqCisgICAqIEBwcml2YXRlCisgICAqIEBwYXJhbSB7IUNoYXJhY3RlckRhdGF9
IG5vZGUKKyAgICogQHBhcmFtIHtudW1iZXJ9IG5vZGVJbmRleAorICAgKi8KKyAgaGFuZGxlQ2hh
cmFjdGVyRGF0YShub2RlLCBub2RlSW5kZXgpIHsKKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8K
KyAgICBjb25zdCB0ZXh0ID0gbm9kZS5ub2RlVmFsdWU7CisgICAgLyoqIEB0eXBlIHtudW1iZXJ9
ICovCisgICAgY29uc3QgYW5jaG9yT2Zmc2V0ID0gdGV4dC5pbmRleE9mKCdeJyk7CisgICAgLyoq
IEB0eXBlIHtudW1iZXJ9ICovCisgICAgY29uc3QgZm9jdXNPZmZzZXQgPSB0ZXh0LmluZGV4T2Yo
J3wnKTsKKyAgICAvKiogQHR5cGUgeyFOb2RlfSAqLworICAgIGNvbnN0IHBhcmVudE5vZGUgPSBu
b2RlLnBhcmVudE5vZGU7CisgICAgbm9kZS5ub2RlVmFsdWUgPSB0ZXh0LnJlcGxhY2UoJ14nLCAn
JykucmVwbGFjZSgnfCcsICcnKTsKKyAgICBpZiAobm9kZS5ub2RlVmFsdWUubGVuZ3RoID09IDAp
IHsKKyAgICAgIGlmIChhbmNob3JPZmZzZXQgPj0gMCkKKyAgICAgICAgdGhpcy5yZW1lbWJlclNl
bGVjdGlvbkFuY2hvcihwYXJlbnROb2RlLCBub2RlSW5kZXgpOworICAgICAgaWYgKGZvY3VzT2Zm
c2V0ID49IDApCisgICAgICAgIHRoaXMucmVtZW1iZXJTZWxlY3Rpb25Gb2N1cyhwYXJlbnROb2Rl
LCBub2RlSW5kZXgpOworICAgICAgbm9kZS5yZW1vdmUoKTsKKyAgICAgIHJldHVybjsKKyAgICB9
CisgICAgaWYgKGFuY2hvck9mZnNldCA+PSAwICYmIGZvY3VzT2Zmc2V0ID49IDApIHsKKyAgICAg
IGlmIChhbmNob3JPZmZzZXQgPiBmb2N1c09mZnNldCkgeworICAgICAgICB0aGlzLnJlbWVtYmVy
U2VsZWN0aW9uQW5jaG9yKG5vZGUsIGFuY2hvck9mZnNldCAtIDEpOworICAgICAgICB0aGlzLnJl
bWVtYmVyU2VsZWN0aW9uRm9jdXMobm9kZSwgZm9jdXNPZmZzZXQpOworICAgICAgICByZXR1cm47
CisgICAgICB9CisgICAgICB0aGlzLnJlbWVtYmVyU2VsZWN0aW9uQW5jaG9yKG5vZGUsIGFuY2hv
ck9mZnNldCk7CisgICAgICB0aGlzLnJlbWVtYmVyU2VsZWN0aW9uRm9jdXMobm9kZSwgZm9jdXNP
ZmZzZXQgLSAxKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGFuY2hvck9mZnNldCA+
PSAwKSB7CisgICAgICB0aGlzLnJlbWVtYmVyU2VsZWN0aW9uQW5jaG9yKG5vZGUsIGFuY2hvck9m
ZnNldCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChmb2N1c09mZnNldCA8IDApCisg
ICAgICByZXR1cm47CisgICAgdGhpcy5yZW1lbWJlclNlbGVjdGlvbkZvY3VzKG5vZGUsIGZvY3Vz
T2Zmc2V0KTsKKyAgfQorCisgIC8qKgorICAgKiBAcHJpdmF0ZQorICAgKiBAcGFyYW0geyFFbGVt
ZW50fSBlbGVtZW50CisgICAqLworICBoYW5kbGVFbGVtZW50Tm9kZShlbGVtZW50KSB7CisgICAg
LyoqIEB0eXBlIHtudW1iZXJ9ICovCisgICAgbGV0IGNoaWxkSW5kZXggPSAwOworICAgIGZvciAo
Y29uc3QgY2hpbGQgb2YgQXJyYXkuZnJvbShlbGVtZW50LmNoaWxkTm9kZXMpKSB7CisgICAgICB0
aGlzLnBhcnNlSW50ZXJuYWwoY2hpbGQsIGNoaWxkSW5kZXgpOworICAgICAgaWYgKCFjaGlsZC5w
YXJlbnROb2RlKQorICAgICAgICBjb250aW51ZTsKKyAgICAgICsrY2hpbGRJbmRleDsKKyAgICB9
CisgIH0KKworICAvKioKKyAgICogQHByaXZhdGUKKyAgICogQHBhcmFtIHshTm9kZX0gbm9kZQor
ICAgKiBAcmV0dXJuIHshU2FtcGxlU2VsZWN0aW9ufQorICAgKi8KKyAgcGFyc2Uobm9kZSkgewor
ICAgIHRoaXMucGFyc2VJbnRlcm5hbChub2RlLCAwKTsKKyAgICByZXR1cm4gdGhpcy5zZWxlY3Rp
b247CisgIH0KKworICAvKioKKyAgICogQHByaXZhdGUKKyAgICogQHBhcmFtIHshTm9kZX0gbm9k
ZQorICAgKiBAcGFyYW0ge251bWJlcn0gbm9kZUluZGV4CisgICAqLworICBwYXJzZUludGVybmFs
KG5vZGUsIG5vZGVJbmRleCkgeworICAgIGlmIChpc0VsZW1lbnQobm9kZSkpCisgICAgICByZXR1
cm4gdGhpcy5oYW5kbGVFbGVtZW50Tm9kZShub2RlKTsKKyAgICBpZiAoaXNDaGFyYWN0ZXJEYXRh
KG5vZGUpKQorICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlQ2hhcmFjdGVyRGF0YShub2RlLCBub2Rl
SW5kZXgpOworICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBub2RlICR7bm9kZX1gKTsK
KyAgfQorCisgIC8qKgorICAgKiBAcHJpdmF0ZQorICAgKiBAcGFyYW0geyFOb2RlfSBub2RlCisg
ICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQKKyAgICovCisgIHJlbWVtYmVyU2VsZWN0aW9uQW5j
aG9yKG5vZGUsIG9mZnNldCkgeworICAgIGNoZWNrVmFsaWROb2RlQW5kT2Zmc2V0KG5vZGUsIG9m
ZnNldCk7CisgICAgY29uc29sZS5hc3NlcnQoCisgICAgICAgIHRoaXMuYW5jaG9yTm9kZV8gPT09
IG51bGwsICdBbmNob3IgbWFya2VyIHNob3VsZCBiZSBvbmUuJywKKyAgICAgICAgdGhpcy5hbmNo
b3JOb2RlXywgdGhpcy5hbmNob3JPZmZzZXRfKTsKKyAgICB0aGlzLmFuY2hvck5vZGVfID0gbm9k
ZTsKKyAgICB0aGlzLmFuY2hvck9mZnNldF8gPSBvZmZzZXQ7CisgIH0KKworICAvKioKKyAgICog
QHByaXZhdGUKKyAgICogQHBhcmFtIHshTm9kZX0gbm9kZQorICAgKiBAcGFyYW0ge251bWJlcn0g
b2Zmc2V0CisgICAqLworICByZW1lbWJlclNlbGVjdGlvbkZvY3VzKG5vZGUsIG9mZnNldCkgewor
ICAgIGNoZWNrVmFsaWROb2RlQW5kT2Zmc2V0KG5vZGUsIG9mZnNldCk7CisgICAgY29uc29sZS5h
c3NlcnQoCisgICAgICAgIHRoaXMuZm9jdXNOb2RlXyA9PT0gbnVsbCwgJ0ZvY3VzIG1hcmtlciBz
aG91bGQgYmUgb25lLicsCisgICAgICAgIHRoaXMuZm9jdXNOb2RlXywgdGhpcy5mb2N1c09mZnNl
dF8pOworICAgIHRoaXMuZm9jdXNOb2RlXyA9IG5vZGU7CisgICAgdGhpcy5mb2N1c09mZnNldF8g
PSBvZmZzZXQ7CisgIH0KKworICAvKioKKyAgICogQHB1YmxpYworICAgKiBAcGFyYW0geyFOb2Rl
fSBub2RlCisgICAqIEByZXR1cm4geyFTYW1wbGVTZWxlY3Rpb259CisgICAqLworICBzdGF0aWMg
cGFyc2Uobm9kZSkgeyByZXR1cm4gKG5ldyBQYXJzZXIoKSkucGFyc2Uobm9kZSk7IH0KK30KKwor
Ly8gVE9ETyh5b3Npbik6IE9uY2Ugd2UgY2FuIGltcG9ydCBKYXZhU2NyaXB0IGZpbGUgZnJvbSBz
Y3JpcHRzLCB3ZSBzaG91bGQKKy8vIGltcG9ydCAiZXh0ZXJuYWwvd3B0L2h0bWwvcmVzb3VyY2Vz
L2NvbW1vbi5qcyIsIHNpbmNlIHxIVE1MNV9WT0lEX0VMRU1FTlRTfAorLy8gaXMgZGVmaW5lZCBp
biB0aGVyZS4KKy8qKgorICogQGNvbnN0IEB0eXBlIHshU2V0PHN0cmluZz59CisgKiBvbmx5IHZv
aWQgKHdpdGhvdXQgZW5kIHRhZykgSFRNTDUgZWxlbWVudHMKKyAqLworY29uc3QgSFRNTDVfVk9J
RF9FTEVNRU5UUyA9IG5ldyBTZXQoWworICAnYXJlYScsICdiYXNlJywgJ2JyJywgJ2NvbCcsICdj
b21tYW5kJywgJ2VtYmVkJywgJ2hyJywgJ2ltZycsICdpbnB1dCcsCisgICdrZXlnZW4nLCAnbGlu
aycsICdtZXRhJywgJ3BhcmFtJywgJ3NvdXJjZScsJ3RyYWNrJywgJ3dicicgXSk7CisKK2NsYXNz
IFNlcmlhbGl6ZXIgeworICAvKioKKyAgICogQHB1YmxpYworICAgKiBAcGFyYW0geyFTYW1wbGVT
ZWxlY3Rpb259IHNlbGVjdGlvbgorICAgKiBAcGFyYW0geyFUcmF2ZXJzYWx9IHRyYXZlcnNhbAor
ICAgKi8KKyAgY29uc3RydWN0b3Ioc2VsZWN0aW9uLCB0cmF2ZXJzYWwpIHsKKyAgICAvKiogQHR5
cGUgeyFTYW1wbGVTZWxlY3Rpb259ICovCisgICAgdGhpcy5zZWxlY3Rpb25fID0gc2VsZWN0aW9u
OworICAgIC8qKiBAdHlwZSB7IUFycmF5PHN0cmluZ3M+fSAqLworICAgIHRoaXMuc3RyaW5nc18g
PSBbXTsKKyAgICAvKiogQHR5cGUgeyFUcmF2ZXJzYWx9ICovCisgICAgdGhpcy50cmF2ZXJzYWxf
ID0gdHJhdmVyc2FsOworICB9CisKKyAgLyoqCisgICAqIEBwcml2YXRlCisgICAqIEBwYXJhbSB7
c3RyaW5nfSBzdHJpbmcKKyAgICovCisgIGVtaXQoc3RyaW5nKSB7IHRoaXMuc3RyaW5nc18ucHVz
aChzdHJpbmcpOyB9CisKKyAgLyoqCisgICAqIEBwcml2YXRlCisgICAqIEBwYXJhbSB7IUhUTUxF
bGVtZW50fSBwYXJlbnROb2RlCisgICAqIEBwYXJhbSB7bnVtYmVyfSBjaGlsZEluZGV4CisgICAq
LworICBoYW5kbGVTZWxlY3Rpb24ocGFyZW50Tm9kZSwgY2hpbGRJbmRleCkgeworICAgIGlmICh0
aGlzLnNlbGVjdGlvbl8uaXNOb25lKQorICAgICAgcmV0dXJuOworICAgIGlmICh0aGlzLnNlbGVj
dGlvbl8uc2hhZG93SG9zdCkKKyAgICAgIHJldHVybjsKKyAgICBpZiAocGFyZW50Tm9kZSA9PT0g
dGhpcy5zZWxlY3Rpb25fLmZvY3VzTm9kZSAmJgorICAgICAgICBjaGlsZEluZGV4ID09PSB0aGlz
LnNlbGVjdGlvbl8uZm9jdXNPZmZzZXQpIHsKKyAgICAgIHRoaXMuZW1pdCgnfCcpOworICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBpZiAocGFyZW50Tm9kZSA9PT0gdGhpcy5zZWxlY3Rpb25fLmFu
Y2hvck5vZGUgJiYKKyAgICAgICAgY2hpbGRJbmRleCA9PT0gdGhpcy5zZWxlY3Rpb25fLmFuY2hv
ck9mZnNldCkgeworICAgICAgdGhpcy5lbWl0KCdeJyk7CisgICAgfQorICB9CisKKyAgLyoqCisg
ICAqIEBwcml2YXRlCisgICAqIEBwYXJhbSB7IUNoYXJhY3RlckRhdGF9IG5vZGUKKyAgICovCisg
IGhhbmRsZUNoYXJhY3RlckRhdGEobm9kZSkgeworICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLwor
ICAgIGNvbnN0IHRleHQgPSBub2RlLm5vZGVWYWx1ZTsKKyAgICBpZiAodGhpcy5zZWxlY3Rpb25f
LmlzTm9uZSkKKyAgICAgIHJldHVybiB0aGlzLmVtaXQodGV4dCk7CisgICAgLyoqIEB0eXBlIHtu
dW1iZXJ9ICovCisgICAgY29uc3QgYW5jaG9yT2Zmc2V0ID0gdGhpcy5zZWxlY3Rpb25fLmFuY2hv
ck9mZnNldDsKKyAgICAvKiogQHR5cGUge251bWJlcn0gKi8KKyAgICBjb25zdCBmb2N1c09mZnNl
dCA9IHRoaXMuc2VsZWN0aW9uXy5mb2N1c09mZnNldDsKKyAgICBpZiAobm9kZSA9PT0gdGhpcy5z
ZWxlY3Rpb25fLmZvY3VzTm9kZSAmJgorICAgICAgICBub2RlID09PSB0aGlzLnNlbGVjdGlvbl8u
YW5jaG9yTm9kZSkgeworICAgICAgaWYgKGFuY2hvck9mZnNldCA9PT0gZm9jdXNPZmZzZXQpIHsK
KyAgICAgICAgdGhpcy5lbWl0KHRleHQuc3Vic3RyKDAsIGZvY3VzT2Zmc2V0KSk7CisgICAgICAg
IHRoaXMuZW1pdCgnfCcpOworICAgICAgICB0aGlzLmVtaXQodGV4dC5zdWJzdHIoZm9jdXNPZmZz
ZXQpKTsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgaWYgKGFuY2hvck9mZnNldCA8
IGZvY3VzT2Zmc2V0KSB7CisgICAgICAgIHRoaXMuZW1pdCh0ZXh0LnN1YnN0cigwLCBhbmNob3JP
ZmZzZXQpKTsKKyAgICAgICAgdGhpcy5lbWl0KCdeJyk7CisgICAgICAgIHRoaXMuZW1pdCh0ZXh0
LnN1YnN0cihhbmNob3JPZmZzZXQsIGZvY3VzT2Zmc2V0IC0gYW5jaG9yT2Zmc2V0KSk7CisgICAg
ICAgIHRoaXMuZW1pdCgnfCcpOworICAgICAgICB0aGlzLmVtaXQodGV4dC5zdWJzdHIoZm9jdXNP
ZmZzZXQpKTsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgdGhpcy5lbWl0KHRleHQu
c3Vic3RyKDAsIGZvY3VzT2Zmc2V0KSk7CisgICAgICB0aGlzLmVtaXQoJ3wnKTsKKyAgICAgIHRo
aXMuZW1pdCh0ZXh0LnN1YnN0cihmb2N1c09mZnNldCwgYW5jaG9yT2Zmc2V0IC0gZm9jdXNPZmZz
ZXQpKTsKKyAgICAgIHRoaXMuZW1pdCgnXicpOworICAgICAgdGhpcy5lbWl0KHRleHQuc3Vic3Ry
KGFuY2hvck9mZnNldCkpOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobm9kZSA9PT0g
dGhpcy5zZWxlY3Rpb25fLmFuY2hvck5vZGUpIHsKKyAgICAgIHRoaXMuZW1pdCh0ZXh0LnN1YnN0
cigwLCBhbmNob3JPZmZzZXQpKTsKKyAgICAgIHRoaXMuZW1pdCgnXicpOworICAgICAgdGhpcy5l
bWl0KHRleHQuc3Vic3RyKGFuY2hvck9mZnNldCkpOworICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBpZiAobm9kZSA9PT0gdGhpcy5zZWxlY3Rpb25fLmZvY3VzTm9kZSkgeworICAgICAgdGhpcy5l
bWl0KHRleHQuc3Vic3RyKDAsIGZvY3VzT2Zmc2V0KSk7CisgICAgICB0aGlzLmVtaXQoJ3wnKTsK
KyAgICAgIHRoaXMuZW1pdCh0ZXh0LnN1YnN0cihmb2N1c09mZnNldCkpOworICAgICAgcmV0dXJu
OworICAgIH0KKyAgICB0aGlzLmVtaXQodGV4dCk7CisgIH0KKworICAvKioKKyAgICogQHByaXZh
dGUKKyAgICogQHBhcmFtIHshSFRNTEVsZW1lbnR9IGVsZW1lbnQKKyAgICovCisgIGhhbmRsZUVs
ZW1lbnROb2RlKGVsZW1lbnQpIHsKKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8KKyAgICBjb25z
dCB0YWdOYW1lID0gZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7CisgICAgdGhpcy5lbWl0
KGA8JHt0YWdOYW1lfWApOworICAgIEFycmF5LmZyb20oZWxlbWVudC5hdHRyaWJ1dGVzKQorICAg
ICAgICAuc29ydCgoYXR0cjEsIGF0dHIyKSA9PiBhdHRyMS5uYW1lLmxvY2FsZUNvbXBhcmUoYXR0
cjIubmFtZSkpCisgICAgICAgIC5mb3JFYWNoKGF0dHIgPT4geworICAgICAgICAgIGlmIChhdHRy
LnZhbHVlID09PSAnJykKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmVtaXQoYCAke2F0dHIubmFt
ZX1gKTsKKyAgICAgICAgICBjb25zdCB2YWx1ZSA9IGF0dHIudmFsdWUucmVwbGFjZSgvJi9nLCAn
JmFtcDsnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cdTAwMjIvZywg
JyZxdW90OycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1x1MDAyNy9n
LCAnJmFwb3M7Jyk7CisgICAgICAgICAgdGhpcy5lbWl0KGAgJHthdHRyLm5hbWV9PSIke3ZhbHVl
fSJgKTsKKyAgICAgICAgfSk7CisgICAgdGhpcy5lbWl0KCc+Jyk7CisgICAgaWYgKGVsZW1lbnQu
bm9kZU5hbWUgPT09IGtUZXh0QXJlYSkKKyAgICAgIHJldHVybiB0aGlzLmhhbmRsZVRleHRBcmVh
KGVsZW1lbnQpOworICAgIGlmICh0aGlzLnRyYXZlcnNhbF8uZmlyc3RDaGlsZE9mKGVsZW1lbnQp
ID09PSBudWxsICYmCisgICAgICAgIEhUTUw1X1ZPSURfRUxFTUVOVFMuaGFzKHRhZ05hbWUpKSB7
CisgICAgICByZXR1cm47CisgICAgfQorICAgIHRoaXMuc2VyaWFsaXplQ2hpbGRyZW4oZWxlbWVu
dCk7CisgICAgdGhpcy5lbWl0KGA8LyR7dGFnTmFtZX0+YCk7CisgIH0KKworICAvKioKKyAgICog
QHByaXZhdGUKKyAgICogQHBhcmFtIHshSFRNTFRleHRBcmVhfQorICAgKi8KKyAgaGFuZGxlVGV4
dEFyZWEodGV4dEFyZWEpIHsKKyAgICAvKiogQHR5cGUge3N0cmluZ30gKi8KKyAgICBjb25zdCB2
YWx1ZSA9IHRleHRBcmVhLnZhbHVlOworICAgIGlmICh0aGlzLnNlbGVjdGlvbl8uc2hhZG93SG9z
dCAhPT0gdGV4dEFyZWEpIHsKKyAgICAgIHRoaXMuZW1pdCh2YWx1ZSk7CisgICAgfSBlbHNlIHsK
KyAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLworICAgICAgY29uc3Qgc3RhcnQgPSB0ZXh0QXJl
YS5zZWxlY3Rpb25TdGFydDsKKyAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLworICAgICAgY29u
c3QgZW5kID0gdGV4dEFyZWEuc2VsZWN0aW9uRW5kOworICAgICAgLyoqIEB0eXBlIHtib29sZWFu
fSAqLworICAgICAgY29uc3QgaXNCYWNrd2FyZCA9IHN0YXJ0IDwgZW5kICYmCisgICAgICAgICAg
ICAgICAgICAgICAgICAgdGV4dEFyZWEuc2VsZWN0aW9uRGlyZWN0aW9uID09PSAnYmFja3dhcmQn
OworICAgICAgY29uc3Qgc3RhcnRNYXJrZXIgPSBpc0JhY2t3YXJkID8gJ3wnIDogJ14nOworICAg
ICAgY29uc3QgZW5kTWFya2VyID0gaXNCYWNrd2FyZCA/ICdeJyA6ICd8JzsKKyAgICAgIHRoaXMu
ZW1pdCh2YWx1ZS5zdWJzdHIoMCwgc3RhcnQpKTsKKyAgICAgIGlmIChzdGFydCA8IGVuZCkgewor
ICAgICAgICB0aGlzLmVtaXQoc3RhcnRNYXJrZXIpOworICAgICAgICB0aGlzLmVtaXQodmFsdWUu
c3Vic3RyKHN0YXJ0LCBlbmQgLSBzdGFydCkpOworICAgICAgfQorICAgICAgdGhpcy5lbWl0KGVu
ZE1hcmtlcik7CisgICAgICB0aGlzLmVtaXQodmFsdWUuc3Vic3RyKGVuZCkpOworICAgIH0KKyAg
ICB0aGlzLmVtaXQoJzwvdGV4dGFyZWE+Jyk7CisgIH0KKworICAvKioKKyAgICogQHB1YmxpYwor
ICAgKiBAcGFyYW0geyFIVE1MRG9jdW1lbnR9IGRvY3VtZW50CisgICAqIEBwYXJhbSB7Ym9vbGVh
bn0gZHVtcEZyb21Sb290CisgICAqLworICBzZXJpYWxpemUoZG9jdW1lbnQsIGR1bXBGcm9tUm9v
dCkgeworICAgIGlmIChkb2N1bWVudC5ib2R5ICYmICFkdW1wRnJvbVJvb3QpCisgICAgICAgIHRo
aXMuc2VyaWFsaXplQ2hpbGRyZW4oZG9jdW1lbnQuYm9keSk7CisgICAgZWxzZQorICAgICAgICB0
aGlzLnNlcmlhbGl6ZUludGVybmFsKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7CisgICAgcmV0
dXJuIHRoaXMuc3RyaW5nc18uam9pbignJyk7CisgIH0KKworICAvKioKKyAgICogQHByaXZhdGUK
KyAgICogQHBhcmFtIHshSFRNTEVsZW1lbnR9IGVsZW1lbnQKKyAgICovCisgIHNlcmlhbGl6ZUNo
aWxkcmVuKGVsZW1lbnQpIHsKKyAgICBpZiAodGhpcy50cmF2ZXJzYWxfLmZpcnN0Q2hpbGRPZihl
bGVtZW50KSA9PT0gbnVsbCkgeworICAgICAgdGhpcy5oYW5kbGVTZWxlY3Rpb24oZWxlbWVudCwg
MCk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovCisg
ICAgbGV0IGNoaWxkSW5kZXggPSAwOworICAgIGZvciAobGV0IGNoaWxkIG9mIHRoaXMudHJhdmVy
c2FsXy5jaGlsZE5vZGVzT2YoZWxlbWVudCkpIHsKKyAgICAgIHRoaXMuaGFuZGxlU2VsZWN0aW9u
KGVsZW1lbnQsIGNoaWxkSW5kZXgpOworICAgICAgdGhpcy5zZXJpYWxpemVJbnRlcm5hbChjaGls
ZCwgY2hpbGRJbmRleCk7CisgICAgICArK2NoaWxkSW5kZXg7CisgICAgfQorICAgIHRoaXMuaGFu
ZGxlU2VsZWN0aW9uKGVsZW1lbnQsIGNoaWxkSW5kZXgpOworICB9CisKKyAgLyoqCisgICAqIEBw
cml2YXRlCisgICAqIEBwYXJhbSB7IU5vZGV9IG5vZGUKKyAgICovCisgIHNlcmlhbGl6ZUludGVy
bmFsKG5vZGUpIHsKKyAgICBpZiAoaXNFbGVtZW50KG5vZGUpKQorICAgICAgcmV0dXJuIHRoaXMu
aGFuZGxlRWxlbWVudE5vZGUobm9kZSk7CisgICAgaWYgKGlzQ2hhcmFjdGVyRGF0YShub2RlKSkK
KyAgICAgIHJldHVybiB0aGlzLmhhbmRsZUNoYXJhY3RlckRhdGEobm9kZSk7CisgICAgdGhyb3cg
bmV3IEVycm9yKGBVbmV4cGVjdGVkIG5vZGUgJHtub2RlfWApOworICB9Cit9CisKKy8qKgorICog
QHRoaXMgeyFET01TZWxlY3Rpb259CisgKiBAcGFyYW0ge3N0cmluZ30gaHRtbAorICogQHBhcmFt
IHtzdHJpbmc9fSBvcHRfdGV4dAorICovCitmdW5jdGlvbiBzZXRDbGlwYm9hcmREYXRhKGh0bWws
IG9wdF90ZXh0KSB7CisgIGFzc2VydF9ub3RfZXF1YWxzKHdpbmRvdy5pbnRlcm5hbHMsIHVuZGVm
aW5lZCwKKyAgICAnVGhpcyB0ZXN0IHJlcXVlc3RzIGNsaXBib2FyZCBhY2Nlc3MgZnJvbSBKYXZh
U2NyaXB0LicpOworICBmdW5jdGlvbiBjb21wdXRlVGV4dERhdGEoKSB7CisgICAgaWYgKG9wdF90
ZXh0ICE9PSB1bmRlZmluZWQpCisgICAgICByZXR1cm4gb3B0X3RleHQ7CisgICAgY29uc3QgZWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGVsZW1lbnQuaW5uZXJI
VE1MID0gaHRtbDsKKyAgICByZXR1cm4gZWxlbWVudC50ZXh0Q29udGVudDsKKyAgfQorICBmdW5j
dGlvbiBjb3B5SGFuZGxlcihldmVudCkgeworICAgIGNvbnN0IGNsaXBib2FyZERhdGEgPSBldmVu
dC5jbGlwYm9hcmREYXRhOworICAgIGNsaXBib2FyZERhdGEuc2V0RGF0YSgndGV4dC9wbGFpbics
IGNvbXB1dGVUZXh0RGF0YSgpKTsKKyAgICBjbGlwYm9hcmREYXRhLnNldERhdGEoJ3RleHQvaHRt
bCcsIGh0bWwpOworICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgIH0KKyAgZG9jdW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcignY29weScsIGNvcHlIYW5kbGVyKTsKKyAgZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoJ2NvcHknKTsKKyAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY29weScsIGNv
cHlIYW5kbGVyKTsKK30KKworY2xhc3MgU2FtcGxlIHsKKyAgLyoqCisgICAqIEBwdWJsaWMKKyAg
ICogQHBhcmFtIHtzdHJpbmd9IHNhbXBsZVRleHQKKyAgICovCisgIGNvbnN0cnVjdG9yKHNhbXBs
ZVRleHQpIHsKKyAgICAvKiogQGNvbnN0IEB0eXBlIHshSFRNTElGYW1lfSAqLworICAgIHRoaXMu
aWZyYW1lXyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOworICAgIGlmICghZG9j
dW1lbnQuYm9keSkKKyAgICAgICAgZG9jdW1lbnQuYm9keSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImJvZHkiKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuaWZyYW1lXyk7
CisgICAgLyoqIEBjb25zdCBAdHlwZSB7IUhUTUxEb2N1bWVudH0gKi8KKyAgICB0aGlzLmRvY3Vt
ZW50XyA9IHRoaXMuaWZyYW1lXy5jb250ZW50RG9jdW1lbnQ7CisKKyAgICAvLyBTZXQgZm9jdXMg
dG8gc2FtcGxlIElGUkFNRSB0byBtYWtlIHxldmVudFNlbmRlcnwgYW5kCisgICAgLy8gfHRlc3RS
dW5uZXIuZXhlY0NvbW1hbmQoKXwgdG8gd29yayBvbiBzYW1wbGUgcmF0aGVyIHRoYW4gbWFpbiBm
cmFtZS4KKyAgICB0aGlzLmlmcmFtZV8uZm9jdXMoKTsKKyAgICAvKiogQGNvbnN0IEB0eXBlIHsh
U2VsZWN0aW9ufSAqLworICAgIHRoaXMuc2VsZWN0aW9uXyA9IHRoaXMuaWZyYW1lXy5jb250ZW50
V2luZG93LmdldFNlbGVjdGlvbigpOworICAgIHRoaXMuc2VsZWN0aW9uXy5kb2N1bWVudCA9IHRo
aXMuZG9jdW1lbnRfOworICAgIHRoaXMuc2VsZWN0aW9uXy5kb2N1bWVudC5vZmZzZXRMZWZ0ID0g
dGhpcy5pZnJhbWVfLm9mZnNldExlZnQ7CisgICAgdGhpcy5zZWxlY3Rpb25fLmRvY3VtZW50Lm9m
ZnNldFRvcCA9IHRoaXMuaWZyYW1lXy5vZmZzZXRUb3A7CisgICAgdGhpcy5zZWxlY3Rpb25fLnNl
dENsaXBib2FyZERhdGEgPSBzZXRDbGlwYm9hcmREYXRhOworICAgIHRoaXMubG9hZChzYW1wbGVU
ZXh0KTsKKyAgfQorCisgIC8qKiBAcmV0dXJuIHshSFRNTERvY3VtZW50fSAqLworICBnZXQgZG9j
dW1lbnQoKSB7IHJldHVybiB0aGlzLmRvY3VtZW50XzsgfQorCisgIC8qKiBAcmV0dXJuIHshU2Vs
ZWN0aW9ufSAqLworICBnZXQgc2VsZWN0aW9uKCkgeyByZXR1cm4gdGhpcy5zZWxlY3Rpb25fOyB9
CisKKyAgLyoqCisgICAqIEBwcml2YXRlCisgICAqIEBwYXJhbSB7c3RyaW5nfSBzYW1wbGVUZXh0
CisgICAqLworICBsb2FkKHNhbXBsZVRleHQpIHsKKyAgICBjb25zdCBhbmNob3JNYXJrZXIgPSBz
YW1wbGVUZXh0LmluZGV4T2YoJ14nKTsKKyAgICBjb25zdCBmb2N1c01hcmtlciA9IHNhbXBsZVRl
eHQuaW5kZXhPZignfCcpOworICAgIGlmIChmb2N1c01hcmtlciA8IDAgJiYgYW5jaG9yTWFya2Vy
ID49IDApIHsKKyAgICAgIHRocm93IG5ldyBFcnJvcihgWW91IHNob3VsZCBzcGVjaWZ5IGNhcmV0
IHBvc2l0aW9uIGluICIke3NhbXBsZVRleHR9Ii5gKTsKKyAgICB9CisgICAgaWYgKGZvY3VzTWFy
a2VyICE9IHNhbXBsZVRleHQubGFzdEluZGV4T2YoJ3wnKSkgeworICAgICAgdGhyb3cgbmV3IEVy
cm9yKAorICAgICAgICAgIGBZb3Ugc2hvdWxkIGhhdmUgYXQgbGVhc3Qgb25lIGZvY3VzIG1hcmtl
ciAifCIgaW4gIiR7c2FtcGxlVGV4dH0iLmApOworICAgIH0KKyAgICBpZiAoYW5jaG9yTWFya2Vy
ICE9IHNhbXBsZVRleHQubGFzdEluZGV4T2YoJ14nKSkgeworICAgICAgdGhyb3cgbmV3IEVycm9y
KAorICAgICAgICAgIGBZb3Ugc2hvdWxkIGhhdmUgYXQgbW9zdCBvbmUgYW5jaG9yIG1hcmtlciAi
XiIgaW4gIiR7c2FtcGxlVGV4dH0iLmApOworICAgIH0KKyAgICBpZiAoYW5jaG9yTWFya2VyID49
IDAgJiYgZm9jdXNNYXJrZXIgPj0gMCAmJgorICAgICAgICAoYW5jaG9yTWFya2VyICsgMSA9PT0g
Zm9jdXNNYXJrZXIgfHwgYW5jaG9yTWFya2VyIC0gMSA9PT0gZm9jdXNNYXJrZXIpKSB7CisgICAg
ICB0aHJvdyBuZXcgRXJyb3IoCisgICAgICAgICAgYFlvdSBzaG91bGQgaGF2ZSBmb2N1cyBtYXJr
ZXIgYW5kIHNob3VsZCBub3QgaGF2ZSBhbmNob3IgbWFya2VyIGlmIGFuZCBvbmx5IGlmIHNlbGVj
dGlvbiBpcyBhIGNhcmV0IGluICIke3NhbXBsZVRleHR9Ii5gKTsKKyAgICB9CisgICAgdGhpcy5k
b2N1bWVudF8uYm9keS5pbm5lckhUTUwgPSBzYW1wbGVUZXh0OworICAgIC8qKiBAdHlwZSB7IVNh
bXBsZVNlbGVjdGlvbn0gKi8KKyAgICBjb25zdCBzZWxlY3Rpb24gPSBQYXJzZXIucGFyc2UodGhp
cy5kb2N1bWVudF8uYm9keSk7CisgICAgaWYgKHNlbGVjdGlvbi5pc05vbmUpCisgICAgICByZXR1
cm47CisgICAgaWYgKHRoaXMubG9hZFNlbGVjdGlvbkluVGV4dEFyZWEoc2VsZWN0aW9uKSkKKyAg
ICAgIHJldHVybjsKKyAgICB0aGlzLnNlbGVjdGlvbl8uY29sbGFwc2Uoc2VsZWN0aW9uLmFuY2hv
ck5vZGUsIHNlbGVjdGlvbi5hbmNob3JPZmZzZXQpOworICAgIGlmICh0aGlzLnNlbGVjdGlvbl8u
cmFuZ2VDb3VudCA+IDApCisgICAgICB0aGlzLnNlbGVjdGlvbl8uZXh0ZW5kKHNlbGVjdGlvbi5m
b2N1c05vZGUsIHNlbGVjdGlvbi5mb2N1c09mZnNldCk7CisgIH0KKworICAvKioKKyAgICogQHBy
aXZhdGUKKyAgICogQHBhcmFtIHshU2FtcGxlU2VsZWN0aW9ufSBzZWxlY3Rpb24KKyAgICogQHJl
dHVybiB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIHNlbGVjdGlvbiBpcyBpbiBURVhUQVJFQS4K
KyAgICovCisgIGxvYWRTZWxlY3Rpb25JblRleHRBcmVhKHNlbGVjdGlvbikgeworICAgIC8qKiBA
dHlwZSB7Tm9kZX0gKi8KKyAgICBjb25zdCBlbmNsb3NpbmdOb2RlID0gc2VsZWN0aW9uLmFuY2hv
ck5vZGUucGFyZW50Tm9kZTsKKyAgICBpZiAoc2VsZWN0aW9uLmZvY3VzTm9kZS5wYXJlbnROb2Rl
ICE9PSBlbmNsb3NpbmdOb2RlKQorICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChlbmNsb3Np
bmdOb2RlLm5vZGVOYW1lICE9PSBrVGV4dEFyZWEpCisgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKHNlbGVjdGlvbi5hbmNob3JOb2RlICE9PSBzZWxlY3Rpb24uZm9jdXNOb2RlKQorICAgICAg
dGhyb3cgbmV3IEVycm9yKCdTZWxlY3Rpb24gaW4gVEVYVEFSRUEgc2hvdWxkIGJlIGluIHNhbWUg
VGV4dCBub2RlLicpOworICAgIGVuY2xvc2luZ05vZGUuZm9jdXMoKTsKKyAgICBpZiAoc2VsZWN0
aW9uLmFuY2hvck9mZnNldCA8IHNlbGVjdGlvbi5mb2N1c09mZnNldCkgeworICAgICAgZW5jbG9z
aW5nTm9kZS5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb24uZm9jdXNPZmZzZXQpOwor
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVuY2xvc2luZ05vZGUuc2V0U2VsZWN0aW9u
UmFuZ2Uoc2VsZWN0aW9uLmZvY3VzT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZWN0aW9uLmFuY2hvck9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdiYWNrd2FyZCcpOworICAgIHJldHVybiB0cnVlOworICB9CisKKyAgLyoq
CisgICAqIEBwdWJsaWMKKyAgICovCisgIHJlbW92ZSgpIHsgdGhpcy5pZnJhbWVfLnJlbW92ZSgp
OyB9CisKKyAgLyoqCisgICAqIEBwdWJsaWMKKyAgICogQHBhcmFtIHshVHJhdmVyc2FsfSB0cmF2
ZXJzYWwKKyAgICogQHBhcmFtIHtib29sZWFufSBkdW1wRnJvbVJvb3QKKyAgICogQHJldHVybiB7
c3RyaW5nfQorICAgKi8KKyAgc2VyaWFsaXplKHRyYXZlcnNhbCwgZHVtcEZyb21Sb290KSB7Cisg
ICAgLyoqIEB0eXBlIHshU2FtcGxlU2VsZWN0aW9ufSAqLworICAgIGNvbnN0IHNlbGVjdGlvbiA9
IHRyYXZlcnNhbC5mcm9tRE9NU2VsZWN0aW9uKHRoaXMuc2VsZWN0aW9uXyk7CisgICAgLyoqIEB0
eXBlIHshU2VyaWFsaXplcn0gKi8KKyAgICBjb25zdCBzZXJpYWxpemVyID0gbmV3IFNlcmlhbGl6
ZXIoc2VsZWN0aW9uLCB0cmF2ZXJzYWwpOworICAgIHJldHVybiBzZXJpYWxpemVyLnNlcmlhbGl6
ZSh0aGlzLmRvY3VtZW50XywgZHVtcEZyb21Sb290KTsKKyAgfQorfQorCitmdW5jdGlvbiBhc3Nl
bWJsZURlc2NyaXB0aW9uKCkgeworICBmdW5jdGlvbiBnZXRTdGFjaygpIHsKKyAgICBsZXQgc3Rh
Y2s7CisgICAgdHJ5IHsKKyAgICAgIHRocm93IG5ldyBFcnJvcignZ2V0IGxpbmUgbnVtYmVyJyk7
CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgIHN0YWNrID0gZXJyb3Iuc3RhY2suc3BsaXQo
J1xuJykuc2xpY2UoMSk7CisgICAgfQorICAgIHJldHVybiBzdGFjaworICB9CisKKyAgY29uc3Qg
UkVfSU5fQVNTRVJUX1NFTEVDVElPTiA9IG5ldyBSZWdFeHAoJ2Fzc2VydF9zZWxlY3Rpb25cXC5q
cycpOworICBmb3IgKGNvbnN0IGxpbmUgb2YgZ2V0U3RhY2soKSkgeworICAgIGNvbnN0IG1hdGNo
ID0gUkVfSU5fQVNTRVJUX1NFTEVDVElPTi5leGVjKGxpbmUpOworICAgIGlmICghbWF0Y2gpIHsK
KyAgICAgIGNvbnN0IFJFX0xBWU9VVFRFU1RTID0gbmV3IFJlZ0V4cCgnTGF5b3V0VGVzdHMuKicp
OworICAgICAgcmV0dXJuIFJFX0xBWU9VVFRFU1RTLmV4ZWMobGluZSk7CisgICAgfQorICB9Cisg
IHJldHVybiAnJzsKK30KKworLyoqCisgKiBAcGFyYW0ge3N0cmluZ30gZXhwZWN0ZWRUZXh0Cisg
Ki8KK2Z1bmN0aW9uIGNoZWNrRXhwZWN0ZWRUZXh0KGV4cGVjdGVkVGV4dCkgeworICAvKiogQHR5
cGUge251bWJlcn0gKi8KKyAgY29uc3QgYW5jaG9yT2Zmc2V0ID0gZXhwZWN0ZWRUZXh0LmluZGV4
T2YoJ14nKTsKKyAgLyoqIEB0eXBlIHtudW1iZXJ9ICovCisgIGNvbnN0IGZvY3VzT2Zmc2V0ID0g
ZXhwZWN0ZWRUZXh0LmluZGV4T2YoJ3wnKTsKKyAgaWYgKGFuY2hvck9mZnNldCAhPSBleHBlY3Rl
ZFRleHQubGFzdEluZGV4T2YoJ14nKSkgeworICAgICAgdGhyb3cgbmV3IEVycm9yKAorICAgICAg
ICBgWW91IHNob3VsZCBoYXZlIGF0IG1vc3Qgb25lIGFuY2hvciBtYXJrZXIgIl4iIGluICIke2V4
cGVjdGVkVGV4dH0iLmApOworICB9CisgIGlmIChmb2N1c09mZnNldCAhPSBleHBlY3RlZFRleHQu
bGFzdEluZGV4T2YoJ3wnKSkgeworICAgICAgdGhyb3cgbmV3IEVycm9yKAorICAgICAgICBgWW91
IHNob3VsZCBoYXZlIGF0IG1vc3Qgb25lIGZvY3VzIG1hcmtlciAifCIgaW4gIiR7ZXhwZWN0ZWRU
ZXh0fSIuYCk7CisgIH0KKyAgaWYgKGFuY2hvck9mZnNldCA+PSAwICYmIGZvY3VzT2Zmc2V0IDwg
MCkgeworICAgIHRocm93IG5ldyBFcnJvcigKKyAgICAgICAgYFlvdSBzaG91bGQgaGF2ZSBhIGZv
Y3VzIG1hcmtlciAifCIgaW4gIiR7ZXhwZWN0ZWRUZXh0fSIuYCk7CisgIH0KKyAgaWYgKGFuY2hv
ck9mZnNldCA+PSAwICYmIGZvY3VzT2Zmc2V0ID49IDAgJiYKKyAgICAgKGFuY2hvck9mZnNldCAr
IDEgPT09IGZvY3VzT2Zmc2V0IHx8IGFuY2hvck9mZnNldCAtIDEgPT09IGZvY3VzT2Zmc2V0KSkg
eworICAgIHRocm93IG5ldyBFcnJvcigKKyAgICAgICAgYFlvdSBzaG91bGQgaGF2ZSBmb2N1cyBt
YXJrZXIgYW5kIHNob3VsZCBub3QgaGF2ZSBhbmNob3IgbWFya2VyIGlmIGFuZCBvbmx5IGlmIHNl
bGVjdGlvbiBpcyBhIGNhcmV0IGluICIke2V4cGVjdGVkVGV4dH0iLmApOworICB9Cit9CisKKy8q
KgorICogQHBhcmFtIHtzdHJpbmd9IHN0cjEKKyAqIEBwYXJhbSB7c3RyaW5nfSBzdHIyCisgKiBA
cmV0dXJuIHtzdHJpbmd9CisgKi8KK2Z1bmN0aW9uIGNvbW1vblByZWZpeE9mKHN0cjEsIHN0cjIp
IHsKKyAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHN0cjEubGVuZ3RoOyArK2luZGV4KSB7
CisgICAgaWYgKHN0cjFbaW5kZXhdICE9PSBzdHIyW2luZGV4XSkKKyAgICAgIHJldHVybiBzdHIx
LnN1YnN0cigwLCBpbmRleCk7CisgIH0KKyAgcmV0dXJuIHN0cjE7Cit9CisKKy8qKgorICogQHBh
cmFtIHtzdHJpbmd9IGlucHV0VGV4dAorICogQHBhcmFtIHtmdW5jdGlvbighU2VsZWN0aW9uKXxz
dHJpbmd9CisgKiBAcGFyYW0ge3N0cmluZ30gZXhwZWN0ZWRUZXh0CisgKiBAcGFyYW0ge09iamVj
dD19IG9wdF9vcHRpb25zCisgKiBAcmV0dXJuIHshU2FtcGxlfQorICovCitmdW5jdGlvbiBhc3Nl
cnRTZWxlY3Rpb24oCisgICAgaW5wdXRUZXh0LCB0ZXN0ZXIsIGV4cGVjdGVkVGV4dCwgb3B0X29w
dGlvbnMgPSB7fSkgeworICBjb25zdCBrRGVzY3JpcHRpb24gPSAnZGVzY3JpcHRpb24nOworICBj
b25zdCBrRHVtcEFzID0gJ2R1bXBBcyc7CisgIGNvbnN0IGtSZW1vdmVTYW1wbGVJZlN1Y2NlZWRl
ZCA9ICdyZW1vdmVTYW1wbGVJZlN1Y2NlZWRlZCc7CisgIGNvbnN0IGtEdW1wRnJvbVJvb3QgPSAn
ZHVtcEZyb21Sb290JzsKKyAgLyoqIEB0eXBlIHshT2JqZWN0fSAqLworICBjb25zdCBvcHRpb25z
ID0gdHlwZW9mKG9wdF9vcHRpb25zKSA9PT0gJ3N0cmluZycKKyAgICAgID8ge2Rlc2NyaXB0aW9u
OiBvcHRfb3B0aW9uc30gOiBvcHRfb3B0aW9uczsKKyAgLyoqIEB0eXBlIHtzdHJpbmd9ICovCisg
IGNvbnN0IGRlc2NyaXB0aW9uID0ga0Rlc2NyaXB0aW9uIGluIG9wdGlvbnMKKyAgICAgID8gb3B0
aW9uc1trRGVzY3JpcHRpb25dIDogYXNzZW1ibGVEZXNjcmlwdGlvbigpOworICAvKiogQHR5cGUg
e2Jvb2xlYW59ICovCisgIGNvbnN0IHJlbW92ZVNhbXBsZUlmU3VjY2VlZGVkID0ga1JlbW92ZVNh
bXBsZUlmU3VjY2VlZGVkIGluIG9wdGlvbnMKKyAgICAgID8gISFvcHRpb25zW2tSZW1vdmVTYW1w
bGVJZlN1Y2NlZWRlZF0gOiB0cnVlOworICAvKiogQHR5cGUge0R1bXBBc30gKi8KKyAgY29uc3Qg
ZHVtcEFzID0gb3B0aW9uc1trRHVtcEFzXSB8fCBEdW1wQXMuRE9NX1RSRUU7CisgIC8qKiBAdHlw
ZSB7Ym9vbGVhbn0gKi8KKyAgY29uc3QgZHVtcEZyb21Sb290ID0gb3B0aW9uc1trRHVtcEZyb21S
b290XSB8fCBmYWxzZTsKKworICBjaGVja0V4cGVjdGVkVGV4dChleHBlY3RlZFRleHQpOworICBj
b25zdCBzYW1wbGUgPSBuZXcgU2FtcGxlKGlucHV0VGV4dCk7CisgIGlmICh0eXBlb2YodGVzdGVy
KSA9PT0gJ2Z1bmN0aW9uJykgeworICAgIHRlc3Rlci5jYWxsKHdpbmRvdywgc2FtcGxlLnNlbGVj
dGlvbik7CisgIH0gZWxzZSBpZiAodHlwZW9mKHRlc3RlcikgPT09ICdzdHJpbmcnKSB7CisgICAg
Y29uc3Qgc3RyaW5ncyA9IHRlc3Rlci5zcGxpdCgvICguKykvKTsKKyAgICBzYW1wbGUuZG9jdW1l
bnQuZXhlY0NvbW1hbmQoc3RyaW5nc1swXSwgZmFsc2UsIHN0cmluZ3NbMV0pOworICB9IGVsc2Ug
eworICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZXN0ZXI6ICR7dGVzdGVyfWApOworICB9
CisKKyAgLyoqIEB0eXBlIHshVHJhdmVyc2FsfSAqLworICBjb25zdCB0cmF2ZXJzYWwgPSAoKCkg
PT4geworICAgIHN3aXRjaCAoZHVtcEFzKSB7CisgICAgICBjYXNlIER1bXBBcy5ET01fVFJFRToK
KyAgICAgICAgcmV0dXJuIG5ldyBET01UcmVlVHJhdmVyc2FsKCk7CisgICAgICBjYXNlIER1bXBB
cy5GTEFUX1RSRUU6CisgICAgICAgIGlmICghd2luZG93LmludGVybmFscykKKyAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ1RoaXMgdGVzdCByZXF1aXJlcyB3aW5kb3cuaW50ZXJuYWxzLicpOwor
ICAgICAgICByZXR1cm4gbmV3IEZsYXRUcmVlVHJhdmVyc2FsKCk7CisgICAgICBkZWZhdWx0Ogor
ICAgICAgICB0aHJvdyBgJHtrRHVtcEFzfSBtdXN0IGJlIG9uZSBvZiBgICsKKyAgICAgICAgICAg
ICAgYHske09iamVjdC52YWx1ZXMoRHVtcEFzKS5qb2luKCcsICcpfX1gICsKKyAgICAgICAgICAg
ICAgYCBpbnN0ZWFkIG9mICcke2R1bXBBc30nYDsKKyAgICB9CisgIH0pKCk7CisKKyAgLyoqIEB0
eXBlIHtzdHJpbmd9ICovCisgIGNvbnN0IGFjdHVhbFRleHQgPSBzYW1wbGUuc2VyaWFsaXplKHRy
YXZlcnNhbCwgZHVtcEZyb21Sb290KTsKKyAgLy8gV2Uga2VlcCBzYW1wbGUgSFRNTCB3aGVuIGFz
c2VydGlvbiBpcyBmYWxzZSBmb3IgZWFzZSBvZiBkZWJ1Z2dpbmcgdGVzdAorICAvLyBjYXNlLgor
ICBpZiAoYWN0dWFsVGV4dCA9PT0gZXhwZWN0ZWRUZXh0KSB7CisgICAgaWYgKHJlbW92ZVNhbXBs
ZUlmU3VjY2VlZGVkKQorICAgICAgICBzYW1wbGUucmVtb3ZlKCk7CisgICAgcmV0dXJuIHNhbXBs
ZTsKKyAgfQorICB0aHJvdyBuZXcgRXJyb3IoYCR7ZGVzY3JpcHRpb259XG5gICsKKyAgICBgXHQg
ZXhwZWN0ZWQgJHtleHBlY3RlZFRleHR9LFxuYCArCisgICAgYFx0IGJ1dCBnb3QgICR7YWN0dWFs
VGV4dH0sXG5gICsKKyAgICBgXHQgc2FtZXVwdG8gJHtjb21tb25QcmVmaXhPZihleHBlY3RlZFRl
eHQsIGFjdHVhbFRleHQpfWApOworfQorCisvLyBFeHBvcnQgc3ltYm9scword2luZG93LlNhbXBs
ZSA9IFNhbXBsZTsKK3dpbmRvdy5hc3NlcnRfc2VsZWN0aW9uID0gYXNzZXJ0U2VsZWN0aW9uOwor
fSkoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxp
c3QtaXRlbXMtaW4tdGFibGUtY2VsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L2RlbGV0aW5nL2RlbGV0ZS1saXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZjZjJhZDkwODRjODZkZmZhMDk2NTcyZGE5ZWZkNjRiY2M1YmE3ZDUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saXN0LWl0
ZW1zLWluLXRhYmxlLWNlbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIERl
bGV0ZSAtIFdoZW4gZGVsZXRpbmcgdGhlIHNlY29uZCBvcmRlcmVkIGxpc3QgaXRlbXMgaW4gYSB0
YWJsZSBjZWxsIGl0cyBjb250ZW50IGlzIG1lcmdlZCB3aXRoIHRoZSBmaXJzdCBsaXN0IGl0ZW0u
IAorUEFTUyBEZWxldGUgLSBXaGVuIGRlbGV0aW5nIHRoZSBzZWNvbmQgdW5vcmRlcmVkIGxpc3Qg
aXRlbXMgaW4gYSB0YWJsZSBjZWxsIGl0cyBjb250ZW50IGlzIG1lcmdlZCB3aXRoIHRoZSBmaXJz
dCBsaXN0IGl0ZW0uIAorUEFTUyBEZWxldGUgLSBXaGVuIGRlbGV0aW5nIHRoZSBsYXN0IG9yZGVy
ZWQgbGlzdCBpdGVtIGluIGEgdGFibGUgY2VsbCB3ZSBtdXN0IGRlbGV0ZSB0aGUgd2hvbGUgb3Jk
ZXJlZCBsaXN0LiAKK1BBU1MgRGVsZXRlIC0gV2hlbiBkZWxldGluZyB0aGUgbGFzdCB1bnJkZXJl
ZCBsaXN0IGl0ZW0gaW4gYSB0YWJsZSBjZWxsIHdlIG11c3QgZGVsZXRlIHRoZSB3aG9sZSB1bm9y
ZGVyZWQgbGlzdC4gCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcv
ZGVsZXRlLWxpc3QtaXRlbXMtaW4tdGFibGUtY2VsbC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9kZWxldGluZy9kZWxldGUtbGlzdC1pdGVtcy1pbi10YWJsZS1jZWxsLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGIwNzk2ZDUxNDMxNmEzYzg4OGYzMWI3NzFmNWQwMTFkYTliNTUyMAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpc3QtaXRlbXMtaW4t
dGFibGUtY2VsbC5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9hc3NlcnRfc2VsZWN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cit0
ZXN0KCgpID0+IGFzc2VydF9zZWxlY3Rpb24oCisgICAgICc8ZGl2IGNvbnRlbnRlZGl0YWJsZT0i
dHJ1ZSI+PHRhYmxlPjx0cj48dGQ+PG9sPjxsaT5hPC9saT48bGk+fDwvbGk+PC9vbD48L3RkPjx0
ZD5iPC90ZD48L3RyPjwvdGFibGU+PC9kaXY+JywKKyAgICAgJ0RlbGV0ZScsCisgICAgICc8ZGl2
IGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+PHRhYmxlPjx0Ym9keT48dHI+PHRkPjxvbD48bGk+YXw8
L2xpPjwvb2w+PC90ZD48dGQ+YjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PC9kaXY+JyksCisg
ICAgICdEZWxldGUgLSBXaGVuIGRlbGV0aW5nIHRoZSBzZWNvbmQgb3JkZXJlZCBsaXN0IGl0ZW1z
IGluIGEgdGFibGUgY2VsbCBpdHMgY29udGVudCBpcyBtZXJnZWQgd2l0aCB0aGUgZmlyc3QgbGlz
dCBpdGVtLicpOworCit0ZXN0KCgpID0+IGFzc2VydF9zZWxlY3Rpb24oCisgICAgICc8ZGl2IGNv
bnRlbnRlZGl0YWJsZT0idHJ1ZSI+PHRhYmxlPjx0cj48dGQ+PHVsPjxsaT5hPC9saT48bGk+fDwv
bGk+PC91bD48L3RkPjx0ZD5iPC90ZD48L3RyPjwvdGFibGU+PC9kaXY+JywKKyAgICAgJ0RlbGV0
ZScsCisgICAgICc8ZGl2IGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+PHRhYmxlPjx0Ym9keT48dHI+
PHRkPjx1bD48bGk+YXw8L2xpPjwvdWw+PC90ZD48dGQ+YjwvdGQ+PC90cj48L3Rib2R5PjwvdGFi
bGU+PC9kaXY+JyksCisgICAgICdEZWxldGUgLSBXaGVuIGRlbGV0aW5nIHRoZSBzZWNvbmQgdW5v
cmRlcmVkIGxpc3QgaXRlbXMgaW4gYSB0YWJsZSBjZWxsIGl0cyBjb250ZW50IGlzIG1lcmdlZCB3
aXRoIHRoZSBmaXJzdCBsaXN0IGl0ZW0uJyk7CisKK3Rlc3QoKCkgPT4gYXNzZXJ0X3NlbGVjdGlv
bigKKyAgICAgJzxkaXYgY29udGVudGVkaXRhYmxlPSJ0cnVlIj48dGFibGU+PHRyPjx0ZD48b2w+
PGxpPnw8L2xpPjwvb2w+PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+JywKKyAgICAgJ0RlbGV0ZScs
CisgICAgICc8ZGl2IGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+PHRhYmxlPjx0Ym9keT48dHI+PHRk
PjxkaXY+fDxicj48L2Rpdj48L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvZGl2PicpLAorICAg
ICAnRGVsZXRlIC0gV2hlbiBkZWxldGluZyB0aGUgbGFzdCBvcmRlcmVkIGxpc3QgaXRlbSBpbiBh
IHRhYmxlIGNlbGwgd2UgbXVzdCBkZWxldGUgdGhlIHdob2xlIG9yZGVyZWQgbGlzdC4nKTsKKwor
dGVzdCgoKSA9PiBhc3NlcnRfc2VsZWN0aW9uKAorICAgICAnPGRpdiBjb250ZW50ZWRpdGFibGU9
InRydWUiPjx0YWJsZT48dHI+PHRkPjx1bD48bGk+fDwvbGk+PC91bD48L3RkPjwvdHI+PC90YWJs
ZT48L2Rpdj4nLAorICAgICAnRGVsZXRlJywKKyAgICAgJzxkaXYgY29udGVudGVkaXRhYmxlPSJ0
cnVlIj48dGFibGU+PHRib2R5Pjx0cj48dGQ+PGRpdj58PGJyPjwvZGl2PjwvdGQ+PC90cj48L3Ri
b2R5PjwvdGFibGU+PC9kaXY+JyksCisgICAgICdEZWxldGUgLSBXaGVuIGRlbGV0aW5nIHRoZSBs
YXN0IHVucmRlcmVkIGxpc3QgaXRlbSBpbiBhIHRhYmxlIGNlbGwgd2UgbXVzdCBkZWxldGUgdGhl
IHdob2xlIHVub3JkZXJlZCBsaXN0LicpOworPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314194</attachid>
            <date>2017-06-29 17:26:13 -0700</date>
            <delta_ts>2017-08-08 05:22:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173148-20170630022611.patch</filename>
            <type>text/plain</type>
            <size>21374</size>
            <attacher name="Javier Fernandez">jfernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4Njg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmUwMjk2NmQ1NDViYTg1
MzM0OTY1YWYwZDlhNDliYjgzMTRiMWVjZC4uZTRmMDhkODI4MTc0NjY1M2YyZGZkZTgzZDQ4ODI1
YmRkYmQ4YzA2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE3LTA2LTI5ICBKYXZp
ZXIgRmVybmFuZGV6ICA8amZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIE5vdCBwb3Nz
aWJsZSB0byByZW1vdmUgdGhlICdsaScgZWxlbWVudCBpbnNpZGUgdGhlIHRhYmxlIGNlbGwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzE0OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIG5lZWQgdG8g
YWRkIGEgbmV3IGNhc2UgZm9yIGJyZWFraW5nIG91dCBlbXB0eSBsaXN0IGl0ZW1zIHdoZW4gdGhl
eSBhcmUKKyAgICAgICAgYXQgdGhlIHN0YXJ0IG9mIGFuIGVkaXRhYmxlIGFyZWEuIFNpbmNlIGxp
c3QgaXRlbXMgY2FuIGJlIGFsc28gaW5zaWRlCisgICAgICAgIHRhYmxlIGNlbGxzLCB3ZSBuZWVk
IHRvIGNvbnNpZGVyIHRoaXMga2luZCBvZiBlbGVtZW50cyBhcyB3ZWxsLgorCisgICAgICAgIFRl
c3RzOiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwtMS5o
dG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saXN0LWl0ZW1zLWlu
LXRhYmxlLWNlbGwtMi5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0
ZS1saXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwtMy5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5n
L2RlbGV0aW5nL2RlbGV0ZS1saXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwtNC5odG1sCisgICAgICAg
ICAgICAgICBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwt
NS5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saXN0LWl0ZW1z
LWluLXRhYmxlLWNlbGwtNi5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL2RlbGV0aW5nL2Rl
bGV0ZS1saXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwtNy5odG1sCisgICAgICAgICAgICAgICBlZGl0
aW5nL2RlbGV0aW5nL2RlbGV0ZS1saXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwtOC5odG1sCisKKyAg
ICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHlw
aW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZCk6CisKIDIwMTctMDYtMjEgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtGZXRjaCBBUEldIFR5cGVFcnJvciB3
aGVuIGNhbGxlZCB3aXRoIGJvZHkgPT09IHt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdD
b21tYW5kLmNwcAppbmRleCA3YmQ5NWNjMDhiMzUyNmJkZjM3M2E0ZGZjNGY3NjQ3YjAwOTU3ODJl
Li45NjIwYmZiNzEyNzBjY2RjMzYzNWFkZmRkYWZlZjMyMWE2MDg5NDBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKQEAgLTY2OSw3ICs2NjksMTEgQEAgdm9pZCBU
eXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0
eSwgYm9vbCBzaG91bGRBZGQKICAgICAgICAgaWYgKHNob3VsZEFkZFRvS2lsbFJpbmcgJiYgc2Vs
ZWN0aW9uLmlzQ2FyZXQoKSAmJiBncmFudWxhcml0eSAhPSBDaGFyYWN0ZXJHcmFudWxhcml0eSkK
ICAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25F
eHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKLSAgICAg
ICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLnByZXZpb3VzKENhbm5vdENy
b3NzRWRpdGluZ0JvdW5kYXJ5KS5pc051bGwoKSkgeworICAgICAgICBjb25zdCBWaXNpYmxlUG9z
aXRpb24mIHZpc2libGVTdGFydCA9IGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpOwor
ICAgICAgICBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHByZXZpb3VzUG9zaXRpb24gPSB2aXNpYmxl
U3RhcnQucHJldmlvdXMoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOworICAgICAgICBOb2Rl
KiBlbmNsb3NpbmdUYWJsZUNlbGwgPSBlbmNsb3NpbmdOb2RlT2ZUeXBlKHZpc2libGVTdGFydC5k
ZWVwRXF1aXZhbGVudCgpLCAmaXNUYWJsZUNlbGwpOworICAgICAgICBjb25zdCBOb2RlKiBlbmNs
b3NpbmdUYWJsZUNlbGxGb3JQcmV2aW91c1Bvc2l0aW9uID0gZW5jbG9zaW5nTm9kZU9mVHlwZShw
cmV2aW91c1Bvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCksICZpc1RhYmxlQ2VsbCk7CisgICAgICAg
IGlmIChwcmV2aW91c1Bvc2l0aW9uLmlzTnVsbCgpIHx8IGVuY2xvc2luZ1RhYmxlQ2VsbCAhPSBl
bmNsb3NpbmdUYWJsZUNlbGxGb3JQcmV2aW91c1Bvc2l0aW9uKSB7CiAgICAgICAgICAgICAvLyBX
aGVuIHRoZSBjYXJldCBpcyBhdCB0aGUgc3RhcnQgb2YgdGhlIGVkaXRhYmxlIGFyZWEgaW4gYW4g
ZW1wdHkgbGlzdCBpdGVtLCBicmVhayBvdXQgb2YgdGhlIGxpc3QgaXRlbS4KICAgICAgICAgICAg
IGlmIChhdXRvIGRlbGV0ZUxpc3RTZWxlY3Rpb24gPSBzaG91bGRCcmVha091dE9mRW1wdHlMaXN0
SXRlbSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5k
KERlbGV0ZUtleSwgZ3JhbnVsYXJpdHksIHsgfSwgUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBk
ZWxldGVMaXN0U2VsZWN0aW9uLnZhbHVlKCkuc3RhcnQoKSwgZGVsZXRlTGlzdFNlbGVjdGlvbi52
YWx1ZSgpLmVuZCgpKSkpIHsKQEAgLTY3OCwxNyArNjgyLDE3IEBAIHZvaWQgVHlwaW5nQ29tbWFu
ZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wgc2hv
dWxkQWRkCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAocHJldmlvdXNQb3NpdGlvbi5pc051bGwo
KSkgewogICAgICAgICAgICAgLy8gV2hlbiB0aGVyZSBhcmUgbm8gdmlzaWJsZSBwb3NpdGlvbnMg
aW4gdGhlIGVkaXRpbmcgcm9vdCwgZGVsZXRlIGl0cyBlbnRpcmUgY29udGVudHMuCiAgICAgICAg
ICAgICAvLyBGSVhNRTogRGlzcGF0Y2ggYSBgYmVmb3JlaW5wdXRgIGV2ZW50IGhlcmUgYW5kIGJh
aWwgaWYgcHJldmVudERlZmF1bHQoKSB3YXMgaW52b2tlZC4KLSAgICAgICAgICAgIGlmIChlbmRp
bmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKS5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0JvdW5k
YXJ5KS5pc051bGwoKSAmJiBtYWtlRWRpdGFibGVSb290RW1wdHkoKSkgeworICAgICAgICAgICAg
aWYgKHZpc2libGVTdGFydC5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KS5pc051bGwo
KSAmJiBtYWtlRWRpdGFibGVSb290RW1wdHkoKSkgewogICAgICAgICAgICAgICAgIHR5cGluZ0Fk
ZGVkVG9PcGVuQ29tbWFuZChEZWxldGVLZXkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxl
U3RhcnQoZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpOwogICAgICAgICAvLyBJZiB3
ZSBoYXZlIGEgY2FyZXQgc2VsZWN0aW9uIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBjZWxsLCB3ZSBo
YXZlIG5vdGhpbmcgdG8gZG8uCi0gICAgICAgIE5vZGUqIGVuY2xvc2luZ1RhYmxlQ2VsbCA9IGVu
Y2xvc2luZ05vZGVPZlR5cGUodmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCksICZpc1RhYmxl
Q2VsbCk7CiAgICAgICAgIGlmIChlbmNsb3NpbmdUYWJsZUNlbGwgJiYgdmlzaWJsZVN0YXJ0ID09
IGZpcnN0UG9zaXRpb25Jbk5vZGUoZW5jbG9zaW5nVGFibGVDZWxsKSkKICAgICAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDQ0OWFmZThmODI5ZDUwZWZiZmE0ZTBjZDE3ZmE0Zjc0MGUyOTczZWMu
LjQ1NjE5MDA2OTg1YTJhYjExNDUyZjA5Y2I4ZWY0MGQ4MWYxM2M3NTkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyOSBAQAorMjAxNy0wNi0yOSAgSmF2aWVyIEZlcm5hbmRleiAgPGpmZXJuYW5kZXpAaWdhbGlh
LmNvbT4KKworICAgICAgICBOb3QgcG9zc2libGUgdG8gcmVtb3ZlIHRoZSAnbGknIGVsZW1lbnQg
aW5zaWRlIHRoZSB0YWJsZSBjZWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzMxNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZWdyZXNzaW9uIHRlc3RzIGZvciBkaWZmZXJlbnQgc2NlbmFyaW9zIG9m
IGxpc3QgaXRlbXMgcmVtb3ZhbC4KKworICAgICAgICAqIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRl
LWxpc3QtaXRlbXMtaW4tdGFibGUtY2VsbC0xLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGlzdC1pdGVtcy1pbi10YWJsZS1jZWxsLTEuaHRt
bDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGlzdC1pdGVtcy1p
bi10YWJsZS1jZWxsLTItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2Rl
bGV0aW5nL2RlbGV0ZS1saXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwtMi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwt
My1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRl
LWxpc3QtaXRlbXMtaW4tdGFibGUtY2VsbC0zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvZGVsZXRpbmcvZGVsZXRlLWxpc3QtaXRlbXMtaW4tdGFibGUtY2VsbC00LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGlzdC1pdGVtcy1p
bi10YWJsZS1jZWxsLTQuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9kZWxldGluZy9k
ZWxldGUtbGlzdC1pdGVtcy1pbi10YWJsZS1jZWxsLTUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwt
NS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saXN0LWl0
ZW1zLWluLXRhYmxlLWNlbGwtNi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvZGVsZXRpbmcvZGVsZXRlLWxpc3QtaXRlbXMtaW4tdGFibGUtY2VsbC02Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpc3QtaXRlbXMtaW4tdGFibGUt
Y2VsbC03LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9kZWxldGluZy9k
ZWxldGUtbGlzdC1pdGVtcy1pbi10YWJsZS1jZWxsLTcuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGlzdC1pdGVtcy1pbi10YWJsZS1jZWxsLTgtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saXN0LWl0
ZW1zLWluLXRhYmxlLWNlbGwtOC5odG1sOiBBZGRlZC4KKwogMjAxNy0wNi0yMSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgW0ZldGNoIEFQSV0gVHlwZUVycm9y
IHdoZW4gY2FsbGVkIHdpdGggYm9keSA9PT0ge30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpc3QtaXRlbXMtaW4tdGFibGUtY2VsbC0xLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpc3QtaXRlbXMtaW4t
dGFibGUtY2VsbC0xLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODQyOWU4MTYzYWM0OGUwM2I1
M2EwOTU5YzNlZTQ4ZmJlYzkxMmFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9kZWxldGluZy9kZWxldGUtbGlzdC1pdGVtcy1pbi10YWJsZS1jZWxsLTEtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMjIgQEAKK1doZW4gZGVsZXRpbmcgdGhlIHNlY29uZCBvcmRlcmVkIGxp
c3QgaXRlbXMgaW4gYSB0YWJsZSBjZWxsIGl0cyBjb250ZW50IGlzIG1lcmdlZCB3aXRoIHRoZSBm
aXJzdCBsaXN0IGl0ZW06CisKK0JlZm9yZToKK3wgPHRhYmxlPgorfCAgIDx0Ym9keT4KK3wgICAg
IDx0cj4KK3wgICAgICAgPHRkPgorfCAgICAgICAgIDxvbD4KK3wgICAgICAgICAgIDxsaT4KK3wg
ICAgICAgICAgICAgImEiCit8ICAgICAgICAgICA8bGk+Cit8ICAgICAgICAgICAgIGlkPSJsaSIK
K3wgICAgICAgICAgICAgIjwjc2VsZWN0aW9uLWNhcmV0PnxiIgorCitBZnRlcjoKK3wgPHRhYmxl
PgorfCAgIDx0Ym9keT4KK3wgICAgIDx0cj4KK3wgICAgICAgPHRkPgorfCAgICAgICAgIDxvbD4K
K3wgICAgICAgICAgIDxsaT4KK3wgICAgICAgICAgICAgImE8I3NlbGVjdGlvbi1jYXJldD58YiIK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpc3QtaXRl
bXMtaW4tdGFibGUtY2VsbC0xLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2Rl
bGV0ZS1saXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwtMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MGJkMWFk
YzA1MmE1MmU5NGEzMzA4YTBiOWIxMmZjMDE5NDU5NTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwt
MS5odG1sCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4K
KyAgICA8ZGl2IGlkPSJjb250YWluZXIiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+PHRhYmxlPjx0
cj48dGQ+PG9sPjxsaT5hPC9saT48bGkgaWQ9ImxpIj58YjwvbGk+PC9vbD48L3RkPjwvdHI+PC90
YWJsZT48L2Rpdj4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2R1bXAtYXMtbWFy
a3VwLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgICBNYXJrdXAuZGVzY3JpcHRp
b24oJ1doZW4gZGVsZXRpbmcgdGhlIHNlY29uZCBvcmRlcmVkIGxpc3QgaXRlbXMgaW4gYSB0YWJs
ZSBjZWxsIGl0cyBjb250ZW50IGlzIG1lcmdlZCB3aXRoIHRoZSBmaXJzdCBsaXN0IGl0ZW06Jyk7
CisKKyAgICAgICAgZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2UoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImxpIiksIDApOworICAgICAgICBNYXJrdXAuZHVtcCgnY29udGFpbmVyJywgJ0JlZm9yZScp
OworCisgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJEZWxldGUiKTsKKyAgICAgICAgTWFy
a3VwLmR1bXAoJ2NvbnRhaW5lcicsICdBZnRlcicpOworICAgIDwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9kZWxldGUt
bGlzdC1pdGVtcy1pbi10YWJsZS1jZWxsLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9kZWxldGluZy9kZWxldGUtbGlzdC1pdGVtcy1pbi10YWJsZS1jZWxsLTItZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJhYjY3MTBjODAxYWQyYmRmZmM5YWFkNTBhNzQ1YzEwOTlhNTk5YWMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1s
aXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwtMi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNCBAQAor
V2hlbiBkZWxldGluZyB0aGUgc2Vjb25kIHVub3JkZXJlZCBsaXN0IGl0ZW1zIGluIGEgdGFibGUg
Y2VsbCBpdHMgY29udGVudCBpcyBtZXJnZWQgd2l0aCB0aGUgZmlyc3QgbGlzdCBpdGVtOgorCitC
ZWZvcmU6Cit8IDx0YWJsZT4KK3wgICBib3JkZXI9IjEiCit8ICAgPHRib2R5PgorfCAgICAgPHRy
PgorfCAgICAgICA8dGQ+Cit8ICAgICAgICAgPHVsPgorfCAgICAgICAgICAgPGxpPgorfCAgICAg
ICAgICAgICAiYSIKK3wgICAgICAgICAgIDxsaT4KK3wgICAgICAgICAgICAgaWQ9ImxpIgorfCAg
ICAgICAgICAgICAiPCNzZWxlY3Rpb24tY2FyZXQ+fGIiCisKK0FmdGVyOgorfCA8dGFibGU+Cit8
ICAgYm9yZGVyPSIxIgorfCAgIDx0Ym9keT4KK3wgICAgIDx0cj4KK3wgICAgICAgPHRkPgorfCAg
ICAgICAgIDx1bD4KK3wgICAgICAgICAgIDxsaT4KK3wgICAgICAgICAgICAgImE8I3NlbGVjdGlv
bi1jYXJldD58YiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVs
ZXRlLWxpc3QtaXRlbXMtaW4tdGFibGUtY2VsbC0yLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L2RlbGV0aW5nL2RlbGV0ZS1saXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwtMi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk3YmU0MTA3NTJkNDI5Njg1YTBkYjg2ODdmYWYwNmNkZjcxNWVhZjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saXN0LWl0ZW1zLWlu
LXRhYmxlLWNlbGwtMi5odG1sCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJjb250YWluZXIiIGNvbnRlbnRlZGl0YWJsZT0idHJ1
ZSI+PHRhYmxlIGJvcmRlcj0iMSI+PHRyPjx0ZD48dWw+PGxpPmE8L2xpPjxsaSBpZD0ibGkiPnxi
PC9saT48L3VsPjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PgorICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+Cisg
ICAgICAgIE1hcmt1cC5kZXNjcmlwdGlvbignV2hlbiBkZWxldGluZyB0aGUgc2Vjb25kIHVub3Jk
ZXJlZCBsaXN0IGl0ZW1zIGluIGEgdGFibGUgY2VsbCBpdHMgY29udGVudCBpcyBtZXJnZWQgd2l0
aCB0aGUgZmlyc3QgbGlzdCBpdGVtOicpOworCisgICAgICAgIGdldFNlbGVjdGlvbigpLmNvbGxh
cHNlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaSIpLCAwKTsKKyAgICAgICAgTWFya3VwLmR1
bXAoJ2NvbnRhaW5lcicsICdCZWZvcmUnKTsKKworICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFu
ZCgiRGVsZXRlIik7CisgICAgICAgIE1hcmt1cC5kdW1wKCdjb250YWluZXInLCAnQWZ0ZXInKTsK
KyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpc3QtaXRlbXMtaW4tdGFibGUtY2VsbC0zLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpc3QtaXRlbXMt
aW4tdGFibGUtY2VsbC0zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGQ1ZWM2NmU1MDJkZWNi
OTAwZjA0YTM4YTU2NTk2OTFkNDI0ODBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGlzdC1pdGVtcy1pbi10YWJsZS1jZWxsLTMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMjMgQEAKK1doZW4gZGVsZXRpbmcgdGhlIGxhc3Qgb3JkZXJlZCBs
aXN0IGl0ZW0gaW4gYSB0YWJsZSBjZWxsIHdlIG11c3QgZGVsZXRlIHRoZSB3aG9sZSBvcmRlcmVk
IGxpc3Q6CisKK0JlZm9yZToKK3wgPHRhYmxlPgorfCAgIGJvcmRlcj0iMSIKK3wgICA8dGJvZHk+
Cit8ICAgICA8dHI+Cit8ICAgICAgIDx0ZD4KK3wgICAgICAgICA8b2w+Cit8ICAgICAgICAgICA8
bGk+Cit8ICAgICAgICAgICAgIGlkPSJsaSIKK3wgICAgICAgICAgICAgPCNzZWxlY3Rpb24tY2Fy
ZXQ+Cit8ICAgICAgICAgICAgIDxicj4KKworQWZ0ZXI6Cit8IDx0YWJsZT4KK3wgICBib3JkZXI9
IjEiCit8ICAgPHRib2R5PgorfCAgICAgPHRyPgorfCAgICAgICA8dGQ+Cit8ICAgICAgICAgPGRp
dj4KK3wgICAgICAgICAgIDwjc2VsZWN0aW9uLWNhcmV0PgorfCAgICAgICAgICAgPGJyPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGlzdC1pdGVtcy1p
bi10YWJsZS1jZWxsLTMuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRl
LWxpc3QtaXRlbXMtaW4tdGFibGUtY2VsbC0zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTkwYjY4MzRiODc0
MjgwYWMyMzA3ZGQ4NjkwMjAxNmUwNjYyOTcwMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpc3QtaXRlbXMtaW4tdGFibGUtY2VsbC0zLmh0
bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorICAg
IDxkaXYgaWQ9ImNvbnRhaW5lciIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj48dGFibGUgYm9yZGVy
PSIxIj48dHI+PHRkPjxvbD48bGkgaWQ9ImxpIj48YnI+PC9saT48L29sPjwvdGQ+PC90cj48L3Rh
YmxlPjwvZGl2PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZHVtcC1hcy1tYXJr
dXAuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIE1hcmt1cC5kZXNjcmlwdGlv
bignV2hlbiBkZWxldGluZyB0aGUgbGFzdCBvcmRlcmVkIGxpc3QgaXRlbSBpbiBhIHRhYmxlIGNl
bGwgd2UgbXVzdCBkZWxldGUgdGhlIHdob2xlIG9yZGVyZWQgbGlzdDonKTsKKworICAgICAgICBn
ZXRTZWxlY3Rpb24oKS5jb2xsYXBzZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGkiKSwgMCk7
CisgICAgICAgIE1hcmt1cC5kdW1wKCdjb250YWluZXInLCAnQmVmb3JlJyk7CisKKyAgICAgICAg
ZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkRlbGV0ZSIpOworICAgICAgICBNYXJrdXAuZHVtcCgnY29u
dGFpbmVyJywgJ0FmdGVyJyk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saXN0LWl0ZW1zLWlu
LXRhYmxlLWNlbGwtNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5n
L2RlbGV0ZS1saXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwtNC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDY0ZTNhNGE0Y2Q2MzYxMTVkYzFlYjcwY2JmMWJkMmQ0MDNiNWM4NwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpc3QtaXRlbXMtaW4t
dGFibGUtY2VsbC00LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIzIEBACitXaGVuIGRlbGV0aW5n
IHRoZSBsYXN0IHVub3JkZXJlZCBsaXN0IGl0ZW0gaW4gYSB0YWJsZSBjZWxsIHdlIG11c3QgZGVs
ZXRlIHRoZSB3aG9sZSBvcmRlcmVkIGxpc3Q6CisKK0JlZm9yZToKK3wgPHRhYmxlPgorfCAgIGJv
cmRlcj0iMSIKK3wgICA8dGJvZHk+Cit8ICAgICA8dHI+Cit8ICAgICAgIDx0ZD4KK3wgICAgICAg
ICA8dWw+Cit8ICAgICAgICAgICA8bGk+Cit8ICAgICAgICAgICAgIGlkPSJsaSIKK3wgICAgICAg
ICAgICAgPCNzZWxlY3Rpb24tY2FyZXQ+Cit8ICAgICAgICAgICAgIDxicj4KKworQWZ0ZXI6Cit8
IDx0YWJsZT4KK3wgICBib3JkZXI9IjEiCit8ICAgPHRib2R5PgorfCAgICAgPHRyPgorfCAgICAg
ICA8dGQ+Cit8ICAgICAgICAgPGRpdj4KK3wgICAgICAgICAgIDwjc2VsZWN0aW9uLWNhcmV0Pgor
fCAgICAgICAgICAgPGJyPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGlu
Zy9kZWxldGUtbGlzdC1pdGVtcy1pbi10YWJsZS1jZWxsLTQuaHRtbCBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpc3QtaXRlbXMtaW4tdGFibGUtY2VsbC00Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMWQzNDE4ZDVkODI5ZWE0ZGFjYzRkMTE3ZWM5N2UxNjNmN2MwYzMzYwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpc3QtaXRl
bXMtaW4tdGFibGUtY2VsbC00Lmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxib2R5PgorICAgIDxkaXYgaWQ9ImNvbnRhaW5lciIgY29udGVudGVkaXRhYmxl
PSJ0cnVlIj48dGFibGUgYm9yZGVyPSIxIj48dHI+PHRkPjx1bD48bGkgaWQ9ImxpIj48YnI+PC9s
aT48L3VsPjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAg
ICAgIE1hcmt1cC5kZXNjcmlwdGlvbignV2hlbiBkZWxldGluZyB0aGUgbGFzdCB1bm9yZGVyZWQg
bGlzdCBpdGVtIGluIGEgdGFibGUgY2VsbCB3ZSBtdXN0IGRlbGV0ZSB0aGUgd2hvbGUgb3JkZXJl
ZCBsaXN0OicpOworCisgICAgICAgIGdldFNlbGVjdGlvbigpLmNvbGxhcHNlKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJsaSIpLCAwKTsKKyAgICAgICAgTWFya3VwLmR1bXAoJ2NvbnRhaW5lcics
ICdCZWZvcmUnKTsKKworICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiRGVsZXRlIik7Cisg
ICAgICAgIE1hcmt1cC5kdW1wKCdjb250YWluZXInLCAnQWZ0ZXInKTsKKyAgICA8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRp
bmcvZGVsZXRlLWxpc3QtaXRlbXMtaW4tdGFibGUtY2VsbC01LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpc3QtaXRlbXMtaW4tdGFibGUtY2VsbC01
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42N2I0NjI1MDQ2ZTYzYjc1MjZjYTJkOGYxMmM2Yzkz
MGYzYzEzNDNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGlu
Zy9kZWxldGUtbGlzdC1pdGVtcy1pbi10YWJsZS1jZWxsLTUtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMjYgQEAKK1doZW4gZGVsZXRpbmcgdGhlIHNlY29uZCBvcmRlcmVkIGxpc3QgaXRlbXMgaW4g
YSB0YWJsZSBjZWxsLCB0aGF0IGl0IGlzIHRoZSByb290IGVkaXRhYmxlIGVsZW1lbnQsIGl0cyBj
b250ZW50IGlzIG1lcmdlZCB3aXRoIHRoZSBmaXJzdCBsaXN0IGl0ZW06CisKK0JlZm9yZToKK3wg
PHRhYmxlPgorfCAgIGJvcmRlcj0iMSIKK3wgICA8dGJvZHk+Cit8ICAgICA8dHI+Cit8ICAgICAg
IDx0ZD4KK3wgICAgICAgICBjb250ZW50ZWRpdGFibGU9InRydWUiCit8ICAgICAgICAgPG9sPgor
fCAgICAgICAgICAgPGxpPgorfCAgICAgICAgICAgICAiYSIKK3wgICAgICAgICAgIDxsaT4KK3wg
ICAgICAgICAgICAgaWQ9ImxpIgorfCAgICAgICAgICAgICAiPCNzZWxlY3Rpb24tY2FyZXQ+fGIi
CisKK0FmdGVyOgorfCA8dGFibGU+Cit8ICAgYm9yZGVyPSIxIgorfCAgIDx0Ym9keT4KK3wgICAg
IDx0cj4KK3wgICAgICAgPHRkPgorfCAgICAgICAgIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIKK3wg
ICAgICAgICA8b2w+Cit8ICAgICAgICAgICA8bGk+Cit8ICAgICAgICAgICAgICJhPCNzZWxlY3Rp
b24tY2FyZXQ+fGIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2Rl
bGV0ZS1saXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwtNS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9kZWxldGluZy9kZWxldGUtbGlzdC1pdGVtcy1pbi10YWJsZS1jZWxsLTUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44ZjYwZDQyNDg5NDg1YWQzZTg4ZTY3ZmQ3MjFlNmRiYjFmNWM0ODhjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGlzdC1pdGVtcy1p
bi10YWJsZS1jZWxsLTUuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGJvZHk+CisgICAgPGRpdiBpZD0iY29udGFpbmVyIj48dGFibGUgYm9yZGVyPSIxIj48
dHI+PHRkIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+PG9sPjxsaT5hPC9saT48bGkgaWQ9ImxpIj58
YjwvbGk+PC9vbD48L3RkPjwvdHI+PC90YWJsZT48L2Rpdj4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0Pgor
ICAgICAgICBNYXJrdXAuZGVzY3JpcHRpb24oJ1doZW4gZGVsZXRpbmcgdGhlIHNlY29uZCBvcmRl
cmVkIGxpc3QgaXRlbXMgaW4gYSB0YWJsZSBjZWxsLCB0aGF0IGl0IGlzIHRoZSByb290IGVkaXRh
YmxlIGVsZW1lbnQsIGl0cyBjb250ZW50IGlzIG1lcmdlZCB3aXRoIHRoZSBmaXJzdCBsaXN0IGl0
ZW06Jyk7CisKKyAgICAgICAgZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2UoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImxpIiksIDApOworICAgICAgICBNYXJrdXAuZHVtcCgnY29udGFpbmVyJywgJ0Jl
Zm9yZScpOworCisgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJEZWxldGUiKTsKKyAgICAg
ICAgTWFya3VwLmR1bXAoJ2NvbnRhaW5lcicsICdBZnRlcicpOworICAgIDwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9k
ZWxldGUtbGlzdC1pdGVtcy1pbi10YWJsZS1jZWxsLTYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGlzdC1pdGVtcy1pbi10YWJsZS1jZWxsLTYtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhOThkZjM2OGIzNjE5MjlhY2MzOWJiMDA0ZjEwMzI4YzZl
Y2I0ODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2Rl
bGV0ZS1saXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwtNi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwy
NSBAQAorV2hlbiBkZWxldGluZyB0aGUgbGFzdCBvcmRlcmVkIGxpc3QgaXRlbSBpbiBhIHRhYmxl
IGNlbGwsIHRoYXQgaXQgaXMgdGhlIHJvb3QgZWRpdGFibGUgZWxlbWVudCwgd2UgbXVzdCBkZWxl
dGUgdGhlIHdob2xlIG9yZGVyZWQgbGlzdDoKKworQmVmb3JlOgorfCA8dGFibGU+Cit8ICAgYm9y
ZGVyPSIxIgorfCAgIDx0Ym9keT4KK3wgICAgIDx0cj4KK3wgICAgICAgPHRkPgorfCAgICAgICAg
IGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIKK3wgICAgICAgICA8b2w+Cit8ICAgICAgICAgICA8bGk+
Cit8ICAgICAgICAgICAgIGlkPSJsaSIKK3wgICAgICAgICAgICAgPCNzZWxlY3Rpb24tY2FyZXQ+
Cit8ICAgICAgICAgICAgIDxicj4KKworQWZ0ZXI6Cit8IDx0YWJsZT4KK3wgICBib3JkZXI9IjEi
Cit8ICAgPHRib2R5PgorfCAgICAgPHRyPgorfCAgICAgICA8dGQ+Cit8ICAgICAgICAgY29udGVu
dGVkaXRhYmxlPSJ0cnVlIgorfCAgICAgICAgIDxkaXY+Cit8ICAgICAgICAgICA8I3NlbGVjdGlv
bi1jYXJldD4KK3wgICAgICAgICAgIDxicj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvZGVsZXRpbmcvZGVsZXRlLWxpc3QtaXRlbXMtaW4tdGFibGUtY2VsbC02Lmh0bWwgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwt
Ni5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjY2MzFiYzVkZjRiN2M3MTA5M2FiY2RkMjNhMDhjYWRmMWRlY2Uz
ODAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0
ZS1saXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwtNi5odG1sCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJjb250YWluZXIiPjx0YWJs
ZSBib3JkZXI9IjEiPjx0cj48dGQgY29udGVudGVkaXRhYmxlPSJ0cnVlIj48b2w+PGxpIGlkPSJs
aSI+PGJyPjwvbGk+PC9vbD48L3RkPjwvdHI+PC90YWJsZT48L2Rpdj4KKyAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0PgorICAgICAgICBNYXJrdXAuZGVzY3JpcHRpb24oJ1doZW4gZGVsZXRpbmcgdGhlIGxhc3Qg
b3JkZXJlZCBsaXN0IGl0ZW0gaW4gYSB0YWJsZSBjZWxsLCB0aGF0IGl0IGlzIHRoZSByb290IGVk
aXRhYmxlIGVsZW1lbnQsIHdlIG11c3QgZGVsZXRlIHRoZSB3aG9sZSBvcmRlcmVkIGxpc3Q6Jyk7
CisKKyAgICAgICAgZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2UoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImxpIiksIDApOworICAgICAgICBNYXJrdXAuZHVtcCgnY29udGFpbmVyJywgJ0JlZm9yZScp
OworCisgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJEZWxldGUiKTsKKyAgICAgICAgTWFy
a3VwLmR1bXAoJ2NvbnRhaW5lcicsICdBZnRlcicpOworICAgIDwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9kZWxldGUt
bGlzdC1pdGVtcy1pbi10YWJsZS1jZWxsLTctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9kZWxldGluZy9kZWxldGUtbGlzdC1pdGVtcy1pbi10YWJsZS1jZWxsLTctZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjYzNjk2NGY2NTcxZTUwOGYwNWRhNDhjZGIzNTg4ZGY2NzgzZDk1OWIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1s
aXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwtNy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyOCBAQAor
V2hlbiBkZWxldGluZyB0aGUgc2Vjb25kIG9yZGVyZWQgbGlzdCBpdGVtcyBpbiBhIHRhYmxlIGNl
bGwsIHdoaWNoIGVudGlyZSBjb250ZW50IGlzIGEgY29udGVudGVkaXRhYmxlIGFyZWEsIGl0cyBj
b250ZW50IGlzIG1lcmdlZCB3aXRoIHRoZSBmaXJzdCBsaXN0IGl0ZW06CisKK0JlZm9yZToKK3wg
PHRhYmxlPgorfCAgIGJvcmRlcj0iMSIKK3wgICA8dGJvZHk+Cit8ICAgICA8dHI+Cit8ICAgICAg
IDx0ZD4KK3wgICAgICAgICA8ZGl2PgorfCAgICAgICAgICAgY29udGVudGVkaXRhYmxlPSJ0cnVl
IgorfCAgICAgICAgICAgPG9sPgorfCAgICAgICAgICAgICA8bGk+Cit8ICAgICAgICAgICAgICAg
ImEiCit8ICAgICAgICAgICAgIDxsaT4KK3wgICAgICAgICAgICAgICBpZD0ibGkiCit8ICAgICAg
ICAgICAgICAgIjwjc2VsZWN0aW9uLWNhcmV0PnxiIgorCitBZnRlcjoKK3wgPHRhYmxlPgorfCAg
IGJvcmRlcj0iMSIKK3wgICA8dGJvZHk+Cit8ICAgICA8dHI+Cit8ICAgICAgIDx0ZD4KK3wgICAg
ICAgICA8ZGl2PgorfCAgICAgICAgICAgY29udGVudGVkaXRhYmxlPSJ0cnVlIgorfCAgICAgICAg
ICAgPG9sPgorfCAgICAgICAgICAgICA8bGk+Cit8ICAgICAgICAgICAgICAgImE8I3NlbGVjdGlv
bi1jYXJldD58YiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVs
ZXRlLWxpc3QtaXRlbXMtaW4tdGFibGUtY2VsbC03Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L2RlbGV0aW5nL2RlbGV0ZS1saXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwtNy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk0MTFmOGU4N2QxNzVjMzBjMTZhODIwZWRkOWI2OWUwYzAxMmM4NzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saXN0LWl0ZW1zLWlu
LXRhYmxlLWNlbGwtNy5odG1sCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJjb250YWluZXIiPjx0YWJsZSBib3JkZXI9IjEiPjx0
cj48dGQ+PGRpdiBjb250ZW50ZWRpdGFibGU9InRydWUiPjxvbD48bGk+YTwvbGk+PGxpIGlkPSJs
aSI+fGI8L2xpPjwvb2w+PC9kaXY+PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+CisgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdD4KKyAgICAgICAgTWFya3VwLmRlc2NyaXB0aW9uKCdXaGVuIGRlbGV0aW5nIHRoZSBz
ZWNvbmQgb3JkZXJlZCBsaXN0IGl0ZW1zIGluIGEgdGFibGUgY2VsbCwgd2hpY2ggZW50aXJlIGNv
bnRlbnQgaXMgYSBjb250ZW50ZWRpdGFibGUgYXJlYSwgaXRzIGNvbnRlbnQgaXMgbWVyZ2VkIHdp
dGggdGhlIGZpcnN0IGxpc3QgaXRlbTonKTsKKworICAgICAgICBnZXRTZWxlY3Rpb24oKS5jb2xs
YXBzZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGkiKSwgMCk7CisgICAgICAgIE1hcmt1cC5k
dW1wKCdjb250YWluZXInLCAnQmVmb3JlJyk7CisKKyAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1h
bmQoIkRlbGV0ZSIpOworICAgICAgICBNYXJrdXAuZHVtcCgnY29udGFpbmVyJywgJ0FmdGVyJyk7
CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwtOC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saXN0LWl0ZW1z
LWluLXRhYmxlLWNlbGwtOC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVmM2M0MjIxMTU0ZGY3
NDJlMmY3ZDk5Y2Q2NWQ0NmZmMWM0NTZlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpc3QtaXRlbXMtaW4tdGFibGUtY2VsbC04LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDI3IEBACitXaGVuIGRlbGV0aW5nIHRoZSBsYXN0IG9yZGVyZWQg
bGlzdCBpdGVtIGluIGEgdGFibGUgY2VsbCwgd2hpY2ggZW50aXJlIGNvbnRlbnQgaXMgYSBjb250
ZW50ZWRpdGFibGUgYXJlYSwgd2UgbXVzdCBkZWxldGUgdGhlIHdob2xlIG9yZGVyZWQgbGlzdDoK
KworQmVmb3JlOgorfCA8dGFibGU+Cit8ICAgYm9yZGVyPSIxIgorfCAgIDx0Ym9keT4KK3wgICAg
IDx0cj4KK3wgICAgICAgPHRkPgorfCAgICAgICAgIDxkaXY+Cit8ICAgICAgICAgICBjb250ZW50
ZWRpdGFibGU9InRydWUiCit8ICAgICAgICAgICA8b2w+Cit8ICAgICAgICAgICAgIDxsaT4KK3wg
ICAgICAgICAgICAgICBpZD0ibGkiCit8ICAgICAgICAgICAgICAgPCNzZWxlY3Rpb24tY2FyZXQ+
Cit8ICAgICAgICAgICAgICAgPGJyPgorCitBZnRlcjoKK3wgPHRhYmxlPgorfCAgIGJvcmRlcj0i
MSIKK3wgICA8dGJvZHk+Cit8ICAgICA8dHI+Cit8ICAgICAgIDx0ZD4KK3wgICAgICAgICA8ZGl2
PgorfCAgICAgICAgICAgY29udGVudGVkaXRhYmxlPSJ0cnVlIgorfCAgICAgICAgICAgPGRpdj4K
K3wgICAgICAgICAgICAgPCNzZWxlY3Rpb24tY2FyZXQ+Cit8ICAgICAgICAgICAgIDxicj4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpc3QtaXRlbXMt
aW4tdGFibGUtY2VsbC04Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0
ZS1saXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwtOC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkZjM0YWM3NGJi
NWU4ZjRiZjg4OGZiNzZmNzEyYjQ1YTFlN2NjNDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saXN0LWl0ZW1zLWluLXRhYmxlLWNlbGwtOC5o
dG1sCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKyAg
ICA8ZGl2IGlkPSJjb250YWluZXIiPjx0YWJsZSBib3JkZXI9IjEiPjx0cj48dGQ+PGRpdiBjb250
ZW50ZWRpdGFibGU9InRydWUiPjxvbD48bGkgaWQ9ImxpIj48YnI+PC9saT48L29sPjwvZGl2Pjwv
dGQ+PC90cj48L3RhYmxlPjwvZGl2PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
ZHVtcC1hcy1tYXJrdXAuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIE1hcmt1
cC5kZXNjcmlwdGlvbignV2hlbiBkZWxldGluZyB0aGUgbGFzdCBvcmRlcmVkIGxpc3QgaXRlbSBp
biBhIHRhYmxlIGNlbGwsIHdoaWNoIGVudGlyZSBjb250ZW50IGlzIGEgY29udGVudGVkaXRhYmxl
IGFyZWEsIHdlIG11c3QgZGVsZXRlIHRoZSB3aG9sZSBvcmRlcmVkIGxpc3Q6Jyk7CisKKyAgICAg
ICAgZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2UoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxpIiks
IDApOworICAgICAgICBNYXJrdXAuZHVtcCgnY29udGFpbmVyJywgJ0JlZm9yZScpOworCisgICAg
ICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJEZWxldGUiKTsKKyAgICAgICAgTWFya3VwLmR1bXAo
J2NvbnRhaW5lcicsICdBZnRlcicpOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>