<?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>144647</bug_id>
          
          <creation_ts>2015-05-05 17:18:24 -0700</creation_ts>
          <short_desc>Scroll-snap points do not handle margins and padding properly</short_desc>
          <delta_ts>2015-05-06 19:54:18 -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>Layout and Rendering</component>
          <version>528+ (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.webkit.org/show_bug.cgi?id=144710</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=144713</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="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1091955</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-05-05 17:18:24 -0700</bug_when>
    <thetext>If we decorate the container holding a scroll-snap region with padding or borders, the calculation of the snap points is not correct. See the attached example for details:

1. The initial color block fills the region and looks correct.
2. After performing a single swipe (which should move 100% to the next color block), we are off by about 2x the border width, resulting in display of the third color at the edge of the display region.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091956</commentid>
    <comment_count>1</comment_count>
      <attachid>252422</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-05-05 17:18:52 -0700</bug_when>
    <thetext>Created attachment 252422
border example</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091960</commentid>
    <comment_count>2</comment_count>
      <attachid>252423</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-05-05 17:36:00 -0700</bug_when>
    <thetext>Created attachment 252423
padding example</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091961</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-05-05 17:36:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/20829473&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092222</commentid>
    <comment_count>4</comment_count>
      <attachid>252492</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-05-06 10:50:52 -0700</bug_when>
    <thetext>Created attachment 252492
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092249</commentid>
    <comment_count>5</comment_count>
      <attachid>252492</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-06 11:37:07 -0700</bug_when>
    <thetext>Comment on attachment 252492
Patch

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

&gt; Source/WebCore/page/scrolling/AxisScrollSnapOffsets.cpp:43
&gt; +    LayoutUnit adjustedSize = viewSize;

&quot;size&quot; sounds like a LayoutSize. Why not just pass a LayoutSize and pick out the right axis?

&gt; Source/WebCore/page/scrolling/AxisScrollSnapOffsets.cpp:50
&gt; +    if (axis == ScrollEventAxis::Horizontal) {
&gt; +        adjustedSize -= valueForLength(style.paddingLeft(), viewSize);
&gt; +        adjustedSize -= valueForLength(style.paddingRight(), viewSize);
&gt; +    } else {
&gt; +        adjustedSize -= valueForLength(style.paddingTop(), viewSize);
&gt; +        adjustedSize -= valueForLength(style.paddingBottom(), viewSize);

Isn&apos;t this just what contentBoxRect() would give you?

&gt; Source/WebCore/page/scrolling/AxisScrollSnapOffsets.cpp:59
&gt;      for (auto&amp; child : childrenOfType&lt;Element&gt;(parent)) {

Wait, why are we iterating through elements here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092258</commentid>
    <comment_count>6</comment_count>
      <attachid>252492</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-05-06 11:51:32 -0700</bug_when>
    <thetext>Comment on attachment 252492
Patch

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

&gt;&gt; Source/WebCore/page/scrolling/AxisScrollSnapOffsets.cpp:50
&gt;&gt; +        adjustedSize -= valueForLength(style.paddingBottom(), viewSize);
&gt; 
&gt; Isn&apos;t this just what contentBoxRect() would give you?

Yes! I finally found that after writing this silly code. :-(

&gt;&gt; Source/WebCore/page/scrolling/AxisScrollSnapOffsets.cpp:59
&gt;&gt;      for (auto&amp; child : childrenOfType&lt;Element&gt;(parent)) {
&gt; 
&gt; Wait, why are we iterating through elements here?

Bad code. I&apos;ll do a drive-by fix here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092363</commentid>
    <comment_count>7</comment_count>
      <attachid>252530</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-05-06 15:34:55 -0700</bug_when>
    <thetext>Created attachment 252530
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092367</commentid>
    <comment_count>8</comment_count>
      <attachid>252531</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-05-06 15:38:40 -0700</bug_when>
    <thetext>Created attachment 252531
Patch v3 (Removed debugging code I accidentally uploaded)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092431</commentid>
    <comment_count>9</comment_count>
      <attachid>252531</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-06 17:53:36 -0700</bug_when>
    <thetext>Comment on attachment 252531
Patch v3 (Removed debugging code I accidentally uploaded)

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

&gt; Source/WebCore/testing/Internals.cpp:2814
&gt; +    RenderBox&amp; box = *element-&gt;renderBox();
&gt; +    const auto&amp; scrollSnapCoordinates = box.style().scrollSnapCoordinates();
&gt; +    if (scrollSnapCoordinates.isEmpty())
&gt; +        return &quot;none&quot;;
&gt; +
&gt; +    LayoutRect viewSize = box.contentBoxRect();
&gt; +    LayoutUnit viewWidth = viewSize.width();
&gt; +    LayoutUnit viewHeight = viewSize.height();
&gt; +    
&gt; +    StringBuilder result;
&gt; +    result.append(&quot;{ &quot;);
&gt; +    for (auto&amp; coordinate : scrollSnapCoordinates) {
&gt; +        if (result.length() &gt; 2)
&gt; +            result.append(&quot;, &quot;);
&gt; +
&gt; +        LayoutUnit x = valueForLength(coordinate.width(), viewWidth);
&gt; +        LayoutUnit y = valueForLength(coordinate.height(), viewHeight);
&gt; +        result.append(&quot;(&quot;);
&gt; +        result.append(String::number(x.toUnsigned()));
&gt; +        result.append(&quot;, &quot;);
&gt; +        result.append(String::number(y.toUnsigned()));
&gt; +        result.append(&quot;)&quot;);
&gt; +    }
&gt; +    result.append(&quot; }&quot;);

Is this code telling us anything that we don&apos;t get from computed style? Use of box.contentBoxRect() here isn&apos;t interesting, because this is test-only code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092452</commentid>
    <comment_count>10</comment_count>
      <attachid>252531</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-05-06 19:14:29 -0700</bug_when>
    <thetext>Comment on attachment 252531
Patch v3 (Removed debugging code I accidentally uploaded)

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

&gt;&gt; Source/WebCore/testing/Internals.cpp:2814
&gt;&gt; +    result.append(&quot; }&quot;);
&gt; 
&gt; Is this code telling us anything that we don&apos;t get from computed style? Use of box.contentBoxRect() here isn&apos;t interesting, because this is test-only code.

OK. I&apos;ll get rid of this for now. If I discover a need for it when delving into the corrdinate/destination stuff more thoroughly I&apos;ll put it back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092459</commentid>
    <comment_count>11</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-05-06 19:54:18 -0700</bug_when>
    <thetext>Committed r183906: &lt;http://trac.webkit.org/changeset/183906&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>252422</attachid>
            <date>2015-05-05 17:18:52 -0700</date>
            <delta_ts>2015-05-05 17:18:52 -0700</delta_ts>
            <desc>border example</desc>
            <filename>scroll-snap-borders.html</filename>
            <type>text/html</type>
            <size>2639</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgogICAgPGhlYWQ+CiAgICAgICAgPHN0eWxlPgogICAgICAg
ICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewogICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owog
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGhpZGRlbjsKICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICAgICAgICAgICAg
ICBib3JkZXI6IDEwcHggc29saWQgYmxhY2s7CiAgICAgICAgICAgICAgICAtd2Via2l0LW92ZXJm
bG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFw
LXBvaW50cy14OiByZXBlYXQoMTAwJSk7CiAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1z
bmFwLXR5cGU6IG1hbmRhdG9yeTsKICAgICAgICAgICAgfQogICAgICAgICAgICAuaG9yaXpvbnRh
bEdhbGxlcnlEcmF3ZXIgewogICAgICAgICAgICAgICAgd2lkdGg6IDE4MDBweDsKICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLnZlcnRpY2Fs
R2FsbGVyeSB7CiAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CiAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OwogICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogYXV0bzsKICAgICAgICAgICAgICAgIGJvcmRlcjogMTBweCBzb2xpZCBibGFjazsKICAgICAg
ICAgICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICAgICAgICAgICAg
ICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtcG9pbnRzLXk6IHJlcGVhdCgxMDAlKTsKICAgICAgICAg
ICAgICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtdHlwZTogbWFuZGF0b3J5OwogICAgICAgICAgICB9
CiAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnlEcmF3ZXIgewogICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxODAwcHg7CiAgICAgICAgICAgIH0K
ICAgICAgICAgICAgLmNvbG9yQm94IHsKICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CiAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CiAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDsK
ICAgICAgICAgICAgfQogICAgICAgICAgICAjaXRlbTAgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7
IH0KICAgICAgICAgICAgI2l0ZW0xIHsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IH0KICAgICAg
ICAgICAgI2l0ZW0yIHsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsgfQogICAgICAgICAgICAjaXRl
bTMgeyBiYWNrZ3JvdW5kLWNvbG9yOiBhcXVhOyB9CiAgICAgICAgICAgICNpdGVtNCB7IGJhY2tn
cm91bmQtY29sb3I6IHllbGxvdzsgfQogICAgICAgICAgICAjaXRlbTUgeyBiYWNrZ3JvdW5kLWNv
bG9yOiBmdWNoc2lhOyB9CiAgICAgICAgPC9zdHlsZT4KICAgIDwvaGVhZD4KICAgIDxib2R5Pgog
ICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiPgog
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnlEcmF3ZXIiPgogICAg
ICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW0wIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2Pgog
ICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW0xIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2
PgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW0yIiBjbGFzcz0iY29sb3JCb3giPjwv
ZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW0zIiBjbGFzcz0iY29sb3JCb3gi
PjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW00IiBjbGFzcz0iY29sb3JC
b3giPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW01IiBjbGFzcz0iY29s
b3JCb3giPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2Pgog
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiPgogICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0idmVydGljYWxHYWxsZXJ5RHJhd2VyIj4KICAgICAgICAgICAgICAgICAgICA8
ZGl2IGlkPSJpdGVtMCIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGlkPSJpdGVtMSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGlkPSJpdGVtMiIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGlkPSJpdGVtMyIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGlkPSJpdGVtNCIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtNSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KICAg
ICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAg
IDwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>252423</attachid>
            <date>2015-05-05 17:36:00 -0700</date>
            <delta_ts>2015-05-05 17:36:00 -0700</delta_ts>
            <desc>padding example</desc>
            <filename>scroll-snap-padding.html</filename>
            <type>text/html</type>
            <size>2701</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgogICAgPGhlYWQ+CiAgICAgICAgPHN0eWxlPgogICAgICAg
ICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewogICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owog
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGhpZGRlbjsKICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICAgICAgICAgICAg
ICBwYWRkaW5nOiAyMHB4OwogICAgICAgICAgICAgICAgYm9yZGVyOiAxMHB4IHNvbGlkIGJsYWNr
OwogICAgICAgICAgICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAg
ICAgICAgICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC1wb2ludHMteDogcmVwZWF0KDEwMCUpOwog
ICAgICAgICAgICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC10eXBlOiBtYW5kYXRvcnk7CiAgICAg
ICAgICAgIH0KICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5RHJhd2VyIHsKICAgICAgICAg
ICAgICAgIHdpZHRoOiAxODAwcHg7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OwogICAg
ICAgICAgICB9CiAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewogICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OwogICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKICAgICAgICAgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhp
ZGRlbjsKICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgICAgICAgICBw
YWRkaW5nOiAyMHB4OwogICAgICAgICAgICAgICAgYm9yZGVyOiAxMHB4IHNvbGlkIGJsYWNrOwog
ICAgICAgICAgICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAgICAg
ICAgICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC1wb2ludHMteTogcmVwZWF0KDEwMCUpOwogICAg
ICAgICAgICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC10eXBlOiBtYW5kYXRvcnk7CiAgICAgICAg
ICAgIH0KICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeURyYXdlciB7CiAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDE4MDBweDsKICAgICAgICAg
ICAgfQogICAgICAgICAgICAuY29sb3JCb3ggewogICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKICAgICAgICAgICAgICAgIGZsb2F0OiBs
ZWZ0OwogICAgICAgICAgICB9CiAgICAgICAgICAgICNpdGVtMCB7IGJhY2tncm91bmQtY29sb3I6
IHJlZDsgfQogICAgICAgICAgICAjaXRlbTEgeyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgfQog
ICAgICAgICAgICAjaXRlbTIgeyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyB9CiAgICAgICAgICAg
ICNpdGVtMyB7IGJhY2tncm91bmQtY29sb3I6IGFxdWE7IH0KICAgICAgICAgICAgI2l0ZW00IHsg
YmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyB9CiAgICAgICAgICAgICNpdGVtNSB7IGJhY2tncm91
bmQtY29sb3I6IGZ1Y2hzaWE7IH0KICAgICAgICA8L3N0eWxlPgogICAgPC9oZWFkPgogICAgPGJv
ZHk+CiAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyBoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJob3Jpem9udGFsR2FsbGVy
eSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeURyYXdlciI+
CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbTAiIGNsYXNzPSJjb2xvckJveCI+PC9k
aXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbTEiIGNsYXNzPSJjb2xvckJveCI+
PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbTIiIGNsYXNzPSJjb2xvckJv
eCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbTMiIGNsYXNzPSJjb2xv
ckJveCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbTQiIGNsYXNzPSJj
b2xvckJveCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbTUiIGNsYXNz
PSJjb2xvckJveCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9k
aXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSI+CiAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnlEcmF3ZXIiPgogICAgICAgICAgICAgICAg
ICAgIDxkaXYgaWQ9Iml0ZW0wIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgogICAgICAgICAgICAg
ICAgICAgIDxkaXYgaWQ9Iml0ZW0xIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgogICAgICAgICAg
ICAgICAgICAgIDxkaXYgaWQ9Iml0ZW0yIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgogICAgICAg
ICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW0zIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgogICAg
ICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW00IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2Pgog
ICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW01IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2
PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2
PgogICAgPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252492</attachid>
            <date>2015-05-06 10:50:52 -0700</date>
            <delta_ts>2015-05-06 15:34:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144647-20150506104935.patch</filename>
            <type>text/plain</type>
            <size>49061</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4Mzg3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE1LTA1LTA2ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFNjcm9sbC1zbmFwIHBvaW50
cyBkbyBub3QgaGFuZGxlIG1hcmdpbnMgYW5kIHBhZGRpbmcgcHJvcGVydGx5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2NDcKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzIwODI5NDczPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZSBjYWxjdWxhdGlvbiBvZiBzY3JvbGwgc25hcCBwb2ludHMgd2Fz
IGluY29ycmVjdCBiZWNhdXNlIGl0IGRpZCBub3QgYWNjb3VudCBmb3IgbWFyZ2lucyBvciBwYWRk
aW5nLgorICAgICAgICBUaGlzIHdhcyBmaXhlZCBieSB1c2luZyB0aGUgInBhZGRpbmdCb3hSZWN0
IiB0byByZXByZXNlbnQgdGhlIG92ZXJhbGwgc2l6ZSBvZiB0aGUgdmlldyBhcmVhLCBhbmQKKyAg
ICAgICAgc3VidHJhY3RpbmcgdGhlIHJlbGV2YW50IHBhZGRpbmcgd2hlbiBjb21wdXRpbmcgdGhl
IHNpemUgb2YgdGhlIHNjcm9sbCBzbmFwIG9mZnNldHMuCisKKyAgICAgICAgTmV3IHRlc3RzOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LWJvcmRlcnMuaHRtbDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1tYW5kYXRvcnktcGFkZGluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLW1hbmRhdG9yeS1yb3RhdGVkLmh0bWw6IEFkZGVkLgorCisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkanVz
dGVkVmlld1NpemUpOiBOZXcgaGVscGVyIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdmlldyBzaXplIHdp
dGhvdXQgcGFkZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZENoaWxkU25hcE9mZnNldHMp
OiBVc2UgJ3BhZGRpbmdCb3hSZWN0JyBmb3Igb3ZlcmFsbCBzaXplLCBhbmQgc3VidHJhY3QgcmVs
ZXZhbnQgcGFkZGluZyB0bworICAgICAgICBjYWxjdWxhdGUgdGhlIHNuYXAgb2Zmc2V0IHJlZ2lv
bnMuCisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVh
KTogRGl0dG8uCisKIDIwMTUtMDUtMDYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxODM0NjcpOiBVbmFibGUgdG8gc3RhcnQgZG93bmxv
YWRzIGluIHByaXZhdGUgYnJvd3NpbmcgbW9kZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwCShyZXZpc2lv
biAxODM4NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25h
cE9mZnNldHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMyArMzgsMjkgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdm9pZCBhcHBlbmRDaGlsZFNuYXBPZmZzZXRzKEhUTUxF
bGVtZW50JiBwYXJlbnQsIGJvb2wgc2hvdWxkQWRkSG9yaXpvbnRhbENoaWxkT2Zmc2V0cywgVmVj
dG9yPExheW91dFVuaXQ+JiBob3Jpem9udGFsU25hcE9mZnNldFN1YnNlcXVlbmNlLCBib29sIHNo
b3VsZEFkZFZlcnRpY2FsQ2hpbGRPZmZzZXRzLCBWZWN0b3I8TGF5b3V0VW5pdD4mIHZlcnRpY2Fs
U25hcE9mZnNldFN1YnNlcXVlbmNlKQorc3RhdGljIExheW91dFVuaXQgYWRqdXN0ZWRWaWV3U2l6
ZShTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBM
YXlvdXRVbml0JiB2aWV3U2l6ZSkKK3sKKyAgICBMYXlvdXRVbml0IGFkanVzdGVkU2l6ZSA9IHZp
ZXdTaXplOworICAgIAorICAgIGlmIChheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRh
bCkgeworICAgICAgICBhZGp1c3RlZFNpemUgLT0gdmFsdWVGb3JMZW5ndGgoc3R5bGUucGFkZGlu
Z0xlZnQoKSwgdmlld1NpemUpOworICAgICAgICBhZGp1c3RlZFNpemUgLT0gdmFsdWVGb3JMZW5n
dGgoc3R5bGUucGFkZGluZ1JpZ2h0KCksIHZpZXdTaXplKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBhZGp1c3RlZFNpemUgLT0gdmFsdWVGb3JMZW5ndGgoc3R5bGUucGFkZGluZ1RvcCgpLCB2aWV3
U2l6ZSk7CisgICAgICAgIGFkanVzdGVkU2l6ZSAtPSB2YWx1ZUZvckxlbmd0aChzdHlsZS5wYWRk
aW5nQm90dG9tKCksIHZpZXdTaXplKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGFkanVzdGVk
U2l6ZTsKK30KKworc3RhdGljIHZvaWQgYXBwZW5kQ2hpbGRTbmFwT2Zmc2V0cyhIVE1MRWxlbWVu
dCYgcGFyZW50LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGJvb2wgc2hvdWxkQWRkSG9yaXpv
bnRhbENoaWxkT2Zmc2V0cywgVmVjdG9yPExheW91dFVuaXQ+JiBob3Jpem9udGFsU25hcE9mZnNl
dFN1YnNlcXVlbmNlLCBib29sIHNob3VsZEFkZFZlcnRpY2FsQ2hpbGRPZmZzZXRzLCBWZWN0b3I8
TGF5b3V0VW5pdD4mIHZlcnRpY2FsU25hcE9mZnNldFN1YnNlcXVlbmNlKQogewogICAgIC8vIEZJ
WE1FOiBJbnN0ZWFkIG9mIHRyYXZlcnNpbmcgYWxsIGNoaWxkcmVuLCByZWdpc3RlciBjaGlsZHJl
biB3aXRoIHNuYXAgY29vcmRpbmF0ZXMgYmVmb3JlIGFwcGVuZGluZyB0byBzbmFwT2Zmc2V0U3Vi
c2VxdWVuY2UuCiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+
KHBhcmVudCkpIHsKICAgICAgICAgaWYgKFJlbmRlckJveCogYm94ID0gY2hpbGQucmVuZGVyQm94
KCkpIHsKLSAgICAgICAgICAgIExheW91dFVuaXQgdmlld1dpZHRoID0gYm94LT53aWR0aCgpOwot
ICAgICAgICAgICAgTGF5b3V0VW5pdCB2aWV3SGVpZ2h0ID0gYm94LT5oZWlnaHQoKTsKKyAgICAg
ICAgICAgIExheW91dFJlY3Qgdmlld1JlY3QgPSBib3gtPnBhZGRpbmdCb3hSZWN0KCk7CisgICAg
ICAgICAgICBMYXlvdXRVbml0IHZpZXdXaWR0aCA9IGFkanVzdGVkVmlld1NpemUoU2Nyb2xsRXZl
bnRBeGlzOjpIb3Jpem9udGFsLCBzdHlsZSwgdmlld1JlY3Qud2lkdGgoKSk7CisgICAgICAgICAg
ICBMYXlvdXRVbml0IHZpZXdIZWlnaHQgPSBhZGp1c3RlZFZpZXdTaXplKFNjcm9sbEV2ZW50QXhp
czo6VmVydGljYWwsIHN0eWxlLCB2aWV3UmVjdC5oZWlnaHQoKSk7CiAgICAgICAgICAgICBGbG9h
dFBvaW50IHBvc2l0aW9uID0gYm94LT5sb2NhbFRvQ29udGFpbmVyUG9pbnQoRmxvYXRQb2ludCgp
LCBwYXJlbnQucmVuZGVyQm94KCkpOwogICAgICAgICAgICAgTGF5b3V0VW5pdCBsZWZ0ID0gcG9z
aXRpb24ueCgpOwogICAgICAgICAgICAgTGF5b3V0VW5pdCB0b3AgPSBwb3NpdGlvbi55KCk7CkBA
IC0xMjYsOCArMTQyLDkgQEAgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVh
KAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTGF5b3V0VW5pdCB2aWV3V2lkdGggPSBz
Y3JvbGxpbmdFbGVtZW50Qm94LndpZHRoKCk7Ci0gICAgTGF5b3V0VW5pdCB2aWV3SGVpZ2h0ID0g
c2Nyb2xsaW5nRWxlbWVudEJveC5oZWlnaHQoKTsKKyAgICBMYXlvdXRSZWN0IHZpZXdSZWN0ID0g
c2Nyb2xsaW5nRWxlbWVudEJveC5wYWRkaW5nQm94UmVjdCgpOworICAgIExheW91dFVuaXQgdmll
d1dpZHRoID0gYWRqdXN0ZWRWaWV3U2l6ZShTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHNj
cm9sbGluZ0VsZW1lbnRTdHlsZSwgdmlld1JlY3Qud2lkdGgoKSk7CisgICAgTGF5b3V0VW5pdCB2
aWV3SGVpZ2h0ID0gYWRqdXN0ZWRWaWV3U2l6ZShTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBz
Y3JvbGxpbmdFbGVtZW50U3R5bGUsIHZpZXdSZWN0LmhlaWdodCgpKTsKICAgICBMYXlvdXRVbml0
IHNjcm9sbFdpZHRoID0gc2Nyb2xsaW5nRWxlbWVudEJveC5zY3JvbGxXaWR0aCgpOwogICAgIExh
eW91dFVuaXQgc2Nyb2xsSGVpZ2h0ID0gc2Nyb2xsaW5nRWxlbWVudEJveC5zY3JvbGxIZWlnaHQo
KTsKICAgICBib29sIGNhbkNvbXB1dGVIb3Jpem9udGFsT2Zmc2V0cyA9IHNjcm9sbFdpZHRoID4g
MCAmJiB2aWV3V2lkdGggPiAwICYmIHZpZXdXaWR0aCA8IHNjcm9sbFdpZHRoOwpAQCAtMTQ1LDEy
ICsxNjIsMTIgQEAgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVhKAogICAg
IFZlY3RvcjxMYXlvdXRVbml0PiB2ZXJ0aWNhbFNuYXBPZmZzZXRTdWJzZXF1ZW5jZTsKIAogICAg
IGJvb2wgc2Nyb2xsU25hcFBvaW50c1hVc2VzRWxlbWVudHMgPSBzdHlsZVVzZXNFbGVtZW50cyhT
Y3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHNjcm9sbGluZ0VsZW1lbnRTdHlsZSk7Ci0gICAg
Ym9vbCBzY3JvbGxTbmFwUG9pbnRzWVVzZXNFbGVtZW50cyA9IHN0eWxlVXNlc0VsZW1lbnRzKFNj
cm9sbEV2ZW50QXhpczo6VmVydGljYWwgLCBzY3JvbGxpbmdFbGVtZW50U3R5bGUpOworICAgIGJv
b2wgc2Nyb2xsU25hcFBvaW50c1lVc2VzRWxlbWVudHMgPSBzdHlsZVVzZXNFbGVtZW50cyhTY3Jv
bGxFdmVudEF4aXM6OlZlcnRpY2FsLCBzY3JvbGxpbmdFbGVtZW50U3R5bGUpOwogCiAgICAgaWYg
KHNjcm9sbFNuYXBQb2ludHNYVXNlc0VsZW1lbnRzIHx8IHNjcm9sbFNuYXBQb2ludHNZVXNlc0Vs
ZW1lbnRzKSB7CiAgICAgICAgIGJvb2wgc2hvdWxkQWRkSG9yaXpvbnRhbENoaWxkT2Zmc2V0cyA9
IHNjcm9sbFNuYXBQb2ludHNYVXNlc0VsZW1lbnRzICYmIGNhbkNvbXB1dGVIb3Jpem9udGFsT2Zm
c2V0czsKICAgICAgICAgYm9vbCBzaG91bGRBZGRWZXJ0aWNhbENoaWxkT2Zmc2V0cyA9IHNjcm9s
bFNuYXBQb2ludHNZVXNlc0VsZW1lbnRzICYmIGNhbkNvbXB1dGVWZXJ0aWNhbE9mZnNldHM7Ci0g
ICAgICAgIGFwcGVuZENoaWxkU25hcE9mZnNldHMoc2Nyb2xsaW5nRWxlbWVudCwgc2hvdWxkQWRk
SG9yaXpvbnRhbENoaWxkT2Zmc2V0cywgaG9yaXpvbnRhbFNuYXBPZmZzZXRTdWJzZXF1ZW5jZSwg
c2hvdWxkQWRkVmVydGljYWxDaGlsZE9mZnNldHMsIHZlcnRpY2FsU25hcE9mZnNldFN1YnNlcXVl
bmNlKTsKKyAgICAgICAgYXBwZW5kQ2hpbGRTbmFwT2Zmc2V0cyhzY3JvbGxpbmdFbGVtZW50LCBz
Y3JvbGxpbmdFbGVtZW50U3R5bGUsIHNob3VsZEFkZEhvcml6b250YWxDaGlsZE9mZnNldHMsIGhv
cml6b250YWxTbmFwT2Zmc2V0U3Vic2VxdWVuY2UsIHNob3VsZEFkZFZlcnRpY2FsQ2hpbGRPZmZz
ZXRzLCB2ZXJ0aWNhbFNuYXBPZmZzZXRTdWJzZXF1ZW5jZSk7CiAgICAgfQogCiAgICAgaWYgKHNj
cm9sbGluZ0VsZW1lbnRTdHlsZS5zY3JvbGxTbmFwUG9pbnRzWCgpICYmICFzY3JvbGxTbmFwUG9p
bnRzWFVzZXNFbGVtZW50cyAmJiBjYW5Db21wdXRlSG9yaXpvbnRhbE9mZnNldHMpIHsKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE4Mzg3NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE1LTA1LTA2ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgorCisgICAgICAgIFNjcm9sbC1zbmFwIHBvaW50cyBkbyBub3QgaGFuZGxl
IG1hcmdpbnMgYW5kIHBhZGRpbmcgcHJvcGVydGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2NDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIw
ODI5NDczPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBuZXcgc2Nyb2xsLXNuYXAgdGVzdHMgdGhhdCBjb3ZlciBlbGVtZW50cyB3aXRoIGJvcmRl
cnMsIHBhZGRpbmcsIGFuZCByb3RhdGlvbi4gQWxzbyBjb3JyZWN0IHRoZQorICAgICAgICBjYXVz
ZSBvZiB0aGUgJ3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1vdmVyZmxvdy5odG1sJyB0ZXN0IGZsYWtp
bmVzcyBieSBtYWtpbmcgc3VyZSB0aGUgbW91c2UgaXMgYWx3YXlzCisgICAgICAgIGluc2lkZSB0
aGUgZWxlbWVudCB3aGVuIHN0YXJ0aW5nIG5ldyB3aGVlbCBnZXN0dXJlcy4KKworICAgICAgICAq
IHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczogUmVtb3ZlIGZsYWtpbmVzcyBhbm5v
dGF0aW9uIGZvciBzY3JvbGwtc25hcC1tYW5kYXRvcnktb3ZlcmZsb3cuCisgICAgICAgICogcGxh
dGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1ib3JkZXJzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktYm9yZGVycy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1vdmVyZmxvdy5odG1sOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXBhZGRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1wYWRkaW5nLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXJvdGF0ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1yb3RhdGVkLmh0bWw6IEFkZGVkLgorCiAyMDE1LTA1LTA2
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBl
eHBlY3RhdGlvbnMgZm9yIGZhc3QvZm9ybXMvYnV0dG9uLWxpbmUtaGVpZ2h0Lmh0bWwKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlz
aW9uIDE4Mzg0MykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0
aW9ucwkod29ya2luZyBjb3B5KQpAQCAtNTIzLDEwICs1MjMsMyBAQCB3ZWJraXQub3JnL2IvMTQx
MDg1IFsgWW9zZW1pdGUgXSBodHRwL3RlCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCiAKIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMgWyBQYXNzIF0KLQotIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyMjIFNUQVJUIE9GICgxKSBO
ZXcgc2Nyb2xsLXNuYXAgZmxha2UKLXBsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW92ZXJmbG93Lmh0bWwgWyBU
aW1lb3V0IFBhc3MgXQotCi0jIyMgRU5EIE9GICgxKSBzY3JvbGwtc25hcCBmbGFrZQotIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS5odG1sCShyZXZpc2lvbiAxODM4NDMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC04Miw4ICs4MiwxMCBAQAogICAgICAgICAgICAgICAgIGR5
ID0gLTE7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSBpZnJh
bWVUYXJnZXQub2Zmc2V0TGVmdCArIDIwOwotICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IGlm
cmFtZVRhcmdldC5vZmZzZXRUb3AgKyAyMDsKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdl
IGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQogICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25v
bmUnLCBmYWxzZSk7CiAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJywgZmFsc2UpOwpA
QCAtMTMxLDggKzEzMyw4IEBACiAKICAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwogCi0gICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aCAtIDEwOwotICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyA1
MDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OwogICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwogICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnLCBmYWxzZSk7CiAgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJywgZmFsc2UpOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRv
cnktYm9yZGVycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1tYW5kYXRvcnktYm9yZGVycy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1ib3JkZXJzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE2IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIG92ZXJmbG93IHJlZ2lvbnMuCisgUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LWJvcmRlcnMuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1ib3JkZXJzLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1ib3JkZXJzLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMzkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgYm9yZGVyLXRvcDog
MjBweCBzb2xpZCBibGFjazsKKyAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxMHB4IHNv
bGlkIGJsYWNrOworICAgICAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxNXB4IHNvbGlkIGJsYWNr
OworICAgICAgICAgICAgICAgIGJvcmRlci1yaWdodDogOXB4IHNvbGlkIGJsYWNrOworICAgICAg
ICAgICAgICAgIG1hcmdpbi1ib3R0b206IDJweDsKKyAgICAgICAgICAgICAgICAtd2Via2l0LW92
ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1zY3JvbGwt
c25hcC1wb2ludHMteDogcmVwZWF0KDEwMCUpOworICAgICAgICAgICAgICAgIC13ZWJraXQtc2Ny
b2xsLXNuYXAtdHlwZTogbWFuZGF0b3J5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLmhv
cml6b250YWxHYWxsZXJ5RHJhd2VyIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMTgwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogMjBw
eCBzb2xpZCBibGFjazsKKyAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxMHB4IHNvbGlk
IGJsYWNrOworICAgICAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxNXB4IHNvbGlkIGJsYWNrOwor
ICAgICAgICAgICAgICAgIGJvcmRlci1yaWdodDogOXB4IHNvbGlkIGJsYWNrOworICAgICAgICAg
ICAgICAgIG1hcmdpbi10b3A6IDJweDsKKyAgICAgICAgICAgICAgICAtd2Via2l0LW92ZXJmbG93
LXNjcm9sbGluZzogdG91Y2g7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC1w
b2ludHMteTogcmVwZWF0KDEwMCUpOworICAgICAgICAgICAgICAgIC13ZWJraXQtc2Nyb2xsLXNu
YXAtdHlwZTogbWFuZGF0b3J5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2Fs
R2FsbGVyeURyYXdlciB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMTgwMHB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLmNvbG9y
Qm94IHsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICNpdGVtSDAsICNpdGVtVjAgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0K
KyAgICAgICAgICAgICNpdGVtSDEsICNpdGVtVjEgeyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsg
fQorICAgICAgICAgICAgI2l0ZW1IMiwgI2l0ZW1WMiB7IGJhY2tncm91bmQtY29sb3I6IGJsdWU7
IH0KKyAgICAgICAgICAgICNpdGVtSDMsICNpdGVtVjMgeyBiYWNrZ3JvdW5kLWNvbG9yOiBhcXVh
OyB9CisgICAgICAgICAgICAjaXRlbUg0LCAjaXRlbVY0IHsgYmFja2dyb3VuZC1jb2xvcjogeWVs
bG93OyB9CisgICAgICAgICAgICAjaXRlbUg1LCAjaXRlbVY1IHsgYmFja2dyb3VuZC1jb2xvcjog
ZnVjaHNpYTsgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAg
IHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKwor
ICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFy
ZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsgICAgICAgICAgICAKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGRpdlRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gZGl2VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBkaXZUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0
byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbEdsaWRl
VGVzdCgndmVydGljYWxUYXJnZXQnKSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAg
ICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgZGl2VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gZGl2VGFyZ2V0LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gZGl2VGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZGl2VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBkaXZUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGRpdlRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnLCBmYWxz
ZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnLCBmYWxzZSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBkaXZUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGRpdlRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGRpdlRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBkaXZUYXJnZXQuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gZGl2VGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGRpdlRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBkaXZUYXJnZXQu
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gZGl2VGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoZGl2VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyBkaXZUYXJnZXQuY2xpZW50V2lkdGggLSAxMDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgNTA7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnLCBm
YWxzZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJywgZmFsc2UpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJywgZmFsc2Up
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnLCBmYWxzZSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdjb250aW51ZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2NvbnRpbnVlJywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnLCBm
YWxzZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJywgZmFsc2UpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JyksIDApOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZUxvY2F0aW9uSCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdpdGVtSDAnKTsKKyAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICAgICAgICAgIG1lc3NhZ2Uu
aW5uZXJIVE1MID0gIjxwPlRoaXMgdGVzdCBpcyBiZXR0ZXIgcnVuIHVuZGVyIER1bXBSZW5kZXJU
cmVlLjxici8+VG8gbWFudWFsbHkgdGVzdCBpdCwgcGxhY2UgdGhlIG1vdXNlIHBvaW50ZXI8YnIv
PiIKKyAgICAgICAgICAgICAgICAgICAgKyAiaW5zaWRlIHRoZSByZWQgcmVnaW9uIGF0IHRoZSB0
b3Agb2YgdGhlIHBhZ2UsPGJyLz5hbmQgdGhlbiB1c2UgdGhlIG1vdXNlIHdoZWVsIG9yIGEgdHdv
LWZpbmdlcjxici8+c3dpcGUgdG8gbWFrZSBhIgorICAgICAgICAgICAgICAgICAgICArICJzbWFs
bCBzd2lwZSBnZXN0dXJlIHdpdGg8YnIvPnNvbWUgbW9tZW50dW0uPGJyLz48YnIvPiIKKyAgICAg
ICAgICAgICAgICAgICAgKyAiVGhlIHJlZ2lvbiBzaG91bGQgc2Nyb2xsIHRvIHNob3cgYSBncmVl
biByZWdpb24uPGJyLz48YnIvPiIKKyAgICAgICAgICAgICAgICAgICAgKyAiTmV4dCwgcGVyZm9y
bSBhIHNtYWxsIHNjcm9sbCBnZXN0dXJlIHRoYXQgZG9lczxici8+bm90IGludm9sdmUgbW9tZW50
dW0uIFlvdSBzaG91bGQgYmVnaW4gdG88YnIvPnNlZSBvbmUgb2YgdGhlIGNvbG9ycyAiCisgICAg
ICAgICAgICAgICAgICAgICsgInRvIHRoZSBzaWRlIG9mIHRoZSBjdXJyZW50PGJyLz5ncmVlbiBi
b3guIFdoZW4geW91IHJlbGVhc2UgdGhlIHdoZWVsLCB0aGU8YnIvPnJlZ2lvbiBzaG91bGQgc2Ny
b2xsIGJhY2sgdG8gYSBzaW5nbGUgY29sb3IuIjsKKyAgICAgICAgICAgICAgICBtZXNzYWdlTG9j
YXRpb25ILmFwcGVuZENoaWxkKG1lc3NhZ2UpOworCisgICAgICAgICAgICAgICAgdmFyIG1lc3Nh
Z2VMb2NhdGlvblYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXRlbVYwJyk7CisgICAgICAg
ICAgICAgICAgdmFyIG1lc3NhZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAg
ICAgICAgICAgICAgICBtZXNzYWdlLmlubmVySFRNTCA9ICI8cD5Zb3Ugc2hvdWxkIGFsc28gYmUg
YWJsZSB0byByZXBlYXQgdGhlc2UgdGVzdHMgc3RlcHMgZm9yIHRoaXMgdmVydGljYWwgcmVnaW9u
Ljxici8+IgorICAgICAgICAgICAgICAgIG1lc3NhZ2VMb2NhdGlvblYuYXBwZW5kQ2hpbGQobWVz
c2FnZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHls
ZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHgiPgorICAgICAgICAgICAgPGRpdj5U
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIG92ZXJm
bG93IHJlZ2lvbnMuPC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgaWQ9Imhvcml6b250YWxUYXJnZXQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
Imhvcml6b250YWxHYWxsZXJ5RHJhd2VyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0i
aXRlbUgwIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2
IGlkPSJpdGVtSDEiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAg
IDxkaXYgaWQ9Iml0ZW1IMiIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAg
ICAgICAgPGRpdiBpZD0iaXRlbUgzIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGlkPSJpdGVtSDQiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAg
ICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1INSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4K
KyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAg
PGRpdiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBpZD0idmVydGljYWxUYXJnZXQiPgorICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnRpY2FsR2FsbGVyeURyYXdlciI+CisgICAgICAgICAg
ICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WMCIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAg
ICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVYxIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2Pgor
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjIiIGNsYXNzPSJjb2xvckJveCI+PC9k
aXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WMyIgY2xhc3M9ImNvbG9yQm94
Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVY0IiBjbGFzcz0iY29s
b3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjUiIGNsYXNz
PSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8
L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rp
dj4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1vdmVyZmxv
dy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW92ZXJm
bG93Lmh0bWwJKHJldmlzaW9uIDE4Mzg0MykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0
b3J5LW92ZXJmbG93Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw4ICsxMDUsMTAgQEAKICAg
ICAgICAgICAgICAgICBkeSA9IC0xOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gZGl2VGFyZ2V0Lm9mZnNldExlZnQgKyAyMDsKLSAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSBkaXZUYXJnZXQub2Zmc2V0VG9wICsgMjA7CisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZGl2VGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBkaXZU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGRpdlRhcmdldC5jbGllbnRIZWlnaHQ7CiAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJywgZmFsc2UpOwogICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScsIGZhbHNlKTsK
QEAgLTE1Miw4ICsxNTQsOCBAQAogCiAgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZGl2VGFyZ2V0KTsKIAotICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyBkaXZUYXJnZXQuY2xpZW50V2lkdGggLSAx
MDsKLSAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgNTA7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGRpdlRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogZGl2VGFyZ2V0LmNsaWVudEhlaWdodDsKICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdiZWdhbicsICdub25lJywgZmFsc2UpOwogICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScsIGZhbHNlKTsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXBhZGRpbmct
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5
LXBhZGRpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1tYW5kYXRvcnktcGFkZGluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxNiBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBvdmVyZmxvdyByZWdpb25zLgorIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1wYWRkaW5nLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktcGFkZGluZy5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktcGFkZGluZy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMjM5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFk
PgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMjBweDsKKyAg
ICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4OworICAgICAgICAgICAgICAgIHBhZGRp
bmctdG9wOiAxNXB4OworICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiA5cHg7CisgICAg
ICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB4OworICAgICAgICAgICAgICAgIC13ZWJraXQt
c2Nyb2xsLXNuYXAtcG9pbnRzLXg6IHJlcGVhdCgxMDAlKTsKKyAgICAgICAgICAgICAgICAtd2Vi
a2l0LXNjcm9sbC1zbmFwLXR5cGU6IG1hbmRhdG9yeTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC5ob3Jpem9udGFsR2FsbGVyeURyYXdlciB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDE4
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxh
eTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIHBhZGRpbmct
bGVmdDogMjBweDsKKyAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4OworICAgICAg
ICAgICAgICAgIHBhZGRpbmctdG9wOiAxNXB4OworICAgICAgICAgICAgICAgIHBhZGRpbmctYm90
dG9tOiA5cHg7CisgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMnB4OworICAgICAgICAgICAg
ICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtcG9pbnRzLXk6IHJlcGVhdCgxMDAlKTsKKyAgICAgICAg
ICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFwLXR5cGU6IG1hbmRhdG9yeTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnlEcmF3ZXIgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDE4MDBweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC5jb2xvckJveCB7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgZmxv
YXQ6IGxlZnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAjaXRlbUgwLCAjaXRlbVYwIHsg
YmFja2dyb3VuZC1jb2xvcjogcmVkOyB9CisgICAgICAgICAgICAjaXRlbUgxLCAjaXRlbVYxIHsg
YmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IH0KKyAgICAgICAgICAgICNpdGVtSDIsICNpdGVtVjIg
eyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyB9CisgICAgICAgICAgICAjaXRlbUgzLCAjaXRlbVYz
IHsgYmFja2dyb3VuZC1jb2xvcjogYXF1YTsgfQorICAgICAgICAgICAgI2l0ZW1INCwgI2l0ZW1W
NCB7IGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsgfQorICAgICAgICAgICAgI2l0ZW1INSwgI2l0
ZW1WNSB7IGJhY2tncm91bmQtY29sb3I6IGZ1Y2hzaWE7IH0KKyAgICAgICAgPC9zdHlsZT4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
OworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55
ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNl
dFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55
ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAg
ICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9k
eSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVs
ZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZmluaXNo
VGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7ICAgICAgICAgICAgCisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBkaXZUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGRpdlRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gZGl2VGFyZ2V0LnNjcm9sbExl
ZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRv
IHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JyksIDApOworICAg
ICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGRpdlRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGRpdlRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGRpdlRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGRpdlRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogZGl2VGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBkaXZUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0
c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScsIGZhbHNlKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnLCBmYWxzZSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
JywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgZGl2VGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgc3R5
bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkaXZUYXJnZXQsIG51bGwpOworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBkaXZUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBkaXZUYXJnZXQuY2xpZW50SGVpZ2h0IC0gc3R5bGUu
Z2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy10b3AnKS5yZXBsYWNlKCJweCIsICIiKSAtIHN0eWxl
LmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctYm90dG9tJykucmVwbGFjZSgicHgiLCAiIik7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBkaXZUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gZGl2VGFyZ2V0LmNsaWVudFdpZHRoIC0gc3R5
bGUuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy1yaWdodCcpLnJlcGxhY2UoInB4IiwgIiIpIC0g
c3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy1sZWZ0JykucmVwbGFjZSgicHgiLCAiIik7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Ny
b2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50
cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQ
b3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpLCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgZGl2VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGRpdlRhcmdldC5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBkaXZUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhkaXZU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IGRpdlRhcmdldC5jbGllbnRXaWR0aCAtIDEwOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyA1MDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
JywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScsIGZhbHNlKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnLCBmYWxzZSk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJywg
ZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nLCBmYWxzZSk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUn
LCBmYWxzZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScsIGZhbHNlKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChzY3JvbGxH
bGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSwgMCk7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlTG9jYXRpb25IID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2l0ZW1IMCcpOworICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgICAgICAgICAgbWVzc2FnZS5pbm5lckhUTUwg
PSAiPHA+VGhpcyB0ZXN0IGlzIGJldHRlciBydW4gdW5kZXIgRHVtcFJlbmRlclRyZWUuPGJyLz5U
byBtYW51YWxseSB0ZXN0IGl0LCBwbGFjZSB0aGUgbW91c2UgcG9pbnRlcjxici8+IgorICAgICAg
ICAgICAgICAgICAgICArICJpbnNpZGUgdGhlIHJlZCByZWdpb24gYXQgdGhlIHRvcCBvZiB0aGUg
cGFnZSw8YnIvPmFuZCB0aGVuIHVzZSB0aGUgbW91c2Ugd2hlZWwgb3IgYSB0d28tZmluZ2VyPGJy
Lz5zd2lwZSB0byBtYWtlIGEiCisgICAgICAgICAgICAgICAgICAgICsgInNtYWxsIHN3aXBlIGdl
c3R1cmUgd2l0aDxici8+c29tZSBtb21lbnR1bS48YnIvPjxici8+IgorICAgICAgICAgICAgICAg
ICAgICArICJUaGUgcmVnaW9uIHNob3VsZCBzY3JvbGwgdG8gc2hvdyBhIGdyZWVuIHJlZ2lvbi48
YnIvPjxici8+IgorICAgICAgICAgICAgICAgICAgICArICJOZXh0LCBwZXJmb3JtIGEgc21hbGwg
c2Nyb2xsIGdlc3R1cmUgdGhhdCBkb2VzPGJyLz5ub3QgaW52b2x2ZSBtb21lbnR1bS4gWW91IHNo
b3VsZCBiZWdpbiB0bzxici8+c2VlIG9uZSBvZiB0aGUgY29sb3JzICIKKyAgICAgICAgICAgICAg
ICAgICAgKyAidG8gdGhlIHNpZGUgb2YgdGhlIGN1cnJlbnQ8YnIvPmdyZWVuIGJveC4gV2hlbiB5
b3UgcmVsZWFzZSB0aGUgd2hlZWwsIHRoZTxici8+cmVnaW9uIHNob3VsZCBzY3JvbGwgYmFjayB0
byBhIHNpbmdsZSBjb2xvci4iOworICAgICAgICAgICAgICAgIG1lc3NhZ2VMb2NhdGlvbkguYXBw
ZW5kQ2hpbGQobWVzc2FnZSk7CisKKyAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZUxvY2F0aW9u
ViA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpdGVtVjAnKTsKKyAgICAgICAgICAgICAgICB2
YXIgbWVzc2FnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICAgICAg
ICAgIG1lc3NhZ2UuaW5uZXJIVE1MID0gIjxwPllvdSBzaG91bGQgYWxzbyBiZSBhYmxlIHRvIHJl
cGVhdCB0aGVzZSB0ZXN0cyBzdGVwcyBmb3IgdGhpcyB2ZXJ0aWNhbCByZWdpb24uPGJyLz4iCisg
ICAgICAgICAgICAgICAgbWVzc2FnZUxvY2F0aW9uVi5hcHBlbmRDaGlsZChtZXNzYWdlKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweCI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gb3ZlcmZsb3cgcmVnaW9u
cy48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBpZD0i
aG9yaXpvbnRhbFRhcmdldCI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRh
bEdhbGxlcnlEcmF3ZXIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtSDAiIGNs
YXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1I
MSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0i
aXRlbUgyIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2
IGlkPSJpdGVtSDMiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAg
IDxkaXYgaWQ9Iml0ZW1INCIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAg
ICAgICAgPGRpdiBpZD0iaXRlbUg1IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAg
ICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIGlkPSJ2ZXJ0aWNhbFRhcmdldCI+CisgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0idmVydGljYWxHYWxsZXJ5RHJhd2VyIj4KKyAgICAgICAgICAgICAgICAgICAg
PGRpdiBpZD0iaXRlbVYwIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGlkPSJpdGVtVjEiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAg
ICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WMiIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAg
ICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVYzIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2Pgor
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjQiIGNsYXNzPSJjb2xvckJveCI+PC9k
aXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WNSIgY2xhc3M9ImNvbG9yQm94
Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAg
ICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXJvdGF0ZWQtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXJvdGF0ZWQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRv
cnktcm90YXRlZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNiBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBvdmVy
ZmxvdyByZWdpb25zLgorIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLW1hbmRhdG9yeS1yb3RhdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1tYW5kYXRvcnktcm90YXRlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1tYW5kYXRvcnktcm90YXRlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMjMxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAg
ICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBhdXRvOworICAgICAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIGJsYWNrOworICAgICAg
ICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1z
Y3JvbGwtc25hcC1wb2ludHMteDogcmVwZWF0KDEwMCUpOworICAgICAgICAgICAgICAgIC13ZWJr
aXQtc2Nyb2xsLXNuYXAtdHlwZTogbWFuZGF0b3J5OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgLmhvcml6b250YWxHYWxsZXJ5RHJhd2VyIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMTgw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgYm9yZGVyOiAy
cHggc29saWQgYmxhY2s7CisgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMTVweDsKKyAgICAg
ICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFwLXBvaW50cy15OiByZXBlYXQoMTAwJSk7Cisg
ICAgICAgICAgICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC10eXBlOiBtYW5kYXRvcnk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5RHJhd2VyIHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxODAwcHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAuY29sb3JCb3ggeworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGZsb2F0OiBsZWZ0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgI2l0ZW1IMCwgI2l0
ZW1WMCB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgfQorICAgICAgICAgICAgI2l0ZW1IMSwgI2l0
ZW1WMSB7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyB9CisgICAgICAgICAgICAjaXRlbUgyLCAj
aXRlbVYyIHsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsgfQorICAgICAgICAgICAgI2l0ZW1IMywg
I2l0ZW1WMyB7IGJhY2tncm91bmQtY29sb3I6IGFxdWE7IH0KKyAgICAgICAgICAgICNpdGVtSDQs
ICNpdGVtVjQgeyBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7IH0KKyAgICAgICAgICAgICNpdGVt
SDUsICNpdGVtVjUgeyBiYWNrZ3JvdW5kLWNvbG9yOiBmdWNoc2lhOyB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB2YXIgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
ZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9z
aXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVu
dC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24u
eCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7Cisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGZpbmlzaFRlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOyAgICAgICAgICAgIAorICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgZGl2VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBkaXZU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGRpdlRhcmdldC5z
Y3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQg
YmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiAr
IHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpLCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBkaXZUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBkaXZUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBkaXZUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhkaXZUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGRpdlRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogZGl2VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBq
dXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnLCBm
YWxzZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJywgZmFsc2UpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGRpdlRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gZGl2VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZh
ciBleHBlY3RlZFBvc2l0aW9uID0gZGl2VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGRpdlRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGV4cGVjdGVkUG9zaXRpb24gPSBkaXZUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpLCAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgZGl2VGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGRpdlRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBkaXZUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhkaXZUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGRpdlRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogZGl2VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScs
IGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnLCBmYWxzZSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nLCBmYWxz
ZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScsIGZhbHNlKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2NvbnRpbnVlJywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnY29udGludWUnLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScs
IGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnLCBmYWxzZSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSwgMCk7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlTG9jYXRpb25IID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2l0ZW1IMCcpOworICAgICAgICAgICAgICAgIHZhciBtZXNzYWdl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgICAgICAgICAgbWVzc2Fn
ZS5pbm5lckhUTUwgPSAiPHA+VGhpcyB0ZXN0IGlzIGJldHRlciBydW4gdW5kZXIgRHVtcFJlbmRl
clRyZWUuPGJyLz5UbyBtYW51YWxseSB0ZXN0IGl0LCBwbGFjZSB0aGUgbW91c2UgcG9pbnRlcjxi
ci8+IgorICAgICAgICAgICAgICAgICAgICArICJpbnNpZGUgdGhlIHJlZCByZWdpb24gYXQgdGhl
IHRvcCBvZiB0aGUgcGFnZSw8YnIvPmFuZCB0aGVuIHVzZSB0aGUgbW91c2Ugd2hlZWwgb3IgYSB0
d28tZmluZ2VyPGJyLz5zd2lwZSB0byBtYWtlIGEiCisgICAgICAgICAgICAgICAgICAgICsgInNt
YWxsIHN3aXBlIGdlc3R1cmUgd2l0aDxici8+c29tZSBtb21lbnR1bS48YnIvPjxici8+IgorICAg
ICAgICAgICAgICAgICAgICArICJUaGUgcmVnaW9uIHNob3VsZCBzY3JvbGwgdG8gc2hvdyBhIGdy
ZWVuIHJlZ2lvbi48YnIvPjxici8+IgorICAgICAgICAgICAgICAgICAgICArICJOZXh0LCBwZXJm
b3JtIGEgc21hbGwgc2Nyb2xsIGdlc3R1cmUgdGhhdCBkb2VzPGJyLz5ub3QgaW52b2x2ZSBtb21l
bnR1bS4gWW91IHNob3VsZCBiZWdpbiB0bzxici8+c2VlIG9uZSBvZiB0aGUgY29sb3JzICIKKyAg
ICAgICAgICAgICAgICAgICAgKyAidG8gdGhlIHNpZGUgb2YgdGhlIGN1cnJlbnQ8YnIvPmdyZWVu
IGJveC4gV2hlbiB5b3UgcmVsZWFzZSB0aGUgd2hlZWwsIHRoZTxici8+cmVnaW9uIHNob3VsZCBz
Y3JvbGwgYmFjayB0byBhIHNpbmdsZSBjb2xvci4iOworICAgICAgICAgICAgICAgIG1lc3NhZ2VM
b2NhdGlvbkguYXBwZW5kQ2hpbGQobWVzc2FnZSk7CisKKyAgICAgICAgICAgICAgICB2YXIgbWVz
c2FnZUxvY2F0aW9uViA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpdGVtVjAnKTsKKyAgICAg
ICAgICAgICAgICB2YXIgbWVzc2FnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgICAgICAgICAgICAgIG1lc3NhZ2UuaW5uZXJIVE1MID0gIjxwPllvdSBzaG91bGQgYWxzbyBi
ZSBhYmxlIHRvIHJlcGVhdCB0aGVzZSB0ZXN0cyBzdGVwcyBmb3IgdGhpcyB2ZXJ0aWNhbCByZWdp
b24uPGJyLz4iCisgICAgICAgICAgICAgICAgbWVzc2FnZUxvY2F0aW9uVi5hcHBlbmRDaGlsZCht
ZXNzYWdlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0
eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweCI+CisgICAgICAgICAgICA8ZGl2
PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gb3Zl
cmZsb3cgcmVnaW9ucy48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Imhvcml6b250YWxH
YWxsZXJ5IiBpZD0iaG9yaXpvbnRhbFRhcmdldCIgc3R5bGU9Ii13ZWJraXQtdHJhbnNmb3JtOiBy
b3RhdGUoMjBkZWcpIj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeURyYXdlciI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1IMCIgY2xhc3M9
ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbUgxIiBj
bGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVt
SDIiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9
Iml0ZW1IMyIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRp
diBpZD0iaXRlbUg0IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGlkPSJpdGVtSDUiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAg
ICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InZl
cnRpY2FsR2FsbGVyeSIgaWQ9InZlcnRpY2FsVGFyZ2V0IiBzdHlsZT0iLXdlYmtpdC10cmFuc2Zv
cm06IHJvdGF0ZSgtMjBkZWcpIj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNh
bEdhbGxlcnlEcmF3ZXIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjAiIGNs
YXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1W
MSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0i
aXRlbVYyIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2
IGlkPSJpdGVtVjMiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAg
IDxkaXYgaWQ9Iml0ZW1WNCIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAg
ICAgICAgPGRpdiBpZD0iaXRlbVY1IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAg
ICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252530</attachid>
            <date>2015-05-06 15:34:55 -0700</date>
            <delta_ts>2015-05-06 15:38:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144647-20150506153338.patch</filename>
            <type>text/plain</type>
            <size>66229</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4Mzg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE1LTA1LTA2ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFNjcm9sbC1zbmFwIHBvaW50
cyBkbyBub3QgaGFuZGxlIG1hcmdpbnMgYW5kIHBhZGRpbmcgcHJvcGVydGx5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2NDcKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzIwODI5NDczPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZSBjYWxjdWxhdGlvbiBvZiBzY3JvbGwgc25hcCBwb2ludHMgd2Fz
IGluY29ycmVjdCBiZWNhdXNlIGl0IGRpZCBub3QgYWNjb3VudCBmb3IgbWFyZ2lucyBvciBwYWRk
aW5nLgorICAgICAgICBUaGlzIHdhcyBmaXhlZCBieSB1c2luZyB0aGUgInBhZGRpbmdCb3hSZWN0
IiB0byByZXByZXNlbnQgdGhlIG92ZXJhbGwgc2l6ZSBvZiB0aGUgdmlldyBhcmVhLCBhbmQKKyAg
ICAgICAgc3VidHJhY3RpbmcgdGhlIHJlbGV2YW50IHBhZGRpbmcgd2hlbiBjb21wdXRpbmcgdGhl
IHNpemUgb2YgdGhlIHNjcm9sbCBzbmFwIG9mZnNldHMuCisKKyAgICAgICAgRXh0ZW5kIHRlc3Rp
bmcgaW50ZXJuYWxzIHdpdGggYWNjZXNzb3IgbWV0aG9kcyB0byByZXRyaWV2ZSBzdHJpbmcgcmVw
cmVzZW50YXRpb25zIG9mIHRoZSBzY3JvbGwgc25hcAorICAgICAgICBvZmZzZXRzIGFuZCBzY3Jv
bGwgc25hcCBjb29yZGluYXRlcyBjb21wdXRlZCBkdXJpbmcgbGF5b3V0LiBUaGVzZSB2YWx1ZXMg
YXJlIHVzZWQgaW4gdGhlIG5ldworICAgICAgICAnY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1vZmZzZXRzLWFuZC1jb29yZGluYXRlcy5odG1sJyB0ZXN0LgorCisgICAgICAgIE5ldyB0ZXN0
czoKKyAgICAgICAgKiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW9mZnNldHMtYW5kLWNv
b3JkaW5hdGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LWJvcmRl
cnMuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktcGFkZGluZy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1yb3RhdGVkLmh0bWw6IEFkZGVk
LgorCisgICAgICAgICogY3NzL0xlbmd0aEZ1bmN0aW9ucy5oOiBFeHBvc2UgdGhlICd2YWx1ZUZv
ckxlbmd0aCcgbWV0aG9kIHNvIHdlIGNhbiB1c2UgaXQgaW4gV2ViQ29yZVRlc3RTdXBwb3J0Lgor
ICAgICAgICAqIGRvbS9Ob2RlLmg6IEV4cG9zZSB0aGUgJ3JlbmRlckJveCcgbWV0aG9kIHNvIHdl
IGNhbiB1c2UgaXQgaW4gV2ViQ29yZVRlc3RTdXBwb3J0LgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRD
aGlsZFNuYXBPZmZzZXRzKTogVXNlICdjb250ZW50Qm94UmVjdCcgZm9yIG92ZXJhbGwgc2l6ZSwg
c28gdGhhdCB3ZSBkb24ndCB1c2UgcGFkZGluZworICAgICAgICBhcyBwYXJ0IG9mIG91ciBvZmZz
ZXQgY2FsY3VsYXRpb25zLgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlU25hcE9mZnNldHNGb3JT
Y3JvbGxhYmxlQXJlYSk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDog
RXhwb3NlICdjYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEnIGZvciB1c2UgaW4gV2Vi
Q29yZVRlc3RTdXBwb3J0LgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
OiBFeHBvc2UgJ3Njcm9sbFNuYXBDb29yZGluYXRlcycgZm9yIHVzZSBpbiBXZWJDb3JlVGVzdFN1
cHBvcnQuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJuYWxzOjpzY3JvbGxTbmFwQ29vcmRpbmF0ZXMpOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmFwcGVuZE9mZnNldHMpOiBIZWxwZXIgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OnNjcm9sbFNuYXBPZmZzZXRzKTogQWRkZWQuCisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTUt
MDUtMDYgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIEF2b2lkIGNv
cGllcyBpbiBzY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKCkgYW5kIGlubGluZSBpdC4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmgJKHJldmlzaW9uIDE4Mzg0MykKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNyArMzUsNyBAQCBzdHJ1Y3QgTGVuZ3RoU2l6ZTsKIGludCBtaW5pbXVtSW50VmFsdWVGb3JM
ZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIGJvb2wgcm91bmRQ
ZXJjZW50YWdlcyA9IGZhbHNlKTsKIGludCBpbnRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgm
LCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSk7CiBMYXlvdXRVbml0IG1pbmltdW1WYWx1ZUZvckxl
bmd0aChjb25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgYm9vbCByb3VuZFBl
cmNlbnRhZ2VzID0gZmFsc2UpOwotTGF5b3V0VW5pdCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5n
dGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSk7CitXRUJDT1JFX0VYUE9SVCBMYXlvdXRVbml0
IHZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIExheW91dFVuaXQgbWF4aW11bVZhbHVlKTsK
IGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhp
bXVtVmFsdWUpOwogV0VCQ09SRV9FWFBPUlQgZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25z
dCBMZW5ndGgmLCBmbG9hdCBtYXhpbXVtVmFsdWUpOwogRmxvYXRTaXplIGZsb2F0U2l6ZUZvckxl
bmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCShyZXZpc2lvbiAxODM4NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NDQsNyArNDQ0LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8v
IFVzZSB0aGVzZSB0d28gbWV0aG9kcyB3aXRoIGNhdXRpb24uCi0gICAgUmVuZGVyQm94KiByZW5k
ZXJCb3goKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZW5kZXJCb3gqIHJlbmRlckJveCgp
IGNvbnN0OwogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJCb3hNb2RlbE9iamVjdCgp
IGNvbnN0OwogICAgIAogICAgIC8vIFdyYXBwZXIgZm9yIG5vZGVzIHRoYXQgZG9uJ3QgaGF2ZSBh
IHJlbmRlcmVyLCBidXQgc3RpbGwgY2FjaGUgdGhlIHN0eWxlIChsaWtlIEhUTUxPcHRpb25FbGVt
ZW50KS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFw
T2Zmc2V0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
QXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcAkocmV2aXNpb24gMTgzODQzKQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDMsMTIgKzQzLDE3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZENoaWxkU25hcE9mZnNl
dHMoSFRNTEUKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiB0cmF2ZXJzaW5nIGFsbCBjaGlsZHJl
biwgcmVnaXN0ZXIgY2hpbGRyZW4gd2l0aCBzbmFwIGNvb3JkaW5hdGVzIGJlZm9yZSBhcHBlbmRp
bmcgdG8gc25hcE9mZnNldFN1YnNlcXVlbmNlLgogICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGls
ZHJlbk9mVHlwZTxFbGVtZW50PihwYXJlbnQpKSB7CiAgICAgICAgIGlmIChSZW5kZXJCb3gqIGJv
eCA9IGNoaWxkLnJlbmRlckJveCgpKSB7Ci0gICAgICAgICAgICBMYXlvdXRVbml0IHZpZXdXaWR0
aCA9IGJveC0+d2lkdGgoKTsKLSAgICAgICAgICAgIExheW91dFVuaXQgdmlld0hlaWdodCA9IGJv
eC0+aGVpZ2h0KCk7CisgICAgICAgICAgICBjb25zdCBhdXRvJiBzY3JvbGxTbmFwQ29vcmRpbmF0
ZXMgPSBib3gtPnN0eWxlKCkuc2Nyb2xsU25hcENvb3JkaW5hdGVzKCk7CisgICAgICAgICAgICBp
ZiAoc2Nyb2xsU25hcENvb3JkaW5hdGVzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICAgICAgTGF5b3V0UmVjdCB2aWV3U2l6ZSA9IGJveC0+Y29udGVudEJv
eFJlY3QoKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgdmlld1dpZHRoID0gdmlld1NpemUud2lk
dGgoKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgdmlld0hlaWdodCA9IHZpZXdTaXplLmhlaWdo
dCgpOwogICAgICAgICAgICAgRmxvYXRQb2ludCBwb3NpdGlvbiA9IGJveC0+bG9jYWxUb0NvbnRh
aW5lclBvaW50KEZsb2F0UG9pbnQoKSwgcGFyZW50LnJlbmRlckJveCgpKTsKICAgICAgICAgICAg
IExheW91dFVuaXQgbGVmdCA9IHBvc2l0aW9uLngoKTsKICAgICAgICAgICAgIExheW91dFVuaXQg
dG9wID0gcG9zaXRpb24ueSgpOwotICAgICAgICAgICAgZm9yIChhdXRvJiBjb29yZGluYXRlIDog
Ym94LT5zdHlsZSgpLnNjcm9sbFNuYXBDb29yZGluYXRlcygpKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8mIGNvb3JkaW5hdGUgOiBzY3JvbGxTbmFwQ29vcmRpbmF0ZXMpIHsKICAgICAgICAgICAg
ICAgICBMYXlvdXRVbml0IGxhc3RQb3RlbnRpYWxTbmFwUG9zaXRpb25YID0gbGVmdCArIHZhbHVl
Rm9yTGVuZ3RoKGNvb3JkaW5hdGUud2lkdGgoKSwgdmlld1dpZHRoKTsKICAgICAgICAgICAgICAg
ICBpZiAoc2hvdWxkQWRkSG9yaXpvbnRhbENoaWxkT2Zmc2V0cyAmJiBsYXN0UG90ZW50aWFsU25h
cFBvc2l0aW9uWCA+IDApCiAgICAgICAgICAgICAgICAgICAgIGhvcml6b250YWxTbmFwT2Zmc2V0
U3Vic2VxdWVuY2UuYXBwZW5kKGxhc3RQb3RlbnRpYWxTbmFwUG9zaXRpb25YKTsKQEAgLTEyNiw4
ICsxMzEsOSBAQCB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFyZWEoCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBMYXlvdXRVbml0IHZpZXdXaWR0aCA9IHNjcm9sbGlu
Z0VsZW1lbnRCb3gud2lkdGgoKTsKLSAgICBMYXlvdXRVbml0IHZpZXdIZWlnaHQgPSBzY3JvbGxp
bmdFbGVtZW50Qm94LmhlaWdodCgpOworICAgIExheW91dFJlY3Qgdmlld1NpemUgPSBzY3JvbGxp
bmdFbGVtZW50Qm94LmNvbnRlbnRCb3hSZWN0KCk7CisgICAgTGF5b3V0VW5pdCB2aWV3V2lkdGgg
PSB2aWV3U2l6ZS53aWR0aCgpOworICAgIExheW91dFVuaXQgdmlld0hlaWdodCA9IHZpZXdTaXpl
LmhlaWdodCgpOwogICAgIExheW91dFVuaXQgc2Nyb2xsV2lkdGggPSBzY3JvbGxpbmdFbGVtZW50
Qm94LnNjcm9sbFdpZHRoKCk7CiAgICAgTGF5b3V0VW5pdCBzY3JvbGxIZWlnaHQgPSBzY3JvbGxp
bmdFbGVtZW50Qm94LnNjcm9sbEhlaWdodCgpOwogICAgIGJvb2wgY2FuQ29tcHV0ZUhvcml6b250
YWxPZmZzZXRzID0gc2Nyb2xsV2lkdGggPiAwICYmIHZpZXdXaWR0aCA+IDAgJiYgdmlld1dpZHRo
IDwgc2Nyb2xsV2lkdGg7CkBAIC0xNDUsNyArMTUxLDcgQEAgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0
c0ZvclNjcm9sbGFibGVBcmVhKAogICAgIFZlY3RvcjxMYXlvdXRVbml0PiB2ZXJ0aWNhbFNuYXBP
ZmZzZXRTdWJzZXF1ZW5jZTsKIAogICAgIGJvb2wgc2Nyb2xsU25hcFBvaW50c1hVc2VzRWxlbWVu
dHMgPSBzdHlsZVVzZXNFbGVtZW50cyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHNjcm9s
bGluZ0VsZW1lbnRTdHlsZSk7Ci0gICAgYm9vbCBzY3JvbGxTbmFwUG9pbnRzWVVzZXNFbGVtZW50
cyA9IHN0eWxlVXNlc0VsZW1lbnRzKFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwgLCBzY3JvbGxp
bmdFbGVtZW50U3R5bGUpOworICAgIGJvb2wgc2Nyb2xsU25hcFBvaW50c1lVc2VzRWxlbWVudHMg
PSBzdHlsZVVzZXNFbGVtZW50cyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBzY3JvbGxpbmdF
bGVtZW50U3R5bGUpOwogCiAgICAgaWYgKHNjcm9sbFNuYXBQb2ludHNYVXNlc0VsZW1lbnRzIHx8
IHNjcm9sbFNuYXBQb2ludHNZVXNlc0VsZW1lbnRzKSB7CiAgICAgICAgIGJvb2wgc2hvdWxkQWRk
SG9yaXpvbnRhbENoaWxkT2Zmc2V0cyA9IHNjcm9sbFNuYXBQb2ludHNYVXNlc0VsZW1lbnRzICYm
IGNhbkNvbXB1dGVIb3Jpem9udGFsT2Zmc2V0czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmgJKHJldmlzaW9uIDE4Mzg0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaAkod29ya2luZyBjb3B5KQpAQCAtNDYyLDcgKzQ2Miw3IEBAIHB1YmxpYzoK
ICAgICBpbnQgc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCku
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQoKSA6
IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBzY3JvbGwoU2Ny
b2xsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgbXVsdGlwbGllciA9IDEsIEVs
ZW1lbnQqKiBzdG9wRWxlbWVudCA9IG51bGxwdHIsIFJlbmRlckJveCogc3RhcnRCb3ggPSBudWxs
cHRyLCBjb25zdCBJbnRQb2ludCYgd2hlZWxFdmVudEFic29sdXRlUG9pbnQgPSBJbnRQb2ludCgp
KTsKICAgICB2aXJ0dWFsIGJvb2wgbG9naWNhbFNjcm9sbChTY3JvbGxMb2dpY2FsRGlyZWN0aW9u
LCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgbXVsdGlwbGllciA9IDEsIEVsZW1lbnQqKiBzdG9w
RWxlbWVudCA9IG51bGxwdHIpOwotICAgIGJvb2wgY2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFi
bGVBcmVhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5CZVNjcm9sbGVkQW5k
SGFzU2Nyb2xsYWJsZUFyZWEoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVQcm9ncmFt
YXRpY2FsbHlTY3JvbGxlZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBhdXRvc2Nyb2xsKGNv
bnN0IEludFBvaW50Jik7CiAgICAgYm9vbCBjYW5BdXRvc2Nyb2xsKCkgY29uc3Q7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24g
MTgzODQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExMTIsNyArMTExMiw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBT
Y3JvbGxTbmFwUG9pbnRzKiBzY3JvbGxTbmFwUG9pbnRzWCgpIGNvbnN0OwogICAgIGNvbnN0IFNj
cm9sbFNuYXBQb2ludHMqIHNjcm9sbFNuYXBQb2ludHNZKCkgY29uc3Q7CiAgICAgY29uc3QgTGVu
Z3RoU2l6ZSYgc2Nyb2xsU25hcERlc3RpbmF0aW9uKCkgY29uc3Q7Ci0gICAgY29uc3QgVmVjdG9y
PExlbmd0aFNpemU+JiBzY3JvbGxTbmFwQ29vcmRpbmF0ZXMoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBjb25zdCBWZWN0b3I8TGVuZ3RoU2l6ZT4mIHNjcm9sbFNuYXBDb29yZGluYXRlcygp
IGNvbnN0OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpJbmRleDogU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMTgzODQzKQorKysgU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzc3LDQgKzI3
NzcsOTkgQEAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgSW50ZXJuYWxzOjptbwogfQogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQorU3RyaW5nIEludGVybmFsczo6c2Ny
b2xsU25hcENvb3JkaW5hdGVzKEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIGlmICghZWxlbWVudCkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsK
KyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKworICAgIGlmICghZWxlbWVudC0+cmVu
ZGVyQm94KCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFJlbmRlckJveCYgYm94
ID0gKmVsZW1lbnQtPnJlbmRlckJveCgpOworICAgIGNvbnN0IGF1dG8mIHNjcm9sbFNuYXBDb29y
ZGluYXRlcyA9IGJveC5zdHlsZSgpLnNjcm9sbFNuYXBDb29yZGluYXRlcygpOworICAgIGlmIChz
Y3JvbGxTbmFwQ29vcmRpbmF0ZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gIm5vbmUiOwor
CisgICAgTGF5b3V0UmVjdCB2aWV3U2l6ZSA9IGJveC5jb250ZW50Qm94UmVjdCgpOworICAgIExh
eW91dFVuaXQgdmlld1dpZHRoID0gdmlld1NpemUud2lkdGgoKTsKKyAgICBMYXlvdXRVbml0IHZp
ZXdIZWlnaHQgPSB2aWV3U2l6ZS5oZWlnaHQoKTsKKyAgICAKKyAgICBTdHJpbmdCdWlsZGVyIHJl
c3VsdDsKKyAgICByZXN1bHQuYXBwZW5kKCJ7ICIpOworICAgIGZvciAoYXV0byYgY29vcmRpbmF0
ZSA6IHNjcm9sbFNuYXBDb29yZGluYXRlcykgeworICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgp
ID4gMikKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwgIik7CisKKyAgICAgICAgTGF5b3V0
VW5pdCB4ID0gdmFsdWVGb3JMZW5ndGgoY29vcmRpbmF0ZS53aWR0aCgpLCB2aWV3V2lkdGgpOwor
ICAgICAgICBMYXlvdXRVbml0IHkgPSB2YWx1ZUZvckxlbmd0aChjb29yZGluYXRlLmhlaWdodCgp
LCB2aWV3SGVpZ2h0KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiKCIpOworICAgICAgICByZXN1
bHQuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHgudG9VbnNpZ25lZCgpKSk7CisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIiwgIik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nOjpudW1iZXIoeS50
b1Vuc2lnbmVkKCkpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiKSIpOworICAgIH0KKyAgICBy
ZXN1bHQuYXBwZW5kKCIgfSIpOworCisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworfQor
CitzdGF0aWMgdm9pZCBhcHBlbmRPZmZzZXRzKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0
IFZlY3RvcjxMYXlvdXRVbml0PiYgc25hcE9mZnNldHMpCit7CisgICAgYm9vbCBqdXN0U3RhcnRp
bmcgPSB0cnVlOworCisgICAgYnVpbGRlci5hcHBlbmQoInsgIik7CisgICAgZm9yIChhdXRvJiBj
b29yZGluYXRlIDogc25hcE9mZnNldHMpIHsKKyAgICAgICAgaWYgKCFqdXN0U3RhcnRpbmcpCisg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCAiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAganVzdFN0YXJ0aW5nID0gZmFsc2U7CisgICAgICAgIAorICAgICAgICBidWlsZGVyLmFwcGVu
ZChTdHJpbmc6Om51bWJlcihjb29yZGluYXRlLnRvVW5zaWduZWQoKSkpOworICAgIH0KKyAgICBi
dWlsZGVyLmFwcGVuZCgiIH0iKTsKK30KKyAgICAKK1N0cmluZyBJbnRlcm5hbHM6OnNjcm9sbFNu
YXBPZmZzZXRzKEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlm
ICghZWxlbWVudCkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworICAgIH0KKworICAgIGlmICghZWxlbWVudC0+cmVuZGVyQm94KCkp
CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFJlbmRlckJveCYgYm94ID0gKmVsZW1l
bnQtPnJlbmRlckJveCgpOworICAgIGlmICghYm94LmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxh
YmxlQXJlYSgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CisgICAgfQorCisgICAgaWYgKCFib3gubGF5ZXIoKSkKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworICAgIAorICAgIFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJl
YSA9ICpib3gubGF5ZXIoKTsKKyAgICAKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKworICAg
IGlmIChzY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU25hcE9mZnNldHMoKSkgeworICAgICAgICBy
ZXN1bHQuYXBwZW5kKCJob3Jpem9udGFsID0gIik7CisgICAgICAgIGFwcGVuZE9mZnNldHMocmVz
dWx0LCAqc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkpOworICAgIH0KKwor
ICAgIGlmIChzY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkpIHsKKyAgICAgICAg
aWYgKHJlc3VsdC5sZW5ndGgoKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwgIik7CisK
KyAgICAgICAgcmVzdWx0LmFwcGVuZCgidmVydGljYWwgPSAiKTsKKyAgICAgICAgYXBwZW5kT2Zm
c2V0cyhyZXN1bHQsICpzY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkpOworICAg
IH0KKworICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKK30KKyNlbmRpZgorCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHJldmlzaW9uIDE4Mzg0MykKKysrIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwMCw2ICs0
MDAsMTEgQEAgcHVibGljOgogICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIG1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKENTU19TQ1JPTExfU05B
UCkKKyAgICBTdHJpbmcgc2Nyb2xsU25hcENvb3JkaW5hdGVzKEVsZW1lbnQqLCBFeGNlcHRpb25D
b2RlJik7CisgICAgU3RyaW5nIHNjcm9sbFNuYXBPZmZzZXRzKEVsZW1lbnQqLCBFeGNlcHRpb25D
b2RlJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbHMoRG9jdW1l
bnQqKTsKICAgICBEb2N1bWVudCogY29udGV4dERvY3VtZW50KCkgY29uc3Q7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZpc2lvbiAxODM4NDMpCisrKyBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1OSw0ICsz
NTksOSBAQCBlbnVtIFJlc291cmNlTG9hZFByaW9yaXR5IHsKICAgICB2b2lkIHF1ZXVlTWljcm9U
YXNrKGxvbmcgdGVzdE51bWJlcik7CiAKICAgICBbQ29uZGl0aW9uYWw9Q09OVEVOVF9GSUxURVJJ
TkddIHJlYWRvbmx5IGF0dHJpYnV0ZSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzIG1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M7CisKKyNpZiBkZWZpbmVkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVAp
ICYmIEVOQUJMRV9DU1NfU0NST0xMX1NOQVAKKyAgICBbUmFpc2VzRXhjZXB0aW9uXSBET01TdHJp
bmcgc2Nyb2xsU25hcENvb3JkaW5hdGVzKEVsZW1lbnQgZWxlbWVudCk7CisgICAgW1JhaXNlc0V4
Y2VwdGlvbl0gRE9NU3RyaW5nIHNjcm9sbFNuYXBPZmZzZXRzKEVsZW1lbnQgZWxlbWVudCk7Cisj
ZW5kaWYKIH07CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODM4OTEpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxNS0wNS0wNiAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBTY3JvbGwtc25hcCBwb2lu
dHMgZG8gbm90IGhhbmRsZSBtYXJnaW5zIGFuZCBwYWRkaW5nIHByb3BlcnRseQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NjQ3CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yMDgyOTQ3Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgbmV3IHNjcm9sbC1zbmFwIHRlc3RzIHRoYXQgY292ZXIgZWxl
bWVudHMgd2l0aCBib3JkZXJzLCBwYWRkaW5nLCBhbmQgcm90YXRpb24uIEFsc28gY29ycmVjdCB0
aGUKKyAgICAgICAgY2F1c2Ugb2YgdGhlICdzY3JvbGwtc25hcC1tYW5kYXRvcnktb3ZlcmZsb3cu
aHRtbCcgdGVzdCBmbGFraW5lc3MgYnkgbWFraW5nIHN1cmUgdGhlIG1vdXNlIGlzIGFsd2F5cwor
ICAgICAgICBpbnNpZGUgdGhlIGVsZW1lbnQgd2hlbiBzdGFydGluZyBuZXcgd2hlZWwgZ2VzdHVy
ZXMuCisKKyAgICAgICAgQWxzbyBhZGQgYSBuZXcgJ2dlbmVyaWMnIHRlc3QgdGhhdCBjb25maXJt
cyB0aGF0IHdlIGhhdmUgZXhwZWN0ZWQgcmVzdWx0cyBmb3Igc2Nyb2xsLXNuYXAgY29vcmRpbmF0
ZXMKKyAgICAgICAgYW5kIGNhbGN1bGF0ZWQgc2Nyb2xsLXNuYXAtb2Zmc2V0IHZhbHVlcy4KKyAK
KyAgICAgICAgKiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW9mZnNldHMtYW5kLWNvb3Jk
aW5hdGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVj
dGF0aW9uczogUmVtb3ZlIGZsYWtpbmVzcyBhbm5vdGF0aW9uIGZvciBzY3JvbGwtc25hcC1tYW5k
YXRvcnktb3ZlcmZsb3cuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUuaHRtbDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLW1hbmRhdG9yeS1ib3JkZXJzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1tYW5kYXRvcnktYm9yZGVycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLW1hbmRhdG9yeS1vdmVyZmxvdy5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5
LXBhZGRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sy
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9y
eS1wYWRkaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXJvdGF0
ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1yb3Rh
dGVkLmh0bWw6IEFkZGVkLgorCiAyMDE1LTA1LTA2ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5z
b25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbRnJlZVR5cGVdIFZlcnRpY2FsIENKSyBnbHlwaHMg
c2hvdWxkIG5vdCBiZSByZW5kZXJlZCB3aXRoIHN5bnRoZXRpYyBvYmxpcXVlCkluZGV4OiBMYXlv
dXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW9mZnNldHMtYW5kLWNvb3JkaW5h
dGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1vZmZzZXRzLWFuZC1jb29yZGluYXRlcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1vZmZzZXRzLWFuZC1jb29yZGlu
YXRlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjA0IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuYm9y
ZGVyZWQgeworICAgICAgICAgICAgICAgIGJvcmRlci10b3A6IDIwcHggc29saWQgYmxhY2s7Cisg
ICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMTBweCBzb2xpZCBibGFjazsKKyAgICAgICAg
ICAgICAgICBib3JkZXItbGVmdDogMTVweCBzb2xpZCBibGFjazsKKyAgICAgICAgICAgICAgICBi
b3JkZXItcmlnaHQ6IDlweCBzb2xpZCBibGFjazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC5wYWRkZWQgeworICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMjBweDsKKyAgICAgICAg
ICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4OworICAgICAgICAgICAgICAgIHBhZGRpbmctdG9w
OiAxNXB4OworICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiA5cHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgICAgICAtd2Via2l0LW92
ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1zY3JvbGwt
c25hcC1wb2ludHMteDogcmVwZWF0KDEwMCUpOworICAgICAgICAgICAgICAgIC13ZWJraXQtc2Ny
b2xsLXNuYXAtdHlwZTogbWFuZGF0b3J5OworICAgICAgICAgICAgICAgIC13ZWJraXQtc2Nyb2xs
LXNuYXAtY29vcmRpbmF0ZTogNTAlIDUwJTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC5o
b3Jpem9udGFsR2FsbGVyeURyYXdlciB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDE4MHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzBweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOworICAgICAgICAg
ICAgICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtcG9pbnRzLXk6IHJlcGVhdCgxMDAlKTsKKyAgICAg
ICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFwLXR5cGU6IG1hbmRhdG9yeTsKKyAgICAgICAg
ICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFwLWNvb3JkaW5hdGU6IDUwJSA1MCU7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5RHJhd2VyIHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDE4MHB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLmNvbG9yQm94IHsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwcHg7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwcHg7CisgICAgICAgICAgICAgICAgZmxv
YXQ6IGxlZnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAjaXRlbUgwLCAjaXRlbVYwIHsg
YmFja2dyb3VuZC1jb2xvcjogcmVkOyB9CisgICAgICAgICAgICAjaXRlbUgxLCAjaXRlbVYxIHsg
YmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IH0KKyAgICAgICAgICAgICNpdGVtSDIsICNpdGVtVjIg
eyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyB9CisgICAgICAgICAgICAjaXRlbUgzLCAjaXRlbVYz
IHsgYmFja2dyb3VuZC1jb2xvcjogYXF1YTsgfQorICAgICAgICAgICAgI2l0ZW1INCwgI2l0ZW1W
NCB7IGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsgfQorICAgICAgICAgICAgI2l0ZW1INSwgI2l0
ZW1WNSB7IGJhY2tncm91bmQtY29sb3I6IGZ1Y2hzaWE7IH0KKyAgICAgICAgPC9zdHlsZT4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIHJlcG9ydFJlc3VsdChob3Jp
em9udGFsVGFyZ2V0SUQsIHZlcnRpY2FsVGFyZ2V0SUQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBob3Jpem9udGFsVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaG9yaXpvbnRh
bFRhcmdldElEKTsKKyAgICAgICAgICAgIHZhciB2ZXJ0aWNhbFRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHZlcnRpY2FsVGFyZ2V0SUQpOworCisgICAgICAgICAgICBkZWJ1ZygiU2Ny
b2xsLXNuYXAgY29vcmRpbmF0ZXMgZm9yICIgKyBob3Jpem9udGFsVGFyZ2V0SUQgKyAiOiAiICsg
d2luZG93LmludGVybmFscy5zY3JvbGxTbmFwQ29vcmRpbmF0ZXMoaG9yaXpvbnRhbFRhcmdldCkp
OworICAgICAgICAgICAgZGVidWcoIlNjcm9sbC1zbmFwIGNvb3JkaW5hdGVzIGZvciAiICsgdmVy
dGljYWxUYXJnZXRJRCArICI6ICIgKyB3aW5kb3cuaW50ZXJuYWxzLnNjcm9sbFNuYXBDb29yZGlu
YXRlcyh2ZXJ0aWNhbFRhcmdldCkpOworCisgICAgICAgICAgICBkZWJ1ZygiU2Nyb2xsLXNuYXAg
b2Zmc2V0cyBmb3IgIiArIGhvcml6b250YWxUYXJnZXRJRCArICI6ICIgKyB3aW5kb3cuaW50ZXJu
YWxzLnNjcm9sbFNuYXBPZmZzZXRzKGhvcml6b250YWxUYXJnZXQpKTsKKyAgICAgICAgICAgIGRl
YnVnKCJTY3JvbGwtc25hcCBvZmZzZXRzIGZvciAiICsgdmVydGljYWxUYXJnZXRJRCArICI6ICIg
KyB3aW5kb3cuaW50ZXJuYWxzLnNjcm9sbFNuYXBPZmZzZXRzKHZlcnRpY2FsVGFyZ2V0KSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmVwb3J0UmVzdWx0KCdob3Jpem9udGFsVGFyZ2V0JywgJ3ZlcnRpY2FsVGFyZ2V0Jyk7
CisgICAgICAgICAgICByZXBvcnRSZXN1bHQoJ2hvcml6b250YWxCb3JkZXJlZFRhcmdldCcsICd2
ZXJ0aWNhbEJvcmRlcmVkVGFyZ2V0Jyk7CisgICAgICAgICAgICByZXBvcnRSZXN1bHQoJ2hvcml6
b250YWxQYWRkZWRUYXJnZXQnLCAndmVydGljYWxQYWRkZWRUYXJnZXQnKTsKKyAgICAgICAgICAg
IHJlcG9ydFJlc3VsdCgnaG9yaXpvbnRhbEJvcmRlcmVkUGFkZGVkVGFyZ2V0JywgJ3ZlcnRpY2Fs
Qm9yZGVyZWRQYWRkZWRUYXJnZXQnKTsKKyAgICAgICAgICAgIHJlcG9ydFJlc3VsdCgnaG9yaXpv
bnRhbFJvdGF0ZWRUYXJnZXQnLCAndmVydGljYWxSb3RhdGVkVGFyZ2V0JykKKworICAgICAgICAg
ICAgLy9maW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIC8vdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChydW5UZXN0LCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2Fk
PSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdp
ZHRoOiAzMDBweCI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gb3ZlcmZsb3cgcmVnaW9ucy48L2Rpdj4KKyAgICAg
ICAgICAgIDxkaXYgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBpZD0iaG9yaXpvbnRhbFRhcmdl
dCI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnlEcmF3ZXIi
PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtSDAiIGNsYXNzPSJjb2xvckJveCI+
PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1IMSIgY2xhc3M9ImNvbG9y
Qm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbUgyIiBjbGFzcz0i
Y29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtSDMiIGNs
YXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1I
NCIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0i
aXRlbUg1IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgIDwvZGl2Pgor
ICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxl
cnkiIGlkPSJ2ZXJ0aWNhbFRhcmdldCI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5RHJhd2VyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVYw
IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJp
dGVtVjEiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYg
aWQ9Iml0ZW1WMiIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAg
PGRpdiBpZD0iaXRlbVYzIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGlkPSJpdGVtVjQiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAg
ICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WNSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAg
ICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPGRpdiBj
bGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkgYm9yZGVyZWQiIGlkPSJob3Jpem9udGFsQm9yZGVyZWRU
YXJnZXQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5RHJh
d2VyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbUgwIiBjbGFzcz0iY29sb3JC
b3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtSDEiIGNsYXNzPSJj
b2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1IMiIgY2xh
c3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbUgz
IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJp
dGVtSDQiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYg
aWQ9Iml0ZW1INSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L2Rp
dj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVydGljYWxH
YWxsZXJ5IGJvcmRlcmVkIiBpZD0idmVydGljYWxCb3JkZXJlZFRhcmdldCI+CisgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0idmVydGljYWxHYWxsZXJ5RHJhd2VyIj4KKyAgICAgICAgICAgICAg
ICAgICAgPGRpdiBpZD0iaXRlbVYwIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjEiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAg
ICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WMiIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4K
KyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVYzIiBjbGFzcz0iY29sb3JCb3giPjwv
ZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjQiIGNsYXNzPSJjb2xvckJv
eCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WNSIgY2xhc3M9ImNv
bG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2
PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkgcGFkZGVkIiBpZD0i
aG9yaXpvbnRhbFBhZGRlZFRhcmdldCI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9y
aXpvbnRhbEdhbGxlcnlEcmF3ZXIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVt
SDAiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9
Iml0ZW1IMSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRp
diBpZD0iaXRlbUgyIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGlkPSJpdGVtSDMiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAg
ICAgICAgIDxkaXYgaWQ9Iml0ZW1INCIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAg
ICAgICAgICAgICAgPGRpdiBpZD0iaXRlbUg1IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAg
ICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkgcGFkZGVkIiBpZD0idmVydGljYWxQYWRkZWRUYXJnZXQi
PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnRpY2FsR2FsbGVyeURyYXdlciI+Cisg
ICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WMCIgY2xhc3M9ImNvbG9yQm94Ij48L2Rp
dj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVYxIiBjbGFzcz0iY29sb3JCb3gi
PjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjIiIGNsYXNzPSJjb2xv
ckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WMyIgY2xhc3M9
ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVY0IiBj
bGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVt
VjUiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAg
ICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
IGJvcmRlcmVkIHBhZGRlZCIgaWQ9Imhvcml6b250YWxCb3JkZXJlZFBhZGRlZFRhcmdldCI+Cisg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnlEcmF3ZXIiPgorICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtSDAiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+
CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1IMSIgY2xhc3M9ImNvbG9yQm94Ij48
L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbUgyIiBjbGFzcz0iY29sb3JC
b3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtSDMiIGNsYXNzPSJj
b2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1INCIgY2xh
c3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbUg1
IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAg
ICAgICAgPC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkgYm9y
ZGVyZWQgcGFkZGVkIiBpZD0idmVydGljYWxCb3JkZXJlZFBhZGRlZFRhcmdldCI+CisgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0idmVydGljYWxHYWxsZXJ5RHJhd2VyIj4KKyAgICAgICAgICAg
ICAgICAgICAgPGRpdiBpZD0iaXRlbVYwIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjEiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+Cisg
ICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WMiIgY2xhc3M9ImNvbG9yQm94Ij48L2Rp
dj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVYzIiBjbGFzcz0iY29sb3JCb3gi
PjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjQiIGNsYXNzPSJjb2xv
ckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WNSIgY2xhc3M9
ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwv
ZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkgYm9yZGVyZWQg
cGFkZGVkIiBpZD0iaG9yaXpvbnRhbFJvdGF0ZWRUYXJnZXQiIHN0eWxlPSItd2Via2l0LXRyYW5z
Zm9ybTogcm90YXRlKDIwZGVnKSI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnlEcmF3ZXIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtSDAi
IGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0
ZW1IMSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBp
ZD0iaXRlbUgyIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8
ZGl2IGlkPSJpdGVtSDMiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAg
ICAgIDxkaXYgaWQ9Iml0ZW1INCIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAg
ICAgICAgICAgPGRpdiBpZD0iaXRlbUg1IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAg
ICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJ2ZXJ0aWNhbEdhbGxlcnkgYm9yZGVyZWQgcGFkZGVkIiBpZD0idmVydGljYWxSb3RhdGVk
VGFyZ2V0IiBzdHlsZT0iLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtMjBkZWcpIj4KKyAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnlEcmF3ZXIiPgorICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjAiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAg
ICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WMSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4K
KyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVYyIiBjbGFzcz0iY29sb3JCb3giPjwv
ZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjMiIGNsYXNzPSJjb2xvckJv
eCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WNCIgY2xhc3M9ImNv
bG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVY1IiBjbGFz
cz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAg
PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25z
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0
aW9ucwkocmV2aXNpb24gMTgzODQzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9U
ZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC01MjMsMTAgKzUyMywzIEBAIHdlYmtp
dC5vcmcvYi8xNDEwODUgWyBZb3NlbWl0ZSBdIGh0dHAvdGUKICMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucyBbIFBh
c3MgXQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIyMgU1RB
UlQgT0YgKDEpIE5ldyBzY3JvbGwtc25hcCBmbGFrZQotcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktb3ZlcmZs
b3cuaHRtbCBbIFRpbWVvdXQgUGFzcyBdCi0KLSMjIyBFTkQgT0YgKDEpIHNjcm9sbC1zbmFwIGZs
YWtlCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDE4Mzg0MykKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgyLDggKzgyLDEwIEBACiAgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IGlmcmFtZVRhcmdldC5vZmZzZXRMZWZ0ICsgMjA7Ci0gICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gaWZyYW1lVGFyZ2V0Lm9mZnNldFRvcCArIDIwOworICAgICAgICAgICAgdmFyIHdp
bmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OwogICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBN
YWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCiAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
YmVnYW4nLCAnbm9uZScsIGZhbHNlKTsKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
LCBmYWxzZSk7CkBAIC0xMzEsOCArMTMzLDggQEAKIAogICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CiAKLSAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoIC0gMTA7Ci0gICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDUwOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CiAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7CiAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScsIGZhbHNlKTsKICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnLCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLW1hbmRhdG9yeS1ib3JkZXJzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1ib3JkZXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LWJvcmRlcnMtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gb3ZlcmZsb3cgcmVnaW9ucy4KKyBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktYm9yZGVy
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LWJvcmRl
cnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LWJv
cmRlcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIzOSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhv
cml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBi
b3JkZXItdG9wOiAyMHB4IHNvbGlkIGJsYWNrOworICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0
b206IDEwcHggc29saWQgYmxhY2s7CisgICAgICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDE1cHgg
c29saWQgYmxhY2s7CisgICAgICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiA5cHggc29saWQgYmxh
Y2s7CisgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB4OworICAgICAgICAgICAgICAg
IC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKKyAgICAgICAgICAgICAgICAtd2Vi
a2l0LXNjcm9sbC1zbmFwLXBvaW50cy14OiByZXBlYXQoMTAwJSk7CisgICAgICAgICAgICAgICAg
LXdlYmtpdC1zY3JvbGwtc25hcC10eXBlOiBtYW5kYXRvcnk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnlEcmF3ZXIgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAxODAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBib3Jk
ZXItdG9wOiAyMHB4IHNvbGlkIGJsYWNrOworICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206
IDEwcHggc29saWQgYmxhY2s7CisgICAgICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDE1cHggc29s
aWQgYmxhY2s7CisgICAgICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiA5cHggc29saWQgYmxhY2s7
CisgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMnB4OworICAgICAgICAgICAgICAgIC13ZWJr
aXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKKyAgICAgICAgICAgICAgICAtd2Via2l0LXNj
cm9sbC1zbmFwLXBvaW50cy15OiByZXBlYXQoMTAwJSk7CisgICAgICAgICAgICAgICAgLXdlYmtp
dC1zY3JvbGwtc25hcC10eXBlOiBtYW5kYXRvcnk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5RHJhd2VyIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxODAwcHg7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAuY29sb3JCb3ggeworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgI2l0ZW1IMCwgI2l0ZW1WMCB7IGJhY2tncm91bmQtY29s
b3I6IHJlZDsgfQorICAgICAgICAgICAgI2l0ZW1IMSwgI2l0ZW1WMSB7IGJhY2tncm91bmQtY29s
b3I6IGdyZWVuOyB9CisgICAgICAgICAgICAjaXRlbUgyLCAjaXRlbVYyIHsgYmFja2dyb3VuZC1j
b2xvcjogYmx1ZTsgfQorICAgICAgICAgICAgI2l0ZW1IMywgI2l0ZW1WMyB7IGJhY2tncm91bmQt
Y29sb3I6IGFxdWE7IH0KKyAgICAgICAgICAgICNpdGVtSDQsICNpdGVtVjQgeyBiYWNrZ3JvdW5k
LWNvbG9yOiB5ZWxsb3c7IH0KKyAgICAgICAgICAgICNpdGVtSDUsICNpdGVtVjUgeyBiYWNrZ3Jv
dW5kLWNvbG9yOiBmdWNoc2lhOyB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBm
dW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0g
ZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zm
c2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVs
ZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVu
dC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3Np
dGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKQorICAgICAg
ICB7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOyAgICAgICAgICAgIAorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgZGl2VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBkaXZUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGRpdlRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
c25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBl
Y3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
c2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpLCAwKTsKKyAgICAgICAgICAgIGVsc2Ug
ICAKKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBkaXZUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBk
aXZUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBkaXZUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhkaXZUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGRpdlRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogZGl2VGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFt
ZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnLCBmYWxzZSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScsIGZhbHNlKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGRpdlRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
ZGl2VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0g
ZGl2VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGRp
dlRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBk
aXZUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2lu
dC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4i
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpLCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgZGl2VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGRpdlRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBkaXZUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhkaXZUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIGRpdlRhcmdldC5jbGllbnRXaWR0aCAtIDEwOworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyA1MDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnLCBmYWxz
ZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJywgZmFsc2UpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVn
aW4nLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScsIGZhbHNlKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJywgZmFsc2UpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnY29udGludWUnLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdj
b250aW51ZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnLCBmYWxzZSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSwgMCk7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlTG9jYXRpb25I
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2l0ZW1IMCcpOworICAgICAgICAgICAgICAgIHZh
ciBtZXNzYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgICAgICAg
ICAgbWVzc2FnZS5pbm5lckhUTUwgPSAiPHA+VGhpcyB0ZXN0IGlzIGJldHRlciBydW4gdW5kZXIg
RHVtcFJlbmRlclRyZWUuPGJyLz5UbyBtYW51YWxseSB0ZXN0IGl0LCBwbGFjZSB0aGUgbW91c2Ug
cG9pbnRlcjxici8+IgorICAgICAgICAgICAgICAgICAgICArICJpbnNpZGUgdGhlIHJlZCByZWdp
b24gYXQgdGhlIHRvcCBvZiB0aGUgcGFnZSw8YnIvPmFuZCB0aGVuIHVzZSB0aGUgbW91c2Ugd2hl
ZWwgb3IgYSB0d28tZmluZ2VyPGJyLz5zd2lwZSB0byBtYWtlIGEiCisgICAgICAgICAgICAgICAg
ICAgICsgInNtYWxsIHN3aXBlIGdlc3R1cmUgd2l0aDxici8+c29tZSBtb21lbnR1bS48YnIvPjxi
ci8+IgorICAgICAgICAgICAgICAgICAgICArICJUaGUgcmVnaW9uIHNob3VsZCBzY3JvbGwgdG8g
c2hvdyBhIGdyZWVuIHJlZ2lvbi48YnIvPjxici8+IgorICAgICAgICAgICAgICAgICAgICArICJO
ZXh0LCBwZXJmb3JtIGEgc21hbGwgc2Nyb2xsIGdlc3R1cmUgdGhhdCBkb2VzPGJyLz5ub3QgaW52
b2x2ZSBtb21lbnR1bS4gWW91IHNob3VsZCBiZWdpbiB0bzxici8+c2VlIG9uZSBvZiB0aGUgY29s
b3JzICIKKyAgICAgICAgICAgICAgICAgICAgKyAidG8gdGhlIHNpZGUgb2YgdGhlIGN1cnJlbnQ8
YnIvPmdyZWVuIGJveC4gV2hlbiB5b3UgcmVsZWFzZSB0aGUgd2hlZWwsIHRoZTxici8+cmVnaW9u
IHNob3VsZCBzY3JvbGwgYmFjayB0byBhIHNpbmdsZSBjb2xvci4iOworICAgICAgICAgICAgICAg
IG1lc3NhZ2VMb2NhdGlvbkguYXBwZW5kQ2hpbGQobWVzc2FnZSk7CisKKyAgICAgICAgICAgICAg
ICB2YXIgbWVzc2FnZUxvY2F0aW9uViA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpdGVtVjAn
KTsKKyAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgICAgICAgICAgICAgIG1lc3NhZ2UuaW5uZXJIVE1MID0gIjxwPllvdSBzaG91
bGQgYWxzbyBiZSBhYmxlIHRvIHJlcGVhdCB0aGVzZSB0ZXN0cyBzdGVwcyBmb3IgdGhpcyB2ZXJ0
aWNhbCByZWdpb24uPGJyLz4iCisgICAgICAgICAgICAgICAgbWVzc2FnZUxvY2F0aW9uVi5hcHBl
bmRDaGlsZChtZXNzYWdlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAg
ICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweCI+CisgICAgICAg
ICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gb3ZlcmZsb3cgcmVnaW9ucy48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Imhv
cml6b250YWxHYWxsZXJ5IiBpZD0iaG9yaXpvbnRhbFRhcmdldCI+CisgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnlEcmF3ZXIiPgorICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGlkPSJpdGVtSDAiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAg
ICAgICAgIDxkaXYgaWQ9Iml0ZW1IMSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAg
ICAgICAgICAgICAgPGRpdiBpZD0iaXRlbUgyIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtSDMiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+
CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1INCIgY2xhc3M9ImNvbG9yQm94Ij48
L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbUg1IiBjbGFzcz0iY29sb3JC
b3giPjwvZGl2PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+Cisg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIGlkPSJ2ZXJ0aWNhbFRhcmdl
dCI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVydGljYWxHYWxsZXJ5RHJhd2VyIj4K
KyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVYwIiBjbGFzcz0iY29sb3JCb3giPjwv
ZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjEiIGNsYXNzPSJjb2xvckJv
eCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WMiIgY2xhc3M9ImNv
bG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVYzIiBjbGFz
cz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjQi
IGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0
ZW1WNSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAg
ICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cisg
ICAgICAgIDwvZGl2PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0
b3J5LW92ZXJmbG93Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5k
YXRvcnktb3ZlcmZsb3cuaHRtbAkocmV2aXNpb24gMTgzODQzKQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1tYW5kYXRvcnktb3ZlcmZsb3cuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDggKzEw
NSwxMCBAQAogICAgICAgICAgICAgICAgIGR5ID0gLTE7CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSBkaXZUYXJnZXQub2Zmc2V0TGVmdCArIDIwOwotICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IGRpdlRhcmdldC5vZmZzZXRUb3AgKyAyMDsKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhkaXZU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGRpdlRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogZGl2VGFyZ2V0LmNsaWVudEhlaWdodDsKICAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8g
TWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQogICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnLCBmYWxzZSk7CiAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
JywgZmFsc2UpOwpAQCAtMTUyLDggKzE1NCw4IEBACiAKICAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhkaXZUYXJnZXQpOwogCi0gICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIGRpdlRhcmdldC5jbGll
bnRXaWR0aCAtIDEwOwotICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyA1MDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogZGl2VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBkaXZUYXJnZXQuY2xpZW50SGVpZ2h0OwogICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwogICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnLCBmYWxzZSk7CiAgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJywgZmFsc2UpOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRv
cnktcGFkZGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1tYW5kYXRvcnktcGFkZGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1wYWRkaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE2IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIG92ZXJmbG93IHJlZ2lvbnMuCisgUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXBhZGRpbmcuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1wYWRkaW5nLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1wYWRkaW5nLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMzkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0
OiAyMHB4OworICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7CisgICAgICAgICAg
ICAgICAgcGFkZGluZy10b3A6IDE1cHg7CisgICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206
IDlweDsKKyAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAycHg7CisgICAgICAgICAgICAg
ICAgLXdlYmtpdC1zY3JvbGwtc25hcC1wb2ludHMteDogcmVwZWF0KDEwMCUpOworICAgICAgICAg
ICAgICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtdHlwZTogbWFuZGF0b3J5OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5RHJhd2VyIHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMTgwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAg
ICAgcGFkZGluZy1sZWZ0OiAyMHB4OworICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDEw
cHg7CisgICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IDE1cHg7CisgICAgICAgICAgICAgICAg
cGFkZGluZy1ib3R0b206IDlweDsKKyAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAycHg7Cisg
ICAgICAgICAgICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC1wb2ludHMteTogcmVwZWF0KDEwMCUp
OworICAgICAgICAgICAgICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtdHlwZTogbWFuZGF0b3J5Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeURyYXdlciB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMTgwMHB4
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLmNvbG9yQm94IHsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBmbG9hdDogbGVmdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICNpdGVtSDAs
ICNpdGVtVjAgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0KKyAgICAgICAgICAgICNpdGVtSDEs
ICNpdGVtVjEgeyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgfQorICAgICAgICAgICAgI2l0ZW1I
MiwgI2l0ZW1WMiB7IGJhY2tncm91bmQtY29sb3I6IGJsdWU7IH0KKyAgICAgICAgICAgICNpdGVt
SDMsICNpdGVtVjMgeyBiYWNrZ3JvdW5kLWNvbG9yOiBhcXVhOyB9CisgICAgICAgICAgICAjaXRl
bUg0LCAjaXRlbVY0IHsgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyB9CisgICAgICAgICAgICAj
aXRlbUg1LCAjaXRlbVY1IHsgYmFja2dyb3VuZC1jb2xvcjogZnVjaHNpYTsgfQorICAgICAgICA8
L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgdmFyIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9Owor
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVs
ZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0
aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9w
OworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBmaW5pc2hUZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsgICAgICAgICAgICAKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGRpdlRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
ZGl2VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBkaXZUYXJn
ZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFw
cGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9y
ICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsK
KworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgZGl2VGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gZGl2VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gZGl2VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZGl2VGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBkaXZUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGRpdlRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBh
cmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
JywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScsIGZhbHNlKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnLCBmYWxzZSk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBkaXZU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAg
ICAgIHZhciBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRpdlRhcmdldCwgbnVsbCk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGRpdlRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGRpdlRhcmdldC5jbGllbnRIZWln
aHQgLSBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLXRvcCcpLnJlcGxhY2UoInB4Iiwg
IiIpIC0gc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy1ib3R0b20nKS5yZXBsYWNlKCJw
eCIsICIiKTsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGRpdlRhcmdldC5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBkaXZUYXJnZXQuY2xpZW50
V2lkdGggLSBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLXJpZ2h0JykucmVwbGFjZSgi
cHgiLCAiIikgLSBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLWxlZnQnKS5yZXBsYWNl
KCJweCIsICIiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9y
IHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCksIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBkaXZUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gZGl2VGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGRpdlRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGRpdlRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgZGl2VGFyZ2V0LmNsaWVudFdpZHRoIC0gMTA7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDUwOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJywg
ZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScsIGZhbHNlKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicsIGZhbHNl
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJywgZmFsc2UpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnY29udGludWUnLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdjb250aW51ZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJywg
ZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcsIGZhbHNlKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpLCAwKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VMb2NhdGlvbkggPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnaXRlbUgwJyk7CisgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2Ug
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgICAgICAgICBtZXNzYWdl
LmlubmVySFRNTCA9ICI8cD5UaGlzIHRlc3QgaXMgYmV0dGVyIHJ1biB1bmRlciBEdW1wUmVuZGVy
VHJlZS48YnIvPlRvIG1hbnVhbGx5IHRlc3QgaXQsIHBsYWNlIHRoZSBtb3VzZSBwb2ludGVyPGJy
Lz4iCisgICAgICAgICAgICAgICAgICAgICsgImluc2lkZSB0aGUgcmVkIHJlZ2lvbiBhdCB0aGUg
dG9wIG9mIHRoZSBwYWdlLDxici8+YW5kIHRoZW4gdXNlIHRoZSBtb3VzZSB3aGVlbCBvciBhIHR3
by1maW5nZXI8YnIvPnN3aXBlIHRvIG1ha2UgYSIKKyAgICAgICAgICAgICAgICAgICAgKyAic21h
bGwgc3dpcGUgZ2VzdHVyZSB3aXRoPGJyLz5zb21lIG1vbWVudHVtLjxici8+PGJyLz4iCisgICAg
ICAgICAgICAgICAgICAgICsgIlRoZSByZWdpb24gc2hvdWxkIHNjcm9sbCB0byBzaG93IGEgZ3Jl
ZW4gcmVnaW9uLjxici8+PGJyLz4iCisgICAgICAgICAgICAgICAgICAgICsgIk5leHQsIHBlcmZv
cm0gYSBzbWFsbCBzY3JvbGwgZ2VzdHVyZSB0aGF0IGRvZXM8YnIvPm5vdCBpbnZvbHZlIG1vbWVu
dHVtLiBZb3Ugc2hvdWxkIGJlZ2luIHRvPGJyLz5zZWUgb25lIG9mIHRoZSBjb2xvcnMgIgorICAg
ICAgICAgICAgICAgICAgICArICJ0byB0aGUgc2lkZSBvZiB0aGUgY3VycmVudDxici8+Z3JlZW4g
Ym94LiBXaGVuIHlvdSByZWxlYXNlIHRoZSB3aGVlbCwgdGhlPGJyLz5yZWdpb24gc2hvdWxkIHNj
cm9sbCBiYWNrIHRvIGEgc2luZ2xlIGNvbG9yLiI7CisgICAgICAgICAgICAgICAgbWVzc2FnZUxv
Y2F0aW9uSC5hcHBlbmRDaGlsZChtZXNzYWdlKTsKKworICAgICAgICAgICAgICAgIHZhciBtZXNz
YWdlTG9jYXRpb25WID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2l0ZW1WMCcpOworICAgICAg
ICAgICAgICAgIHZhciBtZXNzYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cisg
ICAgICAgICAgICAgICAgbWVzc2FnZS5pbm5lckhUTUwgPSAiPHA+WW91IHNob3VsZCBhbHNvIGJl
IGFibGUgdG8gcmVwZWF0IHRoZXNlIHRlc3RzIHN0ZXBzIGZvciB0aGlzIHZlcnRpY2FsIHJlZ2lv
bi48YnIvPiIKKyAgICAgICAgICAgICAgICBtZXNzYWdlTG9jYXRpb25WLmFwcGVuZENoaWxkKG1l
c3NhZ2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5
bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4Ij4KKyAgICAgICAgICAgIDxkaXY+
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBvdmVy
ZmxvdyByZWdpb25zLjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbEdh
bGxlcnkiIGlkPSJob3Jpem9udGFsVGFyZ2V0Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJob3Jpem9udGFsR2FsbGVyeURyYXdlciI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9
Iml0ZW1IMCIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRp
diBpZD0iaXRlbUgxIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGlkPSJpdGVtSDIiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAg
ICAgICAgIDxkaXYgaWQ9Iml0ZW1IMyIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAg
ICAgICAgICAgICAgPGRpdiBpZD0iaXRlbUg0IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtSDUiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+
CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAg
IDxkaXYgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgaWQ9InZlcnRpY2FsVGFyZ2V0Ij4KKyAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnlEcmF3ZXIiPgorICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjAiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAg
ICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WMSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4K
KyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVYyIiBjbGFzcz0iY29sb3JCb3giPjwv
ZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjMiIGNsYXNzPSJjb2xvckJv
eCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WNCIgY2xhc3M9ImNv
bG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVY1IiBjbGFz
cz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAg
PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktcm90YXRl
ZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRv
cnktcm90YXRlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLW1hbmRhdG9yeS1yb3RhdGVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE2IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIG92ZXJmbG93IHJlZ2lvbnMuCisgUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXJvdGF0ZWQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1yb3RhdGVkLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1yb3RhdGVkLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwyMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhl
YWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgYmxh
Y2s7CisgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsKKyAgICAgICAgICAgICAg
ICAtd2Via2l0LXNjcm9sbC1zbmFwLXBvaW50cy14OiByZXBlYXQoMTAwJSk7CisgICAgICAgICAg
ICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC10eXBlOiBtYW5kYXRvcnk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnlEcmF3ZXIgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAxODAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAg
ICBib3JkZXI6IDJweCBzb2xpZCBibGFjazsKKyAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAx
NXB4OworICAgICAgICAgICAgICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtcG9pbnRzLXk6IHJlcGVh
dCgxMDAlKTsKKyAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFwLXR5cGU6IG1hbmRh
dG9yeTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnlEcmF3ZXIg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDE4MDBweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC5jb2xvckJveCB7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAj
aXRlbUgwLCAjaXRlbVYwIHsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB9CisgICAgICAgICAgICAj
aXRlbUgxLCAjaXRlbVYxIHsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IH0KKyAgICAgICAgICAg
ICNpdGVtSDIsICNpdGVtVjIgeyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyB9CisgICAgICAgICAg
ICAjaXRlbUgzLCAjaXRlbVYzIHsgYmFja2dyb3VuZC1jb2xvcjogYXF1YTsgfQorICAgICAgICAg
ICAgI2l0ZW1INCwgI2l0ZW1WNCB7IGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsgfQorICAgICAg
ICAgICAgI2l0ZW1INSwgI2l0ZW1WNSB7IGJhY2tncm91bmQtY29sb3I6IGZ1Y2hzaWE7IH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
IHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24g
PSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdo
aWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7ICAgICAgICAgICAg
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBkaXZUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGRpdlRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
ZGl2VGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JyksIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlz
aFRlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGRp
dlRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGRpdlRhcmdldC5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGRpdlRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGRpdlRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
ZGl2VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBkaXZUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1
cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnLCBmYWxz
ZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJywgZmFsc2UpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgZGl2VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBkaXZUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBkaXZUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gZGl2VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGRpdlRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxl
ZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBF
eHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCksIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBk
aXZUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gZGl2VGFyZ2V0LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGRpdlRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGRpdlRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogZGl2VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBkaXZUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScsIGZh
bHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnLCBmYWxzZSk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdi
ZWdpbicsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJywgZmFsc2Up
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnLCBmYWxzZSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdjb250aW51ZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2NvbnRpbnVlJywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcsIGZhbHNlKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpLCAwKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VMb2NhdGlv
bkggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXRlbUgwJyk7CisgICAgICAgICAgICAgICAg
dmFyIG1lc3NhZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgICAg
ICAgICBtZXNzYWdlLmlubmVySFRNTCA9ICI8cD5UaGlzIHRlc3QgaXMgYmV0dGVyIHJ1biB1bmRl
ciBEdW1wUmVuZGVyVHJlZS48YnIvPlRvIG1hbnVhbGx5IHRlc3QgaXQsIHBsYWNlIHRoZSBtb3Vz
ZSBwb2ludGVyPGJyLz4iCisgICAgICAgICAgICAgICAgICAgICsgImluc2lkZSB0aGUgcmVkIHJl
Z2lvbiBhdCB0aGUgdG9wIG9mIHRoZSBwYWdlLDxici8+YW5kIHRoZW4gdXNlIHRoZSBtb3VzZSB3
aGVlbCBvciBhIHR3by1maW5nZXI8YnIvPnN3aXBlIHRvIG1ha2UgYSIKKyAgICAgICAgICAgICAg
ICAgICAgKyAic21hbGwgc3dpcGUgZ2VzdHVyZSB3aXRoPGJyLz5zb21lIG1vbWVudHVtLjxici8+
PGJyLz4iCisgICAgICAgICAgICAgICAgICAgICsgIlRoZSByZWdpb24gc2hvdWxkIHNjcm9sbCB0
byBzaG93IGEgZ3JlZW4gcmVnaW9uLjxici8+PGJyLz4iCisgICAgICAgICAgICAgICAgICAgICsg
Ik5leHQsIHBlcmZvcm0gYSBzbWFsbCBzY3JvbGwgZ2VzdHVyZSB0aGF0IGRvZXM8YnIvPm5vdCBp
bnZvbHZlIG1vbWVudHVtLiBZb3Ugc2hvdWxkIGJlZ2luIHRvPGJyLz5zZWUgb25lIG9mIHRoZSBj
b2xvcnMgIgorICAgICAgICAgICAgICAgICAgICArICJ0byB0aGUgc2lkZSBvZiB0aGUgY3VycmVu
dDxici8+Z3JlZW4gYm94LiBXaGVuIHlvdSByZWxlYXNlIHRoZSB3aGVlbCwgdGhlPGJyLz5yZWdp
b24gc2hvdWxkIHNjcm9sbCBiYWNrIHRvIGEgc2luZ2xlIGNvbG9yLiI7CisgICAgICAgICAgICAg
ICAgbWVzc2FnZUxvY2F0aW9uSC5hcHBlbmRDaGlsZChtZXNzYWdlKTsKKworICAgICAgICAgICAg
ICAgIHZhciBtZXNzYWdlTG9jYXRpb25WID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2l0ZW1W
MCcpOworICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CisgICAgICAgICAgICAgICAgbWVzc2FnZS5pbm5lckhUTUwgPSAiPHA+WW91IHNo
b3VsZCBhbHNvIGJlIGFibGUgdG8gcmVwZWF0IHRoZXNlIHRlc3RzIHN0ZXBzIGZvciB0aGlzIHZl
cnRpY2FsIHJlZ2lvbi48YnIvPiIKKyAgICAgICAgICAgICAgICBtZXNzYWdlTG9jYXRpb25WLmFw
cGVuZENoaWxkKG1lc3NhZ2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAg
ICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4Ij4KKyAgICAg
ICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBvdmVyZmxvdyByZWdpb25zLjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBzdHlsZT0iLXdlYmtpdC10
cmFuc2Zvcm06IHJvdGF0ZSgyMGRlZykiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imhv
cml6b250YWxHYWxsZXJ5RHJhd2VyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRl
bUgwIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlk
PSJpdGVtSDEiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxk
aXYgaWQ9Iml0ZW1IMiIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAg
ICAgPGRpdiBpZD0iaXRlbUgzIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGlkPSJpdGVtSDQiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAg
ICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1INSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAg
ICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPGRp
diBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBpZD0idmVydGljYWxUYXJnZXQiIHN0eWxlPSItd2Vi
a2l0LXRyYW5zZm9ybTogcm90YXRlKC0yMGRlZykiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9InZlcnRpY2FsR2FsbGVyeURyYXdlciI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9
Iml0ZW1WMCIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRp
diBpZD0iaXRlbVYxIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGlkPSJpdGVtVjIiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAg
ICAgICAgIDxkaXYgaWQ9Iml0ZW1WMyIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAg
ICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVY0IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjUiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+
CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252531</attachid>
            <date>2015-05-06 15:38:40 -0700</date>
            <delta_ts>2015-05-06 17:53:36 -0700</delta_ts>
            <desc>Patch v3 (Removed debugging code I accidentally uploaded)</desc>
            <filename>bug-144647-20150506153723.patch</filename>
            <type>text/plain</type>
            <size>66225</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4Mzg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE1LTA1LTA2ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFNjcm9sbC1zbmFwIHBvaW50
cyBkbyBub3QgaGFuZGxlIG1hcmdpbnMgYW5kIHBhZGRpbmcgcHJvcGVydGx5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2NDcKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzIwODI5NDczPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZSBjYWxjdWxhdGlvbiBvZiBzY3JvbGwgc25hcCBwb2ludHMgd2Fz
IGluY29ycmVjdCBiZWNhdXNlIGl0IGRpZCBub3QgYWNjb3VudCBmb3IgbWFyZ2lucyBvciBwYWRk
aW5nLgorICAgICAgICBUaGlzIHdhcyBmaXhlZCBieSB1c2luZyB0aGUgInBhZGRpbmdCb3hSZWN0
IiB0byByZXByZXNlbnQgdGhlIG92ZXJhbGwgc2l6ZSBvZiB0aGUgdmlldyBhcmVhLCBhbmQKKyAg
ICAgICAgc3VidHJhY3RpbmcgdGhlIHJlbGV2YW50IHBhZGRpbmcgd2hlbiBjb21wdXRpbmcgdGhl
IHNpemUgb2YgdGhlIHNjcm9sbCBzbmFwIG9mZnNldHMuCisKKyAgICAgICAgRXh0ZW5kIHRlc3Rp
bmcgaW50ZXJuYWxzIHdpdGggYWNjZXNzb3IgbWV0aG9kcyB0byByZXRyaWV2ZSBzdHJpbmcgcmVw
cmVzZW50YXRpb25zIG9mIHRoZSBzY3JvbGwgc25hcAorICAgICAgICBvZmZzZXRzIGFuZCBzY3Jv
bGwgc25hcCBjb29yZGluYXRlcyBjb21wdXRlZCBkdXJpbmcgbGF5b3V0LiBUaGVzZSB2YWx1ZXMg
YXJlIHVzZWQgaW4gdGhlIG5ldworICAgICAgICAnY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1vZmZzZXRzLWFuZC1jb29yZGluYXRlcy5odG1sJyB0ZXN0LgorCisgICAgICAgIE5ldyB0ZXN0
czoKKyAgICAgICAgKiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW9mZnNldHMtYW5kLWNv
b3JkaW5hdGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LWJvcmRl
cnMuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktcGFkZGluZy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1yb3RhdGVkLmh0bWw6IEFkZGVk
LgorCisgICAgICAgICogY3NzL0xlbmd0aEZ1bmN0aW9ucy5oOiBFeHBvc2UgdGhlICd2YWx1ZUZv
ckxlbmd0aCcgbWV0aG9kIHNvIHdlIGNhbiB1c2UgaXQgaW4gV2ViQ29yZVRlc3RTdXBwb3J0Lgor
ICAgICAgICAqIGRvbS9Ob2RlLmg6IEV4cG9zZSB0aGUgJ3JlbmRlckJveCcgbWV0aG9kIHNvIHdl
IGNhbiB1c2UgaXQgaW4gV2ViQ29yZVRlc3RTdXBwb3J0LgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRD
aGlsZFNuYXBPZmZzZXRzKTogVXNlICdjb250ZW50Qm94UmVjdCcgZm9yIG92ZXJhbGwgc2l6ZSwg
c28gdGhhdCB3ZSBkb24ndCB1c2UgcGFkZGluZworICAgICAgICBhcyBwYXJ0IG9mIG91ciBvZmZz
ZXQgY2FsY3VsYXRpb25zLgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlU25hcE9mZnNldHNGb3JT
Y3JvbGxhYmxlQXJlYSk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDog
RXhwb3NlICdjYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEnIGZvciB1c2UgaW4gV2Vi
Q29yZVRlc3RTdXBwb3J0LgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
OiBFeHBvc2UgJ3Njcm9sbFNuYXBDb29yZGluYXRlcycgZm9yIHVzZSBpbiBXZWJDb3JlVGVzdFN1
cHBvcnQuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJuYWxzOjpzY3JvbGxTbmFwQ29vcmRpbmF0ZXMpOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmFwcGVuZE9mZnNldHMpOiBIZWxwZXIgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OnNjcm9sbFNuYXBPZmZzZXRzKTogQWRkZWQuCisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTUt
MDUtMDYgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIEF2b2lkIGNv
cGllcyBpbiBzY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKCkgYW5kIGlubGluZSBpdC4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmgJKHJldmlzaW9uIDE4Mzg0MykKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNyArMzUsNyBAQCBzdHJ1Y3QgTGVuZ3RoU2l6ZTsKIGludCBtaW5pbXVtSW50VmFsdWVGb3JM
ZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIGJvb2wgcm91bmRQ
ZXJjZW50YWdlcyA9IGZhbHNlKTsKIGludCBpbnRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgm
LCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSk7CiBMYXlvdXRVbml0IG1pbmltdW1WYWx1ZUZvckxl
bmd0aChjb25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgYm9vbCByb3VuZFBl
cmNlbnRhZ2VzID0gZmFsc2UpOwotTGF5b3V0VW5pdCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5n
dGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSk7CitXRUJDT1JFX0VYUE9SVCBMYXlvdXRVbml0
IHZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIExheW91dFVuaXQgbWF4aW11bVZhbHVlKTsK
IGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhp
bXVtVmFsdWUpOwogV0VCQ09SRV9FWFBPUlQgZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25z
dCBMZW5ndGgmLCBmbG9hdCBtYXhpbXVtVmFsdWUpOwogRmxvYXRTaXplIGZsb2F0U2l6ZUZvckxl
bmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCShyZXZpc2lvbiAxODM4NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NDQsNyArNDQ0LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8v
IFVzZSB0aGVzZSB0d28gbWV0aG9kcyB3aXRoIGNhdXRpb24uCi0gICAgUmVuZGVyQm94KiByZW5k
ZXJCb3goKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZW5kZXJCb3gqIHJlbmRlckJveCgp
IGNvbnN0OwogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJCb3hNb2RlbE9iamVjdCgp
IGNvbnN0OwogICAgIAogICAgIC8vIFdyYXBwZXIgZm9yIG5vZGVzIHRoYXQgZG9uJ3QgaGF2ZSBh
IHJlbmRlcmVyLCBidXQgc3RpbGwgY2FjaGUgdGhlIHN0eWxlIChsaWtlIEhUTUxPcHRpb25FbGVt
ZW50KS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFw
T2Zmc2V0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
QXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcAkocmV2aXNpb24gMTgzODQzKQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDMsMTIgKzQzLDE3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZENoaWxkU25hcE9mZnNl
dHMoSFRNTEUKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiB0cmF2ZXJzaW5nIGFsbCBjaGlsZHJl
biwgcmVnaXN0ZXIgY2hpbGRyZW4gd2l0aCBzbmFwIGNvb3JkaW5hdGVzIGJlZm9yZSBhcHBlbmRp
bmcgdG8gc25hcE9mZnNldFN1YnNlcXVlbmNlLgogICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGls
ZHJlbk9mVHlwZTxFbGVtZW50PihwYXJlbnQpKSB7CiAgICAgICAgIGlmIChSZW5kZXJCb3gqIGJv
eCA9IGNoaWxkLnJlbmRlckJveCgpKSB7Ci0gICAgICAgICAgICBMYXlvdXRVbml0IHZpZXdXaWR0
aCA9IGJveC0+d2lkdGgoKTsKLSAgICAgICAgICAgIExheW91dFVuaXQgdmlld0hlaWdodCA9IGJv
eC0+aGVpZ2h0KCk7CisgICAgICAgICAgICBjb25zdCBhdXRvJiBzY3JvbGxTbmFwQ29vcmRpbmF0
ZXMgPSBib3gtPnN0eWxlKCkuc2Nyb2xsU25hcENvb3JkaW5hdGVzKCk7CisgICAgICAgICAgICBp
ZiAoc2Nyb2xsU25hcENvb3JkaW5hdGVzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICAgICAgTGF5b3V0UmVjdCB2aWV3U2l6ZSA9IGJveC0+Y29udGVudEJv
eFJlY3QoKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgdmlld1dpZHRoID0gdmlld1NpemUud2lk
dGgoKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgdmlld0hlaWdodCA9IHZpZXdTaXplLmhlaWdo
dCgpOwogICAgICAgICAgICAgRmxvYXRQb2ludCBwb3NpdGlvbiA9IGJveC0+bG9jYWxUb0NvbnRh
aW5lclBvaW50KEZsb2F0UG9pbnQoKSwgcGFyZW50LnJlbmRlckJveCgpKTsKICAgICAgICAgICAg
IExheW91dFVuaXQgbGVmdCA9IHBvc2l0aW9uLngoKTsKICAgICAgICAgICAgIExheW91dFVuaXQg
dG9wID0gcG9zaXRpb24ueSgpOwotICAgICAgICAgICAgZm9yIChhdXRvJiBjb29yZGluYXRlIDog
Ym94LT5zdHlsZSgpLnNjcm9sbFNuYXBDb29yZGluYXRlcygpKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8mIGNvb3JkaW5hdGUgOiBzY3JvbGxTbmFwQ29vcmRpbmF0ZXMpIHsKICAgICAgICAgICAg
ICAgICBMYXlvdXRVbml0IGxhc3RQb3RlbnRpYWxTbmFwUG9zaXRpb25YID0gbGVmdCArIHZhbHVl
Rm9yTGVuZ3RoKGNvb3JkaW5hdGUud2lkdGgoKSwgdmlld1dpZHRoKTsKICAgICAgICAgICAgICAg
ICBpZiAoc2hvdWxkQWRkSG9yaXpvbnRhbENoaWxkT2Zmc2V0cyAmJiBsYXN0UG90ZW50aWFsU25h
cFBvc2l0aW9uWCA+IDApCiAgICAgICAgICAgICAgICAgICAgIGhvcml6b250YWxTbmFwT2Zmc2V0
U3Vic2VxdWVuY2UuYXBwZW5kKGxhc3RQb3RlbnRpYWxTbmFwUG9zaXRpb25YKTsKQEAgLTEyNiw4
ICsxMzEsOSBAQCB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFyZWEoCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBMYXlvdXRVbml0IHZpZXdXaWR0aCA9IHNjcm9sbGlu
Z0VsZW1lbnRCb3gud2lkdGgoKTsKLSAgICBMYXlvdXRVbml0IHZpZXdIZWlnaHQgPSBzY3JvbGxp
bmdFbGVtZW50Qm94LmhlaWdodCgpOworICAgIExheW91dFJlY3Qgdmlld1NpemUgPSBzY3JvbGxp
bmdFbGVtZW50Qm94LmNvbnRlbnRCb3hSZWN0KCk7CisgICAgTGF5b3V0VW5pdCB2aWV3V2lkdGgg
PSB2aWV3U2l6ZS53aWR0aCgpOworICAgIExheW91dFVuaXQgdmlld0hlaWdodCA9IHZpZXdTaXpl
LmhlaWdodCgpOwogICAgIExheW91dFVuaXQgc2Nyb2xsV2lkdGggPSBzY3JvbGxpbmdFbGVtZW50
Qm94LnNjcm9sbFdpZHRoKCk7CiAgICAgTGF5b3V0VW5pdCBzY3JvbGxIZWlnaHQgPSBzY3JvbGxp
bmdFbGVtZW50Qm94LnNjcm9sbEhlaWdodCgpOwogICAgIGJvb2wgY2FuQ29tcHV0ZUhvcml6b250
YWxPZmZzZXRzID0gc2Nyb2xsV2lkdGggPiAwICYmIHZpZXdXaWR0aCA+IDAgJiYgdmlld1dpZHRo
IDwgc2Nyb2xsV2lkdGg7CkBAIC0xNDUsNyArMTUxLDcgQEAgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0
c0ZvclNjcm9sbGFibGVBcmVhKAogICAgIFZlY3RvcjxMYXlvdXRVbml0PiB2ZXJ0aWNhbFNuYXBP
ZmZzZXRTdWJzZXF1ZW5jZTsKIAogICAgIGJvb2wgc2Nyb2xsU25hcFBvaW50c1hVc2VzRWxlbWVu
dHMgPSBzdHlsZVVzZXNFbGVtZW50cyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHNjcm9s
bGluZ0VsZW1lbnRTdHlsZSk7Ci0gICAgYm9vbCBzY3JvbGxTbmFwUG9pbnRzWVVzZXNFbGVtZW50
cyA9IHN0eWxlVXNlc0VsZW1lbnRzKFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwgLCBzY3JvbGxp
bmdFbGVtZW50U3R5bGUpOworICAgIGJvb2wgc2Nyb2xsU25hcFBvaW50c1lVc2VzRWxlbWVudHMg
PSBzdHlsZVVzZXNFbGVtZW50cyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBzY3JvbGxpbmdF
bGVtZW50U3R5bGUpOwogCiAgICAgaWYgKHNjcm9sbFNuYXBQb2ludHNYVXNlc0VsZW1lbnRzIHx8
IHNjcm9sbFNuYXBQb2ludHNZVXNlc0VsZW1lbnRzKSB7CiAgICAgICAgIGJvb2wgc2hvdWxkQWRk
SG9yaXpvbnRhbENoaWxkT2Zmc2V0cyA9IHNjcm9sbFNuYXBQb2ludHNYVXNlc0VsZW1lbnRzICYm
IGNhbkNvbXB1dGVIb3Jpem9udGFsT2Zmc2V0czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmgJKHJldmlzaW9uIDE4Mzg0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaAkod29ya2luZyBjb3B5KQpAQCAtNDYyLDcgKzQ2Miw3IEBAIHB1YmxpYzoK
ICAgICBpbnQgc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCku
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQoKSA6
IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBzY3JvbGwoU2Ny
b2xsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgbXVsdGlwbGllciA9IDEsIEVs
ZW1lbnQqKiBzdG9wRWxlbWVudCA9IG51bGxwdHIsIFJlbmRlckJveCogc3RhcnRCb3ggPSBudWxs
cHRyLCBjb25zdCBJbnRQb2ludCYgd2hlZWxFdmVudEFic29sdXRlUG9pbnQgPSBJbnRQb2ludCgp
KTsKICAgICB2aXJ0dWFsIGJvb2wgbG9naWNhbFNjcm9sbChTY3JvbGxMb2dpY2FsRGlyZWN0aW9u
LCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgbXVsdGlwbGllciA9IDEsIEVsZW1lbnQqKiBzdG9w
RWxlbWVudCA9IG51bGxwdHIpOwotICAgIGJvb2wgY2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFi
bGVBcmVhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5CZVNjcm9sbGVkQW5k
SGFzU2Nyb2xsYWJsZUFyZWEoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVQcm9ncmFt
YXRpY2FsbHlTY3JvbGxlZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBhdXRvc2Nyb2xsKGNv
bnN0IEludFBvaW50Jik7CiAgICAgYm9vbCBjYW5BdXRvc2Nyb2xsKCkgY29uc3Q7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24g
MTgzODQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExMTIsNyArMTExMiw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBT
Y3JvbGxTbmFwUG9pbnRzKiBzY3JvbGxTbmFwUG9pbnRzWCgpIGNvbnN0OwogICAgIGNvbnN0IFNj
cm9sbFNuYXBQb2ludHMqIHNjcm9sbFNuYXBQb2ludHNZKCkgY29uc3Q7CiAgICAgY29uc3QgTGVu
Z3RoU2l6ZSYgc2Nyb2xsU25hcERlc3RpbmF0aW9uKCkgY29uc3Q7Ci0gICAgY29uc3QgVmVjdG9y
PExlbmd0aFNpemU+JiBzY3JvbGxTbmFwQ29vcmRpbmF0ZXMoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBjb25zdCBWZWN0b3I8TGVuZ3RoU2l6ZT4mIHNjcm9sbFNuYXBDb29yZGluYXRlcygp
IGNvbnN0OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpJbmRleDogU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMTgzODQzKQorKysgU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzc3LDQgKzI3
NzcsOTkgQEAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgSW50ZXJuYWxzOjptbwogfQogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQorU3RyaW5nIEludGVybmFsczo6c2Ny
b2xsU25hcENvb3JkaW5hdGVzKEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIGlmICghZWxlbWVudCkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsK
KyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKworICAgIGlmICghZWxlbWVudC0+cmVu
ZGVyQm94KCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFJlbmRlckJveCYgYm94
ID0gKmVsZW1lbnQtPnJlbmRlckJveCgpOworICAgIGNvbnN0IGF1dG8mIHNjcm9sbFNuYXBDb29y
ZGluYXRlcyA9IGJveC5zdHlsZSgpLnNjcm9sbFNuYXBDb29yZGluYXRlcygpOworICAgIGlmIChz
Y3JvbGxTbmFwQ29vcmRpbmF0ZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gIm5vbmUiOwor
CisgICAgTGF5b3V0UmVjdCB2aWV3U2l6ZSA9IGJveC5jb250ZW50Qm94UmVjdCgpOworICAgIExh
eW91dFVuaXQgdmlld1dpZHRoID0gdmlld1NpemUud2lkdGgoKTsKKyAgICBMYXlvdXRVbml0IHZp
ZXdIZWlnaHQgPSB2aWV3U2l6ZS5oZWlnaHQoKTsKKyAgICAKKyAgICBTdHJpbmdCdWlsZGVyIHJl
c3VsdDsKKyAgICByZXN1bHQuYXBwZW5kKCJ7ICIpOworICAgIGZvciAoYXV0byYgY29vcmRpbmF0
ZSA6IHNjcm9sbFNuYXBDb29yZGluYXRlcykgeworICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgp
ID4gMikKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwgIik7CisKKyAgICAgICAgTGF5b3V0
VW5pdCB4ID0gdmFsdWVGb3JMZW5ndGgoY29vcmRpbmF0ZS53aWR0aCgpLCB2aWV3V2lkdGgpOwor
ICAgICAgICBMYXlvdXRVbml0IHkgPSB2YWx1ZUZvckxlbmd0aChjb29yZGluYXRlLmhlaWdodCgp
LCB2aWV3SGVpZ2h0KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiKCIpOworICAgICAgICByZXN1
bHQuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHgudG9VbnNpZ25lZCgpKSk7CisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIiwgIik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nOjpudW1iZXIoeS50
b1Vuc2lnbmVkKCkpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiKSIpOworICAgIH0KKyAgICBy
ZXN1bHQuYXBwZW5kKCIgfSIpOworCisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworfQor
CitzdGF0aWMgdm9pZCBhcHBlbmRPZmZzZXRzKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0
IFZlY3RvcjxMYXlvdXRVbml0PiYgc25hcE9mZnNldHMpCit7CisgICAgYm9vbCBqdXN0U3RhcnRp
bmcgPSB0cnVlOworCisgICAgYnVpbGRlci5hcHBlbmQoInsgIik7CisgICAgZm9yIChhdXRvJiBj
b29yZGluYXRlIDogc25hcE9mZnNldHMpIHsKKyAgICAgICAgaWYgKCFqdXN0U3RhcnRpbmcpCisg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCAiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAganVzdFN0YXJ0aW5nID0gZmFsc2U7CisgICAgICAgIAorICAgICAgICBidWlsZGVyLmFwcGVu
ZChTdHJpbmc6Om51bWJlcihjb29yZGluYXRlLnRvVW5zaWduZWQoKSkpOworICAgIH0KKyAgICBi
dWlsZGVyLmFwcGVuZCgiIH0iKTsKK30KKyAgICAKK1N0cmluZyBJbnRlcm5hbHM6OnNjcm9sbFNu
YXBPZmZzZXRzKEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlm
ICghZWxlbWVudCkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworICAgIH0KKworICAgIGlmICghZWxlbWVudC0+cmVuZGVyQm94KCkp
CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFJlbmRlckJveCYgYm94ID0gKmVsZW1l
bnQtPnJlbmRlckJveCgpOworICAgIGlmICghYm94LmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxh
YmxlQXJlYSgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CisgICAgfQorCisgICAgaWYgKCFib3gubGF5ZXIoKSkKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworICAgIAorICAgIFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJl
YSA9ICpib3gubGF5ZXIoKTsKKyAgICAKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKworICAg
IGlmIChzY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU25hcE9mZnNldHMoKSkgeworICAgICAgICBy
ZXN1bHQuYXBwZW5kKCJob3Jpem9udGFsID0gIik7CisgICAgICAgIGFwcGVuZE9mZnNldHMocmVz
dWx0LCAqc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkpOworICAgIH0KKwor
ICAgIGlmIChzY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkpIHsKKyAgICAgICAg
aWYgKHJlc3VsdC5sZW5ndGgoKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwgIik7CisK
KyAgICAgICAgcmVzdWx0LmFwcGVuZCgidmVydGljYWwgPSAiKTsKKyAgICAgICAgYXBwZW5kT2Zm
c2V0cyhyZXN1bHQsICpzY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkpOworICAg
IH0KKworICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKK30KKyNlbmRpZgorCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHJldmlzaW9uIDE4Mzg0MykKKysrIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwMCw2ICs0
MDAsMTEgQEAgcHVibGljOgogICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIG1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKENTU19TQ1JPTExfU05B
UCkKKyAgICBTdHJpbmcgc2Nyb2xsU25hcENvb3JkaW5hdGVzKEVsZW1lbnQqLCBFeGNlcHRpb25D
b2RlJik7CisgICAgU3RyaW5nIHNjcm9sbFNuYXBPZmZzZXRzKEVsZW1lbnQqLCBFeGNlcHRpb25D
b2RlJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbHMoRG9jdW1l
bnQqKTsKICAgICBEb2N1bWVudCogY29udGV4dERvY3VtZW50KCkgY29uc3Q7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZpc2lvbiAxODM4NDMpCisrKyBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1OSw0ICsz
NTksOSBAQCBlbnVtIFJlc291cmNlTG9hZFByaW9yaXR5IHsKICAgICB2b2lkIHF1ZXVlTWljcm9U
YXNrKGxvbmcgdGVzdE51bWJlcik7CiAKICAgICBbQ29uZGl0aW9uYWw9Q09OVEVOVF9GSUxURVJJ
TkddIHJlYWRvbmx5IGF0dHJpYnV0ZSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzIG1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M7CisKKyNpZiBkZWZpbmVkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVAp
ICYmIEVOQUJMRV9DU1NfU0NST0xMX1NOQVAKKyAgICBbUmFpc2VzRXhjZXB0aW9uXSBET01TdHJp
bmcgc2Nyb2xsU25hcENvb3JkaW5hdGVzKEVsZW1lbnQgZWxlbWVudCk7CisgICAgW1JhaXNlc0V4
Y2VwdGlvbl0gRE9NU3RyaW5nIHNjcm9sbFNuYXBPZmZzZXRzKEVsZW1lbnQgZWxlbWVudCk7Cisj
ZW5kaWYKIH07CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODM4OTEpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxNS0wNS0wNiAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBTY3JvbGwtc25hcCBwb2lu
dHMgZG8gbm90IGhhbmRsZSBtYXJnaW5zIGFuZCBwYWRkaW5nIHByb3BlcnRseQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NjQ3CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yMDgyOTQ3Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgbmV3IHNjcm9sbC1zbmFwIHRlc3RzIHRoYXQgY292ZXIgZWxl
bWVudHMgd2l0aCBib3JkZXJzLCBwYWRkaW5nLCBhbmQgcm90YXRpb24uIEFsc28gY29ycmVjdCB0
aGUKKyAgICAgICAgY2F1c2Ugb2YgdGhlICdzY3JvbGwtc25hcC1tYW5kYXRvcnktb3ZlcmZsb3cu
aHRtbCcgdGVzdCBmbGFraW5lc3MgYnkgbWFraW5nIHN1cmUgdGhlIG1vdXNlIGlzIGFsd2F5cwor
ICAgICAgICBpbnNpZGUgdGhlIGVsZW1lbnQgd2hlbiBzdGFydGluZyBuZXcgd2hlZWwgZ2VzdHVy
ZXMuCisKKyAgICAgICAgQWxzbyBhZGQgYSBuZXcgJ2dlbmVyaWMnIHRlc3QgdGhhdCBjb25maXJt
cyB0aGF0IHdlIGhhdmUgZXhwZWN0ZWQgcmVzdWx0cyBmb3Igc2Nyb2xsLXNuYXAgY29vcmRpbmF0
ZXMKKyAgICAgICAgYW5kIGNhbGN1bGF0ZWQgc2Nyb2xsLXNuYXAtb2Zmc2V0IHZhbHVlcy4KKyAK
KyAgICAgICAgKiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW9mZnNldHMtYW5kLWNvb3Jk
aW5hdGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVj
dGF0aW9uczogUmVtb3ZlIGZsYWtpbmVzcyBhbm5vdGF0aW9uIGZvciBzY3JvbGwtc25hcC1tYW5k
YXRvcnktb3ZlcmZsb3cuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUuaHRtbDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLW1hbmRhdG9yeS1ib3JkZXJzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1tYW5kYXRvcnktYm9yZGVycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLW1hbmRhdG9yeS1vdmVyZmxvdy5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5
LXBhZGRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sy
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9y
eS1wYWRkaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXJvdGF0
ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1yb3Rh
dGVkLmh0bWw6IEFkZGVkLgorCiAyMDE1LTA1LTA2ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5z
b25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbRnJlZVR5cGVdIFZlcnRpY2FsIENKSyBnbHlwaHMg
c2hvdWxkIG5vdCBiZSByZW5kZXJlZCB3aXRoIHN5bnRoZXRpYyBvYmxpcXVlCkluZGV4OiBMYXlv
dXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW9mZnNldHMtYW5kLWNvb3JkaW5h
dGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1vZmZzZXRzLWFuZC1jb29yZGluYXRlcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1vZmZzZXRzLWFuZC1jb29yZGlu
YXRlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjA0IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuYm9y
ZGVyZWQgeworICAgICAgICAgICAgICAgIGJvcmRlci10b3A6IDIwcHggc29saWQgYmxhY2s7Cisg
ICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMTBweCBzb2xpZCBibGFjazsKKyAgICAgICAg
ICAgICAgICBib3JkZXItbGVmdDogMTVweCBzb2xpZCBibGFjazsKKyAgICAgICAgICAgICAgICBi
b3JkZXItcmlnaHQ6IDlweCBzb2xpZCBibGFjazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC5wYWRkZWQgeworICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMjBweDsKKyAgICAgICAg
ICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4OworICAgICAgICAgICAgICAgIHBhZGRpbmctdG9w
OiAxNXB4OworICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiA5cHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgICAgICAtd2Via2l0LW92
ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1zY3JvbGwt
c25hcC1wb2ludHMteDogcmVwZWF0KDEwMCUpOworICAgICAgICAgICAgICAgIC13ZWJraXQtc2Ny
b2xsLXNuYXAtdHlwZTogbWFuZGF0b3J5OworICAgICAgICAgICAgICAgIC13ZWJraXQtc2Nyb2xs
LXNuYXAtY29vcmRpbmF0ZTogNTAlIDUwJTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC5o
b3Jpem9udGFsR2FsbGVyeURyYXdlciB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDE4MHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzBweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOworICAgICAgICAg
ICAgICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtcG9pbnRzLXk6IHJlcGVhdCgxMDAlKTsKKyAgICAg
ICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFwLXR5cGU6IG1hbmRhdG9yeTsKKyAgICAgICAg
ICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFwLWNvb3JkaW5hdGU6IDUwJSA1MCU7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5RHJhd2VyIHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDE4MHB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLmNvbG9yQm94IHsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwcHg7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwcHg7CisgICAgICAgICAgICAgICAgZmxv
YXQ6IGxlZnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAjaXRlbUgwLCAjaXRlbVYwIHsg
YmFja2dyb3VuZC1jb2xvcjogcmVkOyB9CisgICAgICAgICAgICAjaXRlbUgxLCAjaXRlbVYxIHsg
YmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IH0KKyAgICAgICAgICAgICNpdGVtSDIsICNpdGVtVjIg
eyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyB9CisgICAgICAgICAgICAjaXRlbUgzLCAjaXRlbVYz
IHsgYmFja2dyb3VuZC1jb2xvcjogYXF1YTsgfQorICAgICAgICAgICAgI2l0ZW1INCwgI2l0ZW1W
NCB7IGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsgfQorICAgICAgICAgICAgI2l0ZW1INSwgI2l0
ZW1WNSB7IGJhY2tncm91bmQtY29sb3I6IGZ1Y2hzaWE7IH0KKyAgICAgICAgPC9zdHlsZT4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIHJlcG9ydFJlc3VsdChob3Jp
em9udGFsVGFyZ2V0SUQsIHZlcnRpY2FsVGFyZ2V0SUQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBob3Jpem9udGFsVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaG9yaXpvbnRh
bFRhcmdldElEKTsKKyAgICAgICAgICAgIHZhciB2ZXJ0aWNhbFRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHZlcnRpY2FsVGFyZ2V0SUQpOworCisgICAgICAgICAgICBkZWJ1ZygiU2Ny
b2xsLXNuYXAgY29vcmRpbmF0ZXMgZm9yICIgKyBob3Jpem9udGFsVGFyZ2V0SUQgKyAiOiAiICsg
d2luZG93LmludGVybmFscy5zY3JvbGxTbmFwQ29vcmRpbmF0ZXMoaG9yaXpvbnRhbFRhcmdldCkp
OworICAgICAgICAgICAgZGVidWcoIlNjcm9sbC1zbmFwIGNvb3JkaW5hdGVzIGZvciAiICsgdmVy
dGljYWxUYXJnZXRJRCArICI6ICIgKyB3aW5kb3cuaW50ZXJuYWxzLnNjcm9sbFNuYXBDb29yZGlu
YXRlcyh2ZXJ0aWNhbFRhcmdldCkpOworCisgICAgICAgICAgICBkZWJ1ZygiU2Nyb2xsLXNuYXAg
b2Zmc2V0cyBmb3IgIiArIGhvcml6b250YWxUYXJnZXRJRCArICI6ICIgKyB3aW5kb3cuaW50ZXJu
YWxzLnNjcm9sbFNuYXBPZmZzZXRzKGhvcml6b250YWxUYXJnZXQpKTsKKyAgICAgICAgICAgIGRl
YnVnKCJTY3JvbGwtc25hcCBvZmZzZXRzIGZvciAiICsgdmVydGljYWxUYXJnZXRJRCArICI6ICIg
KyB3aW5kb3cuaW50ZXJuYWxzLnNjcm9sbFNuYXBPZmZzZXRzKHZlcnRpY2FsVGFyZ2V0KSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmVwb3J0UmVzdWx0KCdob3Jpem9udGFsVGFyZ2V0JywgJ3ZlcnRpY2FsVGFyZ2V0Jyk7
CisgICAgICAgICAgICByZXBvcnRSZXN1bHQoJ2hvcml6b250YWxCb3JkZXJlZFRhcmdldCcsICd2
ZXJ0aWNhbEJvcmRlcmVkVGFyZ2V0Jyk7CisgICAgICAgICAgICByZXBvcnRSZXN1bHQoJ2hvcml6
b250YWxQYWRkZWRUYXJnZXQnLCAndmVydGljYWxQYWRkZWRUYXJnZXQnKTsKKyAgICAgICAgICAg
IHJlcG9ydFJlc3VsdCgnaG9yaXpvbnRhbEJvcmRlcmVkUGFkZGVkVGFyZ2V0JywgJ3ZlcnRpY2Fs
Qm9yZGVyZWRQYWRkZWRUYXJnZXQnKTsKKyAgICAgICAgICAgIHJlcG9ydFJlc3VsdCgnaG9yaXpv
bnRhbFJvdGF0ZWRUYXJnZXQnLCAndmVydGljYWxSb3RhdGVkVGFyZ2V0JykKKworICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KHJ1blRlc3QsIDApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9u
TG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6
IDMwMHB4Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBvdmVyZmxvdyByZWdpb25zLjwvZGl2PgorICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIGlkPSJob3Jpem9udGFsVGFyZ2V0Ij4K
KyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeURyYXdlciI+Cisg
ICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1IMCIgY2xhc3M9ImNvbG9yQm94Ij48L2Rp
dj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbUgxIiBjbGFzcz0iY29sb3JCb3gi
PjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtSDIiIGNsYXNzPSJjb2xv
ckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1IMyIgY2xhc3M9
ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbUg0IiBj
bGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVt
SDUiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAg
ICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIg
aWQ9InZlcnRpY2FsVGFyZ2V0Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNh
bEdhbGxlcnlEcmF3ZXIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjAiIGNs
YXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1W
MSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0i
aXRlbVYyIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2
IGlkPSJpdGVtVjMiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAg
IDxkaXYgaWQ9Iml0ZW1WNCIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAg
ICAgICAgPGRpdiBpZD0iaXRlbVY1IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAg
ICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJob3Jpem9udGFsR2FsbGVyeSBib3JkZXJlZCIgaWQ9Imhvcml6b250YWxCb3JkZXJlZFRhcmdl
dCI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnlEcmF3ZXIi
PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtSDAiIGNsYXNzPSJjb2xvckJveCI+
PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1IMSIgY2xhc3M9ImNvbG9y
Qm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbUgyIiBjbGFzcz0i
Y29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtSDMiIGNs
YXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1I
NCIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0i
aXRlbUg1IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgIDwvZGl2Pgor
ICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxl
cnkgYm9yZGVyZWQiIGlkPSJ2ZXJ0aWNhbEJvcmRlcmVkVGFyZ2V0Ij4KKyAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnlEcmF3ZXIiPgorICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGlkPSJpdGVtVjAiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAg
ICAgICAgIDxkaXYgaWQ9Iml0ZW1WMSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAg
ICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVYyIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjMiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+
CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WNCIgY2xhc3M9ImNvbG9yQm94Ij48
L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVY1IiBjbGFzcz0iY29sb3JC
b3giPjwvZGl2PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+Cisg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSBwYWRkZWQiIGlkPSJob3Jp
em9udGFsUGFkZGVkVGFyZ2V0Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJob3Jpem9u
dGFsR2FsbGVyeURyYXdlciI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1IMCIg
Y2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRl
bUgxIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlk
PSJpdGVtSDIiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxk
aXYgaWQ9Iml0ZW1IMyIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAg
ICAgPGRpdiBpZD0iaXRlbUg0IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGlkPSJpdGVtSDUiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAg
ICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xh
c3M9InZlcnRpY2FsR2FsbGVyeSBwYWRkZWQiIGlkPSJ2ZXJ0aWNhbFBhZGRlZFRhcmdldCI+Cisg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVydGljYWxHYWxsZXJ5RHJhd2VyIj4KKyAgICAg
ICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVYwIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2Pgor
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjEiIGNsYXNzPSJjb2xvckJveCI+PC9k
aXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WMiIgY2xhc3M9ImNvbG9yQm94
Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVYzIiBjbGFzcz0iY29s
b3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjQiIGNsYXNz
PSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WNSIg
Y2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAg
ICAgIDwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkgYm9y
ZGVyZWQgcGFkZGVkIiBpZD0iaG9yaXpvbnRhbEJvcmRlcmVkUGFkZGVkVGFyZ2V0Ij4KKyAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeURyYXdlciI+CisgICAgICAg
ICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1IMCIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAg
ICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbUgxIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2
PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtSDIiIGNsYXNzPSJjb2xvckJveCI+
PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1IMyIgY2xhc3M9ImNvbG9y
Qm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbUg0IiBjbGFzcz0i
Y29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtSDUiIGNs
YXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAg
ICA8L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSBib3JkZXJl
ZCBwYWRkZWQiIGlkPSJ2ZXJ0aWNhbEJvcmRlcmVkUGFkZGVkVGFyZ2V0Ij4KKyAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnlEcmF3ZXIiPgorICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGlkPSJpdGVtVjAiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAg
ICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WMSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAg
ICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVYyIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2Pgor
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjMiIGNsYXNzPSJjb2xvckJveCI+PC9k
aXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WNCIgY2xhc3M9ImNvbG9yQm94
Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVY1IiBjbGFzcz0iY29s
b3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+
CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSBib3JkZXJlZCBwYWRk
ZWQiIGlkPSJob3Jpem9udGFsUm90YXRlZFRhcmdldCIgc3R5bGU9Ii13ZWJraXQtdHJhbnNmb3Jt
OiByb3RhdGUoMjBkZWcpIj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJob3Jpem9udGFs
R2FsbGVyeURyYXdlciI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1IMCIgY2xh
c3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbUgx
IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJp
dGVtSDIiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYg
aWQ9Iml0ZW1IMyIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAg
PGRpdiBpZD0iaXRlbUg0IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGlkPSJpdGVtSDUiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAg
ICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9
InZlcnRpY2FsR2FsbGVyeSBib3JkZXJlZCBwYWRkZWQiIGlkPSJ2ZXJ0aWNhbFJvdGF0ZWRUYXJn
ZXQiIHN0eWxlPSItd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC0yMGRlZykiPgorICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9InZlcnRpY2FsR2FsbGVyeURyYXdlciI+CisgICAgICAgICAgICAg
ICAgICAgIDxkaXYgaWQ9Iml0ZW1WMCIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAg
ICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVYxIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjIiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+
CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WMyIgY2xhc3M9ImNvbG9yQm94Ij48
L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVY0IiBjbGFzcz0iY29sb3JC
b3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjUiIGNsYXNzPSJj
b2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rp
dj4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25z
CShyZXZpc2lvbiAxODM4NDMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RF
eHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTUyMywxMCArNTIzLDMgQEAgd2Via2l0Lm9y
Zy9iLzE0MTA4NSBbIFlvc2VtaXRlIF0gaHR0cC90ZQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIwogCiBodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zIFsgUGFzcyBd
Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMjIyBTVEFSVCBP
RiAoMSkgTmV3IHNjcm9sbC1zbmFwIGZsYWtlCi1wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1vdmVyZmxvdy5o
dG1sIFsgVGltZW91dCBQYXNzIF0KLQotIyMjIEVORCBPRiAoMSkgc2Nyb2xsLXNuYXAgZmxha2UK
LSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMTgzODQzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtODIsOCArODIsMTAgQEAKICAgICAgICAgICAg
ICAgICBkeSA9IC0xOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gaWZyYW1lVGFyZ2V0Lm9mZnNldExlZnQgKyAyMDsKLSAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSBpZnJhbWVUYXJnZXQub2Zmc2V0VG9wICsgMjA7CisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CiAgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ug
c3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJywgZmFsc2UpOwogICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScsIGZh
bHNlKTsKQEAgLTEzMSw4ICsxMzMsOCBAQAogCiAgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKIAotICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGggLSAxMDsKLSAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgNTA7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJywgZmFsc2UpOwogICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScsIGZhbHNlKTsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
bWFuZGF0b3J5LWJvcmRlcnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtbWFuZGF0b3J5LWJvcmRlcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktYm9yZGVycy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxNiBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBvdmVyZmxvdyByZWdpb25zLgorIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1ib3JkZXJzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktYm9yZGVycy5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktYm9yZGVy
cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjM5IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpv
bnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIGJvcmRl
ci10b3A6IDIwcHggc29saWQgYmxhY2s7CisgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTog
MTBweCBzb2xpZCBibGFjazsKKyAgICAgICAgICAgICAgICBib3JkZXItbGVmdDogMTVweCBzb2xp
ZCBibGFjazsKKyAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDlweCBzb2xpZCBibGFjazsK
KyAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAycHg7CisgICAgICAgICAgICAgICAgLXdl
YmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOworICAgICAgICAgICAgICAgIC13ZWJraXQt
c2Nyb2xsLXNuYXAtcG9pbnRzLXg6IHJlcGVhdCgxMDAlKTsKKyAgICAgICAgICAgICAgICAtd2Vi
a2l0LXNjcm9sbC1zbmFwLXR5cGU6IG1hbmRhdG9yeTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC5ob3Jpem9udGFsR2FsbGVyeURyYXdlciB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDE4
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxh
eTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIGJvcmRlci10
b3A6IDIwcHggc29saWQgYmxhY2s7CisgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMTBw
eCBzb2xpZCBibGFjazsKKyAgICAgICAgICAgICAgICBib3JkZXItbGVmdDogMTVweCBzb2xpZCBi
bGFjazsKKyAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDlweCBzb2xpZCBibGFjazsKKyAg
ICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAycHg7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1v
dmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOworICAgICAgICAgICAgICAgIC13ZWJraXQtc2Nyb2xs
LXNuYXAtcG9pbnRzLXk6IHJlcGVhdCgxMDAlKTsKKyAgICAgICAgICAgICAgICAtd2Via2l0LXNj
cm9sbC1zbmFwLXR5cGU6IG1hbmRhdG9yeTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52
ZXJ0aWNhbEdhbGxlcnlEcmF3ZXIgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDE4MDBweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC5jb2xvckJveCB7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAjaXRlbUgwLCAjaXRlbVYwIHsgYmFja2dyb3VuZC1jb2xvcjog
cmVkOyB9CisgICAgICAgICAgICAjaXRlbUgxLCAjaXRlbVYxIHsgYmFja2dyb3VuZC1jb2xvcjog
Z3JlZW47IH0KKyAgICAgICAgICAgICNpdGVtSDIsICNpdGVtVjIgeyBiYWNrZ3JvdW5kLWNvbG9y
OiBibHVlOyB9CisgICAgICAgICAgICAjaXRlbUgzLCAjaXRlbVYzIHsgYmFja2dyb3VuZC1jb2xv
cjogYXF1YTsgfQorICAgICAgICAgICAgI2l0ZW1INCwgI2l0ZW1WNCB7IGJhY2tncm91bmQtY29s
b3I6IHllbGxvdzsgfQorICAgICAgICAgICAgI2l0ZW1INSwgI2l0ZW1WNSB7IGJhY2tncm91bmQt
Y29sb3I6IGZ1Y2hzaWE7IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOwor
ICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0
aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVt
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRU
b3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVu
dCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9m
ZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9u
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7ICAgICAgICAgICAgCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVj
a0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBk
aXZUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGRpdlRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gZGl2VGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3Np
dGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFw
IGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVk
ICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQ
b3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChzY3Jv
bGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JyksIDApOworICAgICAgICAgICAgZWxzZSAgIAor
ICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGRpdlRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGRpdlRh
cmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGRp
dlRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGRpdlRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogZGl2VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBkaXZUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
JywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJywgZmFsc2UpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgZGl2VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBkaXZU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBkaXZU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gZGl2VGFy
Z2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGRpdlRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50Lgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCksIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBkaXZUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gZGl2
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGRpdlRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGRpdlRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3
aW5kb3dQb3NpdGlvbi54ICsgZGl2VGFyZ2V0LmNsaWVudFdpZHRoIC0gMTA7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDUwOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScsIGZhbHNlKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnLCBmYWxzZSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbics
IGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJywgZmFsc2UpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnLCBmYWxzZSk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdjb250aW51ZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRp
bnVlJywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcsIGZhbHNlKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpLCAwKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VMb2NhdGlvbkggPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXRlbUgwJyk7CisgICAgICAgICAgICAgICAgdmFyIG1l
c3NhZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgICAgICAgICBt
ZXNzYWdlLmlubmVySFRNTCA9ICI8cD5UaGlzIHRlc3QgaXMgYmV0dGVyIHJ1biB1bmRlciBEdW1w
UmVuZGVyVHJlZS48YnIvPlRvIG1hbnVhbGx5IHRlc3QgaXQsIHBsYWNlIHRoZSBtb3VzZSBwb2lu
dGVyPGJyLz4iCisgICAgICAgICAgICAgICAgICAgICsgImluc2lkZSB0aGUgcmVkIHJlZ2lvbiBh
dCB0aGUgdG9wIG9mIHRoZSBwYWdlLDxici8+YW5kIHRoZW4gdXNlIHRoZSBtb3VzZSB3aGVlbCBv
ciBhIHR3by1maW5nZXI8YnIvPnN3aXBlIHRvIG1ha2UgYSIKKyAgICAgICAgICAgICAgICAgICAg
KyAic21hbGwgc3dpcGUgZ2VzdHVyZSB3aXRoPGJyLz5zb21lIG1vbWVudHVtLjxici8+PGJyLz4i
CisgICAgICAgICAgICAgICAgICAgICsgIlRoZSByZWdpb24gc2hvdWxkIHNjcm9sbCB0byBzaG93
IGEgZ3JlZW4gcmVnaW9uLjxici8+PGJyLz4iCisgICAgICAgICAgICAgICAgICAgICsgIk5leHQs
IHBlcmZvcm0gYSBzbWFsbCBzY3JvbGwgZ2VzdHVyZSB0aGF0IGRvZXM8YnIvPm5vdCBpbnZvbHZl
IG1vbWVudHVtLiBZb3Ugc2hvdWxkIGJlZ2luIHRvPGJyLz5zZWUgb25lIG9mIHRoZSBjb2xvcnMg
IgorICAgICAgICAgICAgICAgICAgICArICJ0byB0aGUgc2lkZSBvZiB0aGUgY3VycmVudDxici8+
Z3JlZW4gYm94LiBXaGVuIHlvdSByZWxlYXNlIHRoZSB3aGVlbCwgdGhlPGJyLz5yZWdpb24gc2hv
dWxkIHNjcm9sbCBiYWNrIHRvIGEgc2luZ2xlIGNvbG9yLiI7CisgICAgICAgICAgICAgICAgbWVz
c2FnZUxvY2F0aW9uSC5hcHBlbmRDaGlsZChtZXNzYWdlKTsKKworICAgICAgICAgICAgICAgIHZh
ciBtZXNzYWdlTG9jYXRpb25WID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2l0ZW1WMCcpOwor
ICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CisgICAgICAgICAgICAgICAgbWVzc2FnZS5pbm5lckhUTUwgPSAiPHA+WW91IHNob3VsZCBh
bHNvIGJlIGFibGUgdG8gcmVwZWF0IHRoZXNlIHRlc3RzIHN0ZXBzIGZvciB0aGlzIHZlcnRpY2Fs
IHJlZ2lvbi48YnIvPiIKKyAgICAgICAgICAgICAgICBtZXNzYWdlTG9jYXRpb25WLmFwcGVuZENo
aWxkKG1lc3NhZ2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxk
aXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4Ij4KKyAgICAgICAgICAg
IDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBvdmVyZmxvdyByZWdpb25zLjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIGlkPSJob3Jpem9udGFsVGFyZ2V0Ij4KKyAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeURyYXdlciI+CisgICAgICAgICAgICAgICAgICAgIDxk
aXYgaWQ9Iml0ZW1IMCIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAg
ICAgPGRpdiBpZD0iaXRlbUgxIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGlkPSJpdGVtSDIiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAg
ICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1IMyIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAg
ICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbUg0IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2
PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtSDUiIGNsYXNzPSJjb2xvckJveCI+
PC9kaXY+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAg
ICAgICAgIDxkaXYgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgaWQ9InZlcnRpY2FsVGFyZ2V0Ij4K
KyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnlEcmF3ZXIiPgorICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjAiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+
CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WMSIgY2xhc3M9ImNvbG9yQm94Ij48
L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVYyIiBjbGFzcz0iY29sb3JC
b3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjMiIGNsYXNzPSJj
b2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WNCIgY2xh
c3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVY1
IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAg
ICAgICAgPC9kaXY+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAg
ICAgPC9kaXY+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnkt
b3ZlcmZsb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9y
eS1vdmVyZmxvdy5odG1sCShyZXZpc2lvbiAxODM4NDMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LW1hbmRhdG9yeS1vdmVyZmxvdy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsOCArMTA1LDEw
IEBACiAgICAgICAgICAgICAgICAgZHkgPSAtMTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IGRpdlRhcmdldC5vZmZzZXRMZWZ0ICsgMjA7Ci0gICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gZGl2VGFyZ2V0Lm9mZnNldFRvcCArIDIwOworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGRpdlRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogZGl2VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBkaXZUYXJnZXQuY2xpZW50SGVpZ2h0OwogICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCiAgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScsIGZhbHNlKTsKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnLCBm
YWxzZSk7CkBAIC0xNTIsOCArMTU0LDggQEAKIAogICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGRpdlRhcmdldCk7CiAKLSAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgZGl2VGFyZ2V0LmNsaWVudFdp
ZHRoIC0gMTA7Ci0gICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDUwOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUg
KiBkaXZUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGRpdlRhcmdldC5jbGllbnRIZWlnaHQ7CiAgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CiAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScsIGZhbHNlKTsKICAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnLCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1w
YWRkaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1h
bmRhdG9yeS1wYWRkaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtbWFuZGF0b3J5LXBhZGRpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTYgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gb3ZlcmZsb3cgcmVnaW9ucy4KKyBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktcGFkZGluZy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXBhZGRpbmcuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXBhZGRpbmcuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDIzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDIw
cHg7CisgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMTBweDsKKyAgICAgICAgICAgICAg
ICBwYWRkaW5nLXRvcDogMTVweDsKKyAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogOXB4
OworICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDJweDsKKyAgICAgICAgICAgICAgICAt
d2Via2l0LXNjcm9sbC1zbmFwLXBvaW50cy14OiByZXBlYXQoMTAwJSk7CisgICAgICAgICAgICAg
ICAgLXdlYmtpdC1zY3JvbGwtc25hcC10eXBlOiBtYW5kYXRvcnk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnlEcmF3ZXIgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAxODAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBw
YWRkaW5nLWxlZnQ6IDIwcHg7CisgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMTBweDsK
KyAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogMTVweDsKKyAgICAgICAgICAgICAgICBwYWRk
aW5nLWJvdHRvbTogOXB4OworICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDJweDsKKyAgICAg
ICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFwLXBvaW50cy15OiByZXBlYXQoMTAwJSk7Cisg
ICAgICAgICAgICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC10eXBlOiBtYW5kYXRvcnk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5RHJhd2VyIHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxODAwcHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAuY29sb3JCb3ggeworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGZsb2F0OiBsZWZ0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgI2l0ZW1IMCwgI2l0
ZW1WMCB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgfQorICAgICAgICAgICAgI2l0ZW1IMSwgI2l0
ZW1WMSB7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyB9CisgICAgICAgICAgICAjaXRlbUgyLCAj
aXRlbVYyIHsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsgfQorICAgICAgICAgICAgI2l0ZW1IMywg
I2l0ZW1WMyB7IGJhY2tncm91bmQtY29sb3I6IGFxdWE7IH0KKyAgICAgICAgICAgICNpdGVtSDQs
ICNpdGVtVjQgeyBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7IH0KKyAgICAgICAgICAgICNpdGVt
SDUsICNpdGVtVjUgeyBiYWNrZ3JvdW5kLWNvbG9yOiBmdWNoc2lhOyB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB2YXIgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
ZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9z
aXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVu
dC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24u
eCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7Cisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGZpbmlzaFRlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOyAgICAgICAgICAgIAorICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgZGl2VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBkaXZU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGRpdlRhcmdldC5z
Y3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQg
YmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiAr
IHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpLCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBkaXZUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBkaXZUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBkaXZUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhkaXZUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGRpdlRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogZGl2VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBq
dXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnLCBm
YWxzZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJywgZmFsc2UpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGRpdlRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAg
dmFyIHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZGl2VGFyZ2V0LCBudWxsKTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gZGl2VGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gZGl2VGFyZ2V0LmNsaWVudEhlaWdodCAt
IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctdG9wJykucmVwbGFjZSgicHgiLCAiIikg
LSBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLWJvdHRvbScpLnJlcGxhY2UoInB4Iiwg
IiIpOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gZGl2VGFyZ2V0LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGRpdlRhcmdldC5jbGllbnRXaWR0
aCAtIHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctcmlnaHQnKS5yZXBsYWNlKCJweCIs
ICIiKSAtIHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctbGVmdCcpLnJlcGxhY2UoInB4
IiwgIiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25h
cCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxH
bGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGRpdlRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBkaXZUYXJnZXQuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gZGl2VGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZGl2VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyBkaXZUYXJnZXQuY2xpZW50V2lkdGggLSAxMDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgNTA7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnLCBmYWxz
ZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJywgZmFsc2UpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJywgZmFsc2UpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnLCBmYWxzZSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnLCBmYWxz
ZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJywgZmFsc2UpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
c2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JyksIDApOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZUxvY2F0aW9uSCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdpdGVtSDAnKTsKKyAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICAgICAgICAgIG1lc3NhZ2UuaW5u
ZXJIVE1MID0gIjxwPlRoaXMgdGVzdCBpcyBiZXR0ZXIgcnVuIHVuZGVyIER1bXBSZW5kZXJUcmVl
Ljxici8+VG8gbWFudWFsbHkgdGVzdCBpdCwgcGxhY2UgdGhlIG1vdXNlIHBvaW50ZXI8YnIvPiIK
KyAgICAgICAgICAgICAgICAgICAgKyAiaW5zaWRlIHRoZSByZWQgcmVnaW9uIGF0IHRoZSB0b3Ag
b2YgdGhlIHBhZ2UsPGJyLz5hbmQgdGhlbiB1c2UgdGhlIG1vdXNlIHdoZWVsIG9yIGEgdHdvLWZp
bmdlcjxici8+c3dpcGUgdG8gbWFrZSBhIgorICAgICAgICAgICAgICAgICAgICArICJzbWFsbCBz
d2lwZSBnZXN0dXJlIHdpdGg8YnIvPnNvbWUgbW9tZW50dW0uPGJyLz48YnIvPiIKKyAgICAgICAg
ICAgICAgICAgICAgKyAiVGhlIHJlZ2lvbiBzaG91bGQgc2Nyb2xsIHRvIHNob3cgYSBncmVlbiBy
ZWdpb24uPGJyLz48YnIvPiIKKyAgICAgICAgICAgICAgICAgICAgKyAiTmV4dCwgcGVyZm9ybSBh
IHNtYWxsIHNjcm9sbCBnZXN0dXJlIHRoYXQgZG9lczxici8+bm90IGludm9sdmUgbW9tZW50dW0u
IFlvdSBzaG91bGQgYmVnaW4gdG88YnIvPnNlZSBvbmUgb2YgdGhlIGNvbG9ycyAiCisgICAgICAg
ICAgICAgICAgICAgICsgInRvIHRoZSBzaWRlIG9mIHRoZSBjdXJyZW50PGJyLz5ncmVlbiBib3gu
IFdoZW4geW91IHJlbGVhc2UgdGhlIHdoZWVsLCB0aGU8YnIvPnJlZ2lvbiBzaG91bGQgc2Nyb2xs
IGJhY2sgdG8gYSBzaW5nbGUgY29sb3IuIjsKKyAgICAgICAgICAgICAgICBtZXNzYWdlTG9jYXRp
b25ILmFwcGVuZENoaWxkKG1lc3NhZ2UpOworCisgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VM
b2NhdGlvblYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXRlbVYwJyk7CisgICAgICAgICAg
ICAgICAgdmFyIG1lc3NhZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAg
ICAgICAgICAgICBtZXNzYWdlLmlubmVySFRNTCA9ICI8cD5Zb3Ugc2hvdWxkIGFsc28gYmUgYWJs
ZSB0byByZXBlYXQgdGhlc2UgdGVzdHMgc3RlcHMgZm9yIHRoaXMgdmVydGljYWwgcmVnaW9uLjxi
ci8+IgorICAgICAgICAgICAgICAgIG1lc3NhZ2VMb2NhdGlvblYuYXBwZW5kQ2hpbGQobWVzc2Fn
ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0i
cG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHgiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIG92ZXJmbG93
IHJlZ2lvbnMuPC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJob3Jpem9udGFsR2FsbGVy
eSIgaWQ9Imhvcml6b250YWxUYXJnZXQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imhv
cml6b250YWxHYWxsZXJ5RHJhd2VyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRl
bUgwIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlk
PSJpdGVtSDEiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxk
aXYgaWQ9Iml0ZW1IMiIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAg
ICAgPGRpdiBpZD0iaXRlbUgzIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGlkPSJpdGVtSDQiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAg
ICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1INSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAg
ICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPGRp
diBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBpZD0idmVydGljYWxUYXJnZXQiPgorICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9InZlcnRpY2FsR2FsbGVyeURyYXdlciI+CisgICAgICAgICAgICAg
ICAgICAgIDxkaXYgaWQ9Iml0ZW1WMCIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAg
ICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVYxIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjIiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+
CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WMyIgY2xhc3M9ImNvbG9yQm94Ij48
L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbVY0IiBjbGFzcz0iY29sb3JC
b3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtVjUiIGNsYXNzPSJj
b2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rp
dj4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1yb3RhdGVkLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1y
b3RhdGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
bWFuZGF0b3J5LXJvdGF0ZWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTYgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gb3ZlcmZsb3cgcmVnaW9ucy4KKyBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktcm90YXRlZC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXJvdGF0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXJvdGF0ZWQuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDIzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4K
KyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCBibGFjazsK
KyAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OworICAgICAgICAgICAgICAgIC13
ZWJraXQtc2Nyb2xsLXNuYXAtcG9pbnRzLXg6IHJlcGVhdCgxMDAlKTsKKyAgICAgICAgICAgICAg
ICAtd2Via2l0LXNjcm9sbC1zbmFwLXR5cGU6IG1hbmRhdG9yeTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeURyYXdlciB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDE4MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIGJv
cmRlcjogMnB4IHNvbGlkIGJsYWNrOworICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDE1cHg7
CisgICAgICAgICAgICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC1wb2ludHMteTogcmVwZWF0KDEw
MCUpOworICAgICAgICAgICAgICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtdHlwZTogbWFuZGF0b3J5
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeURyYXdlciB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMTgw
MHB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLmNvbG9yQm94IHsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBmbG9hdDogbGVmdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICNpdGVt
SDAsICNpdGVtVjAgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0KKyAgICAgICAgICAgICNpdGVt
SDEsICNpdGVtVjEgeyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgfQorICAgICAgICAgICAgI2l0
ZW1IMiwgI2l0ZW1WMiB7IGJhY2tncm91bmQtY29sb3I6IGJsdWU7IH0KKyAgICAgICAgICAgICNp
dGVtSDMsICNpdGVtVjMgeyBiYWNrZ3JvdW5kLWNvbG9yOiBhcXVhOyB9CisgICAgICAgICAgICAj
aXRlbUg0LCAjaXRlbVY0IHsgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyB9CisgICAgICAgICAg
ICAjaXRlbUg1LCAjaXRlbVY1IHsgYmFja2dyb3VuZC1jb2xvcjogZnVjaHNpYTsgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgdmFy
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9
OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUg
KGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBv
c2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBmaW5pc2hUZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsgICAgICAgICAgICAKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGRpdlRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gZGl2VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBkaXZU
YXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
bmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24g
Zm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4i
KTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJn
ZXQnKSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoVGVz
dCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgZGl2VGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gZGl2VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gZGl2VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZGl2VGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBkaXZU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGRpdlRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScsIGZhbHNlKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnLCBmYWxzZSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBk
aXZUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGRpdlRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGRpdlRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBkaXZUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gZGl2VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChn
bGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVj
dGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworCisgICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGRpdlRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBkaXZUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gZGl2VGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
d2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZGl2VGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBk
aXZUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGRpdlRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJywgZmFsc2Up
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScsIGZhbHNlKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2lu
JywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnLCBmYWxzZSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2NvbnRpbnVlJywgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29u
dGludWUnLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJywgZmFsc2UpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgICAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JyksIDApOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZUxvY2F0aW9uSCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpdGVtSDAnKTsKKyAgICAgICAgICAgICAgICB2YXIg
bWVzc2FnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICAgICAgICAg
IG1lc3NhZ2UuaW5uZXJIVE1MID0gIjxwPlRoaXMgdGVzdCBpcyBiZXR0ZXIgcnVuIHVuZGVyIER1
bXBSZW5kZXJUcmVlLjxici8+VG8gbWFudWFsbHkgdGVzdCBpdCwgcGxhY2UgdGhlIG1vdXNlIHBv
aW50ZXI8YnIvPiIKKyAgICAgICAgICAgICAgICAgICAgKyAiaW5zaWRlIHRoZSByZWQgcmVnaW9u
IGF0IHRoZSB0b3Agb2YgdGhlIHBhZ2UsPGJyLz5hbmQgdGhlbiB1c2UgdGhlIG1vdXNlIHdoZWVs
IG9yIGEgdHdvLWZpbmdlcjxici8+c3dpcGUgdG8gbWFrZSBhIgorICAgICAgICAgICAgICAgICAg
ICArICJzbWFsbCBzd2lwZSBnZXN0dXJlIHdpdGg8YnIvPnNvbWUgbW9tZW50dW0uPGJyLz48YnIv
PiIKKyAgICAgICAgICAgICAgICAgICAgKyAiVGhlIHJlZ2lvbiBzaG91bGQgc2Nyb2xsIHRvIHNo
b3cgYSBncmVlbiByZWdpb24uPGJyLz48YnIvPiIKKyAgICAgICAgICAgICAgICAgICAgKyAiTmV4
dCwgcGVyZm9ybSBhIHNtYWxsIHNjcm9sbCBnZXN0dXJlIHRoYXQgZG9lczxici8+bm90IGludm9s
dmUgbW9tZW50dW0uIFlvdSBzaG91bGQgYmVnaW4gdG88YnIvPnNlZSBvbmUgb2YgdGhlIGNvbG9y
cyAiCisgICAgICAgICAgICAgICAgICAgICsgInRvIHRoZSBzaWRlIG9mIHRoZSBjdXJyZW50PGJy
Lz5ncmVlbiBib3guIFdoZW4geW91IHJlbGVhc2UgdGhlIHdoZWVsLCB0aGU8YnIvPnJlZ2lvbiBz
aG91bGQgc2Nyb2xsIGJhY2sgdG8gYSBzaW5nbGUgY29sb3IuIjsKKyAgICAgICAgICAgICAgICBt
ZXNzYWdlTG9jYXRpb25ILmFwcGVuZENoaWxkKG1lc3NhZ2UpOworCisgICAgICAgICAgICAgICAg
dmFyIG1lc3NhZ2VMb2NhdGlvblYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXRlbVYwJyk7
CisgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKKyAgICAgICAgICAgICAgICBtZXNzYWdlLmlubmVySFRNTCA9ICI8cD5Zb3Ugc2hvdWxk
IGFsc28gYmUgYWJsZSB0byByZXBlYXQgdGhlc2UgdGVzdHMgc3RlcHMgZm9yIHRoaXMgdmVydGlj
YWwgcmVnaW9uLjxici8+IgorICAgICAgICAgICAgICAgIG1lc3NhZ2VMb2NhdGlvblYuYXBwZW5k
Q2hpbGQobWVzc2FnZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHgiPgorICAgICAgICAg
ICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIG92ZXJmbG93IHJlZ2lvbnMuPC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJob3Jp
em9udGFsR2FsbGVyeSIgaWQ9Imhvcml6b250YWxUYXJnZXQiIHN0eWxlPSItd2Via2l0LXRyYW5z
Zm9ybTogcm90YXRlKDIwZGVnKSI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnlEcmF3ZXIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtSDAi
IGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0
ZW1IMSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBp
ZD0iaXRlbUgyIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8
ZGl2IGlkPSJpdGVtSDMiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAg
ICAgIDxkaXYgaWQ9Iml0ZW1INCIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAg
ICAgICAgICAgPGRpdiBpZD0iaXRlbUg1IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAg
ICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgc3R5bGU9Ii13ZWJraXQt
dHJhbnNmb3JtOiByb3RhdGUoLTIwZGVnKSI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
dmVydGljYWxHYWxsZXJ5RHJhd2VyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRl
bVYwIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlk
PSJpdGVtVjEiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxk
aXYgaWQ9Iml0ZW1WMiIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAg
ICAgPGRpdiBpZD0iaXRlbVYzIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGlkPSJpdGVtVjQiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAg
ICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1WNSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAg
ICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>
<flag name="review"
          id="277371"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>