<?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>49492</bug_id>
          
          <creation_ts>2010-11-13 05:09:08 -0800</creation_ts>
          <short_desc>Web Inspector: Migrate frontend to the new CSS editing/retrieval API</short_desc>
          <delta_ts>2010-11-16 09:04:08 -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>Web Inspector (Deprecated)</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></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>ap</cc>
    
    <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>308961</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-11-13 05:09:08 -0800</bug_when>
    <thetext>Now that InspectorCSSAgent is live, the WebInspector frontend should be migrated to the new set of CSS-related InspectorBackend API methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309298</commentid>
    <comment_count>1</comment_count>
      <attachid>73903</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-11-15 08:54:35 -0800</bug_when>
    <thetext>Created attachment 73903
[PATCH] Suggested solution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309304</commentid>
    <comment_count>2</comment_count>
      <attachid>73903</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-11-15 09:04:01 -0800</bug_when>
    <thetext>Comment on attachment 73903
[PATCH] Suggested solution

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

&gt; WebCore/inspector/front-end/CSSStyleModel.js:508
&gt; +    get text()

Nit: getText: function()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309719</commentid>
    <comment_count>3</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-11-16 07:38:07 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
        M       LayoutTests/ChangeLog
        M       LayoutTests/inspector/audits-panel-functional-expected.txt
        M       LayoutTests/inspector/elements-panel-styles-expected.txt
        A       LayoutTests/inspector/resources/styles-new-API.css
        A       LayoutTests/inspector/styles-new-API-expected.txt
        A       LayoutTests/inspector/styles-new-API.html
        M       WebCore/ChangeLog
        M       WebCore/inspector/InspectorStyleSheet.cpp
        M       WebCore/inspector/front-end/AuditRules.js
        M       WebCore/inspector/front-end/CSSStyleModel.js
        M       WebCore/inspector/front-end/Settings.js
        M       WebCore/inspector/front-end/StylesSidebarPane.js
        M       WebCore/inspector/front-end/inspector.css
Committed r72096</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309753</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-16 09:04:08 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/72096 might have broken GTK Linux 32-bit Debug</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73903</attachid>
            <date>2010-11-15 08:54:35 -0800</date>
            <delta_ts>2010-11-15 09:04:01 -0800</delta_ts>
            <desc>[PATCH] Suggested solution</desc>
            <filename>fecssagent.patch</filename>
            <type>text/plain</type>
            <size>61206</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDZhYTI0NGFmMTZmY2JlMDI2NzNjZDRmZjMxNDgzYjQ5NDMzYzE1MjIKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUaHUgU2VwIDE2
