<?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>93922</bug_id>
          
          <creation_ts>2012-08-13 19:04:29 -0700</creation_ts>
          <short_desc>[Shadow DOM] Insertion points need resetStyleInheritance</short_desc>
          <delta_ts>2012-10-11 20:51:41 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>97282</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan</cc>
    
    <cc>tasak</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>694398</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-08-13 19:04:29 -0700</bug_when>
    <thetext>http://dvcs.w3.org/hg/webcomponents/rev/dc65ffd87564
http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#api-html-content-element-reset-style-inheritance etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705132</commentid>
    <comment_count>1</comment_count>
      <attachid>160684</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-08-27 03:24:04 -0700</bug_when>
    <thetext>Created attachment 160684
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735480</commentid>
    <comment_count>2</comment_count>
      <attachid>167277</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-10-05 01:18:26 -0700</bug_when>
    <thetext>Created attachment 167277
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735798</commentid>
    <comment_count>3</comment_count>
      <attachid>167277</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-05 11:19:36 -0700</bug_when>
    <thetext>Comment on attachment 167277
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).

Oops :)

&gt; Source/WebCore/css/StyleResolver.cpp:1232
&gt; +    for ( ; insertionPoint; ) {
&gt; +        InsertionPoint* youngerInsertionPoint = shadow-&gt;insertionPointFor(insertionPoint);
&gt; +        if (!youngerInsertionPoint)
&gt; +            break;
&gt; +        insertionPoint = youngerInsertionPoint;
&gt; +    }

This seems forced. Can you help me understand why the styles of the insertion point wouldn&apos;t implicitly have this information? Presumably, their styles have already been computed and they already have the correctly reset inheritance.

&gt; LayoutTests/ChangeLog:8
&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).

Oops :)

&gt; LayoutTests/fast/dom/shadow/insertion-point-resetStyleInheritance-expected.txt:10
&gt; +FAIL window.getComputedStyle(document.getElementById(&quot;reset-style-inheritance-dynamic&quot;).firstChild).color should be rgb(0, 0, 0). Was rgb(255, 238, 238).

Why&apos;d we fail this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737434</commentid>
    <comment_count>4</comment_count>
      <attachid>167694</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-10-08 23:07:25 -0700</bug_when>
    <thetext>Created attachment 167694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737443</commentid>
    <comment_count>5</comment_count>
      <attachid>167277</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-10-08 23:17:22 -0700</bug_when>
    <thetext>Comment on attachment 167277
Patch

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

Thank you for reviewing.

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).
&gt; 
&gt; Oops :)

I&apos;m sorry. I forgot to update ChangeLogs. 
Done.

&gt;&gt; Source/WebCore/css/StyleResolver.cpp:1232
&gt;&gt; +    }
&gt; 
&gt; This seems forced. Can you help me understand why the styles of the insertion point wouldn&apos;t implicitly have this information? Presumably, their styles have already been computed and they already have the correctly reset inheritance.

I think, as insertion points don&apos;t have any renderers, insertion points don&apos;t have any render styles.
I know, it is possible for some element to have render styles without any renderers, i.e. implementing its own nonRendererRenderStyle method. 
However currently insertion points uses default nonRenderRenderStyle which just returns 0.
Talking about render styles, currently no information about reset-style-inheritance is added to render styles.

&gt;&gt; LayoutTests/ChangeLog:8
&gt;&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).
&gt; 
&gt; Oops :)

Sorry. Done.

&gt;&gt; LayoutTests/fast/dom/shadow/insertion-point-resetStyleInheritance-expected.txt:10
&gt;&gt; +FAIL window.getComputedStyle(document.getElementById(&quot;reset-style-inheritance-dynamic&quot;).firstChild).color should be rgb(0, 0, 0). Was rgb(255, 238, 238).
&gt; 
&gt; Why&apos;d we fail this?

I see. This is a bug of insertion-point-resetStyleInheritance.html. I fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737890</commentid>
    <comment_count>6</comment_count>
      <attachid>167694</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-10-09 09:56:29 -0700</bug_when>
    <thetext>Comment on attachment 167694
Patch

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

&gt; Source/WebCore/css/StyleResolver.cpp:1066
&gt; +inline bool isResetStyleInheritance(NodeRenderingContext&amp; context)

It makes no sense to say that a context “is reset style inheritance”. Instead we should ask if a context “should reset style inheritance” or “resets style inheritance”.

&gt; Source/WebCore/html/shadow/InsertionPoint.h:81
&gt; +    bool m_resetStyleInheritance : 1;

It’s unfortunate that the shadow specification gives a property a verb phrase name. The function resetStyleInheritance sounds like something that would perform a reset operation, not a getter that returns a boolean.

We don’t have to repeat that mistake in our data member. I would suggest the name “m_shouldResetStyleInheritance” or at least “m_resetsStyleInheritance”, and also suggest discussing changing the name in the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737895</commentid>
    <comment_count>7</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-09 10:04:21 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 167694 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=167694&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/StyleResolver.cpp:1066
&gt; &gt; +inline bool isResetStyleInheritance(NodeRenderingContext&amp; context)
&gt; 
&gt; It makes no sense to say that a context “is reset style inheritance”. Instead we should ask if a context “should reset style inheritance” or “resets style inheritance”.
&gt; 
&gt; &gt; Source/WebCore/html/shadow/InsertionPoint.h:81
&gt; &gt; +    bool m_resetStyleInheritance : 1;
&gt; 
&gt; It’s unfortunate that the shadow specification gives a property a verb phrase name. The function resetStyleInheritance sounds like something that would perform a reset operation, not a getter that returns a boolean.

Hey, you have the spec editor&apos;s ears right here :)

It&apos;s a flag that, if set, will reset style inheritance. What would be a better name?

&gt; 
&gt; We don’t have to repeat that mistake in our data member. I would suggest the name “m_shouldResetStyleInheritance” or at least “m_resetsStyleInheritance”, and also suggest discussing changing the name in the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737899</commentid>
    <comment_count>8</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-09 10:09:07 -0700</bug_when>
    <thetext>(In reply to comment #7)

&gt; It&apos;s a flag that, if set, will reset style inheritance. What would be a better name?

Here&apos;s the spec definition: http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#dfn-reset-style-inheritance</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737917</commentid>
    <comment_count>9</comment_count>
      <attachid>167694</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-09 10:29:07 -0700</bug_when>
    <thetext>Comment on attachment 167694
Patch

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

This is getting close. We need to get CSS WG to go ahead and spec display: contents, so that we can redefine &lt;content&gt;/&lt;shadow&gt; in terms of that primitive, instead of the hacking this into StyleResolver.

&gt; Source/WebCore/html/shadow/HTMLShadowElement.idl:37
&gt; +        attribute boolean resetStyleInheritance;

What about adding the attribute to HTML?

&gt;&gt; Source/WebCore/html/shadow/InsertionPoint.h:81
&gt;&gt; +    bool m_resetStyleInheritance : 1;
&gt; 
&gt; It’s unfortunate that the shadow specification gives a property a verb phrase name. The function resetStyleInheritance sounds like something that would perform a reset operation, not a getter that returns a boolean.
&gt; 
&gt; We don’t have to repeat that mistake in our data member. I would suggest the name “m_shouldResetStyleInheritance” or at least “m_resetsStyleInheritance”, and also suggest discussing changing the name in the spec.

For what it&apos;s worth, since it reflects the &quot;reset-style-inheritance&quot; attribute on HTMLContentElement/HTMLShadowElement, I think the name falls well into the current naming convention for attributes, such as &quot;autoplay&quot;, &quot;autofocus&quot;, &quot;defer&quot;, etc. http://www.whatwg.org/specs/web-apps/current-work/multipage/section-index.html#attributes-1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738520</commentid>
    <comment_count>10</comment_count>
      <attachid>167917</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-10-09 21:47:27 -0700</bug_when>
    <thetext>Created attachment 167917
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738530</commentid>
    <comment_count>11</comment_count>
      <attachid>167694</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-10-09 21:52:07 -0700</bug_when>
    <thetext>Comment on attachment 167694
Patch

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

Thank you for reviewing.

&gt;&gt;&gt; Source/WebCore/css/StyleResolver.cpp:1066
&gt;&gt;&gt; +inline bool isResetStyleInheritance(NodeRenderingContext&amp; context)
&gt;&gt; 
&gt;&gt; It makes no sense to say that a context “is reset style inheritance”. Instead we should ask if a context “should reset style inheritance” or “resets style inheritance”.
&gt; 
&gt; Hey, you have the spec editor&apos;s ears right here :)
&gt; 
&gt; It&apos;s a flag that, if set, will reset style inheritance. What would be a better name?

As resetStyleInheritance in HTMLShadowElement.idl and HTMLContentElement.idl  is defined in Shadow DOM spec, we cannot change the code. Firstly we have to change the spec.
However talking about this inline function and m_resetStyleInhertiance in class InsertionPoint, we can change. So I renamed.

&gt;&gt; Source/WebCore/html/shadow/HTMLShadowElement.idl:37
&gt;&gt; +        attribute boolean resetStyleInheritance;
&gt; 
&gt; What about adding the attribute to HTML?

Would you mean moving resetStyleInheritance from HTMLShadow/ContentElement.idl to HTMLElement.idl?
If so, I talked with morrita@ and haraken@ about this and heard that IDL files allow such duplication and it is bad to add resetStyleInheritance to HTMLElement because users can see HTMLElement has resetStyleInheritance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739004</commentid>
    <comment_count>12</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-10 09:09:55 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Would you mean moving resetStyleInheritance from HTMLShadow/ContentElement.idl to HTMLElement.idl?
&gt; If so, I talked with morrita@ and haraken@ about this and heard that IDL files allow such duplication and it is bad to add resetStyleInheritance to HTMLElement because users can see HTMLElement has resetStyleInheritance.

No, no -- none of that. Why would we need to do something like this? :)

I was just talking about adding the HTML attribute &quot;reset-style-inheritance&quot; to HTMLAttributeNames.in and the corresponding plumbing to set/unset it. You can do this in the follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740555</commentid>
    <comment_count>13</comment_count>
      <attachid>168339</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-10-11 20:01:06 -0700</bug_when>
    <thetext>Created attachment 168339
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740580</commentid>
    <comment_count>14</comment_count>
      <attachid>168339</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-11 20:51:36 -0700</bug_when>
    <thetext>Comment on attachment 168339
Patch for landing

Clearing flags on attachment: 168339

Committed r131136: &lt;http://trac.webkit.org/changeset/131136&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740581</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-11 20:51:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160684</attachid>
            <date>2012-08-27 03:24:04 -0700</date>
            <delta_ts>2012-10-05 01:18:20 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-93922-20120827192356.patch</filename>
            <type>text/plain</type>
            <size>18690</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGU2ZGE5YTBhMjk2YmUz
