<?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>47659</bug_id>
          
          <creation_ts>2010-10-14 01:26:59 -0700</creation_ts>
          <short_desc>TextInputController.hasSpellingMarkers() should be owned by LayoutTestController</short_desc>
          <delta_ts>2010-11-01 20:38:05 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>47645</blocked>
    
    <blocked>47649</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>294012</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-10-14 01:26:59 -0700</bug_when>
    <thetext>Currently hasSpellingMarkers() is implemented as a method of textInputController.
But textInputController is only available mac and chromium, 
and hasSpellingMarkers() does not depend on these platforms. 
So it should be located on our universal LayoutTestController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294016</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-14 01:51:45 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; Currently hasSpellingMarkers() is implemented as a method of textInputController.
&gt; But textInputController is only available mac and chromium, 
&gt; and hasSpellingMarkers() does not depend on these platforms. 
&gt; So it should be located on our universal LayoutTestController.

I&apos;m not sure moving hasSpellingMarkers to layoutTestController is what we want.  Can&apos;t we alternatively implement textInputController on other platforms?  Let me cc few gtk/qt folks here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294033</commentid>
    <comment_count>2</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-10-14 03:02:22 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; &gt; But textInputController is only available mac and chromium, 
&gt; &gt; and hasSpellingMarkers() does not depend on these platforms. 
&gt; &gt; So it should be located on our universal LayoutTestController.
&gt; 
&gt; I&apos;m not sure moving hasSpellingMarkers to layoutTestController is what we want.  Can&apos;t we alternatively implement textInputController on other platforms?  Let me cc few gtk/qt folks here.

Hmm. I agree that It would be better to have TextInputController for each platform.
On the other hand, marker is not related to text input. It can worked with directly-inputted text.
Actually, implementation of hasSpellingMarker is in WebCore!
So it would be natural to have it on LTC, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294324</commentid>
    <comment_count>3</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-14 13:38:44 -0700</bug_when>
    <thetext>Would it be possible to split TextInputController into a shared header and cpp file in WebKitTools/DumpRenderTree and have platform specific methods in the subdirectories (like we do for LayoutTestController.h,.cpp and LayoutTestController{Mac,Win,QT,etc})?  It seems like there are multiple methods in TextInputController that could be shared across platforms that use JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294523</commentid>
    <comment_count>4</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-10-14 18:35:39 -0700</bug_when>
    <thetext>&gt; Would it be possible to split TextInputController into a shared header and cpp file in WebKitTools/DumpRenderTree and have platform specific methods in the subdirectories (like we do for LayoutTestController.h,.cpp and LayoutTestController{Mac,Win,QT,etc})?  It seems like there are multiple methods in TextInputController that could be shared across platforms that use JSC.

It&apos;s possible. It&apos;s a kind of rewriting though.
It&apos;s more like as EventSender than LayoutTestController.
And each port has independent implementation for EventSender.
I don&apos;t wan&apos;t to push this kind of fragmentation.

Instead, I hope the portable part of the code to move into WebCore if possible, 
as I trying for LayourTestController. https://bugs.webkit.org/show_bug.cgi?id=42612</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294531</commentid>
    <comment_count>5</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-10-14 19:08:35 -0700</bug_when>
    <thetext>Changed bug summary line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294537</commentid>
    <comment_count>6</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-14 19:30:10 -0700</bug_when>
    <thetext>It&apos;s not clear to me when we decide to put something on LayoutTestController rather than creating a new object like EventSender or TextInputController.

Maybe Eric can fill me in on the history?  Is there a benefit other than namespacing the functions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294584</commentid>
    <comment_count>7</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-10-14 22:30:25 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; It&apos;s not clear to me when we decide to put something on LayoutTestController rather than creating a new object like EventSender or TextInputController.
&gt; 
&gt; Maybe Eric can fill me in on the history?  Is there a benefit other than namespacing the functions?

It looks TextInputController maps underlying NSTextInput protocol
which is implemented by WebHTMLView.
http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSTextInputClient_Protocol/Reference/Reference.html
(NSTextInput protocol is deprecated by similar NSTextInputClient protocol.)
One exception is hasSpellingMarkers(), implemented by Google recently, just ignores such design intent.

