<?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>174977</bug_id>
          
          <creation_ts>2017-07-31 01:01:32 -0700</creation_ts>
          <short_desc>SVG use element inside a shadow tree cannot reference an element in the same tree</short_desc>
          <delta_ts>2019-04-12 18:35:04 -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>SVG</component>
          <version>Safari 10</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://github.com/w3c/webcomponents/issues/179</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>191898</dependson>
    
    <dependson>191920</dependson>
          <blocked>148695</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>fabian.schwarzkopf</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>akshayjat06</cc>
    
    <cc>cedric</cc>
    
    <cc>rniwa</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>seb.p.mueller</cc>
    
    <cc>sergio.faria</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1333372</commentid>
    <comment_count>0</comment_count>
      <attachid>316759</attachid>
    <who name="">fabian.schwarzkopf</who>
    <bug_when>2017-07-31 01:01:32 -0700</bug_when>
    <thetext>Created attachment 316759
Reproduction of unresolved SVG use element in shadow DOM

If an SVG is nested in a shadow root, use elements which reference a defs element via href=&quot;#id&quot; are not resolved.

See attachment for a simple reproduce. Tested on macOS Sierra (10.12.5), Safari 10.1.1 and Safari Technology Preview Release 36.

Once the SVG is moved outside of the shadow root (select the SVG element in the developer tools, document.body.appendChild($0)), the use element is resolved correctly. 
If the SVG is nested in more than one shadow root, the problem persists on each level where the SVG is still in a shadow root, i.e. moving it up one level does not resolve the problem.