NmQ1ODU1YjRjNmMwNmUyODYwNWYzYjYwMi4uOTQ4NmVjOTdkNTY0ZjUyNjRhMmI5N2JlYjkwMjMz
YTcxNDIyM2E5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA4LTI3ICBUYWth
c2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBbU2hhZG93IERPTV0g
SW5zZXJ0aW9uIHBvaW50cyBuZWVkIHJlc2V0U3R5bGVJbmhlcml0YW5jZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5MjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9u
IG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBl
ci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBm
YXN0L2RvbS9zaGFkb3cvaW5zZXJ0aW9uLXBvaW50LXJlc2V0U3R5bGVJbmhlcml0YW5jZS5odG1s
CisKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGh0
bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9zaGFkb3cv
SFRNTFNoYWRvd0VsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBv
aW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6cmVzZXRTdHlsZUluaGVyaXRh
bmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9p
bnQ6OnNldFJlc2V0U3R5bGVJbmhlcml0YW5jZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSW5z
ZXJ0aW9uUG9pbnQuaDoKKyAgICAgICAgKEluc2VydGlvblBvaW50KToKKwogMjAxMi0wOC0yNyAg
U2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0
XSBSRUdSRVNTSU9OKHIxMjY2OTQpOiBJdCBicm9rZSB0aGUgZGVidWcgYnVpbGQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAwOGVlMjhjZGFiYzRmNzIzN2E0Y2NiZTQ4YzQ5
Yzk5MGZkNGM1OTBjLi4xZDJiMzI3MDI1MzVmMzI3ZmIyMGY2MTZmMzg2N2I5NWZlZmJjNzkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC02MCw2ICs2MCw3IEBACiAjaW5j
bHVkZSAiQ291bnRlci5oIgogI2luY2x1ZGUgIkNvdW50ZXJDb250ZW50LmgiCiAjaW5jbHVkZSAi
Q3Vyc29yTGlzdC5oIgorI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRlICJGb250
RmVhdHVyZVZhbHVlLmgiCiAjaW5jbHVkZSAiRm9udFZhbHVlLmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKQEAgLTEyMTEsNiArMTIxMiwyNyBAQCBpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjppbml0
RWxlbWVudChFbGVtZW50KiBlKQogICAgIH0KIH0KIAoraW5saW5lIGJvb2wgaXNSZXNldFN0eWxl
SW5oZXJpdGFuY2UoTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgaWYgKGNv
bnRleHQucmVzZXRTdHlsZUluaGVyaXRhbmNlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gY29udGV4dC5pbnNlcnRpb25Qb2lu
dCgpOworICAgIGlmICghaW5zZXJ0aW9uUG9pbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBBU1NFUlQoY29udGV4dC5ub2RlKCktPnBhcmVudEVsZW1lbnQoKSk7CisgICAgRWxlbWVudFNo
YWRvdyogc2hhZG93ID0gY29udGV4dC5ub2RlKCktPnBhcmVudEVsZW1lbnQoKS0+c2hhZG93KCk7
CisgICAgQVNTRVJUKHNoYWRvdyk7CisKKyAgICBmb3IgKCA7IGluc2VydGlvblBvaW50OyApIHsK
KyAgICAgICAgSW5zZXJ0aW9uUG9pbnQqIHlvdW5nZXJJbnNlcnRpb25Qb2ludCA9IHNoYWRvdy0+
aW5zZXJ0aW9uUG9pbnRGb3IoaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICBpZiAoIXlvdW5nZXJJ
bnNlcnRpb25Qb2ludCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpbnNlcnRpb25Qb2lu
dCA9IHlvdW5nZXJJbnNlcnRpb25Qb2ludDsKKyAgICB9CisgICAgcmV0dXJuIGluc2VydGlvblBv
aW50LT5yZXNldFN0eWxlSW5oZXJpdGFuY2UoKTsKK30KKwogaW5saW5lIHZvaWQgU3R5bGVSZXNv
bHZlcjo6aW5pdEZvclN0eWxlUmVzb2x2ZShFbGVtZW50KiBlLCBSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUsIFBzZXVkb0lkIHBzZXVkb0lEKQogewogICAgIG1fY2hlY2tlci5zZXRQc2V1ZG9TdHls
ZShwc2V1ZG9JRCk7CkBAIC0xMjE4LDcgKzEyNDAsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZVJlc29s
dmVyOjppbml0Rm9yU3R5bGVSZXNvbHZlKEVsZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBwYXJlbnRT
dAogICAgIGlmIChlKSB7CiAgICAgICAgIE5vZGVSZW5kZXJpbmdDb250ZXh0IGNvbnRleHQoZSk7
CiAgICAgICAgIG1fcGFyZW50Tm9kZSA9IGNvbnRleHQucGFyZW50Tm9kZUZvclJlbmRlcmluZ0Fu
ZFN0eWxlKCk7Ci0gICAgICAgIG1fcGFyZW50U3R5bGUgPSBjb250ZXh0LnJlc2V0U3R5bGVJbmhl
cml0YW5jZSgpPyAwIDoKKyAgICAgICAgbV9wYXJlbnRTdHlsZSA9IGlzUmVzZXRTdHlsZUluaGVy
aXRhbmNlKGNvbnRleHQpID8gMCA6CiAgICAgICAgICAgICBwYXJlbnRTdHlsZSA/IHBhcmVudFN0
eWxlIDoKICAgICAgICAgICAgIG1fcGFyZW50Tm9kZSA/IG1fcGFyZW50Tm9kZS0+cmVuZGVyU3R5
bGUoKSA6IDA7CiAgICAgICAgIG1fZGlzdHJpYnV0ZWRUb0luc2VydGlvblBvaW50ID0gY29udGV4
dC5pbnNlcnRpb25Qb2ludCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSFRNTENvbnRlbnRFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hU
TUxDb250ZW50RWxlbWVudC5pZGwKaW5kZXggYzkyOGQ0NDk0MDMxMzhlYjdkMzI0NGEwN2YyZWMw
OTU5MGY4YmViMC4uZGYwOGIzODYyOWQ5MjJkMDAwMzU5YzZjMjRjN2Q0MGYwN2RjNGRjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaWRs
CkBAIC0zMCw1ICszMCw2IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgVjhFbmFibGVkQXRSdW50
aW1lPXNoYWRvd0RPTQogICAgIF0gSFRNTENvbnRlbnRFbGVtZW50IDogSFRNTEVsZW1lbnQgewog
ICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBzZWxlY3Q7CisgICAgICAgIGF0
dHJpYnV0ZSBib29sZWFuIHJlc2V0U3R5bGVJbmhlcml0YW5jZTsKICAgICB9OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaWRsIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaWRsCmluZGV4IDk0
ZmFjYjdiZWE0NGJlOGI3MDMwNTg1MDViMGVlNzQ2ODdmNGZlMzQuLmMyYzhmMWFkYWY2Njg4NmRm
YWNhYjNiY2I0MzMwZWQyZWM3MDU3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9IVE1MU2hhZG93RWxlbWVudC5pZGwKQEAgLTM0LDYgKzM0LDcgQEAgbW9kdWxlIGh0bWwg
ewogICAgICAgICBDb25kaXRpb25hbD1TSEFET1dfRE9NLAogICAgICAgICBWOEVuYWJsZWRBdFJ1
bnRpbWU9c2hhZG93RE9NCiAgICAgXSBIVE1MU2hhZG93RWxlbWVudCA6IEhUTUxFbGVtZW50IHsK
KyAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gcmVzZXRTdHlsZUluaGVyaXRhbmNlOwogICAgIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBv
aW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcApp
bmRleCA0MzU3OTY2NzdiMmJkNzQ4YzQ5NDEzNzEzMTU5MzUzOTk0YTdlYzQyLi5iOWJlZTc1ZDE1
YmE4ZWRmZjc4OTM5YzgwMzhhYzQxZjNhZTY2ZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogSW5zZXJ0aW9uUG9pbnQ6Okluc2VydGlvblBvaW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IEhUTUxFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KQorICAgICwgbV9yZXNldFN0eWxlSW5oZXJpdGFuY2UoZmFsc2UpCiB7
CiB9CiAKQEAgLTE0NSw0ICsxNDYsMTggQEAgdm9pZCBJbnNlcnRpb25Qb2ludDo6cmVtb3ZlZEZy
b20oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiAgICAgSFRNTEVsZW1lbnQ6OnJlbW92
ZWRGcm9tKGluc2VydGlvblBvaW50KTsKIH0KIAorYm9vbCBJbnNlcnRpb25Qb2ludDo6cmVzZXRT
dHlsZUluaGVyaXRhbmNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNldFN0eWxlSW5oZXJp
dGFuY2U7Cit9CisKK3ZvaWQgSW5zZXJ0aW9uUG9pbnQ6OnNldFJlc2V0U3R5bGVJbmhlcml0YW5j
ZShib29sIHZhbHVlKQoreworICAgIGlmICh2YWx1ZSAhPSBtX3Jlc2V0U3R5bGVJbmhlcml0YW5j
ZSkgeworICAgICAgICBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSA9IHZhbHVlOworICAgICAgICBp
ZiAoYXR0YWNoZWQoKSAmJiBpc0FjdGl2ZSgpKQorICAgICAgICAgICAgc2hhZG93Um9vdCgpLT5o
b3N0KCktPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlv
blBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCmlu
ZGV4IDYyMzdkZTJlNjg2ODJkMGJlMmNhODgyOGIwZThjOTI5ZTMxOTBmNGIuLjVmM2FmZGQxNGRh
NmY0ODcwZGY3ODMwYTQzYTQyNTE2ODQ4MWZkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtNTMsNiArNTMsOSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGlzU2VsZWN0VmFsaWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGRv
ZXNTZWxlY3RGcm9tSG9zdENoaWxkcmVuKCkgY29uc3QgPSAwOwogCisgICAgYm9vbCByZXNldFN0
eWxlSW5oZXJpdGFuY2UoKSBjb25zdDsKKyAgICB2b2lkIHNldFJlc2V0U3R5bGVJbmhlcml0YW5j
ZShib29sKTsKKwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGV0YWNoKCk7CiAgICAgdmlydHVhbCBib29sIGlzSW5zZXJ0aW9uUG9pbnQoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiB0cnVlOyB9CkBAIC03NSw2ICs3OCw3IEBAIHByb3RlY3RlZDoKIAogcHJp
dmF0ZToKICAgICBDb250ZW50RGlzdHJpYnV0aW9uIG1fZGlzdHJpYnV0aW9uOworICAgIGJvb2wg
bV9yZXNldFN0eWxlSW5oZXJpdGFuY2UgOiAxOwogfTsKIAogaW5saW5lIGJvb2wgaXNJbnNlcnRp
b25Qb2ludChjb25zdCBOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg3ZWU2MGFmYTVmODdmMTAyOGMxNDRh
YjQ2NjhmM2IyYmYzNTZlNmYuLmUxODQyOGZhZGFlYTQ5YjQxYmJmN2FlMzNhOTAzNmQxNDZhOGJl
Y2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOC0yNyAgVGFrYXNoaSBTYWthbW90byAg
PHRhc2FrQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1NoYWRvdyBET01dIEluc2VydGlvbiBwb2lu
dHMgbmVlZCByZXNldFN0eWxlSW5oZXJpdGFuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkzOTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdl
IHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVz
Y3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvaW5z
ZXJ0aW9uLXBvaW50LXJlc2V0U3R5bGVJbmhlcml0YW5jZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9pbnNlcnRpb24tcG9pbnQtcmVzZXRTdHlsZUluaGVy
aXRhbmNlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA4LTI3ICBCYWxhenMgQW5rZXMgIDxiYW5rQGlu
Zi51LXN6ZWdlZC5odT4KIAogICAgICAgICBbUXRdIE5ldyB0ZXN0IGludHJvZHVjZWQgaW4gcjEy
NjYxMSBmYWlsczogZmFzdC9jc3MvaW1hZ2Utc2V0LXNldHRpbmcuaHRtbC4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9pbnNlcnRpb24tcG9pbnQtcmVzZXRTdHlsZUlu
aGVyaXRhbmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9pbnNl
cnRpb24tcG9pbnQtcmVzZXRTdHlsZUluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xYjhiZGJhZjdjYWRmMWQyZDcwZjU2ODQzZTlkOTViMTZhYTJjNmY5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2luc2VydGlvbi1wb2ludC1yZXNldFN0
eWxlSW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjUgQEAKK1Rlc3QgY2FzZTog
bm8gcmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UuIGNvbG9yIHZhbHVlIHNob3VsZCBiZSBpbmhlcml0
ZWQgZnJvbSB0aGUgc2hhZG93IGhvc3QuCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJuby1yZXNldC1zdHlsZS1pbmhlcml0YW5jZSIpLmZpcnN0
Q2hpbGQpLmNvbG9yIGlzICJyZ2IoMjU1LCAyMzgsIDIzOCkiCitQQVNTIHdpbmRvdy5nZXRDb21w
dXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJuby1yZXNldC1zdHlsZS1pbmhlcml0
YW5jZSIpLmZpcnN0Q2hpbGQpLmJhY2tncm91bmRDb2xvciBpcyAicmdiYSgwLCAwLCAwLCAwKSIK
K1Rlc3QgY2FzZTogcmVzZXQtc3R5bGUtaW5oZXJ0aWFjZSBiYXNpYyB0ZXN0LiBjb2xvciB2YWx1
ZSBzaG91bGQgYmUgaW5pdGlhbCBiZWNhdXNlIGluc2VydGlvbiBwb2ludCdzIHJlc2V0U3R5bGVJ
bmhlcml0YW5jZSBpcyB0cnVlLgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UiKS5maXJzdENoaWxkKS5j
b2xvciBpcyAicmdiKDAsIDAsIDApIgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UiKS5maXJzdENoaWxk
KS5iYWNrZ3JvdW5kQ29sb3IgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitUZXN0IGNhc2U6IHJlc2V0
LXN0eWxlLWluaGVydGlhY2UgY2hhbmdlcyBkeW5hbWljYWxseS4gRmlyc3RseSBjb2xvciB2YWx1
ZSBzaG91bGQgYmUgaW5oZXJpdGVkLiBOZXh0LCBpbml0aWFsLiBBdCBsYXN0LCBpbmhlcml0ZWQu
CitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXNldC1zdHlsZS1pbmhlcml0YW5jZS1keW5hbWljIikuZmlyc3RDaGlsZCkuY29sb3IgaXMgInJn
YigyNTUsIDIzOCwgMjM4KSIKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc2V0LXN0eWxlLWluaGVyaXRhbmNlLWR5bmFtaWMiKS5maXJzdENo
aWxkKS5iYWNrZ3JvdW5kQ29sb3IgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitGQUlMIHdpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1zdHlsZS1pbmhl
cml0YW5jZS1keW5hbWljIikuZmlyc3RDaGlsZCkuY29sb3Igc2hvdWxkIGJlIHJnYigwLCAwLCAw
KS4gV2FzIHJnYigyNTUsIDIzOCwgMjM4KS4KK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc2V0LXN0eWxlLWluaGVyaXRhbmNlLWR5bmFtaWMi
KS5maXJzdENoaWxkKS5iYWNrZ3JvdW5kQ29sb3IgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNT
IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1z
dHlsZS1pbmhlcml0YW5jZS1keW5hbWljIikuZmlyc3RDaGlsZCkuY29sb3IgaXMgInJnYigyNTUs
IDIzOCwgMjM4KSIKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlc2V0LXN0eWxlLWluaGVyaXRhbmNlLWR5bmFtaWMiKS5maXJzdENoaWxkKS5i
YWNrZ3JvdW5kQ29sb3IgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitUZXN0IGNhc2U6IHRoZSBwYXJl
bnQgbm9kZSBvZiB0aGUgZGlzdHJpYnV0ZWQgbm9kZSBpcyBpbiB0aGUgc2FtZSBzaGFkb3cgZG9t
IHN1YnRyZWUgYXMgdGhlIGluc2VydGlvbiBwb2ludC4gY29sb3IgdmFsdWUgc2hvdWxkIGJlIGlu
aXRpYWwuIHJlc2V0LXN0eWxlLWluaGVyaXRhbmNlIGRvZXNuJ3QgZGVwZW5kIG9uIHdoZXRoZXIg
cGFyZW50IHN0eWxlIG5vZGUgaXMgaW4gdGhlIHNhbWUgdHJlZXNjb3BlIG9yIG5vdC4KK1BBU1Mg
d2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc2V0LWJ1
dC1ub3QtY3Jvc3MtdXBwZXItYm91bmRhcnkiKS5maXJzdENoaWxkKS5jb2xvciBpcyAicmdiKDAs
IDAsIDApIgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicmVzZXQtYnV0LW5vdC1jcm9zcy11cHBlci1ib3VuZGFyeSIpLmZpcnN0Q2hpbGQpLmJh
Y2tncm91bmRDb2xvciBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1Rlc3QgY2FzZTogcmVzZXQtc3R5
bGUtaW5oZXJpdGFuY2Ugd2l0aCBtdWx0aXBsZSBzaGFkb3cgcm9vdHMuIGNvbG9yIHZhbHVlIHNo
b3VsZCBiZSBpbml0aWFsLCBiZWNhdXNlIHJlc2V0LXN0eWxlLWluaGVyaXRhbmNlIG9mIHRoZSBp
bnNlcnRpb24gcG9pbnQgaW4gdGhlIHlvdW5nZXN0IHNoYWRvdyByb290IGlzIHRydWUuCitQQVNT
IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtdWx0aXBs
ZS1zaGFkb3ctcm9vdHMiKS5maXJzdENoaWxkKS5jb2xvciBpcyAicmdiKDAsIDAsIDApIgorUEFT
UyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXVsdGlw
bGUtc2hhZG93LXJvb3RzIikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yIGlzICJyZ2JhKDAs
IDAsIDAsIDApIgorVGVzdCBjYXNlOiBtdWx0aXBsZSBpbnNlcnRpb24gcG9pbnRzIGluIHRoZSBz
YW1lIHNoYWRvdyBkb20gc3VidHJlZS4uIEVhY2ggcmVzZXQtc3R5bGUtaW5oZXJpdGFuY2Ugc2hv
dWxkIGJlIGNoZWNrZWQuCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJtdWx0aXBsZS1pbnNlcnRpb24tcG9pbnRzIikuZmlyc3RDaGlsZCkuY29s
b3IgaXMgInJnYigyNTUsIDIzOCwgMjM4KSIKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm11bHRpcGxlLWluc2VydGlvbi1wb2ludHMiKS5maXJz
dENoaWxkKS5iYWNrZ3JvdW5kQ29sb3IgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIHdpbmRv
dy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtdWx0aXBsZS1pbnNl
cnRpb24tcG9pbnRzIikubGFzdENoaWxkKS5jb2xvciBpcyAicmdiKDAsIDAsIDApIgorUEFTUyB3
aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXVsdGlwbGUt
aW5zZXJ0aW9uLXBvaW50cyIpLmxhc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yIGlzICJyZ2JhKDAs
IDAsIDAsIDApIgorRE9ORQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2luc2VydGlvbi1wb2ludC1yZXNldFN0eWxlSW5oZXJpdGFuY2UuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9pbnNlcnRpb24tcG9pbnQtcmVzZXRTdHlsZUluaGVyaXRhbmNlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzMyNTQxMTc0NzE0Y2Q5MWRlMzg0Njg4MGZkYjEyMDA0NGU0ODIwNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9pbnNlcnRpb24t
cG9pbnQtcmVzZXRTdHlsZUluaGVyaXRhbmNlLmh0bWwKQEAgLTAsMCArMSwxMjcgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KK2Rpdi5yZXNldFRlc3QgeworICBi
YWNrZ3JvdW5kLWNvbG9yOiAjZWVmOworICBjb2xvcjogI2ZlZTsKK30KKzwvc3R5bGU+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1
bmN0aW9uIHRlc3ROb1Jlc2V0U3R5bGVJbmhlcml0YW5jZSgpIHsKKyAgICBkZWJ1ZygiVGVzdCBj
YXNlOiBubyByZXNldC1zdHlsZS1pbmhlcml0YW5jZS4gY29sb3IgdmFsdWUgc2hvdWxkIGJlIGlu
aGVyaXRlZCBmcm9tIHRoZSBzaGFkb3cgaG9zdC4iKTsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ25vLXJlc2V0LXN0eWxlLWluaGVyaXRhbmNlJyk7CisKKyAgICB2YXIg
c2hhZG93Um9vdCA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRpdik7CisgICAgc2hhZG93Um9vdC5p
bm5lckhUTUwgPSAnPGNvbnRlbnQgaWQ9ImNvbnRlbnQiPjwvY29udGVudD4nOworICAgIAorICAg
IHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnQnKS5yZXNldFN0eWxlSW5oZXJpdGFu
Y2UgPSBmYWxzZTsKKyAgICBzaG91bGRCZSgnd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoIm5vLXJlc2V0LXN0eWxlLWluaGVyaXRhbmNlIikuZmlyc3RDaGls
ZCkuY29sb3InLCAnInJnYigyNTUsIDIzOCwgMjM4KSInKTsKKyAgICBzaG91bGRCZSgnd2luZG93
LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5vLXJlc2V0LXN0eWxl
LWluaGVyaXRhbmNlIikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yJywgJyJyZ2JhKDAsIDAs
IDAsIDApIicpOworfQorCitmdW5jdGlvbiB0ZXN0UmVzZXRTdHlsZUluaGVyaXRhbmNlKCkgewor
ICAgIGRlYnVnKCJUZXN0IGNhc2U6IHJlc2V0LXN0eWxlLWluaGVydGlhY2UgYmFzaWMgdGVzdC4g
Y29sb3IgdmFsdWUgc2hvdWxkIGJlIGluaXRpYWwgYmVjYXVzZSBpbnNlcnRpb24gcG9pbnQncyBy
ZXNldFN0eWxlSW5oZXJpdGFuY2UgaXMgdHJ1ZS4iKTsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Jlc2V0LXN0eWxlLWluaGVyaXRhbmNlJyk7CisKKyAgICB2YXIgc2hh
ZG93Um9vdCA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRpdik7CisgICAgc2hhZG93Um9vdC5pbm5l
ckhUTUwgPSAnPGNvbnRlbnQgaWQ9ImNvbnRlbnQiPjwvY29udGVudD4nOworCisgICAgc2hhZG93
Um9vdC5nZXRFbGVtZW50QnlJZCgnY29udGVudCcpLnJlc2V0U3R5bGVJbmhlcml0YW5jZSA9IHRy
dWU7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZXNldC1zdHlsZS1pbmhlcml0YW5jZSIpLmZpcnN0Q2hpbGQpLmNvbG9yJywg
JyJyZ2IoMCwgMCwgMCkiJyk7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1zdHlsZS1pbmhlcml0YW5jZSIpLmZpcnN0
Q2hpbGQpLmJhY2tncm91bmRDb2xvcicsICcicmdiYSgwLCAwLCAwLCAwKSInKTsKK30KKworZnVu
Y3Rpb24gdGVzdFJlc2V0U3R5bGVJbmhlcml0YW5jZUR5bmFtaWMoKSB7CisgICAgZGVidWcoIlRl
c3QgY2FzZTogcmVzZXQtc3R5bGUtaW5oZXJ0aWFjZSBjaGFuZ2VzIGR5bmFtaWNhbGx5LiBGaXJz
dGx5IGNvbG9yIHZhbHVlIHNob3VsZCBiZSBpbmhlcml0ZWQuIE5leHQsIGluaXRpYWwuIEF0IGxh
c3QsIGluaGVyaXRlZC4iKTsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Jlc2V0LXN0eWxlLWluaGVyaXRhbmNlJyk7CisKKyAgICB2YXIgc2hhZG93Um9vdCA9IG5ldyBX
ZWJLaXRTaGFkb3dSb290KGRpdik7CisgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPGNvbnRl
bnQgaWQ9ImNvbnRlbnQiPjwvY29udGVudD4nOworCisgICAgc2hhZG93Um9vdC5nZXRFbGVtZW50
QnlJZCgnY29udGVudCcpLnJlc2V0U3R5bGVJbmhlcml0YW5jZSA9IGZhbHNlOworICAgIHNob3Vs
ZEJlKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
ZXQtc3R5bGUtaW5oZXJpdGFuY2UtZHluYW1pYyIpLmZpcnN0Q2hpbGQpLmNvbG9yJywgJyJyZ2Io
MjU1LCAyMzgsIDIzOCkiJyk7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1zdHlsZS1pbmhlcml0YW5jZS1keW5hbWlj
IikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yJywgJyJyZ2JhKDAsIDAsIDAsIDApIicpOwor
CisgICAgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgnY29udGVudCcpLnJlc2V0U3R5bGVJbmhl
cml0YW5jZSA9IHRydWU7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1zdHlsZS1pbmhlcml0YW5jZS1keW5hbWljIiku
Zmlyc3RDaGlsZCkuY29sb3InLCAnInJnYigwLCAwLCAwKSInKTsKKyAgICBzaG91bGRCZSgnd2lu
ZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc2V0LXN0eWxl
LWluaGVyaXRhbmNlLWR5bmFtaWMiKS5maXJzdENoaWxkKS5iYWNrZ3JvdW5kQ29sb3InLCAnInJn
YmEoMCwgMCwgMCwgMCkiJyk7CisKKyAgICBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCdjb250
ZW50JykucmVzZXRTdHlsZUluaGVyaXRhbmNlID0gZmFsc2U7CisgICAgc2hvdWxkQmUoJ3dpbmRv
dy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1zdHlsZS1p
bmhlcml0YW5jZS1keW5hbWljIikuZmlyc3RDaGlsZCkuY29sb3InLCAnInJnYigyNTUsIDIzOCwg
MjM4KSInKTsKKyAgICBzaG91bGRCZSgnd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc2V0LXN0eWxlLWluaGVyaXRhbmNlLWR5bmFtaWMiKS5maXJzdENo
aWxkKS5iYWNrZ3JvdW5kQ29sb3InLCAnInJnYmEoMCwgMCwgMCwgMCkiJyk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RSZXNldFN0eWxlSW5oZXJpdGFuY2VXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5
KCkgeworICAgIGRlYnVnKCJUZXN0IGNhc2U6IHRoZSBwYXJlbnQgbm9kZSBvZiB0aGUgZGlzdHJp
YnV0ZWQgbm9kZSBpcyBpbiB0aGUgc2FtZSBzaGFkb3cgZG9tIHN1YnRyZWUgYXMgdGhlIGluc2Vy
dGlvbiBwb2ludC4gY29sb3IgdmFsdWUgc2hvdWxkIGJlIGluaXRpYWwuIHJlc2V0LXN0eWxlLWlu
aGVyaXRhbmNlIGRvZXNuJ3QgZGVwZW5kIG9uIHdoZXRoZXIgcGFyZW50IHN0eWxlIG5vZGUgaXMg
aW4gdGhlIHNhbWUgdHJlZXNjb3BlIG9yIG5vdC4iKTsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Jlc2V0LWJ1dC1ub3QtY3Jvc3MtdXBwZXItYm91bmRhcnknKTsKKyAg
ICB2YXIgc2hhZG93Um9vdCA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRpdik7CisKKyAgICBzaGFk
b3dSb290LmlubmVySFRNTCA9ICc8ZGl2IHN0eWxlPSJjb2xvcjpibHVlOyBiYWNrZ3JvdW5kLWNv
bG9yOmdyZWVuOyI+PGNvbnRlbnQgaWQ9ImNvbnRlbnQiPjwvY29udGVudD48L2Rpdj4nOworCisg
ICAgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgnY29udGVudCcpLnJlc2V0U3R5bGVJbmhlcml0
YW5jZSA9IHRydWU7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1idXQtbm90LWNyb3NzLXVwcGVyLWJvdW5kYXJ5Iiku
Zmlyc3RDaGlsZCkuY29sb3InLCAnInJnYigwLCAwLCAwKSInKTsKKyAgICBzaG91bGRCZSgnd2lu
ZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc2V0LWJ1dC1u
b3QtY3Jvc3MtdXBwZXItYm91bmRhcnkiKS5maXJzdENoaWxkKS5iYWNrZ3JvdW5kQ29sb3InLCAn
InJnYmEoMCwgMCwgMCwgMCkiJyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RSZXNldFN0eWxlSW5oZXJp
dGFuY2VXaXRoTXVsdGlwbGVTaGFkb3dSb290cygpIHsKKyAgICBkZWJ1ZygiVGVzdCBjYXNlOiBy
ZXNldC1zdHlsZS1pbmhlcml0YW5jZSB3aXRoIG11bHRpcGxlIHNoYWRvdyByb290cy4gY29sb3Ig
dmFsdWUgc2hvdWxkIGJlIGluaXRpYWwsIGJlY2F1c2UgcmVzZXQtc3R5bGUtaW5oZXJpdGFuY2Ug
b2YgdGhlIGluc2VydGlvbiBwb2ludCBpbiB0aGUgeW91bmdlc3Qgc2hhZG93IHJvb3QgaXMgdHJ1
ZS4iKTsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ211bHRpcGxlLXNo
YWRvdy1yb290cycpOworICAgIHZhciBvbGRlc3RTaGFkb3dSb290ID0gbmV3IFdlYktpdFNoYWRv
d1Jvb3QoZGl2KTsKKyAgICBvbGRlc3RTaGFkb3dSb290LmlubmVySFRNTCA9ICc8Y29udGVudCBp
ZD0iY29udGVudCI+PC9jb250ZW50Pic7CisKKyAgICB2YXIgeW91bmdlclNoYWRvd1Jvb3QgPSBu
ZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworICAgIHlvdW5nZXJTaGFkb3dSb290LmlubmVySFRN
TCA9ICc8c2hhZG93IGlkPSJzaGFkb3ciPjwvc2hhZG93Pic7CisKKyAgICB2YXIgeW91bmdlc3RT
aGFkb3dSb290ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKKyAgICB5b3VuZ2VzdFNoYWRv
d1Jvb3QuaW5uZXJIVE1MID0gJzxzaGFkb3cgaWQ9InNoYWRvdyI+PC9zaGFkb3c+JzsKKworICAg
IG9sZGVzdFNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnQnKS5yZXNldFN0eWxlSW5o
ZXJpdGFuY2UgPSBmYWxzZTsKKyAgICB5b3VuZ2VyU2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgn
c2hhZG93JykucmVzZXRTdHlsZUluaGVyaXRhbmNlID0gZmFsc2U7CisgICAgeW91bmdlc3RTaGFk
b3dSb290LmdldEVsZW1lbnRCeUlkKCdzaGFkb3cnKS5yZXNldFN0eWxlSW5oZXJpdGFuY2UgPSB0
cnVlOworICAgIHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgibXVsdGlwbGUtc2hhZG93LXJvb3RzIikuZmlyc3RDaGlsZCkuY29sb3InLCAn
InJnYigwLCAwLCAwKSInKTsKKyAgICBzaG91bGRCZSgnd2luZG93LmdldENvbXB1dGVkU3R5bGUo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm11bHRpcGxlLXNoYWRvdy1yb290cyIpLmZpcnN0Q2hp
bGQpLmJhY2tncm91bmRDb2xvcicsICcicmdiYSgwLCAwLCAwLCAwKSInKTsKK30KKworZnVuY3Rp
b24gdGVzdFJlc2V0U3R5bGVJbmhlcml0YW5jZVdpdGhNdWx0aXBsZUluc2VydGlvblBvaW50cygp
IHsKKyAgICBkZWJ1ZygiVGVzdCBjYXNlOiBtdWx0aXBsZSBpbnNlcnRpb24gcG9pbnRzIGluIHRo
ZSBzYW1lIHNoYWRvdyBkb20gc3VidHJlZS4uIEVhY2ggcmVzZXQtc3R5bGUtaW5oZXJpdGFuY2Ug
c2hvdWxkIGJlIGNoZWNrZWQuIik7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdtdWx0aXBsZS1pbnNlcnRpb24tcG9pbnRzJyk7CisgICAgdmFyIG9sZGVzdFNoYWRvd1Jv
b3QgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworICAgIG9sZGVzdFNoYWRvd1Jvb3QuaW5u
ZXJIVE1MID0gJzxjb250ZW50IGlkPSJjb250ZW50Ij48L2NvbnRlbnQ+JzsKKworICAgIHZhciB5
b3VuZ2VzdFNoYWRvd1Jvb3QgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworICAgIHlvdW5n
ZXN0U2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPGNvbnRlbnQgc2VsZWN0PSI6Zmlyc3QtY2hpbGQi
IGlkPSJjb250ZW50Ij48L2NvbnRlbnQ+PHNoYWRvdyBpZD0ic2hhZG93Ij48L3NoYWRvdz4nOwor
CisgICAgeW91bmdlc3RTaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCdjb250ZW50JykucmVzZXRT
dHlsZUluaGVyaXRhbmNlID0gZmFsc2U7CisgICAgeW91bmdlc3RTaGFkb3dSb290LmdldEVsZW1l
bnRCeUlkKCdzaGFkb3cnKS5yZXNldFN0eWxlSW5oZXJpdGFuY2UgPSB0cnVlOworCisgICAgc2hv
dWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJt
dWx0aXBsZS1pbnNlcnRpb24tcG9pbnRzIikuZmlyc3RDaGlsZCkuY29sb3InLCAnInJnYigyNTUs
IDIzOCwgMjM4KSInKTsKKyAgICBzaG91bGRCZSgnd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm11bHRpcGxlLWluc2VydGlvbi1wb2ludHMiKS5maXJzdENo
aWxkKS5iYWNrZ3JvdW5kQ29sb3InLCAnInJnYmEoMCwgMCwgMCwgMCkiJyk7CisgICAgc2hvdWxk
QmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtdWx0
aXBsZS1pbnNlcnRpb24tcG9pbnRzIikubGFzdENoaWxkKS5jb2xvcicsICcicmdiKDAsIDAsIDAp
IicpOworICAgIHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgibXVsdGlwbGUtaW5zZXJ0aW9uLXBvaW50cyIpLmxhc3RDaGlsZCkuYmFja2dy
b3VuZENvbG9yJywgJyJyZ2JhKDAsIDAsIDAsIDApIicpOworfQorCitmdW5jdGlvbiBydW5UZXN0
cygpIHsKKyAgICB0ZXN0Tm9SZXNldFN0eWxlSW5oZXJpdGFuY2UoKTsKKyAgICB0ZXN0UmVzZXRT
dHlsZUluaGVyaXRhbmNlKCk7CisgICAgdGVzdFJlc2V0U3R5bGVJbmhlcml0YW5jZUR5bmFtaWMo
KTsKKyAgICB0ZXN0UmVzZXRTdHlsZUluaGVyaXRhbmNlV2l0aG91dENyb3NzaW5nVXBwZXJCb3Vu
ZGFyeSgpCisgICAgdGVzdFJlc2V0U3R5bGVJbmhlcml0YW5jZVdpdGhNdWx0aXBsZVNoYWRvd1Jv
b3RzKCk7CisgICAgdGVzdFJlc2V0U3R5bGVJbmhlcml0YW5jZVdpdGhNdWx0aXBsZUluc2VydGlv
blBvaW50cygpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0LWNhc2VzJykuaW5u
ZXJIVE1MID0gJ0RPTkUnOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1
blRlc3RzKCkiPgorPGRpdiBpZD0idGVzdC1jYXNlcyI+CisgIDxkaXYgaWQ9Im5vLXJlc2V0LXN0
eWxlLWluaGVyaXRhbmNlIiBjbGFzcz0icmVzZXRUZXN0Ij48c3Bhbj5maXJzdC1jaGlsZDwvc3Bh
bj48L2Rpdj4KKyAgPGRpdiBpZD0icmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UiIGNsYXNzPSJyZXNl
dFRlc3QiPjxzcGFuPmZpcnN0LWNoaWxkPC9zcGFuPjwvZGl2PgorICA8ZGl2IGlkPSJyZXNldC1z
dHlsZS1pbmhlcml0YW5jZS1keW5hbWljIiBjbGFzcz0icmVzZXRUZXN0Ij48c3Bhbj5maXJzdC1j
aGlsZDwvc3Bhbj48L2Rpdj4KKyAgPGRpdiBpZD0icmVzZXQtYnV0LW5vdC1jcm9zcy11cHBlci1i
b3VuZGFyeSIgY2xhc3M9InJlc2V0VGVzdCI+PHNwYW4+Zmlyc3QtY2hpbGQ8L3NwYW4+PC9kaXY+
CisgIDxkaXYgaWQ9Im11bHRpcGxlLXNoYWRvdy1yb290cyIgY2xhc3M9InJlc2V0VGVzdCI+PHNw
YW4+Zmlyc3QtY2hpbGQ8L3NwYW4+PC9kaXY+CisgIDxkaXYgaWQ9Im11bHRpcGxlLWluc2VydGlv
bi1wb2ludHMiIGNsYXNzPSJyZXNldFRlc3QiPjxzcGFuPmZpcnN0LWNoaWxkPC9zcGFuPjxzcGFu
Pmxhc3QtY2hpbGQ8L3NwYW4+PC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167277</attachid>
            <date>2012-10-05 01:18:26 -0700</date>
            <delta_ts>2012-10-08 23:17:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93922-20121005171735.patch</filename>
            <type>text/plain</type>
            <size>18700</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk2ZTRjNTAxNDYyZDg5