IDIwOjA0OjA0IDIwMTAgKzA0MDAKCiAgICBXSVAgLSBGcm9udGVuZAoKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0OGI2Mjc2
Li4zYTIxNTI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMTEtMTUgIEFsZXhhbmRlciBQ
YXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBNaWdyYXRlIGZyb250ZW5kIHRv
IHRoZSBuZXcgQ1NTIGVkaXRpbmcvcmV0cmlldmFsIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk0OTIKKworICAgICAgICAqIGluc3BlY3Rvci9h
dWRpdHMtcGFuZWwtZnVuY3Rpb25hbC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9y
L2VsZW1lbnRzLXBhbmVsLXN0eWxlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9y
L3Jlc291cmNlcy9zdHlsZXMtbmV3LUFQSS5jc3M6IEFkZGVkLgorICAgICAgICAoaHRtbCk6Cisg
ICAgICAgIChib2R5KToKKyAgICAgICAgKC8qIGNvbW1lbnQgYmVmb3JlIHNlbGVjdG9yICovYm9k
eS5tYWluMS8qIGNvbW1lbnQgYWZ0ZXIgc2VsZWN0b3IgKi8pOgorICAgICAgICAoYm9keS5tYWlu
Mik6CisgICAgICAgIChib2R5OjphZnRlcik6CisgICAgICAgIChoMSk6CisgICAgICAgICogaW5z
cGVjdG9yL3N0eWxlcy1uZXctQVBJLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5z
cGVjdG9yL3N0eWxlcy1uZXctQVBJLmh0bWw6IEFkZGVkLgorCiAyMDEwLTExLTEzICBTaGluaWNo
aXJvIEhhbWFqaSAgPGhhbWFqaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
S2VudCBUYW11cmEuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvYXVkaXRzLXBh
bmVsLWZ1bmN0aW9uYWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0
cy1wYW5lbC1mdW5jdGlvbmFsLWV4cGVjdGVkLnR4dAppbmRleCBlZmI5NDZiLi41N2UwNDUwIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvYXVkaXRzLXBhbmVsLWZ1bmN0aW9uYWwt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9hdWRpdHMtcGFuZWwtZnVu
Y3Rpb25hbC1leHBlY3RlZC50eHQKQEAgLTIyLDE1ICsyMiwxNSBAQCBUZXN0cyBhdWRpdCBydWxl
cy4KICAgICAgIHNob3VsZCBiZSBtb3ZlZCB0byB0aGUgZG9jdW1lbnQgaGVhZCBpbiAKICAgICAg
IGF1ZGl0cy1wYW5lbC1mdW5jdGlvbmFsLmh0bWwKICAgICBSZW1vdmUgdW51c2VkIENTUyBydWxl
cyAoNCkKLSAgICAgMTAwJSBvZiBDU1MgKGVzdGltYXRlZCkgaXMgbm90IHVzZWQgYnkgdGhlIGN1
cnJlbnQgcGFnZS4KLSAgICAgIElubGluZSBibG9jayAjMTogMTAwJSAoZXN0aW1hdGVkKSBpcyBu
b3QgdXNlZCBieSB0aGUgY3VycmVudCBwYWdlLgorICAgICAxNDFCICgxMDAlKSBvZiBDU1MgaXMg
bm90IHVzZWQgYnkgdGhlIGN1cnJlbnQgcGFnZS4KKyAgICAgIElubGluZSBibG9jayAjMTogMjlC
ICgxMDAlKSBpcyBub3QgdXNlZCBieSB0aGUgY3VycmVudCBwYWdlLgogICAgICAgIC51bnVzZWQK
ICAgICAgICBhdWRpdHMtc3R5bGUxLmNzcwotICAgICAgOiAxMDAlIChlc3RpbWF0ZWQpIGlzIG5v
dCB1c2VkIGJ5IHRoZSBjdXJyZW50IHBhZ2UuCisgICAgICA6IDQzQiAoMTAwJSkgaXMgbm90IHVz
ZWQgYnkgdGhlIGN1cnJlbnQgcGFnZS4KICAgICAgICAuc29tZS1zdHlsZQotICAgICAgSW5saW5l
IGJsb2NrICMyOiAxMDAlIChlc3RpbWF0ZWQpIGlzIG5vdCB1c2VkIGJ5IHRoZSBjdXJyZW50IHBh
Z2UuCisgICAgICBJbmxpbmUgYmxvY2sgIzI6IDI2QiAoMTAwJSkgaXMgbm90IHVzZWQgYnkgdGhl
IGN1cnJlbnQgcGFnZS4KICAgICAgICAudmlvbGF0aW9uCiAgICAgICAgYXVkaXRzLXN0eWxlMS5j
c3MKLSAgICAgIDogMTAwJSAoZXN0aW1hdGVkKSBpcyBub3QgdXNlZCBieSB0aGUgY3VycmVudCBw
YWdlLgorICAgICAgOiA0M0IgKDEwMCUpIGlzIG5vdCB1c2VkIGJ5IHRoZSBjdXJyZW50IHBhZ2Uu
CiAgICAgICAgLnNvbWUtc3R5bGUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2VsZW1lbnRzLXBhbmVsLXN0eWxlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZWxlbWVudHMtcGFuZWwtc3R5bGVzLWV4cGVjdGVkLnR4dAppbmRleCA0ZGNlYTg0Li4zMmM2
ZmNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtc3R5
bGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFu
ZWwtc3R5bGVzLWV4cGVjdGVkLnR4dApAQCAtMjgsMTIgKzI4LDEyIEBAIGRpc3BsYXk6IG5vbmU7
CiBbZXhwYW5kZWRdIC5mb28geyAoZWxlbWVudHMtcGFuZWwtc3R5bGVzLmNzczozMykKIAogW2V4
cGFuZGVkXSAuZm9vLCAuZm9vOjpiZWZvcmUgeyAoZWxlbWVudHMtcGFuZWwtc3R5bGVzLmNzczox
NSkKK2NvbnRlbnQ6ICJbYmVmb3JlIEZvb10iOwogY29sb3I6IGJsdWU7Ci1jb250ZW50OiAnW2Jl
Zm9yZSBGb29dJzsKIAogW2V4cGFuZGVkXSAuZm9vIHsgKGVsZW1lbnRzLXBhbmVsLXN0eWxlcy5j
c3M6MTApCiAvLS0gb3ZlcmxvYWRlZCAtLS8gY29sb3I6IGJsYWNrOwotbWFyZ2luOiAxMHB4IDBw
eCAycHg7CittYXJnaW46IDEwcHggMCAycHg7CiAgICAgbWFyZ2luLXRvcDogMTBweDsKICAgICBt
YXJnaW4tcmlnaHQ6IDBweDsKICAgICBtYXJnaW4tYm90dG9tOiAycHg7CkBAIC01OSwxOCArNTks
MTggQEAgZm9udC1zaXplOiAxNHB4OwogY29sb3I6IHJlZDsKIAogW2V4cGFuZGVkXSAuZm9vLCAu
Zm9vOjpiZWZvcmUgeyAoZWxlbWVudHMtcGFuZWwtc3R5bGVzLmNzczoxNSkKK2NvbnRlbnQ6ICJb
YmVmb3JlIEZvb10iOwogLy0tIG92ZXJsb2FkZWQgLS0vIGNvbG9yOiBibHVlOwotY29udGVudDog
J1tiZWZvcmUgRm9vXSc7CiAKIAogPT09PT09PT0gUHNldWRvIDo6YWZ0ZXIgZWxlbWVudCA9PT09
PT09PQogW2V4cGFuZGVkXSAuZm9vOjphZnRlciB7IChlbGVtZW50cy1wYW5lbC1zdHlsZXMuY3Nz
OjI4KQotY29udGVudDogJ1thZnRlciBGb28gMl0nOwogZm9udC1mYW1pbHk6IGNvdXJpZXI7Citj
b250ZW50OiAiW2FmdGVyIEZvbyAyXSI7CiAKIFtleHBhbmRlZF0gLmZvbzo6YWZ0ZXIgeyAoZWxl
bWVudHMtcGFuZWwtc3R5bGVzLmNzczoyNCkKKy8tLSBvdmVybG9hZGVkIC0tLyBjb250ZW50OiAi
W2FmdGVyIEZvb10iOwogY29sb3I6IGdyZWVuOwotLy0tIG92ZXJsb2FkZWQgLS0vIGNvbnRlbnQ6
ICdbYWZ0ZXIgRm9vXSc7CiAKIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
cmVzb3VyY2VzL3N0eWxlcy1uZXctQVBJLmNzcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXNv
dXJjZXMvc3R5bGVzLW5ldy1BUEkuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjdiN2I4ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVz
b3VyY2VzL3N0eWxlcy1uZXctQVBJLmNzcwpAQCAtMCwwICsxLDI2IEBACitodG1sIHsKKyAgICBm
b250LXdlaWdodDogNDAwOworfQorCitib2R5IHsKKyAgICBmb250LXNpemU6IDEycHg7CisgICAg
Zm9vOiBiYXIgIQorCisgICAgaW1wb3J0YW50IC8qICFpbXBvcnRhbnQgcHJvcGVydHkgbm90IHJl
Y29nbml6ZWQgYnkgV2ViQ29yZSAqLzsKKyAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKKyAg
ICBjb2xvcno6ICIhaW1wb3J0YW50IjsKKyAgICBpbXBvcnRhbnQ6IWltcG9ydGFudDsKKyAgICBj
b2xvcjogImJhZGNvbG9yIiAhIGltcG9ydGFudCAvKiBnb29kIHByb3BlcnR5IHdpdGggc3RyYW5n
ZSB2YWx1ZSAqLzsKK30KKworLyogY29tbWVudCBiZWZvcmUgc2VsZWN0b3IgKi9ib2R5Lm1haW4x
LyogY29tbWVudCBhZnRlciBzZWxlY3RvciAqL3svKiBjb21tZW50ICovY29sb3I6ICNGMDBCQUE7
em9vOm1vbyAvKiBub3QgYW4gIWltcG9ydGFudCB1bnJlY29nbml6ZWQgcHJvcGVydHkgKi99Lyog
Y29tbWVudCAqLworCitib2R5Lm1haW4ye2JhY2tncm91bmQ6IGdyZWVuIC8qIHZhbHVlICFpbXBv
cnRhbnQgY29tbWVudCAqLyAhaW1wb3J0YW50IC8qIG5vIHNlbWljb2xvbiwgdmVyeSAhaW1wb3J0
YW50ICovfQorCitib2R5OjphZnRlciAgeworICAgIGNvbnRlbnQ6ICJBZnRlciBib2R5IjsKK30K
KworaDEgeworICAgIGhlaWdodCA6IDEwMCUgOyBib3JkZXI6IDFweCBzb2xpZDsgYm9yZGVyLXdp
ZHRoOiAycHg7IGJhY2tncm91bmQtY29sb3IgOiAjMzNGRjMzOyBnb29nbGVzOiBhYnJhOyBmb286
IC5iYXI7IC1tb3otZ29vZzogMSoqKjsgYm9yZGVyLXdpZHRoOiAwcHg7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLW5ldy1BUEktZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1uZXctQVBJLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmQ4N2UyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1uZXctQVBJLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDM0MSBAQAorVGVzdHMgdGhhdCBJbnNwZWN0b3JDU1NBZ2VudCBBUEkgbWV0aG9kcyB3b3JrIGFz
IGV4cGVjdGVkLgorCitIMQorCisKKz09PSBDb21wdXRlZCBzdHlsZSBwcm9wZXJ0eSBjb3VudCBm
b3IgYm9keSA9PT0KK09LCisKKz09PSBNYXRjaGVkIHJ1bGVzIGZvciBib2R5ID09PQorCitydWxl
Citib2R5OiBbdXNlci1hZ2VudF0KK1snZGlzcGxheSc6J2Jsb2NrJ10gQFt1bmRlZmluZWQtdW5k
ZWZpbmVkXSBzdHlsZQorWydtYXJnaW4tdG9wJzonOHB4J10gQFt1bmRlZmluZWQtdW5kZWZpbmVk
XSBzdHlsZQorWydtYXJnaW4tcmlnaHQnOic4cHgnXSBAW3VuZGVmaW5lZC11bmRlZmluZWRdIHN0
eWxlCitbJ21hcmdpbi1ib3R0b20nOic4cHgnXSBAW3VuZGVmaW5lZC11bmRlZmluZWRdIHN0eWxl
CitbJ21hcmdpbi1sZWZ0JzonOHB4J10gQFt1bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQorCity
dWxlCitib2R5OiBbXQorWydmb250LXNpemUnOicxMnB4J10gQFs1LTIxXSBhY3RpdmUKK1snZm9v
JzonYmFyICEKKworICAgIGltcG9ydGFudCAvKiAhaW1wb3J0YW50IHByb3BlcnR5IG5vdCByZWNv
Z25pemVkIGJ5IFdlYkNvcmUgKi8nIGlzLWltcG9ydGFudCBub24tcGFyc2VkXSBAWzI2LTEwNF0g
YWN0aXZlCitbJ2hlaWdodCc6JzEwMCUgIWltcG9ydGFudCcgaXMtaW1wb3J0YW50XSBAWzEwOS0x
MzNdIGFjdGl2ZQorWydjb2xvcnonOiciIWltcG9ydGFudCInIG5vbi1wYXJzZWRdIEBbMTM4LTE1
OV0gYWN0aXZlCitbJ2ltcG9ydGFudCc6JyFpbXBvcnRhbnQnIG5vbi1wYXJzZWRdIEBbMTY0LTE4
NV0gYWN0aXZlCitbJ2NvbG9yJzonImJhZGNvbG9yIiAhIGltcG9ydGFudCAvKiBnb29kIHByb3Bl
cnR5IHdpdGggc3RyYW5nZSB2YWx1ZSAqLycgaXMtaW1wb3J0YW50XSBAWzE5MC0yNTldIGFjdGl2
ZQorCitydWxlCitib2R5Lm1haW4xOiBbXQorWydjb2xvcic6JyNGMDBCQUEnXSBAWzEzLTI4XSBh
Y3RpdmUKK1snem9vJzonbW9vIC8qIG5vdCBhbiAhaW1wb3J0YW50IHVucmVjb2duaXplZCBwcm9w
ZXJ0eSAqLycgbm9uLXBhcnNlZF0gQFsyOC04MV0gYWN0aXZlCisKK3J1bGUKK2JvZHkubWFpbjI6
IFtdCitbJ2JhY2tncm91bmQnOidncmVlbiAvKiB2YWx1ZSAhaW1wb3J0YW50IGNvbW1lbnQgKi8g
IWltcG9ydGFudCAvKiBubyBzZW1pY29sb24sIHZlcnkgIWltcG9ydGFudCAqLycgaXMtaW1wb3J0
YW50XSBAWzAtOTVdIGFjdGl2ZQorWydiYWNrZ3JvdW5kLWltYWdlJzonaW5pdGlhbCcgaXMtaW1w
b3J0YW50XSBAW3VuZGVmaW5lZC11bmRlZmluZWRdIHN0eWxlCitbJ2JhY2tncm91bmQtcmVwZWF0
LXgnOidpbml0aWFsJyBpcy1pbXBvcnRhbnRdIEBbdW5kZWZpbmVkLXVuZGVmaW5lZF0gc3R5bGUK
K1snYmFja2dyb3VuZC1yZXBlYXQteSc6J2luaXRpYWwnIGlzLWltcG9ydGFudF0gQFt1bmRlZmlu
ZWQtdW5kZWZpbmVkXSBzdHlsZQorWydiYWNrZ3JvdW5kLWF0dGFjaG1lbnQnOidpbml0aWFsJyBp
cy1pbXBvcnRhbnRdIEBbdW5kZWZpbmVkLXVuZGVmaW5lZF0gc3R5bGUKK1snYmFja2dyb3VuZC1w
b3NpdGlvbi14JzonaW5pdGlhbCcgaXMtaW1wb3J0YW50XSBAW3VuZGVmaW5lZC11bmRlZmluZWRd
IHN0eWxlCitbJ2JhY2tncm91bmQtcG9zaXRpb24teSc6J2luaXRpYWwnIGlzLWltcG9ydGFudF0g
QFt1bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQorWydiYWNrZ3JvdW5kLW9yaWdpbic6J2luaXRp
YWwnIGlzLWltcG9ydGFudF0gQFt1bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQorWydiYWNrZ3Jv
dW5kLWNsaXAnOidpbml0aWFsJyBpcy1pbXBvcnRhbnRdIEBbdW5kZWZpbmVkLXVuZGVmaW5lZF0g
c3R5bGUKK1snYmFja2dyb3VuZC1jb2xvcic6J2dyZWVuJyBpcy1pbXBvcnRhbnRdIEBbdW5kZWZp
bmVkLXVuZGVmaW5lZF0gc3R5bGUKKworcnVsZQorYm9keS5tYWlucGFnZTogW10KK1sndGV4dC1k
ZWNvcmF0aW9uJzonbm9uZSddIEBbNS0yN10gYWN0aXZlCitbJ2JhZHByb3BlcnR5JzonMWJhZHZh
bHVlMScgbm9uLXBhcnNlZF0gQFsxMDctMTMxXSBhY3RpdmUKKworPT09IFBzZXVkbyBydWxlcyBm
b3IgYm9keSA9PT0KK1BzZXVkb0lkPTQKKworcnVsZQorYm9keTo6YWZ0ZXI6IFtdCitbJ2NvbnRl
bnQnOiciQWZ0ZXIgYm9keSInXSBAWzUtMjddIGFjdGl2ZQorCis9PT0gSW5oZXJpdGVkIHN0eWxl
cyBmb3IgYm9keSA9PT0KK0xldmVsPTEKKworcnVsZQoraHRtbDogW3VzZXItYWdlbnRdCitbJ2Rp
c3BsYXknOidibG9jayddIEBbdW5kZWZpbmVkLXVuZGVmaW5lZF0gc3R5bGUKKworcnVsZQoraHRt
bDogW10KK1snZm9udC13ZWlnaHQnOic0MDAnXSBAWzUtMjJdIGFjdGl2ZQorCis9PT0gSW5saW5l
IHN0eWxlIGZvciBib2R5ID09PQorCitzdHlsZQorcmF3IHN0eWxlCitbJ2ZvbnQtd2VpZ2h0Jzon
bm9ybWFsJ10gQFswLTIwXSBhY3RpdmUKK1snd2lkdGgnOic4NSUnXSBAWzIxLTMxXSBhY3RpdmUK
KworPT09IEF0dHJpYnV0ZSBzdHlsZXMgZm9yIHRhYmxlID09PQorQXR0cmlidXRlOiB3aWR0aAor
CitzdHlsZQorcmF3IHN0eWxlCitbJ3dpZHRoJzonNTAlJ10gQFt1bmRlZmluZWQtdW5kZWZpbmVk
XSBzdHlsZQorCis9PT0gQWxsIHN0eWxlc2hlZXRzID09PQorCitTdHlsZVNoZWV0OiAnaHRtbCB7
CisgICAgZm9udC13ZWlnaHQ6IDQwMDsKK30KKworYm9keSB7CisgICAgZm9udC1zaXplOiAxMnB4
OworICAgIGZvbzogYmFyICEKKworICAgIGltcG9ydGFudCAvKiAhaW1wb3J0YW50IHByb3BlcnR5
IG5vdCByZWNvZ25pemVkIGJ5IFdlYkNvcmUgKi87CisgICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRh
bnQ7CisgICAgY29sb3J6OiAiIWltcG9ydGFudCI7CisgICAgaW1wb3J0YW50OiFpbXBvcnRhbnQ7
CisgICAgY29sb3I6ICJiYWRjb2xvciIgISBpbXBvcnRhbnQgLyogZ29vZCBwcm9wZXJ0eSB3aXRo
IHN0cmFuZ2UgdmFsdWUgKi87Cit9CisKKy8qIGNvbW1lbnQgYmVmb3JlIHNlbGVjdG9yICovYm9k
eS5tYWluMS8qIGNvbW1lbnQgYWZ0ZXIgc2VsZWN0b3IgKi97LyogY29tbWVudCAqL2NvbG9yOiAj
RjAwQkFBO3pvbzptb28gLyogbm90IGFuICFpbXBvcnRhbnQgdW5yZWNvZ25pemVkIHByb3BlcnR5
ICovfS8qIGNvbW1lbnQgKi8KKworYm9keS5tYWluMntiYWNrZ3JvdW5kOiBncmVlbiAvKiB2YWx1
ZSAhaW1wb3J0YW50IGNvbW1lbnQgKi8gIWltcG9ydGFudCAvKiBubyBzZW1pY29sb24sIHZlcnkg
IWltcG9ydGFudCAqL30KKworYm9keTo6YWZ0ZXIgIHsKKyAgICBjb250ZW50OiAiQWZ0ZXIgYm9k
eSI7Cit9CisKK2gxIHsKKyAgICBoZWlnaHQgOiAxMDAlIDsgYm9yZGVyOiAxcHggc29saWQ7IGJv
cmRlci13aWR0aDogMnB4OyBiYWNrZ3JvdW5kLWNvbG9yIDogIzMzRkYzMzsgZ29vZ2xlczogYWJy
YTsgZm9vOiAuYmFyOyAtbW96LWdvb2c6IDEqKio7IGJvcmRlci13aWR0aDogMHB4OworfQorJwor
CitydWxlCitodG1sOiBbXQorWydmb250LXdlaWdodCc6JzQwMCddIEBbNS0yMl0gYWN0aXZlCisK
K3J1bGUKK2JvZHk6IFtdCitbJ2ZvbnQtc2l6ZSc6JzEycHgnXSBAWzUtMjFdIGFjdGl2ZQorWydm
b28nOidiYXIgIQorCisgICAgaW1wb3J0YW50IC8qICFpbXBvcnRhbnQgcHJvcGVydHkgbm90IHJl
Y29nbml6ZWQgYnkgV2ViQ29yZSAqLycgaXMtaW1wb3J0YW50IG5vbi1wYXJzZWRdIEBbMjYtMTA0
XSBhY3RpdmUKK1snaGVpZ2h0JzonMTAwJSAhaW1wb3J0YW50JyBpcy1pbXBvcnRhbnRdIEBbMTA5
LTEzM10gYWN0aXZlCitbJ2NvbG9yeic6JyIhaW1wb3J0YW50Iicgbm9uLXBhcnNlZF0gQFsxMzgt
MTU5XSBhY3RpdmUKK1snaW1wb3J0YW50JzonIWltcG9ydGFudCcgbm9uLXBhcnNlZF0gQFsxNjQt
MTg1XSBhY3RpdmUKK1snY29sb3InOiciYmFkY29sb3IiICEgaW1wb3J0YW50IC8qIGdvb2QgcHJv
cGVydHkgd2l0aCBzdHJhbmdlIHZhbHVlICovJyBpcy1pbXBvcnRhbnRdIEBbMTkwLTI1OV0gYWN0
aXZlCisKK3J1bGUKK2JvZHkubWFpbjE6IFtdCitbJ2NvbG9yJzonI0YwMEJBQSddIEBbMTMtMjhd
IGFjdGl2ZQorWyd6b28nOidtb28gLyogbm90IGFuICFpbXBvcnRhbnQgdW5yZWNvZ25pemVkIHBy
b3BlcnR5ICovJyBub24tcGFyc2VkXSBAWzI4LTgxXSBhY3RpdmUKKworcnVsZQorYm9keS5tYWlu
MjogW10KK1snYmFja2dyb3VuZCc6J2dyZWVuIC8qIHZhbHVlICFpbXBvcnRhbnQgY29tbWVudCAq
LyAhaW1wb3J0YW50IC8qIG5vIHNlbWljb2xvbiwgdmVyeSAhaW1wb3J0YW50ICovJyBpcy1pbXBv
cnRhbnRdIEBbMC05NV0gYWN0aXZlCitbJ2JhY2tncm91bmQtaW1hZ2UnOidpbml0aWFsJyBpcy1p
bXBvcnRhbnRdIEBbdW5kZWZpbmVkLXVuZGVmaW5lZF0gc3R5bGUKK1snYmFja2dyb3VuZC1yZXBl
YXQteCc6J2luaXRpYWwnIGlzLWltcG9ydGFudF0gQFt1bmRlZmluZWQtdW5kZWZpbmVkXSBzdHls
ZQorWydiYWNrZ3JvdW5kLXJlcGVhdC15JzonaW5pdGlhbCcgaXMtaW1wb3J0YW50XSBAW3VuZGVm
aW5lZC11bmRlZmluZWRdIHN0eWxlCitbJ2JhY2tncm91bmQtYXR0YWNobWVudCc6J2luaXRpYWwn
IGlzLWltcG9ydGFudF0gQFt1bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQorWydiYWNrZ3JvdW5k
LXBvc2l0aW9uLXgnOidpbml0aWFsJyBpcy1pbXBvcnRhbnRdIEBbdW5kZWZpbmVkLXVuZGVmaW5l
ZF0gc3R5bGUKK1snYmFja2dyb3VuZC1wb3NpdGlvbi15JzonaW5pdGlhbCcgaXMtaW1wb3J0YW50
XSBAW3VuZGVmaW5lZC11bmRlZmluZWRdIHN0eWxlCitbJ2JhY2tncm91bmQtb3JpZ2luJzonaW5p
dGlhbCcgaXMtaW1wb3J0YW50XSBAW3VuZGVmaW5lZC11bmRlZmluZWRdIHN0eWxlCitbJ2JhY2tn
cm91bmQtY2xpcCc6J2luaXRpYWwnIGlzLWltcG9ydGFudF0gQFt1bmRlZmluZWQtdW5kZWZpbmVk
XSBzdHlsZQorWydiYWNrZ3JvdW5kLWNvbG9yJzonZ3JlZW4nIGlzLWltcG9ydGFudF0gQFt1bmRl
ZmluZWQtdW5kZWZpbmVkXSBzdHlsZQorCitydWxlCitib2R5OjphZnRlcjogW10KK1snY29udGVu
dCc6JyJBZnRlciBib2R5IiddIEBbNS0yN10gYWN0aXZlCisKK3J1bGUKK2gxOiBbXQorWydoZWln
aHQnOicxMDAlJ10gQFs1LTIwXSBhY3RpdmUKK1snYm9yZGVyJzonMXB4IHNvbGlkJ10gQFsyMS0z
OV0gYWN0aXZlCitbJ2JvcmRlci13aWR0aCc6JzJweCddIEBbNDAtNThdIGluYWN0aXZlCitbJ2Jh
Y2tncm91bmQtY29sb3InOicjMzNGRjMzJ10gQFs1OS04Nl0gYWN0aXZlCitbJ2dvb2dsZXMnOidh
YnJhJyBub24tcGFyc2VkXSBAWzg3LTEwMV0gYWN0aXZlCitbJ2Zvbyc6Jy5iYXInIG5vbi1wYXJz
ZWRdIEBbMTAyLTExMl0gYWN0aXZlCitbJy1tb3otZ29vZyc6JzEqKionIG5vbi1wYXJzZWRdIEBb
MTEzLTEyOV0gYWN0aXZlCitbJ2JvcmRlci13aWR0aCc6JzBweCddIEBbMTMwLTE0OF0gYWN0aXZl
CitbJ2JvcmRlci10b3Atc3R5bGUnOidzb2xpZCddIEBbdW5kZWZpbmVkLXVuZGVmaW5lZF0gc3R5
bGUKK1snYm9yZGVyLXJpZ2h0LXN0eWxlJzonc29saWQnXSBAW3VuZGVmaW5lZC11bmRlZmluZWRd
IHN0eWxlCitbJ2JvcmRlci1ib3R0b20tc3R5bGUnOidzb2xpZCddIEBbdW5kZWZpbmVkLXVuZGVm
aW5lZF0gc3R5bGUKK1snYm9yZGVyLWxlZnQtc3R5bGUnOidzb2xpZCddIEBbdW5kZWZpbmVkLXVu
ZGVmaW5lZF0gc3R5bGUKK1snYm9yZGVyLWNvbG9yJzonaW5pdGlhbCddIEBbdW5kZWZpbmVkLXVu
ZGVmaW5lZF0gc3R5bGUKK1snYm9yZGVyLXRvcC13aWR0aCc6JzBweCddIEBbdW5kZWZpbmVkLXVu
ZGVmaW5lZF0gc3R5bGUKK1snYm9yZGVyLXJpZ2h0LXdpZHRoJzonMHB4J10gQFt1bmRlZmluZWQt
dW5kZWZpbmVkXSBzdHlsZQorWydib3JkZXItYm90dG9tLXdpZHRoJzonMHB4J10gQFt1bmRlZmlu
ZWQtdW5kZWZpbmVkXSBzdHlsZQorWydib3JkZXItbGVmdC13aWR0aCc6JzBweCddIEBbdW5kZWZp
bmVkLXVuZGVmaW5lZF0gc3R5bGUKKworU3R5bGVTaGVldDogJworCisvKiBBbiBpbmxpbmUgc3R5
bGVzaGVldCAqLworYm9keS5tYWlucGFnZSB7CisgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAv
KiBhdCBsZWFzdCBvbmUgdmFsaWQgcHJvcGVydHkgaXMgbmVjZXNzYXJ5IGZvciBXZWJDb3JlIHRv
IG1hdGNoIGEgcnVsZSAqLworICAgIGJhZHByb3BlcnR5OiAxYmFkdmFsdWUxOworfQorCisnCisK
K3J1bGUKK2JvZHkubWFpbnBhZ2U6IFtdCitbJ3RleHQtZGVjb3JhdGlvbic6J25vbmUnXSBAWzUt
MjddIGFjdGl2ZQorWydiYWRwcm9wZXJ0eSc6JzFiYWR2YWx1ZTEnIG5vbi1wYXJzZWRdIEBbMTA3
LTEzMV0gYWN0aXZlCisKKz09PSBMYXN0IHN0eWxlc2hlZXQgcGF0Y2hlZCA9PT0KKworU3R5bGVT
aGVldDogJ2JvZHkubWFpbnBhZ2UgeyAgICB0ZXh0LWRlY29yYXRpb246IHN0cmlrZXRocm91Z2g7
ICAgIGJhZHByb3BlcnR5OiAyYmFkdmFsdWUyO31ib2R5IHsgICAgdGV4dC1hbGlnbjoganVzdGlm
eTt9JworCitydWxlCitib2R5Lm1haW5wYWdlOiBbXQorWyd0ZXh0LWRlY29yYXRpb24nOidzdHJp
a2V0aHJvdWdoJ10gQFs0LTM1XSBhY3RpdmUKK1snYmFkcHJvcGVydHknOicyYmFkdmFsdWUyJyBu
b24tcGFyc2VkXSBAWzM5LTYzXSBhY3RpdmUKKworcnVsZQorYm9keTogW10KK1sndGV4dC1hbGln
bic6J2p1c3RpZnknXSBAWzQtMjRdIGFjdGl2ZQorCis9PT0gQWZ0ZXIgc2VsZWN0b3Igc2V0ID09
PQorCitTdHlsZVNoZWV0OiAnaHRtbCAqLCBib2R5W2Zvbz0iYmFyIl0geyAgICB0ZXh0LWRlY29y
YXRpb246IHN0cmlrZXRocm91Z2g7ICAgIGJhZHByb3BlcnR5OiAyYmFkdmFsdWUyO31ib2R5IHsg
ICAgdGV4dC1hbGlnbjoganVzdGlmeTt9JworCitydWxlCitodG1sICosIGJvZHlbZm9vPSJiYXIi
XTogW10KK1sndGV4dC1kZWNvcmF0aW9uJzonc3RyaWtldGhyb3VnaCddIEBbNC0zNV0gYWN0aXZl
CitbJ2JhZHByb3BlcnR5JzonMmJhZHZhbHVlMicgbm9uLXBhcnNlZF0gQFszOS02M10gYWN0aXZl
CisKK3J1bGUKK2JvZHk6IFtdCitbJ3RleHQtYWxpZ24nOidqdXN0aWZ5J10gQFs0LTI0XSBhY3Rp
dmUKKworPT09IEFmdGVyIHN0eWxlIHRleHQgc2V0ID09PQorCitTdHlsZVNoZWV0OiAnaHRtbCAq
LCBib2R5W2Zvbz0iYmFyIl0geyAgICAgICAgY29sb3I6IHdoaXRlOyBiYWNrZ3JvdW5kOiBibGFj
azt9Ym9keSB7ICAgIHRleHQtYWxpZ246IGp1c3RpZnk7fScKKworcnVsZQoraHRtbCAqLCBib2R5
W2Zvbz0iYmFyIl06IFtdCitbJ2NvbG9yJzond2hpdGUnXSBAWzgtMjFdIGFjdGl2ZQorWydiYWNr
Z3JvdW5kJzonYmxhY2snXSBAWzIyLTQwXSBhY3RpdmUKK1snYmFja2dyb3VuZC1pbWFnZSc6J2lu
aXRpYWwnXSBAW3VuZGVmaW5lZC11bmRlZmluZWRdIHN0eWxlCitbJ2JhY2tncm91bmQtcmVwZWF0
LXgnOidpbml0aWFsJ10gQFt1bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQorWydiYWNrZ3JvdW5k
LXJlcGVhdC15JzonaW5pdGlhbCddIEBbdW5kZWZpbmVkLXVuZGVmaW5lZF0gc3R5bGUKK1snYmFj
a2dyb3VuZC1hdHRhY2htZW50JzonaW5pdGlhbCddIEBbdW5kZWZpbmVkLXVuZGVmaW5lZF0gc3R5
bGUKK1snYmFja2dyb3VuZC1wb3NpdGlvbi14JzonaW5pdGlhbCddIEBbdW5kZWZpbmVkLXVuZGVm
aW5lZF0gc3R5bGUKK1snYmFja2dyb3VuZC1wb3NpdGlvbi15JzonaW5pdGlhbCddIEBbdW5kZWZp
bmVkLXVuZGVmaW5lZF0gc3R5bGUKK1snYmFja2dyb3VuZC1vcmlnaW4nOidpbml0aWFsJ10gQFt1
bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQorWydiYWNrZ3JvdW5kLWNsaXAnOidpbml0aWFsJ10g
QFt1bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQorWydiYWNrZ3JvdW5kLWNvbG9yJzonYmxhY2sn
XSBAW3VuZGVmaW5lZC11bmRlZmluZWRdIHN0eWxlCisKK3J1bGUKK2JvZHk6IFtdCitbJ3RleHQt
YWxpZ24nOidqdXN0aWZ5J10gQFs0LTI0XSBhY3RpdmUKKworPT09IE1hdGNoZWQgcnVsZXMgYWZ0
ZXIgcnVsZSBhZGRlZCA9PT0KKworcnVsZQorYm9keTogW3VzZXItYWdlbnRdCitbJ2Rpc3BsYXkn
OidibG9jayddIEBbdW5kZWZpbmVkLXVuZGVmaW5lZF0gc3R5bGUKK1snbWFyZ2luLXRvcCc6Jzhw
eCddIEBbdW5kZWZpbmVkLXVuZGVmaW5lZF0gc3R5bGUKK1snbWFyZ2luLXJpZ2h0JzonOHB4J10g
QFt1bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQorWydtYXJnaW4tYm90dG9tJzonOHB4J10gQFt1
bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQorWydtYXJnaW4tbGVmdCc6JzhweCddIEBbdW5kZWZp
bmVkLXVuZGVmaW5lZF0gc3R5bGUKKworcnVsZQorYm9keTogW10KK1snZm9udC1zaXplJzonMTJw
eCddIEBbNS0yMV0gYWN0aXZlCitbJ2Zvbyc6J2JhciAhCisKKyAgICBpbXBvcnRhbnQgLyogIWlt
cG9ydGFudCBwcm9wZXJ0eSBub3QgcmVjb2duaXplZCBieSBXZWJDb3JlICovJyBpcy1pbXBvcnRh
bnQgbm9uLXBhcnNlZF0gQFsyNi0xMDRdIGFjdGl2ZQorWydoZWlnaHQnOicxMDAlICFpbXBvcnRh
bnQnIGlzLWltcG9ydGFudF0gQFsxMDktMTMzXSBhY3RpdmUKK1snY29sb3J6JzonIiFpbXBvcnRh
bnQiJyBub24tcGFyc2VkXSBAWzEzOC0xNTldIGFjdGl2ZQorWydpbXBvcnRhbnQnOichaW1wb3J0
YW50JyBub24tcGFyc2VkXSBAWzE2NC0xODVdIGFjdGl2ZQorWydjb2xvcic6JyJiYWRjb2xvciIg
ISBpbXBvcnRhbnQgLyogZ29vZCBwcm9wZXJ0eSB3aXRoIHN0cmFuZ2UgdmFsdWUgKi8nIGlzLWlt
cG9ydGFudF0gQFsxOTAtMjU5XSBhY3RpdmUKKworcnVsZQoraHRtbCAqLCBib2R5W2Zvbz0iYmFy
Il06IFtdCitbJ2NvbG9yJzond2hpdGUnXSBAWzgtMjFdIGFjdGl2ZQorWydiYWNrZ3JvdW5kJzon
YmxhY2snXSBAWzIyLTQwXSBhY3RpdmUKK1snYmFja2dyb3VuZC1pbWFnZSc6J2luaXRpYWwnXSBA
W3VuZGVmaW5lZC11bmRlZmluZWRdIHN0eWxlCitbJ2JhY2tncm91bmQtcmVwZWF0LXgnOidpbml0
aWFsJ10gQFt1bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQorWydiYWNrZ3JvdW5kLXJlcGVhdC15
JzonaW5pdGlhbCddIEBbdW5kZWZpbmVkLXVuZGVmaW5lZF0gc3R5bGUKK1snYmFja2dyb3VuZC1h
dHRhY2htZW50JzonaW5pdGlhbCddIEBbdW5kZWZpbmVkLXVuZGVmaW5lZF0gc3R5bGUKK1snYmFj
a2dyb3VuZC1wb3NpdGlvbi14JzonaW5pdGlhbCddIEBbdW5kZWZpbmVkLXVuZGVmaW5lZF0gc3R5
bGUKK1snYmFja2dyb3VuZC1wb3NpdGlvbi15JzonaW5pdGlhbCddIEBbdW5kZWZpbmVkLXVuZGVm
aW5lZF0gc3R5bGUKK1snYmFja2dyb3VuZC1vcmlnaW4nOidpbml0aWFsJ10gQFt1bmRlZmluZWQt
dW5kZWZpbmVkXSBzdHlsZQorWydiYWNrZ3JvdW5kLWNsaXAnOidpbml0aWFsJ10gQFt1bmRlZmlu
ZWQtdW5kZWZpbmVkXSBzdHlsZQorWydiYWNrZ3JvdW5kLWNvbG9yJzonYmxhY2snXSBAW3VuZGVm
aW5lZC11bmRlZmluZWRdIHN0eWxlCisKK3J1bGUKK2JvZHk6IFtdCitbJ3RleHQtYWxpZ24nOidq
dXN0aWZ5J10gQFs0LTI0XSBhY3RpdmUKKworcnVsZQorYm9keTogW2luc3BlY3Rvcl0KK1snZm9u
dC1mYW1pbHknOidzZXJpZiddIEBbMC0xOF0gYWN0aXZlCisKK3J1bGUKK2JvZHkubWFpbjE6IFtd
CitbJ2NvbG9yJzonI0YwMEJBQSddIEBbMTMtMjhdIGFjdGl2ZQorWyd6b28nOidtb28gLyogbm90
IGFuICFpbXBvcnRhbnQgdW5yZWNvZ25pemVkIHByb3BlcnR5ICovJyBub24tcGFyc2VkXSBAWzI4
LTgxXSBhY3RpdmUKKworcnVsZQorYm9keS5tYWluMjogW10KK1snYmFja2dyb3VuZCc6J2dyZWVu
IC8qIHZhbHVlICFpbXBvcnRhbnQgY29tbWVudCAqLyAhaW1wb3J0YW50IC8qIG5vIHNlbWljb2xv
biwgdmVyeSAhaW1wb3J0YW50ICovJyBpcy1pbXBvcnRhbnRdIEBbMC05NV0gYWN0aXZlCitbJ2Jh
Y2tncm91bmQtaW1hZ2UnOidpbml0aWFsJyBpcy1pbXBvcnRhbnRdIEBbdW5kZWZpbmVkLXVuZGVm
aW5lZF0gc3R5bGUKK1snYmFja2dyb3VuZC1yZXBlYXQteCc6J2luaXRpYWwnIGlzLWltcG9ydGFu
dF0gQFt1bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQorWydiYWNrZ3JvdW5kLXJlcGVhdC15Jzon
aW5pdGlhbCcgaXMtaW1wb3J0YW50XSBAW3VuZGVmaW5lZC11bmRlZmluZWRdIHN0eWxlCitbJ2Jh
Y2tncm91bmQtYXR0YWNobWVudCc6J2luaXRpYWwnIGlzLWltcG9ydGFudF0gQFt1bmRlZmluZWQt
dW5kZWZpbmVkXSBzdHlsZQorWydiYWNrZ3JvdW5kLXBvc2l0aW9uLXgnOidpbml0aWFsJyBpcy1p
bXBvcnRhbnRdIEBbdW5kZWZpbmVkLXVuZGVmaW5lZF0gc3R5bGUKK1snYmFja2dyb3VuZC1wb3Np
dGlvbi15JzonaW5pdGlhbCcgaXMtaW1wb3J0YW50XSBAW3VuZGVmaW5lZC11bmRlZmluZWRdIHN0
eWxlCitbJ2JhY2tncm91bmQtb3JpZ2luJzonaW5pdGlhbCcgaXMtaW1wb3J0YW50XSBAW3VuZGVm
aW5lZC11bmRlZmluZWRdIHN0eWxlCitbJ2JhY2tncm91bmQtY2xpcCc6J2luaXRpYWwnIGlzLWlt
cG9ydGFudF0gQFt1bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQorWydiYWNrZ3JvdW5kLWNvbG9y
JzonZ3JlZW4nIGlzLWltcG9ydGFudF0gQFt1bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQorCis9
PT0gQWZ0ZXIgdHdvIHByb3BlcnRpZXMgZGlzYWJsZWQsIG9uZSBwcm9wZXJ0eSBhZGRlZCwgb25l
IHByb3BlcnR5IHJlbW92ZWQgPT09CisKK3N0eWxlCityYXcgc3R5bGUKK1t0ZXh0PSdoZWlnaHQg
OiAxMDAlIDsnXSBkaXNhYmxlZAorWydib3JkZXInOicxcHggc29saWQnXSBAWzYtMjRdIGFjdGl2
ZQorWydib3JkZXItd2lkdGgnOicycHgnXSBAWzI1LTQzXSBhY3RpdmUKK1snZ29vZ2xlcyc6J2Fi
cmEnIG5vbi1wYXJzZWRdIEBbNDUtNTldIGFjdGl2ZQorWydmb28nOicuYmFyJyBub24tcGFyc2Vk
XSBAWzYwLTcwXSBhY3RpdmUKK1snLW1vei1nb29nJzonMSoqKicgbm9uLXBhcnNlZF0gQFs3MS04
N10gYWN0aXZlCitbJ2ZvbnQtc2l6ZSc6JzEycHgnXSBAWzg4LTEwNF0gYWN0aXZlCitbdGV4dD0n
Ym9yZGVyLXdpZHRoOiAwcHg7J10gZGlzYWJsZWQKK1t0ZXh0PSdmb250LXNpemU6IDE0cHg7J10g
ZGlzYWJsZWQKK1snYm9yZGVyLXRvcC1zdHlsZSc6J3NvbGlkJ10gQFt1bmRlZmluZWQtdW5kZWZp
bmVkXSBzdHlsZQorWydib3JkZXItcmlnaHQtc3R5bGUnOidzb2xpZCddIEBbdW5kZWZpbmVkLXVu
ZGVmaW5lZF0gc3R5bGUKK1snYm9yZGVyLWJvdHRvbS1zdHlsZSc6J3NvbGlkJ10gQFt1bmRlZmlu
ZWQtdW5kZWZpbmVkXSBzdHlsZQorWydib3JkZXItbGVmdC1zdHlsZSc6J3NvbGlkJ10gQFt1bmRl
ZmluZWQtdW5kZWZpbmVkXSBzdHlsZQorWydib3JkZXItY29sb3InOidpbml0aWFsJ10gQFt1bmRl
ZmluZWQtdW5kZWZpbmVkXSBzdHlsZQorWydib3JkZXItdG9wLXdpZHRoJzonMnB4J10gQFt1bmRl
ZmluZWQtdW5kZWZpbmVkXSBzdHlsZQorWydib3JkZXItcmlnaHQtd2lkdGgnOicycHgnXSBAW3Vu
ZGVmaW5lZC11bmRlZmluZWRdIHN0eWxlCitbJ2JvcmRlci1ib3R0b20td2lkdGgnOicycHgnXSBA
W3VuZGVmaW5lZC11bmRlZmluZWRdIHN0eWxlCitbJ2JvcmRlci1sZWZ0LXdpZHRoJzonMnB4J10g
QFt1bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQorCis9PT0gQWZ0ZXIgcHJvcGVydHkgZW5hYmxl
ZCA9PT0KKworc3R5bGUKK3JhdyBzdHlsZQorW3RleHQ9J2hlaWdodCA6IDEwMCUgOyddIGRpc2Fi
bGVkCitbJ2JvcmRlcic6JzFweCBzb2xpZCddIEBbNi0yNF0gYWN0aXZlCitbJ2JvcmRlci13aWR0
aCc6JzJweCddIEBbMjUtNDNdIGFjdGl2ZQorWydnb29nbGVzJzonYWJyYScgbm9uLXBhcnNlZF0g
QFs0NS01OV0gYWN0aXZlCitbJ2Zvbyc6Jy5iYXInIG5vbi1wYXJzZWRdIEBbNjAtNzBdIGFjdGl2
ZQorWyctbW96LWdvb2cnOicxKioqJyBub24tcGFyc2VkXSBAWzcxLTg3XSBhY3RpdmUKK1snZm9u
dC1zaXplJzonMTJweCddIEBbODgtMTA0XSBpbmFjdGl2ZQorW3RleHQ9J2JvcmRlci13aWR0aDog
MHB4OyddIGRpc2FibGVkCitbJ2ZvbnQtc2l6ZSc6JzE0cHgnXSBAWzEwNS0xMjFdIGFjdGl2ZQor
Wydib3JkZXItdG9wLXN0eWxlJzonc29saWQnXSBAW3VuZGVmaW5lZC11bmRlZmluZWRdIHN0eWxl
CitbJ2JvcmRlci1yaWdodC1zdHlsZSc6J3NvbGlkJ10gQFt1bmRlZmluZWQtdW5kZWZpbmVkXSBz
dHlsZQorWydib3JkZXItYm90dG9tLXN0eWxlJzonc29saWQnXSBAW3VuZGVmaW5lZC11bmRlZmlu
ZWRdIHN0eWxlCitbJ2JvcmRlci1sZWZ0LXN0eWxlJzonc29saWQnXSBAW3VuZGVmaW5lZC11bmRl
ZmluZWRdIHN0eWxlCitbJ2JvcmRlci1jb2xvcic6J2luaXRpYWwnXSBAW3VuZGVmaW5lZC11bmRl
ZmluZWRdIHN0eWxlCitbJ2JvcmRlci10b3Atd2lkdGgnOicycHgnXSBAW3VuZGVmaW5lZC11bmRl
ZmluZWRdIHN0eWxlCitbJ2JvcmRlci1yaWdodC13aWR0aCc6JzJweCddIEBbdW5kZWZpbmVkLXVu
ZGVmaW5lZF0gc3R5bGUKK1snYm9yZGVyLWJvdHRvbS13aWR0aCc6JzJweCddIEBbdW5kZWZpbmVk
LXVuZGVmaW5lZF0gc3R5bGUKK1snYm9yZGVyLWxlZnQtd2lkdGgnOicycHgnXSBAW3VuZGVmaW5l
ZC11bmRlZmluZWRdIHN0eWxlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9z
dHlsZXMtbmV3LUFQSS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1uZXctQVBJ
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGI0YzBkYgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtbmV3LUFQSS5odG1sCkBA
IC0wLDAgKzEsMjk5IEBACis8aHRtbD4KKzxoZWFkPgorCis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9InJlc291cmNlcy9zdHlsZXMtbmV3LUFQSS5jc3MiIC0tPgorCis8c2NyaXB0IHNyYz0i
Li4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9ImVsZW1lbnRzLXRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0
aW9uIGRvaXQoKQoreworICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJlc3VsdCkKKyAgICB7CisgICAg
ICAgIGR1bXBBcnJheShyZXN1bHQpOworICAgICAgICBub3RpZnlEb25lKCk7CisgICAgfQorICAg
IGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX3J1blRlc3QiLCBjYWxsYmFjayk7Cit9
CisKKworLy8gRnJvbnRlbmQgZnVuY3Rpb25zLgorCitmdW5jdGlvbiBmcm9udGVuZF9ydW5UZXN0
KHRlc3RDb250cm9sbGVyKQoreworICAgIHRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICBmcm9udGVuZF9leHBhbmRET01TdWJ0cmVlKFdlYkluc3BlY3Rvci5kb21BZ2VudC5kb2N1
bWVudCk7CisgICAgdGVzdENvbnRyb2xsZXIucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhmdW5j
dGlvbigpIHsKKworICAgICAgICBmdW5jdGlvbiB0YWJsZVN0eWxlc0NhbGxiYWNrKHRlc3RDb250
cm9sbGVyLCBzdHlsZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJl
c3VsdHMucHVzaCgiIik7CisgICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2go
Ij09PSBBdHRyaWJ1dGUgc3R5bGVzIGZvciB0YWJsZSA9PT0iKTsKKyAgICAgICAgICAgIGZvciAo
dmFyIGF0dHIgaW4gc3R5bGVzLnN0eWxlQXR0cmlidXRlcykgeworICAgICAgICAgICAgICAgIHRl
c3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiQXR0cmlidXRlOiAiICsgYXR0cik7CisgICAgICAg
ICAgICAgICAgZnJvbnRlbmRfZHVtcFJ1bGVPclN0eWxlKHRlc3RDb250cm9sbGVyLCBzdHlsZXMu
c3R5bGVBdHRyaWJ1dGVzW2F0dHJdKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnJv
bnRlbmRfdGVzdFN0eWxlU2hlZXRzKHRlc3RDb250cm9sbGVyKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHN0eWxlc0NhbGxiYWNrKHRlc3RDb250cm9sbGVyLCBzdHlsZXMpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiIik7CisgICAg
ICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIj09PSBDb21wdXRlZCBzdHlsZSBw
cm9wZXJ0eSBjb3VudCBmb3IgYm9keSA9PT0iKTsKKyAgICAgICAgICAgIHZhciBwcm9wQ291bnQg
PSBzdHlsZXMuY29tcHV0ZWRTdHlsZS5jc3NQcm9wZXJ0aWVzLmxlbmd0aDsKKyAgICAgICAgICAg
IHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaChwcm9wQ291bnQgPiAyMDAgPyAiT0siIDogIkZB
SUwgKCIgKyBwcm9wQ291bnQgKyAiKSIpOworCisgICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5y
ZXN1bHRzLnB1c2goIiIpOworICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNo
KCI9PT0gTWF0Y2hlZCBydWxlcyBmb3IgYm9keSA9PT0iKTsKKyAgICAgICAgICAgIGZyb250ZW5k
X2R1bXBSdWxlc0FycmF5KHRlc3RDb250cm9sbGVyLCBzdHlsZXMubWF0Y2hlZENTU1J1bGVzKTsK
KworICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCIiKTsKKyAgICAgICAg
ICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiPT09IFBzZXVkbyBydWxlcyBmb3IgYm9k
eSA9PT0iKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzLnBzZXVkb0Vs
ZW1lbnRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIucmVz
dWx0cy5wdXNoKCJQc2V1ZG9JZD0iICsgc3R5bGVzLnBzZXVkb0VsZW1lbnRzW2ldLnBzZXVkb0lk
KTsKKyAgICAgICAgICAgICAgICBmcm9udGVuZF9kdW1wUnVsZXNBcnJheSh0ZXN0Q29udHJvbGxl
ciwgc3R5bGVzLnBzZXVkb0VsZW1lbnRzW2ldLnJ1bGVzKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCIiKTsKKyAgICAgICAgICAgIHRl
c3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiPT09IEluaGVyaXRlZCBzdHlsZXMgZm9yIGJvZHkg
PT09Iik7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5pbmhlcml0ZWQu
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1
c2goIkxldmVsPSIgKyAoaSArIDEpKTsKKyAgICAgICAgICAgICAgICBmcm9udGVuZF9kdW1wUnVs
ZU9yU3R5bGUodGVzdENvbnRyb2xsZXIsIHN0eWxlcy5pbmhlcml0ZWRbaV0uaW5saW5lU3R5bGUp
OworICAgICAgICAgICAgICAgIGZyb250ZW5kX2R1bXBSdWxlc0FycmF5KHRlc3RDb250cm9sbGVy
LCBzdHlsZXMuaW5oZXJpdGVkW2ldLm1hdGNoZWRDU1NSdWxlcyk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiIik7CisgICAgICAgICAg
ICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIj09PSBJbmxpbmUgc3R5bGUgZm9yIGJvZHkg
PT09Iik7CisgICAgICAgICAgICBmcm9udGVuZF9kdW1wUnVsZU9yU3R5bGUodGVzdENvbnRyb2xs
ZXIsIHN0eWxlcy5pbmxpbmVTdHlsZSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQu
Z2V0U3R5bGVzRm9yTm9kZTIoZnJvbnRlbmRfbm9kZUZvcklkKCJ0aGV0YWJsZSIpLmlkLCB0YWJs
ZVN0eWxlc0NhbGxiYWNrLmJpbmQobnVsbCwgdGVzdENvbnRyb2xsZXIpKTsKKyAgICAgICAgfQor
CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0U3R5bGVzRm9yTm9kZTIoV2ViSW5zcGVjdG9y
LmRvbUFnZW50LmRvY3VtZW50LmJvZHkuaWQsIHN0eWxlc0NhbGxiYWNrLmJpbmQobnVsbCwgdGVz
dENvbnRyb2xsZXIpKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gZnJvbnRlbmRfdGVzdFN0eWxl
U2hlZXRzKHRlc3RDb250cm9sbGVyKQorewordmFyIG5ld1N0eWxlU2hlZXRUZXh0ID0KKyJib2R5
Lm1haW5wYWdlIHtcCisgICAgdGV4dC1kZWNvcmF0aW9uOiBzdHJpa2V0aHJvdWdoO1wKKyAgICBi
YWRwcm9wZXJ0eTogMmJhZHZhbHVlMjtcCit9XAorXAorYm9keSB7XAorICAgIHRleHQtYWxpZ246
IGp1c3RpZnk7XAorfVwKKyI7CisKKyAgICBmdW5jdGlvbiBwYXRjaFN0eWxlU2hlZXQodGVzdENv
bnRyb2xsZXIsIHN0eWxlU2hlZXQpCisgICAgeworICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1
bHRzLnB1c2goIiIpOworICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIj09PSBM
YXN0IHN0eWxlc2hlZXQgcGF0Y2hlZCA9PT0iKTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5z
ZXRTdHlsZVNoZWV0VGV4dDIoc3R5bGVTaGVldC5zdHlsZVNoZWV0SWQsIG5ld1N0eWxlU2hlZXRU
ZXh0LAorICAgICAgICAgICAgZnJvbnRlbmRfbG9hZEFuZER1bXBTdHlsZVNoZWV0LmJpbmQobnVs
bCwgdGVzdENvbnRyb2xsZXIsIHN0eWxlU2hlZXQuc3R5bGVTaGVldElkLCBmcm9udGVuZF9jaGFu
Z2VTZWxlY3Rvci5iaW5kKG51bGwsIHRlc3RDb250cm9sbGVyKSkpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHN0eWxlU2hlZXRJZHNMb2FkZWQodGVzdENvbnRyb2xsZXIsIGlkcykKKyAgICB7Cisg
ICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiIik7CisgICAgICAgIHRlc3RDb250
cm9sbGVyLnJlc3VsdHMucHVzaCgiPT09IEFsbCBzdHlsZXNoZWV0cyA9PT0iKTsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBmcm9udGVu
ZF9sb2FkQW5kRHVtcFN0eWxlU2hlZXQodGVzdENvbnRyb2xsZXIsIGlkc1tpXSwgKGkgPCBpZHMu
bGVuZ3RoIC0gMSkgPyBudWxsIDogcGF0Y2hTdHlsZVNoZWV0LmJpbmQobnVsbCwgdGVzdENvbnRy
b2xsZXIpKTsKKyAgICB9CisgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRBbGxTdHlsZXMyKHN0eWxl
U2hlZXRJZHNMb2FkZWQuYmluZChudWxsLCB0ZXN0Q29udHJvbGxlcikpOworfQorCitmdW5jdGlv
biBmcm9udGVuZF9jaGFuZ2VTZWxlY3Rvcih0ZXN0Q29udHJvbGxlciwgc3R5bGVTaGVldCkKK3sK
KyAgICBmdW5jdGlvbiBkaWRTZXRTZWxlY3Rvcih0ZXN0Q29udHJvbGxlciwgcnVsZSkKKyAgICB7
CisgICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiIik7CisgICAgICAgIHRlc3RD
b250cm9sbGVyLnJlc3VsdHMucHVzaCgiPT09IEFmdGVyIHNlbGVjdG9yIHNldCA9PT0iKTsKKyAg
ICAgICAgZnJvbnRlbmRfbG9hZEFuZER1bXBTdHlsZVNoZWV0KHRlc3RDb250cm9sbGVyLCBmcm9u
dGVuZF9wYXJlbnRTdHlsZVNoZWV0SWQocnVsZS5ydWxlSWQpLCBmcm9udGVuZF9zZXRTdHlsZVRl
eHQuYmluZChudWxsLCB0ZXN0Q29udHJvbGxlcikpOworICAgIH0KKworICAgIEluc3BlY3RvckJh
Y2tlbmQuc2V0UnVsZVNlbGVjdG9yMihzdHlsZVNoZWV0LnJ1bGVzWzBdLnJ1bGVJZCwgImh0bWwg
KiwgYm9keVtmb289XCJiYXJcIl0iLCBkaWRTZXRTZWxlY3Rvci5iaW5kKG51bGwsIHRlc3RDb250
cm9sbGVyKSk7Cit9CisKK2Z1bmN0aW9uIGZyb250ZW5kX3BhcmVudFN0eWxlU2hlZXRJZChydWxl
T3JTdHlsZUlkKQoreworICAgIHJldHVybiBydWxlT3JTdHlsZUlkLnN1YnN0cmluZygwLCBydWxl
T3JTdHlsZUlkLmluZGV4T2YoJzonKSk7Cit9CisKKworZnVuY3Rpb24gZnJvbnRlbmRfc2V0U3R5
bGVUZXh0KHRlc3RDb250cm9sbGVyLCBzdHlsZVNoZWV0KQoreworICAgIGZ1bmN0aW9uIGRpZFNl
dFN0eWxlVGV4dCh0ZXN0Q29udHJvbGxlciwgc3R5bGUpCisgICAgeworICAgICAgICB0ZXN0Q29u
dHJvbGxlci5yZXN1bHRzLnB1c2goIiIpOworICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRz
LnB1c2goIj09PSBBZnRlciBzdHlsZSB0ZXh0IHNldCA9PT0iKTsKKyAgICAgICAgZnJvbnRlbmRf
bG9hZEFuZER1bXBTdHlsZVNoZWV0KHRlc3RDb250cm9sbGVyLCBmcm9udGVuZF9wYXJlbnRTdHls
ZVNoZWV0SWQoc3R5bGUuc3R5bGVJZCksIGZyb250ZW5kX2FkZFJ1bGUuYmluZChudWxsLCB0ZXN0
Q29udHJvbGxlcikpOworICAgIH0KKworICAgIEluc3BlY3RvckJhY2tlbmQuc2V0UHJvcGVydHlU
ZXh0MihzdHlsZVNoZWV0LnJ1bGVzWzBdLnN0eWxlLnN0eWxlSWQsIDAsICIiLCB0cnVlKTsKKyAg
ICBJbnNwZWN0b3JCYWNrZW5kLnNldFByb3BlcnR5VGV4dDIoc3R5bGVTaGVldC5ydWxlc1swXS5z
dHlsZS5zdHlsZUlkLCAwLCAiIiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yQmFja2VuZC5zZXRQcm9w
ZXJ0eVRleHQyKHN0eWxlU2hlZXQucnVsZXNbMF0uc3R5bGUuc3R5bGVJZCwgMCwgImNvbG9yOiB3
aGl0ZTsgYmFja2dyb3VuZDogYmxhY2s7IiwgZmFsc2UsIGRpZFNldFN0eWxlVGV4dC5iaW5kKG51
bGwsIHRlc3RDb250cm9sbGVyKSk7Cit9CisKK2Z1bmN0aW9uIGZyb250ZW5kX2FkZFJ1bGUodGVz
dENvbnRyb2xsZXIpCit7CisgICAgZnVuY3Rpb24gZGlkR2V0U3R5bGVzKHRlc3RDb250cm9sbGVy
LCBzdHlsZXMpCisgICAgeworICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIiIp
OworICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIj09PSBNYXRjaGVkIHJ1bGVz
IGFmdGVyIHJ1bGUgYWRkZWQgPT09Iik7CisgICAgICAgIGZyb250ZW5kX2R1bXBSdWxlc0FycmF5
KHRlc3RDb250cm9sbGVyLCBzdHlsZXMubWF0Y2hlZENTU1J1bGVzKTsKKyAgICAgICAgZnJvbnRl
bmRfZGlzYWJsZVByb3BlcnR5KHRlc3RDb250cm9sbGVyKTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBkaWRTZXRTdHlsZVRleHQodGVzdENvbnRyb2xsZXIsIHN0eWxlKQorICAgIHsKKyAgICAgICAg
SW5zcGVjdG9yQmFja2VuZC5nZXRTdHlsZXNGb3JOb2RlMihXZWJJbnNwZWN0b3IuZG9tQWdlbnQu
ZG9jdW1lbnQuYm9keS5pZCwgZGlkR2V0U3R5bGVzLmJpbmQobnVsbCwgdGVzdENvbnRyb2xsZXIp
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydWxlQWRkZWQodGVzdENvbnRyb2xsZXIsIHJ1bGUp
CisgICAgeworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldFByb3BlcnR5VGV4dDIocnVsZS5z
dHlsZS5zdHlsZUlkLCAwLCAiZm9udC1mYW1pbHk6IHNlcmlmIiwgZmFsc2UsIGRpZFNldFN0eWxl
VGV4dC5iaW5kKG51bGwsIHRlc3RDb250cm9sbGVyKSk7CisgICAgfQorCisgICAgSW5zcGVjdG9y
QmFja2VuZC5hZGRSdWxlMihXZWJJbnNwZWN0b3IuZG9tQWdlbnQuZG9jdW1lbnQuYm9keS5pZCwg
ImJvZHkiLCBydWxlQWRkZWQuYmluZChudWxsLCB0ZXN0Q29udHJvbGxlcikpOworfQorCitmdW5j
dGlvbiBmcm9udGVuZF9kaXNhYmxlUHJvcGVydHkodGVzdENvbnRyb2xsZXIpCit7CisgICAgZnVu
Y3Rpb24gZGlkRGlzYWJsZVByb3BlcnR5KHRlc3RDb250cm9sbGVyLCBzdHlsZSkKKyAgICB7Cisg
ICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiIik7CisgICAgICAgIHRlc3RDb250
cm9sbGVyLnJlc3VsdHMucHVzaCgiPT09IEFmdGVyIHR3byBwcm9wZXJ0aWVzIGRpc2FibGVkLCBv
bmUgcHJvcGVydHkgYWRkZWQsIG9uZSBwcm9wZXJ0eSByZW1vdmVkID09PSIpOworICAgICAgICBm
cm9udGVuZF9kdW1wUnVsZU9yU3R5bGUodGVzdENvbnRyb2xsZXIsIHN0eWxlKTsKKyAgICAgICAg
ZnJvbnRlbmRfZW5hYmxlUHJvcGVydHkodGVzdENvbnRyb2xsZXIsIHN0eWxlLnN0eWxlSWQpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHN0eWxlc0NhbGxiYWNrKHRlc3RDb250cm9sbGVyLCBzdHls
ZXMpCisgICAgeworICAgICAgICAvLyBoZWlnaHQgOiAxMDAlIDsKKyAgICAgICAgLy8gYm9yZGVy
OiAxcHggc29saWQ7CisgICAgICAgIC8vIGJvcmRlci13aWR0aDogMnB4OworICAgICAgICAvLyBi
YWNrZ3JvdW5kLWNvbG9yIDogIzMzRkYzMzsKKyAgICAgICAgLy8gZ29vZ2xlczogYWJyYTsKKyAg
ICAgICAgLy8gZm9vOiAuYmFyOworICAgICAgICAvLyAtbW96LWdvb2c6IDEqKio7CisgICAgICAg
IC8vIGJvcmRlci13aWR0aDogMHB4OworCisgICAgICAgIHZhciBzdHlsZSA9IHN0eWxlcy5tYXRj
aGVkQ1NTUnVsZXNbMV0uc3R5bGU7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQudG9nZ2xlUHJv
cGVydHkyKHN0eWxlLnN0eWxlSWQsIDAsIHRydWUpOyAvLyBoZWlnaHQ6IDEwMCUKKyAgICAgICAg
SW5zcGVjdG9yQmFja2VuZC50b2dnbGVQcm9wZXJ0eTIoc3R5bGUuc3R5bGVJZCwgNywgdHJ1ZSk7
IC8vIGJvcmRlci13aWR0aDogMHB4CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0UHJvcGVy
dHlUZXh0MihzdHlsZS5zdHlsZUlkLCA3LCAiZm9udC1zaXplOiAxMnB4OyIsIGZhbHNlKTsKKyAg
ICAgICAgSW5zcGVjdG9yQmFja2VuZC5zZXRQcm9wZXJ0eVRleHQyKHN0eWxlLnN0eWxlSWQsIDks
ICJmb250LXNpemU6IDE0cHg7IiwgZmFsc2UpOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnRv
Z2dsZVByb3BlcnR5MihzdHlsZS5zdHlsZUlkLCA5LCB0cnVlKTsgLy8gZm9udC1zaXplOiAxNHB4
CisgICAgICAgIC8vIGhlaWdodCA6IDEwMCUgOyBbZF0KKyAgICAgICAgLy8gYm9yZGVyOiAxcHgg
c29saWQ7CisgICAgICAgIC8vIGJvcmRlci13aWR0aDogMnB4OworICAgICAgICAvLyBiYWNrZ3Jv
dW5kLWNvbG9yIDogIzMzRkYzMzsKKyAgICAgICAgLy8gZ29vZ2xlczogYWJyYTsKKyAgICAgICAg
Ly8gZm9vOiAuYmFyOworICAgICAgICAvLyAtbW96LWdvb2c6IDEqKio7CisgICAgICAgIC8vIGZv
bnQtc2l6ZTogMTJweDsKKyAgICAgICAgLy8gYm9yZGVyLXdpZHRoOiAwcHg7IFtkXQorICAgICAg
ICAvLyBmb250LXNpemU6IDE0cHg7IFtkXQorCisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0
UHJvcGVydHlUZXh0MihzdHlsZS5zdHlsZUlkLCAzLCAiIiwgdHJ1ZSwgZGlkRGlzYWJsZVByb3Bl
cnR5LmJpbmQobnVsbCwgdGVzdENvbnRyb2xsZXIpKTsKKyAgICB9CisKKyAgICB2YXIgdG9nZ2xl
RWxlbWVudCA9IGZyb250ZW5kX25vZGVGb3JJZCgidG9nZ2xlIik7CisgICAgSW5zcGVjdG9yQmFj
a2VuZC5nZXRTdHlsZXNGb3JOb2RlMih0b2dnbGVFbGVtZW50LmlkLCBzdHlsZXNDYWxsYmFjay5i
aW5kKG51bGwsIHRlc3RDb250cm9sbGVyKSk7Cit9CisKK2Z1bmN0aW9uIGZyb250ZW5kX2VuYWJs
ZVByb3BlcnR5KHRlc3RDb250cm9sbGVyLCBzdHlsZUlkKQoreworICAgIGZ1bmN0aW9uIGRpZEVu
YWJsZVByb3BlcnR5KHRlc3RDb250cm9sbGVyLCBzdHlsZSkKKyAgICB7CisgICAgICAgIHRlc3RD
b250cm9sbGVyLnJlc3VsdHMucHVzaCgiIik7CisgICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3Vs
dHMucHVzaCgiPT09IEFmdGVyIHByb3BlcnR5IGVuYWJsZWQgPT09Iik7CisgICAgICAgIGZyb250
ZW5kX2R1bXBSdWxlT3JTdHlsZSh0ZXN0Q29udHJvbGxlciwgc3R5bGUpOworICAgICAgICB0ZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKHRlc3RDb250cm9sbGVyLnJlc3VsdHMpOworICAgIH0KKwor
ICAgIEluc3BlY3RvckJhY2tlbmQudG9nZ2xlUHJvcGVydHkyKHN0eWxlSWQsIDYsIGZhbHNlKTsK
KyAgICBJbnNwZWN0b3JCYWNrZW5kLnRvZ2dsZVByb3BlcnR5MihzdHlsZUlkLCA4LCBmYWxzZSwg
ZGlkRW5hYmxlUHJvcGVydHkuYmluZChudWxsLCB0ZXN0Q29udHJvbGxlcikpOworfQorCisvLyBE
YXRhIGR1bXBpbmcKKworZnVuY3Rpb24gZnJvbnRlbmRfZHVtcFJ1bGVzQXJyYXkodGVzdENvbnRy
b2xsZXIsIHJ1bGVzKQoreworICAgIGlmICghcnVsZXMpCisgICAgICAgIHJldHVybjsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgKytpKQorICAgICAgICBmcm9udGVuZF9k
dW1wUnVsZU9yU3R5bGUodGVzdENvbnRyb2xsZXIsIHJ1bGVzW2ldKTsKK30KKworZnVuY3Rpb24g
ZnJvbnRlbmRfZHVtcFJ1bGVPclN0eWxlKHRlc3RDb250cm9sbGVyLCBydWxlT3JTdHlsZSkKK3sK
KyAgICBpZiAoIXJ1bGVPclN0eWxlKQorICAgICAgICByZXR1cm47CisgICAgdmFyIGlzUnVsZSA9
ICEhKHJ1bGVPclN0eWxlLnN0eWxlKTsKKyAgICB2YXIgc3R5bGUgPSBpc1J1bGUgPyBydWxlT3JT
dHlsZS5zdHlsZSA6IHJ1bGVPclN0eWxlOworICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVz
aCgiIik7CisgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKGlzUnVsZSA/ICJydWxlIiA6
ICJzdHlsZSIpOworICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgoaXNSdWxlID8gKHJ1
bGVPclN0eWxlLnNlbGVjdG9yVGV4dCArICI6IFsiICsgcnVsZU9yU3R5bGUub3JpZ2luICsgIl0i
KSA6ICJyYXcgc3R5bGUiKSk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZS5jc3NQcm9w
ZXJ0aWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBwcm9wZXJ0eSA9IHN0eWxlLmNzc1By
b3BlcnRpZXNbaV07CisgICAgICAgIGlmIChwcm9wZXJ0eS5zdGF0dXMgIT09ICJkaXNhYmxlZCIp
CisgICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlsnIiArIHByb3BlcnR5
Lm5hbWUgKyAiJzonIiArIHByb3BlcnR5LnZhbHVlICsgIiciICsgKHByb3BlcnR5LnByaW9yaXR5
ID09PSAiaW1wb3J0YW50IiA/ICIgaXMtaW1wb3J0YW50IiA6ICIiKSArIChwcm9wZXJ0eS5wYXJz
ZWRPayA/ICIiIDogIiBub24tcGFyc2VkIikgKyJdIEBbIiArIHByb3BlcnR5LnN0YXJ0T2Zmc2V0
ICsgIi0iICsgcHJvcGVydHkuZW5kT2Zmc2V0ICsgIl0gIiArIHByb3BlcnR5LnN0YXR1cyk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiW3Rl
eHQ9JyIgKyBwcm9wZXJ0eS50ZXh0ICsgIiddICIgKyBwcm9wZXJ0eS5zdGF0dXMpOworICAgIH0K
K30KKworCitmdW5jdGlvbiBmcm9udGVuZF9sb2FkQW5kRHVtcFN0eWxlU2hlZXQodGVzdENvbnRy
b2xsZXIsIHN0eWxlU2hlZXRJZCwgY29udGludWF0aW9uKQoreworICAgIGZ1bmN0aW9uIHN0eWxl
U2hlZXRMb2FkZWQodGVzdENvbnRyb2xsZXIsIHN0eWxlU2hlZXQpCisgICAgeworICAgICAgICB0
ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIiIpOworICAgICAgICB0ZXN0Q29udHJvbGxlci5y
ZXN1bHRzLnB1c2goIlN0eWxlU2hlZXQ6ICciICsgc3R5bGVTaGVldC50ZXh0ICsgIiciKTsKKyAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZVNoZWV0LnJ1bGVzLmxlbmd0aDsgKytpKQor
ICAgICAgICAgICAgZnJvbnRlbmRfZHVtcFJ1bGVPclN0eWxlKHRlc3RDb250cm9sbGVyLCBzdHls
ZVNoZWV0LnJ1bGVzW2ldKTsKKyAgICAgICAgaWYgKGNvbnRpbnVhdGlvbikKKyAgICAgICAgICAg
IGNvbnRpbnVhdGlvbihzdHlsZVNoZWV0KTsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JCYWNrZW5k
LmdldFN0eWxlU2hlZXQyKHN0eWxlU2hlZXRJZCwgc3R5bGVTaGVldExvYWRlZC5iaW5kKG51bGws
IHRlc3RDb250cm9sbGVyKSk7Cit9CisKKy8qCitDb3ZlcmVkIEFQSSBtZXRob2RzOgorIC0gZ2V0
U3R5bGVzRm9yTm9kZTIKKyAtIGdldEFsbFN0eWxlczIKKyAtIGdldFN0eWxlU2hlZXQyCisgLSBz
ZXRTdHlsZVNoZWV0VGV4dDIKKyAtIHNldFN0eWxlRGF0YTIKKyAtIHNldFJ1bGVTZWxlY3RvcjIK
KyAtIGFkZFJ1bGUyCisqLworCis8L3NjcmlwdD4KKworPHN0eWxlPgorCisvKiBBbiBpbmxpbmUg
c3R5bGVzaGVldCAqLworYm9keS5tYWlucGFnZSB7CisgICAgdGV4dC1kZWNvcmF0aW9uOiBub25l
OyAvKiBhdCBsZWFzdCBvbmUgdmFsaWQgcHJvcGVydHkgaXMgbmVjZXNzYXJ5IGZvciBXZWJDb3Jl
IHRvIG1hdGNoIGEgcnVsZSAqLworICAgIGJhZHByb3BlcnR5OiAxYmFkdmFsdWUxOworfQorCis8
L3N0eWxlPgorPC9oZWFkPgorCis8Ym9keSBjbGFzcz0ibWFpbjEgbWFpbjIgbWFpbnBhZ2UiIG9u
bG9hZD0ib25sb2FkKCkiIHN0eWxlPSJmb250LXdlaWdodDogbm9ybWFsOyB3aWR0aDogODUlIj4K
KzxwPgorVGVzdHMgdGhhdCBJbnNwZWN0b3JDU1NBZ2VudCBBUEkgbWV0aG9kcyB3b3JrIGFzIGV4
cGVjdGVkLgorPC9wPgorPHRhYmxlIHdpZHRoPTUwJSBpZD0idGhldGFibGUiPgorPC90YWJsZT4K
KzxoMSBpZD0idG9nZ2xlIj5IMTwvaDE+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFmNDZlYWEuLmM1ZjU3
ZjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTcgQEAKKzIwMTAtMTEtMTUgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBNaWdyYXRlIGZyb250ZW5kIHRvIHRoZSBuZXcgQ1NTIGVk
aXRpbmcvcmV0cmlldmFsIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDk0OTIKKworICAgICAgICBUZXN0OiBpbnNwZWN0b3Ivc3R5bGVzLW5ldy1B
UEkuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuVW51c2VkQ3NzUnVsZS5wcm90b3R5cGUu
ZG9SdW4uZXZhbENhbGxiYWNrLnNlbGVjdG9yc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5BdWRpdFJ1bGVzLlVudXNlZENzc1J1bGUucHJvdG90eXBlLmRvUnVuLmV2YWxDYWxsYmFj
ay5yb3V0aW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLlVudXNlZENzc1J1
bGUucHJvdG90eXBlLmRvUnVuLmV2YWxDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
QXVkaXRSdWxlcy5VbnVzZWRDc3NSdWxlLnByb3RvdHlwZS5kb1J1bi5zdHlsZVNoZWV0Q2FsbGJh
Y2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuVW51c2VkQ3NzUnVsZS5wcm90
b3R5cGUuZG9SdW4uYWxsU3R5bGVzQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1
ZGl0UnVsZXMuVW51c2VkQ3NzUnVsZS5wcm90b3R5cGUuZG9SdW4pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkF1ZGl0UnVsZXMuSW1hZ2VEaW1lbnNpb25zUnVsZS5wcm90b3R5cGUuZG9SdW4pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuSW1hZ2VEaW1lbnNpb25zUnVsZS5wcm90
b3R5cGUuZG9SdW4ucmVjZWl2ZWRJbWFnZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvQ1NTU3R5bGVNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVs
LnByb3RvdHlwZS5nZXRTdHlsZXNBc3luYyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNb2RlbC5wcm90b3R5cGUuZ2V0Q29tcHV0ZWRTdHlsZUFzeW5jKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5nZXRJbmxpbmVTdHlsZUFzeW5jKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5zZXRSdWxlU2VsZWN0
b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLnNldFJ1
bGVTZWxlY3Rvci5jYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2Rl
bC5wcm90b3R5cGUuYWRkUnVsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2Rl
bC5wcm90b3R5cGUuYWRkUnVsZS5jYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NT
U3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJh
dGlvbi5wcm90b3R5cGUucHJvcGVydHlBdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVEZWNsYXJhdGlvbi5wcm90b3R5cGUucGFzdExhc3RTb3VyY2VQcm9wZXJ0eUluZGV4KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLnByb3RvdHlwZS5uZXdCbGFu
a1Byb3BlcnR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLnBy
b3RvdHlwZS5pbnNlcnRQcm9wZXJ0eUF0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHls
ZURlY2xhcmF0aW9uLnByb3RvdHlwZS5hcHBlbmRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ1NTUnVsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkucHJvdG90
eXBlLmdldCBwcm9wZXJ0eVRleHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5
LnByb3RvdHlwZS5zZXRUZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5w
cm90b3R5cGUuc2V0RGlzYWJsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hl
ZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQuY3JlYXRlRm9ySWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQucHJvdG90eXBlLmdldCB0ZXh0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0LnByb3RvdHlwZS5zZXRUZXh0KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUub25wb3B1bGF0ZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuYWRkTmV3
QmxhbmtQcm9wZXJ0eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2Vj
dGlvbi5wcm90b3R5cGUuX2RlYnVnU2hvd1N0eWxlLnJlbW92ZVN0eWxlQm94KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5fZGVidWdTaG93
U3R5bGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJv
dG90eXBlLmVkaXRpbmdTZWxlY3RvckNvbW1pdHRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS4pOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzczoKKyAgICAgICAgKC5zdHlsZXMtc2VjdGlvbiAu
cHJvcGVydGllcyBsaS5ub3QtcGFyc2VkLW9rKToKKyAgICAgICAgKC5zdHlsZXMtc2VjdGlvbiAu
cHJvcGVydGllcyBsaS5ub3QtcGFyc2VkLW9rOjpiZWZvcmUpOgorICAgICAgICAoLnN0eWxlcy1z
ZWN0aW9uIC5wcm9wZXJ0aWVzIC5pbmFjdGl2ZSk6CisKIDIwMTAtMTEtMTMgIFl1cnkgU2VtaWto
YXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwg
RmVsZG1hbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1
bGVzLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMKaW5kZXgg
NTE1Y2U4ZS4uYjc4YmM5NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0F1ZGl0UnVsZXMuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVs
ZXMuanMKQEAgLTI3Nyw2ICsyNzcsNyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5VbnVzZWRD
c3NSdWxlLnByb3RvdHlwZSA9IHsKICAgICBkb1J1bjogZnVuY3Rpb24ocmVzb3VyY2VzLCByZXN1
bHQsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworCiAgICAgICAg
IGZ1bmN0aW9uIGV2YWxDYWxsYmFjayhzdHlsZVNoZWV0cykgewogICAgICAgICAgICAgaWYgKCFz
dHlsZVNoZWV0cy5sZW5ndGgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwp
OwpAQCAtMjg3LDExICsyODgsMTEgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuVW51c2VkQ3Nz
UnVsZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxl
U2hlZXRzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgdmFyIHN0eWxlU2hlZXQgPSBz
dHlsZVNoZWV0c1tpXTsKICAgICAgICAgICAgICAgICBmb3IgKHZhciBjdXJSdWxlID0gMDsgY3Vy
UnVsZSA8IHN0eWxlU2hlZXQucnVsZXMubGVuZ3RoOyArK2N1clJ1bGUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgdmFyIHJ1bGUgPSBzdHlsZVNoZWV0LnJ1bGVzW2N1clJ1bGVdOwotICAgICAgICAg
ICAgICAgICAgICBpZiAocnVsZS5zZWxlY3RvclRleHQubWF0Y2gocHNldWRvU2VsZWN0b3JSZWdl
eHApKQorICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0b3JUZXh0ID0gc3R5bGVTaGVldC5y
dWxlc1tjdXJSdWxlXS5zZWxlY3RvclRleHQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChzZWxl
Y3RvclRleHQubWF0Y2gocHNldWRvU2VsZWN0b3JSZWdleHApIHx8IHRlc3RlZFNlbGVjdG9yc1tz
ZWxlY3RvclRleHRdKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICAgICAgICAgIHNlbGVjdG9ycy5wdXNoKHJ1bGUuc2VsZWN0b3JUZXh0KTsKLSAgICAgICAg
ICAgICAgICAgICAgdGVzdGVkU2VsZWN0b3JzW3J1bGUuc2VsZWN0b3JUZXh0XSA9IDE7CisgICAg
ICAgICAgICAgICAgICAgIHNlbGVjdG9ycy5wdXNoKHNlbGVjdG9yVGV4dCk7CisgICAgICAgICAg
ICAgICAgICAgIHRlc3RlZFNlbGVjdG9yc1tzZWxlY3RvclRleHRdID0gMTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAKQEAgLTMwOSw4ICszMTAsMTAgQEAgV2ViSW5zcGVjdG9y
LkF1ZGl0UnVsZXMuVW51c2VkQ3NzUnVsZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAg
ICAgIHZhciB1bnVzZWRSdWxlcyA9IFtdOwogICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBj
dXJSdWxlID0gMDsgY3VyUnVsZSA8IHN0eWxlU2hlZXQucnVsZXMubGVuZ3RoOyArK2N1clJ1bGUp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBydWxlID0gc3R5bGVTaGVldC5ydWxlc1tj
dXJSdWxlXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiByZXBsYWNlIHRoaXMg
YnkgYW4gZXhhY3QgY29tcHV0YXRpb24gb25jZSBzb3VyY2UgcmFuZ2VzIGFyZSBhdmFpbGFibGUK
LSAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZXh0TGVuZ3RoID0gcnVsZS5zdHlsZS5jc3NU
ZXh0ID8gcnVsZS5zdHlsZS5jc3NUZXh0Lmxlbmd0aCArIHJ1bGUuc2VsZWN0b3JUZXh0Lmxlbmd0
aCA6IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBFeGFjdCBjb21wdXRhdGlvbiB3aGVu
ZXZlciBzb3VyY2UgcmFuZ2VzIGFyZSBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgdGV4dExlbmd0aCA9IChydWxlLnNlbGVjdG9yUmFuZ2UgJiYgcnVsZS5zdHlsZS5wcm9w
ZXJ0aWVzLmVuZE9mZnNldCkgPyBydWxlLnN0eWxlLnByb3BlcnRpZXMuZW5kT2Zmc2V0IC0gcnVs
ZS5zZWxlY3RvclJhbmdlLnN0YXJ0ICsgMSA6IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIXRleHRMZW5ndGggJiYgcnVsZS5zdHlsZS5jc3NUZXh0KQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRleHRMZW5ndGggPSBydWxlLnN0eWxlLmNzc1RleHQubGVuZ3RoICsgcnVsZS5z
ZWxlY3RvclRleHQubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzaGVldFNp
emUgKz0gdGV4dExlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGVzdGVkU2Vs
ZWN0b3JzW3J1bGUuc2VsZWN0b3JUZXh0XSB8fCBmb3VuZFNlbGVjdG9yc1tydWxlLnNlbGVjdG9y
VGV4dF0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0zMjcsNyAr
MzMwLDcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuVW51c2VkQ3NzUnVsZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICAgICAgICAgIHZhciBwY3RVbnVzZWQgPSBNYXRoLnJvdW5kKDEwMCAq
IHVudXNlZFN0eWxlc2hlZXRTaXplIC8gc3R5bGVzaGVldFNpemUpOwogICAgICAgICAgICAgICAg
ICAgICBpZiAoIXN1bW1hcnkpCiAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5ID0gcmVz
dWx0LmFkZENoaWxkKCIiLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGVudHJ5ID0g
c3VtbWFyeS5hZGRDaGlsZChTdHJpbmcuc3ByaW50ZigiJXM6ICVkJSUgKGVzdGltYXRlZCkgaXMg
bm90IHVzZWQgYnkgdGhlIGN1cnJlbnQgcGFnZS4iLCB1cmwsIHBjdFVudXNlZCkpOworICAgICAg
ICAgICAgICAgICAgICB2YXIgZW50cnkgPSBzdW1tYXJ5LmFkZENoaWxkKFN0cmluZy5zcHJpbnRm
KCIlczogJXMgKCVkJSUpIGlzIG5vdCB1c2VkIGJ5IHRoZSBjdXJyZW50IHBhZ2UuIiwgdXJsLCBO
dW1iZXIuYnl0ZXNUb1N0cmluZyh1bnVzZWRTdHlsZXNoZWV0U2l6ZSksIHBjdFVudXNlZCkpOwog
CiAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdW51c2VkUnVsZXMubGVu
Z3RoOyArK2opCiAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5hZGRTbmlwcGV0KHVudXNl
ZFJ1bGVzW2pdKTsKQEAgLTMzOSw3ICszNDIsNyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5V
bnVzZWRDc3NSdWxlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKG51bGwpOwogCiAgICAgICAgICAgICAgICAgdmFyIHRvdGFsVW51c2VkUGVyY2VudCA9
IE1hdGgucm91bmQoMTAwICogdG90YWxVbnVzZWRTdHlsZXNoZWV0U2l6ZSAvIHRvdGFsU3R5bGVz
aGVldFNpemUpOwotICAgICAgICAgICAgICAgIHN1bW1hcnkudmFsdWUgPSBTdHJpbmcuc3ByaW50
ZigiJWQlJSBvZiBDU1MgKGVzdGltYXRlZCkgaXMgbm90IHVzZWQgYnkgdGhlIGN1cnJlbnQgcGFn
ZS4iLCB0b3RhbFVudXNlZFBlcmNlbnQpOworICAgICAgICAgICAgICAgIHN1bW1hcnkudmFsdWUg
PSBTdHJpbmcuc3ByaW50ZigiJXMgKCVkJSUpIG9mIENTUyBpcyBub3QgdXNlZCBieSB0aGUgY3Vy
cmVudCBwYWdlLiIsIE51bWJlci5ieXRlc1RvU3RyaW5nKHRvdGFsVW51c2VkU3R5bGVzaGVldFNp
emUpLCB0b3RhbFVudXNlZFBlcmNlbnQpOwogCiAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVz
dWx0KTsKICAgICAgICAgICAgIH0KQEAgLTM0OSwxMSArMzUyLDEwIEBAIFdlYkluc3BlY3Rvci5B
dWRpdFJ1bGVzLlVudXNlZENzc1J1bGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHZh
ciByZXN1bHQgPSB7fTsKICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGVj
dG9yQXJyYXkubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBub2RlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
c2VsZWN0b3JBcnJheVtpXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZXMgJiYg
bm9kZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3Ioc2VsZWN0b3JBcnJheVtpXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0W3NlbGVjdG9yQXJyYXlbaV1dID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfSBj
YXRjaChlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmUgYW5kIG1hcmsgYXMg
dW51c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgYW5kIG1hcmsgYXMgdW51
c2VkLgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zNjIsMTYgKzM2NCwyNCBAQCBXZWJJbnNwZWN0b3Iu
QXVkaXRSdWxlcy5VbnVzZWRDc3NSdWxlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5BdWRpdFJ1bGVzLmV2YWx1YXRlSW5UYXJnZXRXaW5kb3cocm91dGluZSwgW3NlbGVj
dG9yc10sIHNlbGVjdG9yc0NhbGxiYWNrLmJpbmQobnVsbCwgY2FsbGJhY2ssIHN0eWxlU2hlZXRz
LCB0ZXN0ZWRTZWxlY3RvcnMpKTsKICAgICAgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIHJvdXRp
bmUoKQorICAgICAgICBmdW5jdGlvbiBzdHlsZVNoZWV0Q2FsbGJhY2soc3R5bGVTaGVldHMsIGNv
bnRpbnVhdGlvbiwgc3R5bGVTaGVldCkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIHN0eWxl
U2hlZXRzID0gZG9jdW1lbnQuc3R5bGVTaGVldHM7Ci0gICAgICAgICAgICBpZiAoIXN0eWxlU2hl
ZXRzKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmIChzdHls
ZVNoZWV0KQorICAgICAgICAgICAgICAgIHN0eWxlU2hlZXRzLnB1c2goc3R5bGVTaGVldCk7Cisg
ICAgICAgICAgICBpZiAoY29udGludWF0aW9uKQorICAgICAgICAgICAgICAgIGNvbnRpbnVhdGlv
bihzdHlsZVNoZWV0cyk7CisgICAgICAgIH0KIAotICAgICAgICAgICAgcmV0dXJuIHJvdXRpbmVS
ZXN1bHQ7CisgICAgICAgIGZ1bmN0aW9uIGFsbFN0eWxlc0NhbGxiYWNrKHN0eWxlU2hlZXRJZHMp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghc3R5bGVTaGVldElkcyB8fCAhc3R5bGVTaGVl
dElkcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgcmV0dXJuIGV2YWxDYWxsYmFjayhbXSk7Cisg
ICAgICAgICAgICB2YXIgc3R5bGVTaGVldHMgPSBbXTsKKyAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgc3R5bGVTaGVldElkcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5jcmVhdGVGb3JJZChzdHlsZVNoZWV0SWRzW2ldLCBzdHls
ZVNoZWV0Q2FsbGJhY2suYmluZChudWxsLCBzdHlsZVNoZWV0cywgaSA9PSBzdHlsZVNoZWV0SWRz
Lmxlbmd0aCAtIDEgPyBldmFsQ2FsbGJhY2sgOiBudWxsKSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBJbnNwZWN0b3JCYWNrZW5kLmdldEFsbFN0eWxlcyhldmFsQ2FsbGJhY2spOworICAgICAgICBJ
bnNwZWN0b3JCYWNrZW5kLmdldEFsbFN0eWxlczIoYWxsU3R5bGVzQ2FsbGJhY2spOwogICAgIH0K
IH0KIApAQCAtNjU4LDcgKzY2OCw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkltYWdlRGlt
ZW5zaW9uc1J1bGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKGNvbXBsZXRlU3JjKQog
ICAgICAgICAgICAgICAgIHNyYyA9IGNvbXBsZXRlU3JjOwogCi0gICAgICAgICAgICBjb25zdCBj
b21wdXRlZFN0eWxlID0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24ucGFyc2VQYXls
b2FkKHN0eWxlcy5jb21wdXRlZFN0eWxlKTsKKyAgICAgICAgICAgIGNvbnN0IGNvbXB1dGVkU3R5
bGUgPSBzdHlsZXMuY29tcHV0ZWRTdHlsZTsKICAgICAgICAgICAgIGlmIChjb21wdXRlZFN0eWxl
LmdldFByb3BlcnR5VmFsdWUoInBvc2l0aW9uIikgPT09ICJhYnNvbHV0ZSIpIHsKICAgICAgICAg
ICAgICAgICBpZiAoIWNvbnRleHQuaW1hZ2VzTGVmdCkKICAgICAgICAgICAgICAgICAgICAgZG9u
ZUNhbGxiYWNrKGNvbnRleHQpOwpAQCAtNjY5LDcgKzY3OSw3IEBAIFdlYkluc3BlY3Rvci5BdWRp
dFJ1bGVzLkltYWdlRGltZW5zaW9uc1J1bGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFy
IGhlaWdodEZvdW5kID0gImhlaWdodCIgaW4gc3R5bGVzLnN0eWxlQXR0cmlidXRlczsKIAogICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IHN0eWxlcy5tYXRjaGVkQ1NTUnVsZXMubGVuZ3RoIC0gMTsg
aSA+PSAwICYmICEod2lkdGhGb3VuZCAmJiBoZWlnaHRGb3VuZCk7IC0taSkgewotICAgICAgICAg
ICAgICAgIHZhciBzdHlsZSA9IFdlYkluc3BlY3Rvci5DU1NSdWxlLnBhcnNlUGF5bG9hZChzdHls
ZXMubWF0Y2hlZENTU1J1bGVzW2ldKS5zdHlsZTsKKyAgICAgICAgICAgICAgICB2YXIgc3R5bGUg
PSBzdHlsZXMubWF0Y2hlZENTU1J1bGVzW2ldLnN0eWxlOwogICAgICAgICAgICAgICAgIGlmIChz
dHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCJ3aWR0aCIpICE9PSAiIikKICAgICAgICAgICAgICAgICAg
ICAgd2lkdGhGb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgaWYgKHN0eWxlLmdldFByb3Bl
cnR5VmFsdWUoImhlaWdodCIpICE9PSAiIikKQEAgLTY5Myw3ICs3MDMsNyBAQCBXZWJJbnNwZWN0
b3IuQXVkaXRSdWxlcy5JbWFnZURpbWVuc2lvbnNSdWxlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCk7CiAgICAgICAgICAgICB2YXIgY29udGV4dCA9
IHtpbWFnZXNMZWZ0OiBpbWFnZUlkcy5sZW5ndGgsIHVybFRvTm9EaW1lbnNpb25Db3VudDoge319
OwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IGltYWdlSWRzLmxlbmd0aCAtIDE7IGkgPj0gMDsg
LS1pKQotICAgICAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0U3R5bGVzKGltYWdlSWRz
W2ldLCB0cnVlLCBpbWFnZVN0eWxlc1JlYWR5LmJpbmQodGhpcywgaW1hZ2VJZHNbaV0sIGNvbnRl
eHQpKTsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuZ2V0U3R5bGVzQXN5
bmMoaW1hZ2VJZHNbaV0sIGltYWdlU3R5bGVzUmVhZHkuYmluZCh0aGlzLCBpbWFnZUlkc1tpXSwg
Y29udGV4dCkpOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gcHVzaEltYWdlTm9kZXMo
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwu
anMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwppbmRleCAw
YTdkYWJiLi5hNmU1YjQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q1NTU3R5bGVNb2RlbC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5
bGVNb2RlbC5qcwpAQCAtODMsNyArODMsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgdXNlckNhbGxiYWNrKHJlc3VsdCk7CiAgICAg
ICAgIH0KIAotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFN0eWxlcyhub2RlSWQsIGZhbHNl
LCBjYWxsYmFjay5iaW5kKG51bGwsIHVzZXJDYWxsYmFjaykpOworICAgICAgICBJbnNwZWN0b3JC
YWNrZW5kLmdldFN0eWxlc0Zvck5vZGUyKG5vZGVJZCwgY2FsbGJhY2suYmluZChudWxsLCB1c2Vy
Q2FsbGJhY2spKTsKICAgICB9LAogCiAgICAgZ2V0Q29tcHV0ZWRTdHlsZUFzeW5jOiBmdW5jdGlv
bihub2RlSWQsIHVzZXJDYWxsYmFjaykKQEAgLTk2LDcgKzk2LDcgQEAgV2ViSW5zcGVjdG9yLkNT
U1N0eWxlTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5wYXJzZVBheWxvYWQoc3R5bGVQYXlsb2Fk
KSk7CiAgICAgICAgIH0KIAotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldENvbXB1dGVkU3R5
bGUobm9kZUlkLCBjYWxsYmFjay5iaW5kKG51bGwsIHVzZXJDYWxsYmFjaykpOworICAgICAgICBJ
bnNwZWN0b3JCYWNrZW5kLmdldENvbXB1dGVkU3R5bGVGb3JOb2RlMihub2RlSWQsIGNhbGxiYWNr
LmJpbmQobnVsbCwgdXNlckNhbGxiYWNrKSk7CiAgICAgfSwKIAogICAgIGdldElubGluZVN0eWxl
QXN5bmM6IGZ1bmN0aW9uKG5vZGVJZCwgdXNlckNhbGxiYWNrKQpAQCAtMTA5LDQyICsxMDksNDYg
QEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAg
ICAgIHVzZXJDYWxsYmFjayhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5wYXJzZVBh
eWxvYWQoc3R5bGVQYXlsb2FkKSk7CiAgICAgICAgIH0KIAotICAgICAgICBJbnNwZWN0b3JCYWNr
ZW5kLmdldElubGluZVN0eWxlKG5vZGVJZCwgY2FsbGJhY2suYmluZChudWxsLCB1c2VyQ2FsbGJh
Y2spKTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRJbmxpbmVTdHlsZUZvck5vZGUyKG5v
ZGVJZCwgY2FsbGJhY2suYmluZChudWxsLCB1c2VyQ2FsbGJhY2spKTsKICAgICB9LAogCi0gICAg
c2V0UnVsZVNlbGVjdG9yOiBmdW5jdGlvbihydWxlSWQsIG5ld0NvbnRlbnQsIG5vZGVJZCwgc3Vj
Y2Vzc0NhbGxiYWNrLCBmYWlsdXJlQ2FsbGJhY2spCisgICAgc2V0UnVsZVNlbGVjdG9yOiBmdW5j
dGlvbihydWxlSWQsIG5vZGVJZCwgbmV3U2VsZWN0b3IsIHN1Y2Nlc3NDYWxsYmFjaywgZmFpbHVy
ZUNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2sobmV3UnVsZVBheWxv
YWQsIGRvZXNBZmZlY3RTZWxlY3RlZE5vZGUpCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrQWZmZWN0
c0NhbGxiYWNrKG5vZGVJZCwgc3VjY2Vzc0NhbGxiYWNrLCBydWxlUGF5bG9hZCwgc2VsZWN0ZWRO
b2RlSWRzKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW5ld1J1bGVQYXlsb2FkKQorICAg
ICAgICAgICAgdmFyIGRvZXNBZmZlY3RTZWxlY3RlZE5vZGUgPSAoc2VsZWN0ZWROb2RlSWRzLmlu
ZGV4T2Yobm9kZUlkKSA+PSAwKTsKKyAgICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhXZWJJbnNw
ZWN0b3IuQ1NTUnVsZS5wYXJzZVBheWxvYWQocnVsZVBheWxvYWQpLCBkb2VzQWZmZWN0U2VsZWN0
ZWROb2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKG5vZGVJZCwg
c3VjY2Vzc0NhbGxiYWNrLCBmYWlsdXJlQ2FsbGJhY2ssIG5ld1NlbGVjdG9yLCBydWxlUGF5bG9h
ZCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFydWxlUGF5bG9hZCkKICAgICAgICAgICAg
ICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBzdWNjZXNzQ2FsbGJhY2soV2ViSW5zcGVjdG9yLkNTU1J1bGUucGFyc2VQYXlsb2FkKG5ld1J1
bGVQYXlsb2FkKSwgZG9lc0FmZmVjdFNlbGVjdGVkTm9kZSk7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yQmFja2VuZC5xdWVyeVNlbGVjdG9yQWxsKG5vZGVJZCwgbmV3U2VsZWN0b3IsIGNoZWNr
QWZmZWN0c0NhbGxiYWNrLmJpbmQobnVsbCwgbm9kZUlkLCBzdWNjZXNzQ2FsbGJhY2ssIHJ1bGVQ
YXlsb2FkKSk7CiAgICAgICAgIH0KIAotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldFJ1bGVT
ZWxlY3RvcihydWxlSWQsIG5ld0NvbnRlbnQsIG5vZGVJZCwgY2FsbGJhY2spOworICAgICAgICBJ
bnNwZWN0b3JCYWNrZW5kLnNldFJ1bGVTZWxlY3RvcjIocnVsZUlkLCBuZXdTZWxlY3RvciwgY2Fs
bGJhY2suYmluZChudWxsLCBub2RlSWQsIHN1Y2Nlc3NDYWxsYmFjaywgZmFpbHVyZUNhbGxiYWNr
KSk7CiAgICAgfSwKIAotICAgIGFkZFJ1bGU6IGZ1bmN0aW9uKG5vZGVJZCwgbmV3Q29udGVudCwg
c3VjY2Vzc0NhbGxiYWNrLCBmYWlsdXJlQ2FsbGJhY2spCisgICAgYWRkUnVsZTogZnVuY3Rpb24o
bm9kZUlkLCBzZWxlY3Rvciwgc3VjY2Vzc0NhbGxiYWNrLCBmYWlsdXJlQ2FsbGJhY2spCiAgICAg
ewotICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhydWxlLCBkb2VzQWZmZWN0U2VsZWN0ZWROb2Rl
KQorICAgICAgICBmdW5jdGlvbiBjaGVja0FmZmVjdHNDYWxsYmFjayhub2RlSWQsIHN1Y2Nlc3ND
YWxsYmFjaywgcnVsZVBheWxvYWQsIHNlbGVjdGVkTm9kZUlkcykKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGRvZXNBZmZlY3RTZWxlY3RlZE5vZGUgPSAoc2VsZWN0ZWROb2RlSWRzLmluZGV4
T2Yobm9kZUlkKSA+PSAwKTsKKyAgICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhXZWJJbnNwZWN0
b3IuQ1NTUnVsZS5wYXJzZVBheWxvYWQocnVsZVBheWxvYWQpLCBkb2VzQWZmZWN0U2VsZWN0ZWRO
b2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHN1Y2Nlc3NDYWxs
YmFjaywgZmFpbHVyZUNhbGxiYWNrLCBzZWxlY3RvciwgcnVsZVBheWxvYWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGlmICghcnVsZSkgeworICAgICAgICAgICAgaWYgKCFydWxlUGF5bG9hZCkg
ewogICAgICAgICAgICAgICAgIC8vIEludmFsaWQgc3ludGF4IGZvciBhIHNlbGVjdG9yCiAgICAg
ICAgICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIHZhciBzdHlsZVJ1bGUgPSBXZWJJbnNwZWN0b3IuQ1NTUnVsZS5wYXJzZVBh
eWxvYWQocnVsZSk7Ci0gICAgICAgICAgICAgICAgc3R5bGVSdWxlLnJ1bGUgPSBydWxlOwotICAg
ICAgICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhzdHlsZVJ1bGUsIGRvZXNBZmZlY3RTZWxlY3Rl
ZE5vZGUpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yQmFja2VuZC5xdWVyeVNlbGVjdG9yQWxsKG5vZGVJZCwgc2VsZWN0b3IsIGNo
ZWNrQWZmZWN0c0NhbGxiYWNrLmJpbmQobnVsbCwgbm9kZUlkLCBzdWNjZXNzQ2FsbGJhY2ssIHJ1
bGVQYXlsb2FkKSk7CiAgICAgICAgIH0KIAotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmFkZFJ1
bGUobmV3Q29udGVudCwgbm9kZUlkLCBjYWxsYmFjayk7Ci0gICAgfSwKLQotICAgIHNldENTU1Rl
eHQ6IGZ1bmN0aW9uKHN0eWxlSWQsIGNzc1RleHQpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JC
YWNrZW5kLnNldFN0eWxlVGV4dChzdHlsZUlkLCBjc3NUZXh0KTsKKyAgICAgICAgSW5zcGVjdG9y
QmFja2VuZC5hZGRSdWxlMihub2RlSWQsIHNlbGVjdG9yLCBjYWxsYmFjay5iaW5kKG51bGwsIHN1
Y2Nlc3NDYWxsYmFjaywgZmFpbHVyZUNhbGxiYWNrLCBzZWxlY3RvcikpOwogICAgIH0KIH0KIApA
QCAtMTgzLDYgKzE4Nyw4IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uID0gZnVu
Y3Rpb24ocGF5bG9hZCkKICAgICAgICAgKytwcm9wZXJ0eUluZGV4OwogICAgIH0KICAgICB0aGlz
Lmxlbmd0aCA9IHByb3BlcnR5SW5kZXg7CisgICAgaWYgKCJjc3NUZXh0IiBpbiBwYXlsb2FkKQor
ICAgICAgICB0aGlzLmNzc1RleHQgPSBwYXlsb2FkLmNzc1RleHQ7CiB9CiAKIFdlYkluc3BlY3Rv
ci5DU1NTdHlsZURlY2xhcmF0aW9uLnBhcnNlUGF5bG9hZCA9IGZ1bmN0aW9uKHBheWxvYWQpCkBA
IC0yNzcsMjMgKzI4Myw0NSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBsb25naGFuZHMgPyB0aGlzLmdldFByb3BlcnR5UHJp
b3JpdHkobG9uZ2hhbmRzWzBdKSA6IG51bGw7CiAgICAgfSwKIAotICAgIGFwcGVuZFByb3BlcnR5
OiBmdW5jdGlvbihwcm9wZXJ0eU5hbWUsIHByb3BlcnR5VmFsdWUsIHVzZXJDYWxsYmFjaykKKyAg
ICBwcm9wZXJ0eUF0OiBmdW5jdGlvbihpbmRleCkKICAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIHNl
dFByb3BlcnR5Q2FsbGJhY2sodXNlckNhbGxiYWNrLCBzdWNjZXNzLCBzdHlsZVBheWxvYWQpCisg
ICAgICAgIHJldHVybiAoaW5kZXggPCB0aGlzLmFsbFByb3BlcnRpZXMubGVuZ3RoKSA/IHRoaXMu
YWxsUHJvcGVydGllc1tpbmRleF0gOiBudWxsOworICAgIH0sCisKKyAgICBwYXN0TGFzdFNvdXJj
ZVByb3BlcnR5SW5kZXg6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGZvciAodmFyIGkgPSB0
aGlzLmFsbFByb3BlcnRpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgICAg
IHZhciBwcm9wZXJ0eSA9IHRoaXMuYWxsUHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgIGlmIChw
cm9wZXJ0eS5hY3RpdmUgfHwgcHJvcGVydHkuZGlzYWJsZWQpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGkgKyAxOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0sCisKKyAgICBu
ZXdCbGFua1Byb3BlcnR5OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdl
Ykluc3BlY3Rvci5DU1NQcm9wZXJ0eSh0aGlzLCB0aGlzLnBhc3RMYXN0U291cmNlUHJvcGVydHlJ
bmRleCgpLCAiIiwgIiIsICIiLCAiYWN0aXZlIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCAiIik7Cisg
ICAgfSwKKworICAgIGluc2VydFByb3BlcnR5QXQ6IGZ1bmN0aW9uKGluZGV4LCBuYW1lLCB2YWx1
ZSwgdXNlckNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2sodXNlckNh
bGxiYWNrLCBwYXlsb2FkKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpCisg
ICAgICAgICAgICBpZiAoIXVzZXJDYWxsYmFjaykKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIGlmICghcGF5bG9hZCkKICAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2so
bnVsbCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdXNlckNhbGxiYWNrKFdl
Ykluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLnBhcnNlUGF5bG9hZChzdHlsZVBheWxvYWQp
KTsKKyAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVj
bGFyYXRpb24ucGFyc2VQYXlsb2FkKHBheWxvYWQpKTsKICAgICAgICAgfQogCi0gICAgICAgIC8v
IEZJWE1FKGFwYXZsb3YpOiB0aGlzIHNob3VsZCBiZSBtaWdyYXRlZCB0byB0aGUgbmV3IEluc3Bl
Y3RvckNTU0FnZW50IEFQSSBvbmNlIGl0IGlzIGVuYWJsZWQuCi0gICAgICAgIEluc3BlY3RvckJh
Y2tlbmQuYXBwbHlTdHlsZVRleHQodGhpcy5pZCwgcHJvcGVydHlOYW1lICsgIjogIiArIHByb3Bl
cnR5VmFsdWUgKyAiOyIsIHByb3BlcnR5TmFtZSwgc2V0UHJvcGVydHlDYWxsYmFjay5iaW5kKHRo
aXMsIHVzZXJDYWxsYmFjaykpOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldFByb3BlcnR5
VGV4dDIodGhpcy5pZCwgaW5kZXgsIG5hbWUgKyAiOiAiICsgdmFsdWUgKyAiOyIsIGZhbHNlLCBj
YWxsYmFjay5iaW5kKG51bGwsIHVzZXJDYWxsYmFjaykpOwogICAgIH0sCiAKLSAgICBwcm9wZXJ0
eUF0OiBmdW5jdGlvbihpbmRleCkKKyAgICBhcHBlbmRQcm9wZXJ0eTogZnVuY3Rpb24obmFtZSwg
dmFsdWUsIHVzZXJDYWxsYmFjaykKICAgICB7Ci0gICAgICAgIHJldHVybiAoaW5kZXggPCB0aGlz
LmFsbFByb3BlcnRpZXMubGVuZ3RoKSA/IHRoaXMuYWxsUHJvcGVydGllc1tpbmRleF0gOiBudWxs
OworICAgICAgICB0aGlzLmluc2VydFByb3BlcnR5QXQodGhpcy5hbGxQcm9wZXJ0aWVzLmxlbmd0
aCwgbmFtZSwgdmFsdWUsIHVzZXJDYWxsYmFjayk7CiAgICAgfQogfQogCkBAIC0zMDYsNiArMzM0
LDcgQEAgV2ViSW5zcGVjdG9yLkNTU1J1bGUgPSBmdW5jdGlvbihwYXlsb2FkKQogICAgIHRoaXMu
b3JpZ2luID0gcGF5bG9hZC5vcmlnaW47CiAgICAgdGhpcy5zdHlsZSA9IFdlYkluc3BlY3Rvci5D
U1NTdHlsZURlY2xhcmF0aW9uLnBhcnNlUGF5bG9hZChwYXlsb2FkLnN0eWxlKTsKICAgICB0aGlz
LnN0eWxlLnBhcmVudFJ1bGUgPSB0aGlzOworICAgIHRoaXMuc2VsZWN0b3JSYW5nZSA9IHBheWxv
YWQuc2VsZWN0b3JSYW5nZTsKIH0KIAogV2ViSW5zcGVjdG9yLkNTU1J1bGUucGFyc2VQYXlsb2Fk
ID0gZnVuY3Rpb24ocGF5bG9hZCkKQEAgLTM2Miw2ICszOTEsOCBAQCBXZWJJbnNwZWN0b3IuQ1NT
UHJvcGVydHkucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy50ZXh0ICE9PSB1bmRlZmlu
ZWQpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0OwogCisgICAgICAgIGlmICh0aGlzLm5h
bWUgPT09ICIiKQorICAgICAgICAgICAgcmV0dXJuICIiOwogICAgICAgICByZXR1cm4gdGhpcy5u
YW1lICsgIjogIiArIHRoaXMudmFsdWUgKyAodGhpcy5wcmlvcml0eSA/ICIgISIgKyB0aGlzLnBy
aW9yaXR5IDogIiIpICsgIjsiOwogICAgIH0sCiAKQEAgLTM5MywxMSArNDI0LDExIEBAIFdlYklu
c3BlY3Rvci5DU1NQcm9wZXJ0eS5wcm90b3R5cGUgPSB7CiAgICAgLy8gUmVwbGFjZXMgInByb3Bl
cnR5TmFtZTogcHJvcGVydHlWYWx1ZSBbIWltcG9ydGFudF07IiBpbiB0aGUgc3R5bGVzaGVldCBi
eSBhbiBhcmJpdHJhcnkgcHJvcGVydHlUZXh0LgogICAgIHNldFRleHQ6IGZ1bmN0aW9uKHByb3Bl
cnR5VGV4dCwgdXNlckNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2so
dXNlckNhbGxiYWNrLCBzdWNjZXNzLCBzdHlsZVBheWxvYWQpCisgICAgICAgIGZ1bmN0aW9uIGNh
bGxiYWNrKHVzZXJDYWxsYmFjaywgc3R5bGVQYXlsb2FkKQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAoIXVzZXJDYWxsYmFjaykKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgICAgICBpZiAoIXN0eWxlUGF5bG9hZCkKICAgICAgICAg
ICAgICAgICB1c2VyQ2FsbGJhY2sobnVsbCk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICB2YXIgc3R5bGUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5wYXJz
ZVBheWxvYWQoc3R5bGVQYXlsb2FkKTsKQEAgLTQwNyw3ICs0MzgsMTEgQEAgV2ViSW5zcGVjdG9y
LkNTU1Byb3BlcnR5LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoIXRoaXMub3duZXJTdHls
ZSkKICAgICAgICAgICAgIHRocm93ICJObyBvd25lclN0eWxlIGZvciBwcm9wZXJ0eSI7Ci0gICAg
ICAgIEluc3BlY3RvckJhY2tlbmQuYXBwbHlTdHlsZVRleHQodGhpcy5vd25lclN0eWxlLmlkLCBw
cm9wZXJ0eVRleHQsIHRoaXMubmFtZSwgY2FsbGJhY2suYmluZCh0aGlzLCB1c2VyQ2FsbGJhY2sp
KTsKKworICAgICAgICB0aGlzLnRleHQgPSBwcm9wZXJ0eVRleHQ7CisKKyAgICAgICAgLy8gQW4g
aW5kZXggcGFzdCBhbGwgdGhlIHByb3BlcnRpZXMgYWRkcyBhIG5ldyBwcm9wZXJ0eSB0byB0aGUg
c3R5bGUuCisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0UHJvcGVydHlUZXh0Mih0aGlzLm93
bmVyU3R5bGUuaWQsIHRoaXMuaW5kZXgsIHByb3BlcnR5VGV4dCwgdGhpcy5pbmRleCA8IHRoaXMu
b3duZXJTdHlsZS5wYXN0TGFzdFNvdXJjZVByb3BlcnR5SW5kZXgoKSwgY2FsbGJhY2suYmluZCh0
aGlzLCB1c2VyQ2FsbGJhY2spKTsKICAgICB9LAogCiAgICAgc2V0VmFsdWU6IGZ1bmN0aW9uKG5l
d1ZhbHVlLCB1c2VyQ2FsbGJhY2spCkBAIC00MzQsNiArNDY5LDU3IEBAIFdlYkluc3BlY3Rvci5D
U1NQcm9wZXJ0eS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgdXNlckNhbGxiYWNrKHN0
eWxlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBJbnNwZWN0b3JCYWNrZW5k
LnRvZ2dsZVN0eWxlRW5hYmxlZCh0aGlzLm93bmVyU3R5bGUuaWQsIHRoaXMubmFtZSwgZGlzYWJs
ZWQsIGNhbGxiYWNrLmJpbmQodGhpcywgdXNlckNhbGxiYWNrKSk7CisKKyAgICAgICAgSW5zcGVj
dG9yQmFja2VuZC50b2dnbGVQcm9wZXJ0eTIodGhpcy5vd25lclN0eWxlLmlkLCB0aGlzLmluZGV4
LCBkaXNhYmxlZCwgY2FsbGJhY2suYmluZCh0aGlzLCB1c2VyQ2FsbGJhY2spKTsKKyAgICB9Cit9
CisKK1dlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0ID0gZnVuY3Rpb24ocGF5bG9hZCkKK3sKKyAg
ICB0aGlzLmlkID0gcGF5bG9hZC5zdHlsZVNoZWV0SWQ7CisgICAgdGhpcy5zb3VyY2VVUkwgPSBw
YXlsb2FkLnNvdXJjZVVSTDsKKyAgICB0aGlzLnRpdGxlID0gcGF5bG9hZC50aXRsZTsKKyAgICB0
aGlzLmRpc2FibGVkID0gcGF5bG9hZC5kaXNhYmxlZDsKKyAgICB0aGlzLnJ1bGVzID0gW107Cisg
ICAgdGhpcy5zdHlsZXMgPSB7fTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBheWxvYWQucnVs
ZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIHJ1bGUgPSBXZWJJbnNwZWN0b3IuQ1NTUnVs
ZS5wYXJzZVBheWxvYWQocGF5bG9hZC5ydWxlc1tpXSk7CisgICAgICAgIHRoaXMucnVsZXMucHVz
aChydWxlKTsKKyAgICAgICAgaWYgKHJ1bGUuc3R5bGUpCisgICAgICAgICAgICB0aGlzLnN0eWxl
c1tydWxlLnN0eWxlLmlkXSA9IHJ1bGUuc3R5bGU7CisgICAgfQorICAgIGlmICgidGV4dCIgaW4g
cGF5bG9hZCkKKyAgICAgICAgdGhpcy5fdGV4dCA9IHBheWxvYWQudGV4dDsKK30KKworV2ViSW5z
cGVjdG9yLkNTU1N0eWxlU2hlZXQuY3JlYXRlRm9ySWQgPSBmdW5jdGlvbihzdHlsZVNoZWV0SWQs
IHVzZXJDYWxsYmFjaykKK3sKKyAgICBmdW5jdGlvbiBjYWxsYmFjayh1c2VyQ2FsbGJhY2ssIHN0
eWxlU2hlZXRQYXlsb2FkKQorICAgIHsKKyAgICAgICAgaWYgKCFzdHlsZVNoZWV0UGF5bG9hZCkK
KyAgICAgICAgICAgIHVzZXJDYWxsYmFjayhudWxsKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgdXNlckNhbGxiYWNrKG5ldyBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldChzdHlsZVNoZWV0
UGF5bG9hZCkpOworICAgIH0KKyAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFN0eWxlU2hlZXQyKHN0
eWxlU2hlZXRJZCwgY2FsbGJhY2suYmluZCh0aGlzLCB1c2VyQ2FsbGJhY2spKTsKK30KKworV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQucHJvdG90eXBlID0geworICAgIGdldCB0ZXh0KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl90ZXh0OworICAgIH0sCisKKyAgICBzZXRUZXh0OiBm
dW5jdGlvbihuZXdUZXh0LCB1c2VyQ2FsbGJhY2spCisgICAgeworICAgICAgICBmdW5jdGlvbiBj
YWxsYmFjayh1c2VyQ2FsbGJhY2ssIHN0eWxlU2hlZXRQYXlsb2FkKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIXN0eWxlU2hlZXRQYXlsb2FkKQorICAgICAgICAgICAgICAgIHVzZXJDYWxs
YmFjayhudWxsKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB1c2VyQ2FsbGJh
Y2sobmV3IFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0KHN0eWxlU2hlZXRQYXlsb2FkKSk7Cisg
ICAgICAgIH0KKworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldFN0eWxlU2hlZXRUZXh0Mih0
aGlzLmlkLCBuZXdUZXh0LCBjYWxsYmFjay5iaW5kKHRoaXMsIHVzZXJDYWxsYmFjaykpOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5q
cyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwppbmRleCA0ZmQwYzgz
Li4xYWNjMmUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGlu
Z3MuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCkBAIC00
Niw3ICs0Niw4IEBAIHZhciBQcmVmZXJlbmNlcyA9IHsKICAgICBuYXRpdmVJbnN0cnVtZW50YXRp
b25FbmFibGVkOiBmYWxzZSwKICAgICByZXNvdXJjZUV4cG9ydEVuYWJsZWQ6IGZhbHNlLAogICAg
IGZpbGVTeXN0ZW1FbmFibGVkOiBmYWxzZSwKLSAgICB1c2VEYXRhVVJMRm9yUmVzb3VyY2VJbWFn
ZUljb25zOiB0cnVlCisgICAgdXNlRGF0YVVSTEZvclJlc291cmNlSW1hZ2VJY29uczogdHJ1ZSwK
KyAgICBkZWJ1Z01vZGU6IGZhbHNlCiB9CiAKIFdlYkluc3BlY3Rvci5TZXR0aW5ncyA9IGZ1bmN0
aW9uKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRl
YmFyUGFuZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFu
ZS5qcwppbmRleCA2ZDFiNTQxLi4xZTNiMTBlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCkBAIC01ODksNiArNTg5LDggQEAgV2ViSW5z
cGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24gPSBmdW5jdGlvbihzdHlsZVJ1bGUsIGVkaXRh
YmxlLCBpc0luaGVyaXRlZCwKICAgICB0aGlzLl9zZWxlY3RvckVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgdGhpcy5fc2VsZWN0b3JFbGVtZW50LnRleHRDb250
ZW50ID0gc3R5bGVSdWxlLnNlbGVjdG9yVGV4dDsKICAgICB0aGlzLnRpdGxlRWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9zZWxlY3RvckVsZW1lbnQpOworICAgIGlmIChQcmVmZXJlbmNlcy5kZWJ1
Z01vZGUpCisgICAgICAgIHRoaXMuX3NlbGVjdG9yRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJj
bGljayIsIHRoaXMuX2RlYnVnU2hvd1N0eWxlLmJpbmQodGhpcyksIGZhbHNlKTsKIAogICAgIHZh
ciBvcGVuQnJhY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgb3BlbkJy
YWNlLnRleHRDb250ZW50ID0gIiB7IjsKQEAgLTcxOSwxMSArNzIxLDYgQEAgV2ViSW5zcGVjdG9y
LlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlID0gewogCiAgICAgb25wb3B1bGF0ZTog
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gc29ydGVyKGEsIGIpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpOwotICAg
ICAgICB9Ci0KICAgICAgICAgdmFyIHN0eWxlID0gdGhpcy5zdHlsZVJ1bGUuc3R5bGU7CiAKICAg
ICAgICAgdmFyIGhhbmRsZWRQcm9wZXJ0aWVzID0ge307CkBAIC03MzQsOCArNzMxLDYgQEAgV2Vi
SW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGFsbFByb3BlcnRpZXMubGVuZ3RoOyArK2kpCiAgICAgICAgICAg
ICB0aGlzLnVuaXF1ZVByb3BlcnRpZXMucHVzaChhbGxQcm9wZXJ0aWVzW2ldKTsKIAotICAgICAg
ICB0aGlzLnVuaXF1ZVByb3BlcnRpZXMuc29ydChzb3J0ZXIpOwotCiAgICAgICAgIC8vIENvbGxl
Y3QgYWxsIHNob3J0aGFuZCBuYW1lcy4KICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlz
LnVuaXF1ZVByb3BlcnRpZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBwcm9wZXJ0
eSA9IHRoaXMudW5pcXVlUHJvcGVydGllc1tpXTsKQEAgLTc0NSw2ICs3NDAsNyBAQCBXZWJJbnNw
ZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAg
ICAgc2hvcnRoYW5kTmFtZXNbcHJvcGVydHkuc2hvcnRoYW5kXSA9IHRydWU7CiAgICAgICAgIH0K
IAorICAgICAgICAvLyBDb2xsZWN0IGFsbCBzaG9ydGhhbmQgbmFtZXMuCiAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdGhpcy51bmlxdWVQcm9wZXJ0aWVzLmxlbmd0aDsgKytpKSB7CiAgICAg
ICAgICAgICB2YXIgcHJvcGVydHkgPSB0aGlzLnVuaXF1ZVByb3BlcnRpZXNbaV07CiAgICAgICAg
ICAgICB2YXIgZGlzYWJsZWQgPSBwcm9wZXJ0eS5kaXNhYmxlZDsKQEAgLTc4MywxMCArNzc5LDEw
IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgcmV0dXJuIG51bGw7CiAgICAgfSwKIAotICAgIGFkZE5ld0JsYW5rUHJvcGVydHk6IGZ1
bmN0aW9uKCkKKyAgICBhZGROZXdCbGFua1Byb3BlcnR5OiBmdW5jdGlvbihvcHRpb25hbEluZGV4
KQogICAgIHsKICAgICAgICAgdmFyIHN0eWxlID0gdGhpcy5zdHlsZVJ1bGUuc3R5bGU7Ci0gICAg
ICAgIHZhciBwcm9wZXJ0eSA9IG5ldyBXZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkoc3R5bGUsIHN0
eWxlLmFsbFByb3BlcnRpZXMubGVuZ3RoLCAiIiwgIiIsICIiLCAic3R5bGUiLCB0cnVlLCBmYWxz
ZSwgZmFsc2UsIHVuZGVmaW5lZCk7CisgICAgICAgIHZhciBwcm9wZXJ0eSA9IHN0eWxlLm5ld0Js
YW5rUHJvcGVydHkoKTsKICAgICAgICAgdmFyIGl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlN0eWxl
UHJvcGVydHlUcmVlRWxlbWVudCh0aGlzLnN0eWxlUnVsZSwgc3R5bGUsIHByb3BlcnR5LCBmYWxz
ZSwgZmFsc2UsIGZhbHNlKTsKICAgICAgICAgdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuYXBw
ZW5kQ2hpbGQoaXRlbSk7CiAgICAgICAgIGl0ZW0ubGlzdEl0ZW1FbGVtZW50LnRleHRDb250ZW50
ID0gIiI7CkBAIC03OTQsNiArNzkwLDM5IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNT
ZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAgfSwKIAorICAg
IF9kZWJ1Z1Nob3dTdHlsZTogZnVuY3Rpb24oYW5jaG9yKQorICAgIHsKKyAgICAgICAgdmFyIGJv
dW5kSGFuZGxlcjsKKyAgICAgICAgZnVuY3Rpb24gcmVtb3ZlU3R5bGVCb3goZWxlbWVudCwgZXZl
bnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQgPT09IGVsZW1lbnQp
IHsKKyAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJl
bW92ZUNoaWxkKGVsZW1lbnQpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
Im1haW4iKS5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCBib3VuZEhhbmRsZXIsIHRy
dWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFldmVudC5zaGlmdEtleSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgic3BhbiIpOworICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAg
ICAgIGVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZCA9ICJ5ZWxsb3ciOworICAgICAgICBlbGVtZW50
LnN0eWxlLmRpc3BsYXkgPSAiaW5saW5lLWJsb2NrIjsKKyAgICAgICAgY29udGFpbmVyLnN0eWxl
LmNzc1RleHQgPSAiei1pbmRleDogMjAwMDAwMDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDUw
cHg7IGxlZnQ6IDUwcHg7IHdoaXRlLXNwYWNlOiBwcmU7IG92ZXJmbG93OiBhdXRvOyBiYWNrZ3Jv
dW5kOiB3aGl0ZTsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgZm9udC1zaXplOiAxMnB4OyBib3Jk
ZXI6IDFweCBzb2xpZCBibGFjazsgb3BhY2l0eTogMC44NTsgLXdlYmtpdC11c2VyLXNlbGVjdDog
dGV4dDsgcGFkZGluZzogMnB4OyI7CisgICAgICAgIGNvbnRhaW5lci5zdHlsZS53aWR0aCA9IChk
b2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoIC0gMTAwKSArICJweCI7CisgICAgICAgIGNvbnRhaW5l
ci5zdHlsZS5oZWlnaHQgPSAoZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQgLSAxMDApICsgInB4
IjsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb250YWluZXIpOworICAgICAg
ICBpZiAodGhpcy5ydWxlKQorICAgICAgICAgICAgZWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMu
cnVsZS5zZWxlY3RvclRleHQgKyAiIHsiICsgKCh0aGlzLnN0eWxlUnVsZS5zdHlsZS5jc3NUZXh0
ICE9PSB1bmRlZmluZWQpID8gdGhpcy5zdHlsZVJ1bGUuc3R5bGUuY3NzVGV4dCA6ICI8bm8gY3Nz
VGV4dD4iKSArICJ9IjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZWxlbWVudC50ZXh0Q29u
dGVudCA9IHRoaXMuc3R5bGVSdWxlLnN0eWxlLmNzc1RleHQ7CisgICAgICAgIGJvdW5kSGFuZGxl
ciA9IHJlbW92ZVN0eWxlQm94LmJpbmQobnVsbCwgY29udGFpbmVyKTsKKyAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoIm1haW4iKS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCBi
b3VuZEhhbmRsZXIsIHRydWUpOworICAgIH0sCisKICAgICBfaGFuZGxlRW1wdHlTcGFjZURvdWJs
ZUNsaWNrOiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIGlmIChldmVudC50YXJnZXQu
aGFzU3R5bGVDbGFzcygiaGVhZGVyIikpIHsKQEAgLTg4NSw3ICs5MTQsOCBAQCBXZWJJbnNwZWN0
b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBtb3Zl
VG9OZXh0SWZOZWVkZWQuY2FsbChzZWxmKTsKICAgICAgICAgfQogCi0gICAgICAgIFdlYkluc3Bl
Y3Rvci5jc3NNb2RlbC5zZXRSdWxlU2VsZWN0b3IodGhpcy5ydWxlLmlkLCBuZXdDb250ZW50LCB0
aGlzLnBhbmUubm9kZS5pZCwgc3VjY2Vzc0NhbGxiYWNrLCBtb3ZlVG9OZXh0SWZOZWVkZWQuYmlu
ZCh0aGlzKSk7CisgICAgICAgIHZhciBmb2N1c2VkTm9kZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMu
ZWxlbWVudHMuZm9jdXNlZERPTU5vZGU7CisgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5z
ZXRSdWxlU2VsZWN0b3IodGhpcy5ydWxlLmlkLCBmb2N1c2VkTm9kZSA/IGZvY3VzZWROb2RlLmlk
IDogMCwgbmV3Q29udGVudCwgc3VjY2Vzc0NhbGxiYWNrLCBtb3ZlVG9OZXh0SWZOZWVkZWQuYmlu
ZCh0aGlzKSk7CiAgICAgfSwKIAogICAgIGVkaXRpbmdTZWxlY3RvckNhbmNlbGxlZDogZnVuY3Rp
b24oKQpAQCAtMTMwMSw2ICsxMzMxLDExIEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJl
ZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCI7IikpOwogCisgICAgICAgIGlmICgh
dGhpcy5wYXJzZWRPaykKKyAgICAgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmFkZFN0eWxl
Q2xhc3MoIm5vdC1wYXJzZWQtb2siKTsKKyAgICAgICAgaWYgKHRoaXMucHJvcGVydHkuaW5hY3Rp
dmUpCisgICAgICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJpbmFj
dGl2ZSIpOworCiAgICAgICAgIHRoaXMudG9vbHRpcCA9IHRoaXMucHJvcGVydHkucHJvcGVydHlU
ZXh0OwogICAgIH0sCiAKQEAgLTE0NzcsNiArMTUxMiwyNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQ
cm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHNlbGVjdGlvblJh
bmdlLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyICE9PSB0aGlzLmxpc3RJdGVtRWxlbWVudCAmJiAh
c2VsZWN0aW9uUmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXIuaXNEZXNjZW5kYW50KHRoaXMu
bGlzdEl0ZW1FbGVtZW50KSkKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICB2YXIgdGV4
dCA9IGV2ZW50LnRhcmdldC50ZXh0Q29udGVudC50cmltKCk7CisgICAgICAgIHZhciBvcGVuUXVv
dGU7CisgICAgICAgIHZhciB3YXNFc2NhcGUgPSBmYWxzZTsKKyAgICAgICAgLy8gRXhjbHVkZSB0
aGUgbGFzdCBjaGFyYWN0ZXIgZnJvbSB0aGUgY2hlY2sgc2luY2UgaXQgaXMgYWxsb3dlZCB0byBi
ZSAiOyIuCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGV4dC5sZW5ndGggLSAxOyArK2kp
IHsKKyAgICAgICAgICAgIHZhciBjaCA9IHRleHQuY2hhckF0KGkpOworICAgICAgICAgICAgaWYg
KGNoID09PSAiXFwiKSB7CisgICAgICAgICAgICAgICAgd2FzRXNjYXBlID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjaCA9
PT0gIjsiICYmICFvcGVuUXVvdGUpCisgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBEbyBub3Qg
aGFuZGxlIG5hbWUvdmFsdWUgc2hpZnRzIGlmIHRoZSBwcm9wZXJ0eSBpcyBjb21wb3VuZC4KKyAg
ICAgICAgICAgIGlmICgoY2ggPT09ICInIiB8fCBjaCA9PT0gIlwiIikgJiYgIXdhc0VzY2FwZSkg
eworICAgICAgICAgICAgICAgIGlmICghb3BlblF1b3RlKQorICAgICAgICAgICAgICAgICAgICBv
cGVuUXVvdGUgPSBjaDsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA9PT0gb3BlblF1b3Rl
KQorICAgICAgICAgICAgICAgICAgICBvcGVuUXVvdGUgPSBudWxsOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgd2FzRXNjYXBlID0gZmFsc2U7CisgICAgICAgIH0KKwogICAgICAgICBjb25z
dCBzdHlsZVZhbHVlRGVsaW1ldGVycyA9ICIgXHRcblwiJzo7LC8oKSI7CiAgICAgICAgIHZhciB3
b3JkUmFuZ2UgPSBzZWxlY3Rpb25SYW5nZS5zdGFydENvbnRhaW5lci5yYW5nZU9mV29yZChzZWxl
Y3Rpb25SYW5nZS5zdGFydE9mZnNldCwgc3R5bGVWYWx1ZURlbGltZXRlcnMsIHRoaXMubGlzdEl0
ZW1FbGVtZW50KTsKICAgICAgICAgdmFyIHdvcmRTdHJpbmcgPSB3b3JkUmFuZ2UudG9TdHJpbmco
KTsKQEAgLTE1NTQsMTYgKzE2MTAsMTEgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsK
IAotICAgICAgICBpZiAoIXRoaXMub3JpZ2luYWxDU1NUZXh0KSB7CisgICAgICAgIGlmICghKCJv
cmlnaW5hbFByb3BlcnR5VGV4dCIgaW4gdGhpcykpIHsKICAgICAgICAgICAgIC8vIFJlbWVtYmVy
IHRoZSBydWxlJ3Mgb3JpZ2luYWwgQ1NTIHRleHQsIHNvIGl0IGNhbiBiZSByZXN0b3JlZAogICAg
ICAgICAgICAgLy8gaWYgdGhlIGVkaXRpbmcgaXMgY2FuY2VsZWQgYW5kIGJlZm9yZSBlYWNoIGFw
cGx5LgotICAgICAgICAgICAgdGhpcy5vcmlnaW5hbENTU1RleHQgPSB0aGlzLnN0eWxlLnN0eWxl
VGV4dFdpdGhTaG9ydGhhbmRzKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBS
ZXN0b3JlIHRoZSBvcmlnaW5hbCBDU1MgdGV4dCBiZWZvcmUgYXBwbHlpbmcgdXNlciBjaGFuZ2Vz
LiBUaGlzIGlzIG5lZWRlZCB0byBwcmV2ZW50Ci0gICAgICAgICAgICAvLyBuZXcgcHJvcGVydGll
cyBmcm9tIHN0aWNraW5nIGFyb3VuZCBpZiB0aGUgdXNlciBhZGRzIG9uZSwgdGhlbiByZW1vdmVz
IGl0LgotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLnNldENTU1RleHQodGhpcy5z
dHlsZS5pZCwgdGhpcy5vcmlnaW5hbENTU1RleHQpOworICAgICAgICAgICAgdGhpcy5vcmlnaW5h
bFByb3BlcnR5VGV4dCA9IHRoaXMucHJvcGVydHkucHJvcGVydHlUZXh0OwogICAgICAgICB9Ci0K
ICAgICAgICAgdGhpcy5hcHBseVN0eWxlVGV4dCh0aGlzLmxpc3RJdGVtRWxlbWVudC50ZXh0Q29u
dGVudCk7CiAgICAgfSwKIApAQCAtMTU3NCwyMyArMTYyNSwxOSBAQCBXZWJJbnNwZWN0b3IuU3R5
bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuZXhw
YW5kKCk7CiAgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIo
ImtleWRvd24iLCBjb250ZXh0LmtleURvd25MaXN0ZW5lciwgZmFsc2UpOwogICAgICAgICB0aGlz
Lmxpc3RJdGVtRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlwcmVzcyIsIGNvbnRleHQu
a2V5UHJlc3NMaXN0ZW5lciwgZmFsc2UpOwotICAgICAgICBkZWxldGUgdGhpcy5vcmlnaW5hbENT
U1RleHQ7CisgICAgICAgIGRlbGV0ZSB0aGlzLm9yaWdpbmFsUHJvcGVydHlUZXh0OwogICAgIH0s
CiAKICAgICBlZGl0aW5nQ2FuY2VsbGVkOiBmdW5jdGlvbihlbGVtZW50LCBjb250ZXh0KQogICAg
IHsKLSAgICAgICAgaWYgKHRoaXMuX25ld1Byb3BlcnR5KQotICAgICAgICAgICAgdGhpcy50cmVl
T3V0bGluZS5yZW1vdmVDaGlsZCh0aGlzKTsKLSAgICAgICAgZWxzZSBpZiAodGhpcy5vcmlnaW5h
bENTU1RleHQpIHsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5zZXRDU1NUZXh0
KHRoaXMuc3R5bGUuaWQsIHRoaXMub3JpZ2luYWxDU1NUZXh0KTsKLQotICAgICAgICAgICAgaWYg
KHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbiAmJiB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24ucGFu
ZSkKLSAgICAgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24ucGFuZS5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoInN0eWxlIGVkaXRlZCIpOwotCi0gICAgICAgICAgICB0aGlzLnVw
ZGF0ZUFsbCgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRoaXMudXBkYXRlVGl0bGUo
KTsKLQorICAgICAgICBpZiAoIm9yaWdpbmFsUHJvcGVydHlUZXh0IiBpbiB0aGlzKQorICAgICAg
ICAgICAgdGhpcy5hcHBseVN0eWxlVGV4dCh0aGlzLm9yaWdpbmFsUHJvcGVydHlUZXh0LCB0cnVl
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAodGhpcy5fbmV3UHJvcGVydHkpCisg
ICAgICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5yZW1vdmVDaGlsZCh0aGlzKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRpdGxlKCk7CisgICAgICAg
IH0KICAgICAgICAgdGhpcy5lZGl0aW5nRW5kZWQoY29udGV4dCk7CiAgICAgfSwKIApAQCAtMTY2
Myw5ICsxNzEwLDggQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVtb3ZlQ2hpbGQodGhpcyk7
CiAgICAgICAgICAgICAgICAgc2VjdGlvbi5hZnRlclVwZGF0ZSgpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgICAgICBkZWxldGUgc2VjdGlvbi5fYWZ0ZXJVcGRhdGU7Ci0gICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhuZXdTdHlsZSkKQEAgLTE2ODMs
MTMgKzE3MjksOSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIGlmICghc3R5bGVUZXh0TGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgLy8gRG8gcmVt
b3ZlIG91cnNlbHZlcyBmcm9tIFVJIHdoZW4gdGhlIHByb3BlcnR5IHJlbW92YWwgaXMgY29uZmly
bWVkLgotICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpOwotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB0aGlzLnN0eWxlID0gbmV3U3R5bGU7
Ci0gICAgICAgICAgICAgICAgdGhpcy5fc3R5bGVSdWxlLnN0eWxlID0gdGhpcy5zdHlsZTsKLSAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuc3R5bGUgPSBuZXdTdHlsZTsKKyAgICAgICAg
ICAgIHRoaXMucHJvcGVydHkgPSBuZXdTdHlsZS5wcm9wZXJ0eUF0KHRoaXMucHJvcGVydHkuaW5k
ZXgpOworICAgICAgICAgICAgdGhpcy5fc3R5bGVSdWxlLnN0eWxlID0gdGhpcy5zdHlsZTsKIAog
ICAgICAgICAgICAgaWYgKHNlY3Rpb24gJiYgc2VjdGlvbi5wYW5lKQogICAgICAgICAgICAgICAg
IHNlY3Rpb24ucGFuZS5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInN0eWxlIGVkaXRlZCIpOwpA
QCAtMTY5OCw2ICsxNzQwLDEwIEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1l
bnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQWxsKHRydWUpOwog
ICAgICAgICB9CiAKKyAgICAgICAgLy8gQXBwZW5kIGEgIjsiIGlmIHRoZSBuZXcgdGV4dCBkb2Vz
IG5vdCBlbmQgaW4gIjsiLgorICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIG5vdCBoYW5kbGUg
dHJhaWxpbmcgY29tbWVudHMuCisgICAgICAgIGlmIChzdHlsZVRleHQubGVuZ3RoICYmICEvO1xz
KiQvLnRlc3Qoc3R5bGVUZXh0KSkKKyAgICAgICAgICAgIHN0eWxlVGV4dCArPSAiOyI7CiAgICAg
ICAgIHRoaXMucHJvcGVydHkuc2V0VGV4dChzdHlsZVRleHQsIGNhbGxiYWNrLmJpbmQodGhpcykp
OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuY3NzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKaW5k
ZXggMzVmZTEyMC4uOTVjMDY3MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5jc3MKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3Bl
Y3Rvci5jc3MKQEAgLTQyMjEsNiArNDIyMSw3IEBAIGEud29ya2VyLWl0ZW0gewogICAgIGN1cnNv
cjogcG9pbnRlcjsKICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiB9CisKIC5zdHlsZXMtc2Vj
dGlvbiB7CiAgICAgcGFkZGluZzogMnB4IDJweCA0cHggNHB4OwogICAgIG1pbi1oZWlnaHQ6IDE4
cHg7CkBAIC00MjM4LDYgKzQyMzksMjggQEAgYS53b3JrZXItaXRlbSB7CiAgICAgYmFja2dyb3Vu
ZC1jb2xvcjogcmdiKDI0MCwgMjQwLCAyNDApOwogfQogCisuc3R5bGVzLXNlY3Rpb24gLnByb3Bl
cnRpZXMgbGkubm90LXBhcnNlZC1vayB7CisgICAgbWFyZ2luLWxlZnQ6IDBweDsKK30KKworLnN0
eWxlcy1zZWN0aW9uIC5wcm9wZXJ0aWVzIGxpLm5vdC1wYXJzZWQtb2s6OmJlZm9yZSB7CisgICAg
Y29udGVudDogdXJsKEltYWdlcy93YXJuaW5nSWNvbi5wbmcpOworICAgIG9wYWNpdHk6IDAuNzU7
CisgICAgZmxvYXQ6IGxlZnQ7CisgICAgd2lkdGg6IDhweDsKKyAgICBoZWlnaHQ6IDhweDsKKyAg
ICBtYXJnaW4tdG9wOiAwOworICAgIHBhZGRpbmctcmlnaHQ6IDVweDsKKyAgICB2ZXJ0aWNhbC1h
bGlnbjogc3ViOworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CisgICAgY3Vyc29yOiBk
ZWZhdWx0OworfQorCisuc3R5bGVzLXNlY3Rpb24gLnByb3BlcnRpZXMgLmluYWN0aXZlIHsKKyAg
ICBvcGFjaXR5OiAwLjc1OworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMTIsIDIxMiwgMjEy
KTsKK30KKwogLnN0eWxlcy1zZWN0aW9uIC5oZWFkZXIgewogICAgIHdoaXRlLXNwYWNlOiBub3dy
YXA7CiAgICAgLXdlYmtpdC1iYWNrZ3JvdW5kLW9yaWdpbjogcGFkZGluZzsK
</data>
<flag name="review"
          id="64426"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>