Defs elements that are used with url(#id) work as expected, e.g. referencing fills.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334025</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-01 16:38:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/33665636&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334105</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-01 20:00:34 -0700</bug_when>
    <thetext>It&apos;s not clear if this is even a bug since we don&apos;t really have a spec defining this behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334160</commentid>
    <comment_count>3</comment_count>
      <attachid>316946</attachid>
    <who name="">fabian.schwarzkopf</who>
    <bug_when>2017-08-02 00:51:54 -0700</bug_when>
    <thetext>Created attachment 316946
Extended repro with w3.org example</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334161</commentid>
    <comment_count>4</comment_count>
    <who name="">fabian.schwarzkopf</who>
    <bug_when>2017-08-02 00:56:11 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #2)
&gt; It&apos;s not clear if this is even a bug since we don&apos;t really have a spec
&gt; defining this behavior.

I don&apos;t see why this is not part of the spec. Looking through https://www.w3.org/TR/SVG/struct.html#UseElement, a similar example can be found (first code snippet) which also does not work on Safari / Safari Tech Prev when inside a shadow root. I&apos;ve added the same code snippet to the attached index.html repro and it does not work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334162</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-02 01:00:49 -0700</bug_when>
    <thetext>(In reply to fabian.schwarzkopf from comment #4)
&gt; (In reply to Ryosuke Niwa from comment #2)
&gt; &gt; It&apos;s not clear if this is even a bug since we don&apos;t really have a spec
&gt; &gt; defining this behavior.
&gt; 
&gt; I don&apos;t see why this is not part of the spec. Looking through
&gt; https://www.w3.org/TR/SVG/struct.html#UseElement, a similar example can be
&gt; found (first code snippet) which also does not work on Safari / Safari Tech
&gt; Prev when inside a shadow root. I&apos;ve added the same code snippet to the
&gt; attached index.html repro and it does not work.

Well, the problem is that we haven&apos;t figured out how referencing a fragment URL works inside a shadow tree yet. See https://github.com/w3c/webcomponents/issues/179</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335178</commentid>
    <comment_count>6</comment_count>
    <who name="Sebastian Müller">seb.p.mueller</who>
    <bug_when>2017-08-04 01:30:20 -0700</bug_when>
    <thetext>While I understand that it may be difficult to deal with references that cross shadow-dom boundaries, I don&apos;t see how a &quot;self-contained&quot; SVG should leave anything to be discussed or even specced: If the use element is in the very same DOM subtree as the defs section, the relative # url should resolve, just like it does resolve properly if the svg is used in a data url as a image source. Moving the self-contained (with no refernces to anything else outside the svg element) SVG image from the top-level DOM into a shadow dom should *not* break it completely. SVG defs belong to SVG just like SVG belongs to HTML5. If they don&apos;t work in shadow doms at all, then shadow dom does not support HTML5.

Not supporting SVGUseElements in shadow doms would be like not supporting querySelector(&quot;#someHash&quot;) inside shadow dom, or actually even worse, because this affects static image assets and not even javascript.

If you keep the implementation the way it is, this will be yet another reason for devs *not* to switch to shadow DOM. Because without being able to use vector graphics in shadow dom, devs will rather not use shadow dom than omit the graphics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335188</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-04 02:13:12 -0700</bug_when>
    <thetext>(In reply to Sebastian Müller from comment #6)
&gt; While I understand that it may be difficult to deal with references that
&gt; cross shadow-dom boundaries, I don&apos;t see how a &quot;self-contained&quot; SVG should
&gt; leave anything to be discussed or even specced: If the use element is in the
&gt; very same DOM subtree as the defs section, the relative # url should
&gt; resolve, just like it does resolve properly if the svg is used in a data url
&gt; as a image source.

We certainly need to define what that means. For example, what happens if there are multiple shadow trees in which there are two distinct #circle defined and referenced. From what you&apos;ve described, it seems to indicate that each reference should be using the one defined in its own shadow tree. Unfortunately, this would not mesh well with the existing SVG 2.0 spec which states that use element&apos;s href uses a URL reference to reference the source element (see https://svgwg.org/svg2-draft/struct.html#UseElement) because fragment URLs do not have a mechanism to differentiate two IDs defined in each shadow tree. For my interpretation of what you&apos;re proposing to work, we need to invest a wholly different semantics for use element.

&gt; Moving the self-contained (with no refernces to anything
&gt; else outside the svg element) SVG image from the top-level DOM into a shadow
&gt; dom should *not* break it completely.

That&apos;s a good first principle for making SVG work better with shadow trees. However, someone has to do the work of defining what it means to reference a SVG element inside a shadow tree in the same tree, from an inner shadow tree or from outside. Nothing is well defined in this regard.

&gt; If you keep the implementation the way it is, this will be yet another
&gt; reason for devs *not* to switch to shadow DOM. Because without being able to
&gt; use vector graphics in shadow dom, devs will rather not use shadow dom than
&gt; omit the graphics.

I&apos;ve written https://perf.webkit.org/v3/ using shadow DOM and inline SVG everywhere (there is literally no image in that website) without use elements, and it has worked really well. I agree that SVG use element not working is a huge limitation of the shadow DOM API today but it would not totally undermine the usefulness of shadow DOM API in my opinion.

Anyway, I welcome your contribution to https://github.com/w3c/webcomponents/issues/179 so that we can define the behavior and implement it in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335200</commentid>
    <comment_count>8</comment_count>
    <who name="Sebastian Müller">seb.p.mueller</who>
    <bug_when>2017-08-04 03:02:08 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #7)

&gt; We certainly need to define what that means. For example, what happens if
&gt; there are multiple shadow trees in which there are two distinct #circle
&gt; defined and referenced. From what you&apos;ve described, it seems to indicate
&gt; that each reference should be using the one defined in its own shadow tree.

Yes - just like if you had two divs with the same id in two different shadow trees. querySelector(&apos;#theDuplicateId&apos;) works just as well in this case (inside the respective tree), or not?

&gt; Unfortunately, this would not mesh well with the existing SVG 2.0 spec which
&gt; states that use element&apos;s href uses a URL reference to reference the source
&gt; element (see https://svgwg.org/svg2-draft/struct.html#UseElement) because
&gt; fragment URLs do not have a mechanism to differentiate two IDs defined in
&gt; each shadow tree. For my interpretation of what you&apos;re proposing to work, we
&gt; need to invest a wholly different semantics for use element.

The by far most common use-case for the &quot;use&quot; element is to reference elements in a &quot;defs&quot; element in the *same* svg document in the web context. Referencing defs from another document is almost never used (there are many issues with that in web browsers). So even though it *can* be a full-fledged URL, in most cases it is simply the anchor and for this case, I think it is totally obvious what the behavior should be. The living SVG 2.0 spec (which is not implemented anywhere, yet) should probably be adjusted to work with the most frequent use-case. If it does not work at all with shadow dom, then no one will be using it. 

&gt; 
&gt; &gt; Moving the self-contained (with no refernces to anything
&gt; &gt; else outside the svg element) SVG image from the top-level DOM into a shadow
&gt; &gt; dom should *not* break it completely.
&gt; 
&gt; That&apos;s a good first principle for making SVG work better with shadow trees.
&gt; However, someone has to do the work of defining what it means to reference a
&gt; SVG element inside a shadow tree in the same tree, from an inner shadow tree
&gt; or from outside. Nothing is well defined in this regard.

I totally agree with you here - but I don&apos;t believe it is necessary to have a solution for all absurd corner-cases (referencing *across* shadow-dom boundaries!?) before you can get the main use-case (crossing no boundaries) to work. 

I also don&apos;t understand at all why  fill=&quot;url(#someId)&quot; should work, whereas href=&quot;#someId&quot; does not. Can you explain why one thing is simple, whereas the other one is not?


&gt; I agree that SVG use element not
&gt; working is a huge limitation of the shadow DOM API today but it would not
&gt; totally undermine the usefulness of shadow DOM API in my opinion.

Until SVG use elements work in Safari in the context of shadow dom &quot;as expected&quot;, we are going to have to tell our customers either not to use shadow DOM or not to use Safari. It&apos;s as simple as that. I know what their choice will be...

&gt; 
&gt; Anyway, I welcome your contribution to
&gt; https://github.com/w3c/webcomponents/issues/179 so that we can define the
&gt; behavior and implement it in WebKit.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336442</commentid>
    <comment_count>9</comment_count>
    <who name="Sebastian Müller">seb.p.mueller</who>
    <bug_when>2017-08-08 05:40:39 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #7)
&gt; That&apos;s a good first principle for making SVG work better with shadow trees.
&gt; However, someone has to do the work of defining what it means to reference a
&gt; SVG element inside a shadow tree in the same tree, from an inner shadow tree
&gt; or from outside. Nothing is well defined in this regard.

The guys that work on the spec agree with me that at least the case where the SVG is fully contained in its shadow tree should work &quot;as expected&quot; and they feel this is defined well enough in the spec:

See https://github.com/w3c/webcomponents/issues/179#issuecomment-320879635

&quot;I think everyone would agree that this should work. What clarification is required in SVG spec?&quot;

So if you still feel that the spec is not well enough defined for this case, please go ahead and tell them what statement in the spec would change your mind if added. 
Otherwise *they* won&apos;t be changing the spec and *you* won&apos;t be changing the implementation and Safari&apos;s SVG implementation *will stay mostly unusable* in shadow trees.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427234</commentid>
    <comment_count>10</comment_count>
    <who name="Akshay Jat">akshayjat06</who>
    <bug_when>2018-05-25 03:02:13 -0700</bug_when>
    <thetext>What is progress of this issue?
I am facing the same problem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427249</commentid>
    <comment_count>11</comment_count>
    <who name="Sebastian Müller">seb.p.mueller</who>
    <bug_when>2018-05-25 05:18:28 -0700</bug_when>
    <thetext>(In reply to Akshay Jat from comment #10)
&gt; What is progress of this issue?
&gt; I am facing the same problem

There is no progress on this issue, neither here, nor at the spec. The webkit guys are waiting for the spec guys and the spec guys don&apos;t care about SVG in shadow doms: https://github.com/w3c/webcomponents/issues/179

There is absolutely no one working or even willing to work on changing that. IMHO this is a clear sign of failure of webcomponents (there are other severe bugs, but this one is a spec bug). I will not be using or would be recommending it to anyone until this has changed. If you *must* use web components in Safari and want to use SVG, make sure to put the SVG top-level onto the page. It would take at least one more year to get this to work, even if the guys from the spec started working on it today, so don&apos;t count on this becoming fixed in the near future... :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447114</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-01 19:50:38 -0700</bug_when>
    <thetext>I&apos;m following up with the spec issue again. I think we need more involvement from SVG WG and relevant browser vendors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477843</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-11-12 19:00:05 -0800</bug_when>
    <thetext>Now that we&apos;ve reached a rough consensus at W3C TPAC, we can implement the agreed behavior in WebKit, which is basically what Gecko &amp; Chrome already implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478621</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-11-14 14:15:06 -0800</bug_when>
    <thetext>Hm... I thought we had a consensus but it&apos;s not all that clear anymore. Will follow up with standards folks more so that we can at least make SVG use element work in the shadow tree.

Thanks for the patience!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481240</commentid>
    <comment_count>15</comment_count>
      <attachid>355552</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-11-23 20:02:04 -0800</bug_when>
    <thetext>Created attachment 355552
Adds the support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481241</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-11-23 20:02:40 -0800</bug_when>
    <thetext>Don&apos;t be alarmed by the raw size of the patch. Most of that is from the tests!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481692</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-11-26 14:48:10 -0800</bug_when>
    <thetext>Committed r238524: &lt;https://trac.webkit.org/changeset/238524&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526978</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-04-12 18:35:04 -0700</bug_when>
    <thetext>This fix shipped in iOS 12.2 and Safari 12.1 on macOS.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>316759</attachid>
            <date>2017-07-31 01:01:32 -0700</date>
            <delta_ts>2017-07-31 01:01:32 -0700</delta_ts>
            <desc>Reproduction of unresolved SVG use element in shadow DOM</desc>
            <filename>index.html</filename>
            <type>text/html</type>
            <size>1088</size>
            <attacher>fabian.schwarzkopf</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCiAgPGhlYWQ+DQogICAgPG1ldGEgY2hhcnNldD0iVVRG
LTgiPg0KICAgIDx0aXRsZT50aXRsZTwvdGl0bGU+DQogIDwvaGVhZD4NCiAgPGJvZHk+DQogICAg
PGRpdiBpZD0ic3ZnLWNvbnRhaW5lciI+PC9kaXY+DQogIDwvYm9keT4NCg0KICA8c2NyaXB0Pg0K
ICAgIHZhciBob3N0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N2Zy1jb250YWluZXInKTsN
CiAgICB2YXIgcm9vdCA9IGhvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KTsNCg0KICAg
IHZhciBzdmducyA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7DQogICAgdmFyIHhsaW5r
bnMgPSAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI7DQogICAgdmFyIHN2Z0VsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoc3ZnbnMsICdzdmcnKTsNCiAgICANCiAgICAvLyBj
cmVhdGUgZGVmcyBlbGVtZW50IHdpdGggYSBjaXJjbGUNCiAgICB2YXIgZGVmcyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUyhzdmducywgJ2RlZnMnKTsNCiAgICB2YXIgY2lyY2xlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKHN2Z25zLCAnY2lyY2xlJyk7DQogICAgY2lyY2xlLnNldEF0dHJp
YnV0ZSgnaWQnLCAnY2lyY2xlJykNCiAgICBjaXJjbGUuc2V0QXR0cmlidXRlKCdmaWxsJywgJ3Jl
ZCcpDQogICAgY2lyY2xlLnNldEF0dHJpYnV0ZSgncicsICcyMCcpDQogICAgZGVmcy5hcHBlbmRD
aGlsZChjaXJjbGUpDQogICAgc3ZnRWxlbWVudC5hcHBlbmRDaGlsZChkZWZzKQ0KDQogICAgLy8g
dXNlIHRoZSBjcmljbGUgaW4gdGhlIHN2Zw0KICAgIHZhciB1c2UgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoc3ZnbnMsICd1c2UnKQ0KICAgIHVzZS5zZXRBdHRyaWJ1dGVOUyh4bGlua25zLCAi
aHJlZiIsICIjY2lyY2xlIikNCiAgICB1c2Uuc2V0QXR0cmlidXRlKCd4JywgMjApDQogICAgdXNl
LnNldEF0dHJpYnV0ZSgneScsIDIwKQ0KICAgIA0KICAgIHN2Z0VsZW1lbnQuYXBwZW5kQ2hpbGQo
dXNlKQ0KDQogICAgcm9vdC5hcHBlbmRDaGlsZChzdmdFbGVtZW50KQ0KICA8L3NjcmlwdD4NCjwv
aHRtbD4=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>316946</attachid>
            <date>2017-08-02 00:51:54 -0700</date>
            <delta_ts>2017-08-02 00:51:54 -0700</delta_ts>
            <desc>Extended repro with w3.org example</desc>
            <filename>index.html</filename>
            <type>text/html</type>
            <size>3690</size>
            <attacher>fabian.schwarzkopf</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCjxoZWFkPg0KICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+
DQogIDx0aXRsZT50aXRsZTwvdGl0bGU+DQo8L2hlYWQ+DQo8Ym9keT4NCjxoMz5QcmV2aW91cyBS
ZXBybzwvaDM+DQo8ZGl2IGlkPSJzdmctY29udGFpbmVyIj48L2Rpdj4NCjxoMz5Qcm9ncmFtbWF0
aWMgcmVwcm8gZnJvbSA8YSBocmVmPSJodHRwczovL3d3dy53My5vcmcvVFIvU1ZHL3N0cnVjdC5o
dG1sI1VzZUVsZW1lbnQiPmZpcnN0IHNuaXBwZXQgb24gdzMub3JnI1VzZUVsZW1lbnQ8L2E+PC9o
Mz4NCjxkaXYgaWQ9InN2Zy1jb250YWluZXIyIj48L2Rpdj4NCjxoMz5Jbm5lckhUTUwgcmVwcm8g
ZnJvbSA8YSBocmVmPSJodHRwczovL3d3dy53My5vcmcvVFIvU1ZHL3N0cnVjdC5odG1sI1VzZUVs
ZW1lbnQiPmZpcnN0IHNuaXBwZXQgb24gdzMub3JnI1VzZUVsZW1lbnQ8L2E+PC9oMz4NCjxkaXYg
aWQ9InN2Zy1jb250YWluZXIzIj48L2Rpdj4NCjwvYm9keT4NCg0KPHNjcmlwdD4NCiAgdmFyIHN2
Z25zID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJzsNCiAgdmFyIHhsaW5rbnMgPSAiaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayI7DQoNCiAgLyoqKioqKioqKioqKioqKg0KICAgKiBQ
cmV2aW91cyByZXBybw0KICAgKioqKioqKioqKioqKioqKi8NCiAgdmFyIGhvc3QgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnc3ZnLWNvbnRhaW5lcicpOw0KICB2YXIgcm9vdCA9IGhvc3QuYXR0
YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KTsNCg0KICB2YXIgc3ZnRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUyhzdmducywgJ3N2ZycpOw0KDQogIC8vIGNyZWF0ZSBkZWZzIGVsZW1l
bnQgd2l0aCBhIGNpcmNsZQ0KICB2YXIgZGVmcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhz
dmducywgJ2RlZnMnKTsNCiAgdmFyIGNpcmNsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhz
dmducywgJ2NpcmNsZScpOw0KICBjaXJjbGUuc2V0QXR0cmlidXRlKCdpZCcsICdjaXJjbGUnKQ0K
ICBjaXJjbGUuc2V0QXR0cmlidXRlKCdmaWxsJywgJ3JlZCcpDQogIGNpcmNsZS5zZXRBdHRyaWJ1
dGUoJ3InLCAnMjAnKQ0KICBkZWZzLmFwcGVuZENoaWxkKGNpcmNsZSkNCiAgc3ZnRWxlbWVudC5h
cHBlbmRDaGlsZChkZWZzKQ0KDQogIC8vIHVzZSB0aGUgY3JpY2xlIGluIHRoZSBzdmcNCiAgdmFy
IHVzZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhzdmducywgJ3VzZScpDQogIHVzZS5zZXRB
dHRyaWJ1dGVOUyh4bGlua25zLCAiaHJlZiIsICIjY2lyY2xlIikNCiAgdXNlLnNldEF0dHJpYnV0
ZSgneCcsIDIwKQ0KICB1c2Uuc2V0QXR0cmlidXRlKCd5JywgMjApDQoNCiAgc3ZnRWxlbWVudC5h
cHBlbmRDaGlsZCh1c2UpDQoNCiAgcm9vdC5hcHBlbmRDaGlsZChzdmdFbGVtZW50KQ0KDQogIC8q
KioqKioqKioqKioqKioNCiAgICogUmVwcm8gZnJvbSB0aGUgU1ZHIHNwZWMsIHNlZSBhbHNvIGh0
dHBzOi8vd3d3LnczLm9yZy9UUi9TVkcvc3RydWN0Lmh0bWwjVXNlRWxlbWVudA0KICAgKioqKioq
KioqKioqKioqKi8NCiAgdmFyIGhvc3QyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N2Zy1j
b250YWluZXIyJyk7DQogIHZhciByb290MiA9IGhvc3QyLmF0dGFjaFNoYWRvdyh7bW9kZTogJ29w
ZW4nfSk7DQoNCiAgdmFyIHN2Z0VsZW1lbnQyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN2
Z25zLCAnc3ZnJyk7DQogIHN2Z0VsZW1lbnQyLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCAnMTBjbScp
DQogIHN2Z0VsZW1lbnQyLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgJzNjbScpDQogIHN2Z0VsZW1l
bnQyLnNldEF0dHJpYnV0ZSgndmlld0JveCcsICcwIDAgMTAwIDMwJykNCg0KICB2YXIgZGVmczIg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoc3ZnbnMsICdkZWZzJyk7DQogIHZhciByZWN0ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN2Z25zLCAncmVjdCcpOw0KICByZWN0LnNldEF0dHJp
YnV0ZSgnaWQnLCAnTXlSZWN0JykNCiAgcmVjdC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgJzYwJykN
CiAgcmVjdC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsICcxMCcpDQogIGRlZnMyLmFwcGVuZENoaWxk
KHJlY3QpDQogIHN2Z0VsZW1lbnQyLmFwcGVuZENoaWxkKGRlZnMyKQ0KDQogIHZhciBvdXRsaW5l
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN2Z25zLCAncmVjdCcpOw0KICBvdXRsaW5lLnNl
dEF0dHJpYnV0ZSgnaWQnLCAnTXlSZWN0JykNCiAgb3V0bGluZS5zZXRBdHRyaWJ1dGUoJ3gnLCAn
LjEnKQ0KICBvdXRsaW5lLnNldEF0dHJpYnV0ZSgneScsICcuMScpDQogIG91dGxpbmUuc2V0QXR0
cmlidXRlKCd3aWR0aCcsICc5OS44JykNCiAgb3V0bGluZS5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcs
ICcyOS44JykNCiAgb3V0bGluZS5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCAnbm9uZScpDQogIG91dGxp
bmUuc2V0QXR0cmlidXRlKCdzdHJva2UnLCAnYmx1ZScpDQogIG91dGxpbmUuc2V0QXR0cmlidXRl
KCdzdHJva2Utd2lkdGgnLCAnLjInKQ0KICBzdmdFbGVtZW50Mi5hcHBlbmRDaGlsZChvdXRsaW5l
KQ0KDQogIHZhciB1c2UyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN2Z25zLCAndXNlJykN
CiAgdXNlMi5zZXRBdHRyaWJ1dGVOUyh4bGlua25zLCAiaHJlZiIsICIjTXlSZWN0IikNCiAgdXNl
Mi5zZXRBdHRyaWJ1dGUoJ3gnLCAyMCkNCiAgdXNlMi5zZXRBdHRyaWJ1dGUoJ3knLCAxMCkNCg0K
ICBzdmdFbGVtZW50Mi5hcHBlbmRDaGlsZCh1c2UyKQ0KDQogIHJvb3QyLmFwcGVuZENoaWxkKHN2
Z0VsZW1lbnQyKQ0KDQogIC8qKioqKioqKioqKioqKioNCiAgICogUmVwcm8gZnJvbSB0aGUgU1ZH
IHNwZWMsIHNlZSBhbHNvIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9TVkcvc3RydWN0Lmh0bWwjVXNl
RWxlbWVudA0KICAgKg0KICAgKiBqdXN0IGlubGluaW5nIHRoZSBzdmcgaW5zdGVhZCBvZiBjcmVh
dGluZyBpdCBwcm9ncmFtbWF0aWNhbGx5DQogICAqKioqKioqKioqKioqKioqLw0KICB2YXIgaG9z
dDMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3ZnLWNvbnRhaW5lcjMnKTsNCiAgdmFyIHJv
b3QzID0gaG9zdDMuYXR0YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KTsNCg0KICB2YXIgZGl2RWxl
bSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpDQogIGRpdkVsZW0uaW5uZXJIVE1MID0g
YDxzdmcgd2lkdGg9IjEwY20iIGhlaWdodD0iM2NtIiB2aWV3Qm94PSIwIDAgMTAwIDMwIiB2ZXJz
aW9uPSIxLjEiDQogICAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPg0KICA8ZGVzYz5FeGFtcGxlIFVz
ZTAxIC0gU2ltcGxlIGNhc2Ugb2YgJ3VzZScgb24gYSAncmVjdCc8L2Rlc2M+DQogIDxkZWZzPg0K
ICAgIDxyZWN0IGlkPSJNeVJlY3QiIHdpZHRoPSI2MCIgaGVpZ2h0PSIxMCIvPg0KICA8L2RlZnM+
DQogIDxyZWN0IHg9Ii4xIiB5PSIuMSIgd2lkdGg9Ijk5LjgiIGhlaWdodD0iMjkuOCINCiAgICAg
ICAgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibHVlIiBzdHJva2Utd2lkdGg9Ii4yIiAvPg0KICA8dXNl
IHg9IjIwIiB5PSIxMCIgeGxpbms6aHJlZj0iI015UmVjdCIgLz4NCjwvc3ZnPmANCiAgcm9vdDMu
YXBwZW5kQ2hpbGQoZGl2RWxlbSkNCg0KPC9zY3JpcHQ+DQo8L2h0bWw+
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355552</attachid>
            <date>2018-11-23 20:02:04 -0800</date>
            <delta_ts>2018-11-26 14:08:57 -0800</delta_ts>
            <desc>Adds the support</desc>
            <filename>bug-174977-20181123200202.patch</filename>
            <type>text/plain</type>
            <size>49129</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzODQ2NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDE4LTExLTIzICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFNWRyB1c2UgZWxlbWVudCBpbnNp
ZGUgYSBzaGFkb3cgdHJlZSBjYW5ub3QgcmVmZXJlbmNlIGFuIGVsZW1lbnQgaW4gdGhlIHNhbWUg
dHJlZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0
OTc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMzY2NTYzNj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIGZyYWdtZW50IFVSTCByZWZlcmVu
Y2VzIHVzZWQgYnkgU1ZHZWxlbWVudHMgd2l0aGluIGEgc2hhZG93IHRyZWUgdG8gcmVmZXIgdG8g
b3RoZXIgZWxlbWVudHMKKyAgICAgICAgaW4gdGhlIHNhbWUgc2hhZG93IHRyZWUuIFRvIGRvIHRo
aXMsIHRoaXMgcGF0Y2ggbWFrZXMgdGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcgdGFrZSBhIFRy
ZWVTY29wZQorICAgICAgICBpbnN0ZWFkIG9mIGEgRG9jdW1lbnQsIGFuZCB1cGRhdGVzIGl0cyBj
YWxsIHNpdGVzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyB0aGUgbW9zdCB1c2VzIG9m
IHRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nIGV4Y2VwdCBDU1MgY3Vyc29yIGltYWdlLCBhbHRH
cmFwaCwKKyAgICAgICAgYW5kIGdseXBoUmVmIHNpbmNlIHRoZSBjdXJzb3IgaW1hZ2UgaXNuJ3Qg
cmVhbGx5IGEgU1ZHIGZlYXR1cmUsIGFuZCB0aGVyZSBhcmVuJ3QgcmVhbGx5IHJlYWwgd29ybGQK
KyAgICAgICAgdXNlIGNhc2VzIGluIHdoaWNoIGFsdEdyYXBoIGFuZCBnbHlwaFJlZiBhcmUgdXNl
ZCB3aXRoaW4gc2hhZG93IHRyZWVzLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3NoYWRvdy1kb20v
c3ZnLWFuaW1hdGUtaHJlZi1jaGFuZ2UtaW4tc2hhZG93LXRyZWUuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9zaGFkb3ctZG9tL3N2Zy1hbmltYXRlLWhyZWYtaW4tc2hhZG93LXRyZWUuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9zaGFkb3ctZG9tL3N2Zy1mZWltYWdlLWhyZWYtaW4tc2hhZG93
LXRyZWUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9zaGFkb3ctZG9tL3N2Zy1saW5lYXItZ3Jh
ZGllbnQtaHJlZi1pbi1zaGFkb3ctdHJlZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3NoYWRv
dy1kb20vc3ZnLW1wYXRoLWhyZWYtY2hhbmdlLWluLXNoYWRvdy10cmVlLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3Qvc2hhZG93LWRvbS9zdmctbXBhdGgtaHJlZi1pbi1zaGFkb3ctdHJlZS5odG1s
CisgICAgICAgICAgICAgICBmYXN0L3NoYWRvdy1kb20vc3ZnLXJhZGlhbC1ncmFkaWVudC1ocmVm
LWluLXNoYWRvdy10cmVlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2hhZG93LWRvbS9zdmct
dGV4dC1wYXRoLWhyZWYtY2hhbmdlLWluLXNoYWRvdy10cmVlLmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3Qvc2hhZG93LWRvbS9zdmctdGV4dC1wYXRoLWhyZWYtaW4tc2hhZG93LXRyZWUuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9zaGFkb3ctZG9tL3N2Zy10aHJlZi1ocmVmLWNoYW5nZS1pbi1z
aGFkb3ctdHJlZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3NoYWRvdy1kb20vc3ZnLXRocmVm
LWhyZWYtaW4tc2hhZG93LXRyZWUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9zaGFkb3ctZG9t
L3N2Zy11c2UtaHJlZi1jaGFuZ2UtaW4tc2hhZG93LXRyZWUuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9zaGFkb3ctZG9tL3N2Zy11c2UtaHJlZi1pbi1zaGFkb3ctdHJlZS5odG1sCisKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTVkdFbGVtZW50Ojp0YXJnZXRGb3JVc2VFbGVtZW50IGNv
bnN0KToKKyAgICAgICAgKiBjc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdUZXh0UGF0aDo6bGF5b3V0UGF0aCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0Fs
dEdseXBoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbHRHbHlwaEVsZW1lbnQ6
Omhhc1ZhbGlkR2x5cGhFbGVtZW50cyBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZFBl
bmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6YnVp
bGQpOgorICAgICAgICAqIHN2Zy9TVkdHbHlwaFJlZkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHR2x5cGhSZWZFbGVtZW50OjpoYXNWYWxpZEdseXBoRWxlbWVudCBjb25zdCk6Cisg
ICAgICAgICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMp
OgorICAgICAgICAqIHN2Zy9TVkdNUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTVBhdGhFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdNUGF0aEVsZW1lbnQ6OnBhdGhFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JhZGlhbEdyYWRpZW50
RWxlbWVudDo6Y29sbGVjdEdyYWRpZW50QXR0cmlidXRlcyk6CisgICAgICAgICogc3ZnL1NWR1RS
ZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50OjpidWlsZFBl
bmRpbmdSZXNvdXJjZSk6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UGF0aEVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNl
KToKKyAgICAgICAgKiBzdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcpOgorICAgICAgICAq
IHN2Zy9TVkdVUklSZWZlcmVuY2UuaDoKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojp1cGRhdGVTaGFkb3dUcmVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmZpbmRUYXJnZXQgY29uc3QpOgorICAgICAg
ICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU01JTEVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1NNSUxFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdl
OjpGRUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmNyZWF0ZVdpdGhJUklSZWZl
cmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZTo6cmVmZXJlbmNlZFJlbmRlcmVyIGNv
bnN0KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmg6CisKIDIw
MTgtMTEtMjMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
V2ViQXV0aE5dIEVuYWJsZSBXZWIgQXV0aGVudGljYXRpb24gYXMgYW4gZXhwZXJpbWVudGFsIGZl
YXR1cmUgZm9yIG1hY09TCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMjM4NDY0KQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCog
QWNjZXNzaWJpbGl0eVNWR0VsZQogICAgIGlmIChocmVmLmlzRW1wdHkoKSkKICAgICAgICAgaHJl
ZiA9IGdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmhyZWZBdHRyKTsKIAotICAgIGF1dG8gdGFyZ2V0
ID0gU1ZHVVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhocmVmLCB1c2Uu
ZG9jdW1lbnQoKSk7CisgICAgYXV0byB0YXJnZXQgPSBTVkdVUklSZWZlcmVuY2U6OnRhcmdldEVs
ZW1lbnRGcm9tSVJJU3RyaW5nKGhyZWYsIHVzZS50cmVlU2NvcGUoKSk7CiAgICAgaWYgKCF0YXJn
ZXQuZWxlbWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGF4T2JqZWN0
Q2FjaGUoKS0+Z2V0T3JDcmVhdGUodGFyZ2V0LmVsZW1lbnQuZ2V0KCkpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcAkocmV2aXNpb24gMjM4NDY0KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NCw2ICs2NCw3IEBAIFN0cmluZyBDU1NDdXJzb3JJbWFnZVZhbHVlOjpjdXN0b21D
U1NUZXgKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKKy8vIEZJWE1FOiBTaG91
bGQgdGhpcyBmdW5jdGlvbiB0YWtlIGEgVHJlZVNjb3BlIGluc3RlYWQ/CiBTVkdDdXJzb3JFbGVt
ZW50KiBDU1NDdXJzb3JJbWFnZVZhbHVlOjp1cGRhdGVDdXJzb3JFbGVtZW50KGNvbnN0IERvY3Vt
ZW50JiBkb2N1bWVudCkKIHsKICAgICBpZiAoIW1fb3JpZ2luYWxVUkwuaGFzRnJhZ21lbnRJZGVu
dGlmaWVyKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Rl
eHRQYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1RleHRQYXRoLmNwcAkocmV2aXNpb24gMjM4NDY0KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDcgKzQ2LDcgQEAgU1ZHVGV4dFBhdGhFbGVtZW50JiBSZW5kZXJTVkdUZXh0UGF0aDo6dAogCiBQ
YXRoIFJlbmRlclNWR1RleHRQYXRoOjpsYXlvdXRQYXRoKCkgY29uc3QKIHsKLSAgICBhdXRvIHRh
cmdldCA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcodGV4dFBh
dGhFbGVtZW50KCkuaHJlZigpLCBkb2N1bWVudCgpKTsKKyAgICBhdXRvIHRhcmdldCA9IFNWR1VS
SVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcodGV4dFBhdGhFbGVtZW50KCku
aHJlZigpLCB0ZXh0UGF0aEVsZW1lbnQoKS50cmVlU2NvcGUoKSk7CiAgICAgaWYgKCFpczxTVkdQ
YXRoRWxlbWVudD4odGFyZ2V0LmVsZW1lbnQpKQogICAgICAgICByZXR1cm4gUGF0aCgpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcAkocmV2aXNpb24g
MjM4NDY0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNW
R0FsdEdseXBoRWxlbQogCiBib29sIFNWR0FsdEdseXBoRWxlbWVudDo6aGFzVmFsaWRHbHlwaEVs
ZW1lbnRzKFZlY3RvcjxTdHJpbmc+JiBnbHlwaE5hbWVzKSBjb25zdAogeworICAgIC8vIE5vIG5l
ZWQgdG8gc3VwcG9ydCBhbHRHbHlwaCByZWZlcmVuY2luZyBhbm90aGVyIG5vZGUgaW5zaWRlIGEg
c2hhZG93IHRyZWUuCiAgICAgYXV0byB0YXJnZXQgPSB0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmlu
ZyhnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmhyZWZBdHRyLCBYTGlua05hbWVzOjpocmVmQXR0ciks
IGRvY3VtZW50KCkpOwogCiAgICAgaWYgKGlzPFNWR0dseXBoRWxlbWVudD4odGFyZ2V0LmVsZW1l
bnQpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDIzODQ2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVu
dDo6YnVpbGRQZW5kaW5nUmVzbwogICAgIGlmICghaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byB0YXJnZXQgPSBTVkdVUklSZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRG
cm9tSVJJU3RyaW5nKGhyZWYoKSwgZG9jdW1lbnQoKSk7CisgICAgYXV0byB0YXJnZXQgPSBTVkdV
UklSZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGhyZWYoKSwgdHJlZVNjb3Bl
KCkpOwogICAgIGlmICghdGFyZ2V0LmVsZW1lbnQpIHsKICAgICAgICAgaWYgKHRhcmdldC5pZGVu
dGlmaWVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlcXVlc3RJbWFnZVJlc291cmNlKCk7CkBA
IC0xODksNyArMTg5LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVJbWFnZUVsZW1lbnQ6
OgogewogICAgIGlmIChtX2NhY2hlZEltYWdlKQogICAgICAgICByZXR1cm4gRkVJbWFnZTo6Y3Jl
YXRlV2l0aEltYWdlKGZpbHRlciwgbV9jYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5k
ZXJlcigpKSwgcHJlc2VydmVBc3BlY3RSYXRpbygpKTsKLSAgICByZXR1cm4gRkVJbWFnZTo6Y3Jl
YXRlV2l0aElSSVJlZmVyZW5jZShmaWx0ZXIsIGRvY3VtZW50KCksIGhyZWYoKSwgcHJlc2VydmVB
c3BlY3RSYXRpbygpKTsKKyAgICByZXR1cm4gRkVJbWFnZTo6Y3JlYXRlV2l0aElSSVJlZmVyZW5j
ZShmaWx0ZXIsIHRyZWVTY29wZSgpLCBocmVmKCksIHByZXNlcnZlQXNwZWN0UmF0aW8oKSk7CiB9
CiAKIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhM
aXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dseXBoUmVmRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dseXBoUmVmRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzODQ2NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHbHlwaFJlZkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3
IEBAIGJvb2wgU1ZHR2x5cGhSZWZFbGVtZW50OjpoYXNWYWxpZEdseXBoRWwKIHsKICAgICAvLyBG
SVhNRTogV2Ugb25seSBzdXBwb3J0IHhsaW5rOmhyZWYgc28gZmFyLgogICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDc4NworICAgIC8vIE5vIG5lZWQgdG8g
c3VwcG9ydCBnbHlwaFJlZiByZWZlcmVuY2luZyBhbm90aGVyIG5vZGUgaW5zaWRlIGEgc2hhZG93
IHRyZWUuCiAgICAgYXV0byB0YXJnZXQgPSB0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhnZXRB
dHRyaWJ1dGUoU1ZHTmFtZXM6OmhyZWZBdHRyLCBYTGlua05hbWVzOjpocmVmQXR0ciksIGRvY3Vt
ZW50KCkpOwogICAgIGdseXBoTmFtZSA9IHRhcmdldC5pZGVudGlmaWVyOwogICAgIHJldHVybiBp
czxTVkdHbHlwaEVsZW1lbnQ+KHRhcmdldC5lbGVtZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzg0NjQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ5LDcgKzE0OSw3IEBAIGJvb2wgU1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50Ojpjb2xsZWN0R3IKIAogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIC8vIFJlc3BlY3Qg
eGxpbms6aHJlZiwgdGFrZSBhdHRyaWJ1dGVzIGZyb20gcmVmZXJlbmNlZCBlbGVtZW50Ci0gICAg
ICAgIGF1dG8gdGFyZ2V0ID0gU1ZHVVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0
cmluZyhjdXJyZW50LT5ocmVmKCksIGRvY3VtZW50KCkpOworICAgICAgICBhdXRvIHRhcmdldCA9
IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoY3VycmVudC0+aHJl
ZigpLCB0cmVlU2NvcGUoKSk7CiAgICAgICAgIGlmIChpczxTVkdHcmFkaWVudEVsZW1lbnQ+KHRh
cmdldC5lbGVtZW50KSkgewogICAgICAgICAgICAgY3VycmVudCA9IGRvd25jYXN0PFNWR0dyYWRp
ZW50RWxlbWVudD4oKnRhcmdldC5lbGVtZW50KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01QYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R01QYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzODQ2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHZv
aWQgU1ZHTVBhdGhFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXIKICAgICBpZiAoIWlzQ29ubmVj
dGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gdGFyZ2V0ID0gU1ZHVVJJUmVmZXJl
bmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhocmVmKCksIGRvY3VtZW50KCkpOworICAg
IGF1dG8gdGFyZ2V0ID0gU1ZHVVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmlu
ZyhocmVmKCksIHRyZWVTY29wZSgpKTsKICAgICBpZiAoIXRhcmdldC5lbGVtZW50KSB7CiAgICAg
ICAgIC8vIERvIG5vdCByZWdpc3RlciBhcyBwZW5kaW5nIGlmIHdlIGFyZSBhbHJlYWR5IHBlbmRp
bmcgdGhpcyByZXNvdXJjZS4KICAgICAgICAgaWYgKGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5z
aW9ucygpLmlzUGVuZGluZ1Jlc291cmNlKHRoaXMsIHRhcmdldC5pZGVudGlmaWVyKSkKQEAgLTEy
MSw3ICsxMjEsNyBAQCB2b2lkIFNWR01QYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlCiAK
IFJlZlB0cjxTVkdQYXRoRWxlbWVudD4gU1ZHTVBhdGhFbGVtZW50OjpwYXRoRWxlbWVudCgpCiB7
Ci0gICAgYXV0byB0YXJnZXQgPSB0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhocmVmKCksIGRv
Y3VtZW50KCkpOworICAgIGF1dG8gdGFyZ2V0ID0gdGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmco
aHJlZigpLCB0cmVlU2NvcGUoKSk7CiAgICAgaWYgKGlzPFNWR1BhdGhFbGVtZW50Pih0YXJnZXQu
ZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxTVkdQYXRoRWxlbWVudD4odGFyZ2V0
LmVsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDIzODQ2
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjEsNyArMTYxLDcgQEAgYm9vbCBTVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQ6OmNvbGxlY3RHcgogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgLy8gUmVzcGVj
dCB4bGluazpocmVmLCB0YWtlIGF0dHJpYnV0ZXMgZnJvbSByZWZlcmVuY2VkIGVsZW1lbnQKLSAg
ICAgICAgYXV0byB0YXJnZXQgPSBTVkdVUklSZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJ
U3RyaW5nKGN1cnJlbnQtPmhyZWYoKSwgZG9jdW1lbnQoKSk7CisgICAgICAgIGF1dG8gdGFyZ2V0
ID0gU1ZHVVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhjdXJyZW50LT5o
cmVmKCksIHRyZWVTY29wZSgpKTsKICAgICAgICAgaWYgKGlzPFNWR0dyYWRpZW50RWxlbWVudD4o
dGFyZ2V0LmVsZW1lbnQpKSB7CiAgICAgICAgICAgICBjdXJyZW50ID0gZG93bmNhc3Q8U1ZHR3Jh
ZGllbnRFbGVtZW50Pih0YXJnZXQuZWxlbWVudC5nZXQoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RSZWZFbGVtZW50LmNwcAkocmV2aXNpb24gMjM4NDY0KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMwLDcgKzIzMCw3
IEBAIHZvaWQgU1ZHVFJlZkVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmMKICAgICBpZiAoIWlz
Q29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gdGFyZ2V0ID0gU1ZHVVJJ
UmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhocmVmKCksIGRvY3VtZW50KCkp
OworICAgIGF1dG8gdGFyZ2V0ID0gU1ZHVVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlS
SVN0cmluZyhocmVmKCksIHRyZWVTY29wZSgpKTsKICAgICBpZiAoIXRhcmdldC5lbGVtZW50KSB7
CiAgICAgICAgIGlmICh0YXJnZXQuaWRlbnRpZmllci5pc0VtcHR5KCkpCiAgICAgICAgICAgICBy
ZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAko
cmV2aXNpb24gMjM4NDY0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIFNWR1RleHRQYXRo
RWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzCiAgICAgaWYgKCFpc0Nvbm5lY3RlZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRvIHRhcmdldCA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxl
bWVudEZyb21JUklTdHJpbmcoaHJlZigpLCBkb2N1bWVudCgpKTsKKyAgICBhdXRvIHRhcmdldCA9
IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoaHJlZigpLCB0cmVl
U2NvcGUoKSk7CiAgICAgaWYgKCF0YXJnZXQuZWxlbWVudCkgewogICAgICAgICAvLyBEbyBub3Qg
cmVnaXN0ZXIgYXMgcGVuZGluZyBpZiB3ZSBhcmUgYWxyZWFkeSBwZW5kaW5nIHRoaXMgcmVzb3Vy
Y2UuCiAgICAgICAgIGlmIChkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5pc1BlbmRp
bmdSZXNvdXJjZSh0aGlzLCB0YXJnZXQuaWRlbnRpZmllcikpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAkocmV2aXNpb24gMjM4NDY0KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcg
QEAgU3RyaW5nIFNWR1VSSVJlZmVyZW5jZTo6ZnJhZ21lbnRJZGVudGlmaQogICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogfQogCi1hdXRvIFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZy
b21JUklTdHJpbmcoY29uc3QgU3RyaW5nJiBpcmksIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwg
UmVmUHRyPERvY3VtZW50PiBleHRlcm5hbERvY3VtZW50KSAtPiBUYXJnZXRFbGVtZW50UmVzdWx0
CithdXRvIFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoY29uc3Qg
U3RyaW5nJiBpcmksIGNvbnN0IFRyZWVTY29wZSYgdHJlZVNjb3BlLCBSZWZQdHI8RG9jdW1lbnQ+
IGV4dGVybmFsRG9jdW1lbnQpIC0+IFRhcmdldEVsZW1lbnRSZXN1bHQKIHsKICAgICAvLyBJZiB0
aGVyZSdzIG5vIGZyYWdtZW50IGlkZW50aWZpZXIgY29udGFpbmVkIHdpdGhpbiB0aGUgSVJJIHN0
cmluZywgd2UgY2FuJ3QgbG9va3VwIGFuIGVsZW1lbnQuCiAgICAgc2l6ZV90IHN0YXJ0T2ZGcmFn
bWVudElkZW50aWZpZXIgPSBpcmkuZmluZCgnIycpOwpAQCAtOTksNiArOTksNyBAQCBhdXRvIFNW
R1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JCiAgICAgaWYgKGlkLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHsgfTsKIAorICAgIGF1dG8mIGRvY3VtZW50ID0gdHJlZVNjb3BlLmRv
Y3VtZW50U2NvcGUoKTsKICAgICBhdXRvIHVybCA9IGRvY3VtZW50LmNvbXBsZXRlVVJMKGlyaSk7
CiAgICAgaWYgKGV4dGVybmFsRG9jdW1lbnQpIHsKICAgICAgICAgLy8gRW5mb3JjZSB0aGF0IHRo
ZSByZWZlcmVuY2VkIHVybCBtYXRjaGVzIHRoZSB1cmwgb2YgdGhlIGRvY3VtZW50IHRoYXQgd2Un
dmUgbG9hZGVkIGZvciBpdCEKQEAgLTExMCw3ICsxMTEsNyBAQCBhdXRvIFNWR1VSSVJlZmVyZW5j
ZTo6dGFyZ2V0RWxlbWVudEZyb21JCiAgICAgaWYgKGlzRXh0ZXJuYWxVUklSZWZlcmVuY2UoaXJp
LCBkb2N1bWVudCkpCiAgICAgICAgIHJldHVybiB7IG51bGxwdHIsIFdURk1vdmUoaWQpIH07CiAK
LSAgICByZXR1cm4geyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCksIFdURk1vdmUoaWQpIH07
CisgICAgcmV0dXJuIHsgdHJlZVNjb3BlLmdldEVsZW1lbnRCeUlkKGlkKSwgV1RGTW92ZShpZCkg
fTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuaAkocmV2aXNp
b24gMjM4NDY0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVmUHRyPEVsZW1l
bnQ+IGVsZW1lbnQ7CiAgICAgICAgIFN0cmluZyBpZGVudGlmaWVyOwogICAgIH07Ci0gICAgc3Rh
dGljIFRhcmdldEVsZW1lbnRSZXN1bHQgdGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoY29uc3Qg
U3RyaW5nJiwgY29uc3QgRG9jdW1lbnQmLCBSZWZQdHI8RG9jdW1lbnQ+IGV4dGVybmFsRG9jdW1l
bnQgPSBudWxscHRyKTsKKyAgICBzdGF0aWMgVGFyZ2V0RWxlbWVudFJlc3VsdCB0YXJnZXRFbGVt
ZW50RnJvbUlSSVN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBUcmVlU2NvcGUmLCBSZWZQdHI8
RG9jdW1lbnQ+IGV4dGVybmFsRG9jdW1lbnQgPSBudWxscHRyKTsKIAogICAgIHN0YXRpYyBib29s
IGlzRXh0ZXJuYWxVUklSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiB1cmksIGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyMzg0NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNywxMCArMjM3LDYgQEAgdm9pZCBTVkdVc2VFbGVtZW50
Ojp1cGRhdGVTaGFkb3dUcmVlKCkKICAgICAgICAgcmV0dXJuOwogICAgIGRvY3VtZW50KCkucmVt
b3ZlU1ZHVXNlRWxlbWVudCgqdGhpcyk7CiAKLSAgICAvLyBGSVhNRTogRW5hYmxlIFNWRyB1c2Ug
ZWxlbWVudHMgaW4gc2hhZG93IHRyZWVzLgotICAgIGlmIChpc0luU2hhZG93VHJlZSgpKQotICAg
ICAgICByZXR1cm47Ci0KICAgICBTdHJpbmcgdGFyZ2V0SUQ7CiAgICAgYXV0byogdGFyZ2V0ID0g
ZmluZFRhcmdldCgmdGFyZ2V0SUQpOwogICAgIGlmICghdGFyZ2V0KSB7CkBAIC00MTAsNyArNDA2
LDcgQEAgU1ZHRWxlbWVudCogU1ZHVXNlRWxlbWVudDo6ZmluZFRhcmdldChTdAogICAgIGF1dG8q
IGNvcnJlc3BvbmRpbmdFbGVtZW50ID0gdGhpcy0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKTsKICAg
ICBhdXRvJiBvcmlnaW5hbCA9IGNvcnJlc3BvbmRpbmdFbGVtZW50ID8gZG93bmNhc3Q8U1ZHVXNl
RWxlbWVudD4oKmNvcnJlc3BvbmRpbmdFbGVtZW50KSA6ICp0aGlzOwogCi0gICAgYXV0byB0YXJn
ZXRSZXN1bHQgPSB0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhvcmlnaW5hbC5ocmVmKCksIG9y
aWdpbmFsLmRvY3VtZW50KCksIG9yaWdpbmFsLmV4dGVybmFsRG9jdW1lbnQoKSk7CisgICAgYXV0
byB0YXJnZXRSZXN1bHQgPSB0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhvcmlnaW5hbC5ocmVm
KCksIG9yaWdpbmFsLnRyZWVTY29wZSgpLCBvcmlnaW5hbC5leHRlcm5hbERvY3VtZW50KCkpOwog
ICAgIGlmICh0YXJnZXRJRCkgewogICAgICAgICAqdGFyZ2V0SUQgPSBXVEZNb3ZlKHRhcmdldFJl
c3VsdC5pZGVudGlmaWVyKTsKICAgICAgICAgLy8gSWYgdGhlIHJlZmVyZW5jZSBpcyBleHRlcm5h
bCwgZG9uJ3QgcmV0dXJuIHRoZSB0YXJnZXQgSUQgdG8gdGhlIGNhbGxlci4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCShyZXZpc2lv
biAyMzg0NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlNWR1BhcnNl
clV0aWxpdGllcy5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdV
UklSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTVkdVc2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiWExp
bmtOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KQEAgLTE4NCw3ICsxODUsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50
OjpidWlsZFBlbmRpbmdSZXNvdXJjCiAgICAgaWYgKGhyZWYuaXNFbXB0eSgpKQogICAgICAgICB0
YXJnZXQgPSBwYXJlbnRFbGVtZW50KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGF1dG8gcmVzdWx0
ID0gU1ZHVVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhocmVmLnN0cmlu
ZygpLCBkb2N1bWVudCgpKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBTVkdVUklSZWZlcmVuY2U6
OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGhyZWYuc3RyaW5nKCksIHRyZWVTY29wZSgpKTsK
ICAgICAgICAgdGFyZ2V0ID0gV1RGTW92ZShyZXN1bHQuZWxlbWVudCk7CiAgICAgICAgIGlkID0g
V1RGTW92ZShyZXN1bHQuaWRlbnRpZmllcik7CiAgICAgfQpAQCAtMjY1LDcgKzI2Niw3IEBAIE5v
ZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IFNWR1NNSUwKICAgICAgICAgcmV0dXJuIElu
c2VydGVkSW50b0FuY2VzdG9yUmVzdWx0OjpEb25lOwogCiAgICAgLy8gVmVyaWZ5IHdlIGFyZSBu
b3QgaW4gPHVzZT4gaW5zdGFuY2UgdHJlZS4KLSAgICBBU1NFUlQoIWlzSW5TaGFkb3dUcmVlKCkp
OworICAgIEFTU0VSVCghaXNJblNoYWRvd1RyZWUoKSB8fCAhaXM8U1ZHVXNlRWxlbWVudD4oc2hh
ZG93SG9zdCgpKSk7CiAKICAgICB1cGRhdGVBdHRyaWJ1dGVOYW1lKCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCShy
ZXZpc2lvbiAyMzg0NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTQgKzM4LDEzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIEZFSW1hZ2U6OkZFSW1hZ2UoRmlsdGVyJiBmaWx0ZXIsIFJlZlB0cjxJbWFn
ZT4gaW1hZ2UsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgcHJlc2VydmVBc3Bl
Y3RSYXRpbykKICAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIpCiAgICAgLCBtX2ltYWdlKGltYWdl
KQotICAgICwgbV9kb2N1bWVudChudWxscHRyKQogICAgICwgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlv
KHByZXNlcnZlQXNwZWN0UmF0aW8pCiB7CiB9CiAKLUZFSW1hZ2U6OkZFSW1hZ2UoRmlsdGVyJiBm
aWx0ZXIsIERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0aW8pCitGRUltYWdlOjpG
RUltYWdlKEZpbHRlciYgZmlsdGVyLCBUcmVlU2NvcGUmIHRyZWVTY29wZSwgY29uc3QgU3RyaW5n
JiBocmVmLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0
UmF0aW8pCiAgICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyKQotICAgICwgbV9kb2N1bWVudCgmZG9j
dW1lbnQpCisgICAgLCBtX3RyZWVTY29wZSgmdHJlZVNjb3BlKQogICAgICwgbV9ocmVmKGhyZWYp
CiAgICAgLCBtX3ByZXNlcnZlQXNwZWN0UmF0aW8ocHJlc2VydmVBc3BlY3RSYXRpbykKIHsKQEAg
LTU2LDkgKzU1LDkgQEAgUmVmPEZFSW1hZ2U+IEZFSW1hZ2U6OmNyZWF0ZVdpdGhJbWFnZShGaQog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFSW1hZ2UoZmlsdGVyLCBpbWFnZSwgcHJlc2VydmVB
c3BlY3RSYXRpbykpOwogfQogCi1SZWY8RkVJbWFnZT4gRkVJbWFnZTo6Y3JlYXRlV2l0aElSSVJl
ZmVyZW5jZShGaWx0ZXImIGZpbHRlciwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcm
IGhyZWYsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgcHJlc2VydmVBc3BlY3RS
YXRpbykKK1JlZjxGRUltYWdlPiBGRUltYWdlOjpjcmVhdGVXaXRoSVJJUmVmZXJlbmNlKEZpbHRl
ciYgZmlsdGVyLCBUcmVlU2NvcGUmIHRyZWVTY29wZSwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25z
dCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0aW8pCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVJbWFnZShmaWx0ZXIsIGRvY3VtZW50LCBocmVmLCBw
cmVzZXJ2ZUFzcGVjdFJhdGlvKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVJbWFnZShm
aWx0ZXIsIHRyZWVTY29wZSwgaHJlZiwgcHJlc2VydmVBc3BlY3RSYXRpbykpOwogfQogCiB2b2lk
IEZFSW1hZ2U6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKQEAgLTgwLDkgKzc5LDkgQEAg
dm9pZCBGRUltYWdlOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdAogCiBSZW5kZXJFbGVtZW50
KiBGRUltYWdlOjpyZWZlcmVuY2VkUmVuZGVyZXIoKSBjb25zdAogewotICAgIGlmICghbV9kb2N1
bWVudCkKKyAgICBpZiAoIW1fdHJlZVNjb3BlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICBhdXRvIHRhcmdldCA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJp
bmcobV9ocmVmLCAqbV9kb2N1bWVudCk7CisgICAgYXV0byB0YXJnZXQgPSBTVkdVUklSZWZlcmVu
Y2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKG1faHJlZiwgKm1fdHJlZVNjb3BlKTsKICAg
ICBpZiAoIWlzPFNWR0VsZW1lbnQ+KHRhcmdldC5lbGVtZW50KSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgcmV0dXJuIHRhcmdldC5lbGVtZW50LT5yZW5kZXJlcigpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAkocmV2
aXNpb24gMjM4NDY0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMiArMzQsMTIgQEAgY2xhc3MgUmVuZGVy
RWxlbWVudDsKIGNsYXNzIEZFSW1hZ2UgZmluYWwgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPEZFSW1hZ2U+IGNyZWF0ZVdpdGhJbWFnZShGaWx0ZXImLCBS
ZWZQdHI8SW1hZ2U+LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmKTsKLSAgICBz
dGF0aWMgUmVmPEZFSW1hZ2U+IGNyZWF0ZVdpdGhJUklSZWZlcmVuY2UoRmlsdGVyJiwgRG9jdW1l
bnQmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmKTsK
KyAgICBzdGF0aWMgUmVmPEZFSW1hZ2U+IGNyZWF0ZVdpdGhJUklSZWZlcmVuY2UoRmlsdGVyJiwg
VHJlZVNjb3BlJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1Zh
bHVlJik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB+RkVJbWFnZSgpID0gZGVmYXVsdDsKICAg
ICBGRUltYWdlKEZpbHRlciYsIFJlZlB0cjxJbWFnZT4sIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0
UmF0aW9WYWx1ZSYpOwotICAgIEZFSW1hZ2UoRmlsdGVyJiwgRG9jdW1lbnQmLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmKTsKKyAgICBGRUltYWdlKEZp
bHRlciYsIFRyZWVTY29wZSYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0
UmF0aW9WYWx1ZSYpOwogCiAgICAgY29uc3QgY2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJGRUltYWdlIjsgfQogCkBAIC01Myw4ICs1Myw4IEBAIHByaXZhdGU6CiAKICAg
ICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CiAKLSAgICAvLyBtX2RvY3VtZW50IHdpbGwgbmV2ZXIg
YmUgYSBkYW5nbGluZyByZWZlcmVuY2UuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTkyNDMKLSAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKKyAgICAvLyBtX3Ry
ZWVTY29wZSB3aWxsIG5ldmVyIGJlIGEgZGFuZ2xpbmcgcmVmZXJlbmNlLiBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5MjQzCisgICAgVHJlZVNjb3BlKiBtX3Ry
ZWVTY29wZSB7IG51bGxwdHIgfTsKICAgICBTdHJpbmcgbV9ocmVmOwogICAgIFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW9WYWx1ZSBtX3ByZXNlcnZlQXNwZWN0UmF0aW87CiB9OwpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMjM4NDY0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMTgtMTEtMjMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgU1ZHIHVzZSBlbGVtZW50IGluc2lkZSBhIHNoYWRvdyB0cmVlIGNhbm5v
dCByZWZlcmVuY2UgYW4gZWxlbWVudCBpbiB0aGUgc2FtZSB0cmVlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ5NzcKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzMzNjY1NjM2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZGVkIHRlc3RzIGZvciBzcGVjaWZ5aW5nIGEgZnJhZ21lbnQgVVJMIHRvIHJl
ZmVyIHRvIG90aGVyIGVsZW1lbnRzIHdpdGhpbiBzaGFkb3cgdHJlZXMuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBkb2Vzbid0IGFkZCBhIHRlc3QgZm9yIHVwZGF0aW5nIGEgZnJhZ21lbnQgVVJMIG9m
IGxpbmVhckdyYWRpZW50IGFuZCByYWRpYWxHcmFkaWVudAorICAgICAgICBzaW5jZSBpdCBkb2Vz
bid0IHdvcmsgYXQgYWxsIGV2ZW4gb3V0c2lkZSBzaGFkb3cgdHJlZXMuIFNlZSB3ZWJraXQub3Jn
L2IvMTkxOTM0LgorCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL3N2Zy1hbmltYXRlLWhyZWYt
Y2hhbmdlLWluLXNoYWRvdy10cmVlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3Qvc2hhZG93LWRvbS9zdmctYW5pbWF0ZS1ocmVmLWNoYW5nZS1pbi1zaGFkb3ctdHJlZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vc3ZnLWFuaW1hdGUtaHJlZi1pbi1z
aGFkb3ctdHJlZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1k
b20vc3ZnLWFuaW1hdGUtaHJlZi1pbi1zaGFkb3ctdHJlZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3NoYWRvdy1kb20vc3ZnLWZlaW1hZ2UtaHJlZi1pbi1zaGFkb3ctdHJlZS1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vc3ZnLWZlaW1hZ2UtaHJl
Zi1pbi1zaGFkb3ctdHJlZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20v
c3ZnLWxpbmVhci1ncmFkaWVudC1ocmVmLWluLXNoYWRvdy10cmVlLWV4cGVjdGVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9zdmctbGluZWFyLWdyYWRpZW50LWhyZWYt
aW4tc2hhZG93LXRyZWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL3N2
Zy1tcGF0aC1ocmVmLWNoYW5nZS1pbi1zaGFkb3ctdHJlZS1leHBlY3RlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vc3ZnLW1wYXRoLWhyZWYtY2hhbmdlLWluLXNoYWRv
dy10cmVlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9zdmctbXBhdGgt
aHJlZi1pbi1zaGFkb3ctdHJlZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3NoYWRvdy1kb20vc3ZnLW1wYXRoLWhyZWYtaW4tc2hhZG93LXRyZWUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9zaGFkb3ctZG9tL3N2Zy1yYWRpYWwtZ3JhZGllbnQtaHJlZi1pbi1zaGFk
b3ctdHJlZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20v
c3ZnLXJhZGlhbC1ncmFkaWVudC1ocmVmLWluLXNoYWRvdy10cmVlLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvc2hhZG93LWRvbS9zdmctdGV4dC1wYXRoLWhyZWYtY2hhbmdlLWluLXNoYWRv
dy10cmVlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9z
dmctdGV4dC1wYXRoLWhyZWYtY2hhbmdlLWluLXNoYWRvdy10cmVlLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvc2hhZG93LWRvbS9zdmctdGV4dC1wYXRoLWhyZWYtaW4tc2hhZG93LXRyZWUt
ZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL3N2Zy10ZXh0
LXBhdGgtaHJlZi1pbi1zaGFkb3ctdHJlZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3No
YWRvdy1kb20vc3ZnLXRocmVmLWhyZWYtY2hhbmdlLWluLXNoYWRvdy10cmVlLWV4cGVjdGVkLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9zdmctdGhyZWYtaHJlZi1jaGFu
Z2UtaW4tc2hhZG93LXRyZWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9t
L3N2Zy10aHJlZi1ocmVmLWluLXNoYWRvdy10cmVlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvc2hhZG93LWRvbS9zdmctdGhyZWYtaHJlZi1pbi1zaGFkb3ctdHJlZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vc3ZnLXVzZS1ocmVmLWNoYW5nZS1p
bi1zaGFkb3ctdHJlZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRv
dy1kb20vc3ZnLXVzZS1ocmVmLWNoYW5nZS1pbi1zaGFkb3ctdHJlZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3NoYWRvdy1kb20vc3ZnLXVzZS1ocmVmLWluLXNoYWRvdy10cmVlLWV4cGVj
dGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9zdmctdXNlLWhyZWYt
aW4tc2hhZG93LXRyZWUuaHRtbDogQWRkZWQuCisKIDIwMTgtMTEtMjIgIFJ5b3N1a2UgTml3YSAg
PHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBkYXRpbmcgaHJlZiBvbiB0ZXh0UGF0aCBk
b2Vzbid0IHVwZGF0ZSBpdHMgcmVuZGVyaW5nCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRv
dy1kb20vc3ZnLWFuaW1hdGUtaHJlZi1jaGFuZ2UtaW4tc2hhZG93LXRyZWUtZXhwZWN0ZWQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc3ZnLWFuaW1hdGUt
aHJlZi1jaGFuZ2UtaW4tc2hhZG93LXRyZWUtZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc3ZnLWFuaW1hdGUtaHJlZi1jaGFuZ2UtaW4t
c2hhZG93LXRyZWUtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKyAgICA8cD5UZXN0IHBhc3NlcyBpZiB5
b3Ugc2VlIGEgc2luZ2xlIDEwMHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBiZWxvdy48L3A+CisgICAg
PGRpdiBzdHlsZT0id2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kOiBncmVl
bjsiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFk
b3ctZG9tL3N2Zy1hbmltYXRlLWhyZWYtY2hhbmdlLWluLXNoYWRvdy10cmVlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N2Zy1hbmltYXRlLWhyZWYtY2hh
bmdlLWluLXNoYWRvdy10cmVlLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9zaGFkb3ctZG9tL3N2Zy1hbmltYXRlLWhyZWYtY2hhbmdlLWluLXNoYWRvdy10cmVlLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
Kzxib2R5PgorPHA+VGVzdCBwYXNzZXMgaWYgeW91IHNlZSBhIHNpbmdsZSAxMDBweCBieSAxMDBw
eCBncmVlbiBib3ggYmVsb3cuPC9wPgorPGRpdiBpZD0iaG9zdCIgc3R5bGU9IndpZHRoOiAxMDBw
eDsgaGVpZ2h0OiAxMDBweDsiPjwvZGl2PgorPHN2Zz4KKyAgICA8ZGVmcz4KKyAgICAgICAgPHJl
Y3QgaWQ9InJlY3QiIHdpZHRoPSI1MCIgaGVpZ2h0PSIxMDAiIGZpbGw9InJlZCIgLz4KKyAgICA8
L2RlZnM+Cis8L3N2Zz4KKzx0ZW1wbGF0ZT4KKyAgICA8c3ZnIHZpZXdib3g9IjAgMCAxMDAgMTAw
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgICAgICAgIDxy
ZWN0IHdpZHRoPSI1MCIgaGVpZ2h0PSIxMDAiIGZpbGw9ImdyZWVuIiAvPgorICAgICAgICA8cmVj
dCBpZD0icmVjdDEiIHg9Ii0xMDAiIHdpZHRoPSIyNSIgaGVpZ2h0PSIxMDAiIGZpbGw9InJlZCIg
Lz4KKyAgICAgICAgPHJlY3QgaWQ9InJlY3QyIiB4PSItMTAwIiB3aWR0aD0iNTAiIGhlaWdodD0i
MTAwIiBmaWxsPSJncmVlbiIgLz4KKyAgICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ieCIg
ZnJvbT0iMCIgdG89IjUwIiBkdXI9IjAuMDFzIiBmaWxsPSJmcmVlemUiIHhsaW5rOmhyZWY9IiNy
ZWN0MSIgLz4KKyAgICA8L3N2Zz4KKzwvdGVtcGxhdGU+Cis8c2NyaXB0PgorCitpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK2NvbnN0IHNo
YWRvd1Jvb3QgPSBob3N0Oy8vaG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdjbG9zZWQnfSk7Citz
aGFkb3dSb290LmFwcGVuZENoaWxkKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3RlbXBsYXRlJyku
Y29udGVudC5jbG9uZU5vZGUodHJ1ZSkpOworCitmdW5jdGlvbiB3YWl0Rm9yQW5pbWF0aW9uKCkg
eworICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgICAgICAgLy8gMC4w
MXMgaXMgMTBtcy4gV2FpdCBmb3IgdHdpY2UgdGhhdCB0aW1lIHRvIGJlIHNhZmUuCisgICAgICAg
IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDIwKSk7Cisg
ICAgfSkKK30KKword2luZG93Lm9ubG9hZCA9IGFzeW5jICgpID0+IHsKKyAgICBhd2FpdCB3YWl0
Rm9yQW5pbWF0aW9uKCk7CisgICAgc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdhbmltYXRlJyku
c2V0QXR0cmlidXRlTlMoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnLCAnaHJlZicsICcj
cmVjdDInKTsKKyAgICBzaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ2FuaW1hdGUnKS5iZWdpbkVs
ZW1lbnQoKTsKKyAgICBhd2FpdCB3YWl0Rm9yQW5pbWF0aW9uKCk7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCkpOworfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdmctYW5pbWF0ZS1ocmVmLWluLXNoYWRvdy10
cmVlLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ct
ZG9tL3N2Zy1hbmltYXRlLWhyZWYtaW4tc2hhZG93LXRyZWUtZXhwZWN0ZWQuaHRtbAkobm9uZXhp
c3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc3ZnLWFuaW1hdGUtaHJlZi1p
bi1zaGFkb3ctdHJlZS1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorICAgIDxwPlRlc3QgcGFzc2VzIGlm
IHlvdSBzZWUgYSBzaW5nbGUgMTAwcHggYnkgMTAwcHggZ3JlZW4gYm94IGJlbG93LjwvcD4KKyAg
ICA8ZGl2IHN0eWxlPSJ3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQ6IGdy
ZWVuOyI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3No
YWRvdy1kb20vc3ZnLWFuaW1hdGUtaHJlZi1pbi1zaGFkb3ctdHJlZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdmctYW5pbWF0ZS1ocmVmLWluLXNoYWRv
dy10cmVlLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9t
L3N2Zy1hbmltYXRlLWhyZWYtaW4tc2hhZG93LXRyZWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8cD5UZXN0IHBh
c3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xlIDEwMHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBiZWxvdy48
L3A+Cis8ZGl2IGlkPSJob3N0IiBzdHlsZT0id2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyI+
PC9kaXY+Cis8c3ZnPgorICAgIDxkZWZzPgorICAgICAgICA8cmVjdCBpZD0icmVjdCIgd2lkdGg9
IjUwIiBoZWlnaHQ9IjEwMCIgZmlsbD0icmVkIiAvPgorICAgIDwvZGVmcz4KKzwvc3ZnPgorPHRl
bXBsYXRlPgorICAgIDxzdmcgdmlld2JveD0iMCAwIDEwMCAxMDAiIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgICAgICAgPHJlY3Qgd2lkdGg9IjUwIiBoZWln
aHQ9IjEwMCIgZmlsbD0iZ3JlZW4iIC8+CisgICAgICAgIDxyZWN0IGlkPSJyZWN0IiB3aWR0aD0i
NTAiIGhlaWdodD0iMTAwIiBmaWxsPSJncmVlbiIgLz4KKyAgICAgICAgPGFuaW1hdGUgYXR0cmli
dXRlTmFtZT0ieCIgZnJvbT0iMCIgdG89IjUwIiBkdXI9IjAuMDFzIiBmaWxsPSJmcmVlemUiIHhs
aW5rOmhyZWY9IiNyZWN0IiAvPgorICAgIDwvc3ZnPgorPC90ZW1wbGF0ZT4KKzxzY3JpcHQ+CisK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
KworY29uc3Qgc2hhZG93Um9vdCA9IGhvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xvc2VkJ30p
Oworc2hhZG93Um9vdC5hcHBlbmRDaGlsZChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd0ZW1wbGF0
ZScpLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpKTsKKword2luZG93Lm9ubG9hZCA9ICgpID0+IHsK
KyAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4geworICAgICAgICBzZXRUaW1lb3V0KCgp
ID0+IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAg
ICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gdGVzdFJ1bm5lci5ub3RpZnlEb25lKCkpOwor
ICAgICAgICB9LCAyMCk7IC8vIDAuMDFzIGlzIDEwbXMuIFdhaXQgZm9yIHR3aWNlIHRoYXQgdGlt
ZSB0byBiZSBzYWZlLgorICAgIH0pOworfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdmctZmVpbWFnZS1ocmVmLWluLXNo
YWRvdy10cmVlLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9z
aGFkb3ctZG9tL3N2Zy1mZWltYWdlLWhyZWYtaW4tc2hhZG93LXRyZWUtZXhwZWN0ZWQuaHRtbAko
bm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc3ZnLWZlaW1hZ2Ut
aHJlZi1pbi1zaGFkb3ctdHJlZS1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorICAgIDxwPlRlc3QgcGFz
c2VzIGlmIHlvdSBzZWUgYSBzaW5nbGUgMTAwcHggYnkgMTAwcHggZ3JlZW4gYm94IGJlbG93Ljwv
cD4KKyAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91
bmQ6IGdyZWVuOyI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L3NoYWRvdy1kb20vc3ZnLWZlaW1hZ2UtaHJlZi1pbi1zaGFkb3ctdHJlZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdmctZmVpbWFnZS1ocmVmLWlu
LXNoYWRvdy10cmVlLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFk
b3ctZG9tL3N2Zy1mZWltYWdlLWhyZWYtaW4tc2hhZG93LXRyZWUuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8cD5U
ZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xlIDEwMHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBi
ZWxvdy48L3A+Cis8ZGl2IGlkPSJob3N0IiBzdHlsZT0id2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEw
MHB4OyI+PC9kaXY+Cis8c3ZnPgorICAgIDxkZWZzPgorICAgICAgICA8cmVjdCBpZD0icmVjdCIg
d2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9InJlZCIgLz4KKyAgICA8L2RlZnM+Cis8L3N2
Zz4KKzx0ZW1wbGF0ZT4KKyAgICA8c3ZnIHZpZXdib3g9IjAgMCAxMDAgMTAwIj4KKyAgICAgICAg
PGRlZnM+CisgICAgICAgICAgICA8cmVjdCBpZD0icmVjdCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIx
MDAiIGZpbGw9ImdyZWVuIiAvPgorICAgICAgICAgICAgPGZpbHRlciBpZD0iaW1hZ2UiPgorICAg
ICAgICAgICAgICAgIDxmZUltYWdlIGhyZWY9IiNyZWN0IiAvPgorICAgICAgICAgICAgPC9maWx0
ZXI+CisgICAgICAgIDwvZGVmcz4KKyAgICAgICAgPHJlY3QgaWQ9InJlY3QiIHdpZHRoPSIxMDAi
IGhlaWdodD0iMTAwIiBzdHlsZT0iZmlsdGVyOnVybCgjaW1hZ2UpIj4KKyAgICA8L3N2Zz4KKzwv
dGVtcGxhdGU+Cis8c2NyaXB0PgorCitjb25zdCBzaGFkb3dSb290ID0gaG9zdC5hdHRhY2hTaGFk
b3coe21vZGU6ICdjbG9zZWQnfSk7CitzaGFkb3dSb290LmFwcGVuZENoaWxkKGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoJ3RlbXBsYXRlJykuY29udGVudC5jbG9uZU5vZGUodHJ1ZSkpOworCis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRv
bS9zdmctbGluZWFyLWdyYWRpZW50LWhyZWYtaW4tc2hhZG93LXRyZWUtZXhwZWN0ZWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc3ZnLWxpbmVhci1ncmFk
aWVudC1ocmVmLWluLXNoYWRvdy10cmVlLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N2Zy1saW5lYXItZ3JhZGllbnQtaHJlZi1pbi1z
aGFkb3ctdHJlZS1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlv
dSBzZWUgYSBzaW5nbGUgMTAwcHggYnkgMTAwcHggZ3JlZW4gYm94IGJlbG93LjwvcD4KKyAgICA8
ZGl2IHN0eWxlPSJ3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQ6IGdyZWVu
OyI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRv
dy1kb20vc3ZnLWxpbmVhci1ncmFkaWVudC1ocmVmLWluLXNoYWRvdy10cmVlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N2Zy1saW5lYXItZ3JhZGllbnQt
aHJlZi1pbi1zaGFkb3ctdHJlZS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zh
c3Qvc2hhZG93LWRvbS9zdmctbGluZWFyLWdyYWRpZW50LWhyZWYtaW4tc2hhZG93LXRyZWUuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGJvZHk+Cis8cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xlIDEwMHB4IGJ5IDEw
MHB4IGdyZWVuIGJveCBiZWxvdy48L3A+Cis8ZGl2IGlkPSJob3N0IiBzdHlsZT0id2lkdGg6IDEw
MHB4OyBoZWlnaHQ6IDEwMHB4OyI+PC9kaXY+Cis8c3ZnPgorICAgIDxsaW5lYXJHcmFkaWVudCBp
ZD0iZ3JhZGllbnQiPgorICAgICAgICA8c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSJyZWQi
IC8+CisgICAgPC9saW5lYXJHcmFkaWVudD4KKzwvc3ZnPgorPHRlbXBsYXRlPgorICAgIDxzdmcg
dmlld2JveD0iMCAwIDEwMCAxMDAiPgorICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9ImdyYWRp
ZW50Ij4KKyAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9ImdyZWVuIiAv
PgorICAgICAgICA8L2xpbmVhckdyYWRpZW50PgorICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9
ImdyYWRpZW50VXNlIiBmaWxsPSJyZWQiIGhyZWY9IiNncmFkaWVudCI+PC9saW5lYXJHcmFkaWVu
dD4KKyAgICAgICAgPHJlY3QgaWQ9InJlY3QiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxs
PSJ1cmwoI2dyYWRpZW50VXNlKSI+CisgICAgPC9zdmc+Cis8L3RlbXBsYXRlPgorPHNjcmlwdD4K
KworY29uc3Qgc2hhZG93Um9vdCA9IGhvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xvc2VkJ30p
Oworc2hhZG93Um9vdC5hcHBlbmRDaGlsZChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd0ZW1wbGF0
ZScpLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc3ZnLW1wYXRoLWhyZWYtY2hh
bmdlLWluLXNoYWRvdy10cmVlLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9zaGFkb3ctZG9tL3N2Zy1tcGF0aC1ocmVmLWNoYW5nZS1pbi1zaGFkb3ctdHJlZS1l
eHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRv
bS9zdmctbXBhdGgtaHJlZi1jaGFuZ2UtaW4tc2hhZG93LXRyZWUtZXhwZWN0ZWQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9k
eT4KKyAgICA8cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xlIDEwMHB4IGJ5IDEwMHB4
IGdyZWVuIGJveCBiZWxvdy48L3A+CisgICAgPGRpdiBzdHlsZT0id2lkdGg6IDEwMHB4OyBoZWln
aHQ6IDEwMHB4OyBiYWNrZ3JvdW5kOiBncmVlbjsiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N2Zy1tcGF0aC1ocmVmLWNoYW5nZS1p
bi1zaGFkb3ctdHJlZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93
LWRvbS9zdmctbXBhdGgtaHJlZi1jaGFuZ2UtaW4tc2hhZG93LXRyZWUuaHRtbAkobm9uZXhpc3Rl
bnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc3ZnLW1wYXRoLWhyZWYtY2hhbmdl
LWluLXNoYWRvdy10cmVlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHA+VGVzdCBwYXNzZXMgaWYgeW91IHNlZSBh
IHNpbmdsZSAxMDBweCBieSAxMDBweCBncmVlbiBib3ggYmVsb3cuPC9wPgorPGRpdiBpZD0iaG9z
dCIgc3R5bGU9IndpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsiPjwvZGl2PgorPHRlbXBsYXRl
PgorICAgIDxzdmcgdmlld2JveD0iMCAwIDEwMCAxMDAiPgorICAgICAgICA8cmVjdCBpZD0icmVj
dCIgeD0iNTAiIHk9IjAiIHdpZHRoPSI1MCIgaGVpZ2h0PSIxMDAiIGZpbGw9InJlZCI+PC9yZWN0
PgorICAgICAgICA8cGF0aCBpZD0icGF0aDEiIGQ9Ik0wLDAgTDI1LDAiIC8+CisgICAgICAgIDxw
YXRoIGlkPSJwYXRoMiIgZD0iTTAsMCBMNTAsMCIgLz4KKyAgICAgICAgPHJlY3QgaWQ9InJlY3Qi
IHdpZHRoPSI1MCIgaGVpZ2h0PSIxMDAiIGZpbGw9ImdyZWVuIiAvPgorICAgICAgICA8Zz4KKyAg
ICAgICAgICAgIDxyZWN0IGlkPSJyZWN0IiB4PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iMTAwIiBm
aWxsPSJncmVlbiIgLz4KKyAgICAgICAgICAgIDxhbmltYXRlTW90aW9uIGR1cj0iMC4wMXMiIGNh
bGNNb2RlPSJsaW5lYXIiIGZpbGw9ImZyZWV6ZSI+CisgICAgICAgICAgICAgICAgPG1wYXRoIGhy
ZWY9IiNwYXRoMSIgLz4KKyAgICAgICAgICAgIDwvYW5pbWF0ZU1vdGlvbj4KKyAgICAgICAgPC9n
PgorICAgIDwvc3ZnPgorPC90ZW1wbGF0ZT4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworY29uc3Qgc2hhZG93Um9v
dCA9IGhvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xvc2VkJ30pOworc2hhZG93Um9vdC5hcHBl
bmRDaGlsZChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd0ZW1wbGF0ZScpLmNvbnRlbnQuY2xvbmVO
b2RlKHRydWUpKTsKKworZnVuY3Rpb24gd2FpdEZvckFuaW1hdGlvbigpIHsKKyAgICByZXR1cm4g
bmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAgIC8vIDAuMDFzIGlzIDEwbXMuIFdh
aXQgZm9yIHR3aWNlIHRoYXQgdGltZSB0byBiZSBzYWZlLgorICAgICAgICByZXF1ZXN0QW5pbWF0
aW9uRnJhbWUoKCkgPT4gc2V0VGltZW91dChyZXNvbHZlLCAyMCkpOworICAgIH0pCit9CisKK3dp
bmRvdy5vbmxvYWQgPSBhc3luYyAoKSA9PiB7CisgICAgYXdhaXQgd2FpdEZvckFuaW1hdGlvbigp
OworICAgIHNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignbXBhdGgnKS5zZXRBdHRyaWJ1dGUoJ2hy
ZWYnLCAnI3BhdGgyJyk7CisgICAgc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdhbmltYXRlTW90
aW9uJykuYmVnaW5FbGVtZW50KCk7CisgICAgYXdhaXQgd2FpdEZvckFuaW1hdGlvbigpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgp
ID0+IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpKTsKK30KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc3ZnLW1wYXRoLWhyZWYt
aW4tc2hhZG93LXRyZWUtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L3NoYWRvdy1kb20vc3ZnLW1wYXRoLWhyZWYtaW4tc2hhZG93LXRyZWUtZXhwZWN0ZWQuaHRt
bAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc3ZnLW1wYXRo
LWhyZWYtaW4tc2hhZG93LXRyZWUtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKyAgICA8cD5UZXN0IHBh
c3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xlIDEwMHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBiZWxvdy48
L3A+CisgICAgPGRpdiBzdHlsZT0id2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3Jv
dW5kOiBncmVlbjsiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9zaGFkb3ctZG9tL3N2Zy1tcGF0aC1ocmVmLWluLXNoYWRvdy10cmVlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N2Zy1tcGF0aC1ocmVmLWluLXNo
YWRvdy10cmVlLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ct
ZG9tL3N2Zy1tcGF0aC1ocmVmLWluLXNoYWRvdy10cmVlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHA+VGVzdCBw
YXNzZXMgaWYgeW91IHNlZSBhIHNpbmdsZSAxMDBweCBieSAxMDBweCBncmVlbiBib3ggYmVsb3cu
PC9wPgorPGRpdiBpZD0iaG9zdCIgc3R5bGU9IndpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsi
PjwvZGl2PgorPHN2Zz4KKyAgICA8ZGVmcz4KKyAgICAgICAgPHBhdGggaWQ9InBhdGgiIGQ9Ik0w
LDAgTDI1LDAiIC8+CisgICAgPC9kZWZzPgorPC9zdmc+Cis8dGVtcGxhdGU+CisgICAgPHN2ZyB2
aWV3Ym94PSIwIDAgMTAwIDEwMCI+CisgICAgICAgIDxyZWN0IGlkPSJyZWN0IiB4PSI1MCIgeT0i
MCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjEwMCIgZmlsbD0icmVkIj48L3JlY3Q+CisgICAgICAgIDxw
YXRoIGlkPSJwYXRoIiBkPSJNMCwwIEw1MCwwIiAvPgorICAgICAgICA8cmVjdCBpZD0icmVjdCIg
d2lkdGg9IjUwIiBoZWlnaHQ9IjEwMCIgZmlsbD0iZ3JlZW4iIC8+CisgICAgICAgIDxnPgorICAg
ICAgICAgICAgPHJlY3QgaWQ9InJlY3QiIHg9IjAiIHdpZHRoPSI1MCIgaGVpZ2h0PSIxMDAiIGZp
bGw9ImdyZWVuIiAvPgorICAgICAgICAgICAgPGFuaW1hdGVNb3Rpb24gZHVyPSIwLjAxcyIgY2Fs
Y01vZGU9ImxpbmVhciIgZmlsbD0iZnJlZXplIj4KKyAgICAgICAgICAgICAgICA8bXBhdGggaHJl
Zj0iI3BhdGgiIC8+CisgICAgICAgICAgICA8L2FuaW1hdGVNb3Rpb24+CisgICAgICAgIDwvZz4K
KyAgICA8L3N2Zz4KKzwvdGVtcGxhdGU+Cis8c2NyaXB0PgorCitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK2NvbnN0IHNoYWRvd1Jvb3Qg
PSBob3N0LmF0dGFjaFNoYWRvdyh7bW9kZTogJ2Nsb3NlZCd9KTsKK3NoYWRvd1Jvb3QuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndGVtcGxhdGUnKS5jb250ZW50LmNsb25lTm9k
ZSh0cnVlKSk7CisKK3dpbmRvdy5vbmxvYWQgPSAoKSA9PiB7CisgICAgcmVxdWVzdEFuaW1hdGlv
bkZyYW1lKCgpID0+IHsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZy
YW1lKCgpID0+IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpKTsKKyAgICAgICAgfSwgMjApOyAvLyAw
LjAxcyBpcyAxMG1zLiBXYWl0IGZvciB0d2ljZSB0aGF0IHRpbWUgdG8gYmUgc2FmZS4KKyAgICB9
KTsKK30KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L3NoYWRvdy1kb20vc3ZnLXJhZGlhbC1ncmFkaWVudC1ocmVmLWluLXNoYWRvdy10cmVlLWV4
cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N2
Zy1yYWRpYWwtZ3JhZGllbnQtaHJlZi1pbi1zaGFkb3ctdHJlZS1leHBlY3RlZC5odG1sCShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdmctcmFkaWFsLWdyYWRp
ZW50LWhyZWYtaW4tc2hhZG93LXRyZWUtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKyAgICA8cD5UZXN0
IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xlIDEwMHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBiZWxv
dy48L3A+CisgICAgPGRpdiBzdHlsZT0id2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNr
Z3JvdW5kOiBncmVlbjsiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9zaGFkb3ctZG9tL3N2Zy1yYWRpYWwtZ3JhZGllbnQtaHJlZi1pbi1zaGFkb3ctdHJl
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdmctcmFk
aWFsLWdyYWRpZW50LWhyZWYtaW4tc2hhZG93LXRyZWUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc3ZnLXJhZGlhbC1ncmFkaWVudC1ocmVmLWluLXNo
YWRvdy10cmVlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHA+VGVzdCBwYXNzZXMgaWYgeW91IHNlZSBhIHNpbmds
ZSAxMDBweCBieSAxMDBweCBncmVlbiBib3ggYmVsb3cuPC9wPgorPGRpdiBpZD0iaG9zdCIgc3R5
bGU9IndpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsiPjwvZGl2PgorPHN2Zz4KKyAgICA8cmFk
aWFsR3JhZGllbnQgaWQ9ImdyYWRpZW50Ij4KKyAgICAgICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3Rv
cC1jb2xvcj0icmVkIiAvPgorICAgIDwvcmFkaWFsR3JhZGllbnQ+Cis8L3N2Zz4KKzx0ZW1wbGF0
ZT4KKyAgICA8c3ZnIHZpZXdib3g9IjAgMCAxMDAgMTAwIj4KKyAgICAgICAgPHJhZGlhbEdyYWRp
ZW50IGlkPSJncmFkaWVudCI+CisgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNv
bG9yPSJncmVlbiIgLz4KKyAgICAgICAgPC9yYWRpYWxHcmFkaWVudD4KKyAgICAgICAgPHJhZGlh
bEdyYWRpZW50IGlkPSJncmFkaWVudFVzZSIgZmlsbD0icmVkIiBocmVmPSIjZ3JhZGllbnQiPjwv
cmFkaWFsR3JhZGllbnQ+CisgICAgICAgIDxyZWN0IGlkPSJyZWN0IiB3aWR0aD0iMTAwIiBoZWln
aHQ9IjEwMCIgZmlsbD0idXJsKCNncmFkaWVudFVzZSkiPgorICAgIDwvc3ZnPgorPC90ZW1wbGF0
ZT4KKzxzY3JpcHQ+CisKK2NvbnN0IHNoYWRvd1Jvb3QgPSBob3N0LmF0dGFjaFNoYWRvdyh7bW9k
ZTogJ2Nsb3NlZCd9KTsKK3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcigndGVtcGxhdGUnKS5jb250ZW50LmNsb25lTm9kZSh0cnVlKSk7CisKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N2Zy10
ZXh0LXBhdGgtaHJlZi1jaGFuZ2UtaW4tc2hhZG93LXRyZWUtZXhwZWN0ZWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc3ZnLXRleHQtcGF0aC1ocmVmLWNo
YW5nZS1pbi1zaGFkb3ctdHJlZS1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdmctdGV4dC1wYXRoLWhyZWYtY2hhbmdlLWluLXNoYWRv
dy10cmVlLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+CisgICAgPHA+VGVzdCBwYXNzZXMgaWYgeW91IHNl
ZSBhIHNpbmdsZSAxMDBweCBieSAxMDBweCBncmVlbiBib3ggYmVsb3cuPC9wPgorICAgIDxkaXYg
c3R5bGU9IndpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgYmFja2dyb3VuZDogZ3JlZW47Ij48
L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRv
bS9zdmctdGV4dC1wYXRoLWhyZWYtY2hhbmdlLWluLXNoYWRvdy10cmVlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N2Zy10ZXh0LXBhdGgtaHJlZi1jaGFu
Z2UtaW4tc2hhZG93LXRyZWUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L3NoYWRvdy1kb20vc3ZnLXRleHQtcGF0aC1ocmVmLWNoYW5nZS1pbi1zaGFkb3ctdHJlZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8Ym9keT4KKzxwPlRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBzaW5nbGUgMTAwcHggYnkgMTAw
cHggZ3JlZW4gYm94IGJlbG93LjwvcD4KKzxkaXYgaWQ9Imhvc3QiIHN0eWxlPSJ3aWR0aDogMTAw
cHg7IGhlaWdodDogMTAwcHg7Ij48L2Rpdj4KKzxzdmc+CisgICAgPGRlZnM+CisgICAgICAgIDxw
YXRoIGlkPSJwYXRoMSIgZD0iTTAsMzAgTDEwMCwzMCBaIj4KKyAgICA8L2RlZnM+Cis8L3N2Zz4K
Kzx0ZW1wbGF0ZT4KKyAgICA8c3ZnIHN0eWxlPSJ3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7
IiB2aWV3Ym94PSIwIDAgMTAwIDEwMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiPgorICAgICAgICA8ZGVmcz4KKyAgICAgICAgICAgIDxwYXRoIGlkPSJwYXRoMSIg
ZD0iTTAsNTAgTDEwMCw1MCBaIiAvPgorICAgICAgICAgICAgPHBhdGggaWQ9InBhdGgyIiBkPSJN
MCwtNSBMMTAwLC01IFoiIC8+CisgICAgICAgIDwvZGVmcz4KKyAgICAgICAgPHJlY3QgeD0iMCIg
eT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9ImdyZWVuIj48L3JlY3Q+CisgICAg
ICAgIDx0ZXh0PgorICAgICAgICAgICAgPHRleHRQYXRoIGhyZWY9IiNwYXRoMSI+RkFJTDwvdGV4
dFBhdGg+CisgICAgICAgIDwvdGV4dD4KKyAgICA8L3N2Zz4KKzwvdGVtcGxhdGU+Cis8c2NyaXB0
PgorCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisKK2NvbnN0IHNoYWRvd1Jvb3QgPSBob3N0LmF0dGFjaFNoYWRvdyh7bW9kZTogJ2Nsb3Nl
ZCd9KTsKK3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndGVt
cGxhdGUnKS5jb250ZW50LmNsb25lTm9kZSh0cnVlKSk7CisKK3dpbmRvdy5vbmxvYWQgPSAoKSA9
PiB7CisgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHsKKyAgICAgICAgc2hhZG93Um9v
dC5xdWVyeVNlbGVjdG9yKCd0ZXh0UGF0aCcpLnNldEF0dHJpYnV0ZSgnaHJlZicsICcjcGF0aDIn
KTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgcmVxdWVzdEFu
aW1hdGlvbkZyYW1lKCgpID0+IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpKTsKKyAgICB9KTsKK30K
KworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3No
YWRvdy1kb20vc3ZnLXRleHQtcGF0aC1ocmVmLWluLXNoYWRvdy10cmVlLWV4cGVjdGVkLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N2Zy10ZXh0LXBhdGgt
aHJlZi1pbi1zaGFkb3ctdHJlZS1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdmctdGV4dC1wYXRoLWhyZWYtaW4tc2hhZG93LXRyZWUt
ZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8Ym9keT4KKyAgICA8cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2lu
Z2xlIDEwMHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBiZWxvdy48L3A+CisgICAgPGRpdiBzdHlsZT0i
d2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kOiBncmVlbjsiPjwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N2Zy10
ZXh0LXBhdGgtaHJlZi1pbi1zaGFkb3ctdHJlZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3Qvc2hhZG93LWRvbS9zdmctdGV4dC1wYXRoLWhyZWYtaW4tc2hhZG93LXRyZWUuaHRt
bAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc3ZnLXRleHQt
cGF0aC1ocmVmLWluLXNoYWRvdy10cmVlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHA+VGVzdCBwYXNzZXMgaWYg
eW91IHNlZSBhIHNpbmdsZSAxMDBweCBieSAxMDBweCBncmVlbiBib3ggYmVsb3cuPC9wPgorPGRp
diBpZD0iaG9zdCIgc3R5bGU9IndpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsiPjwvZGl2Pgor
PHN2Zz4KKyAgICA8ZGVmcz4KKyAgICAgICAgPHBhdGggaWQ9InBhdGgiIGZpbGw9InJlZCIgc3Ry
b2tlPSJyZWQiIGQ9Ik0wLDUwIEwxMDAsNTAgWiI+CisgICAgPC9kZWZzPgorPC9zdmc+Cis8dGVt
cGxhdGU+CisgICAgPHN2ZyB2aWV3Ym94PSIwIDAgMTAwIDEwMCIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICAgICAgICA8ZGVmcz4KKyAgICAgICAgICAgIDxw
YXRoIGlkPSJwYXRoIiBmaWxsPSJncmVlbiIgZD0iTTAsLTUgTDEwMCwtNSBaIj4KKyAgICAgICAg
PC9kZWZzPgorICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEw
MCIgZmlsbD0iZ3JlZW4iPjwvcmVjdD4KKyAgICAgICAgPHRleHQ+CisgICAgICAgICAgICA8dGV4
dFBhdGggeGxpbms6aHJlZj0iI3BhdGgiPkZBSUw8L3RleHRQYXRoPgorICAgICAgICA8L3RleHQ+
CisgICAgPC9zdmc+Cis8L3RlbXBsYXRlPgorPHNjcmlwdD4KKworY29uc3Qgc2hhZG93Um9vdCA9
IGhvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xvc2VkJ30pOworc2hhZG93Um9vdC5hcHBlbmRD
aGlsZChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd0ZW1wbGF0ZScpLmNvbnRlbnQuY2xvbmVOb2Rl
KHRydWUpKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L3NoYWRvdy1kb20vc3ZnLXRocmVmLWhyZWYtY2hhbmdlLWluLXNoYWRvdy10cmVlLWV4
cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N2
Zy10aHJlZi1ocmVmLWNoYW5nZS1pbi1zaGFkb3ctdHJlZS1leHBlY3RlZC5odG1sCShub25leGlz
dGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdmctdGhyZWYtaHJlZi1jaGFu
Z2UtaW4tc2hhZG93LXRyZWUtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8cD5UZXN0IHBhc3NlcyBp
ZiB5b3Ugc2VlIGEgc2luZ2xlIDEwMHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBiZWxvdyB3aXRoICJQ
QVNTIiBpbiB0aGUgbWlkZGxlLjwvcD4KKzxkaXYgaWQ9Imhvc3QiIHN0eWxlPSJ3aWR0aDogMTAw
cHg7IGhlaWdodDogMTAwcHg7Ij4KKyAgICA8c3ZnIHZpZXdib3g9IjAgMCAxMDAgMTAwIj4KKyAg
ICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9Imdy
ZWVuIj48L3JlY3Q+CisgICAgICAgIDx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0ibWlkZGxlIiB5
PSI1MCI+UEFTUzwvdGV4dD4KKyAgICA8L3N2Zz4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N2Zy10aHJlZi1ocmVmLWNoYW5nZS1p
bi1zaGFkb3ctdHJlZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93
LWRvbS9zdmctdGhyZWYtaHJlZi1jaGFuZ2UtaW4tc2hhZG93LXRyZWUuaHRtbAkobm9uZXhpc3Rl
bnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc3ZnLXRocmVmLWhyZWYtY2hhbmdl
LWluLXNoYWRvdy10cmVlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHA+VGVzdCBwYXNzZXMgaWYgeW91IHNlZSBh
IHNpbmdsZSAxMDBweCBieSAxMDBweCBncmVlbiBib3ggYmVsb3cgd2l0aCAiUEFTUyIgaW4gdGhl
IG1pZGRsZS48L3A+Cis8ZGl2IGlkPSJob3N0IiBzdHlsZT0id2lkdGg6IDEwMHB4OyBoZWlnaHQ6
IDEwMHB4OyI+PC9kaXY+Cis8c3ZnPgorICAgIDxkZWZzPgorICAgICAgICA8dGV4dCBpZD0idGV4
dCI+RkFJTCBGQUlMIEZBSUw8L3RleHQ+CisgICAgPC9kZWZzPgorPC9zdmc+Cis8dGVtcGxhdGU+
CisgICAgPHN2ZyB2aWV3Ym94PSIwIDAgMTAwIDEwMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICAgICAgICA8ZGVmcz4KKyAgICAgICAgICAgIDx0ZXh0IGlk
PSJ0ZXh0MSI+RkFJTCBGQUlMPC90ZXh0PgorICAgICAgICAgICAgPHRleHQgaWQ9InRleHQyIj5Q
QVNTPC90ZXh0PgorICAgICAgICA8L2RlZnM+CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdp
ZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJncmVlbiI+PC9yZWN0PgorICAgICAgICA8dGV4
dCB4PSIwIiB5PSIwIj4KKyAgICAgICAgICAgIDx0cmVmIGFsaWdubWVudC1iYXNlbGluZT0ibWlk
ZGxlIiB5PSI1MCIgeGxpbms6aHJlZj0iI3RleHQxIj48L3RyZWY+CisgICAgICAgIDwvdGV4dD4K
KyAgICA8L3N2Zz4KKzwvdGVtcGxhdGU+Cis8c2NyaXB0PgorCitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK2NvbnN0IHNoYWRvd1Jvb3Qg
PSBob3N0LmF0dGFjaFNoYWRvdyh7bW9kZTogJ2Nsb3NlZCd9KTsKK3NoYWRvd1Jvb3QuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndGVtcGxhdGUnKS5jb250ZW50LmNsb25lTm9k
ZSh0cnVlKSk7CisKK3dpbmRvdy5vbmxvYWQgPSAoKSA9PiB7CisgICAgcmVxdWVzdEFuaW1hdGlv
bkZyYW1lKCgpID0+IHsKKyAgICAgICAgc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCd0cmVmJyku
c2V0QXR0cmlidXRlKCdocmVmJywgJyN0ZXh0MicpOworICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCkpOworICAgIH0pOworfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdmctdGhyZWYtaHJlZi1pbi1z
aGFkb3ctdHJlZS1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
c2hhZG93LWRvbS9zdmctdGhyZWYtaHJlZi1pbi1zaGFkb3ctdHJlZS1leHBlY3RlZC5odG1sCShu
b25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdmctdGhyZWYtaHJl
Zi1pbi1zaGFkb3ctdHJlZS1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxwPlRlc3QgcGFzc2VzIGlm
IHlvdSBzZWUgYSBzaW5nbGUgMTAwcHggYnkgMTAwcHggZ3JlZW4gYm94IGJlbG93IHdpdGggIlBB
U1MiIGluIHRoZSBtaWRkbGUuPC9wPgorPGRpdiBpZD0iaG9zdCIgc3R5bGU9IndpZHRoOiAxMDBw
eDsgaGVpZ2h0OiAxMDBweDsiPgorICAgIDxzdmcgdmlld2JveD0iMCAwIDEwMCAxMDAiPgorICAg
ICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0iZ3Jl
ZW4iPjwvcmVjdD4KKyAgICAgICAgPHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJtaWRkbGUiIHk9
IjUwIj5QQVNTPC90ZXh0PgorICAgIDwvc3ZnPgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc3ZnLXRocmVmLWhyZWYtaW4tc2hhZG93
LXRyZWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc3Zn
LXRocmVmLWhyZWYtaW4tc2hhZG93LXRyZWUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L3NoYWRvdy1kb20vc3ZnLXRocmVmLWhyZWYtaW4tc2hhZG93LXRyZWUuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGJvZHk+Cis8cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xlIDEwMHB4IGJ5IDEwMHB4
IGdyZWVuIGJveCBiZWxvdyB3aXRoICJQQVNTIiBpbiB0aGUgbWlkZGxlLjwvcD4KKzxkaXYgaWQ9
Imhvc3QiIHN0eWxlPSJ3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7Ij48L2Rpdj4KKzxzdmc+
CisgICAgPGRlZnM+CisgICAgICAgIDx0ZXh0IGlkPSJ0ZXh0Ij5GQUlMIEZBSUwgRkFJTDwvdGV4
dD4KKyAgICA8L2RlZnM+Cis8L3N2Zz4KKzx0ZW1wbGF0ZT4KKyAgICA8c3ZnIHZpZXdib3g9IjAg
MCAxMDAgMTAwIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
ICAgICAgIDxkZWZzPgorICAgICAgICAgICAgPHRleHQgaWQ9InRleHQiPlBBU1M8L3RleHQ+Cisg
ICAgICAgIDwvZGVmcz4KKyAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVp
Z2h0PSIxMDAiIGZpbGw9ImdyZWVuIj48L3JlY3Q+CisgICAgICAgIDx0ZXh0IHg9IjAiIHk9IjAi
PgorICAgICAgICAgICAgPHRyZWYgYWxpZ25tZW50LWJhc2VsaW5lPSJtaWRkbGUiIHk9IjUwIiB4
bGluazpocmVmPSIjdGV4dCI+PC90cmVmPgorICAgICAgICA8L3RleHQ+CisgICAgPC9zdmc+Cis8
L3RlbXBsYXRlPgorPHNjcmlwdD4KKworY29uc3Qgc2hhZG93Um9vdCA9IGhvc3QuYXR0YWNoU2hh
ZG93KHttb2RlOiAnY2xvc2VkJ30pOworc2hhZG93Um9vdC5hcHBlbmRDaGlsZChkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCd0ZW1wbGF0ZScpLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpKTsKKworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1k
b20vc3ZnLXVzZS1ocmVmLWNoYW5nZS1pbi1zaGFkb3ctdHJlZS1leHBlY3RlZC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdmctdXNlLWhyZWYtY2hhbmdl
LWluLXNoYWRvdy10cmVlLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9zaGFkb3ctZG9tL3N2Zy11c2UtaHJlZi1jaGFuZ2UtaW4tc2hhZG93LXRyZWUtZXhw
ZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8Ym9keT4KKyAgICA8cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xl
IDEwMHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBiZWxvdy48L3A+CisgICAgPGRpdiBzdHlsZT0id2lk
dGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kOiBncmVlbjsiPjwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N2Zy11c2Ut
aHJlZi1jaGFuZ2UtaW4tc2hhZG93LXRyZWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3NoYWRvdy1kb20vc3ZnLXVzZS1ocmVmLWNoYW5nZS1pbi1zaGFkb3ctdHJlZS5odG1s
CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdmctdXNlLWhy
ZWYtY2hhbmdlLWluLXNoYWRvdy10cmVlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHA+VGVzdCBwYXNzZXMgaWYg
eW91IHNlZSBhIHNpbmdsZSAxMDBweCBieSAxMDBweCBncmVlbiBib3ggYmVsb3cuPC9wPgorPGRp
diBpZD0iaG9zdCIgc3R5bGU9IndpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsiPjwvZGl2Pgor
PHN2Zz4KKyAgICA8ZGVmcz4KKyAgICAgICAgPHJlY3QgaWQ9InJlY3QxIiB3aWR0aD0iMTAwIiBo
ZWlnaHQ9IjUwIiBmaWxsPSJyZWQiPgorICAgIDwvZGVmcz4KKzwvc3ZnPgorPHRlbXBsYXRlPgor
ICAgIDxzdmcgdmlld2JveD0iMCAwIDEwMCAxMDAiPgorICAgICAgICA8ZGVmcz4KKyAgICAgICAg
ICAgIDxyZWN0IGlkPSJyZWN0MSIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI1MCIgZmlsbD0icmVkIj4K
KyAgICAgICAgICAgIDxyZWN0IGlkPSJyZWN0MiIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI1MCIgZmls
bD0iZ3JlZW4iPgorICAgICAgICA8L2RlZnM+CisgICAgICAgIDxnIGlkPSJyZWN0R3JvdXAiPgor
ICAgICAgICAgICAgPHVzZSBocmVmPSIjcmVjdDEiPgorICAgICAgICAgICAgICAgIDxyZWN0IHdp
ZHRoPSIxMDAiIGhlaWdodD0iMjUiIGZpbGw9InJlZCI+CisgICAgICAgICAgICA8L3VzZT4KKyAg
ICAgICAgPC9nPgorICAgICAgICA8dXNlIGhyZWY9IiNyZWN0R3JvdXAiIHk9IjUwIj4KKyAgICAg
ICAgICAgIDxyZWN0IHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgZmlsbD0icmVkIj4KKyAgICAgICAg
PC91c2U+CisgICAgPC9zdmc+Cis8L3RlbXBsYXRlPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCitjb25zdCBzaGFk
b3dSb290ID0gaG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdjbG9zZWQnfSk7CitzaGFkb3dSb290
LmFwcGVuZENoaWxkKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3RlbXBsYXRlJykuY29udGVudC5j
bG9uZU5vZGUodHJ1ZSkpOworCit3aW5kb3cub25sb2FkID0gKCkgPT4geworICAgIHJlcXVlc3RB
bmltYXRpb25GcmFtZSgoKSA9PiB7CisgICAgICAgIHNoYWRvd1Jvb3QucXVlcnlTZWxlY3Rvcign
dXNlJykuc2V0QXR0cmlidXRlKCdocmVmJywgJyNyZWN0MicpOworICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCkpOworICAgIH0pOworfQorCis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdmctdXNlLWhyZWYt
aW4tc2hhZG93LXRyZWUtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L3NoYWRvdy1kb20vc3ZnLXVzZS1ocmVmLWluLXNoYWRvdy10cmVlLWV4cGVjdGVkLmh0bWwJ
KG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N2Zy11c2UtaHJl
Zi1pbi1zaGFkb3ctdHJlZS1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorICAgIDxwPlRlc3QgcGFzc2Vz
IGlmIHlvdSBzZWUgYSBzaW5nbGUgMTAwcHggYnkgMTAwcHggZ3JlZW4gYm94IGJlbG93LjwvcD4K
KyAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQ6
IGdyZWVuOyI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L3NoYWRvdy1kb20vc3ZnLXVzZS1ocmVmLWluLXNoYWRvdy10cmVlLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N2Zy11c2UtaHJlZi1pbi1zaGFkb3ctdHJl
ZS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdmct
dXNlLWhyZWYtaW4tc2hhZG93LXRyZWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8cD5UZXN0IHBhc3NlcyBpZiB5
b3Ugc2VlIGEgc2luZ2xlIDEwMHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBiZWxvdy48L3A+Cis8ZGl2
IGlkPSJob3N0IiBzdHlsZT0id2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyI+PC9kaXY+Cis8
c3ZnPgorICAgIDxkZWZzPgorICAgICAgICA8cmVjdCBpZD0icmVjdCIgd2lkdGg9IjEwMCIgaGVp
Z2h0PSIxMDAiIGZpbGw9InJlZCI+CisgICAgPC9kZWZzPgorPC9zdmc+Cis8dGVtcGxhdGU+Cisg
ICAgPHN2ZyB2aWV3Ym94PSIwIDAgMTAwIDEwMCI+CisgICAgICAgIDxkZWZzPgorICAgICAgICAg
ICAgPHJlY3QgaWQ9InJlY3QiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJncmVlbiI+
CisgICAgICAgIDwvZGVmcz4KKyAgICAgICAgPHVzZSBocmVmPSIjcmVjdCI+CisgICAgICAgICAg
ICA8cmVjdCBpZD0icmVjdCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBmaWxsPSJyZWQiPgorICAg
ICAgICA8L3VzZT4KKyAgICA8L3N2Zz4KKzwvdGVtcGxhdGU+Cis8c2NyaXB0PgorCitjb25zdCBz
aGFkb3dSb290ID0gaG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdjbG9zZWQnfSk7CitzaGFkb3dS
b290LmFwcGVuZENoaWxkKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3RlbXBsYXRlJykuY29udGVu
dC5jbG9uZU5vZGUodHJ1ZSkpOyAKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="372634"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
      

    </bug>

</bugzilla>