NmFlZDNlNDg2ZTUxNzVhOWMzZmY0NDM1MC4uN2I3ZmFmNDIyZTAxNGYxZDIzNTA3ZGE3NWI3MzRm
YmY2NThiM2E5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA4LTI3ICBUYWth
c2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBbU2hhZG93IERPTV0g
SW5zZXJ0aW9uIHBvaW50cyBuZWVkIHJlc2V0U3R5bGVJbmhlcml0YW5jZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5MjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9u
IG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBl
ci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBm
YXN0L2RvbS9zaGFkb3cvaW5zZXJ0aW9uLXBvaW50LXJlc2V0U3R5bGVJbmhlcml0YW5jZS5odG1s
CisKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGh0
bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9zaGFkb3cv
SFRNTFNoYWRvd0VsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBv
aW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6cmVzZXRTdHlsZUluaGVyaXRh
bmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9p
bnQ6OnNldFJlc2V0U3R5bGVJbmhlcml0YW5jZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSW5z
ZXJ0aW9uUG9pbnQuaDoKKyAgICAgICAgKEluc2VydGlvblBvaW50KToKKwogMjAxMi0xMC0wNCAg
QWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAgICAgICBNdXRhdGlvblJlY29y
ZCBhdHRyaWJ1dGVOYW1lIHNob3VsZCBiZSBudWxsIGZvciBub24gYXR0cmlidXRlIGNoYW5nZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBjYzNmNWYzZGYyZmEzYzEyNDgy
YTFiODI4ZmNjY2IzMjc5OTgyZDBjLi43NTIyZjMyMDQ2YTU5ODQ5NTE1ODEwZDdkNzg4YWVlYWRm
NDRlZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC02MSw2ICs2MSw3
IEBACiAjaW5jbHVkZSAiQ291bnRlckNvbnRlbnQuaCIKICNpbmNsdWRlICJDdXJzb3JMaXN0Lmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkVs
ZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRlICJGb250RmVhdHVyZVZhbHVlLmgiCiAjaW5jbHVkZSAi
Rm9udFZhbHVlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTEyMTEsNiArMTIxMiwyNyBAQCBp
bmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjppbml0RWxlbWVudChFbGVtZW50KiBlKQogICAgIH0K
IH0KIAoraW5saW5lIGJvb2wgaXNSZXNldFN0eWxlSW5oZXJpdGFuY2UoTm9kZVJlbmRlcmluZ0Nv
bnRleHQmIGNvbnRleHQpCit7CisgICAgaWYgKGNvbnRleHQucmVzZXRTdHlsZUluaGVyaXRhbmNl
KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlv
blBvaW50ID0gY29udGV4dC5pbnNlcnRpb25Qb2ludCgpOworICAgIGlmICghaW5zZXJ0aW9uUG9p
bnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQoY29udGV4dC5ub2RlKCktPnBh
cmVudEVsZW1lbnQoKSk7CisgICAgRWxlbWVudFNoYWRvdyogc2hhZG93ID0gY29udGV4dC5ub2Rl
KCktPnBhcmVudEVsZW1lbnQoKS0+c2hhZG93KCk7CisgICAgQVNTRVJUKHNoYWRvdyk7CisKKyAg
ICBmb3IgKCA7IGluc2VydGlvblBvaW50OyApIHsKKyAgICAgICAgSW5zZXJ0aW9uUG9pbnQqIHlv
dW5nZXJJbnNlcnRpb25Qb2ludCA9IHNoYWRvdy0+aW5zZXJ0aW9uUG9pbnRGb3IoaW5zZXJ0aW9u
UG9pbnQpOworICAgICAgICBpZiAoIXlvdW5nZXJJbnNlcnRpb25Qb2ludCkKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBpbnNlcnRpb25Qb2ludCA9IHlvdW5nZXJJbnNlcnRpb25Qb2ludDsK
KyAgICB9CisgICAgcmV0dXJuIGluc2VydGlvblBvaW50LT5yZXNldFN0eWxlSW5oZXJpdGFuY2Uo
KTsKK30KKwogaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6aW5pdEZvclN0eWxlUmVzb2x2ZShF
bGVtZW50KiBlLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIFBzZXVkb0lkIHBzZXVkb0lEKQog
ewogICAgIG1fcHNldWRvU3R5bGUgPSBwc2V1ZG9JRDsKQEAgLTEyMTgsNyArMTI0MCw3IEBAIGlu
bGluZSB2b2lkIFN0eWxlUmVzb2x2ZXI6OmluaXRGb3JTdHlsZVJlc29sdmUoRWxlbWVudCogZSwg
UmVuZGVyU3R5bGUqIHBhcmVudFN0CiAgICAgaWYgKGUpIHsKICAgICAgICAgTm9kZVJlbmRlcmlu
Z0NvbnRleHQgY29udGV4dChlKTsKICAgICAgICAgbV9wYXJlbnROb2RlID0gY29udGV4dC5wYXJl
bnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKTsKLSAgICAgICAgbV9wYXJlbnRTdHlsZSA9IGNv
bnRleHQucmVzZXRTdHlsZUluaGVyaXRhbmNlKCk/IDAgOgorICAgICAgICBtX3BhcmVudFN0eWxl
ID0gaXNSZXNldFN0eWxlSW5oZXJpdGFuY2UoY29udGV4dCkgPyAwIDoKICAgICAgICAgICAgIHBh
cmVudFN0eWxlID8gcGFyZW50U3R5bGUgOgogICAgICAgICAgICAgbV9wYXJlbnROb2RlID8gbV9w
YXJlbnROb2RlLT5yZW5kZXJTdHlsZSgpIDogMDsKICAgICAgICAgbV9kaXN0cmlidXRlZFRvSW5z
ZXJ0aW9uUG9pbnQgPSBjb250ZXh0Lmluc2VydGlvblBvaW50KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaWRsIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmlkbAppbmRleCBjOTI4ZDQ0OTQw
MzEzOGViN2QzMjQ0YTA3ZjJlYzA5NTkwZjhiZWIwLi5kZjA4YjM4NjI5ZDkyMmQwMDAzNTljNmMy
NGM3ZDQwZjA3ZGM0ZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9I
VE1MQ29udGVudEVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hU
TUxDb250ZW50RWxlbWVudC5pZGwKQEAgLTMwLDUgKzMwLDYgQEAgbW9kdWxlIGh0bWwgewogICAg
ICAgICBWOEVuYWJsZWRBdFJ1bnRpbWU9c2hhZG93RE9NCiAgICAgXSBIVE1MQ29udGVudEVsZW1l
bnQgOiBIVE1MRWxlbWVudCB7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5n
IHNlbGVjdDsKKyAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gcmVzZXRTdHlsZUluaGVyaXRhbmNl
OwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1M
U2hhZG93RWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93
RWxlbWVudC5pZGwKaW5kZXggOTRmYWNiN2JlYTQ0YmU4YjcwMzA1ODUwNWIwZWU3NDY4N2Y0ZmUz
NC4uYzJjOGYxYWRhZjY2ODg2ZGZhY2FiM2JjYjQzMzBlZDJlYzcwNTc5MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmlkbApAQCAtMzQsNiAr
MzQsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIENvbmRpdGlvbmFsPVNIQURPV19ET00sCiAg
ICAgICAgIFY4RW5hYmxlZEF0UnVudGltZT1zaGFkb3dET00KICAgICBdIEhUTUxTaGFkb3dFbGVt
ZW50IDogSFRNTEVsZW1lbnQgeworICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiByZXNldFN0eWxl
SW5oZXJpdGFuY2U7CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SW5zZXJ0aW9uUG9pbnQuY3BwCmluZGV4IDQzNTc5NjY3N2IyYmQ3NDhjNDk0MTM3MTMxNTkzNTM5
OTRhN2VjNDIuLmI5YmVlNzVkMTViYThlZGZmNzg5MzljODAzOGFjNDFmM2FlNjZmYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKQEAgLTM4LDYg
KzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnNlcnRpb25Qb2ludDo6SW5zZXJ0aW9u
UG9pbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQog
ICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCisgICAgLCBtX3Jlc2V0U3R5bGVJ
bmhlcml0YW5jZShmYWxzZSkKIHsKIH0KIApAQCAtMTQ1LDQgKzE0NiwxOCBAQCB2b2lkIEluc2Vy
dGlvblBvaW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKICAg
ICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQpOwogfQogCitib29sIElu
c2VydGlvblBvaW50OjpyZXNldFN0eWxlSW5oZXJpdGFuY2UoKSBjb25zdAoreworICAgIHJldHVy
biBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZTsKK30KKwordm9pZCBJbnNlcnRpb25Qb2ludDo6c2V0
UmVzZXRTdHlsZUluaGVyaXRhbmNlKGJvb2wgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlICE9IG1f
cmVzZXRTdHlsZUluaGVyaXRhbmNlKSB7CisgICAgICAgIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNl
ID0gdmFsdWU7CisgICAgICAgIGlmIChhdHRhY2hlZCgpICYmIGlzQWN0aXZlKCkpCisgICAgICAg
ICAgICBzaGFkb3dSb290KCktPmhvc3QoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAgIH0K
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0luc2VydGlvblBvaW50LmgKaW5kZXggNjIzN2RlMmU2ODY4MmQwYmUyY2E4ODI4YjBlOGM5Mjll
MzE5MGY0Yi4uNWYzYWZkZDE0ZGE2ZjQ4NzBkZjc4MzBhNDNhNDI1MTY4NDgxZmQyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC01Myw2ICs1Myw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RWYWxpZCgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgZG9lc1NlbGVjdEZyb21Ib3N0Q2hpbGRyZW4oKSBjb25zdCA9IDA7
CiAKKyAgICBib29sIHJlc2V0U3R5bGVJbmhlcml0YW5jZSgpIGNvbnN0OworICAgIHZvaWQgc2V0
UmVzZXRTdHlsZUluaGVyaXRhbmNlKGJvb2wpOworCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgp
OwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNJbnNlcnRp
b25Qb2ludCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KQEAgLTc1LDYgKzc4LDcg
QEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIENvbnRlbnREaXN0cmlidXRpb24gbV9kaXN0
cmlidXRpb247CisgICAgYm9vbCBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSA6IDE7CiB9OwogCiBp
bmxpbmUgYm9vbCBpc0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjI5
N2ZhOTUzMzlhMWY5YTdlOTdmNzJiMjE5ZThlNTUyNTk5NjcxMi4uNWZmYjQ4Y2MyYjQxZDMyZmQ5
ZWM3ODJmOTQ2NjEzNmI3MTNmOTFiNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA4LTI3
ICBUYWthc2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBbU2hhZG93
IERPTV0gSW5zZXJ0aW9uIHBvaW50cyBuZWVkIHJlc2V0U3R5bGVJbmhlcml0YW5jZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5MjIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9y
bWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2Ug
YWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAq
IGZhc3QvZG9tL3NoYWRvdy9pbnNlcnRpb24tcG9pbnQtcmVzZXRTdHlsZUluaGVyaXRhbmNlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2luc2VydGlvbi1w
b2ludC1yZXNldFN0eWxlSW5oZXJpdGFuY2UuaHRtbDogQWRkZWQuCisKIDIwMTItMTAtMDQgIEFk
YW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTXV0YXRpb25SZWNvcmQg
YXR0cmlidXRlTmFtZSBzaG91bGQgYmUgbnVsbCBmb3Igbm9uIGF0dHJpYnV0ZSBjaGFuZ2VzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvaW5zZXJ0aW9uLXBvaW50LXJl
c2V0U3R5bGVJbmhlcml0YW5jZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvaW5zZXJ0aW9uLXBvaW50LXJlc2V0U3R5bGVJbmhlcml0YW5jZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMWI4YmRiYWY3Y2FkZjFkMmQ3MGY1Njg0M2U5ZDk1YjE2YWEyYzZmOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9pbnNlcnRpb24tcG9p
bnQtcmVzZXRTdHlsZUluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1IEBACitU
ZXN0IGNhc2U6IG5vIHJlc2V0LXN0eWxlLWluaGVyaXRhbmNlLiBjb2xvciB2YWx1ZSBzaG91bGQg
YmUgaW5oZXJpdGVkIGZyb20gdGhlIHNoYWRvdyBob3N0LgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm8tcmVzZXQtc3R5bGUtaW5oZXJpdGFu
Y2UiKS5maXJzdENoaWxkKS5jb2xvciBpcyAicmdiKDI1NSwgMjM4LCAyMzgpIgorUEFTUyB3aW5k
b3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm8tcmVzZXQtc3R5
bGUtaW5oZXJpdGFuY2UiKS5maXJzdENoaWxkKS5iYWNrZ3JvdW5kQ29sb3IgaXMgInJnYmEoMCwg
MCwgMCwgMCkiCitUZXN0IGNhc2U6IHJlc2V0LXN0eWxlLWluaGVydGlhY2UgYmFzaWMgdGVzdC4g
Y29sb3IgdmFsdWUgc2hvdWxkIGJlIGluaXRpYWwgYmVjYXVzZSBpbnNlcnRpb24gcG9pbnQncyBy
ZXNldFN0eWxlSW5oZXJpdGFuY2UgaXMgdHJ1ZS4KK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5
bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc2V0LXN0eWxlLWluaGVyaXRhbmNlIikuZmly
c3RDaGlsZCkuY29sb3IgaXMgInJnYigwLCAwLCAwKSIKK1BBU1Mgd2luZG93LmdldENvbXB1dGVk
U3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc2V0LXN0eWxlLWluaGVyaXRhbmNlIiku
Zmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorVGVzdCBj
YXNlOiByZXNldC1zdHlsZS1pbmhlcnRpYWNlIGNoYW5nZXMgZHluYW1pY2FsbHkuIEZpcnN0bHkg
Y29sb3IgdmFsdWUgc2hvdWxkIGJlIGluaGVyaXRlZC4gTmV4dCwgaW5pdGlhbC4gQXQgbGFzdCwg
aW5oZXJpdGVkLgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UtZHluYW1pYyIpLmZpcnN0Q2hpbGQpLmNv
bG9yIGlzICJyZ2IoMjU1LCAyMzgsIDIzOCkiCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1zdHlsZS1pbmhlcml0YW5jZS1keW5hbWlj
IikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorRkFJ
TCB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzZXQt
c3R5bGUtaW5oZXJpdGFuY2UtZHluYW1pYyIpLmZpcnN0Q2hpbGQpLmNvbG9yIHNob3VsZCBiZSBy
Z2IoMCwgMCwgMCkuIFdhcyByZ2IoMjU1LCAyMzgsIDIzOCkuCitQQVNTIHdpbmRvdy5nZXRDb21w
dXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1zdHlsZS1pbmhlcml0YW5j
ZS1keW5hbWljIikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yIGlzICJyZ2JhKDAsIDAsIDAs
IDApIgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UtZHluYW1pYyIpLmZpcnN0Q2hpbGQpLmNvbG9yIGlz
ICJyZ2IoMjU1LCAyMzgsIDIzOCkiCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1zdHlsZS1pbmhlcml0YW5jZS1keW5hbWljIikuZmly
c3RDaGlsZCkuYmFja2dyb3VuZENvbG9yIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorVGVzdCBjYXNl
OiB0aGUgcGFyZW50IG5vZGUgb2YgdGhlIGRpc3RyaWJ1dGVkIG5vZGUgaXMgaW4gdGhlIHNhbWUg
c2hhZG93IGRvbSBzdWJ0cmVlIGFzIHRoZSBpbnNlcnRpb24gcG9pbnQuIGNvbG9yIHZhbHVlIHNo
b3VsZCBiZSBpbml0aWFsLiByZXNldC1zdHlsZS1pbmhlcml0YW5jZSBkb2Vzbid0IGRlcGVuZCBv
biB3aGV0aGVyIHBhcmVudCBzdHlsZSBub2RlIGlzIGluIHRoZSBzYW1lIHRyZWVzY29wZSBvciBu
b3QuCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXNldC1idXQtbm90LWNyb3NzLXVwcGVyLWJvdW5kYXJ5IikuZmlyc3RDaGlsZCkuY29sb3Ig
aXMgInJnYigwLCAwLCAwKSIKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc2V0LWJ1dC1ub3QtY3Jvc3MtdXBwZXItYm91bmRhcnkiKS5maXJz
dENoaWxkKS5iYWNrZ3JvdW5kQ29sb3IgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitUZXN0IGNhc2U6
IHJlc2V0LXN0eWxlLWluaGVyaXRhbmNlIHdpdGggbXVsdGlwbGUgc2hhZG93IHJvb3RzLiBjb2xv
ciB2YWx1ZSBzaG91bGQgYmUgaW5pdGlhbCwgYmVjYXVzZSByZXNldC1zdHlsZS1pbmhlcml0YW5j
ZSBvZiB0aGUgaW5zZXJ0aW9uIHBvaW50IGluIHRoZSB5b3VuZ2VzdCBzaGFkb3cgcm9vdCBpcyB0
cnVlLgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgibXVsdGlwbGUtc2hhZG93LXJvb3RzIikuZmlyc3RDaGlsZCkuY29sb3IgaXMgInJnYigwLCAw
LCAwKSIKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoIm11bHRpcGxlLXNoYWRvdy1yb290cyIpLmZpcnN0Q2hpbGQpLmJhY2tncm91bmRDb2xvciBp
cyAicmdiYSgwLCAwLCAwLCAwKSIKK1Rlc3QgY2FzZTogbXVsdGlwbGUgaW5zZXJ0aW9uIHBvaW50
cyBpbiB0aGUgc2FtZSBzaGFkb3cgZG9tIHN1YnRyZWUuLiBFYWNoIHJlc2V0LXN0eWxlLWluaGVy
aXRhbmNlIHNob3VsZCBiZSBjaGVja2VkLgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXVsdGlwbGUtaW5zZXJ0aW9uLXBvaW50cyIpLmZpcnN0
Q2hpbGQpLmNvbG9yIGlzICJyZ2IoMjU1LCAyMzgsIDIzOCkiCitQQVNTIHdpbmRvdy5nZXRDb21w
dXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtdWx0aXBsZS1pbnNlcnRpb24tcG9p
bnRzIikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yIGlzICJyZ2JhKDAsIDAsIDAsIDApIgor
UEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXVs
dGlwbGUtaW5zZXJ0aW9uLXBvaW50cyIpLmxhc3RDaGlsZCkuY29sb3IgaXMgInJnYigwLCAwLCAw
KSIKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
Im11bHRpcGxlLWluc2VydGlvbi1wb2ludHMiKS5sYXN0Q2hpbGQpLmJhY2tncm91bmRDb2xvciBp
cyAicmdiYSgwLCAwLCAwLCAwKSIKK0RPTkUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9pbnNlcnRpb24tcG9pbnQtcmVzZXRTdHlsZUluaGVyaXRhbmNlLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvaW5zZXJ0aW9uLXBvaW50LXJlc2V0U3R5bGVJbmhl
cml0YW5jZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzMjU0MTE3NDcxNGNkOTFkZTM4NDY4ODBmZGIxMjAw
NDRlNDgyMDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
aW5zZXJ0aW9uLXBvaW50LXJlc2V0U3R5bGVJbmhlcml0YW5jZS5odG1sCkBAIC0wLDAgKzEsMTI3
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CitkaXYucmVzZXRU
ZXN0IHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VlZjsKKyAgY29sb3I6ICNmZWU7Cit9Cis8L3N0
eWxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiB0ZXN0Tm9SZXNldFN0eWxlSW5oZXJpdGFuY2UoKSB7CisgICAgZGVi
dWcoIlRlc3QgY2FzZTogbm8gcmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UuIGNvbG9yIHZhbHVlIHNo
b3VsZCBiZSBpbmhlcml0ZWQgZnJvbSB0aGUgc2hhZG93IGhvc3QuIik7CisgICAgdmFyIGRpdiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduby1yZXNldC1zdHlsZS1pbmhlcml0YW5jZScpOwor
CisgICAgdmFyIHNoYWRvd1Jvb3QgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworICAgIHNo
YWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxjb250ZW50IGlkPSJjb250ZW50Ij48L2NvbnRlbnQ+JzsK
KyAgICAKKyAgICBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCdjb250ZW50JykucmVzZXRTdHls
ZUluaGVyaXRhbmNlID0gZmFsc2U7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJuby1yZXNldC1zdHlsZS1pbmhlcml0YW5jZSIp
LmZpcnN0Q2hpbGQpLmNvbG9yJywgJyJyZ2IoMjU1LCAyMzgsIDIzOCkiJyk7CisgICAgc2hvdWxk
QmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJuby1y
ZXNldC1zdHlsZS1pbmhlcml0YW5jZSIpLmZpcnN0Q2hpbGQpLmJhY2tncm91bmRDb2xvcicsICci
cmdiYSgwLCAwLCAwLCAwKSInKTsKK30KKworZnVuY3Rpb24gdGVzdFJlc2V0U3R5bGVJbmhlcml0
YW5jZSgpIHsKKyAgICBkZWJ1ZygiVGVzdCBjYXNlOiByZXNldC1zdHlsZS1pbmhlcnRpYWNlIGJh
c2ljIHRlc3QuIGNvbG9yIHZhbHVlIHNob3VsZCBiZSBpbml0aWFsIGJlY2F1c2UgaW5zZXJ0aW9u
IHBvaW50J3MgcmVzZXRTdHlsZUluaGVyaXRhbmNlIGlzIHRydWUuIik7CisgICAgdmFyIGRpdiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXNldC1zdHlsZS1pbmhlcml0YW5jZScpOworCisg
ICAgdmFyIHNoYWRvd1Jvb3QgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworICAgIHNoYWRv
d1Jvb3QuaW5uZXJIVE1MID0gJzxjb250ZW50IGlkPSJjb250ZW50Ij48L2NvbnRlbnQ+JzsKKwor
ICAgIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnQnKS5yZXNldFN0eWxlSW5oZXJp
dGFuY2UgPSB0cnVlOworICAgIHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UiKS5maXJzdENoaWxk
KS5jb2xvcicsICcicmdiKDAsIDAsIDApIicpOworICAgIHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29t
cHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzZXQtc3R5bGUtaW5oZXJpdGFu
Y2UiKS5maXJzdENoaWxkKS5iYWNrZ3JvdW5kQ29sb3InLCAnInJnYmEoMCwgMCwgMCwgMCkiJyk7
Cit9CisKK2Z1bmN0aW9uIHRlc3RSZXNldFN0eWxlSW5oZXJpdGFuY2VEeW5hbWljKCkgeworICAg
IGRlYnVnKCJUZXN0IGNhc2U6IHJlc2V0LXN0eWxlLWluaGVydGlhY2UgY2hhbmdlcyBkeW5hbWlj
YWxseS4gRmlyc3RseSBjb2xvciB2YWx1ZSBzaG91bGQgYmUgaW5oZXJpdGVkLiBOZXh0LCBpbml0
aWFsLiBBdCBsYXN0LCBpbmhlcml0ZWQuIik7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdyZXNldC1zdHlsZS1pbmhlcml0YW5jZScpOworCisgICAgdmFyIHNoYWRvd1Jv
b3QgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1M
ID0gJzxjb250ZW50IGlkPSJjb250ZW50Ij48L2NvbnRlbnQ+JzsKKworICAgIHNoYWRvd1Jvb3Qu
Z2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnQnKS5yZXNldFN0eWxlSW5oZXJpdGFuY2UgPSBmYWxzZTsK
KyAgICBzaG91bGRCZSgnd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlc2V0LXN0eWxlLWluaGVyaXRhbmNlLWR5bmFtaWMiKS5maXJzdENoaWxkKS5jb2xv
cicsICcicmdiKDI1NSwgMjM4LCAyMzgpIicpOworICAgIHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29t
cHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzZXQtc3R5bGUtaW5oZXJpdGFu
Y2UtZHluYW1pYyIpLmZpcnN0Q2hpbGQpLmJhY2tncm91bmRDb2xvcicsICcicmdiYSgwLCAwLCAw
LCAwKSInKTsKKworICAgIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnQnKS5yZXNl
dFN0eWxlSW5oZXJpdGFuY2UgPSB0cnVlOworICAgIHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzZXQtc3R5bGUtaW5oZXJpdGFuY2Ut
ZHluYW1pYyIpLmZpcnN0Q2hpbGQpLmNvbG9yJywgJyJyZ2IoMCwgMCwgMCkiJyk7CisgICAgc2hv
dWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXNldC1zdHlsZS1pbmhlcml0YW5jZS1keW5hbWljIikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENv
bG9yJywgJyJyZ2JhKDAsIDAsIDAsIDApIicpOworCisgICAgc2hhZG93Um9vdC5nZXRFbGVtZW50
QnlJZCgnY29udGVudCcpLnJlc2V0U3R5bGVJbmhlcml0YW5jZSA9IGZhbHNlOworICAgIHNob3Vs
ZEJlKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
ZXQtc3R5bGUtaW5oZXJpdGFuY2UtZHluYW1pYyIpLmZpcnN0Q2hpbGQpLmNvbG9yJywgJyJyZ2Io
MjU1LCAyMzgsIDIzOCkiJyk7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1zdHlsZS1pbmhlcml0YW5jZS1keW5hbWlj
IikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yJywgJyJyZ2JhKDAsIDAsIDAsIDApIicpOwor
fQorCitmdW5jdGlvbiB0ZXN0UmVzZXRTdHlsZUluaGVyaXRhbmNlV2l0aG91dENyb3NzaW5nVXBw
ZXJCb3VuZGFyeSgpIHsKKyAgICBkZWJ1ZygiVGVzdCBjYXNlOiB0aGUgcGFyZW50IG5vZGUgb2Yg
dGhlIGRpc3RyaWJ1dGVkIG5vZGUgaXMgaW4gdGhlIHNhbWUgc2hhZG93IGRvbSBzdWJ0cmVlIGFz
IHRoZSBpbnNlcnRpb24gcG9pbnQuIGNvbG9yIHZhbHVlIHNob3VsZCBiZSBpbml0aWFsLiByZXNl
dC1zdHlsZS1pbmhlcml0YW5jZSBkb2Vzbid0IGRlcGVuZCBvbiB3aGV0aGVyIHBhcmVudCBzdHls
ZSBub2RlIGlzIGluIHRoZSBzYW1lIHRyZWVzY29wZSBvciBub3QuIik7CisgICAgdmFyIGRpdiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXNldC1idXQtbm90LWNyb3NzLXVwcGVyLWJvdW5k
YXJ5Jyk7CisgICAgdmFyIHNoYWRvd1Jvb3QgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOwor
CisgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPGRpdiBzdHlsZT0iY29sb3I6Ymx1ZTsgYmFj
a2dyb3VuZC1jb2xvcjpncmVlbjsiPjxjb250ZW50IGlkPSJjb250ZW50Ij48L2NvbnRlbnQ+PC9k
aXY+JzsKKworICAgIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnQnKS5yZXNldFN0
eWxlSW5oZXJpdGFuY2UgPSB0cnVlOworICAgIHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0ZWRT
dHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzZXQtYnV0LW5vdC1jcm9zcy11cHBlci1i
b3VuZGFyeSIpLmZpcnN0Q2hpbGQpLmNvbG9yJywgJyJyZ2IoMCwgMCwgMCkiJyk7CisgICAgc2hv
dWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXNldC1idXQtbm90LWNyb3NzLXVwcGVyLWJvdW5kYXJ5IikuZmlyc3RDaGlsZCkuYmFja2dyb3Vu
ZENvbG9yJywgJyJyZ2JhKDAsIDAsIDAsIDApIicpOworfQorCitmdW5jdGlvbiB0ZXN0UmVzZXRT
dHlsZUluaGVyaXRhbmNlV2l0aE11bHRpcGxlU2hhZG93Um9vdHMoKSB7CisgICAgZGVidWcoIlRl
c3QgY2FzZTogcmVzZXQtc3R5bGUtaW5oZXJpdGFuY2Ugd2l0aCBtdWx0aXBsZSBzaGFkb3cgcm9v
dHMuIGNvbG9yIHZhbHVlIHNob3VsZCBiZSBpbml0aWFsLCBiZWNhdXNlIHJlc2V0LXN0eWxlLWlu
aGVyaXRhbmNlIG9mIHRoZSBpbnNlcnRpb24gcG9pbnQgaW4gdGhlIHlvdW5nZXN0IHNoYWRvdyBy
b290IGlzIHRydWUuIik7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdt
dWx0aXBsZS1zaGFkb3ctcm9vdHMnKTsKKyAgICB2YXIgb2xkZXN0U2hhZG93Um9vdCA9IG5ldyBX
ZWJLaXRTaGFkb3dSb290KGRpdik7CisgICAgb2xkZXN0U2hhZG93Um9vdC5pbm5lckhUTUwgPSAn
PGNvbnRlbnQgaWQ9ImNvbnRlbnQiPjwvY29udGVudD4nOworCisgICAgdmFyIHlvdW5nZXJTaGFk
b3dSb290ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKKyAgICB5b3VuZ2VyU2hhZG93Um9v
dC5pbm5lckhUTUwgPSAnPHNoYWRvdyBpZD0ic2hhZG93Ij48L3NoYWRvdz4nOworCisgICAgdmFy
IHlvdW5nZXN0U2hhZG93Um9vdCA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRpdik7CisgICAgeW91
bmdlc3RTaGFkb3dSb290LmlubmVySFRNTCA9ICc8c2hhZG93IGlkPSJzaGFkb3ciPjwvc2hhZG93
Pic7CisKKyAgICBvbGRlc3RTaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCdjb250ZW50JykucmVz
ZXRTdHlsZUluaGVyaXRhbmNlID0gZmFsc2U7CisgICAgeW91bmdlclNoYWRvd1Jvb3QuZ2V0RWxl
bWVudEJ5SWQoJ3NoYWRvdycpLnJlc2V0U3R5bGVJbmhlcml0YW5jZSA9IGZhbHNlOworICAgIHlv
dW5nZXN0U2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgnc2hhZG93JykucmVzZXRTdHlsZUluaGVy
aXRhbmNlID0gdHJ1ZTsKKyAgICBzaG91bGRCZSgnd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm11bHRpcGxlLXNoYWRvdy1yb290cyIpLmZpcnN0Q2hpbGQp
LmNvbG9yJywgJyJyZ2IoMCwgMCwgMCkiJyk7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21w
dXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtdWx0aXBsZS1zaGFkb3ctcm9vdHMi
KS5maXJzdENoaWxkKS5iYWNrZ3JvdW5kQ29sb3InLCAnInJnYmEoMCwgMCwgMCwgMCkiJyk7Cit9
CisKK2Z1bmN0aW9uIHRlc3RSZXNldFN0eWxlSW5oZXJpdGFuY2VXaXRoTXVsdGlwbGVJbnNlcnRp
b25Qb2ludHMoKSB7CisgICAgZGVidWcoIlRlc3QgY2FzZTogbXVsdGlwbGUgaW5zZXJ0aW9uIHBv
aW50cyBpbiB0aGUgc2FtZSBzaGFkb3cgZG9tIHN1YnRyZWUuLiBFYWNoIHJlc2V0LXN0eWxlLWlu
aGVyaXRhbmNlIHNob3VsZCBiZSBjaGVja2VkLiIpOworICAgIHZhciBkaXYgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnbXVsdGlwbGUtaW5zZXJ0aW9uLXBvaW50cycpOworICAgIHZhciBvbGRl
c3RTaGFkb3dSb290ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKKyAgICBvbGRlc3RTaGFk
b3dSb290LmlubmVySFRNTCA9ICc8Y29udGVudCBpZD0iY29udGVudCI+PC9jb250ZW50Pic7CisK
KyAgICB2YXIgeW91bmdlc3RTaGFkb3dSb290ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsK
KyAgICB5b3VuZ2VzdFNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxjb250ZW50IHNlbGVjdD0iOmZp
cnN0LWNoaWxkIiBpZD0iY29udGVudCI+PC9jb250ZW50PjxzaGFkb3cgaWQ9InNoYWRvdyI+PC9z
aGFkb3c+JzsKKworICAgIHlvdW5nZXN0U2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgnY29udGVu
dCcpLnJlc2V0U3R5bGVJbmhlcml0YW5jZSA9IGZhbHNlOworICAgIHlvdW5nZXN0U2hhZG93Um9v
dC5nZXRFbGVtZW50QnlJZCgnc2hhZG93JykucmVzZXRTdHlsZUluaGVyaXRhbmNlID0gdHJ1ZTsK
KworICAgIHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibXVsdGlwbGUtaW5zZXJ0aW9uLXBvaW50cyIpLmZpcnN0Q2hpbGQpLmNvbG9yJywg
JyJyZ2IoMjU1LCAyMzgsIDIzOCkiJyk7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRl
ZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtdWx0aXBsZS1pbnNlcnRpb24tcG9pbnRz
IikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yJywgJyJyZ2JhKDAsIDAsIDAsIDApIicpOwor
ICAgIHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibXVsdGlwbGUtaW5zZXJ0aW9uLXBvaW50cyIpLmxhc3RDaGlsZCkuY29sb3InLCAnInJn
YigwLCAwLCAwKSInKTsKKyAgICBzaG91bGRCZSgnd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm11bHRpcGxlLWluc2VydGlvbi1wb2ludHMiKS5sYXN0Q2hp
bGQpLmJhY2tncm91bmRDb2xvcicsICcicmdiYSgwLCAwLCAwLCAwKSInKTsKK30KKworZnVuY3Rp
b24gcnVuVGVzdHMoKSB7CisgICAgdGVzdE5vUmVzZXRTdHlsZUluaGVyaXRhbmNlKCk7CisgICAg
dGVzdFJlc2V0U3R5bGVJbmhlcml0YW5jZSgpOworICAgIHRlc3RSZXNldFN0eWxlSW5oZXJpdGFu
Y2VEeW5hbWljKCk7CisgICAgdGVzdFJlc2V0U3R5bGVJbmhlcml0YW5jZVdpdGhvdXRDcm9zc2lu
Z1VwcGVyQm91bmRhcnkoKQorICAgIHRlc3RSZXNldFN0eWxlSW5oZXJpdGFuY2VXaXRoTXVsdGlw
bGVTaGFkb3dSb290cygpOworICAgIHRlc3RSZXNldFN0eWxlSW5oZXJpdGFuY2VXaXRoTXVsdGlw
bGVJbnNlcnRpb25Qb2ludHMoKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdC1j
YXNlcycpLmlubmVySFRNTCA9ICdET05FJzsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
b25sb2FkPSJydW5UZXN0cygpIj4KKzxkaXYgaWQ9InRlc3QtY2FzZXMiPgorICA8ZGl2IGlkPSJu
by1yZXNldC1zdHlsZS1pbmhlcml0YW5jZSIgY2xhc3M9InJlc2V0VGVzdCI+PHNwYW4+Zmlyc3Qt
Y2hpbGQ8L3NwYW4+PC9kaXY+CisgIDxkaXYgaWQ9InJlc2V0LXN0eWxlLWluaGVyaXRhbmNlIiBj
bGFzcz0icmVzZXRUZXN0Ij48c3Bhbj5maXJzdC1jaGlsZDwvc3Bhbj48L2Rpdj4KKyAgPGRpdiBp
ZD0icmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UtZHluYW1pYyIgY2xhc3M9InJlc2V0VGVzdCI+PHNw
YW4+Zmlyc3QtY2hpbGQ8L3NwYW4+PC9kaXY+CisgIDxkaXYgaWQ9InJlc2V0LWJ1dC1ub3QtY3Jv
c3MtdXBwZXItYm91bmRhcnkiIGNsYXNzPSJyZXNldFRlc3QiPjxzcGFuPmZpcnN0LWNoaWxkPC9z
cGFuPjwvZGl2PgorICA8ZGl2IGlkPSJtdWx0aXBsZS1zaGFkb3ctcm9vdHMiIGNsYXNzPSJyZXNl
dFRlc3QiPjxzcGFuPmZpcnN0LWNoaWxkPC9zcGFuPjwvZGl2PgorICA8ZGl2IGlkPSJtdWx0aXBs
ZS1pbnNlcnRpb24tcG9pbnRzIiBjbGFzcz0icmVzZXRUZXN0Ij48c3Bhbj5maXJzdC1jaGlsZDwv
c3Bhbj48c3Bhbj5sYXN0LWNoaWxkPC9zcGFuPjwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167694</attachid>
            <date>2012-10-08 23:07:25 -0700</date>
            <delta_ts>2012-10-09 21:52:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93922-20121009150626.patch</filename>
            <type>text/plain</type>
            <size>19095</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTMwYTU2YzRhZWQ5YjQx