These APIs are mainly used on tests under platform/mac/editing/* .
A few tests under LayoutTests/editing/* also uses  a part of TextController API, 
but such use isn&apos;t related to text input framework: getting caret rect, selected range, etc.
(We can even rewrite some of such test not to use textInputController.)

Following 4 APIs are used in LayoutTests/editing/* 
- textInputController.attributedSubstringFromRange
- textInputController.firstRectForCharacterRange
- textInputController.selectedRange
- textInputController.hasSpellingMarker
I thinks these API should be available ports other than mac and chromium
because they just export selection/caret state and not bound to specific IM framework.

Other APIs, used in LayoutTests/platform/mac/, are required for testing IM integration on Cocoa. 
So non-Mac ports don&apos;t need them.
(They should have their own testing API to exercise platform specific IM integration.
Chromium port is an exception because its rendering process isn&apos;t bound any specific IM framework and 
choose Cocoa-like abstraction for it. But that&apos;s  another story.)

So I&apos;d like to:
- Move hasSpellingMarkers to LTC
- investigate Layouttest/editing/ tests to rewrite them to de-TextInputController-ize.
  - Add missing LTC method for it, if required.

Any suggestions are welcome!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294823</commentid>
    <comment_count>8</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-15 11:08:27 -0700</bug_when>
    <thetext>This makes sense to me.  Having TextInputController only used for mac specific tests seems ideal.  Let&apos;s try to move
- textInputController.attributedSubstringFromRange
- textInputController.firstRectForCharacterRange
- textInputController.selectedRange
- textInputController.hasSpellingMarker

to LTC since all ports need these methods for existing tests.  Starting with hasSpellingMarker sounds like a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294833</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-15 11:20:49 -0700</bug_when>
    <thetext>LayoutTestController was the original JS-object exposed in DRT.  All the others came later.

I would like us to continue to move to a more cross-platform model.

I think we should consider long-term the idea of moving all of DRT&apos;s API to being plugins.  If we designed some sensible wrapper around NPAPI, we could easily expose most of DRT&apos;s helper logic via an NPAPI plugin, which could allow us to run layout tests in other configurations besides the DumpRenderTree executable (including chrome rendering processes, WebKit2 test shell, the Safari browser, or even in some future world Firefox!)

Basically the take-away, is that this kind of make-things-cross-platform is great!  Eventually we might even move away from using the JS API to do the object exposing and consider something JS-engine agnostic, like NPAPI or similar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295386</commentid>
    <comment_count>10</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-10-18 00:46:44 -0700</bug_when>
    <thetext>Thanks much for your feedback!

&gt; Basically the take-away, is that this kind of make-things-cross-platform is great!  Eventually we might even move away from using the JS API to do the object exposing and consider something JS-engine agnostic, like NPAPI or similar.
I have tried to move LayoutTestController to WebCore at Bug 42612,
This approach is portable between ports, JS engine agnostic, and possibly available with
non-DRT environment.
With this approach, we can provide to a plugin just to switch the WebCore::LTC on.
I would be happy if we could push forward Bug 42612.

Anyway, I&apos;ll move  TextController APIs to LTC soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295392</commentid>
    <comment_count>11</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-10-18 00:56:04 -0700</bug_when>
    <thetext>Making the master bug on Bug 47803 and narrowing the scope of this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295425</commentid>
    <comment_count>12</comment_count>
      <attachid>71017</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-10-18 03:35:53 -0700</bug_when>
    <thetext>Created attachment 71017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295430</commentid>
    <comment_count>13</comment_count>
      <attachid>71017</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-18 04:04:08 -0700</bug_when>
    <thetext>Comment on attachment 71017
Patch

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

&gt; WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp:801
&gt; +bool LayoutTestController::hasSpellingMarker(int, int)

should add a FIXME comment.

&gt; WebKitTools/DumpRenderTree/win/LayoutTestControllerWin.cpp:1394
&gt; +bool LayoutTestController::hasSpellingMarker(int, int)

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295441</commentid>
    <comment_count>14</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-10-18 04:46:34 -0700</bug_when>
    <thetext>Committed r69952: &lt;http://trac.webkit.org/changeset/69952&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302888</commentid>
    <comment_count>15</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-11-01 13:36:02 -0700</bug_when>
    <thetext>I&apos;m a bit confused about the test output in Chromium: http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;tests=editing%2Fspelling%2Fspelling-textarea.html&amp;useWebKitCanary=true

On windows and linux the first line of output is &quot;PASS &apos;zz&apos; is not marked as misspelled.&quot;  I wonder if in http://trac.webkit.org/browser/trunk/LayoutTests/editing/spelling/spelling-textarea.html line 19 is intended to be testFailed instead of testPassed.  Is this result really a pass or a fail?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303192</commentid>
    <comment_count>16</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-11-01 20:38:05 -0700</bug_when>
    <thetext>&gt; On windows and linux the first line of output is &quot;PASS &apos;zz&apos; is not marked as misspelled.&quot;  I wonder if in http://trac.webkit.org/browser/trunk/LayoutTests/editing/spelling/spelling-textarea.html line 19 is intended to be testFailed instead of testPassed.  Is this result really a pass or a fail?

It should FAIL for windows and linux
because current DRT for window and linux doesn&apos;t support spellcheck.
I agree that the test expectation is confusing and  filed Bug 48818 for it.
Thank you for letting me know.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71017</attachid>
            <date>2010-10-18 03:35:53 -0700</date>
            <delta_ts>2010-10-18 04:04:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47659-20101018193551.patch</filename>
            <type>text/plain</type>
            <size>21961</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzMzA0N2Q1OGIwMjY1OWRjZDlkMDA4ZDVmMWMxM2FlNmE0ZGUzOTIyLi4xOTVmY2Vk
NmZmOTYwOTI4MTgwNjBlNWQ3NjRmYTYzM2I5YzdkNGFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMTAtMTggIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGV4dElucHV0Q29udHJv
bGxlci5oYXNTcGVsbGluZ01hcmtlcnMoKSBzaG91bGQgYmUgb3duZWQgYnkgTGF5b3V0VGVzdENv
bnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ3NjU5CisgICAgICAgIAorICAgICAgICBDaGFuZ2VkIHRoZSByZWNpZXZlciBvZiBoYXNTcGVs
bGluZ01hcmtlcnMgZnJvbQorICAgICAgICB0ZXh0SW5wdXRDb250cm9sbGVyIHRvIGxheW91dFRl
c3RDb250cm9sbGVyLgorCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9kZXNpZ24tbW9kZS1z
cGVsbGNoZWNrLW9mZi5odG1sOgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRl
c3RzL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3ZWVuLWxpbmVzLmpzOgorICAgICAgICAodGVzdFdp
dGhEZWxldGUpOgorICAgICAgICAodGVzdFdpdGhGb3J3YXJkRGVsZXRlKToKKyAgICAgICAgKiBl
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3ZWVuLWxpbmVzLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWNvbnRlbnRlZGl0YWJs
ZS5odG1sOgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdGV4dGFyZWEuaHRt
bDoKKwogMjAxMC0xMC0xOCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAg
ICAgIEFkZCBtb3JlIFNraXBwZWQgbGlzdCBlbnRyaWVzIGJlY2F1c2UgV2ViUCByZXF1aXJlcyBh
biBleHRlcm5hbCBkZWNvZGVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxs
aW5nL2Rlc2lnbi1tb2RlLXNwZWxsY2hlY2stb2ZmLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL2Rlc2lnbi1tb2RlLXNwZWxsY2hlY2stb2ZmLmh0bWwKaW5kZXggMzBjZTU4ZGRh
ZTBjOTY0OWU0OTBmNDJjZjg5NTM5YWZmNjgwYTM1OC4uZTcxMjhlNWVjOGZhYzBkNzRkZGRmZWE2
NDE0OGEzZDAwYTE5YmFiYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9kZXNpZ24tbW9kZS1zcGVsbGNoZWNrLW9mZi5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRp
bmcvc3BlbGxpbmcvZGVzaWduLW1vZGUtc3BlbGxjaGVjay1vZmYuaHRtbApAQCAtMTgsNyArMTgs
NyBAQCBlbHNlIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmV2ZW50
U2VuZGVyKSB7CiAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24n
LCBmdW5jdGlvbigpIHsKICAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT0gZG9j
dW1lbnQuYm9keSkKICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ0ZBSUw6IGFjdGl2ZSBlbGVtZW50IGFmdGVyIGNsaWNrIGlzIG5v
dCBib2R5IGVsZW1lbnQnKSk7Ci0gICAgICAgIGVsc2UgaWYgKHdpbmRvdy50ZXh0SW5wdXRDb250
cm9sbGVyICYmIHRleHRJbnB1dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIgJiYgdGV4dElu
cHV0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigwLCA0KSkKKyAgICAgICAgZWxzZSBpZiAo
bGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoMCwgNCkpCiAgICAgICAgICAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdGQUlM
OiBzcGVsbCBjaGVjayB3YXMgaW52b2tlZCcpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnUEFTUycp
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3Rz
L3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3ZWVuLWxpbmVzLmpzIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGluZXMu
anMKaW5kZXggZDM2NjNkMjMzNDJkMDE3OGExYmJkODEzNWQ2YzdkNmNiMDY4ZGE5MC4uODhhMmJm
ZDA1ZDcxNTRlODBjODE0ZTE4YTE5YTc3MWMzNjhjZjUyMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxpbmctYmFja3NwYWNlLWJldHdl
ZW4tbGluZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVz
dHMvc3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGluZXMuanMKQEAgLTI2LDcgKzI2LDcgQEAg
ZnVuY3Rpb24gdGVzdFdpdGhEZWxldGUoKQogCiAgICAgc2hvdWxkQmUoImZpcnN0TGluZVRleHQo
KSIsICInT0snIik7CiAgICAgc2hvdWxkQmUoInNlbC5hbmNob3JOb2RlLmRhdGEiLCAiJ09LIHp6
IE9LJyIpOwotICAgIHNob3VsZEJlKCJ0ZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFy
a2VyKDMsIDIpIiwgIjEiKTsKKyAgICBzaG91bGRCZVRydWUoImxheW91dFRlc3RDb250cm9sbGVy
Lmhhc1NwZWxsaW5nTWFya2VyKDMsIDIpIik7CiAKICAgICBzZWwubW9kaWZ5KCJtb3ZlIiwgImxl
ZnQiLCAibGluZWJvdW5kYXJ5Iik7CiAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkRlbGV0ZSIs
IGZhbHNlKTsKQEAgLTM0LDcgKzM0LDcgQEAgZnVuY3Rpb24gdGVzdFdpdGhEZWxldGUoKQogCiAg
ICAgc2hvdWxkQmUoInNlbC5hbmNob3JOb2RlLmRhdGEiLCAiJ09LIHp6IE9LJyIpOwogICAgIHNo
b3VsZEJlKCJmaXJzdExpbmVUZXh0KCkiLCAiJ09LT0sgenogT0snIik7Ci0gICAgc2hvdWxkQmUo
InRleHRJbnB1dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoMywgMikiLCAiMSIpOworICAg
IHNob3VsZEJlVHJ1ZSgibGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoMywg
MikiKTsKIH0KIAogZnVuY3Rpb24gdGVzdFdpdGhGb3J3YXJkRGVsZXRlKCkKQEAgLTQ3LDcgKzQ3
LDcgQEAgZnVuY3Rpb24gdGVzdFdpdGhGb3J3YXJkRGVsZXRlKCkKIAogICAgIHNob3VsZEJlKCJm
aXJzdExpbmVUZXh0KCkiLCAiJ09LJyIpOwogICAgIHNob3VsZEJlKCJzZWwuYW5jaG9yTm9kZS5k
YXRhIiwgIidPSyB6eiBPSyciKTsKLSAgICBzaG91bGRCZSgidGV4dElucHV0Q29udHJvbGxlci5o
YXNTcGVsbGluZ01hcmtlcigzLCAyKSIsICIxIik7CisgICAgc2hvdWxkQmVUcnVlKCJsYXlvdXRU
ZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigzLCAyKSIpOwogCiAgICAgc2VsLm1vZGlm
eSgibW92ZSIsICJsZWZ0IiwgImxpbmUiKTsKICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiRm9y
d2FyZERlbGV0ZSIsIGZhbHNlKTsKQEAgLTU1LDcgKzU1LDcgQEAgZnVuY3Rpb24gdGVzdFdpdGhG
b3J3YXJkRGVsZXRlKCkKIAogICAgIHNob3VsZEJlKCJmaXJzdExpbmVUZXh0KCkiLCAiJ09LT0sg
enogT0snIik7CiAgICAgc2hvdWxkQmUoInNlbC5hbmNob3JOb2RlLmRhdGEiLCAiJ09LIHp6IE9L
JyIpOwotICAgIHNob3VsZEJlKCJ0ZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2Vy
KDMsIDIpIiwgIjEiKTsKKyAgICBzaG91bGRCZVRydWUoImxheW91dFRlc3RDb250cm9sbGVyLmhh
c1NwZWxsaW5nTWFya2VyKDMsIDIpIik7CiB9CiAKIHRlc3RXaXRoRGVsZXRlKCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3
ZWVuLWxpbmVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGluZXMtZXhwZWN0ZWQudHh0CmluZGV4IDAzODQxZjMy
MWUwZmU5Yzk5MjQ4MzE5YzBmOTlhMGZiODhkMTczOTIuLjk0MDRhZDQwN2JlYzBhYWI3MjFmM2Yw
NTljMGNlY2Y4ODhkNWJkZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGluZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGlu
ZXMtZXhwZWN0ZWQudHh0CkBAIC01LDE2ICs1LDE2IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
CiAKIFBBU1MgZmlyc3RMaW5lVGV4dCgpIGlzICdPSycKIFBBU1Mgc2VsLmFuY2hvck5vZGUuZGF0
YSBpcyAnT0sgenogT0snCi1QQVNTIHRleHRJbnB1dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJr
ZXIoMywgMikgaXMgMQorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtl
cigzLCAyKSBpcyB0cnVlCiBQQVNTIHNlbC5hbmNob3JOb2RlLmRhdGEgaXMgJ09LIHp6IE9LJwog
UEFTUyBmaXJzdExpbmVUZXh0KCkgaXMgJ09LT0sgenogT0snCi1QQVNTIHRleHRJbnB1dENvbnRy
b2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoMywgMikgaXMgMQorUEFTUyBsYXlvdXRUZXN0Q29udHJv
bGxlci5oYXNTcGVsbGluZ01hcmtlcigzLCAyKSBpcyB0cnVlCiBQQVNTIGZpcnN0TGluZVRleHQo
KSBpcyAnT0snCiBQQVNTIHNlbC5hbmNob3JOb2RlLmRhdGEgaXMgJ09LIHp6IE9LJwotUEFTUyB0
ZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDMsIDIpIGlzIDEKK1BBU1MgbGF5
b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoMywgMikgaXMgdHJ1ZQogUEFTUyBm
aXJzdExpbmVUZXh0KCkgaXMgJ09LT0sgenogT0snCiBQQVNTIHNlbC5hbmNob3JOb2RlLmRhdGEg
aXMgJ09LIHp6IE9LJwotUEFTUyB0ZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2Vy
KDMsIDIpIGlzIDEKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIo
MywgMikgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENP
TVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LWNvbnRlbnRlZGl0YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1jb250ZW50ZWRpdGFibGUuaHRtbAppbmRleCA1MWQyOGQxNzBiMTVlN2U3MTY2ZTM0MWRl
YWU1YzY0OGNjYWU2MDU3Li5kMjM2OWMzZDhkZDI2Nzk5YzJjMjFlN2Y2OTdhMTQwNGIyYzdkN2Jj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWNvbnRl
bnRlZGl0YWJsZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctY29udGVudGVkaXRhYmxlLmh0bWwKQEAgLTI4LDggKzI4LDcgQEAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewogCiAgICAgLy8gVGVzdCB0aGUgYWJvdmUgJ3p6JyBpcyBtYXJr
ZWQgYXMgbWlzc3BlbGxlZC4gV2UgdGVzdCBpdCBvbmx5IG9uIHBsYXRmb3JtcyB0aGF0IGltcGxl
bWVudAogICAgIC8vIHRleHRJbnB1dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoKSB0byBh
dm9pZCBleGNlcHRpb25zLgotICAgIGlmICh0ZXh0SW5wdXRDb250cm9sbGVyICYmIHRleHRJbnB1
dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIpCi0gICAgICAgIGxvZ1Jlc3VsdCh0ZXh0SW5w
dXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDAsIDIpKTsKKyAgICBsb2dSZXN1bHQobGF5
b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoMCwgMikpOwogfQogCiB2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctdGV4dGFyZWEuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctdGV4dGFyZWEuaHRtbAppbmRleCA0MzkyNWI5ZTM0ZDBjZjQ2OGJjM2I4
MTkwOGZlYzczOWZjZTk0MWRhLi5iZTQxNmI1YzY1MGQ1NDlhMzc1ODU0ZDMxZjgwZWNkNmRjYzM5
NTU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXRl
eHRhcmVhLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy10
ZXh0YXJlYS5odG1sCkBAIC0yOCw4ICsyOCw3IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKIAogICAgIC8vIFRlc3QgdGhlIGFib3ZlICd6eicgaXMgbWFya2VkIGFzIG1pc3Nw
ZWxsZWQuIFdlIHRlc3QgaXQgb25seSBvbiBwbGF0Zm9ybXMgdGhhdCBpbXBsZW1lbnQKICAgICAv
LyB0ZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKCkgdG8gYXZvaWQgZXhjZXB0
aW9ucy4KLSAgICBpZiAodGV4dElucHV0Q29udHJvbGxlciAmJiB0ZXh0SW5wdXRDb250cm9sbGVy
Lmhhc1NwZWxsaW5nTWFya2VyKQotICAgICAgICBsb2dSZXN1bHQodGV4dElucHV0Q29udHJvbGxl
ci5oYXNTcGVsbGluZ01hcmtlcigwLCAyKSk7CisgICAgbG9nUmVzdWx0KGxheW91dFRlc3RDb250
cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDAsIDIpKTsKIH0KIAogdmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRU
b29scy9DaGFuZ2VMb2cKaW5kZXggMGM3ZGU5ZDQ2MWE2NDI1NzdkMGY4MmI1MDZiMzlhNjFjYjM4
YzU1Ni4uZWNhNjU4OTBmNmMzMjE3OWViNzMzNjkzYzM5MGIxYmFlZDA1YzVhMyAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQxIEBACisyMDEwLTEwLTE4ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
eHRJbnB1dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXJzKCkgc2hvdWxkIGJlIG93bmVkIGJ5
IExheW91dFRlc3RDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NzY1OQorICAgICAgICAKKyAgICAgICAgTW92ZWQgaGFzU3BlbGxpbmdN
YXJrZXJzKCkgZnJvbSBUZXh0SW5wdXRDb250cm9sbGVyIHRvCisgICAgICAgIExheW91dFRlc3RD
b250cm9sbGVyLiAgQ3VycmVudGx5IHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBhdmFpbGFibGUKKyAg
ICAgICAgb25seSBmb3IgTWFjIGFuZCBmb3IgQ2hyb21pdW0uCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChoYXNTcGVsbGluZ01h
cmtlckNhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5j
dGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVy
KToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpoYXNTcGVsbGluZ01hcmtlcik6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXh0SW5wdXRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFRleHRJbnB1dENvbnRyb2xsZXI6OlRleHRJbnB1dENvbnRyb2xsZXIpOgor
ICAgICAgICAoVGV4dElucHV0Q29udHJvbGxlcjo6bWFrZUF0dHJpYnV0ZWRTdHJpbmcpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1RleHRJbnB1dENvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6Omhhc1NwZWxsaW5nTWFya2VyKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzU3BlbGxpbmdNYXJrZXIpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyLm06CisgICAgICAgICgrW1Rl
eHRJbnB1dENvbnRyb2xsZXIgaXNTZWxlY3RvckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDpdKToKKyAg
ICAgICAgKCtbVGV4dElucHV0Q29udHJvbGxlciB3ZWJTY3JpcHROYW1lRm9yU2VsZWN0b3I6XSk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzU3BlbGxpbmdNYXJrZXIpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6Omhhc1NwZWxsaW5nTWFya2VyKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcDoKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpoYXNTcGVsbGluZ01hcmtlcik6CisKIDIwMTAtMTAtMTQg
IEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBN
YXJ0aW4gUm9iaW5zb24gYW5kIFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCAwYTdjMTFmZTU4ZTdmZTM2
NmE3MGI2Y2QyMjc0YjM3ZGE1ZDI3ODcyLi5iNWNjODc0MjE1YjQwZjU5MDc1NWE0MDQ3ZWJkZDVk
OWY4ZWQ2Mjc5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xNzIzLDYgKzE3MjMsMTkgQEAgc3RhdGljIEpTVmFsdWVS
ZWYgYWJvcnRNb2RhbENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAK
K3N0YXRpYyBKU1ZhbHVlUmVmIGhhc1NwZWxsaW5nTWFya2VyQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBz
aXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50ICE9IDIpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIGludCBmcm9tID0g
SlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgMCk7CisgICAgaW50IGxlbmd0
aCA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMV0sIDApOworICAgIExheW91
dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRy
b2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGJvb2wgb2sgPSBj
b250cm9sbGVyLT5oYXNTcGVsbGluZ01hcmtlcihmcm9tLCBsZW5ndGgpOworCisgICAgcmV0dXJu
IEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCBvayk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVm
IG1hcmtlclRleHRGb3JMaXN0SXRlbUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAg
ICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRl
c3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTE4OTEs
NiArMTkwNCw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0
aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJleGVjQ29tbWFuZCIsIGV4ZWNDb21tYW5kQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAiY291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQiLCBjb3Vu
dGVyVmFsdWVGb3JFbGVtZW50QnlJZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImdyYW50
RGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb24iLCBncmFudERlc2t0b3BOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwgCisgICAgICAgIHsgImhhc1NwZWxsaW5nTWFya2Vy
IiwgaGFzU3BlbGxpbmdNYXJrZXJDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpc0NvbW1h
bmRFbmFibGVkIiwgaXNDb21tYW5kRW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
ImlzUGFnZUJveFZpc2libGUiLCBpc1BhZ2VCb3hWaXNpYmxlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAia2VlcFdlYkhpc3RvcnkiLCBrZWVwV2ViSGlzdG9yeUNhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aAppbmRleCA3NTVhMmIyYjljNjg4NWI3OTZhMDNlNTJkNTAyMGQ4OGI0M2RkOThiLi42ODllMTE0
NTc1MDhkZmZlN2Q4ODdiZGUxNjQ4MjE0MGJhNzViYzFhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTI3OSw2ICsyNzksOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGFib3J0TW9kYWwoKTsKIAorICAgIGJvb2wgaGFzU3BlbGxp
bmdNYXJrZXIoaW50IGZyb20sIGludCBsZW5ndGgpOworCiAgICAgLy8gVGhlIGZvbGxvd2luZyBB
UEkgdGVzdCBmdW5jdGlvbnMgc2hvdWxkIHByb2JhYmx5IGJlIG1vdmVkIHRvIHBsYXRmb3JtLXNw
ZWNpZmljIAogICAgIC8vIHVuaXQgdGVzdHMgb3V0c2lkZSBvZiBEUlQgb25jZSB0aGV5IGV4aXN0
LgogICAgIHZvaWQgYXBpVGVzdE5ld1dpbmRvd0RhdGFMb2FkQmFzZVVSTChKU1N0cmluZ1JlZiB1
dGY4RGF0YSwgSlNTdHJpbmdSZWYgYmFzZVVSTCk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5k
ZXggZDc3NzRlOTk2N2JlODY5YTRkMzUzNjk2ZmMwNGNjM2ZkZjk4MWRkYS4uZDg1ZjBjYTJiY2My
YTg0ZjU3NjViNTZhN2NjNGZiMGQ0OGU3ZGE2ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApA
QCAtMTA4LDYgKzEwOCw3IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJv
bGxlcihUZXN0U2hlbGwqIHNoZWxsKQogICAgIGJpbmRNZXRob2QoImlzQ29tbWFuZEVuYWJsZWQi
LCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmlzQ29tbWFuZEVuYWJsZWQpOwogICAgIGJpbmRNZXRo
b2QoImxheWVyVHJlZUFzVGV4dCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6bGF5ZXJUcmVlQXNU
ZXh0KTsKICAgICBiaW5kTWV0aG9kKCJtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0iLCAmTGF5b3V0VGVz
dENvbnRyb2xsZXI6Om1hcmtlclRleHRGb3JMaXN0SXRlbSk7CisgICAgYmluZE1ldGhvZCgiaGFz
U3BlbGxpbmdNYXJrZXIiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6Omhhc1NwZWxsaW5nTWFya2Vy
KTsKICAgICBiaW5kTWV0aG9kKCJub3RpZnlEb25lIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpu
b3RpZnlEb25lKTsKICAgICBiaW5kTWV0aG9kKCJudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMiLCAm
TGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyk7CiAgICAgYmlu
ZE1ldGhvZCgibnVtYmVyT2ZQYWdlcyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQ
YWdlcyk7CkBAIC0xNTU4LDMgKzE1NTksMTAgQEAgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQq
IExheW91dFRlc3RDb250cm9sbGVyOjpkZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpCiAgICAgICAg
IG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLnNldChXZWJEZXZpY2VPcmllbnRhdGlvbkNs
aWVudE1vY2s6OmNyZWF0ZSgpKTsKICAgICByZXR1cm4gbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2suZ2V0KCk7CiB9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Omhhc1NwZWxsaW5n
TWFya2VyKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1
bHQpCit7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNO
dW1iZXIoKSB8fCAhYXJndW1lbnRzWzFdLmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICByZXN1bHQtPnNldChtX3NoZWxsLT53ZWJWaWV3KCktPm1haW5GcmFtZSgpLT5zZWxlY3Rpb25T
dGFydEhhc1NwZWxsaW5nTWFya2VyRm9yKGFyZ3VtZW50c1swXS50b0ludDMyKCksIGFyZ3VtZW50
c1sxXS50b0ludDMyKCkpKTsKK30KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IGM4MzYxNDllNjk4
Zjg3NTY0NzFkNWMzNzg1MzE5OTBjZTI5ZTk2NTguLjgyZDcyN2NmMjBlNmIyNjNjNDE3NDViZTk3
NTFhMGE5MGFjODAxNjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMzI4LDYgKzMyOCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGxheWVyVHJlZUFzVGV4dChjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3MsIENwcFZhcmlhbnQqIHJlc3VsdCk7CiAKICAgICB2b2lkIG1hcmtlclRleHRGb3JMaXN0
SXRlbShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBoYXNT
cGVsbGluZ01hcmtlcihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKIHB1
YmxpYzoKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIG5vdCBleHBvc2VkIHRvIEph
dmFTY3JpcHQuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXh0SW5wdXRDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwCmluZGV4IDRmMDY4NzRkNDEwZDk3MWVmYmZk
OTVjNGFhZDNjYTEzNjQxMjdmYWIuLmMyNDdjNjNmMzhjMTdjOGY4N2Y0NmIzZmMzNTRiYTViODE5
NmE0NjUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
eHRJbnB1dENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwCkBAIC01OCw3ICs1OCw2IEBAIFRleHRJbnB1
dENvbnRyb2xsZXI6OlRleHRJbnB1dENvbnRyb2xsZXIoVGVzdFNoZWxsKiBzaGVsbCkKICAgICBi
aW5kTWV0aG9kKCJkb0NvbW1hbmQiLCAmVGV4dElucHV0Q29udHJvbGxlcjo6ZG9Db21tYW5kKTsK
ICAgICBiaW5kTWV0aG9kKCJmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSIsICZUZXh0SW5wdXRD
b250cm9sbGVyOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSk7CiAgICAgYmluZE1ldGhvZCgi
aGFzTWFya2VkVGV4dCIsICZUZXh0SW5wdXRDb250cm9sbGVyOjpoYXNNYXJrZWRUZXh0KTsKLSAg
ICBiaW5kTWV0aG9kKCJoYXNTcGVsbGluZ01hcmtlciIsICZUZXh0SW5wdXRDb250cm9sbGVyOjpo
YXNTcGVsbGluZ01hcmtlcik7CiAgICAgYmluZE1ldGhvZCgiaW5zZXJ0VGV4dCIsICZUZXh0SW5w
dXRDb250cm9sbGVyOjppbnNlcnRUZXh0KTsKICAgICBiaW5kTWV0aG9kKCJtYWtlQXR0cmlidXRl
ZFN0cmluZyIsICZUZXh0SW5wdXRDb250cm9sbGVyOjptYWtlQXR0cmlidXRlZFN0cmluZyk7CiAg
ICAgYmluZE1ldGhvZCgibWFya2VkUmFuZ2UiLCAmVGV4dElucHV0Q29udHJvbGxlcjo6bWFya2Vk
UmFuZ2UpOwpAQCAtMjMzLDE0ICsyMzIsMyBAQCB2b2lkIFRleHRJbnB1dENvbnRyb2xsZXI6Om1h
a2VBdHRyaWJ1dGVkU3RyaW5nKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbgogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0KLQot
dm9pZCBUZXh0SW5wdXRDb250cm9sbGVyOjpoYXNTcGVsbGluZ01hcmtlcihjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIGlmIChhcmd1
bWVudHMuc2l6ZSgpIDwgMiB8fCAhYXJndW1lbnRzWzBdLmlzTnVtYmVyKCkgfHwgIWFyZ3VtZW50
c1sxXS5pc051bWJlcigpKQotICAgICAgICByZXR1cm47Ci0gICAgV2ViRnJhbWUqIG1haW5GcmFt
ZSA9IGdldE1haW5GcmFtZSgpOwotICAgIGlmICghbWFpbkZyYW1lKQotICAgICAgICByZXR1cm47
Ci0gICAgLy8gUmV0dXJucyBhcyBhIG51bWJlciBmb3IgYSBjb21wYXRpYmlsaXR5IHJlYXNvbi4K
LSAgICByZXN1bHQtPnNldChtYWluRnJhbWUtPnNlbGVjdGlvblN0YXJ0SGFzU3BlbGxpbmdNYXJr
ZXJGb3IoYXJndW1lbnRzWzBdLnRvSW50MzIoKSwgYXJndW1lbnRzWzFdLnRvSW50MzIoKSkgPyAx
IDogMCk7Ci19CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXh0SW5wdXRDb250cm9sbGVyLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXh0SW5wdXRDb250cm9sbGVyLmgKaW5kZXggZGRhY2VmZTZlZmVjNTIwNTdjYzE1MjJi
Zjg3MjE2YjNiZDIzY2NjNC4uOTg5NmJlNTY2NWMyMmVlOGZmMTRhOTkwOWY0NjkwNjJkNjY5ZTFj
YyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGV4dElu
cHV0Q29udHJvbGxlci5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1RleHRJbnB1dENvbnRyb2xsZXIuaApAQCAtNjEsNyArNjEsNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjaGFyYWN0ZXJJbmRleEZvclBvaW50KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlh
bnQqKTsKICAgICB2b2lkIHZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHQoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgbWFrZUF0dHJpYnV0ZWRTdHJpbmco
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwotICAgIHZvaWQgaGFzU3BlbGxp
bmdNYXJrZXIoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCiBwcml2YXRl
OgogICAgIC8vIFJldHVybnMgdGhlIHRlc3Qgc2hlbGwncyBtYWluIFdlYkZyYW1lLgpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVy
R3RrLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJv
bGxlckd0ay5jcHAKaW5kZXggNTBiNjE3OWY2OTRmOGE1MmY5NDQwNzk4OGIxNDM5NDMyYmI1ZWQ4
NC4uMDA0ZGY0ZDVkYTg2Nzk2NmIwMGY1ZTZiYWJmMGY4OWFhNjI1MDNlMCAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNw
cAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xs
ZXJHdGsuY3BwCkBAIC04MDgsMyArODA4LDkgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0RWRpdGluZ0JlaGF2aW9yKGNvbnN0IGNoYXIqIGVkaXRpbmdCZWhhdmlvcikKIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmFib3J0TW9kYWwoKQogewogfQorCitib29sIExheW91dFRlc3RD
b250cm9sbGVyOjpoYXNTcGVsbGluZ01hcmtlcihpbnQsIGludCkKK3sKKyAgICAvLyBGSVhNRTog
SW1wbGVtZW50IHRoaXMuCisgICAgcmV0dXJuIGZhbHNlOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCmlu
ZGV4IGM2NmM5ZGFiMDMxYmQ2MzhkMDU0ZGRmYTFlYTk0YjAzMzdmYTA2YTAuLmM1ZDVhOTA2OTU5
OWJhNGJjZmMyYWNhMzExYzdhM2E3NjVhYjVlMWQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KQEAgLTk0
NCwzICs5NDQsOCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphYm9ydE1vZGFsKCkKIHsK
ICAgICBbTlNBcHAgYWJvcnRNb2RhbF07CiB9CisKK2Jvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6
Omhhc1NwZWxsaW5nTWFya2VyKGludCBmcm9tLCBpbnQgbGVuZ3RoKQoreworICAgIHJldHVybiBb
bWFpbkZyYW1lIGhhc1NwZWxsaW5nTWFya2VyOmZyb20gbGVuZ3RoOmxlbmd0aF07Cit9CmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxl
ci5tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXIu
bQppbmRleCBhMDQ5YWM1OWQ4Y2YwOTE1NTkyNGNjYTM5ZWI3Nzk2MTU2OTg2NjU0Li5mNzgwNzk0
NDYzNjllNzhjOWY0OGNlMDgxNWVmMWNjYzhkZjBiOTlkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlci5tCisrKyBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyLm0KQEAgLTE3MCw4ICsx
NzAsNyBAQCArIChCT09MKWlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6KFNFTClhU2Vs
ZWN0b3IKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoY2hhcmFjdGVySW5k
ZXhGb3JQb2ludFg6WTopCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHZh
bGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHQpCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0g
QHNlbGVjdG9yKGF0dHJpYnV0ZWRTdHJpbmdXaXRoU3RyaW5nOikKLSAgICAgICAgICAgIHx8IGFT
ZWxlY3RvciA9PSBAc2VsZWN0b3Ioc2V0SW5wdXRNZXRob2RIYW5kbGVyOikKLSAgICAgICAgICAg
IHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoaGFzU3BlbGxpbmdNYXJrZXI6bGVuZ3RoOikpCisg
ICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNldElucHV0TWV0aG9kSGFuZGxl
cjopKQogICAgICAgICByZXR1cm4gTk87CiAgICAgcmV0dXJuIFlFUzsKIH0KQEAgLTE5Niw4ICsx
OTUsNiBAQCArIChOU1N0cmluZyAqKXdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjooU0VMKWFTZWxl
Y3RvcgogICAgICAgICByZXR1cm4gQCJtYWtlQXR0cmlidXRlZFN0cmluZyI7IC8vIGp1c3QgYSBm
YWN0b3J5IG1ldGhvZCwgZG9lc24ndCBjYWxsIGludG8gTlNUZXh0SW5wdXQKICAgICBlbHNlIGlm
IChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNldElucHV0TWV0aG9kSGFuZGxlcjopKQogICAgICAg
ICByZXR1cm4gQCJzZXRJbnB1dE1ldGhvZEhhbmRsZXIiOyAKLSAgICBlbHNlIGlmIChhU2VsZWN0
b3IgPT0gQHNlbGVjdG9yKGhhc1NwZWxsaW5nTWFya2VyOmxlbmd0aDopKQotICAgICAgICByZXR1
cm4gQCJoYXNTcGVsbGluZ01hcmtlciI7CiAKICAgICByZXR1cm4gbmlsOwogfQpAQCAtNDMxLDkg
KzQyOCw0IEBAIC0gKEJPT0wpaW50ZXJwcmV0S2V5RXZlbnRzOihOU0FycmF5ICopZXZlbnRBcnJh
eSB3aXRoU2VuZGVyOihXZWJIVE1MVmlldyAqKXNlbmRlCiAgICAgcmV0dXJuIFlFUzsKIH0KIAot
LSAoQk9PTCloYXNTcGVsbGluZ01hcmtlcjooaW50KWZyb20gbGVuZ3RoOihpbnQpbGVuZ3RoCi17
Ci0gICAgcmV0dXJuIFtbd2ViVmlldyBtYWluRnJhbWVdIGhhc1NwZWxsaW5nTWFya2VyOmZyb20g
bGVuZ3RoOmxlbmd0aF07Ci19Ci0KIEBlbmQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKaW5kZXggYzI2MjQyNTU3
M2YwNzVkZjhiOTNmZmU4ZmY5MTU0MzIxNDg4N2ZkZi4uOTA0MTg5NjFmMTdhOGQ2MmUyMGM1OGM2
NDZjMDBjYTdmOWRjODYwYyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKQEAgLTc5OCw1ICs3OTgsMTAgQEAg
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQWxsVmlzaXRlZExpbmtzKCkKICAgICBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrcyh0cnVlKTsK
IH0KIAorYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzU3BlbGxpbmdNYXJrZXIoaW50LCBp
bnQpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBjb25zdCB1bnNpZ25lZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6bWF4Vmlld1dpZHRoID0gODAwOwogY29uc3QgdW5zaWduZWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6Om1heFZpZXdIZWlnaHQgPSA2MDA7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmggYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKaW5kZXggZWM4OWFj
YmZkMTgwOGY1N2VkNjIwOThjYjczMTAzODFhMGQ2YWUzNi4uMzY4NDk0NmE0MDU1MDU1YWMxNGM0
MWZmMjMxNWU5NzMyMWI1OWRkOSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaApAQCAtMjE5LDYgKzIxOSw3IEBAIHB1
YmxpYyBzbG90czoKIAogICAgIC8vIEVtcHR5IHN0dWIgbWV0aG9kIHRvIGtlZXAgcGFyaXR5IHdp
dGggb2JqZWN0IG1vZGVsIGV4cG9zZWQgYnkgZ2xvYmFsIExheW91dFRlc3RDb250cm9sbGVyLgog
ICAgIHZvaWQgYWJvcnRNb2RhbCgpIHt9CisgICAgYm9vbCBoYXNTcGVsbGluZ01hcmtlcihpbnQg
ZnJvbSwgaW50IGxlbmd0aCk7CiAKICAgICAvKgogICAgICAgICBQb2xpY3kgdmFsdWVzOiAnb24n
LCAnYXV0bycgb3IgJ29mZicuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAppbmRleCA2ZGQ2MDljMjg1MDVm
NjNlMTIxZWI5ZGU4MmUzZDE5MzFiMzBiZWQ4Li5iYzhmMTNmOTMxYmVmNGM3Yjc0NTExYmEyNmZk
N2FiNmNkYzM1Mzc2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4v
TGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKQEAgLTEzOTAsMyArMTM5MCw4IEBA
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEVkaXRpbmdCZWhhdmlvcihjb25zdCBjaGFy
KiBlZGl0aW5nQmVoYXZpb3IpCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphYm9ydE1vZGFs
KCkKIHsKIH0KKworYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzU3BlbGxpbmdNYXJrZXIo
aW50LCBpbnQpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAppbmRleCA1
ZmJhMWNmZDA2Mzg0MTEzMWJjMTIwOGVmN2EwOWM3NDk0NjkxOTIwLi5lZWZjNTg3ODFlMGExZWFi
Y2QwZmQ4MTM4OTMyY2M0M2M0ZDc4NDdmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAorKysgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcApAQCAtNTA1LDYgKzUw
NSwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphYm9ydE1vZGFsKCkKIHsKIH0KIAor
Ym9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzU3BlbGxpbmdNYXJrZXIoaW50LCBpbnQpCit7
CisgICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKwogSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlUHJvcGVydHkoY29u
c3QgY2hhciogcHJvcGVydHlOYW1lLCBpbnQgcGFnZU51bWJlcikgY29uc3QKIHsKICAgICAvLyBG
SVhNRTogSW1wbGVtZW50Cg==
</data>
<flag name="review"
          id="60967"
          type_id="1"
          status="+"
          setter="tkent"
    />
          </attachment>
      

    </bug>

</bugzilla>