Njk3MjgwYTY2OGU0MTgzM2MzNmNhNzc5OC4uZmIyMjNmNjg3ZDhkMTdkZmZlMWM5Mjk3NmMyZWRi
NzY3MGMzZDQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTEwLTA4ICBUYWth
c2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBbU2hhZG93IERPTV0g
SW5zZXJ0aW9uIHBvaW50cyBuZWVkIHJlc2V0U3R5bGVJbmhlcml0YW5jZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5MjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRlZCByZXNldFN0eWxl
SW5oZXJpdGFuY2Ugb2YgaW5zZXJ0aW9uIHBvaW50cy4KKyAgICAgICAgSXRzIHNwZWMgbGluayBp
cyBodHRwOi8vZHZjcy53My5vcmcvaGcvd2ViY29tcG9uZW50cy9yYXctZmlsZS90aXAvc3BlYy9z
aGFkb3cvaW5kZXguaHRtbCNhcGktaHRtbC1jb250ZW50LWVsZW1lbnQtcmVzZXQtc3R5bGUtaW5o
ZXJpdGFuY2UKKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9zaGFkb3cvaW5zZXJ0aW9uLXBvaW50
LXJlc2V0U3R5bGVJbmhlcml0YW5jZS5odG1sCisKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1Jlc2V0U3R5bGVJbmhlcml0YW5jZSk6CisgICAg
ICAgIEFkZGVkIGEgbmV3IGZ1bmN0aW9uIHRvIGNoZWNrIHdoZXRoZXIgdGhlcmUgZXhpc3RzIGFu
eSBpbnNlcnRpb24KKyAgICAgICAgcG9pbnQgd2hpY2ggaGFzIHJlc2V0LXN0eWxlLWluaGVydGlh
bmNlIGZsYWcgc2V0IHRvIGJlIHRydWUuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
Ojppbml0Rm9yU3R5bGVSZXNvbHZlKToKKyAgICAgICAgTW9kaWZpZWQgdG8gdXNlIHRoZSBhYm92
ZSBmdW5jdGlvbiB0byBjaGVjayByZXNldC1zdHlsZS1pbmhlcml0YW5jZS4KKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvc2hhZG93
L0hUTUxTaGFkb3dFbGVtZW50LmlkbDoKKyAgICAgICAgQWRkZWQgYSBuZXcgYXR0cmlidXRlIGZv
ciByZXNldC1zdHlsZS1pbmhlcml0YW5jZS4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRp
b25Qb2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6SW5zZXJ0aW9u
UG9pbnQpOgorICAgICAgICBJbml0aWFsaXplZCBhIG5ldyBtZW1iZXIgdmFyaWFibGUgZm9yIHJl
c2V0LXN0eWxlLWluaGVyaXRhbmNlLgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6
OnJlc2V0U3R5bGVJbmhlcml0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2lu
dDo6c2V0UmVzZXRTdHlsZUluaGVyaXRhbmNlKToKKyAgICAgICAgSW1wbGVtZW50ZWQgc2V0dGVy
L2dldHRlciBmb3IgcmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UuCisgICAgICAgICogaHRtbC9zaGFk
b3cvSW5zZXJ0aW9uUG9pbnQuaDoKKyAgICAgICAgKEluc2VydGlvblBvaW50KToKKyAgICAgICAg
QWRkZWQgYSBuZXcgbWVtYmVyIHZhcmlhYmxlIGZvciByZXNldC1zdHlsZS1pbmhlcml0YW5jZS4K
KwogMjAxMi0xMC0wOCAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgSW5kZXhlZERCOiByZW1vdmUgYXV0b2dlbmVyYXRlZCBvYmplY3RTdG9yZS9pbmRleCBp
ZCBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMzZjOGI2YjVmN2E2
MzM0NjhmOWEzZjVmMTgzMDY0YjIyMTg0Y2FjNC4uNzcxMjI2MTA4NjEyZTFkNzRmMDkxM2YwMDFl
YmM2M2VlODJiNWFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNjEs
NiArNjEsNyBAQAogI2luY2x1ZGUgIkNvdW50ZXJDb250ZW50LmgiCiAjaW5jbHVkZSAiQ3Vyc29y
TGlzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaCIKKyNpbmNs
dWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiRm9udEZlYXR1cmVWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkZvbnRWYWx1ZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0xMDYyLDYgKzEwNjMs
MjcgQEAgaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6aW5pdEVsZW1lbnQoRWxlbWVudCogZSkK
ICAgICB9CiB9CiAKK2lubGluZSBib29sIGlzUmVzZXRTdHlsZUluaGVyaXRhbmNlKE5vZGVSZW5k
ZXJpbmdDb250ZXh0JiBjb250ZXh0KQoreworICAgIGlmIChjb250ZXh0LnJlc2V0U3R5bGVJbmhl
cml0YW5jZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIEluc2VydGlvblBvaW50KiBp
bnNlcnRpb25Qb2ludCA9IGNvbnRleHQuaW5zZXJ0aW9uUG9pbnQoKTsKKyAgICBpZiAoIWluc2Vy
dGlvblBvaW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKGNvbnRleHQubm9k
ZSgpLT5wYXJlbnRFbGVtZW50KCkpOworICAgIEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IGNvbnRl
eHQubm9kZSgpLT5wYXJlbnRFbGVtZW50KCktPnNoYWRvdygpOworICAgIEFTU0VSVChzaGFkb3cp
OworCisgICAgZm9yICggOyBpbnNlcnRpb25Qb2ludDsgKSB7CisgICAgICAgIEluc2VydGlvblBv
aW50KiB5b3VuZ2VySW5zZXJ0aW9uUG9pbnQgPSBzaGFkb3ctPmluc2VydGlvblBvaW50Rm9yKGlu
c2VydGlvblBvaW50KTsKKyAgICAgICAgaWYgKCF5b3VuZ2VySW5zZXJ0aW9uUG9pbnQpCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgaW5zZXJ0aW9uUG9pbnQgPSB5b3VuZ2VySW5zZXJ0aW9u
UG9pbnQ7CisgICAgfQorICAgIHJldHVybiBpbnNlcnRpb25Qb2ludC0+cmVzZXRTdHlsZUluaGVy
aXRhbmNlKCk7Cit9CisKIGlubGluZSB2b2lkIFN0eWxlUmVzb2x2ZXI6OmluaXRGb3JTdHlsZVJl
c29sdmUoRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBQc2V1ZG9JZCBwc2V1
ZG9JRCkKIHsKICAgICBtX3BzZXVkb1N0eWxlID0gcHNldWRvSUQ7CkBAIC0xMDY5LDcgKzEwOTEs
NyBAQCBpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjppbml0Rm9yU3R5bGVSZXNvbHZlKEVsZW1l
bnQqIGUsIFJlbmRlclN0eWxlKiBwYXJlbnRTdAogICAgIGlmIChlKSB7CiAgICAgICAgIE5vZGVS
ZW5kZXJpbmdDb250ZXh0IGNvbnRleHQoZSk7CiAgICAgICAgIG1fcGFyZW50Tm9kZSA9IGNvbnRl
eHQucGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCk7Ci0gICAgICAgIG1fcGFyZW50U3R5
bGUgPSBjb250ZXh0LnJlc2V0U3R5bGVJbmhlcml0YW5jZSgpPyAwIDoKKyAgICAgICAgbV9wYXJl
bnRTdHlsZSA9IGlzUmVzZXRTdHlsZUluaGVyaXRhbmNlKGNvbnRleHQpID8gMCA6CiAgICAgICAg
ICAgICBwYXJlbnRTdHlsZSA/IHBhcmVudFN0eWxlIDoKICAgICAgICAgICAgIG1fcGFyZW50Tm9k
ZSA/IG1fcGFyZW50Tm9kZS0+cmVuZGVyU3R5bGUoKSA6IDA7CiAgICAgICAgIG1fZGlzdHJpYnV0
ZWRUb0luc2VydGlvblBvaW50ID0gY29udGV4dC5pbnNlcnRpb25Qb2ludCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5pZGwKaW5kZXggYzky
OGQ0NDk0MDMxMzhlYjdkMzI0NGEwN2YyZWMwOTU5MGY4YmViMC4uZGYwOGIzODYyOWQ5MjJkMDAw
MzU5YzZjMjRjN2Q0MGYwN2RjNGRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaWRsCkBAIC0zMCw1ICszMCw2IEBAIG1vZHVsZSBodG1s
IHsKICAgICAgICAgVjhFbmFibGVkQXRSdW50aW1lPXNoYWRvd0RPTQogICAgIF0gSFRNTENvbnRl
bnRFbGVtZW50IDogSFRNTEVsZW1lbnQgewogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERP
TVN0cmluZyBzZWxlY3Q7CisgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIHJlc2V0U3R5bGVJbmhl
cml0YW5jZTsKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSFRNTFNoYWRvd0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRN
TFNoYWRvd0VsZW1lbnQuaWRsCmluZGV4IDk0ZmFjYjdiZWE0NGJlOGI3MDMwNTg1MDViMGVlNzQ2
ODdmNGZlMzQuLmMyYzhmMWFkYWY2Njg4NmRmYWNhYjNiY2I0MzMwZWQyZWM3MDU3OTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5pZGwKQEAg
LTM0LDYgKzM0LDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBDb25kaXRpb25hbD1TSEFET1df
RE9NLAogICAgICAgICBWOEVuYWJsZWRBdFJ1bnRpbWU9c2hhZG93RE9NCiAgICAgXSBIVE1MU2hh
ZG93RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKKyAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gcmVz
ZXRTdHlsZUluaGVyaXRhbmNlOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0luc2VydGlvblBvaW50LmNwcAppbmRleCA0MzU3OTY2NzdiMmJkNzQ4YzQ5NDEzNzEz
MTU5MzUzOTk0YTdlYzQyLi5iOWJlZTc1ZDE1YmE4ZWRmZjc4OTM5YzgwMzhhYzQxZjNhZTY2ZmMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCkBA
IC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5zZXJ0aW9uUG9pbnQ6Oklu
c2VydGlvblBvaW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQorICAgICwgbV9yZXNl
dFN0eWxlSW5oZXJpdGFuY2UoZmFsc2UpCiB7CiB9CiAKQEAgLTE0NSw0ICsxNDYsMTggQEAgdm9p
ZCBJbnNlcnRpb25Qb2ludDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9p
bnQpCiAgICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tKGluc2VydGlvblBvaW50KTsKIH0KIAor
Ym9vbCBJbnNlcnRpb25Qb2ludDo6cmVzZXRTdHlsZUluaGVyaXRhbmNlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9yZXNldFN0eWxlSW5oZXJpdGFuY2U7Cit9CisKK3ZvaWQgSW5zZXJ0aW9uUG9p
bnQ6OnNldFJlc2V0U3R5bGVJbmhlcml0YW5jZShib29sIHZhbHVlKQoreworICAgIGlmICh2YWx1
ZSAhPSBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSkgeworICAgICAgICBtX3Jlc2V0U3R5bGVJbmhl
cml0YW5jZSA9IHZhbHVlOworICAgICAgICBpZiAoYXR0YWNoZWQoKSAmJiBpc0FjdGl2ZSgpKQor
ICAgICAgICAgICAgc2hhZG93Um9vdCgpLT5ob3N0KCktPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsK
KyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCmluZGV4IDYyMzdkZTJlNjg2ODJkMGJlMmNhODgyOGIw
ZThjOTI5ZTMxOTBmNGIuLjVmM2FmZGQxNGRhNmY0ODcwZGY3ODMwYTQzYTQyNTE2ODQ4MWZkMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtNTMs
NiArNTMsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzU2VsZWN0VmFsaWQoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBib29sIGRvZXNTZWxlY3RGcm9tSG9zdENoaWxkcmVuKCkgY29u
c3QgPSAwOwogCisgICAgYm9vbCByZXNldFN0eWxlSW5oZXJpdGFuY2UoKSBjb25zdDsKKyAgICB2
b2lkIHNldFJlc2V0U3R5bGVJbmhlcml0YW5jZShib29sKTsKKwogICAgIHZpcnR1YWwgdm9pZCBh
dHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAgICAgdmlydHVhbCBib29sIGlz
SW5zZXJ0aW9uUG9pbnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CkBAIC03NSw2
ICs3OCw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBDb250ZW50RGlzdHJpYnV0aW9u
IG1fZGlzdHJpYnV0aW9uOworICAgIGJvb2wgbV9yZXNldFN0eWxlSW5oZXJpdGFuY2UgOiAxOwog
fTsKIAogaW5saW5lIGJvb2wgaXNJbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBub2RlKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGQ3ZmRjNmI4NzExNzliODg0ZmYzZGU5NDg0NjNiYWJmZWRkMTZkYjguLmFjNjdiYjQwYzNm
ODc3ODU4OTZhMzNkYmEyNTZjNjI3ZjY0YmE0ZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
Mi0xMC0wOCAgVGFrYXNoaSBTYWthbW90byAgPHRhc2FrQGdvb2dsZS5jb20+CisKKyAgICAgICAg
W1NoYWRvdyBET01dIEluc2VydGlvbiBwb2ludHMgbmVlZCByZXNldFN0eWxlSW5oZXJpdGFuY2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzOTIyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Rv
bS9zaGFkb3cvaW5zZXJ0aW9uLXBvaW50LXJlc2V0U3R5bGVJbmhlcml0YW5jZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9pbnNlcnRpb24tcG9pbnQtcmVz
ZXRTdHlsZUluaGVyaXRhbmNlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTEwLTA4ICBBbHBoYSBMYW0g
IDxoY2xhbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkLiBSZWJhc2VsaW5l
cyBmb3IgQ2hyb21pdW0uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
aW5zZXJ0aW9uLXBvaW50LXJlc2V0U3R5bGVJbmhlcml0YW5jZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvaW5zZXJ0aW9uLXBvaW50LXJlc2V0U3R5bGVJbmhlcml0
YW5jZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdhZThhMWIzODgyNGY5MzZlNjNmYjgzMWVi
NzNlYmIzMDgzYzU1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9pbnNlcnRpb24tcG9pbnQtcmVzZXRTdHlsZUluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDI1IEBACitUZXN0IGNhc2U6IG5vIHJlc2V0LXN0eWxlLWluaGVyaXRhbmNlLiBj
b2xvciB2YWx1ZSBzaG91bGQgYmUgaW5oZXJpdGVkIGZyb20gdGhlIHNoYWRvdyBob3N0LgorUEFT
UyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm8tcmVz
ZXQtc3R5bGUtaW5oZXJpdGFuY2UiKS5maXJzdENoaWxkKS5jb2xvciBpcyAicmdiKDI1NSwgMjM4
LCAyMzgpIgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibm8tcmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UiKS5maXJzdENoaWxkKS5iYWNrZ3JvdW5k
Q29sb3IgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitUZXN0IGNhc2U6IHJlc2V0LXN0eWxlLWluaGVy
dGlhY2UgYmFzaWMgdGVzdC4gY29sb3IgdmFsdWUgc2hvdWxkIGJlIGluaXRpYWwgYmVjYXVzZSBp
bnNlcnRpb24gcG9pbnQncyByZXNldFN0eWxlSW5oZXJpdGFuY2UgaXMgdHJ1ZS4KK1BBU1Mgd2lu
ZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc2V0LXN0eWxl
LWluaGVyaXRhbmNlIikuZmlyc3RDaGlsZCkuY29sb3IgaXMgInJnYigwLCAwLCAwKSIKK1BBU1Mg
d2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc2V0LXN0
eWxlLWluaGVyaXRhbmNlIikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yIGlzICJyZ2JhKDAs
IDAsIDAsIDApIgorVGVzdCBjYXNlOiByZXNldC1zdHlsZS1pbmhlcnRpYWNlIGNoYW5nZXMgZHlu
YW1pY2FsbHkuIEZpcnN0bHkgY29sb3IgdmFsdWUgc2hvdWxkIGJlIGluaGVyaXRlZC4gTmV4dCwg
aW5pdGlhbC4gQXQgbGFzdCwgaW5oZXJpdGVkLgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHls
ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UtZHluYW1p
YyIpLmZpcnN0Q2hpbGQpLmNvbG9yIGlzICJyZ2IoMjU1LCAyMzgsIDIzOCkiCitQQVNTIHdpbmRv
dy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1zdHlsZS1p
bmhlcml0YW5jZS1keW5hbWljIikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yIGlzICJyZ2Jh
KDAsIDAsIDAsIDApIgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UtZHluYW1pYyIpLmZpcnN0Q2hpbGQp
LmNvbG9yIGlzICJyZ2IoMCwgMCwgMCkiCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1zdHlsZS1pbmhlcml0YW5jZS1keW5hbWljIiku
Zmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyB3
aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzZXQtc3R5
bGUtaW5oZXJpdGFuY2UtZHluYW1pYyIpLmZpcnN0Q2hpbGQpLmNvbG9yIGlzICJyZ2IoMjU1LCAy
MzgsIDIzOCkiCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXNldC1zdHlsZS1pbmhlcml0YW5jZS1keW5hbWljIikuZmlyc3RDaGlsZCkuYmFj
a2dyb3VuZENvbG9yIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorVGVzdCBjYXNlOiB0aGUgcGFyZW50
IG5vZGUgb2YgdGhlIGRpc3RyaWJ1dGVkIG5vZGUgaXMgaW4gdGhlIHNhbWUgc2hhZG93IGRvbSBz
dWJ0cmVlIGFzIHRoZSBpbnNlcnRpb24gcG9pbnQuIGNvbG9yIHZhbHVlIHNob3VsZCBiZSBpbml0
aWFsLiByZXNldC1zdHlsZS1pbmhlcml0YW5jZSBkb2Vzbid0IGRlcGVuZCBvbiB3aGV0aGVyIHBh
cmVudCBzdHlsZSBub2RlIGlzIGluIHRoZSBzYW1lIHRyZWVzY29wZSBvciBub3QuCitQQVNTIHdp
bmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1idXQt
bm90LWNyb3NzLXVwcGVyLWJvdW5kYXJ5IikuZmlyc3RDaGlsZCkuY29sb3IgaXMgInJnYigwLCAw
LCAwKSIKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlc2V0LWJ1dC1ub3QtY3Jvc3MtdXBwZXItYm91bmRhcnkiKS5maXJzdENoaWxkKS5iYWNr
Z3JvdW5kQ29sb3IgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitUZXN0IGNhc2U6IHJlc2V0LXN0eWxl
LWluaGVyaXRhbmNlIHdpdGggbXVsdGlwbGUgc2hhZG93IHJvb3RzLiBjb2xvciB2YWx1ZSBzaG91
bGQgYmUgaW5pdGlhbCwgYmVjYXVzZSByZXNldC1zdHlsZS1pbmhlcml0YW5jZSBvZiB0aGUgaW5z
ZXJ0aW9uIHBvaW50IGluIHRoZSB5b3VuZ2VzdCBzaGFkb3cgcm9vdCBpcyB0cnVlLgorUEFTUyB3
aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXVsdGlwbGUt
c2hhZG93LXJvb3RzIikuZmlyc3RDaGlsZCkuY29sb3IgaXMgInJnYigwLCAwLCAwKSIKK1BBU1Mg
d2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm11bHRpcGxl
LXNoYWRvdy1yb290cyIpLmZpcnN0Q2hpbGQpLmJhY2tncm91bmRDb2xvciBpcyAicmdiYSgwLCAw
LCAwLCAwKSIKK1Rlc3QgY2FzZTogbXVsdGlwbGUgaW5zZXJ0aW9uIHBvaW50cyBpbiB0aGUgc2Ft
ZSBzaGFkb3cgZG9tIHN1YnRyZWUuLiBFYWNoIHJlc2V0LXN0eWxlLWluaGVyaXRhbmNlIHNob3Vs
ZCBiZSBjaGVja2VkLgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgibXVsdGlwbGUtaW5zZXJ0aW9uLXBvaW50cyIpLmZpcnN0Q2hpbGQpLmNvbG9y
IGlzICJyZ2IoMjU1LCAyMzgsIDIzOCkiCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJtdWx0aXBsZS1pbnNlcnRpb24tcG9pbnRzIikuZmlyc3RD
aGlsZCkuYmFja2dyb3VuZENvbG9yIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyB3aW5kb3cu
Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXVsdGlwbGUtaW5zZXJ0
aW9uLXBvaW50cyIpLmxhc3RDaGlsZCkuY29sb3IgaXMgInJnYigwLCAwLCAwKSIKK1BBU1Mgd2lu
ZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm11bHRpcGxlLWlu
c2VydGlvbi1wb2ludHMiKS5sYXN0Q2hpbGQpLmJhY2tncm91bmRDb2xvciBpcyAicmdiYSgwLCAw
LCAwLCAwKSIKK0RPTkUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9p
bnNlcnRpb24tcG9pbnQtcmVzZXRTdHlsZUluaGVyaXRhbmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvaW5zZXJ0aW9uLXBvaW50LXJlc2V0U3R5bGVJbmhlcml0YW5jZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjYwNGVmOGIzNTY4MTU1OWU4NWU0ZDc1YjEwMTc5MGU2NGI2YjU4MzAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvaW5zZXJ0aW9uLXBv
aW50LXJlc2V0U3R5bGVJbmhlcml0YW5jZS5odG1sCkBAIC0wLDAgKzEsMTI3IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CitkaXYucmVzZXRUZXN0IHsKKyAgYmFj
a2dyb3VuZC1jb2xvcjogI2VlZjsKKyAgY29sb3I6ICNmZWU7Cit9Cis8L3N0eWxlPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5j
dGlvbiB0ZXN0Tm9SZXNldFN0eWxlSW5oZXJpdGFuY2UoKSB7CisgICAgZGVidWcoIlRlc3QgY2Fz
ZTogbm8gcmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UuIGNvbG9yIHZhbHVlIHNob3VsZCBiZSBpbmhl
cml0ZWQgZnJvbSB0aGUgc2hhZG93IGhvc3QuIik7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCduby1yZXNldC1zdHlsZS1pbmhlcml0YW5jZScpOworCisgICAgdmFyIHNo
YWRvd1Jvb3QgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworICAgIHNoYWRvd1Jvb3QuaW5u
ZXJIVE1MID0gJzxjb250ZW50IGlkPSJjb250ZW50Ij48L2NvbnRlbnQ+JzsKKyAgICAKKyAgICBz
aGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCdjb250ZW50JykucmVzZXRTdHlsZUluaGVyaXRhbmNl
ID0gZmFsc2U7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJuby1yZXNldC1zdHlsZS1pbmhlcml0YW5jZSIpLmZpcnN0Q2hpbGQp
LmNvbG9yJywgJyJyZ2IoMjU1LCAyMzgsIDIzOCkiJyk7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJuby1yZXNldC1zdHlsZS1p
bmhlcml0YW5jZSIpLmZpcnN0Q2hpbGQpLmJhY2tncm91bmRDb2xvcicsICcicmdiYSgwLCAwLCAw
LCAwKSInKTsKK30KKworZnVuY3Rpb24gdGVzdFJlc2V0U3R5bGVJbmhlcml0YW5jZSgpIHsKKyAg
ICBkZWJ1ZygiVGVzdCBjYXNlOiByZXNldC1zdHlsZS1pbmhlcnRpYWNlIGJhc2ljIHRlc3QuIGNv
bG9yIHZhbHVlIHNob3VsZCBiZSBpbml0aWFsIGJlY2F1c2UgaW5zZXJ0aW9uIHBvaW50J3MgcmVz
ZXRTdHlsZUluaGVyaXRhbmNlIGlzIHRydWUuIik7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyZXNldC1zdHlsZS1pbmhlcml0YW5jZScpOworCisgICAgdmFyIHNoYWRv
d1Jvb3QgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworICAgIHNoYWRvd1Jvb3QuaW5uZXJI
VE1MID0gJzxjb250ZW50IGlkPSJjb250ZW50Ij48L2NvbnRlbnQ+JzsKKworICAgIHNoYWRvd1Jv
b3QuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnQnKS5yZXNldFN0eWxlSW5oZXJpdGFuY2UgPSB0cnVl
OworICAgIHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UiKS5maXJzdENoaWxkKS5jb2xvcicsICci
cmdiKDAsIDAsIDApIicpOworICAgIHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UiKS5maXJzdENo
aWxkKS5iYWNrZ3JvdW5kQ29sb3InLCAnInJnYmEoMCwgMCwgMCwgMCkiJyk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RSZXNldFN0eWxlSW5oZXJpdGFuY2VEeW5hbWljKCkgeworICAgIGRlYnVnKCJUZXN0
IGNhc2U6IHJlc2V0LXN0eWxlLWluaGVydGlhY2UgY2hhbmdlcyBkeW5hbWljYWxseS4gRmlyc3Rs
eSBjb2xvciB2YWx1ZSBzaG91bGQgYmUgaW5oZXJpdGVkLiBOZXh0LCBpbml0aWFsLiBBdCBsYXN0
LCBpbmhlcml0ZWQuIik7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
ZXNldC1zdHlsZS1pbmhlcml0YW5jZS1keW5hbWljJyk7CisKKyAgICB2YXIgc2hhZG93Um9vdCA9
IG5ldyBXZWJLaXRTaGFkb3dSb290KGRpdik7CisgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAn
PGNvbnRlbnQgaWQ9ImNvbnRlbnQiPjwvY29udGVudD4nOworCisgICAgc2hhZG93Um9vdC5nZXRF
bGVtZW50QnlJZCgnY29udGVudCcpLnJlc2V0U3R5bGVJbmhlcml0YW5jZSA9IGZhbHNlOworICAg
IHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UtZHluYW1pYyIpLmZpcnN0Q2hpbGQpLmNvbG9yJywg
JyJyZ2IoMjU1LCAyMzgsIDIzOCkiJyk7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRl
ZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1zdHlsZS1pbmhlcml0YW5jZS1k
eW5hbWljIikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yJywgJyJyZ2JhKDAsIDAsIDAsIDAp
IicpOworCisgICAgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgnY29udGVudCcpLnJlc2V0U3R5
bGVJbmhlcml0YW5jZSA9IHRydWU7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1zdHlsZS1pbmhlcml0YW5jZS1keW5h
bWljIikuZmlyc3RDaGlsZCkuY29sb3InLCAnInJnYigwLCAwLCAwKSInKTsKKyAgICBzaG91bGRC
ZSgnd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc2V0
LXN0eWxlLWluaGVyaXRhbmNlLWR5bmFtaWMiKS5maXJzdENoaWxkKS5iYWNrZ3JvdW5kQ29sb3In
LCAnInJnYmEoMCwgMCwgMCwgMCkiJyk7CisKKyAgICBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlk
KCdjb250ZW50JykucmVzZXRTdHlsZUluaGVyaXRhbmNlID0gZmFsc2U7CisgICAgc2hvdWxkQmUo
J3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1z
dHlsZS1pbmhlcml0YW5jZS1keW5hbWljIikuZmlyc3RDaGlsZCkuY29sb3InLCAnInJnYigyNTUs
IDIzOCwgMjM4KSInKTsKKyAgICBzaG91bGRCZSgnd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc2V0LXN0eWxlLWluaGVyaXRhbmNlLWR5bmFtaWMiKS5m
aXJzdENoaWxkKS5iYWNrZ3JvdW5kQ29sb3InLCAnInJnYmEoMCwgMCwgMCwgMCkiJyk7Cit9CisK
K2Z1bmN0aW9uIHRlc3RSZXNldFN0eWxlSW5oZXJpdGFuY2VXaXRob3V0Q3Jvc3NpbmdVcHBlckJv
dW5kYXJ5KCkgeworICAgIGRlYnVnKCJUZXN0IGNhc2U6IHRoZSBwYXJlbnQgbm9kZSBvZiB0aGUg
ZGlzdHJpYnV0ZWQgbm9kZSBpcyBpbiB0aGUgc2FtZSBzaGFkb3cgZG9tIHN1YnRyZWUgYXMgdGhl
IGluc2VydGlvbiBwb2ludC4gY29sb3IgdmFsdWUgc2hvdWxkIGJlIGluaXRpYWwuIHJlc2V0LXN0
eWxlLWluaGVyaXRhbmNlIGRvZXNuJ3QgZGVwZW5kIG9uIHdoZXRoZXIgcGFyZW50IHN0eWxlIG5v
ZGUgaXMgaW4gdGhlIHNhbWUgdHJlZXNjb3BlIG9yIG5vdC4iKTsKKyAgICB2YXIgZGl2ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc2V0LWJ1dC1ub3QtY3Jvc3MtdXBwZXItYm91bmRhcnkn
KTsKKyAgICB2YXIgc2hhZG93Um9vdCA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRpdik7CisKKyAg
ICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8ZGl2IHN0eWxlPSJjb2xvcjpibHVlOyBiYWNrZ3Jv
dW5kLWNvbG9yOmdyZWVuOyI+PGNvbnRlbnQgaWQ9ImNvbnRlbnQiPjwvY29udGVudD48L2Rpdj4n
OworCisgICAgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgnY29udGVudCcpLnJlc2V0U3R5bGVJ
bmhlcml0YW5jZSA9IHRydWU7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1idXQtbm90LWNyb3NzLXVwcGVyLWJvdW5k
YXJ5IikuZmlyc3RDaGlsZCkuY29sb3InLCAnInJnYigwLCAwLCAwKSInKTsKKyAgICBzaG91bGRC
ZSgnd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc2V0
LWJ1dC1ub3QtY3Jvc3MtdXBwZXItYm91bmRhcnkiKS5maXJzdENoaWxkKS5iYWNrZ3JvdW5kQ29s
b3InLCAnInJnYmEoMCwgMCwgMCwgMCkiJyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RSZXNldFN0eWxl
SW5oZXJpdGFuY2VXaXRoTXVsdGlwbGVTaGFkb3dSb290cygpIHsKKyAgICBkZWJ1ZygiVGVzdCBj
YXNlOiByZXNldC1zdHlsZS1pbmhlcml0YW5jZSB3aXRoIG11bHRpcGxlIHNoYWRvdyByb290cy4g
Y29sb3IgdmFsdWUgc2hvdWxkIGJlIGluaXRpYWwsIGJlY2F1c2UgcmVzZXQtc3R5bGUtaW5oZXJp
dGFuY2Ugb2YgdGhlIGluc2VydGlvbiBwb2ludCBpbiB0aGUgeW91bmdlc3Qgc2hhZG93IHJvb3Qg
aXMgdHJ1ZS4iKTsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ211bHRp
cGxlLXNoYWRvdy1yb290cycpOworICAgIHZhciBvbGRlc3RTaGFkb3dSb290ID0gbmV3IFdlYktp
dFNoYWRvd1Jvb3QoZGl2KTsKKyAgICBvbGRlc3RTaGFkb3dSb290LmlubmVySFRNTCA9ICc8Y29u
dGVudCBpZD0iY29udGVudCI+PC9jb250ZW50Pic7CisKKyAgICB2YXIgeW91bmdlclNoYWRvd1Jv
b3QgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworICAgIHlvdW5nZXJTaGFkb3dSb290Lmlu
bmVySFRNTCA9ICc8c2hhZG93IGlkPSJzaGFkb3ciPjwvc2hhZG93Pic7CisKKyAgICB2YXIgeW91
bmdlc3RTaGFkb3dSb290ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKKyAgICB5b3VuZ2Vz
dFNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxzaGFkb3cgaWQ9InNoYWRvdyI+PC9zaGFkb3c+JzsK
KworICAgIG9sZGVzdFNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnQnKS5yZXNldFN0
eWxlSW5oZXJpdGFuY2UgPSBmYWxzZTsKKyAgICB5b3VuZ2VyU2hhZG93Um9vdC5nZXRFbGVtZW50
QnlJZCgnc2hhZG93JykucmVzZXRTdHlsZUluaGVyaXRhbmNlID0gZmFsc2U7CisgICAgeW91bmdl
c3RTaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCdzaGFkb3cnKS5yZXNldFN0eWxlSW5oZXJpdGFu
Y2UgPSB0cnVlOworICAgIHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgibXVsdGlwbGUtc2hhZG93LXJvb3RzIikuZmlyc3RDaGlsZCkuY29s
b3InLCAnInJnYigwLCAwLCAwKSInKTsKKyAgICBzaG91bGRCZSgnd2luZG93LmdldENvbXB1dGVk
U3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm11bHRpcGxlLXNoYWRvdy1yb290cyIpLmZp
cnN0Q2hpbGQpLmJhY2tncm91bmRDb2xvcicsICcicmdiYSgwLCAwLCAwLCAwKSInKTsKK30KKwor
ZnVuY3Rpb24gdGVzdFJlc2V0U3R5bGVJbmhlcml0YW5jZVdpdGhNdWx0aXBsZUluc2VydGlvblBv
aW50cygpIHsKKyAgICBkZWJ1ZygiVGVzdCBjYXNlOiBtdWx0aXBsZSBpbnNlcnRpb24gcG9pbnRz
IGluIHRoZSBzYW1lIHNoYWRvdyBkb20gc3VidHJlZS4uIEVhY2ggcmVzZXQtc3R5bGUtaW5oZXJp
dGFuY2Ugc2hvdWxkIGJlIGNoZWNrZWQuIik7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdtdWx0aXBsZS1pbnNlcnRpb24tcG9pbnRzJyk7CisgICAgdmFyIG9sZGVzdFNo
YWRvd1Jvb3QgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworICAgIG9sZGVzdFNoYWRvd1Jv
b3QuaW5uZXJIVE1MID0gJzxjb250ZW50IGlkPSJjb250ZW50Ij48L2NvbnRlbnQ+JzsKKworICAg
IHZhciB5b3VuZ2VzdFNoYWRvd1Jvb3QgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworICAg
IHlvdW5nZXN0U2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPGNvbnRlbnQgc2VsZWN0PSI6Zmlyc3Qt
Y2hpbGQiIGlkPSJjb250ZW50Ij48L2NvbnRlbnQ+PHNoYWRvdyBpZD0ic2hhZG93Ij48L3NoYWRv
dz4nOworCisgICAgeW91bmdlc3RTaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCdjb250ZW50Jyku
cmVzZXRTdHlsZUluaGVyaXRhbmNlID0gZmFsc2U7CisgICAgeW91bmdlc3RTaGFkb3dSb290Lmdl
dEVsZW1lbnRCeUlkKCdzaGFkb3cnKS5yZXNldFN0eWxlSW5oZXJpdGFuY2UgPSB0cnVlOworCisg
ICAgc2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJtdWx0aXBsZS1pbnNlcnRpb24tcG9pbnRzIikuZmlyc3RDaGlsZCkuY29sb3InLCAnInJn
YigyNTUsIDIzOCwgMjM4KSInKTsKKyAgICBzaG91bGRCZSgnd2luZG93LmdldENvbXB1dGVkU3R5
bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm11bHRpcGxlLWluc2VydGlvbi1wb2ludHMiKS5m
aXJzdENoaWxkKS5iYWNrZ3JvdW5kQ29sb3InLCAnInJnYmEoMCwgMCwgMCwgMCkiJyk7CisgICAg
c2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJtdWx0aXBsZS1pbnNlcnRpb24tcG9pbnRzIikubGFzdENoaWxkKS5jb2xvcicsICcicmdiKDAs
IDAsIDApIicpOworICAgIHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgibXVsdGlwbGUtaW5zZXJ0aW9uLXBvaW50cyIpLmxhc3RDaGlsZCku
YmFja2dyb3VuZENvbG9yJywgJyJyZ2JhKDAsIDAsIDAsIDApIicpOworfQorCitmdW5jdGlvbiBy
dW5UZXN0cygpIHsKKyAgICB0ZXN0Tm9SZXNldFN0eWxlSW5oZXJpdGFuY2UoKTsKKyAgICB0ZXN0
UmVzZXRTdHlsZUluaGVyaXRhbmNlKCk7CisgICAgdGVzdFJlc2V0U3R5bGVJbmhlcml0YW5jZUR5
bmFtaWMoKTsKKyAgICB0ZXN0UmVzZXRTdHlsZUluaGVyaXRhbmNlV2l0aG91dENyb3NzaW5nVXBw
ZXJCb3VuZGFyeSgpCisgICAgdGVzdFJlc2V0U3R5bGVJbmhlcml0YW5jZVdpdGhNdWx0aXBsZVNo
YWRvd1Jvb3RzKCk7CisgICAgdGVzdFJlc2V0U3R5bGVJbmhlcml0YW5jZVdpdGhNdWx0aXBsZUlu
c2VydGlvblBvaW50cygpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0LWNhc2Vz
JykuaW5uZXJIVE1MID0gJ0RPTkUnOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InJ1blRlc3RzKCkiPgorPGRpdiBpZD0idGVzdC1jYXNlcyI+CisgIDxkaXYgaWQ9Im5vLXJl
c2V0LXN0eWxlLWluaGVyaXRhbmNlIiBjbGFzcz0icmVzZXRUZXN0Ij48c3Bhbj5maXJzdC1jaGls
ZDwvc3Bhbj48L2Rpdj4KKyAgPGRpdiBpZD0icmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UiIGNsYXNz
PSJyZXNldFRlc3QiPjxzcGFuPmZpcnN0LWNoaWxkPC9zcGFuPjwvZGl2PgorICA8ZGl2IGlkPSJy
ZXNldC1zdHlsZS1pbmhlcml0YW5jZS1keW5hbWljIiBjbGFzcz0icmVzZXRUZXN0Ij48c3Bhbj5m
aXJzdC1jaGlsZDwvc3Bhbj48L2Rpdj4KKyAgPGRpdiBpZD0icmVzZXQtYnV0LW5vdC1jcm9zcy11
cHBlci1ib3VuZGFyeSIgY2xhc3M9InJlc2V0VGVzdCI+PHNwYW4+Zmlyc3QtY2hpbGQ8L3NwYW4+
PC9kaXY+CisgIDxkaXYgaWQ9Im11bHRpcGxlLXNoYWRvdy1yb290cyIgY2xhc3M9InJlc2V0VGVz
dCI+PHNwYW4+Zmlyc3QtY2hpbGQ8L3NwYW4+PC9kaXY+CisgIDxkaXYgaWQ9Im11bHRpcGxlLWlu
c2VydGlvbi1wb2ludHMiIGNsYXNzPSJyZXNldFRlc3QiPjxzcGFuPmZpcnN0LWNoaWxkPC9zcGFu
PjxzcGFuPmxhc3QtY2hpbGQ8L3NwYW4+PC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167917</attachid>
            <date>2012-10-09 21:47:27 -0700</date>
            <delta_ts>2012-10-11 20:00:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93922-20121010134626.patch</filename>
            <type>text/plain</type>
            <size>19126</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzcyYThhMTA0Yzg0YmM1
NDVmMjhlNWY4ZWU1NTE3N2JlNTllMjlhOC4uMTRjYmQ2ZTZmMGU1ODdjNGE3MzBlZWM3NDNmNWUx
OTA4OTE0YTAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTEwLTA4ICBUYWth
c2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBbU2hhZG93IERPTV0g
SW5zZXJ0aW9uIHBvaW50cyBuZWVkIHJlc2V0U3R5bGVJbmhlcml0YW5jZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5MjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRlZCByZXNldFN0eWxl
SW5oZXJpdGFuY2Ugb2YgaW5zZXJ0aW9uIHBvaW50cy4KKyAgICAgICAgSXRzIHNwZWMgbGluayBp
cyBodHRwOi8vZHZjcy53My5vcmcvaGcvd2ViY29tcG9uZW50cy9yYXctZmlsZS90aXAvc3BlYy9z
aGFkb3cvaW5kZXguaHRtbCNhcGktaHRtbC1jb250ZW50LWVsZW1lbnQtcmVzZXQtc3R5bGUtaW5o
ZXJpdGFuY2UKKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9zaGFkb3cvaW5zZXJ0aW9uLXBvaW50
LXJlc2V0U3R5bGVJbmhlcml0YW5jZS5odG1sCisKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1Jlc2V0U3R5bGVJbmhlcml0YW5jZSk6CisgICAg
ICAgIEFkZGVkIGEgbmV3IGZ1bmN0aW9uIHRvIGNoZWNrIHdoZXRoZXIgdGhlcmUgZXhpc3RzIGFu
eSBpbnNlcnRpb24KKyAgICAgICAgcG9pbnQgd2hpY2ggaGFzIHJlc2V0LXN0eWxlLWluaGVydGlh
bmNlIGZsYWcgc2V0IHRvIGJlIHRydWUuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
Ojppbml0Rm9yU3R5bGVSZXNvbHZlKToKKyAgICAgICAgTW9kaWZpZWQgdG8gdXNlIHRoZSBhYm92
ZSBmdW5jdGlvbiB0byBjaGVjayByZXNldC1zdHlsZS1pbmhlcml0YW5jZS4KKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvc2hhZG93
L0hUTUxTaGFkb3dFbGVtZW50LmlkbDoKKyAgICAgICAgQWRkZWQgYSBuZXcgYXR0cmlidXRlIGZv
ciByZXNldC1zdHlsZS1pbmhlcml0YW5jZS4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRp
b25Qb2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6SW5zZXJ0aW9u
UG9pbnQpOgorICAgICAgICBJbml0aWFsaXplZCBhIG5ldyBtZW1iZXIgdmFyaWFibGUgZm9yIHJl
c2V0LXN0eWxlLWluaGVyaXRhbmNlLgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6
OnJlc2V0U3R5bGVJbmhlcml0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2lu
dDo6c2V0UmVzZXRTdHlsZUluaGVyaXRhbmNlKToKKyAgICAgICAgSW1wbGVtZW50ZWQgc2V0dGVy
L2dldHRlciBmb3IgcmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UuCisgICAgICAgICogaHRtbC9zaGFk
b3cvSW5zZXJ0aW9uUG9pbnQuaDoKKyAgICAgICAgKEluc2VydGlvblBvaW50KToKKyAgICAgICAg
QWRkZWQgYSBuZXcgbWVtYmVyIHZhcmlhYmxlIGZvciByZXNldC1zdHlsZS1pbmhlcml0YW5jZS4K
KwogMjAxMi0xMC0wOSAgSm9lIE1hc29uICA8am1hc29uQHJpbS5jb20+CiAKICAgICAgICAgQ2hl
Y2sgZm9yIG51bGwgbV9mcmFtZSBpbiBOZXR3b3JrSm9iCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKaW5kZXggMmQ5Y2NkNTlkYTVjMmQ1NGI2YTI0YWZjNzIxYWUyYzA4OWJkN2U2Yy4u
YzJmYmJhYmU0ZTk1NjBiODAyYTdjNjI4MmIwOGE0MTlhMTMwMDA1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgIkNvdW50ZXJD
b250ZW50LmgiCiAjaW5jbHVkZSAiQ3Vyc29yTGlzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50U3R5
bGVTaGVldENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVk
ZSAiRm9udEZlYXR1cmVWYWx1ZS5oIgogI2luY2x1ZGUgIkZvbnRWYWx1ZS5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCkBAIC05NTcsNiArOTU4LDI3IEBAIGlubGluZSB2b2lkIFN0eWxlUmVzb2x2ZXI6
OmluaXRFbGVtZW50KEVsZW1lbnQqIGUpCiAgICAgfQogfQogCitpbmxpbmUgYm9vbCBzaG91bGRS
ZXNldFN0eWxlSW5oZXJpdGFuY2UoTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCit7Cisg
ICAgaWYgKGNvbnRleHQucmVzZXRTdHlsZUluaGVyaXRhbmNlKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gY29udGV4dC5pbnNl
cnRpb25Qb2ludCgpOworICAgIGlmICghaW5zZXJ0aW9uUG9pbnQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBBU1NFUlQoY29udGV4dC5ub2RlKCktPnBhcmVudEVsZW1lbnQoKSk7CisgICAg
RWxlbWVudFNoYWRvdyogc2hhZG93ID0gY29udGV4dC5ub2RlKCktPnBhcmVudEVsZW1lbnQoKS0+
c2hhZG93KCk7CisgICAgQVNTRVJUKHNoYWRvdyk7CisKKyAgICBmb3IgKCA7IGluc2VydGlvblBv
aW50OyApIHsKKyAgICAgICAgSW5zZXJ0aW9uUG9pbnQqIHlvdW5nZXJJbnNlcnRpb25Qb2ludCA9
IHNoYWRvdy0+aW5zZXJ0aW9uUG9pbnRGb3IoaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICBpZiAo
IXlvdW5nZXJJbnNlcnRpb25Qb2ludCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpbnNl
cnRpb25Qb2ludCA9IHlvdW5nZXJJbnNlcnRpb25Qb2ludDsKKyAgICB9CisgICAgcmV0dXJuIGlu
c2VydGlvblBvaW50LT5yZXNldFN0eWxlSW5oZXJpdGFuY2UoKTsKK30KKwogaW5saW5lIHZvaWQg
U3R5bGVSZXNvbHZlcjo6aW5pdEZvclN0eWxlUmVzb2x2ZShFbGVtZW50KiBlLCBSZW5kZXJTdHls
ZSogcGFyZW50U3R5bGUsIFBzZXVkb0lkIHBzZXVkb0lEKQogewogICAgIG1fcHNldWRvU3R5bGUg
PSBwc2V1ZG9JRDsKQEAgLTk2NCw3ICs5ODYsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVy
Ojppbml0Rm9yU3R5bGVSZXNvbHZlKEVsZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBwYXJlbnRTdAog
ICAgIGlmIChlKSB7CiAgICAgICAgIE5vZGVSZW5kZXJpbmdDb250ZXh0IGNvbnRleHQoZSk7CiAg
ICAgICAgIG1fcGFyZW50Tm9kZSA9IGNvbnRleHQucGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0
eWxlKCk7Ci0gICAgICAgIG1fcGFyZW50U3R5bGUgPSBjb250ZXh0LnJlc2V0U3R5bGVJbmhlcml0
YW5jZSgpPyAwIDoKKyAgICAgICAgbV9wYXJlbnRTdHlsZSA9IHNob3VsZFJlc2V0U3R5bGVJbmhl
cml0YW5jZShjb250ZXh0KSA/IDAgOgogICAgICAgICAgICAgcGFyZW50U3R5bGUgPyBwYXJlbnRT
dHlsZSA6CiAgICAgICAgICAgICBtX3BhcmVudE5vZGUgPyBtX3BhcmVudE5vZGUtPnJlbmRlclN0
eWxlKCkgOiAwOwogICAgICAgICBtX2Rpc3RyaWJ1dGVkVG9JbnNlcnRpb25Qb2ludCA9IGNvbnRl
eHQuaW5zZXJ0aW9uUG9pbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0hUTUxDb250ZW50RWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9I
VE1MQ29udGVudEVsZW1lbnQuaWRsCmluZGV4IGM5MjhkNDQ5NDAzMTM4ZWI3ZDMyNDRhMDdmMmVj
MDk1OTBmOGJlYjAuLmRmMDhiMzg2MjlkOTIyZDAwMDM1OWM2YzI0YzdkNDBmMDdkYzRkY2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50Lmlk
bApAQCAtMzAsNSArMzAsNiBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIFY4RW5hYmxlZEF0UnVu
dGltZT1zaGFkb3dET00KICAgICBdIEhUTUxDb250ZW50RWxlbWVudCA6IEhUTUxFbGVtZW50IHsK
ICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgc2VsZWN0OworICAgICAgICBh
dHRyaWJ1dGUgYm9vbGVhbiByZXNldFN0eWxlSW5oZXJpdGFuY2U7CiAgICAgfTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmlkbAppbmRleCA5
NGZhY2I3YmVhNDRiZThiNzAzMDU4NTA1YjBlZTc0Njg3ZjRmZTM0Li5jMmM4ZjFhZGFmNjY4ODZk
ZmFjYWIzYmNiNDMzMGVkMmVjNzA1NzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaWRsCkBAIC0zNCw2ICszNCw3IEBAIG1vZHVsZSBodG1s
IHsKICAgICAgICAgQ29uZGl0aW9uYWw9U0hBRE9XX0RPTSwKICAgICAgICAgVjhFbmFibGVkQXRS
dW50aW1lPXNoYWRvd0RPTQogICAgIF0gSFRNTFNoYWRvd0VsZW1lbnQgOiBIVE1MRWxlbWVudCB7
CisgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIHJlc2V0U3R5bGVJbmhlcml0YW5jZTsKICAgICB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Q
b2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAK
aW5kZXggNDM1Nzk2Njc3YjJiZDc0OGM0OTQxMzcxMzE1OTM1Mzk5NGE3ZWM0Mi4uZTY1MTkwM2M0
NjFjZjZlY2MxOTQxZjkyOTdkZTBiN2I2YTI0Y2NlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIEluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkKKyAgICAsIG1fc2hvdWxkUmVzZXRTdHlsZUluaGVyaXRhbmNlKGZh
bHNlKQogewogfQogCkBAIC0xNDUsNCArMTQ2LDE4IEBAIHZvaWQgSW5zZXJ0aW9uUG9pbnQ6OnJl
bW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogICAgIEhUTUxFbGVtZW50
OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7CiB9CiAKK2Jvb2wgSW5zZXJ0aW9uUG9pbnQ6
OnJlc2V0U3R5bGVJbmhlcml0YW5jZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2hvdWxkUmVz
ZXRTdHlsZUluaGVyaXRhbmNlOworfQorCit2b2lkIEluc2VydGlvblBvaW50OjpzZXRSZXNldFN0
eWxlSW5oZXJpdGFuY2UoYm9vbCB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgIT0gbV9zaG91bGRS
ZXNldFN0eWxlSW5oZXJpdGFuY2UpIHsKKyAgICAgICAgbV9zaG91bGRSZXNldFN0eWxlSW5oZXJp
dGFuY2UgPSB2YWx1ZTsKKyAgICAgICAgaWYgKGF0dGFjaGVkKCkgJiYgaXNBY3RpdmUoKSkKKyAg
ICAgICAgICAgIHNoYWRvd1Jvb3QoKS0+aG9zdCgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7Cisg
ICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAppbmRleCA2MjM3ZGUyZTY4NjgyZDBiZTJjYTg4MjhiMGU4
YzkyOWUzMTkwZjRiLi5lNjlkNzdlYzlmMTI2NWNhMTdjZTVhZGI4NDgwMmE5ZWM3Y2I2MTNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKQEAgLTUzLDYg
KzUzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdFZhbGlkKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBkb2VzU2VsZWN0RnJvbUhvc3RDaGlsZHJlbigpIGNvbnN0
ID0gMDsKIAorICAgIGJvb2wgcmVzZXRTdHlsZUluaGVyaXRhbmNlKCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRSZXNldFN0eWxlSW5oZXJpdGFuY2UoYm9vbCk7CisKICAgICB2aXJ0dWFsIHZvaWQgYXR0
YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogICAgIHZpcnR1YWwgYm9vbCBpc0lu
c2VydGlvblBvaW50KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNzUsNiAr
NzgsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgQ29udGVudERpc3RyaWJ1dGlvbiBt
X2Rpc3RyaWJ1dGlvbjsKKyAgICBib29sIG1fc2hvdWxkUmVzZXRTdHlsZUluaGVyaXRhbmNlIDog
MTsKIH07CiAKIGlubGluZSBib29sIGlzSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkYTE0YzRhM2YwZDkwNTYyOWQ5MzY1NWI2OTk2ZDk3YWVjYjBjZWNhLi5mNzU1YTcz
N2NjMTRiMGMzYzgzNDkwMjBmOWRiNjZjMzg4ZjY3MDdhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTItMTAtMDggIFRha2FzaGkgU2FrYW1vdG8gIDx0YXNha0Bnb29nbGUuY29tPgorCisgICAg
ICAgIFtTaGFkb3cgRE9NXSBJbnNlcnRpb24gcG9pbnRzIG5lZWQgcmVzZXRTdHlsZUluaGVyaXRh
bmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzky
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFz
dC9kb20vc2hhZG93L2luc2VydGlvbi1wb2ludC1yZXNldFN0eWxlSW5oZXJpdGFuY2UtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvaW5zZXJ0aW9uLXBvaW50
LXJlc2V0U3R5bGVJbmhlcml0YW5jZS5odG1sOiBBZGRlZC4KKwogMjAxMi0xMC0wOSAgSmVmZnJl
eSBQZmF1ICA8anBmYXVAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIFVucmV2aWV3ZWQsIHNr
aXBwaW5nIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3ZnLWltYWdlLWxlYWsuaHRtbApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2luc2VydGlvbi1wb2ludC1yZXNldFN0eWxl
SW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2lu
c2VydGlvbi1wb2ludC1yZXNldFN0eWxlSW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk3YWU4YTFiMzg4MjRmOTM2ZTYzZmI4MzFlYjczZWJiMzA4M2M1NTAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvaW5zZXJ0aW9uLXBvaW50LXJlc2V0
U3R5bGVJbmhlcml0YW5jZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNSBAQAorVGVzdCBjYXNl
OiBubyByZXNldC1zdHlsZS1pbmhlcml0YW5jZS4gY29sb3IgdmFsdWUgc2hvdWxkIGJlIGluaGVy
aXRlZCBmcm9tIHRoZSBzaGFkb3cgaG9zdC4KK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5vLXJlc2V0LXN0eWxlLWluaGVyaXRhbmNlIikuZmly
c3RDaGlsZCkuY29sb3IgaXMgInJnYigyNTUsIDIzOCwgMjM4KSIKK1BBU1Mgd2luZG93LmdldENv
bXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5vLXJlc2V0LXN0eWxlLWluaGVy
aXRhbmNlIikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yIGlzICJyZ2JhKDAsIDAsIDAsIDAp
IgorVGVzdCBjYXNlOiByZXNldC1zdHlsZS1pbmhlcnRpYWNlIGJhc2ljIHRlc3QuIGNvbG9yIHZh
bHVlIHNob3VsZCBiZSBpbml0aWFsIGJlY2F1c2UgaW5zZXJ0aW9uIHBvaW50J3MgcmVzZXRTdHls
ZUluaGVyaXRhbmNlIGlzIHRydWUuCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1zdHlsZS1pbmhlcml0YW5jZSIpLmZpcnN0Q2hpbGQp
LmNvbG9yIGlzICJyZ2IoMCwgMCwgMCkiCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1zdHlsZS1pbmhlcml0YW5jZSIpLmZpcnN0Q2hp
bGQpLmJhY2tncm91bmRDb2xvciBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1Rlc3QgY2FzZTogcmVz
ZXQtc3R5bGUtaW5oZXJ0aWFjZSBjaGFuZ2VzIGR5bmFtaWNhbGx5LiBGaXJzdGx5IGNvbG9yIHZh
bHVlIHNob3VsZCBiZSBpbmhlcml0ZWQuIE5leHQsIGluaXRpYWwuIEF0IGxhc3QsIGluaGVyaXRl
ZC4KK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlc2V0LXN0eWxlLWluaGVyaXRhbmNlLWR5bmFtaWMiKS5maXJzdENoaWxkKS5jb2xvciBpcyAi
cmdiKDI1NSwgMjM4LCAyMzgpIgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UtZHluYW1pYyIpLmZpcnN0
Q2hpbGQpLmJhY2tncm91bmRDb2xvciBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1Mgd2luZG93
LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc2V0LXN0eWxlLWlu
aGVyaXRhbmNlLWR5bmFtaWMiKS5maXJzdENoaWxkKS5jb2xvciBpcyAicmdiKDAsIDAsIDApIgor
UEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
ZXQtc3R5bGUtaW5oZXJpdGFuY2UtZHluYW1pYyIpLmZpcnN0Q2hpbGQpLmJhY2tncm91bmRDb2xv
ciBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc2V0LXN0eWxlLWluaGVyaXRhbmNlLWR5bmFtaWMiKS5m
aXJzdENoaWxkKS5jb2xvciBpcyAicmdiKDI1NSwgMjM4LCAyMzgpIgorUEFTUyB3aW5kb3cuZ2V0
Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzZXQtc3R5bGUtaW5oZXJp
dGFuY2UtZHluYW1pYyIpLmZpcnN0Q2hpbGQpLmJhY2tncm91bmRDb2xvciBpcyAicmdiYSgwLCAw
LCAwLCAwKSIKK1Rlc3QgY2FzZTogdGhlIHBhcmVudCBub2RlIG9mIHRoZSBkaXN0cmlidXRlZCBu
b2RlIGlzIGluIHRoZSBzYW1lIHNoYWRvdyBkb20gc3VidHJlZSBhcyB0aGUgaW5zZXJ0aW9uIHBv
aW50LiBjb2xvciB2YWx1ZSBzaG91bGQgYmUgaW5pdGlhbC4gcmVzZXQtc3R5bGUtaW5oZXJpdGFu
Y2UgZG9lc24ndCBkZXBlbmQgb24gd2hldGhlciBwYXJlbnQgc3R5bGUgbm9kZSBpcyBpbiB0aGUg
c2FtZSB0cmVlc2NvcGUgb3Igbm90LgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzZXQtYnV0LW5vdC1jcm9zcy11cHBlci1ib3VuZGFyeSIp
LmZpcnN0Q2hpbGQpLmNvbG9yIGlzICJyZ2IoMCwgMCwgMCkiCitQQVNTIHdpbmRvdy5nZXRDb21w
dXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1idXQtbm90LWNyb3NzLXVw
cGVyLWJvdW5kYXJ5IikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yIGlzICJyZ2JhKDAsIDAs
IDAsIDApIgorVGVzdCBjYXNlOiByZXNldC1zdHlsZS1pbmhlcml0YW5jZSB3aXRoIG11bHRpcGxl
IHNoYWRvdyByb290cy4gY29sb3IgdmFsdWUgc2hvdWxkIGJlIGluaXRpYWwsIGJlY2F1c2UgcmVz
ZXQtc3R5bGUtaW5oZXJpdGFuY2Ugb2YgdGhlIGluc2VydGlvbiBwb2ludCBpbiB0aGUgeW91bmdl
c3Qgc2hhZG93IHJvb3QgaXMgdHJ1ZS4KK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm11bHRpcGxlLXNoYWRvdy1yb290cyIpLmZpcnN0Q2hpbGQp
LmNvbG9yIGlzICJyZ2IoMCwgMCwgMCkiCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJtdWx0aXBsZS1zaGFkb3ctcm9vdHMiKS5maXJzdENoaWxk
KS5iYWNrZ3JvdW5kQ29sb3IgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitUZXN0IGNhc2U6IG11bHRp
cGxlIGluc2VydGlvbiBwb2ludHMgaW4gdGhlIHNhbWUgc2hhZG93IGRvbSBzdWJ0cmVlLi4gRWFj
aCByZXNldC1zdHlsZS1pbmhlcml0YW5jZSBzaG91bGQgYmUgY2hlY2tlZC4KK1BBU1Mgd2luZG93
LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm11bHRpcGxlLWluc2Vy
dGlvbi1wb2ludHMiKS5maXJzdENoaWxkKS5jb2xvciBpcyAicmdiKDI1NSwgMjM4LCAyMzgpIgor
UEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXVs
dGlwbGUtaW5zZXJ0aW9uLXBvaW50cyIpLmZpcnN0Q2hpbGQpLmJhY2tncm91bmRDb2xvciBpcyAi
cmdiYSgwLCAwLCAwLCAwKSIKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoIm11bHRpcGxlLWluc2VydGlvbi1wb2ludHMiKS5sYXN0Q2hpbGQpLmNv
bG9yIGlzICJyZ2IoMCwgMCwgMCkiCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJtdWx0aXBsZS1pbnNlcnRpb24tcG9pbnRzIikubGFzdENoaWxk
KS5iYWNrZ3JvdW5kQ29sb3IgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitET05FCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvaW5zZXJ0aW9uLXBvaW50LXJlc2V0U3R5bGVJ
bmhlcml0YW5jZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2luc2VydGlvbi1w
b2ludC1yZXNldFN0eWxlSW5oZXJpdGFuY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDRlZjhiMzU2ODE1
NTllODVlNGQ3NWIxMDE3OTBlNjRiNmI1ODMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2luc2VydGlvbi1wb2ludC1yZXNldFN0eWxlSW5oZXJpdGFuY2Uu
aHRtbApAQCAtMCwwICsxLDEyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHN0eWxlPgorZGl2LnJlc2V0VGVzdCB7CisgIGJhY2tncm91bmQtY29sb3I6ICNlZWY7CisgIGNv
bG9yOiAjZmVlOworfQorPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5Zmls
bC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdE5vUmVzZXRTdHlsZUluaGVy
aXRhbmNlKCkgeworICAgIGRlYnVnKCJUZXN0IGNhc2U6IG5vIHJlc2V0LXN0eWxlLWluaGVyaXRh
bmNlLiBjb2xvciB2YWx1ZSBzaG91bGQgYmUgaW5oZXJpdGVkIGZyb20gdGhlIHNoYWRvdyBob3N0
LiIpOworICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm8tcmVzZXQtc3R5
bGUtaW5oZXJpdGFuY2UnKTsKKworICAgIHZhciBzaGFkb3dSb290ID0gbmV3IFdlYktpdFNoYWRv
d1Jvb3QoZGl2KTsKKyAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8Y29udGVudCBpZD0iY29u
dGVudCI+PC9jb250ZW50Pic7CisgICAgCisgICAgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgn
Y29udGVudCcpLnJlc2V0U3R5bGVJbmhlcml0YW5jZSA9IGZhbHNlOworICAgIHNob3VsZEJlKCd3
aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm8tcmVzZXQt
c3R5bGUtaW5oZXJpdGFuY2UiKS5maXJzdENoaWxkKS5jb2xvcicsICcicmdiKDI1NSwgMjM4LCAy
MzgpIicpOworICAgIHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibm8tcmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UiKS5maXJzdENoaWxkKS5i
YWNrZ3JvdW5kQ29sb3InLCAnInJnYmEoMCwgMCwgMCwgMCkiJyk7Cit9CisKK2Z1bmN0aW9uIHRl
c3RSZXNldFN0eWxlSW5oZXJpdGFuY2UoKSB7CisgICAgZGVidWcoIlRlc3QgY2FzZTogcmVzZXQt
c3R5bGUtaW5oZXJ0aWFjZSBiYXNpYyB0ZXN0LiBjb2xvciB2YWx1ZSBzaG91bGQgYmUgaW5pdGlh
bCBiZWNhdXNlIGluc2VydGlvbiBwb2ludCdzIHJlc2V0U3R5bGVJbmhlcml0YW5jZSBpcyB0cnVl
LiIpOworICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzZXQtc3R5bGUt
aW5oZXJpdGFuY2UnKTsKKworICAgIHZhciBzaGFkb3dSb290ID0gbmV3IFdlYktpdFNoYWRvd1Jv
b3QoZGl2KTsKKyAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8Y29udGVudCBpZD0iY29udGVu
dCI+PC9jb250ZW50Pic7CisKKyAgICBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCdjb250ZW50
JykucmVzZXRTdHlsZUluaGVyaXRhbmNlID0gdHJ1ZTsKKyAgICBzaG91bGRCZSgnd2luZG93Lmdl
dENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc2V0LXN0eWxlLWluaGVy
aXRhbmNlIikuZmlyc3RDaGlsZCkuY29sb3InLCAnInJnYigwLCAwLCAwKSInKTsKKyAgICBzaG91
bGRCZSgnd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c2V0LXN0eWxlLWluaGVyaXRhbmNlIikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yJywgJyJy
Z2JhKDAsIDAsIDAsIDApIicpOworfQorCitmdW5jdGlvbiB0ZXN0UmVzZXRTdHlsZUluaGVyaXRh
bmNlRHluYW1pYygpIHsKKyAgICBkZWJ1ZygiVGVzdCBjYXNlOiByZXNldC1zdHlsZS1pbmhlcnRp
YWNlIGNoYW5nZXMgZHluYW1pY2FsbHkuIEZpcnN0bHkgY29sb3IgdmFsdWUgc2hvdWxkIGJlIGlu
aGVyaXRlZC4gTmV4dCwgaW5pdGlhbC4gQXQgbGFzdCwgaW5oZXJpdGVkLiIpOworICAgIHZhciBk
aXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UtZHlu
YW1pYycpOworCisgICAgdmFyIHNoYWRvd1Jvb3QgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYp
OworICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxjb250ZW50IGlkPSJjb250ZW50Ij48L2Nv
bnRlbnQ+JzsKKworICAgIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnQnKS5yZXNl
dFN0eWxlSW5oZXJpdGFuY2UgPSBmYWxzZTsKKyAgICBzaG91bGRCZSgnd2luZG93LmdldENvbXB1
dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc2V0LXN0eWxlLWluaGVyaXRhbmNl
LWR5bmFtaWMiKS5maXJzdENoaWxkKS5jb2xvcicsICcicmdiKDI1NSwgMjM4LCAyMzgpIicpOwor
ICAgIHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UtZHluYW1pYyIpLmZpcnN0Q2hpbGQpLmJhY2tn
cm91bmRDb2xvcicsICcicmdiYSgwLCAwLCAwLCAwKSInKTsKKworICAgIHNoYWRvd1Jvb3QuZ2V0
RWxlbWVudEJ5SWQoJ2NvbnRlbnQnKS5yZXNldFN0eWxlSW5oZXJpdGFuY2UgPSB0cnVlOworICAg
IHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UtZHluYW1pYyIpLmZpcnN0Q2hpbGQpLmNvbG9yJywg
JyJyZ2IoMCwgMCwgMCkiJyk7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1zdHlsZS1pbmhlcml0YW5jZS1keW5hbWlj
IikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yJywgJyJyZ2JhKDAsIDAsIDAsIDApIicpOwor
CisgICAgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgnY29udGVudCcpLnJlc2V0U3R5bGVJbmhl
cml0YW5jZSA9IGZhbHNlOworICAgIHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UtZHluYW1pYyIp
LmZpcnN0Q2hpbGQpLmNvbG9yJywgJyJyZ2IoMjU1LCAyMzgsIDIzOCkiJyk7CisgICAgc2hvdWxk
QmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNl
dC1zdHlsZS1pbmhlcml0YW5jZS1keW5hbWljIikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9y
JywgJyJyZ2JhKDAsIDAsIDAsIDApIicpOworfQorCitmdW5jdGlvbiB0ZXN0UmVzZXRTdHlsZUlu
aGVyaXRhbmNlV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeSgpIHsKKyAgICBkZWJ1ZygiVGVz
dCBjYXNlOiB0aGUgcGFyZW50IG5vZGUgb2YgdGhlIGRpc3RyaWJ1dGVkIG5vZGUgaXMgaW4gdGhl
IHNhbWUgc2hhZG93IGRvbSBzdWJ0cmVlIGFzIHRoZSBpbnNlcnRpb24gcG9pbnQuIGNvbG9yIHZh
bHVlIHNob3VsZCBiZSBpbml0aWFsLiByZXNldC1zdHlsZS1pbmhlcml0YW5jZSBkb2Vzbid0IGRl
cGVuZCBvbiB3aGV0aGVyIHBhcmVudCBzdHlsZSBub2RlIGlzIGluIHRoZSBzYW1lIHRyZWVzY29w
ZSBvciBub3QuIik7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXNl
dC1idXQtbm90LWNyb3NzLXVwcGVyLWJvdW5kYXJ5Jyk7CisgICAgdmFyIHNoYWRvd1Jvb3QgPSBu
ZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworCisgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAn
PGRpdiBzdHlsZT0iY29sb3I6Ymx1ZTsgYmFja2dyb3VuZC1jb2xvcjpncmVlbjsiPjxjb250ZW50
IGlkPSJjb250ZW50Ij48L2NvbnRlbnQ+PC9kaXY+JzsKKworICAgIHNoYWRvd1Jvb3QuZ2V0RWxl
bWVudEJ5SWQoJ2NvbnRlbnQnKS5yZXNldFN0eWxlSW5oZXJpdGFuY2UgPSB0cnVlOworICAgIHNo
b3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVzZXQtYnV0LW5vdC1jcm9zcy11cHBlci1ib3VuZGFyeSIpLmZpcnN0Q2hpbGQpLmNvbG9yJywg
JyJyZ2IoMCwgMCwgMCkiJyk7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1idXQtbm90LWNyb3NzLXVwcGVyLWJvdW5k
YXJ5IikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yJywgJyJyZ2JhKDAsIDAsIDAsIDApIicp
OworfQorCitmdW5jdGlvbiB0ZXN0UmVzZXRTdHlsZUluaGVyaXRhbmNlV2l0aE11bHRpcGxlU2hh
ZG93Um9vdHMoKSB7CisgICAgZGVidWcoIlRlc3QgY2FzZTogcmVzZXQtc3R5bGUtaW5oZXJpdGFu
Y2Ugd2l0aCBtdWx0aXBsZSBzaGFkb3cgcm9vdHMuIGNvbG9yIHZhbHVlIHNob3VsZCBiZSBpbml0
aWFsLCBiZWNhdXNlIHJlc2V0LXN0eWxlLWluaGVyaXRhbmNlIG9mIHRoZSBpbnNlcnRpb24gcG9p
bnQgaW4gdGhlIHlvdW5nZXN0IHNoYWRvdyByb290IGlzIHRydWUuIik7CisgICAgdmFyIGRpdiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtdWx0aXBsZS1zaGFkb3ctcm9vdHMnKTsKKyAgICB2
YXIgb2xkZXN0U2hhZG93Um9vdCA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRpdik7CisgICAgb2xk
ZXN0U2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPGNvbnRlbnQgaWQ9ImNvbnRlbnQiPjwvY29udGVu
dD4nOworCisgICAgdmFyIHlvdW5nZXJTaGFkb3dSb290ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qo
ZGl2KTsKKyAgICB5b3VuZ2VyU2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPHNoYWRvdyBpZD0ic2hh
ZG93Ij48L3NoYWRvdz4nOworCisgICAgdmFyIHlvdW5nZXN0U2hhZG93Um9vdCA9IG5ldyBXZWJL
aXRTaGFkb3dSb290KGRpdik7CisgICAgeW91bmdlc3RTaGFkb3dSb290LmlubmVySFRNTCA9ICc8
c2hhZG93IGlkPSJzaGFkb3ciPjwvc2hhZG93Pic7CisKKyAgICBvbGRlc3RTaGFkb3dSb290Lmdl
dEVsZW1lbnRCeUlkKCdjb250ZW50JykucmVzZXRTdHlsZUluaGVyaXRhbmNlID0gZmFsc2U7Cisg
ICAgeW91bmdlclNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoJ3NoYWRvdycpLnJlc2V0U3R5bGVJ
bmhlcml0YW5jZSA9IGZhbHNlOworICAgIHlvdW5nZXN0U2hhZG93Um9vdC5nZXRFbGVtZW50QnlJ
ZCgnc2hhZG93JykucmVzZXRTdHlsZUluaGVyaXRhbmNlID0gdHJ1ZTsKKyAgICBzaG91bGRCZSgn
d2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm11bHRpcGxl
LXNoYWRvdy1yb290cyIpLmZpcnN0Q2hpbGQpLmNvbG9yJywgJyJyZ2IoMCwgMCwgMCkiJyk7Cisg
ICAgc2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJtdWx0aXBsZS1zaGFkb3ctcm9vdHMiKS5maXJzdENoaWxkKS5iYWNrZ3JvdW5kQ29sb3In
LCAnInJnYmEoMCwgMCwgMCwgMCkiJyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RSZXNldFN0eWxlSW5o
ZXJpdGFuY2VXaXRoTXVsdGlwbGVJbnNlcnRpb25Qb2ludHMoKSB7CisgICAgZGVidWcoIlRlc3Qg
Y2FzZTogbXVsdGlwbGUgaW5zZXJ0aW9uIHBvaW50cyBpbiB0aGUgc2FtZSBzaGFkb3cgZG9tIHN1
YnRyZWUuLiBFYWNoIHJlc2V0LXN0eWxlLWluaGVyaXRhbmNlIHNob3VsZCBiZSBjaGVja2VkLiIp
OworICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXVsdGlwbGUtaW5zZXJ0
aW9uLXBvaW50cycpOworICAgIHZhciBvbGRlc3RTaGFkb3dSb290ID0gbmV3IFdlYktpdFNoYWRv
d1Jvb3QoZGl2KTsKKyAgICBvbGRlc3RTaGFkb3dSb290LmlubmVySFRNTCA9ICc8Y29udGVudCBp
ZD0iY29udGVudCI+PC9jb250ZW50Pic7CisKKyAgICB2YXIgeW91bmdlc3RTaGFkb3dSb290ID0g
bmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKKyAgICB5b3VuZ2VzdFNoYWRvd1Jvb3QuaW5uZXJI
VE1MID0gJzxjb250ZW50IHNlbGVjdD0iOmZpcnN0LWNoaWxkIiBpZD0iY29udGVudCI+PC9jb250
ZW50PjxzaGFkb3cgaWQ9InNoYWRvdyI+PC9zaGFkb3c+JzsKKworICAgIHlvdW5nZXN0U2hhZG93
Um9vdC5nZXRFbGVtZW50QnlJZCgnY29udGVudCcpLnJlc2V0U3R5bGVJbmhlcml0YW5jZSA9IGZh
bHNlOworICAgIHlvdW5nZXN0U2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgnc2hhZG93JykucmVz
ZXRTdHlsZUluaGVyaXRhbmNlID0gdHJ1ZTsKKworICAgIHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29t
cHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXVsdGlwbGUtaW5zZXJ0aW9uLXBv
aW50cyIpLmZpcnN0Q2hpbGQpLmNvbG9yJywgJyJyZ2IoMjU1LCAyMzgsIDIzOCkiJyk7CisgICAg
c2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJtdWx0aXBsZS1pbnNlcnRpb24tcG9pbnRzIikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9y
JywgJyJyZ2JhKDAsIDAsIDAsIDApIicpOworICAgIHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXVsdGlwbGUtaW5zZXJ0aW9uLXBvaW50
cyIpLmxhc3RDaGlsZCkuY29sb3InLCAnInJnYigwLCAwLCAwKSInKTsKKyAgICBzaG91bGRCZSgn
d2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm11bHRpcGxl
LWluc2VydGlvbi1wb2ludHMiKS5sYXN0Q2hpbGQpLmJhY2tncm91bmRDb2xvcicsICcicmdiYSgw
LCAwLCAwLCAwKSInKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdHMoKSB7CisgICAgdGVzdE5vUmVz
ZXRTdHlsZUluaGVyaXRhbmNlKCk7CisgICAgdGVzdFJlc2V0U3R5bGVJbmhlcml0YW5jZSgpOwor
ICAgIHRlc3RSZXNldFN0eWxlSW5oZXJpdGFuY2VEeW5hbWljKCk7CisgICAgdGVzdFJlc2V0U3R5
bGVJbmhlcml0YW5jZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoKQorICAgIHRlc3RSZXNl
dFN0eWxlSW5oZXJpdGFuY2VXaXRoTXVsdGlwbGVTaGFkb3dSb290cygpOworICAgIHRlc3RSZXNl
dFN0eWxlSW5oZXJpdGFuY2VXaXRoTXVsdGlwbGVJbnNlcnRpb25Qb2ludHMoKTsKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdC1jYXNlcycpLmlubmVySFRNTCA9ICdET05FJzsKK30K
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0cygpIj4KKzxkaXYgaWQ9
InRlc3QtY2FzZXMiPgorICA8ZGl2IGlkPSJuby1yZXNldC1zdHlsZS1pbmhlcml0YW5jZSIgY2xh
c3M9InJlc2V0VGVzdCI+PHNwYW4+Zmlyc3QtY2hpbGQ8L3NwYW4+PC9kaXY+CisgIDxkaXYgaWQ9
InJlc2V0LXN0eWxlLWluaGVyaXRhbmNlIiBjbGFzcz0icmVzZXRUZXN0Ij48c3Bhbj5maXJzdC1j
aGlsZDwvc3Bhbj48L2Rpdj4KKyAgPGRpdiBpZD0icmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UtZHlu
YW1pYyIgY2xhc3M9InJlc2V0VGVzdCI+PHNwYW4+Zmlyc3QtY2hpbGQ8L3NwYW4+PC9kaXY+Cisg
IDxkaXYgaWQ9InJlc2V0LWJ1dC1ub3QtY3Jvc3MtdXBwZXItYm91bmRhcnkiIGNsYXNzPSJyZXNl
dFRlc3QiPjxzcGFuPmZpcnN0LWNoaWxkPC9zcGFuPjwvZGl2PgorICA8ZGl2IGlkPSJtdWx0aXBs
ZS1zaGFkb3ctcm9vdHMiIGNsYXNzPSJyZXNldFRlc3QiPjxzcGFuPmZpcnN0LWNoaWxkPC9zcGFu
PjwvZGl2PgorICA8ZGl2IGlkPSJtdWx0aXBsZS1pbnNlcnRpb24tcG9pbnRzIiBjbGFzcz0icmVz
ZXRUZXN0Ij48c3Bhbj5maXJzdC1jaGlsZDwvc3Bhbj48c3Bhbj5sYXN0LWNoaWxkPC9zcGFuPjwv
ZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168339</attachid>
            <date>2012-10-11 20:01:06 -0700</date>
            <delta_ts>2012-10-11 20:51:36 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-93922-20121012120002.patch</filename>
            <type>text/plain</type>
            <size>19126</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RjYWE5OTljNmQzYzM3
MDU2Y2RjY2FjMjU1MmQ1M2IxMGI1NTNiOS4uZTM3N2NiOGU4NjAzNGZkOGI2NDI3MDRlYmEzNDM3
NTkwNWE3ODYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTEwLTA4ICBUYWth
c2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBbU2hhZG93IERPTV0g
SW5zZXJ0aW9uIHBvaW50cyBuZWVkIHJlc2V0U3R5bGVJbmhlcml0YW5jZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5MjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgcmVzZXRTdHls
ZUluaGVyaXRhbmNlIG9mIGluc2VydGlvbiBwb2ludHMuCisgICAgICAgIEl0cyBzcGVjIGxpbmsg
aXMgaHR0cDovL2R2Y3MudzMub3JnL2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlwL3NwZWMv
c2hhZG93L2luZGV4Lmh0bWwjYXBpLWh0bWwtY29udGVudC1lbGVtZW50LXJlc2V0LXN0eWxlLWlu
aGVyaXRhbmNlCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vc2hhZG93L2luc2VydGlvbi1wb2lu
dC1yZXNldFN0eWxlSW5oZXJpdGFuY2UuaHRtbAorCisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNSZXNldFN0eWxlSW5oZXJpdGFuY2UpOgorICAg
ICAgICBBZGRlZCBhIG5ldyBmdW5jdGlvbiB0byBjaGVjayB3aGV0aGVyIHRoZXJlIGV4aXN0cyBh
bnkgaW5zZXJ0aW9uCisgICAgICAgIHBvaW50IHdoaWNoIGhhcyByZXNldC1zdHlsZS1pbmhlcnRp
YW5jZSBmbGFnIHNldCB0byBiZSB0cnVlLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6aW5pdEZvclN0eWxlUmVzb2x2ZSk6CisgICAgICAgIE1vZGlmaWVkIHRvIHVzZSB0aGUgYWJv
dmUgZnVuY3Rpb24gdG8gY2hlY2sgcmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UuCisgICAgICAgICog
aHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL3NoYWRv
dy9IVE1MU2hhZG93RWxlbWVudC5pZGw6CisgICAgICAgIEFkZGVkIGEgbmV3IGF0dHJpYnV0ZSBm
b3IgcmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UuCisgICAgICAgICogaHRtbC9zaGFkb3cvSW5zZXJ0
aW9uUG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6Okluc2VydGlv
blBvaW50KToKKyAgICAgICAgSW5pdGlhbGl6ZWQgYSBuZXcgbWVtYmVyIHZhcmlhYmxlIGZvciBy
ZXNldC1zdHlsZS1pbmhlcml0YW5jZS4KKyAgICAgICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50
OjpyZXNldFN0eWxlSW5oZXJpdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9p
bnQ6OnNldFJlc2V0U3R5bGVJbmhlcml0YW5jZSk6CisgICAgICAgIEltcGxlbWVudGVkIHNldHRl
ci9nZXR0ZXIgZm9yIHJlc2V0LXN0eWxlLWluaGVyaXRhbmNlLgorICAgICAgICAqIGh0bWwvc2hh
ZG93L0luc2VydGlvblBvaW50Lmg6CisgICAgICAgIChJbnNlcnRpb25Qb2ludCk6CisgICAgICAg
IEFkZGVkIGEgbmV3IG1lbWJlciB2YXJpYWJsZSBmb3IgcmVzZXQtc3R5bGUtaW5oZXJpdGFuY2Uu
CisKIDIwMTItMTAtMTEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzExMDAuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggZmJhZDA4YzA4NzE4MzI4MWMwNTVlMDA5ZjcwYTQ4
YmY1Zjg1NzlkNS4uMDBlZDI1MGUzNTIxODRjZDUwMDAyYzY4N2VlNDMyOWVlMWE5YTgxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1
ZGUgIkNvdW50ZXJDb250ZW50LmgiCiAjaW5jbHVkZSAiQ3Vyc29yTGlzdC5oIgogI2luY2x1ZGUg
IkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJFbGVtZW50U2hhZG93
LmgiCiAjaW5jbHVkZSAiRm9udEZlYXR1cmVWYWx1ZS5oIgogI2luY2x1ZGUgIkZvbnRWYWx1ZS5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC05NTgsNiArOTU5LDI3IEBAIGlubGluZSB2b2lkIFN0
eWxlUmVzb2x2ZXI6OmluaXRFbGVtZW50KEVsZW1lbnQqIGUpCiAgICAgfQogfQogCitpbmxpbmUg
Ym9vbCBzaG91bGRSZXNldFN0eWxlSW5oZXJpdGFuY2UoTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNv
bnRleHQpCit7CisgICAgaWYgKGNvbnRleHQucmVzZXRTdHlsZUluaGVyaXRhbmNlKCkpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0g
Y29udGV4dC5pbnNlcnRpb25Qb2ludCgpOworICAgIGlmICghaW5zZXJ0aW9uUG9pbnQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQoY29udGV4dC5ub2RlKCktPnBhcmVudEVsZW1l
bnQoKSk7CisgICAgRWxlbWVudFNoYWRvdyogc2hhZG93ID0gY29udGV4dC5ub2RlKCktPnBhcmVu
dEVsZW1lbnQoKS0+c2hhZG93KCk7CisgICAgQVNTRVJUKHNoYWRvdyk7CisKKyAgICBmb3IgKCA7
IGluc2VydGlvblBvaW50OyApIHsKKyAgICAgICAgSW5zZXJ0aW9uUG9pbnQqIHlvdW5nZXJJbnNl
cnRpb25Qb2ludCA9IHNoYWRvdy0+aW5zZXJ0aW9uUG9pbnRGb3IoaW5zZXJ0aW9uUG9pbnQpOwor
ICAgICAgICBpZiAoIXlvdW5nZXJJbnNlcnRpb25Qb2ludCkKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBpbnNlcnRpb25Qb2ludCA9IHlvdW5nZXJJbnNlcnRpb25Qb2ludDsKKyAgICB9Cisg
ICAgcmV0dXJuIGluc2VydGlvblBvaW50LT5yZXNldFN0eWxlSW5oZXJpdGFuY2UoKTsKK30KKwog
aW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6aW5pdEZvclN0eWxlUmVzb2x2ZShFbGVtZW50KiBl
LCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIFBzZXVkb0lkIHBzZXVkb0lEKQogewogICAgIG1f
cHNldWRvU3R5bGUgPSBwc2V1ZG9JRDsKQEAgLTk2NSw3ICs5ODcsNyBAQCBpbmxpbmUgdm9pZCBT
dHlsZVJlc29sdmVyOjppbml0Rm9yU3R5bGVSZXNvbHZlKEVsZW1lbnQqIGUsIFJlbmRlclN0eWxl
KiBwYXJlbnRTdAogICAgIGlmIChlKSB7CiAgICAgICAgIE5vZGVSZW5kZXJpbmdDb250ZXh0IGNv
bnRleHQoZSk7CiAgICAgICAgIG1fcGFyZW50Tm9kZSA9IGNvbnRleHQucGFyZW50Tm9kZUZvclJl
bmRlcmluZ0FuZFN0eWxlKCk7Ci0gICAgICAgIG1fcGFyZW50U3R5bGUgPSBjb250ZXh0LnJlc2V0
U3R5bGVJbmhlcml0YW5jZSgpPyAwIDoKKyAgICAgICAgbV9wYXJlbnRTdHlsZSA9IHNob3VsZFJl
c2V0U3R5bGVJbmhlcml0YW5jZShjb250ZXh0KSA/IDAgOgogICAgICAgICAgICAgcGFyZW50U3R5
bGUgPyBwYXJlbnRTdHlsZSA6CiAgICAgICAgICAgICBtX3BhcmVudE5vZGUgPyBtX3BhcmVudE5v
ZGUtPnJlbmRlclN0eWxlKCkgOiAwOwogICAgICAgICBtX2Rpc3RyaWJ1dGVkVG9JbnNlcnRpb25Q
b2ludCA9IGNvbnRleHQuaW5zZXJ0aW9uUG9pbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaWRsCmluZGV4IGM5MjhkNDQ5NDAzMTM4ZWI3
ZDMyNDRhMDdmMmVjMDk1OTBmOGJlYjAuLmRmMDhiMzg2MjlkOTIyZDAwMDM1OWM2YzI0YzdkNDBm
MDdkYzRkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250
ZW50RWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRl
bnRFbGVtZW50LmlkbApAQCAtMzAsNSArMzAsNiBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIFY4
RW5hYmxlZEF0UnVudGltZT1zaGFkb3dET00KICAgICBdIEhUTUxDb250ZW50RWxlbWVudCA6IEhU
TUxFbGVtZW50IHsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgc2VsZWN0
OworICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiByZXNldFN0eWxlSW5oZXJpdGFuY2U7CiAgICAg
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dF
bGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50
LmlkbAppbmRleCA5NGZhY2I3YmVhNDRiZThiNzAzMDU4NTA1YjBlZTc0Njg3ZjRmZTM0Li5jMmM4
ZjFhZGFmNjY4ODZkZmFjYWIzYmNiNDMzMGVkMmVjNzA1NzkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaWRsCkBAIC0zNCw2ICszNCw3IEBA
IG1vZHVsZSBodG1sIHsKICAgICAgICAgQ29uZGl0aW9uYWw9U0hBRE9XX0RPTSwKICAgICAgICAg
VjhFbmFibGVkQXRSdW50aW1lPXNoYWRvd0RPTQogICAgIF0gSFRNTFNoYWRvd0VsZW1lbnQgOiBI
VE1MRWxlbWVudCB7CisgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIHJlc2V0U3R5bGVJbmhlcml0
YW5jZTsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9JbnNlcnRpb25Qb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRp
b25Qb2ludC5jcHAKaW5kZXggNjJmNzFjY2QxNDA5ODBlMzdlYWQ4MWJjMTZlMGU3NmM0YmUxM2Mw
Yi4uN2FlY2FhNTZlOGFhMGFiZDA3YThlMWZjZDI3MGRkYTg4N2RmN2Q2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcApAQCAtMzksNiArMzksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBI
VE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKKyAgICAsIG1fc2hvdWxkUmVzZXRTdHlsZUlu
aGVyaXRhbmNlKGZhbHNlKQogewogfQogCkBAIC0xNTksNCArMTYwLDE4IEBAIHZvaWQgSW5zZXJ0
aW9uUG9pbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogICAg
IEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7CiB9CiAKK2Jvb2wgSW5z
ZXJ0aW9uUG9pbnQ6OnJlc2V0U3R5bGVJbmhlcml0YW5jZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fc2hvdWxkUmVzZXRTdHlsZUluaGVyaXRhbmNlOworfQorCit2b2lkIEluc2VydGlvblBvaW50
OjpzZXRSZXNldFN0eWxlSW5oZXJpdGFuY2UoYm9vbCB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUg
IT0gbV9zaG91bGRSZXNldFN0eWxlSW5oZXJpdGFuY2UpIHsKKyAgICAgICAgbV9zaG91bGRSZXNl
dFN0eWxlSW5oZXJpdGFuY2UgPSB2YWx1ZTsKKyAgICAgICAgaWYgKGF0dGFjaGVkKCkgJiYgaXNB
Y3RpdmUoKSkKKyAgICAgICAgICAgIHNoYWRvd1Jvb3QoKS0+aG9zdCgpLT5zZXROZWVkc1N0eWxl
UmVjYWxjKCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAppbmRleCBiZDQ0NmI4NTlkNDA0ZTI5
YjE3OWE1ZTU2MTllY2U3ZTk5MjljODM5Li4yZWYzNmMxYzViMjJjOGQ3ZjllNjE4ZjYyM2VhZGIy
YTMyMDczZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRp
b25Qb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50
LmgKQEAgLTU1LDYgKzU1LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdFZh
bGlkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBkb2VzU2VsZWN0RnJvbUhvc3RDaGls
ZHJlbigpIGNvbnN0ID0gMDsKIAorICAgIGJvb2wgcmVzZXRTdHlsZUluaGVyaXRhbmNlKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRSZXNldFN0eWxlSW5oZXJpdGFuY2UoYm9vbCk7CisKICAgICB2aXJ0
dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogICAgIHZpcnR1
YWwgYm9vbCBpc0luc2VydGlvblBvaW50KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsg
fQpAQCAtNzcsNiArODAsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgQ29udGVudERp
c3RyaWJ1dGlvbiBtX2Rpc3RyaWJ1dGlvbjsKKyAgICBib29sIG1fc2hvdWxkUmVzZXRTdHlsZUlu
aGVyaXRhbmNlIDogMTsKIH07CiAKIGlubGluZSBib29sIGlzSW5zZXJ0aW9uUG9pbnQoY29uc3Qg
Tm9kZSogbm9kZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA4YWQyMmQ0ZDZiMTM3MDA3MDA5NzczZmM5NzRhZWQ3MmQyZGM2
NjFiLi5mYWI4MDhkYjJiODc1YWUyZDRiMjYxYTg3OTAxZGVmZDRlMWM0MzRhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTItMTAtMDggIFRha2FzaGkgU2FrYW1vdG8gIDx0YXNha0Bnb29nbGUu
Y29tPgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBJbnNlcnRpb24gcG9pbnRzIG5lZWQgcmVzZXRT
dHlsZUluaGVyaXRhbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MzkyMgorCisgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KKwor
ICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9pbnNlcnRpb24tcG9pbnQtcmVzZXRTdHlsZUluaGVy
aXRhbmNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2lu
c2VydGlvbi1wb2ludC1yZXNldFN0eWxlSW5oZXJpdGFuY2UuaHRtbDogQWRkZWQuCisKIDIwMTIt
MTAtMTEgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtDaHJvbWl1bV0gVW5yZXZpZXdlZCBnYXJkZW5pbmcsIHJlYmFzZWxpbmVkLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2luc2VydGlvbi1wb2ludC1yZXNldFN0eWxl
SW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2lu
c2VydGlvbi1wb2ludC1yZXNldFN0eWxlSW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk3YWU4YTFiMzg4MjRmOTM2ZTYzZmI4MzFlYjczZWJiMzA4M2M1NTAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvaW5zZXJ0aW9uLXBvaW50LXJlc2V0
U3R5bGVJbmhlcml0YW5jZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNSBAQAorVGVzdCBjYXNl
OiBubyByZXNldC1zdHlsZS1pbmhlcml0YW5jZS4gY29sb3IgdmFsdWUgc2hvdWxkIGJlIGluaGVy
aXRlZCBmcm9tIHRoZSBzaGFkb3cgaG9zdC4KK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5vLXJlc2V0LXN0eWxlLWluaGVyaXRhbmNlIikuZmly
c3RDaGlsZCkuY29sb3IgaXMgInJnYigyNTUsIDIzOCwgMjM4KSIKK1BBU1Mgd2luZG93LmdldENv
bXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5vLXJlc2V0LXN0eWxlLWluaGVy
aXRhbmNlIikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yIGlzICJyZ2JhKDAsIDAsIDAsIDAp
IgorVGVzdCBjYXNlOiByZXNldC1zdHlsZS1pbmhlcnRpYWNlIGJhc2ljIHRlc3QuIGNvbG9yIHZh
bHVlIHNob3VsZCBiZSBpbml0aWFsIGJlY2F1c2UgaW5zZXJ0aW9uIHBvaW50J3MgcmVzZXRTdHls
ZUluaGVyaXRhbmNlIGlzIHRydWUuCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1zdHlsZS1pbmhlcml0YW5jZSIpLmZpcnN0Q2hpbGQp
LmNvbG9yIGlzICJyZ2IoMCwgMCwgMCkiCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1zdHlsZS1pbmhlcml0YW5jZSIpLmZpcnN0Q2hp
bGQpLmJhY2tncm91bmRDb2xvciBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1Rlc3QgY2FzZTogcmVz
ZXQtc3R5bGUtaW5oZXJ0aWFjZSBjaGFuZ2VzIGR5bmFtaWNhbGx5LiBGaXJzdGx5IGNvbG9yIHZh
bHVlIHNob3VsZCBiZSBpbmhlcml0ZWQuIE5leHQsIGluaXRpYWwuIEF0IGxhc3QsIGluaGVyaXRl
ZC4KK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlc2V0LXN0eWxlLWluaGVyaXRhbmNlLWR5bmFtaWMiKS5maXJzdENoaWxkKS5jb2xvciBpcyAi
cmdiKDI1NSwgMjM4LCAyMzgpIgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UtZHluYW1pYyIpLmZpcnN0
Q2hpbGQpLmJhY2tncm91bmRDb2xvciBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1Mgd2luZG93
LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc2V0LXN0eWxlLWlu
aGVyaXRhbmNlLWR5bmFtaWMiKS5maXJzdENoaWxkKS5jb2xvciBpcyAicmdiKDAsIDAsIDApIgor
UEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
ZXQtc3R5bGUtaW5oZXJpdGFuY2UtZHluYW1pYyIpLmZpcnN0Q2hpbGQpLmJhY2tncm91bmRDb2xv
ciBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc2V0LXN0eWxlLWluaGVyaXRhbmNlLWR5bmFtaWMiKS5m
aXJzdENoaWxkKS5jb2xvciBpcyAicmdiKDI1NSwgMjM4LCAyMzgpIgorUEFTUyB3aW5kb3cuZ2V0
Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzZXQtc3R5bGUtaW5oZXJp
dGFuY2UtZHluYW1pYyIpLmZpcnN0Q2hpbGQpLmJhY2tncm91bmRDb2xvciBpcyAicmdiYSgwLCAw
LCAwLCAwKSIKK1Rlc3QgY2FzZTogdGhlIHBhcmVudCBub2RlIG9mIHRoZSBkaXN0cmlidXRlZCBu
b2RlIGlzIGluIHRoZSBzYW1lIHNoYWRvdyBkb20gc3VidHJlZSBhcyB0aGUgaW5zZXJ0aW9uIHBv
aW50LiBjb2xvciB2YWx1ZSBzaG91bGQgYmUgaW5pdGlhbC4gcmVzZXQtc3R5bGUtaW5oZXJpdGFu
Y2UgZG9lc24ndCBkZXBlbmQgb24gd2hldGhlciBwYXJlbnQgc3R5bGUgbm9kZSBpcyBpbiB0aGUg
c2FtZSB0cmVlc2NvcGUgb3Igbm90LgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzZXQtYnV0LW5vdC1jcm9zcy11cHBlci1ib3VuZGFyeSIp
LmZpcnN0Q2hpbGQpLmNvbG9yIGlzICJyZ2IoMCwgMCwgMCkiCitQQVNTIHdpbmRvdy5nZXRDb21w
dXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1idXQtbm90LWNyb3NzLXVw
cGVyLWJvdW5kYXJ5IikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yIGlzICJyZ2JhKDAsIDAs
IDAsIDApIgorVGVzdCBjYXNlOiByZXNldC1zdHlsZS1pbmhlcml0YW5jZSB3aXRoIG11bHRpcGxl
IHNoYWRvdyByb290cy4gY29sb3IgdmFsdWUgc2hvdWxkIGJlIGluaXRpYWwsIGJlY2F1c2UgcmVz
ZXQtc3R5bGUtaW5oZXJpdGFuY2Ugb2YgdGhlIGluc2VydGlvbiBwb2ludCBpbiB0aGUgeW91bmdl
c3Qgc2hhZG93IHJvb3QgaXMgdHJ1ZS4KK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm11bHRpcGxlLXNoYWRvdy1yb290cyIpLmZpcnN0Q2hpbGQp
LmNvbG9yIGlzICJyZ2IoMCwgMCwgMCkiCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJtdWx0aXBsZS1zaGFkb3ctcm9vdHMiKS5maXJzdENoaWxk
KS5iYWNrZ3JvdW5kQ29sb3IgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitUZXN0IGNhc2U6IG11bHRp
cGxlIGluc2VydGlvbiBwb2ludHMgaW4gdGhlIHNhbWUgc2hhZG93IGRvbSBzdWJ0cmVlLi4gRWFj
aCByZXNldC1zdHlsZS1pbmhlcml0YW5jZSBzaG91bGQgYmUgY2hlY2tlZC4KK1BBU1Mgd2luZG93
LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm11bHRpcGxlLWluc2Vy
dGlvbi1wb2ludHMiKS5maXJzdENoaWxkKS5jb2xvciBpcyAicmdiKDI1NSwgMjM4LCAyMzgpIgor
UEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXVs
dGlwbGUtaW5zZXJ0aW9uLXBvaW50cyIpLmZpcnN0Q2hpbGQpLmJhY2tncm91bmRDb2xvciBpcyAi
cmdiYSgwLCAwLCAwLCAwKSIKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoIm11bHRpcGxlLWluc2VydGlvbi1wb2ludHMiKS5sYXN0Q2hpbGQpLmNv
bG9yIGlzICJyZ2IoMCwgMCwgMCkiCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJtdWx0aXBsZS1pbnNlcnRpb24tcG9pbnRzIikubGFzdENoaWxk
KS5iYWNrZ3JvdW5kQ29sb3IgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitET05FCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvaW5zZXJ0aW9uLXBvaW50LXJlc2V0U3R5bGVJ
bmhlcml0YW5jZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2luc2VydGlvbi1w
b2ludC1yZXNldFN0eWxlSW5oZXJpdGFuY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDRlZjhiMzU2ODE1
NTllODVlNGQ3NWIxMDE3OTBlNjRiNmI1ODMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2luc2VydGlvbi1wb2ludC1yZXNldFN0eWxlSW5oZXJpdGFuY2Uu
aHRtbApAQCAtMCwwICsxLDEyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHN0eWxlPgorZGl2LnJlc2V0VGVzdCB7CisgIGJhY2tncm91bmQtY29sb3I6ICNlZWY7CisgIGNv
bG9yOiAjZmVlOworfQorPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5Zmls
bC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdE5vUmVzZXRTdHlsZUluaGVy
aXRhbmNlKCkgeworICAgIGRlYnVnKCJUZXN0IGNhc2U6IG5vIHJlc2V0LXN0eWxlLWluaGVyaXRh
bmNlLiBjb2xvciB2YWx1ZSBzaG91bGQgYmUgaW5oZXJpdGVkIGZyb20gdGhlIHNoYWRvdyBob3N0
LiIpOworICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm8tcmVzZXQtc3R5
bGUtaW5oZXJpdGFuY2UnKTsKKworICAgIHZhciBzaGFkb3dSb290ID0gbmV3IFdlYktpdFNoYWRv
d1Jvb3QoZGl2KTsKKyAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8Y29udGVudCBpZD0iY29u
dGVudCI+PC9jb250ZW50Pic7CisgICAgCisgICAgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgn
Y29udGVudCcpLnJlc2V0U3R5bGVJbmhlcml0YW5jZSA9IGZhbHNlOworICAgIHNob3VsZEJlKCd3
aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm8tcmVzZXQt
c3R5bGUtaW5oZXJpdGFuY2UiKS5maXJzdENoaWxkKS5jb2xvcicsICcicmdiKDI1NSwgMjM4LCAy
MzgpIicpOworICAgIHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibm8tcmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UiKS5maXJzdENoaWxkKS5i
YWNrZ3JvdW5kQ29sb3InLCAnInJnYmEoMCwgMCwgMCwgMCkiJyk7Cit9CisKK2Z1bmN0aW9uIHRl
c3RSZXNldFN0eWxlSW5oZXJpdGFuY2UoKSB7CisgICAgZGVidWcoIlRlc3QgY2FzZTogcmVzZXQt
c3R5bGUtaW5oZXJ0aWFjZSBiYXNpYyB0ZXN0LiBjb2xvciB2YWx1ZSBzaG91bGQgYmUgaW5pdGlh
bCBiZWNhdXNlIGluc2VydGlvbiBwb2ludCdzIHJlc2V0U3R5bGVJbmhlcml0YW5jZSBpcyB0cnVl
LiIpOworICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzZXQtc3R5bGUt
aW5oZXJpdGFuY2UnKTsKKworICAgIHZhciBzaGFkb3dSb290ID0gbmV3IFdlYktpdFNoYWRvd1Jv
b3QoZGl2KTsKKyAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8Y29udGVudCBpZD0iY29udGVu
dCI+PC9jb250ZW50Pic7CisKKyAgICBzaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCdjb250ZW50
JykucmVzZXRTdHlsZUluaGVyaXRhbmNlID0gdHJ1ZTsKKyAgICBzaG91bGRCZSgnd2luZG93Lmdl
dENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc2V0LXN0eWxlLWluaGVy
aXRhbmNlIikuZmlyc3RDaGlsZCkuY29sb3InLCAnInJnYigwLCAwLCAwKSInKTsKKyAgICBzaG91
bGRCZSgnd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c2V0LXN0eWxlLWluaGVyaXRhbmNlIikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yJywgJyJy
Z2JhKDAsIDAsIDAsIDApIicpOworfQorCitmdW5jdGlvbiB0ZXN0UmVzZXRTdHlsZUluaGVyaXRh
bmNlRHluYW1pYygpIHsKKyAgICBkZWJ1ZygiVGVzdCBjYXNlOiByZXNldC1zdHlsZS1pbmhlcnRp
YWNlIGNoYW5nZXMgZHluYW1pY2FsbHkuIEZpcnN0bHkgY29sb3IgdmFsdWUgc2hvdWxkIGJlIGlu
aGVyaXRlZC4gTmV4dCwgaW5pdGlhbC4gQXQgbGFzdCwgaW5oZXJpdGVkLiIpOworICAgIHZhciBk
aXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UtZHlu
YW1pYycpOworCisgICAgdmFyIHNoYWRvd1Jvb3QgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYp
OworICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxjb250ZW50IGlkPSJjb250ZW50Ij48L2Nv
bnRlbnQ+JzsKKworICAgIHNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnQnKS5yZXNl
dFN0eWxlSW5oZXJpdGFuY2UgPSBmYWxzZTsKKyAgICBzaG91bGRCZSgnd2luZG93LmdldENvbXB1
dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc2V0LXN0eWxlLWluaGVyaXRhbmNl
LWR5bmFtaWMiKS5maXJzdENoaWxkKS5jb2xvcicsICcicmdiKDI1NSwgMjM4LCAyMzgpIicpOwor
ICAgIHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UtZHluYW1pYyIpLmZpcnN0Q2hpbGQpLmJhY2tn
cm91bmRDb2xvcicsICcicmdiYSgwLCAwLCAwLCAwKSInKTsKKworICAgIHNoYWRvd1Jvb3QuZ2V0
RWxlbWVudEJ5SWQoJ2NvbnRlbnQnKS5yZXNldFN0eWxlSW5oZXJpdGFuY2UgPSB0cnVlOworICAg
IHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UtZHluYW1pYyIpLmZpcnN0Q2hpbGQpLmNvbG9yJywg
JyJyZ2IoMCwgMCwgMCkiJyk7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1zdHlsZS1pbmhlcml0YW5jZS1keW5hbWlj
IikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yJywgJyJyZ2JhKDAsIDAsIDAsIDApIicpOwor
CisgICAgc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgnY29udGVudCcpLnJlc2V0U3R5bGVJbmhl
cml0YW5jZSA9IGZhbHNlOworICAgIHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UtZHluYW1pYyIp
LmZpcnN0Q2hpbGQpLmNvbG9yJywgJyJyZ2IoMjU1LCAyMzgsIDIzOCkiJyk7CisgICAgc2hvdWxk
QmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNl
dC1zdHlsZS1pbmhlcml0YW5jZS1keW5hbWljIikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9y
JywgJyJyZ2JhKDAsIDAsIDAsIDApIicpOworfQorCitmdW5jdGlvbiB0ZXN0UmVzZXRTdHlsZUlu
aGVyaXRhbmNlV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeSgpIHsKKyAgICBkZWJ1ZygiVGVz
dCBjYXNlOiB0aGUgcGFyZW50IG5vZGUgb2YgdGhlIGRpc3RyaWJ1dGVkIG5vZGUgaXMgaW4gdGhl
IHNhbWUgc2hhZG93IGRvbSBzdWJ0cmVlIGFzIHRoZSBpbnNlcnRpb24gcG9pbnQuIGNvbG9yIHZh
bHVlIHNob3VsZCBiZSBpbml0aWFsLiByZXNldC1zdHlsZS1pbmhlcml0YW5jZSBkb2Vzbid0IGRl
cGVuZCBvbiB3aGV0aGVyIHBhcmVudCBzdHlsZSBub2RlIGlzIGluIHRoZSBzYW1lIHRyZWVzY29w
ZSBvciBub3QuIik7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXNl
dC1idXQtbm90LWNyb3NzLXVwcGVyLWJvdW5kYXJ5Jyk7CisgICAgdmFyIHNoYWRvd1Jvb3QgPSBu
ZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworCisgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAn
PGRpdiBzdHlsZT0iY29sb3I6Ymx1ZTsgYmFja2dyb3VuZC1jb2xvcjpncmVlbjsiPjxjb250ZW50
IGlkPSJjb250ZW50Ij48L2NvbnRlbnQ+PC9kaXY+JzsKKworICAgIHNoYWRvd1Jvb3QuZ2V0RWxl
bWVudEJ5SWQoJ2NvbnRlbnQnKS5yZXNldFN0eWxlSW5oZXJpdGFuY2UgPSB0cnVlOworICAgIHNo
b3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVzZXQtYnV0LW5vdC1jcm9zcy11cHBlci1ib3VuZGFyeSIpLmZpcnN0Q2hpbGQpLmNvbG9yJywg
JyJyZ2IoMCwgMCwgMCkiJyk7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNldC1idXQtbm90LWNyb3NzLXVwcGVyLWJvdW5k
YXJ5IikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yJywgJyJyZ2JhKDAsIDAsIDAsIDApIicp
OworfQorCitmdW5jdGlvbiB0ZXN0UmVzZXRTdHlsZUluaGVyaXRhbmNlV2l0aE11bHRpcGxlU2hh
ZG93Um9vdHMoKSB7CisgICAgZGVidWcoIlRlc3QgY2FzZTogcmVzZXQtc3R5bGUtaW5oZXJpdGFu
Y2Ugd2l0aCBtdWx0aXBsZSBzaGFkb3cgcm9vdHMuIGNvbG9yIHZhbHVlIHNob3VsZCBiZSBpbml0
aWFsLCBiZWNhdXNlIHJlc2V0LXN0eWxlLWluaGVyaXRhbmNlIG9mIHRoZSBpbnNlcnRpb24gcG9p
bnQgaW4gdGhlIHlvdW5nZXN0IHNoYWRvdyByb290IGlzIHRydWUuIik7CisgICAgdmFyIGRpdiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtdWx0aXBsZS1zaGFkb3ctcm9vdHMnKTsKKyAgICB2
YXIgb2xkZXN0U2hhZG93Um9vdCA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRpdik7CisgICAgb2xk
ZXN0U2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPGNvbnRlbnQgaWQ9ImNvbnRlbnQiPjwvY29udGVu
dD4nOworCisgICAgdmFyIHlvdW5nZXJTaGFkb3dSb290ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qo
ZGl2KTsKKyAgICB5b3VuZ2VyU2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPHNoYWRvdyBpZD0ic2hh
ZG93Ij48L3NoYWRvdz4nOworCisgICAgdmFyIHlvdW5nZXN0U2hhZG93Um9vdCA9IG5ldyBXZWJL
aXRTaGFkb3dSb290KGRpdik7CisgICAgeW91bmdlc3RTaGFkb3dSb290LmlubmVySFRNTCA9ICc8
c2hhZG93IGlkPSJzaGFkb3ciPjwvc2hhZG93Pic7CisKKyAgICBvbGRlc3RTaGFkb3dSb290Lmdl
dEVsZW1lbnRCeUlkKCdjb250ZW50JykucmVzZXRTdHlsZUluaGVyaXRhbmNlID0gZmFsc2U7Cisg
ICAgeW91bmdlclNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoJ3NoYWRvdycpLnJlc2V0U3R5bGVJ
bmhlcml0YW5jZSA9IGZhbHNlOworICAgIHlvdW5nZXN0U2hhZG93Um9vdC5nZXRFbGVtZW50QnlJ
ZCgnc2hhZG93JykucmVzZXRTdHlsZUluaGVyaXRhbmNlID0gdHJ1ZTsKKyAgICBzaG91bGRCZSgn
d2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm11bHRpcGxl
LXNoYWRvdy1yb290cyIpLmZpcnN0Q2hpbGQpLmNvbG9yJywgJyJyZ2IoMCwgMCwgMCkiJyk7Cisg
ICAgc2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJtdWx0aXBsZS1zaGFkb3ctcm9vdHMiKS5maXJzdENoaWxkKS5iYWNrZ3JvdW5kQ29sb3In
LCAnInJnYmEoMCwgMCwgMCwgMCkiJyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RSZXNldFN0eWxlSW5o
ZXJpdGFuY2VXaXRoTXVsdGlwbGVJbnNlcnRpb25Qb2ludHMoKSB7CisgICAgZGVidWcoIlRlc3Qg
Y2FzZTogbXVsdGlwbGUgaW5zZXJ0aW9uIHBvaW50cyBpbiB0aGUgc2FtZSBzaGFkb3cgZG9tIHN1
YnRyZWUuLiBFYWNoIHJlc2V0LXN0eWxlLWluaGVyaXRhbmNlIHNob3VsZCBiZSBjaGVja2VkLiIp
OworICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXVsdGlwbGUtaW5zZXJ0
aW9uLXBvaW50cycpOworICAgIHZhciBvbGRlc3RTaGFkb3dSb290ID0gbmV3IFdlYktpdFNoYWRv
d1Jvb3QoZGl2KTsKKyAgICBvbGRlc3RTaGFkb3dSb290LmlubmVySFRNTCA9ICc8Y29udGVudCBp
ZD0iY29udGVudCI+PC9jb250ZW50Pic7CisKKyAgICB2YXIgeW91bmdlc3RTaGFkb3dSb290ID0g
bmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKKyAgICB5b3VuZ2VzdFNoYWRvd1Jvb3QuaW5uZXJI
VE1MID0gJzxjb250ZW50IHNlbGVjdD0iOmZpcnN0LWNoaWxkIiBpZD0iY29udGVudCI+PC9jb250
ZW50PjxzaGFkb3cgaWQ9InNoYWRvdyI+PC9zaGFkb3c+JzsKKworICAgIHlvdW5nZXN0U2hhZG93
Um9vdC5nZXRFbGVtZW50QnlJZCgnY29udGVudCcpLnJlc2V0U3R5bGVJbmhlcml0YW5jZSA9IGZh
bHNlOworICAgIHlvdW5nZXN0U2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgnc2hhZG93JykucmVz
ZXRTdHlsZUluaGVyaXRhbmNlID0gdHJ1ZTsKKworICAgIHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29t
cHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXVsdGlwbGUtaW5zZXJ0aW9uLXBv
aW50cyIpLmZpcnN0Q2hpbGQpLmNvbG9yJywgJyJyZ2IoMjU1LCAyMzgsIDIzOCkiJyk7CisgICAg
c2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJtdWx0aXBsZS1pbnNlcnRpb24tcG9pbnRzIikuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9y
JywgJyJyZ2JhKDAsIDAsIDAsIDApIicpOworICAgIHNob3VsZEJlKCd3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXVsdGlwbGUtaW5zZXJ0aW9uLXBvaW50
cyIpLmxhc3RDaGlsZCkuY29sb3InLCAnInJnYigwLCAwLCAwKSInKTsKKyAgICBzaG91bGRCZSgn
d2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm11bHRpcGxl
LWluc2VydGlvbi1wb2ludHMiKS5sYXN0Q2hpbGQpLmJhY2tncm91bmRDb2xvcicsICcicmdiYSgw
LCAwLCAwLCAwKSInKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdHMoKSB7CisgICAgdGVzdE5vUmVz
ZXRTdHlsZUluaGVyaXRhbmNlKCk7CisgICAgdGVzdFJlc2V0U3R5bGVJbmhlcml0YW5jZSgpOwor
ICAgIHRlc3RSZXNldFN0eWxlSW5oZXJpdGFuY2VEeW5hbWljKCk7CisgICAgdGVzdFJlc2V0U3R5
bGVJbmhlcml0YW5jZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoKQorICAgIHRlc3RSZXNl
dFN0eWxlSW5oZXJpdGFuY2VXaXRoTXVsdGlwbGVTaGFkb3dSb290cygpOworICAgIHRlc3RSZXNl
dFN0eWxlSW5oZXJpdGFuY2VXaXRoTXVsdGlwbGVJbnNlcnRpb25Qb2ludHMoKTsKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdC1jYXNlcycpLmlubmVySFRNTCA9ICdET05FJzsKK30K
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0cygpIj4KKzxkaXYgaWQ9
InRlc3QtY2FzZXMiPgorICA8ZGl2IGlkPSJuby1yZXNldC1zdHlsZS1pbmhlcml0YW5jZSIgY2xh
c3M9InJlc2V0VGVzdCI+PHNwYW4+Zmlyc3QtY2hpbGQ8L3NwYW4+PC9kaXY+CisgIDxkaXYgaWQ9
InJlc2V0LXN0eWxlLWluaGVyaXRhbmNlIiBjbGFzcz0icmVzZXRUZXN0Ij48c3Bhbj5maXJzdC1j
aGlsZDwvc3Bhbj48L2Rpdj4KKyAgPGRpdiBpZD0icmVzZXQtc3R5bGUtaW5oZXJpdGFuY2UtZHlu
YW1pYyIgY2xhc3M9InJlc2V0VGVzdCI+PHNwYW4+Zmlyc3QtY2hpbGQ8L3NwYW4+PC9kaXY+Cisg
IDxkaXYgaWQ9InJlc2V0LWJ1dC1ub3QtY3Jvc3MtdXBwZXItYm91bmRhcnkiIGNsYXNzPSJyZXNl
dFRlc3QiPjxzcGFuPmZpcnN0LWNoaWxkPC9zcGFuPjwvZGl2PgorICA8ZGl2IGlkPSJtdWx0aXBs
ZS1zaGFkb3ctcm9vdHMiIGNsYXNzPSJyZXNldFRlc3QiPjxzcGFuPmZpcnN0LWNoaWxkPC9zcGFu
PjwvZGl2PgorICA8ZGl2IGlkPSJtdWx0aXBsZS1pbnNlcnRpb24tcG9pbnRzIiBjbGFzcz0icmVz
ZXRUZXN0Ij48c3Bhbj5maXJzdC1jaGlsZDwvc3Bhbj48c3Bhbj5sYXN0LWNoaWxkPC9zcGFuPjwv
ZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>