<?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>108507</bug_id>
          
          <creation_ts>2013-01-31 11:10:13 -0800</creation_ts>
          <short_desc>printing does not use minimum page zoom factor</short_desc>
          <delta_ts>2015-09-29 01:39:15 -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>WebKit2</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>
          <dependson>149368</dependson>
    
    <dependson>149595</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ojan Vafai">ojan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>bdakin</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>hyatt</cc>
    
    <cc>mitz</cc>
    
    <cc>mrobinson</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>821716</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2013-01-31 11:10:13 -0800</bug_when>
    <thetext>See the tests on https://bugs.webkit.org/show_bug.cgi?id=108382. They pass for mac-wk1 (I tested locally) and fail for mac-wk2. Not sure if it&apos;s just a WebKitTestRunner issue or if it&apos;s also an issue in Safari. Either way, I&apos;ll skip the tests in TestExpectations for now as it looks to be a bug and not intentional.

Looking at WebKit2/WebProcess/WebPage/WebPage.cpp, it definitely looks like the scale factor should be applying since we call m_printContext-&gt;begin(...).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122517</commentid>
    <comment_count>1</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-09-01 03:44:35 -0700</bug_when>
    <thetext>*** Bug 144494 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122518</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-09-01 03:55:23 -0700</bug_when>
    <thetext>This is because WebKitTestRunner always takes the snapshots from the UI process (expect for IOS), so in the case of printing, the layout in the web view is not the expected one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122519</commentid>
    <comment_count>3</comment_count>
      <attachid>260360</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-09-01 04:11:48 -0700</bug_when>
    <thetext>Created attachment 260360
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122520</commentid>
    <comment_count>4</comment_count>
      <attachid>260361</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-09-01 04:21:14 -0700</bug_when>
    <thetext>Created attachment 260361
Try to fix CG build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126318</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-09-16 01:56:53 -0700</bug_when>
    <thetext>Ping reviewers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126361</commentid>
    <comment_count>6</comment_count>
      <attachid>260361</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-09-16 09:34:15 -0700</bug_when>
    <thetext>Comment on attachment 260361
Try to fix CG build

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

Looks OK to me.

&gt; Source/WebCore/page/PrintContext.cpp:320
&gt; +int PrintContext::numberOfPages(Frame* frame, const FloatSize&amp; pageSizeInPixels)

Should take a Frame&amp;. The caller is the one that checks for null.

&gt; Source/WebCore/page/PrintContext.cpp:329
&gt; +void PrintContext::spoolAllPagesWithBoundaries(Frame* frame, GraphicsContext&amp; graphicsContext, const FloatSize&amp; pageSizeInPixels)

Should take a Frame&amp;. The caller is the one that checks for null.

&gt; Source/WebCore/page/PrintContext.cpp:347
&gt; +#if PLATFORM(COCOA)
&gt;      graphicsContext.translate(0, totalHeight);
&gt;      graphicsContext.scale(FloatSize(1, -1));
&gt; +#endif

Seems bizarre that this is here. The platform layer is responsible for abstracting differences like this.

&gt; Source/WebCore/page/PrintContext.cpp:357
&gt; +#if PLATFORM(COCOA)
&gt; +            int boundaryLineY = currentHeight;
&gt; +#else
&gt; +            int boundaryLineY = currentHeight - 1;
&gt; +#endif

Same comment about the platform layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126370</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-09-16 09:52:58 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 260361 [details]
&gt; Try to fix CG build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=260361&amp;action=review
&gt; 
&gt; Looks OK to me.

Thanks for the review.

&gt; &gt; Source/WebCore/page/PrintContext.cpp:320
&gt; &gt; +int PrintContext::numberOfPages(Frame* frame, const FloatSize&amp; pageSizeInPixels)
&gt; 
&gt; Should take a Frame&amp;. The caller is the one that checks for null.

Will change that and the all the callers.

&gt; &gt; Source/WebCore/page/PrintContext.cpp:329
&gt; &gt; +void PrintContext::spoolAllPagesWithBoundaries(Frame* frame, GraphicsContext&amp; graphicsContext, const FloatSize&amp; pageSizeInPixels)
&gt; 
&gt; Should take a Frame&amp;. The caller is the one that checks for null.

Same here.

&gt; &gt; Source/WebCore/page/PrintContext.cpp:347
&gt; &gt; +#if PLATFORM(COCOA)
&gt; &gt;      graphicsContext.translate(0, totalHeight);
&gt; &gt;      graphicsContext.scale(FloatSize(1, -1));
&gt; &gt; +#endif
&gt; 
&gt; Seems bizarre that this is here. The platform layer is responsible for
&gt; abstracting differences like this.

I was surprised as well, I guess this is specific to the printing code in mac. 

&gt; &gt; Source/WebCore/page/PrintContext.cpp:357
&gt; &gt; +#if PLATFORM(COCOA)
&gt; &gt; +            int boundaryLineY = currentHeight;
&gt; &gt; +#else
&gt; &gt; +            int boundaryLineY = currentHeight - 1;
&gt; &gt; +#endif
&gt; 
&gt; Same comment about the platform layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126632</commentid>
    <comment_count>8</comment_count>
      <attachid>261373</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-09-16 23:34:24 -0700</bug_when>
    <thetext>Created attachment 261373
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126640</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-09-17 00:25:14 -0700</bug_when>
    <thetext>Committed r189908: &lt;http://trac.webkit.org/changeset/189908&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127369</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-09-18 21:42:16 -0700</bug_when>
    <thetext>This broke &quot;run-webkit-tests --pixel&quot; behavior, at least on Mac. How it is supposed to work is that --pixel has no effect on tests that call testRunner.dumpAsText() or testRunner.dumpAsText(false). But now, WebKitTestRunner dumps pixels for these, so all text-only tests fail when run in this mode.

This breaks an important testing scenario, so I&apos;ll roll out for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127371</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-18 21:45:08 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 149368</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127375</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-09-18 21:56:44 -0700</bug_when>
    <thetext>If the fix is straightforward, please feel free to re-land without a new review round.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129003</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-09-28 06:33:58 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; This broke &quot;run-webkit-tests --pixel&quot; behavior, at least on Mac. How it is
&gt; supposed to work is that --pixel has no effect on tests that call
&gt; testRunner.dumpAsText() or testRunner.dumpAsText(false). But now,
&gt; WebKitTestRunner dumps pixels for these, so all text-only tests fail when
&gt; run in this mode.
&gt; 
&gt; This breaks an important testing scenario, so I&apos;ll roll out for now.

Oh, I&apos;m sorry about this, I got confused with all the shouldDumpPixels in TestInvocation, TestRunner, InjectedBundle and InjectedBundlePage. Now that I understand it, I&apos;m going to split the patch, first to avoid creating snapshots in the web process that will be ignored, and then the one to fix the printing snapshots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129177</commentid>
    <comment_count>14</comment_count>
      <attachid>262050</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-09-29 00:49:31 -0700</bug_when>
    <thetext>Created attachment 262050
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129186</commentid>
    <comment_count>15</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-09-29 01:39:15 -0700</bug_when>
    <thetext>Committed r190306: &lt;http://trac.webkit.org/changeset/190306&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260360</attachid>
            <date>2015-09-01 04:11:48 -0700</date>
            <delta_ts>2015-09-01 04:21:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-printing-reftests.diff</filename>
            <type>text/plain</type>
            <size>21736</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4Mjc2N2FjLi44OGI3ODRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDkt
MDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAg
IHByaW50aW5nIGRvZXMgbm90IHVzZSBtaW5pbXVtIHBhZ2Ugem9vbSBmYWN0b3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODUwNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuc2tpcCBwcmludGluZyBy
ZWZ0ZXN0cyB0aGF0IHNob3VsZCBwYXNzIG5vdy4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9U
ZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0
aW9uczoKKwogMjAxNS0wOC0zMCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29t
PgogCiAgICAgICAgIEFYOiBXaGVuIG5hdmlnYXRpbmcgdGhlIGVsZW1lbnRzIG9mIGEgc2Nyb2xs
YWJsZSBlbGVtZW50IHdpdGggVm9pY2VPdmVyLCB0aGUgc2Nyb2xsVG9wKCkgcG9zaXRpb24gb2Yg
dGhlIGVsZW1lbnQgZG9lcyBub3QgcGVybWFuZW50bHkgY2hhbmdlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGQ2YzAxMmYuLmUzM2Y5M2QgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0yNDIxLDEwICsyNDIxLDYg
QEAgd2Via2l0Lm9yZy9iLzE0Mzg3MSBzdmcvVzNDLVNWRy0xLjEtU0UvbGlua2luZy11cmktMDEt
Yi5zdmcgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE0MzkyNCBmYXN0L3RleHQvaHlwaGVu
LW1pbi1wcmVmZXJyZWQtd2lkdGguaHRtbCBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMTQ0NDk0
IHByaW50aW5nL3F1aXJrcy1wZXJjZW50YWdlLWhlaWdodC1ib2R5Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xNDQ0OTQgcHJpbnRpbmcvcXVpcmtzLXBlcmNlbnRhZ2Ut
aGVpZ2h0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xNDQ0OTQgcHJp
bnRpbmcvc3RhbmRhcmRzLXBlcmNlbnRhZ2UtaGVpZ2h0cy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi0KIHdlYmtpdC5vcmcvYi8xNDQ1NzUgaHR0cC90ZXN0cy9sb2FkaW5nL3Byb21vdGUtaW1n
LXByZWxvYWQtcHJpb3JpdHkuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTQ0Njcz
IGZhc3QvZm9ybXMvYnV0dG9uLWxpbmUtaGVpZ2h0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1
MDMzY2IwLi43ZDVmNDNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0
RXhwZWN0YXRpb25zCkBAIC0xOTQsMTAgKzE5NCw2IEBAIHdlYmtpdC5vcmcvYi8xMDU5NTQgaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uL3JlbG9hZC1zdWJmcmFtZS1vYmplY3QuaHRtbCBbIEZhaWx1cmUK
IAogd2Via2l0Lm9yZy9iLzEwNTk2MCBwbHVnaW5zL25hdmlnYXRvci1wbHVnaW5zLmh0bWwgWyBG
YWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzEwODUwNyBwcmludGluZy9xdWlya3MtcGVyY2VudGFn
ZS1oZWlnaHQtYm9keS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTA4NTA3IHByaW50aW5n
L3F1aXJrcy1wZXJjZW50YWdlLWhlaWdodC5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTA4
NTA3IHByaW50aW5nL3N0YW5kYXJkcy1wZXJjZW50YWdlLWhlaWdodHMuaHRtbCBbIFNraXAgXQot
CiB3ZWJraXQub3JnL2IvMTA0OTU0IGh0dHAvdGVzdHMvY2FudmFzL2NhbnZhcy1zbG93LWZvbnQt
bG9hZGluZy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgRmxha3kgZXZlcnl3aGVyZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiNDRhMTgwLi4yYzMyYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTUtMDktMDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIHByaW50aW5nIGRvZXMgbm90IHVzZSBtaW5pbXVtIHBhZ2Ugem9vbSBmYWN0
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODUw
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFn
ZS9QcmludENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpiZWdp
bkFuZENvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUpOgorICAgICAgICBIZWxwZXIgZnVuY3Rp
b24gdG8gc2hhcmUgY29tbW9uIGNvZGUgZnJvbSBudW1iZXJPZlBhZ2VzKCkgYW5kCisgICAgICAg
IHNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmllcygpLgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRD
b250ZXh0OjpudW1iZXJPZlBhZ2VzKTogVXNlIGJlZ2luQW5kQ29tcHV0ZVBhZ2VSZWN0c1dpdGhQ
YWdlU2l6ZSgpLgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpzcG9vbEFsbFBhZ2Vz
V2l0aEJvdW5kYXJpZXMpOiBVc2UKKyAgICAgICAgYmVnaW5BbmRDb21wdXRlUGFnZVJlY3RzV2l0
aFBhZ2VTaXplKCkgYW5kIGRvbid0IGZsaXAgdGhlIFkgYXhpcworICAgICAgICBmb3Igbm9uIENv
Y29hIHBsYXRmb3Jtcy4KKyAgICAgICAgKiBwYWdlL1ByaW50Q29udGV4dC5oOgorCiAyMDE1LTA4
LTMwICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgogCiAgICAgICAgIFtD
b29yZGluYXRlZEdyYXBoaWNzXSBSZW1vdmUgdW5uZWNlc3NhcnkgdHdvIHZpcnR1YWwgbWV0aG9k
cyBmcm9tIFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1ByaW50Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4
dC5jcHAKaW5kZXggZjYyZGZhNi4uNjNjZmE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QcmludENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250
ZXh0LmNwcApAQCAtMzAxLDMyICszMDEsMzYgQEAgU3RyaW5nIFByaW50Q29udGV4dDo6cGFnZVNp
emVBbmRNYXJnaW5zSW5QaXhlbHMoRnJhbWUqIGZyYW1lLCBpbnQgcGFnZU51bWJlciwgaW4KICAg
ICAgICAgICAgU3RyaW5nOjpudW1iZXIobWFyZ2luVG9wKSArICcgJyArIFN0cmluZzo6bnVtYmVy
KG1hcmdpblJpZ2h0KSArICcgJyArIFN0cmluZzo6bnVtYmVyKG1hcmdpbkJvdHRvbSkgKyAnICcg
KyBTdHJpbmc6Om51bWJlcihtYXJnaW5MZWZ0KTsKIH0KIAotaW50IFByaW50Q29udGV4dDo6bnVt
YmVyT2ZQYWdlcyhGcmFtZSogZnJhbWUsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVs
cykKK2Jvb2wgUHJpbnRDb250ZXh0OjpiZWdpbkFuZENvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNp
emUoRnJhbWUmIGZyYW1lLCBjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMpCiB7Ci0g
ICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIGlmICghZnJhbWUuZG9j
dW1lbnQoKSB8fCAhZnJhbWUudmlldygpIHx8ICFmcmFtZS5kb2N1bWVudCgpLT5yZW5kZXJWaWV3
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEZsb2F0UmVjdCBwYWdlUmVjdChGbG9h
dFBvaW50KDAsIDApLCBwYWdlU2l6ZUluUGl4ZWxzKTsKLSAgICBQcmludENvbnRleHQgcHJpbnRD
b250ZXh0KGZyYW1lKTsKLSAgICBwcmludENvbnRleHQuYmVnaW4ocGFnZVJlY3Qud2lkdGgoKSwg
cGFnZVJlY3QuaGVpZ2h0KCkpOworICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgp
OworCisgICAgYmVnaW4ocGFnZVNpemVJblBpeGVscy53aWR0aCgpLCBwYWdlU2l6ZUluUGl4ZWxz
LmhlaWdodCgpKTsKICAgICAvLyBBY2NvdW50IGZvciBzaHJpbmstdG8tZml0LgogICAgIEZsb2F0
U2l6ZSBzY2FsZWRQYWdlU2l6ZSA9IHBhZ2VTaXplSW5QaXhlbHM7Ci0gICAgc2NhbGVkUGFnZVNp
emUuc2NhbGUoZnJhbWUtPnZpZXcoKS0+Y29udGVudHNTaXplKCkud2lkdGgoKSAvIHBhZ2VSZWN0
LndpZHRoKCkpOwotICAgIHByaW50Q29udGV4dC5jb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXpl
KHNjYWxlZFBhZ2VTaXplLCBmYWxzZSk7Ci0gICAgcmV0dXJuIHByaW50Q29udGV4dC5wYWdlQ291
bnQoKTsKKyAgICBzY2FsZWRQYWdlU2l6ZS5zY2FsZShmcmFtZS52aWV3KCktPmNvbnRlbnRzU2l6
ZSgpLndpZHRoKCkgLyBwYWdlU2l6ZUluUGl4ZWxzLndpZHRoKCkpOworICAgIGNvbXB1dGVQYWdl
UmVjdHNXaXRoUGFnZVNpemUoc2NhbGVkUGFnZVNpemUsIGZhbHNlKTsKKworICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIFByaW50Q29udGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVz
KEZyYW1lKiBmcmFtZSwgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZs
b2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscykKK2ludCBQcmludENvbnRleHQ6Om51bWJlck9mUGFn
ZXMoRnJhbWUqIGZyYW1lLCBjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMpCiB7Ci0g
ICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKSB8fCAhZnJhbWUtPnZpZXcoKSB8fCAhZnJhbWUtPmRv
Y3VtZW50KCktPnJlbmRlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuOworICAgIFByaW50Q29udGV4
dCBwcmludENvbnRleHQoZnJhbWUpOworICAgIGlmICghcHJpbnRDb250ZXh0LmJlZ2luQW5kQ29t
cHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZSgqZnJhbWUsIHBhZ2VTaXplSW5QaXhlbHMpKQorICAg
ICAgICByZXR1cm4gMDsKIAotICAgIGZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsK
KyAgICByZXR1cm4gcHJpbnRDb250ZXh0LnBhZ2VDb3VudCgpOworfQogCit2b2lkIFByaW50Q29u
dGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKEZyYW1lKiBmcmFtZSwgR3JhcGhpY3ND
b250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVs
cykKK3sKICAgICBQcmludENvbnRleHQgcHJpbnRDb250ZXh0KGZyYW1lKTsKLSAgICBwcmludENv
bnRleHQuYmVnaW4ocGFnZVNpemVJblBpeGVscy53aWR0aCgpLCBwYWdlU2l6ZUluUGl4ZWxzLmhl
aWdodCgpKTsKLQotICAgIGZsb2F0IHBhZ2VIZWlnaHQ7Ci0gICAgcHJpbnRDb250ZXh0LmNvbXB1
dGVQYWdlUmVjdHMoRmxvYXRSZWN0KEZsb2F0UG9pbnQoMCwgMCksIHBhZ2VTaXplSW5QaXhlbHMp
LCAwLCAwLCAxLCBwYWdlSGVpZ2h0KTsKKyAgICBpZiAoIXByaW50Q29udGV4dC5iZWdpbkFuZENv
bXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUoKmZyYW1lLCBwYWdlU2l6ZUluUGl4ZWxzKSkKKyAg
ICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgZmxvYXQgcGFnZVdpZHRoID0gcGFnZVNpemVJblBp
eGVscy53aWR0aCgpOwogICAgIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcGFnZVJlY3RzID0gcHJp
bnRDb250ZXh0LnBhZ2VSZWN0cygpOwpAQCAtMzM3LDE4ICszNDEsMjQgQEAgdm9pZCBQcmludENv
bnRleHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmllcyhGcmFtZSogZnJhbWUsIEdyYXBoaWNz
Q29udGV4dCYgZ3IKICAgICBncmFwaGljc0NvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDAsIDAs
IHBhZ2VXaWR0aCwgdG90YWxIZWlnaHQpKTsKIAogICAgIGdyYXBoaWNzQ29udGV4dC5zYXZlKCk7
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZSgwLCB0
b3RhbEhlaWdodCk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkp
OworI2VuZGlmCiAKICAgICBpbnQgY3VycmVudEhlaWdodCA9IDA7CiAgICAgZm9yIChzaXplX3Qg
cGFnZUluZGV4ID0gMDsgcGFnZUluZGV4IDwgcGFnZVJlY3RzLnNpemUoKTsgcGFnZUluZGV4Kysp
IHsKICAgICAgICAgLy8gRHJhdyBhIGxpbmUgZm9yIGEgcGFnZSBib3VuZGFyeSBpZiB0aGlzIGlz
bid0IHRoZSBmaXJzdCBwYWdlLgogICAgICAgICBpZiAocGFnZUluZGV4ID4gMCkgeworI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgICAgICAgICAgaW50IGJvdW5kYXJ5TGluZVkgPSBjdXJyZW50SGVp
Z2h0OworI2Vsc2UKKyAgICAgICAgICAgIGludCBib3VuZGFyeUxpbmVZID0gY3VycmVudEhlaWdo
dCAtIDE7CisjZW5kaWYKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zYXZlKCk7CiAgICAg
ICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMCwgMjU1KSwg
Q29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0Rmls
bENvbG9yKENvbG9yKDAsIDAsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdMaW5lKEludFBvaW50KDAsIGN1cnJlbnRIZWlnaHQpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KHBhZ2VXaWR0aCwg
Y3VycmVudEhlaWdodCkpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdMaW5lKElu
dFBvaW50KDAsIGJvdW5kYXJ5TGluZVkpLCBJbnRQb2ludChwYWdlV2lkdGgsIGJvdW5kYXJ5TGlu
ZVkpKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmgKaW5kZXggN2M1MWNhNC4uMWIzYzJkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5oCkBAIC04NSw2ICs4NSw3IEBAIHByb3RlY3RlZDoK
IAogcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemVJbnRlcm5h
bChjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMsIGJvb2wgYWxsb3dIb3Jpem9udGFs
VGlsaW5nKTsKKyAgICBib29sIGJlZ2luQW5kQ29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZShG
cmFtZSYsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscyk7CiAKICAgICAvLyBVc2Vk
IHRvIHByZXZlbnQgbWlzdXNlcyBvZiBiZWdpbigpIGFuZCBlbmQoKSAoZS5nLiwgY2FsbCBlbmQg
d2l0aG91dCBiZWdpbikuCiAgICAgYm9vbCBtX2lzUHJpbnRpbmc7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGVl
NWNmMC4uOWM0ZmYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTA5LTAxICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBwcmlu
dGluZyBkb2VzIG5vdCB1c2UgbWluaW11bSBwYWdlIHpvb20gZmFjdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg1MDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQga1dLU25hcHNob3RPcHRpb25z
UHJpbnRpbmcgZmxhZyB0byBpbmRpY2F0ZSB0aGUgc25hcHNob3QKKyAgICAgICAgc2hvdWxkIGJl
IGdlbmVyYXRlZCBpbiBwcmludGluZyBtb2RlLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dL
SW1hZ2UuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmg6CisgICAg
ICAgIChXZWJLaXQ6OnRvU25hcHNob3RPcHRpb25zKToKKyAgICAgICAgKiBTaGFyZWQvSW1hZ2VP
cHRpb25zLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKTogSW4gY2Fz
ZSBvZiBwcmludGluZywKKyAgICAgICAgY2FsY3VsYXRlIHRoZSBiaXRtYXAgaGVpZ2h0IGJhc2Vk
IG9uIHRoZSBudW1iZXIgb2YgcGFnZXMuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBz
aG90QXRTaXplKTogSW4gY2FzZSBvZiBwcmludGluZywgdXNlCisgICAgICAgIFByaW50Q29udGV4
dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKCkgYW5kIHJldHVybi4KKwogMjAxNS0wOC0y
OCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIE1p
Z3JhdGUgR3JhcGhpY3NDb250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0ltYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvV0tJbWFnZS5oCmluZGV4IDhkZDU2Y2MuLjI3YTM0NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0ltYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLSW1hZ2UuaApAQCAtNDUsNiArNDUsNyBAQCBlbnVtIHsK
ICAgICBrV0tTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvblJlY3RhbmdsZSA9IDEgPDwgMywK
ICAgICBrV0tTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCA9IDEgPDwgNCwKICAgICBrV0tT
bmFwc2hvdE9wdGlvbnNGb3JjZVdoaXRlVGV4dCA9IDEgPDwgNSwKKyAgICBrV0tTbmFwc2hvdE9w
dGlvbnNQcmludGluZyA9IDEgPDwgNiwKIH07CiB0eXBlZGVmIHVpbnQzMl90IFdLU25hcHNob3RP
cHRpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFy
ZWRBUElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0
LmgKaW5kZXggMDM1NDZjNi4uNGYxN2UzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS1NoYXJlZEFQSUNhc3QuaApAQCAtOTUxLDYgKzk1MSw4IEBAIGlubGluZSBTbmFwc2hv
dE9wdGlvbnMgdG9TbmFwc2hvdE9wdGlvbnMoV0tTbmFwc2hvdE9wdGlvbnMgd2tTbmFwc2hvdE9w
dGlvbnMpCiAgICAgICAgIHNuYXBzaG90T3B0aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNGb3JjZUJs
YWNrVGV4dDsKICAgICBpZiAod2tTbmFwc2hvdE9wdGlvbnMgJiBrV0tTbmFwc2hvdE9wdGlvbnNG
b3JjZVdoaXRlVGV4dCkKICAgICAgICAgc25hcHNob3RPcHRpb25zIHw9IFNuYXBzaG90T3B0aW9u
c0ZvcmNlV2hpdGVUZXh0OworICAgIGlmICh3a1NuYXBzaG90T3B0aW9ucyAmIGtXS1NuYXBzaG90
T3B0aW9uc1ByaW50aW5nKQorICAgICAgICBzbmFwc2hvdE9wdGlvbnMgfD0gU25hcHNob3RPcHRp
b25zUHJpbnRpbmc7CiAKICAgICByZXR1cm4gc25hcHNob3RPcHRpb25zOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0ltYWdlT3B0aW9ucy5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0ltYWdlT3B0aW9ucy5oCmluZGV4IDk5YmE3OWYuLjMxMmNhNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbWFnZU9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvSW1hZ2VPcHRpb25zLmgKQEAgLTQwLDYgKzQwLDcgQEAgZW51bSB7CiAgICAgU25h
cHNob3RPcHRpb25zRXhjbHVkZURldmljZVNjYWxlRmFjdG9yID0gMSA8PCA1LAogICAgIFNuYXBz
aG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0ID0gMSA8PCA2LAogICAgIFNuYXBzaG90T3B0aW9uc0Zv
cmNlV2hpdGVUZXh0ID0gMSA8PCA3LAorICAgIFNuYXBzaG90T3B0aW9uc1ByaW50aW5nID0gMSA8
PCA4LAogfTsKIHR5cGVkZWYgdWludDMyX3QgU25hcHNob3RPcHRpb25zOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYzU2YmJiYi4uZTQ1
YjQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMTcxMywxMCArMTcxMywxOCBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpz
Y2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKGNvbnN0IEludFJlY3QmIHJlY3QsIGRvdQogewogICAg
IEludFJlY3Qgc25hcHNob3RSZWN0ID0gcmVjdDsKICAgICBJbnRTaXplIGJpdG1hcFNpemUgPSBz
bmFwc2hvdFJlY3Quc2l6ZSgpOwotICAgIGRvdWJsZSBzY2FsZUZhY3RvciA9IGFkZGl0aW9uYWxT
Y2FsZUZhY3RvcjsKLSAgICBpZiAoIShvcHRpb25zICYgU25hcHNob3RPcHRpb25zRXhjbHVkZURl
dmljZVNjYWxlRmFjdG9yKSkKLSAgICAgICAgc2NhbGVGYWN0b3IgKj0gY29yZVBhZ2UoKS0+ZGV2
aWNlU2NhbGVGYWN0b3IoKTsKLSAgICBiaXRtYXBTaXplLnNjYWxlKHNjYWxlRmFjdG9yKTsKKyAg
ICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc1ByaW50aW5nKSB7CisgICAgICAgIEFTU0VS
VChhZGRpdGlvbmFsU2NhbGVGYWN0b3IgPT0gMSk7CisgICAgICAgIEZyYW1lKiBjb3JlRnJhbWUg
PSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCk7CisgICAgICAgIGlmICghY29yZUZyYW1lKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGJpdG1hcFNpemUuc2V0SGVpZ2h0KFBy
aW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhjb3JlRnJhbWUsIGJpdG1hcFNpemUpICogKGJpdG1h
cFNpemUuaGVpZ2h0KCkgKyAxKSAtIDEpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRvdWJsZSBz
Y2FsZUZhY3RvciA9IGFkZGl0aW9uYWxTY2FsZUZhY3RvcjsKKyAgICAgICAgaWYgKCEob3B0aW9u
cyAmIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVEZXZpY2VTY2FsZUZhY3RvcikpCisgICAgICAgICAg
ICBzY2FsZUZhY3RvciAqPSBjb3JlUGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgICAg
ICBiaXRtYXBTaXplLnNjYWxlKHNjYWxlRmFjdG9yKTsKKyAgICB9CiAKICAgICByZXR1cm4gc25h
cHNob3RBdFNpemUocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucyk7CiB9CkBAIC0xNzQyLDYgKzE3
NTAsMTEgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RBdFNpemUoY29u
c3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYKIAogICAgIGF1dG8gZ3JhcGhpY3NDb250
ZXh0ID0gc25hcHNob3QtPmJpdG1hcCgpLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAorICAg
IGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zUHJpbnRpbmcpIHsKKyAgICAgICAgUHJpbnRD
b250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJpZXMoY29yZUZyYW1lLCAqZ3JhcGhpY3ND
b250ZXh0LCBzbmFwc2hvdFJlY3Quc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIHNuYXBzaG90LnJl
bGVhc2UoKTsKKyAgICB9CisKICAgICBDb2xvciBkb2N1bWVudEJhY2tncm91bmRDb2xvciA9IGZy
YW1lVmlldy0+ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKTsKICAgICBDb2xvciBiYWNrZ3JvdW5k
Q29sb3IgPSAoY29yZUZyYW1lLT5zZXR0aW5ncygpLmJhY2tncm91bmRTaG91bGRFeHRlbmRCZXlv
bmRQYWdlKCkgJiYgZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKSA/IGRvY3VtZW50
QmFja2dyb3VuZENvbG9yIDogZnJhbWVWaWV3LT5iYXNlQmFja2dyb3VuZENvbG9yKCk7CiAgICAg
Z3JhcGhpY3NDb250ZXh0LT5maWxsUmVjdChJbnRSZWN0KEludFBvaW50KCksIGJpdG1hcFNpemUp
LCBiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGExY2VhMDUuLmM2NDY4YmQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzOSBAQAorMjAxNS0wOS0wMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgcHJpbnRpbmcgZG9lcyBub3QgdXNlIG1pbmltdW0gcGFnZSB6b29t
IGZhY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA4NTA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2ViS2l0VGVzdFJ1bm5lciBhbHdheXMgdGFrZXMgdGhlIHNuYXBzaG90cyBmcm9tIHRoZSBVSSBw
cm9jZXNzCisgICAgICAgIChleHBlY3QgZm9yIElPUyksIHNvIGluIHRoZSBjYXNlIG9mIHByaW50
aW5nLCB0aGUgbGF5b3V0IGluIHRoZQorICAgICAgICB3ZWIgdmlldyBpcyBub3QgdGhlIGV4cGVj
dGVkIG9uZS4gV2hlbiBwcmludGluZywgd2UgbmVlZCB0byB0YWtlCisgICAgICAgIHRoZSBzbmFw
c2hvdCBpbiB0aGUgd2ViIHByb2Nlc3MgYW5kIGVuc3VyZSBpdCdzIHJlbmRlcmVkIHdpdGggYQor
ICAgICAgICBQcmludENvbnRleHQuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVk
QnVuZGxlUGFnZTo6ZHVtcCk6IFdoZW4gZHVtcGluZyBwaXhlbHMsIHBhc3MKKyAgICAgICAga1dL
U25hcHNob3RPcHRpb25zUHJpbnRpbmcgb3B0aW9uIHRvCisgICAgICAgIFdLQnVuZGxlUGFnZUNy
ZWF0ZVNuYXBzaG90V2l0aE9wdGlvbnMoKSB3aGVuIHByaW50aW5nLiBXaGVuIG5vdAorICAgICAg
ICBwcmludGluZywgZG9uJ3QgZXZlbiBjcmVhdGUgdGhlIHNuYXBzaG90LCBzaW5jZSBpdCB3aWxs
IGJlIGlnbm9yZWQKKyAgICAgICAgYnkgdGhlIFVJIHByb2Nlc3MgdGhhdCBhbHdheXMgY3JlYXRl
cyBpdHMgb3duIGZyb20gdGhlIFdlYlZpZXcgKGV4cGVjdCBmb3IgSU9TIHBsYXRmb3JtKQorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RS
OjpUZXN0SW52b2NhdGlvbjo6ZHVtcFJlc3VsdHMpOiBVc2UgYWx3YXlzIHRoZSBzbmFwc2hvdCBp
bWFnZQorICAgICAgICByZWNlaXZlZCBmcm9tIHRoZSB3ZWIgcHJvY2VzcyBpZiBhbnkgd2hlbiBj
b21wYXJpbmcgcGl4ZWwKKyAgICAgICAgcmVzdWx0cy4gTm93IHdlIG9ubHkgcmVjZWl2ZSBhIHNu
YXBzaG90IGZyb20gdGhlIHdlYiBwcm9jZXNzIGluCisgICAgICAgIGNhc2Ugb2YgcHJpbnRpbmcs
IG9yIHdoZW4gcGxhdGZvcm0gaXMgSU9TLiBPdGhlcndoaXNlLCBnZW5lcmF0ZQorICAgICAgICB0
aGUgc25hcHNob3QgZnJvbSB0aGUgV2ViVmlldyBhcyB1c3VhbC4KKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6IEFkZCBTbmFwc2hvdFJlc3VsdFR5cGUgZW51bQor
ICAgICAgICBwYXJhbWV0ZXIgdG8gZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQsIHNp
bmNlIHRoZSBzbmFwc2hvdAorICAgICAgICBpcyBjcmVhdGVkIGJ5IHRoZSBjYWxsZXIgbm93LCBi
dXQgdGhlIENHIGltcGxlbWVudGF0aW9uIG5lZWRzIHRvCisgICAgICAgIGtub3cgaWYgaXQncyBh
IFdlYiBvciBVSSBwcm9jZXNzIHNuYXBzaG90LgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
Y2Fpcm8vVGVzdEludm9jYXRpb25DYWlyby5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0
aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZCk6IENyZWF0ZSBhCisgICAgICAg
IGNhaXJvIHN1cmZhY2UgZm9yIHRoZSBnaXZlbiBpbWFnZS4KKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2Nh
dGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQpOiBDcmVhdGUgYQorICAgICAg
ICBDR0NvbnRleHQgZm9yIHRoZSBnaXZlbiBpbWFnZS4KKwogMjAxNS0wOC0yOSAgQ2hyaXMgRmxl
aXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBXaGVuIG5hdmlnYXRp
bmcgdGhlIGVsZW1lbnRzIG9mIGEgc2Nyb2xsYWJsZSBlbGVtZW50IHdpdGggVm9pY2VPdmVyLCB0
aGUgc2Nyb2xsVG9wKCkgcG9zaXRpb24gb2YgdGhlIGVsZW1lbnQgZG9lcyBub3QgcGVybWFuZW50
bHkgY2hhbmdlCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKaW5kZXggY2IyMmQ2ZC4uYWZmMmE5ZCAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAtODg5LDEyICs4ODksMjYgQEAgdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2U6OmR1bXAoKQogICAgICAgICBpbmplY3RlZEJ1bmRsZS5kdW1wQmFja0Zv
cndhcmRMaXN0c0ZvckFsbFBhZ2VzKHN0cmluZ0J1aWxkZXIpOwogCiAgICAgaWYgKGluamVjdGVk
QnVuZGxlLnNob3VsZER1bXBQaXhlbHMoKSAmJiBpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCkt
PnNob3VsZER1bXBQaXhlbHMoKSkgewotICAgICAgICBXS1NuYXBzaG90T3B0aW9ucyBvcHRpb25z
ID0ga1dLU25hcHNob3RPcHRpb25zU2hhcmVhYmxlIHwga1dLU25hcHNob3RPcHRpb25zSW5WaWV3
Q29vcmRpbmF0ZXM7Ci0gICAgICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNo
b3VsZER1bXBTZWxlY3Rpb25SZWN0KCkpCi0gICAgICAgICAgICBvcHRpb25zIHw9IGtXS1NuYXBz
aG90T3B0aW9uc1BhaW50U2VsZWN0aW9uUmVjdGFuZ2xlOworICAgICAgICBXS1NuYXBzaG90T3B0
aW9ucyBvcHRpb25zID0ga1dLU25hcHNob3RPcHRpb25zU2hhcmVhYmxlOworICAgICAgICBXS1Jl
Y3Qgc25hcHNob3RSZWN0ID0gV0tCdW5kbGVGcmFtZUdldFZpc2libGVDb250ZW50Qm91bmRzKFdL
QnVuZGxlUGFnZUdldE1haW5GcmFtZShtX3BhZ2UpKTsKKyAgICAgICAgYm9vbCBzaG91bGRDcmVh
dGVTbmFwc2hvdCA9IGZhbHNlOworICAgICAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5l
cigpLT5pc1ByaW50aW5nKCkpIHsKKyAgICAgICAgICAgIHNob3VsZENyZWF0ZVNuYXBzaG90ID0g
dHJ1ZTsKKyAgICAgICAgICAgIG9wdGlvbnMgfD0ga1dLU25hcHNob3RPcHRpb25zUHJpbnRpbmc7
CisgICAgICAgIH0gZWxzZSB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICAgICAgLy8gT25s
eSBJT1MgbmVlZHMgdG8gZ2VuZXJhdGUgdGhlIHNuYXBzaG90IGluIHRoZSB3ZWIgcHJvY2Vzcywg
YWxsIG90aGVyIHBvcnRzIGdlbmVyYXRlCisgICAgICAgICAgICAvLyBhIHNuYXBzaG90IGZyb20g
dGhlIHdlYiB2aWV3IGNvbnRlbnRzIGluIHRoZSBVSSBwcm9jZXNzLgorICAgICAgICAgICAgc2hv
dWxkQ3JlYXRlU25hcHNob3QgPSB0cnVlOworICAgICAgICAgICAgb3B0aW9ucyB8PSBrV0tTbmFw
c2hvdE9wdGlvbnNJblZpZXdDb29yZGluYXRlczsKKyAgICAgICAgICAgIGlmIChpbmplY3RlZEJ1
bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBTZWxlY3Rpb25SZWN0KCkpCisgICAgICAgICAg
ICAgICAgb3B0aW9ucyB8PSBrV0tTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvblJlY3Rhbmds
ZTsKKyNlbmRpZgorICAgICAgICB9CiAKLSAgICAgICAgaW5qZWN0ZWRCdW5kbGUuc2V0UGl4ZWxS
ZXN1bHQoYWRvcHRXSyhXS0J1bmRsZVBhZ2VDcmVhdGVTbmFwc2hvdFdpdGhPcHRpb25zKG1fcGFn
ZSwgV0tCdW5kbGVGcmFtZUdldFZpc2libGVDb250ZW50Qm91bmRzKFdLQnVuZGxlUGFnZUdldE1h
aW5GcmFtZShtX3BhZ2UpKSwgb3B0aW9ucykpLmdldCgpKTsKLSAgICAgICAgaWYgKFdLQnVuZGxl
UGFnZUlzVHJhY2tpbmdSZXBhaW50cyhtX3BhZ2UpKQorICAgICAgICBpZiAoc2hvdWxkQ3JlYXRl
U25hcHNob3QpCisgICAgICAgICAgICBpbmplY3RlZEJ1bmRsZS5zZXRQaXhlbFJlc3VsdChhZG9w
dFdLKFdLQnVuZGxlUGFnZUNyZWF0ZVNuYXBzaG90V2l0aE9wdGlvbnMobV9wYWdlLCBzbmFwc2hv
dFJlY3QsIG9wdGlvbnMpKS5nZXQoKSk7CisgICAgICAgIGlmIChXS0J1bmRsZVBhZ2VJc1RyYWNr
aW5nUmVwYWludHMobV9wYWdlKSAmJiAhaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5pc1By
aW50aW5nKCkpCiAgICAgICAgICAgICBpbmplY3RlZEJ1bmRsZS5zZXRSZXBhaW50UmVjdHMoYWRv
cHRXSyhXS0J1bmRsZVBhZ2VDb3B5VHJhY2tlZFJlcGFpbnRSZWN0cyhtX3BhZ2UpKS5nZXQoKSk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4
IDA5MTkxMWUuLjAyOWVhNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwCkBAIC0yNjcsMTYgKzI2NywyMiBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUmVz
dWx0cygpCiAgICAgZWxzZQogICAgICAgICBkdW1wQXVkaW8obV9hdWRpb1Jlc3VsdC5nZXQoKSk7
CiAKLSAgICBpZiAobV9kdW1wUGl4ZWxzICYmIG1fcGl4ZWxSZXN1bHQpIHsKLSAgICAgICAgbV9n
b3RSZXBhaW50ID0gZmFsc2U7Ci0gICAgICAgIFdLUGFnZUZvcmNlUmVwYWludChUZXN0Q29udHJv
bGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCB0aGlzLCBUZXN0SW52b2Nh
dGlvbjo6Zm9yY2VSZXBhaW50RG9uZUNhbGxiYWNrKTsKLSAgICAgICAgVGVzdENvbnRyb2xsZXI6
OnNpbmdsZXRvbigpLnJ1blVudGlsKG1fZ290UmVwYWludCwgVGVzdENvbnRyb2xsZXI6OnNob3J0
VGltZW91dCk7Ci0gICAgICAgIGlmICghbV9nb3RSZXBhaW50KSB7Ci0gICAgICAgICAgICBtX2Vy
cm9yTWVzc2FnZSA9ICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgcHJlLXBpeGVsIGR1bXAgcmVwYWlu
dFxuIjsKLSAgICAgICAgICAgIG1fd2ViUHJvY2Vzc0lzVW5yZXNwb25zaXZlID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9kdW1wUGl4ZWxzKSB7CisgICAgICAgIGlmICht
X3BpeGVsUmVzdWx0KQorICAgICAgICAgICAgZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0
ZWQobV9waXhlbFJlc3VsdC5nZXQoKSwgbV9yZXBhaW50UmVjdHMuZ2V0KCksIFRlc3RJbnZvY2F0
aW9uOjpTbmFwc2hvdFJlc3VsdFR5cGU6OldlYkNvbnRlbnRzKTsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBtX2dvdFJlcGFpbnQgPSBmYWxzZTsKKyAgICAgICAgICAgIFdLUGFnZUZvcmNl
UmVwYWludChUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgp
LCB0aGlzLCBUZXN0SW52b2NhdGlvbjo6Zm9yY2VSZXBhaW50RG9uZUNhbGxiYWNrKTsKKyAgICAg
ICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5ydW5VbnRpbChtX2dvdFJlcGFpbnQs
IFRlc3RDb250cm9sbGVyOjpzaG9ydFRpbWVvdXQpOworICAgICAgICAgICAgaWYgKCFtX2dvdFJl
cGFpbnQpIHsKKyAgICAgICAgICAgICAgICBtX2Vycm9yTWVzc2FnZSA9ICJUaW1lZCBvdXQgd2Fp
dGluZyBmb3IgcHJlLXBpeGVsIGR1bXAgcmVwYWludFxuIjsKKyAgICAgICAgICAgICAgICBtX3dl
YlByb2Nlc3NJc1VucmVzcG9uc2l2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tJbWFnZVJlZj4gd2luZG93
U25hcHNob3QgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+d2lu
ZG93U25hcHNob3RJbWFnZSgpOworICAgICAgICAgICAgQVNTRVJUKHdpbmRvd1NuYXBzaG90KTsK
KyAgICAgICAgICAgIGR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKHdpbmRvd1NuYXBz
aG90LmdldCgpLCBtX3JlcGFpbnRSZWN0cy5nZXQoKSwgVGVzdEludm9jYXRpb246OlNuYXBzaG90
UmVzdWx0VHlwZTo6V2ViVmlldyk7CiAgICAgICAgIH0KLSAgICAgICAgZHVtcFBpeGVsc0FuZENv
bXBhcmVXaXRoRXhwZWN0ZWQobV9waXhlbFJlc3VsdC5nZXQoKSwgbV9yZXBhaW50UmVjdHMuZ2V0
KCkpOwogICAgIH0KIAogICAgIGZwdXRzKCIjRU9GXG4iLCBzdGRvdXQpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IGZmNzYwZTcuLmM1MzRmMTggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTU3LDcgKzU3LDggQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICB2b2lkIGR1bXBSZXN1bHRzKCk7CiAgICAgc3RhdGljIHZvaWQgZHVt
cChjb25zdCBjaGFyKiB0ZXh0VG9TdGRvdXQsIGNvbnN0IGNoYXIqIHRleHRUb1N0ZGVyciA9IDAs
IGJvb2wgc2VlbkVycm9yID0gZmFsc2UpOwotICAgIHZvaWQgZHVtcFBpeGVsc0FuZENvbXBhcmVX
aXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiwgV0tBcnJheVJlZiByZXBhaW50UmVjdHMpOworICAgIGVu
dW0gY2xhc3MgU25hcHNob3RSZXN1bHRUeXBlIHsgV2ViVmlldywgV2ViQ29udGVudHMgfTsKKyAg
ICB2b2lkIGR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYsIFdLQXJy
YXlSZWYgcmVwYWludFJlY3RzLCBTbmFwc2hvdFJlc3VsdFR5cGUpOwogICAgIHZvaWQgZHVtcEF1
ZGlvKFdLRGF0YVJlZik7CiAgICAgYm9vbCBjb21wYXJlQWN0dWFsSGFzaFRvRXhwZWN0ZWRBbmRE
dW1wUmVzdWx0cyhjb25zdCBjaGFyWzMzXSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvY2Fpcm8vVGVzdEludm9jYXRpb25DYWlyby5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2NhaXJvL1Rlc3RJbnZvY2F0aW9uQ2Fpcm8uY3BwCmluZGV4IDRmYWZiMTguLjM3NmYz
MTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2Fpcm8vVGVzdEludm9jYXRp
b25DYWlyby5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2Nh
dGlvbkNhaXJvLmNwcApAQCAtMTA2LDkgKzEwNiw5IEBAIHN0YXRpYyB2b2lkIHBhaW50UmVwYWlu
dFJlY3RPdmVybGF5KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgV0tBcnJheVJlZiByZXBhaW50
CiAgICAgY2Fpcm9fZGVzdHJveShjb250ZXh0KTsKIH0KIAotdm9pZCBUZXN0SW52b2NhdGlvbjo6
ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiwgV0tBcnJheVJlZiBy
ZXBhaW50UmVjdHMpCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdp
dGhFeHBlY3RlZChXS0ltYWdlUmVmIGltYWdlLCBXS0FycmF5UmVmIHJlcGFpbnRSZWN0cywgU25h
cHNob3RSZXN1bHRUeXBlKQogewotICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IFdLSW1h
Z2VDcmVhdGVDYWlyb1N1cmZhY2UoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJW
aWV3KCktPndpbmRvd1NuYXBzaG90SW1hZ2UoKS5nZXQoKSk7CisgICAgY2Fpcm9fc3VyZmFjZV90
KiBzdXJmYWNlID0gV0tJbWFnZUNyZWF0ZUNhaXJvU3VyZmFjZShpbWFnZSk7CiAKICAgICBpZiAo
cmVwYWludFJlY3RzKQogICAgICAgICBwYWludFJlcGFpbnRSZWN0T3ZlcmxheShzdXJmYWNlLCBy
ZXBhaW50UmVjdHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0
SW52b2NhdGlvbkNHLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRp
b25DRy5jcHAKaW5kZXggZWM4MzkyYS4uYzk2ZTc4OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwCkBAIC0xNTQsMTYgKzE1NCw5IEBAIHN0YXRp
YyB2b2lkIHBhaW50UmVwYWludFJlY3RPdmVybGF5KENHQ29udGV4dFJlZiBjb250ZXh0LCBXS0lt
YWdlUmVmIGltYWdlLCBXS0FyCiAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsK
IH0KIAotdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0
ZWQoV0tJbWFnZVJlZiBpbWFnZSwgV0tBcnJheVJlZiByZXBhaW50UmVjdHMpCit2b2lkIFRlc3RJ
bnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChXS0ltYWdlUmVmIGlt
YWdlLCBXS0FycmF5UmVmIHJlcGFpbnRSZWN0cywgU25hcHNob3RSZXN1bHRUeXBlIHNuYXBzaG90
VHlwZSkKIHsKLSAgICBQbGF0Zm9ybVdlYlZpZXcqIHdlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6
c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKTsKLSAgICBXS1JldGFpblB0cjxXS0ltYWdlUmVmPiB3
aW5kb3dTbmFwc2hvdCA9IHdlYlZpZXctPndpbmRvd1NuYXBzaG90SW1hZ2UoKTsKLQotICAgIFJl
dGFpblB0cjxDR0NvbnRleHRSZWY+IGNvbnRleHQ7Ci0gICAgaWYgKHdpbmRvd1NuYXBzaG90KQot
ICAgICAgICBjb250ZXh0ID0gYWRvcHRDRihjcmVhdGVDR0NvbnRleHRGcm9tSW1hZ2Uod2luZG93
U25hcHNob3QuZ2V0KCksIERvbnRGbGlwR3JhcGhpY3NDb250ZXh0KSk7Ci0gICAgZWxzZQotICAg
ICAgICBjb250ZXh0ID0gYWRvcHRDRihjcmVhdGVDR0NvbnRleHRGcm9tSW1hZ2UoaW1hZ2UpKTsK
KyAgICBjb250ZXh0ID0gYWRvcHRDRihjcmVhdGVDR0NvbnRleHRGcm9tSW1hZ2UoaW1hZ2UsIHNu
YXBzaG90VHlwZSA9PSBTbmFwc2hvdFJlc3VsdFR5cGU6OldlYlZpZXcgPyBEb250RmxpcEdyYXBo
aWNzQ29udGV4dCA6IEZsaXBHcmFwaGljc0NvbnRleHQpKTsKIAogICAgIC8vIEEgbm9uLW51bGwg
cmVwYWludFJlY3RzIGFycmF5IG1lYW5zIHdlJ3JlIGRvaW5nIGEgcmVwYWludCB0ZXN0LgogICAg
IGlmIChyZXBhaW50UmVjdHMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260361</attachid>
            <date>2015-09-01 04:21:14 -0700</date>
            <delta_ts>2015-09-16 23:34:24 -0700</delta_ts>
            <desc>Try to fix CG build</desc>
            <filename>wk2-printing-reftests.diff</filename>
            <type>text/plain</type>
            <size>21760</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4Mjc2N2FjLi44OGI3ODRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDkt
MDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAg
IHByaW50aW5nIGRvZXMgbm90IHVzZSBtaW5pbXVtIHBhZ2Ugem9vbSBmYWN0b3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODUwNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuc2tpcCBwcmludGluZyBy
ZWZ0ZXN0cyB0aGF0IHNob3VsZCBwYXNzIG5vdy4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9U
ZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0
aW9uczoKKwogMjAxNS0wOC0zMCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29t
PgogCiAgICAgICAgIEFYOiBXaGVuIG5hdmlnYXRpbmcgdGhlIGVsZW1lbnRzIG9mIGEgc2Nyb2xs
YWJsZSBlbGVtZW50IHdpdGggVm9pY2VPdmVyLCB0aGUgc2Nyb2xsVG9wKCkgcG9zaXRpb24gb2Yg
dGhlIGVsZW1lbnQgZG9lcyBub3QgcGVybWFuZW50bHkgY2hhbmdlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGQ2YzAxMmYuLmUzM2Y5M2QgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0yNDIxLDEwICsyNDIxLDYg
QEAgd2Via2l0Lm9yZy9iLzE0Mzg3MSBzdmcvVzNDLVNWRy0xLjEtU0UvbGlua2luZy11cmktMDEt
Yi5zdmcgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE0MzkyNCBmYXN0L3RleHQvaHlwaGVu
LW1pbi1wcmVmZXJyZWQtd2lkdGguaHRtbCBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMTQ0NDk0
IHByaW50aW5nL3F1aXJrcy1wZXJjZW50YWdlLWhlaWdodC1ib2R5Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xNDQ0OTQgcHJpbnRpbmcvcXVpcmtzLXBlcmNlbnRhZ2Ut
aGVpZ2h0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xNDQ0OTQgcHJp
bnRpbmcvc3RhbmRhcmRzLXBlcmNlbnRhZ2UtaGVpZ2h0cy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi0KIHdlYmtpdC5vcmcvYi8xNDQ1NzUgaHR0cC90ZXN0cy9sb2FkaW5nL3Byb21vdGUtaW1n
LXByZWxvYWQtcHJpb3JpdHkuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTQ0Njcz
IGZhc3QvZm9ybXMvYnV0dG9uLWxpbmUtaGVpZ2h0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1
MDMzY2IwLi43ZDVmNDNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0
RXhwZWN0YXRpb25zCkBAIC0xOTQsMTAgKzE5NCw2IEBAIHdlYmtpdC5vcmcvYi8xMDU5NTQgaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uL3JlbG9hZC1zdWJmcmFtZS1vYmplY3QuaHRtbCBbIEZhaWx1cmUK
IAogd2Via2l0Lm9yZy9iLzEwNTk2MCBwbHVnaW5zL25hdmlnYXRvci1wbHVnaW5zLmh0bWwgWyBG
YWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzEwODUwNyBwcmludGluZy9xdWlya3MtcGVyY2VudGFn
ZS1oZWlnaHQtYm9keS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTA4NTA3IHByaW50aW5n
L3F1aXJrcy1wZXJjZW50YWdlLWhlaWdodC5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTA4
NTA3IHByaW50aW5nL3N0YW5kYXJkcy1wZXJjZW50YWdlLWhlaWdodHMuaHRtbCBbIFNraXAgXQot
CiB3ZWJraXQub3JnL2IvMTA0OTU0IGh0dHAvdGVzdHMvY2FudmFzL2NhbnZhcy1zbG93LWZvbnQt
bG9hZGluZy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgRmxha3kgZXZlcnl3aGVyZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiNDRhMTgwLi4yYzMyYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTUtMDktMDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIHByaW50aW5nIGRvZXMgbm90IHVzZSBtaW5pbXVtIHBhZ2Ugem9vbSBmYWN0
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODUw
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFn
ZS9QcmludENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpiZWdp
bkFuZENvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUpOgorICAgICAgICBIZWxwZXIgZnVuY3Rp
b24gdG8gc2hhcmUgY29tbW9uIGNvZGUgZnJvbSBudW1iZXJPZlBhZ2VzKCkgYW5kCisgICAgICAg
IHNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmllcygpLgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRD
b250ZXh0OjpudW1iZXJPZlBhZ2VzKTogVXNlIGJlZ2luQW5kQ29tcHV0ZVBhZ2VSZWN0c1dpdGhQ
YWdlU2l6ZSgpLgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpzcG9vbEFsbFBhZ2Vz
V2l0aEJvdW5kYXJpZXMpOiBVc2UKKyAgICAgICAgYmVnaW5BbmRDb21wdXRlUGFnZVJlY3RzV2l0
aFBhZ2VTaXplKCkgYW5kIGRvbid0IGZsaXAgdGhlIFkgYXhpcworICAgICAgICBmb3Igbm9uIENv
Y29hIHBsYXRmb3Jtcy4KKyAgICAgICAgKiBwYWdlL1ByaW50Q29udGV4dC5oOgorCiAyMDE1LTA4
LTMwICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgogCiAgICAgICAgIFtD
b29yZGluYXRlZEdyYXBoaWNzXSBSZW1vdmUgdW5uZWNlc3NhcnkgdHdvIHZpcnR1YWwgbWV0aG9k
cyBmcm9tIFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1ByaW50Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4
dC5jcHAKaW5kZXggZjYyZGZhNi4uNjNjZmE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QcmludENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250
ZXh0LmNwcApAQCAtMzAxLDMyICszMDEsMzYgQEAgU3RyaW5nIFByaW50Q29udGV4dDo6cGFnZVNp
emVBbmRNYXJnaW5zSW5QaXhlbHMoRnJhbWUqIGZyYW1lLCBpbnQgcGFnZU51bWJlciwgaW4KICAg
ICAgICAgICAgU3RyaW5nOjpudW1iZXIobWFyZ2luVG9wKSArICcgJyArIFN0cmluZzo6bnVtYmVy
KG1hcmdpblJpZ2h0KSArICcgJyArIFN0cmluZzo6bnVtYmVyKG1hcmdpbkJvdHRvbSkgKyAnICcg
KyBTdHJpbmc6Om51bWJlcihtYXJnaW5MZWZ0KTsKIH0KIAotaW50IFByaW50Q29udGV4dDo6bnVt
YmVyT2ZQYWdlcyhGcmFtZSogZnJhbWUsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVs
cykKK2Jvb2wgUHJpbnRDb250ZXh0OjpiZWdpbkFuZENvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNp
emUoRnJhbWUmIGZyYW1lLCBjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMpCiB7Ci0g
ICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIGlmICghZnJhbWUuZG9j
dW1lbnQoKSB8fCAhZnJhbWUudmlldygpIHx8ICFmcmFtZS5kb2N1bWVudCgpLT5yZW5kZXJWaWV3
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEZsb2F0UmVjdCBwYWdlUmVjdChGbG9h
dFBvaW50KDAsIDApLCBwYWdlU2l6ZUluUGl4ZWxzKTsKLSAgICBQcmludENvbnRleHQgcHJpbnRD
b250ZXh0KGZyYW1lKTsKLSAgICBwcmludENvbnRleHQuYmVnaW4ocGFnZVJlY3Qud2lkdGgoKSwg
cGFnZVJlY3QuaGVpZ2h0KCkpOworICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgp
OworCisgICAgYmVnaW4ocGFnZVNpemVJblBpeGVscy53aWR0aCgpLCBwYWdlU2l6ZUluUGl4ZWxz
LmhlaWdodCgpKTsKICAgICAvLyBBY2NvdW50IGZvciBzaHJpbmstdG8tZml0LgogICAgIEZsb2F0
U2l6ZSBzY2FsZWRQYWdlU2l6ZSA9IHBhZ2VTaXplSW5QaXhlbHM7Ci0gICAgc2NhbGVkUGFnZVNp
emUuc2NhbGUoZnJhbWUtPnZpZXcoKS0+Y29udGVudHNTaXplKCkud2lkdGgoKSAvIHBhZ2VSZWN0
LndpZHRoKCkpOwotICAgIHByaW50Q29udGV4dC5jb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXpl
KHNjYWxlZFBhZ2VTaXplLCBmYWxzZSk7Ci0gICAgcmV0dXJuIHByaW50Q29udGV4dC5wYWdlQ291
bnQoKTsKKyAgICBzY2FsZWRQYWdlU2l6ZS5zY2FsZShmcmFtZS52aWV3KCktPmNvbnRlbnRzU2l6
ZSgpLndpZHRoKCkgLyBwYWdlU2l6ZUluUGl4ZWxzLndpZHRoKCkpOworICAgIGNvbXB1dGVQYWdl
UmVjdHNXaXRoUGFnZVNpemUoc2NhbGVkUGFnZVNpemUsIGZhbHNlKTsKKworICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIFByaW50Q29udGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVz
KEZyYW1lKiBmcmFtZSwgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZs
b2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscykKK2ludCBQcmludENvbnRleHQ6Om51bWJlck9mUGFn
ZXMoRnJhbWUqIGZyYW1lLCBjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMpCiB7Ci0g
ICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKSB8fCAhZnJhbWUtPnZpZXcoKSB8fCAhZnJhbWUtPmRv
Y3VtZW50KCktPnJlbmRlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuOworICAgIFByaW50Q29udGV4
dCBwcmludENvbnRleHQoZnJhbWUpOworICAgIGlmICghcHJpbnRDb250ZXh0LmJlZ2luQW5kQ29t
cHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZSgqZnJhbWUsIHBhZ2VTaXplSW5QaXhlbHMpKQorICAg
ICAgICByZXR1cm4gMDsKIAotICAgIGZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsK
KyAgICByZXR1cm4gcHJpbnRDb250ZXh0LnBhZ2VDb3VudCgpOworfQogCit2b2lkIFByaW50Q29u
dGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKEZyYW1lKiBmcmFtZSwgR3JhcGhpY3ND
b250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVs
cykKK3sKICAgICBQcmludENvbnRleHQgcHJpbnRDb250ZXh0KGZyYW1lKTsKLSAgICBwcmludENv
bnRleHQuYmVnaW4ocGFnZVNpemVJblBpeGVscy53aWR0aCgpLCBwYWdlU2l6ZUluUGl4ZWxzLmhl
aWdodCgpKTsKLQotICAgIGZsb2F0IHBhZ2VIZWlnaHQ7Ci0gICAgcHJpbnRDb250ZXh0LmNvbXB1
dGVQYWdlUmVjdHMoRmxvYXRSZWN0KEZsb2F0UG9pbnQoMCwgMCksIHBhZ2VTaXplSW5QaXhlbHMp
LCAwLCAwLCAxLCBwYWdlSGVpZ2h0KTsKKyAgICBpZiAoIXByaW50Q29udGV4dC5iZWdpbkFuZENv
bXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUoKmZyYW1lLCBwYWdlU2l6ZUluUGl4ZWxzKSkKKyAg
ICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgZmxvYXQgcGFnZVdpZHRoID0gcGFnZVNpemVJblBp
eGVscy53aWR0aCgpOwogICAgIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcGFnZVJlY3RzID0gcHJp
bnRDb250ZXh0LnBhZ2VSZWN0cygpOwpAQCAtMzM3LDE4ICszNDEsMjQgQEAgdm9pZCBQcmludENv
bnRleHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmllcyhGcmFtZSogZnJhbWUsIEdyYXBoaWNz
Q29udGV4dCYgZ3IKICAgICBncmFwaGljc0NvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDAsIDAs
IHBhZ2VXaWR0aCwgdG90YWxIZWlnaHQpKTsKIAogICAgIGdyYXBoaWNzQ29udGV4dC5zYXZlKCk7
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZSgwLCB0
b3RhbEhlaWdodCk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkp
OworI2VuZGlmCiAKICAgICBpbnQgY3VycmVudEhlaWdodCA9IDA7CiAgICAgZm9yIChzaXplX3Qg
cGFnZUluZGV4ID0gMDsgcGFnZUluZGV4IDwgcGFnZVJlY3RzLnNpemUoKTsgcGFnZUluZGV4Kysp
IHsKICAgICAgICAgLy8gRHJhdyBhIGxpbmUgZm9yIGEgcGFnZSBib3VuZGFyeSBpZiB0aGlzIGlz
bid0IHRoZSBmaXJzdCBwYWdlLgogICAgICAgICBpZiAocGFnZUluZGV4ID4gMCkgeworI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgICAgICAgICAgaW50IGJvdW5kYXJ5TGluZVkgPSBjdXJyZW50SGVp
Z2h0OworI2Vsc2UKKyAgICAgICAgICAgIGludCBib3VuZGFyeUxpbmVZID0gY3VycmVudEhlaWdo
dCAtIDE7CisjZW5kaWYKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zYXZlKCk7CiAgICAg
ICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMCwgMjU1KSwg
Q29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0Rmls
bENvbG9yKENvbG9yKDAsIDAsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdMaW5lKEludFBvaW50KDAsIGN1cnJlbnRIZWlnaHQpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KHBhZ2VXaWR0aCwg
Y3VycmVudEhlaWdodCkpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdMaW5lKElu
dFBvaW50KDAsIGJvdW5kYXJ5TGluZVkpLCBJbnRQb2ludChwYWdlV2lkdGgsIGJvdW5kYXJ5TGlu
ZVkpKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmgKaW5kZXggN2M1MWNhNC4uMWIzYzJkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5oCkBAIC04NSw2ICs4NSw3IEBAIHByb3RlY3RlZDoK
IAogcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemVJbnRlcm5h
bChjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMsIGJvb2wgYWxsb3dIb3Jpem9udGFs
VGlsaW5nKTsKKyAgICBib29sIGJlZ2luQW5kQ29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZShG
cmFtZSYsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscyk7CiAKICAgICAvLyBVc2Vk
IHRvIHByZXZlbnQgbWlzdXNlcyBvZiBiZWdpbigpIGFuZCBlbmQoKSAoZS5nLiwgY2FsbCBlbmQg
d2l0aG91dCBiZWdpbikuCiAgICAgYm9vbCBtX2lzUHJpbnRpbmc7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGVl
NWNmMC4uOWM0ZmYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTA5LTAxICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBwcmlu
dGluZyBkb2VzIG5vdCB1c2UgbWluaW11bSBwYWdlIHpvb20gZmFjdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg1MDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQga1dLU25hcHNob3RPcHRpb25z
UHJpbnRpbmcgZmxhZyB0byBpbmRpY2F0ZSB0aGUgc25hcHNob3QKKyAgICAgICAgc2hvdWxkIGJl
IGdlbmVyYXRlZCBpbiBwcmludGluZyBtb2RlLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dL
SW1hZ2UuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmg6CisgICAg
ICAgIChXZWJLaXQ6OnRvU25hcHNob3RPcHRpb25zKToKKyAgICAgICAgKiBTaGFyZWQvSW1hZ2VP
cHRpb25zLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKTogSW4gY2Fz
ZSBvZiBwcmludGluZywKKyAgICAgICAgY2FsY3VsYXRlIHRoZSBiaXRtYXAgaGVpZ2h0IGJhc2Vk
IG9uIHRoZSBudW1iZXIgb2YgcGFnZXMuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBz
aG90QXRTaXplKTogSW4gY2FzZSBvZiBwcmludGluZywgdXNlCisgICAgICAgIFByaW50Q29udGV4
dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKCkgYW5kIHJldHVybi4KKwogMjAxNS0wOC0y
OCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIE1p
Z3JhdGUgR3JhcGhpY3NDb250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0ltYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvV0tJbWFnZS5oCmluZGV4IDhkZDU2Y2MuLjI3YTM0NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0ltYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLSW1hZ2UuaApAQCAtNDUsNiArNDUsNyBAQCBlbnVtIHsK
ICAgICBrV0tTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvblJlY3RhbmdsZSA9IDEgPDwgMywK
ICAgICBrV0tTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCA9IDEgPDwgNCwKICAgICBrV0tT
bmFwc2hvdE9wdGlvbnNGb3JjZVdoaXRlVGV4dCA9IDEgPDwgNSwKKyAgICBrV0tTbmFwc2hvdE9w
dGlvbnNQcmludGluZyA9IDEgPDwgNiwKIH07CiB0eXBlZGVmIHVpbnQzMl90IFdLU25hcHNob3RP
cHRpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFy
ZWRBUElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0
LmgKaW5kZXggMDM1NDZjNi4uNGYxN2UzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS1NoYXJlZEFQSUNhc3QuaApAQCAtOTUxLDYgKzk1MSw4IEBAIGlubGluZSBTbmFwc2hv
dE9wdGlvbnMgdG9TbmFwc2hvdE9wdGlvbnMoV0tTbmFwc2hvdE9wdGlvbnMgd2tTbmFwc2hvdE9w
dGlvbnMpCiAgICAgICAgIHNuYXBzaG90T3B0aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNGb3JjZUJs
YWNrVGV4dDsKICAgICBpZiAod2tTbmFwc2hvdE9wdGlvbnMgJiBrV0tTbmFwc2hvdE9wdGlvbnNG
b3JjZVdoaXRlVGV4dCkKICAgICAgICAgc25hcHNob3RPcHRpb25zIHw9IFNuYXBzaG90T3B0aW9u
c0ZvcmNlV2hpdGVUZXh0OworICAgIGlmICh3a1NuYXBzaG90T3B0aW9ucyAmIGtXS1NuYXBzaG90
T3B0aW9uc1ByaW50aW5nKQorICAgICAgICBzbmFwc2hvdE9wdGlvbnMgfD0gU25hcHNob3RPcHRp
b25zUHJpbnRpbmc7CiAKICAgICByZXR1cm4gc25hcHNob3RPcHRpb25zOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0ltYWdlT3B0aW9ucy5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0ltYWdlT3B0aW9ucy5oCmluZGV4IDk5YmE3OWYuLjMxMmNhNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbWFnZU9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvSW1hZ2VPcHRpb25zLmgKQEAgLTQwLDYgKzQwLDcgQEAgZW51bSB7CiAgICAgU25h
cHNob3RPcHRpb25zRXhjbHVkZURldmljZVNjYWxlRmFjdG9yID0gMSA8PCA1LAogICAgIFNuYXBz
aG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0ID0gMSA8PCA2LAogICAgIFNuYXBzaG90T3B0aW9uc0Zv
cmNlV2hpdGVUZXh0ID0gMSA8PCA3LAorICAgIFNuYXBzaG90T3B0aW9uc1ByaW50aW5nID0gMSA8
PCA4LAogfTsKIHR5cGVkZWYgdWludDMyX3QgU25hcHNob3RPcHRpb25zOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYzU2YmJiYi4uZTQ1
YjQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMTcxMywxMCArMTcxMywxOCBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpz
Y2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKGNvbnN0IEludFJlY3QmIHJlY3QsIGRvdQogewogICAg
IEludFJlY3Qgc25hcHNob3RSZWN0ID0gcmVjdDsKICAgICBJbnRTaXplIGJpdG1hcFNpemUgPSBz
bmFwc2hvdFJlY3Quc2l6ZSgpOwotICAgIGRvdWJsZSBzY2FsZUZhY3RvciA9IGFkZGl0aW9uYWxT
Y2FsZUZhY3RvcjsKLSAgICBpZiAoIShvcHRpb25zICYgU25hcHNob3RPcHRpb25zRXhjbHVkZURl
dmljZVNjYWxlRmFjdG9yKSkKLSAgICAgICAgc2NhbGVGYWN0b3IgKj0gY29yZVBhZ2UoKS0+ZGV2
aWNlU2NhbGVGYWN0b3IoKTsKLSAgICBiaXRtYXBTaXplLnNjYWxlKHNjYWxlRmFjdG9yKTsKKyAg
ICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc1ByaW50aW5nKSB7CisgICAgICAgIEFTU0VS
VChhZGRpdGlvbmFsU2NhbGVGYWN0b3IgPT0gMSk7CisgICAgICAgIEZyYW1lKiBjb3JlRnJhbWUg
PSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCk7CisgICAgICAgIGlmICghY29yZUZyYW1lKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGJpdG1hcFNpemUuc2V0SGVpZ2h0KFBy
aW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhjb3JlRnJhbWUsIGJpdG1hcFNpemUpICogKGJpdG1h
cFNpemUuaGVpZ2h0KCkgKyAxKSAtIDEpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRvdWJsZSBz
Y2FsZUZhY3RvciA9IGFkZGl0aW9uYWxTY2FsZUZhY3RvcjsKKyAgICAgICAgaWYgKCEob3B0aW9u
cyAmIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVEZXZpY2VTY2FsZUZhY3RvcikpCisgICAgICAgICAg
ICBzY2FsZUZhY3RvciAqPSBjb3JlUGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgICAg
ICBiaXRtYXBTaXplLnNjYWxlKHNjYWxlRmFjdG9yKTsKKyAgICB9CiAKICAgICByZXR1cm4gc25h
cHNob3RBdFNpemUocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucyk7CiB9CkBAIC0xNzQyLDYgKzE3
NTAsMTEgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RBdFNpemUoY29u
c3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYKIAogICAgIGF1dG8gZ3JhcGhpY3NDb250
ZXh0ID0gc25hcHNob3QtPmJpdG1hcCgpLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAorICAg
IGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zUHJpbnRpbmcpIHsKKyAgICAgICAgUHJpbnRD
b250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJpZXMoY29yZUZyYW1lLCAqZ3JhcGhpY3ND
b250ZXh0LCBzbmFwc2hvdFJlY3Quc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIHNuYXBzaG90LnJl
bGVhc2UoKTsKKyAgICB9CisKICAgICBDb2xvciBkb2N1bWVudEJhY2tncm91bmRDb2xvciA9IGZy
YW1lVmlldy0+ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKTsKICAgICBDb2xvciBiYWNrZ3JvdW5k
Q29sb3IgPSAoY29yZUZyYW1lLT5zZXR0aW5ncygpLmJhY2tncm91bmRTaG91bGRFeHRlbmRCZXlv
bmRQYWdlKCkgJiYgZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKSA/IGRvY3VtZW50
QmFja2dyb3VuZENvbG9yIDogZnJhbWVWaWV3LT5iYXNlQmFja2dyb3VuZENvbG9yKCk7CiAgICAg
Z3JhcGhpY3NDb250ZXh0LT5maWxsUmVjdChJbnRSZWN0KEludFBvaW50KCksIGJpdG1hcFNpemUp
LCBiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGExY2VhMDUuLmM2NDY4YmQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzOSBAQAorMjAxNS0wOS0wMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgcHJpbnRpbmcgZG9lcyBub3QgdXNlIG1pbmltdW0gcGFnZSB6b29t
IGZhY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA4NTA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2ViS2l0VGVzdFJ1bm5lciBhbHdheXMgdGFrZXMgdGhlIHNuYXBzaG90cyBmcm9tIHRoZSBVSSBw
cm9jZXNzCisgICAgICAgIChleHBlY3QgZm9yIElPUyksIHNvIGluIHRoZSBjYXNlIG9mIHByaW50
aW5nLCB0aGUgbGF5b3V0IGluIHRoZQorICAgICAgICB3ZWIgdmlldyBpcyBub3QgdGhlIGV4cGVj
dGVkIG9uZS4gV2hlbiBwcmludGluZywgd2UgbmVlZCB0byB0YWtlCisgICAgICAgIHRoZSBzbmFw
c2hvdCBpbiB0aGUgd2ViIHByb2Nlc3MgYW5kIGVuc3VyZSBpdCdzIHJlbmRlcmVkIHdpdGggYQor
ICAgICAgICBQcmludENvbnRleHQuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVk
QnVuZGxlUGFnZTo6ZHVtcCk6IFdoZW4gZHVtcGluZyBwaXhlbHMsIHBhc3MKKyAgICAgICAga1dL
U25hcHNob3RPcHRpb25zUHJpbnRpbmcgb3B0aW9uIHRvCisgICAgICAgIFdLQnVuZGxlUGFnZUNy
ZWF0ZVNuYXBzaG90V2l0aE9wdGlvbnMoKSB3aGVuIHByaW50aW5nLiBXaGVuIG5vdAorICAgICAg
ICBwcmludGluZywgZG9uJ3QgZXZlbiBjcmVhdGUgdGhlIHNuYXBzaG90LCBzaW5jZSBpdCB3aWxs
IGJlIGlnbm9yZWQKKyAgICAgICAgYnkgdGhlIFVJIHByb2Nlc3MgdGhhdCBhbHdheXMgY3JlYXRl
cyBpdHMgb3duIGZyb20gdGhlIFdlYlZpZXcgKGV4cGVjdCBmb3IgSU9TIHBsYXRmb3JtKQorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RS
OjpUZXN0SW52b2NhdGlvbjo6ZHVtcFJlc3VsdHMpOiBVc2UgYWx3YXlzIHRoZSBzbmFwc2hvdCBp
bWFnZQorICAgICAgICByZWNlaXZlZCBmcm9tIHRoZSB3ZWIgcHJvY2VzcyBpZiBhbnkgd2hlbiBj
b21wYXJpbmcgcGl4ZWwKKyAgICAgICAgcmVzdWx0cy4gTm93IHdlIG9ubHkgcmVjZWl2ZSBhIHNu
YXBzaG90IGZyb20gdGhlIHdlYiBwcm9jZXNzIGluCisgICAgICAgIGNhc2Ugb2YgcHJpbnRpbmcs
IG9yIHdoZW4gcGxhdGZvcm0gaXMgSU9TLiBPdGhlcndoaXNlLCBnZW5lcmF0ZQorICAgICAgICB0
aGUgc25hcHNob3QgZnJvbSB0aGUgV2ViVmlldyBhcyB1c3VhbC4KKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6IEFkZCBTbmFwc2hvdFJlc3VsdFR5cGUgZW51bQor
ICAgICAgICBwYXJhbWV0ZXIgdG8gZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQsIHNp
bmNlIHRoZSBzbmFwc2hvdAorICAgICAgICBpcyBjcmVhdGVkIGJ5IHRoZSBjYWxsZXIgbm93LCBi
dXQgdGhlIENHIGltcGxlbWVudGF0aW9uIG5lZWRzIHRvCisgICAgICAgIGtub3cgaWYgaXQncyBh
IFdlYiBvciBVSSBwcm9jZXNzIHNuYXBzaG90LgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
Y2Fpcm8vVGVzdEludm9jYXRpb25DYWlyby5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0
aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZCk6IENyZWF0ZSBhCisgICAgICAg
IGNhaXJvIHN1cmZhY2UgZm9yIHRoZSBnaXZlbiBpbWFnZS4KKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2Nh
dGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQpOiBDcmVhdGUgYQorICAgICAg
ICBDR0NvbnRleHQgZm9yIHRoZSBnaXZlbiBpbWFnZS4KKwogMjAxNS0wOC0yOSAgQ2hyaXMgRmxl
aXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBXaGVuIG5hdmlnYXRp
bmcgdGhlIGVsZW1lbnRzIG9mIGEgc2Nyb2xsYWJsZSBlbGVtZW50IHdpdGggVm9pY2VPdmVyLCB0
aGUgc2Nyb2xsVG9wKCkgcG9zaXRpb24gb2YgdGhlIGVsZW1lbnQgZG9lcyBub3QgcGVybWFuZW50
bHkgY2hhbmdlCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKaW5kZXggY2IyMmQ2ZC4uYWZmMmE5ZCAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAtODg5LDEyICs4ODksMjYgQEAgdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2U6OmR1bXAoKQogICAgICAgICBpbmplY3RlZEJ1bmRsZS5kdW1wQmFja0Zv
cndhcmRMaXN0c0ZvckFsbFBhZ2VzKHN0cmluZ0J1aWxkZXIpOwogCiAgICAgaWYgKGluamVjdGVk
QnVuZGxlLnNob3VsZER1bXBQaXhlbHMoKSAmJiBpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCkt
PnNob3VsZER1bXBQaXhlbHMoKSkgewotICAgICAgICBXS1NuYXBzaG90T3B0aW9ucyBvcHRpb25z
ID0ga1dLU25hcHNob3RPcHRpb25zU2hhcmVhYmxlIHwga1dLU25hcHNob3RPcHRpb25zSW5WaWV3
Q29vcmRpbmF0ZXM7Ci0gICAgICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNo
b3VsZER1bXBTZWxlY3Rpb25SZWN0KCkpCi0gICAgICAgICAgICBvcHRpb25zIHw9IGtXS1NuYXBz
aG90T3B0aW9uc1BhaW50U2VsZWN0aW9uUmVjdGFuZ2xlOworICAgICAgICBXS1NuYXBzaG90T3B0
aW9ucyBvcHRpb25zID0ga1dLU25hcHNob3RPcHRpb25zU2hhcmVhYmxlOworICAgICAgICBXS1Jl
Y3Qgc25hcHNob3RSZWN0ID0gV0tCdW5kbGVGcmFtZUdldFZpc2libGVDb250ZW50Qm91bmRzKFdL
QnVuZGxlUGFnZUdldE1haW5GcmFtZShtX3BhZ2UpKTsKKyAgICAgICAgYm9vbCBzaG91bGRDcmVh
dGVTbmFwc2hvdCA9IGZhbHNlOworICAgICAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5l
cigpLT5pc1ByaW50aW5nKCkpIHsKKyAgICAgICAgICAgIHNob3VsZENyZWF0ZVNuYXBzaG90ID0g
dHJ1ZTsKKyAgICAgICAgICAgIG9wdGlvbnMgfD0ga1dLU25hcHNob3RPcHRpb25zUHJpbnRpbmc7
CisgICAgICAgIH0gZWxzZSB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICAgICAgLy8gT25s
eSBJT1MgbmVlZHMgdG8gZ2VuZXJhdGUgdGhlIHNuYXBzaG90IGluIHRoZSB3ZWIgcHJvY2Vzcywg
YWxsIG90aGVyIHBvcnRzIGdlbmVyYXRlCisgICAgICAgICAgICAvLyBhIHNuYXBzaG90IGZyb20g
dGhlIHdlYiB2aWV3IGNvbnRlbnRzIGluIHRoZSBVSSBwcm9jZXNzLgorICAgICAgICAgICAgc2hv
dWxkQ3JlYXRlU25hcHNob3QgPSB0cnVlOworICAgICAgICAgICAgb3B0aW9ucyB8PSBrV0tTbmFw
c2hvdE9wdGlvbnNJblZpZXdDb29yZGluYXRlczsKKyAgICAgICAgICAgIGlmIChpbmplY3RlZEJ1
bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBTZWxlY3Rpb25SZWN0KCkpCisgICAgICAgICAg
ICAgICAgb3B0aW9ucyB8PSBrV0tTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvblJlY3Rhbmds
ZTsKKyNlbmRpZgorICAgICAgICB9CiAKLSAgICAgICAgaW5qZWN0ZWRCdW5kbGUuc2V0UGl4ZWxS
ZXN1bHQoYWRvcHRXSyhXS0J1bmRsZVBhZ2VDcmVhdGVTbmFwc2hvdFdpdGhPcHRpb25zKG1fcGFn
ZSwgV0tCdW5kbGVGcmFtZUdldFZpc2libGVDb250ZW50Qm91bmRzKFdLQnVuZGxlUGFnZUdldE1h
aW5GcmFtZShtX3BhZ2UpKSwgb3B0aW9ucykpLmdldCgpKTsKLSAgICAgICAgaWYgKFdLQnVuZGxl
UGFnZUlzVHJhY2tpbmdSZXBhaW50cyhtX3BhZ2UpKQorICAgICAgICBpZiAoc2hvdWxkQ3JlYXRl
U25hcHNob3QpCisgICAgICAgICAgICBpbmplY3RlZEJ1bmRsZS5zZXRQaXhlbFJlc3VsdChhZG9w
dFdLKFdLQnVuZGxlUGFnZUNyZWF0ZVNuYXBzaG90V2l0aE9wdGlvbnMobV9wYWdlLCBzbmFwc2hv
dFJlY3QsIG9wdGlvbnMpKS5nZXQoKSk7CisgICAgICAgIGlmIChXS0J1bmRsZVBhZ2VJc1RyYWNr
aW5nUmVwYWludHMobV9wYWdlKSAmJiAhaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5pc1By
aW50aW5nKCkpCiAgICAgICAgICAgICBpbmplY3RlZEJ1bmRsZS5zZXRSZXBhaW50UmVjdHMoYWRv
cHRXSyhXS0J1bmRsZVBhZ2VDb3B5VHJhY2tlZFJlcGFpbnRSZWN0cyhtX3BhZ2UpKS5nZXQoKSk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4
IDA5MTkxMWUuLjAyOWVhNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwCkBAIC0yNjcsMTYgKzI2NywyMiBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUmVz
dWx0cygpCiAgICAgZWxzZQogICAgICAgICBkdW1wQXVkaW8obV9hdWRpb1Jlc3VsdC5nZXQoKSk7
CiAKLSAgICBpZiAobV9kdW1wUGl4ZWxzICYmIG1fcGl4ZWxSZXN1bHQpIHsKLSAgICAgICAgbV9n
b3RSZXBhaW50ID0gZmFsc2U7Ci0gICAgICAgIFdLUGFnZUZvcmNlUmVwYWludChUZXN0Q29udHJv
bGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCB0aGlzLCBUZXN0SW52b2Nh
dGlvbjo6Zm9yY2VSZXBhaW50RG9uZUNhbGxiYWNrKTsKLSAgICAgICAgVGVzdENvbnRyb2xsZXI6
OnNpbmdsZXRvbigpLnJ1blVudGlsKG1fZ290UmVwYWludCwgVGVzdENvbnRyb2xsZXI6OnNob3J0
VGltZW91dCk7Ci0gICAgICAgIGlmICghbV9nb3RSZXBhaW50KSB7Ci0gICAgICAgICAgICBtX2Vy
cm9yTWVzc2FnZSA9ICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgcHJlLXBpeGVsIGR1bXAgcmVwYWlu
dFxuIjsKLSAgICAgICAgICAgIG1fd2ViUHJvY2Vzc0lzVW5yZXNwb25zaXZlID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9kdW1wUGl4ZWxzKSB7CisgICAgICAgIGlmICht
X3BpeGVsUmVzdWx0KQorICAgICAgICAgICAgZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0
ZWQobV9waXhlbFJlc3VsdC5nZXQoKSwgbV9yZXBhaW50UmVjdHMuZ2V0KCksIFRlc3RJbnZvY2F0
aW9uOjpTbmFwc2hvdFJlc3VsdFR5cGU6OldlYkNvbnRlbnRzKTsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBtX2dvdFJlcGFpbnQgPSBmYWxzZTsKKyAgICAgICAgICAgIFdLUGFnZUZvcmNl
UmVwYWludChUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgp
LCB0aGlzLCBUZXN0SW52b2NhdGlvbjo6Zm9yY2VSZXBhaW50RG9uZUNhbGxiYWNrKTsKKyAgICAg
ICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5ydW5VbnRpbChtX2dvdFJlcGFpbnQs
IFRlc3RDb250cm9sbGVyOjpzaG9ydFRpbWVvdXQpOworICAgICAgICAgICAgaWYgKCFtX2dvdFJl
cGFpbnQpIHsKKyAgICAgICAgICAgICAgICBtX2Vycm9yTWVzc2FnZSA9ICJUaW1lZCBvdXQgd2Fp
dGluZyBmb3IgcHJlLXBpeGVsIGR1bXAgcmVwYWludFxuIjsKKyAgICAgICAgICAgICAgICBtX3dl
YlByb2Nlc3NJc1VucmVzcG9uc2l2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tJbWFnZVJlZj4gd2luZG93
U25hcHNob3QgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+d2lu
ZG93U25hcHNob3RJbWFnZSgpOworICAgICAgICAgICAgQVNTRVJUKHdpbmRvd1NuYXBzaG90KTsK
KyAgICAgICAgICAgIGR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKHdpbmRvd1NuYXBz
aG90LmdldCgpLCBtX3JlcGFpbnRSZWN0cy5nZXQoKSwgVGVzdEludm9jYXRpb246OlNuYXBzaG90
UmVzdWx0VHlwZTo6V2ViVmlldyk7CiAgICAgICAgIH0KLSAgICAgICAgZHVtcFBpeGVsc0FuZENv
bXBhcmVXaXRoRXhwZWN0ZWQobV9waXhlbFJlc3VsdC5nZXQoKSwgbV9yZXBhaW50UmVjdHMuZ2V0
KCkpOwogICAgIH0KIAogICAgIGZwdXRzKCIjRU9GXG4iLCBzdGRvdXQpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IGZmNzYwZTcuLmM1MzRmMTggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTU3LDcgKzU3LDggQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICB2b2lkIGR1bXBSZXN1bHRzKCk7CiAgICAgc3RhdGljIHZvaWQgZHVt
cChjb25zdCBjaGFyKiB0ZXh0VG9TdGRvdXQsIGNvbnN0IGNoYXIqIHRleHRUb1N0ZGVyciA9IDAs
IGJvb2wgc2VlbkVycm9yID0gZmFsc2UpOwotICAgIHZvaWQgZHVtcFBpeGVsc0FuZENvbXBhcmVX
aXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiwgV0tBcnJheVJlZiByZXBhaW50UmVjdHMpOworICAgIGVu
dW0gY2xhc3MgU25hcHNob3RSZXN1bHRUeXBlIHsgV2ViVmlldywgV2ViQ29udGVudHMgfTsKKyAg
ICB2b2lkIGR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYsIFdLQXJy
YXlSZWYgcmVwYWludFJlY3RzLCBTbmFwc2hvdFJlc3VsdFR5cGUpOwogICAgIHZvaWQgZHVtcEF1
ZGlvKFdLRGF0YVJlZik7CiAgICAgYm9vbCBjb21wYXJlQWN0dWFsSGFzaFRvRXhwZWN0ZWRBbmRE
dW1wUmVzdWx0cyhjb25zdCBjaGFyWzMzXSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvY2Fpcm8vVGVzdEludm9jYXRpb25DYWlyby5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2NhaXJvL1Rlc3RJbnZvY2F0aW9uQ2Fpcm8uY3BwCmluZGV4IDRmYWZiMTguLjM3NmYz
MTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2Fpcm8vVGVzdEludm9jYXRp
b25DYWlyby5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2Nh
dGlvbkNhaXJvLmNwcApAQCAtMTA2LDkgKzEwNiw5IEBAIHN0YXRpYyB2b2lkIHBhaW50UmVwYWlu
dFJlY3RPdmVybGF5KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgV0tBcnJheVJlZiByZXBhaW50
CiAgICAgY2Fpcm9fZGVzdHJveShjb250ZXh0KTsKIH0KIAotdm9pZCBUZXN0SW52b2NhdGlvbjo6
ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiwgV0tBcnJheVJlZiBy
ZXBhaW50UmVjdHMpCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdp
dGhFeHBlY3RlZChXS0ltYWdlUmVmIGltYWdlLCBXS0FycmF5UmVmIHJlcGFpbnRSZWN0cywgU25h
cHNob3RSZXN1bHRUeXBlKQogewotICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IFdLSW1h
Z2VDcmVhdGVDYWlyb1N1cmZhY2UoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJW
aWV3KCktPndpbmRvd1NuYXBzaG90SW1hZ2UoKS5nZXQoKSk7CisgICAgY2Fpcm9fc3VyZmFjZV90
KiBzdXJmYWNlID0gV0tJbWFnZUNyZWF0ZUNhaXJvU3VyZmFjZShpbWFnZSk7CiAKICAgICBpZiAo
cmVwYWludFJlY3RzKQogICAgICAgICBwYWludFJlcGFpbnRSZWN0T3ZlcmxheShzdXJmYWNlLCBy
ZXBhaW50UmVjdHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0
SW52b2NhdGlvbkNHLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRp
b25DRy5jcHAKaW5kZXggZWM4MzkyYS4uN2YzZjJiOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwCkBAIC0xNTQsMTYgKzE1NCw5IEBAIHN0YXRp
YyB2b2lkIHBhaW50UmVwYWludFJlY3RPdmVybGF5KENHQ29udGV4dFJlZiBjb250ZXh0LCBXS0lt
YWdlUmVmIGltYWdlLCBXS0FyCiAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsK
IH0KIAotdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0
ZWQoV0tJbWFnZVJlZiBpbWFnZSwgV0tBcnJheVJlZiByZXBhaW50UmVjdHMpCit2b2lkIFRlc3RJ
bnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChXS0ltYWdlUmVmIGlt
YWdlLCBXS0FycmF5UmVmIHJlcGFpbnRSZWN0cywgU25hcHNob3RSZXN1bHRUeXBlIHNuYXBzaG90
VHlwZSkKIHsKLSAgICBQbGF0Zm9ybVdlYlZpZXcqIHdlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6
c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKTsKLSAgICBXS1JldGFpblB0cjxXS0ltYWdlUmVmPiB3
aW5kb3dTbmFwc2hvdCA9IHdlYlZpZXctPndpbmRvd1NuYXBzaG90SW1hZ2UoKTsKLQotICAgIFJl
dGFpblB0cjxDR0NvbnRleHRSZWY+IGNvbnRleHQ7Ci0gICAgaWYgKHdpbmRvd1NuYXBzaG90KQot
ICAgICAgICBjb250ZXh0ID0gYWRvcHRDRihjcmVhdGVDR0NvbnRleHRGcm9tSW1hZ2Uod2luZG93
U25hcHNob3QuZ2V0KCksIERvbnRGbGlwR3JhcGhpY3NDb250ZXh0KSk7Ci0gICAgZWxzZQotICAg
ICAgICBjb250ZXh0ID0gYWRvcHRDRihjcmVhdGVDR0NvbnRleHRGcm9tSW1hZ2UoaW1hZ2UpKTsK
KyAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRDRihjcmVhdGVDR0Nv
bnRleHRGcm9tSW1hZ2UoaW1hZ2UsIHNuYXBzaG90VHlwZSA9PSBTbmFwc2hvdFJlc3VsdFR5cGU6
OldlYlZpZXcgPyBEb250RmxpcEdyYXBoaWNzQ29udGV4dCA6IEZsaXBHcmFwaGljc0NvbnRleHQp
KTsKIAogICAgIC8vIEEgbm9uLW51bGwgcmVwYWludFJlY3RzIGFycmF5IG1lYW5zIHdlJ3JlIGRv
aW5nIGEgcmVwYWludCB0ZXN0LgogICAgIGlmIChyZXBhaW50UmVjdHMpCg==
</data>
<flag name="review"
          id="285538"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261373</attachid>
            <date>2015-09-16 23:34:24 -0700</date>
            <delta_ts>2015-09-29 00:49:31 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wk2-printing-tests.diff</filename>
            <type>text/plain</type>
            <size>26185</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmODg3MjU5Li5mYmVkMjU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDkt
MTYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAg
IHByaW50aW5nIGRvZXMgbm90IHVzZSBtaW5pbXVtIHBhZ2Ugem9vbSBmYWN0b3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODUwNworCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVuc2tpcCBwcmludGluZyByZWZ0
ZXN0cyB0aGF0IHNob3VsZCBwYXNzIG5vdy4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0
RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9u
czoKKwogMjAxNS0wOS0xNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBBZGQgZmFpbGluZyBleHBlY3RhdGlvbiB0byBjc3MzL2ZvbnQtZmVhdHVyZS1zZXR0aW5n
cy1yZW5kZXJpbmctMi5odG1sIG9uIE1hdmVyaWNrcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNWM2YmY3OS4uZGM4ZGUxMSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI0MDYsMTAgKzI0MDYsNiBAQCB3ZWJr
aXQub3JnL2IvMTQzODcxIHN2Zy9XM0MtU1ZHLTEuMS1TRS9saW5raW5nLXVyaS0wMS1iLnN2ZyBb
IEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTQzOTI0IGZhc3QvdGV4dC9oeXBoZW4tbWluLXBy
ZWZlcnJlZC13aWR0aC5odG1sIFsgU2tpcCBdCiAKLXdlYmtpdC5vcmcvYi8xNDQ0OTQgcHJpbnRp
bmcvcXVpcmtzLXBlcmNlbnRhZ2UtaGVpZ2h0LWJvZHkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzE0NDQ5NCBwcmludGluZy9xdWlya3MtcGVyY2VudGFnZS1oZWlnaHQu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE0NDQ5NCBwcmludGluZy9z
dGFuZGFyZHMtcGVyY2VudGFnZS1oZWlnaHRzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQog
d2Via2l0Lm9yZy9iLzE0NDU3NSBodHRwL3Rlc3RzL2xvYWRpbmcvcHJvbW90ZS1pbWctcHJlbG9h
ZC1wcmlvcml0eS5odG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNDQ2NzMgZmFzdC9m
b3Jtcy9idXR0b24tbGluZS1oZWlnaHQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDlmZjA1NGUu
LjRhNzc2ZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTE5NiwxMCArMTk2LDYgQEAgd2Via2l0Lm9yZy9iLzEwNTk1NCBodHRwL3Rlc3Rz
L25hdmlnYXRpb24vcmVsb2FkLXN1YmZyYW1lLW9iamVjdC5odG1sIFsgRmFpbHVyZQogCiB3ZWJr
aXQub3JnL2IvMTA1OTYwIHBsdWdpbnMvbmF2aWdhdG9yLXBsdWdpbnMuaHRtbCBbIEZhaWx1cmUg
XQogCi13ZWJraXQub3JnL2IvMTA4NTA3IHByaW50aW5nL3F1aXJrcy1wZXJjZW50YWdlLWhlaWdo
dC1ib2R5Lmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8xMDg1MDcgcHJpbnRpbmcvcXVpcmtz
LXBlcmNlbnRhZ2UtaGVpZ2h0Lmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8xMDg1MDcgcHJp
bnRpbmcvc3RhbmRhcmRzLXBlcmNlbnRhZ2UtaGVpZ2h0cy5odG1sIFsgU2tpcCBdCi0KIHdlYmtp
dC5vcmcvYi8xMDQ5NTQgaHR0cC90ZXN0cy9jYW52YXMvY2FudmFzLXNsb3ctZm9udC1sb2FkaW5n
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyBGbGFreSBldmVyeXdoZXJlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDhhZDE0MDUuLmUxYmVjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAx
NS0wOS0xNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgcHJpbnRpbmcgZG9lcyBub3QgdXNlIG1pbmltdW0gcGFnZSB6b29tIGZhY3RvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NTA3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBwYWdlL1ByaW50Q29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OmJlZ2luQW5kQ29tcHV0
ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZSk6CisgICAgICAgIEhlbHBlciBmdW5jdGlvbiB0byBzaGFy
ZSBjb21tb24gY29kZSBmcm9tIG51bWJlck9mUGFnZXMoKSBhbmQKKyAgICAgICAgc3Bvb2xBbGxQ
YWdlc1dpdGhCb3VuZGFyaWVzKCkuCisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6Om51
bWJlck9mUGFnZXMpOiBVc2UgYmVnaW5BbmRDb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplKCku
CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91bmRh
cmllcyk6IFVzZQorICAgICAgICBiZWdpbkFuZENvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUo
KSBhbmQgZG9uJ3QgZmxpcCB0aGUgWSBheGlzCisgICAgICAgIGZvciBub24gQ29jb2EgcGxhdGZv
cm1zLgorICAgICAgICAqIHBhZ2UvUHJpbnRDb250ZXh0Lmg6CisKIDIwMTUtMDktMTYgIEd5dXlv
dW5nIEtpbSAgPGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBhbGwg
dXNlcyBvZiBQYXNzUmVmUHRyIGluIFdlYkNvcmUvaW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1By
aW50Q29udGV4dC5jcHAKaW5kZXggZjYyZGZhNi4uMjYzNzUxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UHJpbnRDb250ZXh0LmNwcApAQCAtMzAxLDMyICszMDEsMzYgQEAgU3RyaW5nIFByaW50Q29udGV4
dDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoRnJhbWUqIGZyYW1lLCBpbnQgcGFnZU51bWJl
ciwgaW4KICAgICAgICAgICAgU3RyaW5nOjpudW1iZXIobWFyZ2luVG9wKSArICcgJyArIFN0cmlu
Zzo6bnVtYmVyKG1hcmdpblJpZ2h0KSArICcgJyArIFN0cmluZzo6bnVtYmVyKG1hcmdpbkJvdHRv
bSkgKyAnICcgKyBTdHJpbmc6Om51bWJlcihtYXJnaW5MZWZ0KTsKIH0KIAotaW50IFByaW50Q29u
dGV4dDo6bnVtYmVyT2ZQYWdlcyhGcmFtZSogZnJhbWUsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNp
emVJblBpeGVscykKK2Jvb2wgUHJpbnRDb250ZXh0OjpiZWdpbkFuZENvbXB1dGVQYWdlUmVjdHNX
aXRoUGFnZVNpemUoRnJhbWUmIGZyYW1lLCBjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhl
bHMpCiB7Ci0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIGlmICgh
ZnJhbWUuZG9jdW1lbnQoKSB8fCAhZnJhbWUudmlldygpIHx8ICFmcmFtZS5kb2N1bWVudCgpLT5y
ZW5kZXJWaWV3KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEZsb2F0UmVjdCBwYWdl
UmVjdChGbG9hdFBvaW50KDAsIDApLCBwYWdlU2l6ZUluUGl4ZWxzKTsKLSAgICBQcmludENvbnRl
eHQgcHJpbnRDb250ZXh0KGZyYW1lKTsKLSAgICBwcmludENvbnRleHQuYmVnaW4ocGFnZVJlY3Qu
d2lkdGgoKSwgcGFnZVJlY3QuaGVpZ2h0KCkpOworICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0
ZUxheW91dCgpOworCisgICAgYmVnaW4ocGFnZVNpemVJblBpeGVscy53aWR0aCgpLCBwYWdlU2l6
ZUluUGl4ZWxzLmhlaWdodCgpKTsKICAgICAvLyBBY2NvdW50IGZvciBzaHJpbmstdG8tZml0Lgog
ICAgIEZsb2F0U2l6ZSBzY2FsZWRQYWdlU2l6ZSA9IHBhZ2VTaXplSW5QaXhlbHM7Ci0gICAgc2Nh
bGVkUGFnZVNpemUuc2NhbGUoZnJhbWUtPnZpZXcoKS0+Y29udGVudHNTaXplKCkud2lkdGgoKSAv
IHBhZ2VSZWN0LndpZHRoKCkpOwotICAgIHByaW50Q29udGV4dC5jb21wdXRlUGFnZVJlY3RzV2l0
aFBhZ2VTaXplKHNjYWxlZFBhZ2VTaXplLCBmYWxzZSk7Ci0gICAgcmV0dXJuIHByaW50Q29udGV4
dC5wYWdlQ291bnQoKTsKKyAgICBzY2FsZWRQYWdlU2l6ZS5zY2FsZShmcmFtZS52aWV3KCktPmNv
bnRlbnRzU2l6ZSgpLndpZHRoKCkgLyBwYWdlU2l6ZUluUGl4ZWxzLndpZHRoKCkpOworICAgIGNv
bXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUoc2NhbGVkUGFnZVNpemUsIGZhbHNlKTsKKworICAg
IHJldHVybiB0cnVlOwogfQogCi12b2lkIFByaW50Q29udGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhC
b3VuZGFyaWVzKEZyYW1lKiBmcmFtZSwgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQs
IGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscykKK2ludCBQcmludENvbnRleHQ6Om51
bWJlck9mUGFnZXMoRnJhbWUmIGZyYW1lLCBjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhl
bHMpCiB7Ci0gICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKSB8fCAhZnJhbWUtPnZpZXcoKSB8fCAh
ZnJhbWUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
ZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIFByaW50Q29udGV4dCBwcmlu
dENvbnRleHQoJmZyYW1lKTsKKyAgICBpZiAoIXByaW50Q29udGV4dC5iZWdpbkFuZENvbXB1dGVQ
YWdlUmVjdHNXaXRoUGFnZVNpemUoZnJhbWUsIHBhZ2VTaXplSW5QaXhlbHMpKQorICAgICAgICBy
ZXR1cm4gLTE7CiAKLSAgICBQcmludENvbnRleHQgcHJpbnRDb250ZXh0KGZyYW1lKTsKLSAgICBw
cmludENvbnRleHQuYmVnaW4ocGFnZVNpemVJblBpeGVscy53aWR0aCgpLCBwYWdlU2l6ZUluUGl4
ZWxzLmhlaWdodCgpKTsKKyAgICByZXR1cm4gcHJpbnRDb250ZXh0LnBhZ2VDb3VudCgpOworfQog
Ci0gICAgZmxvYXQgcGFnZUhlaWdodDsKLSAgICBwcmludENvbnRleHQuY29tcHV0ZVBhZ2VSZWN0
cyhGbG9hdFJlY3QoRmxvYXRQb2ludCgwLCAwKSwgcGFnZVNpemVJblBpeGVscyksIDAsIDAsIDEs
IHBhZ2VIZWlnaHQpOwordm9pZCBQcmludENvbnRleHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91bmRh
cmllcyhGcmFtZSYgZnJhbWUsIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMpCit7CisgICAgUHJpbnRDb250ZXh0IHByaW50
Q29udGV4dCgmZnJhbWUpOworICAgIGlmICghcHJpbnRDb250ZXh0LmJlZ2luQW5kQ29tcHV0ZVBh
Z2VSZWN0c1dpdGhQYWdlU2l6ZShmcmFtZSwgcGFnZVNpemVJblBpeGVscykpCisgICAgICAgIHJl
dHVybjsKIAogICAgIGNvbnN0IGZsb2F0IHBhZ2VXaWR0aCA9IHBhZ2VTaXplSW5QaXhlbHMud2lk
dGgoKTsKICAgICBjb25zdCBWZWN0b3I8SW50UmVjdD4mIHBhZ2VSZWN0cyA9IHByaW50Q29udGV4
dC5wYWdlUmVjdHMoKTsKQEAgLTMzNywxOCArMzQxLDI0IEBAIHZvaWQgUHJpbnRDb250ZXh0Ojpz
cG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJpZXMoRnJhbWUqIGZyYW1lLCBHcmFwaGljc0NvbnRleHQm
IGdyCiAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdCgwLCAwLCBwYWdlV2lk
dGgsIHRvdGFsSGVpZ2h0KSk7CiAKICAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOworI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoMCwgdG90YWxIZWln
aHQpOwogICAgIGdyYXBoaWNzQ29udGV4dC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyNlbmRp
ZgogCiAgICAgaW50IGN1cnJlbnRIZWlnaHQgPSAwOwogICAgIGZvciAoc2l6ZV90IHBhZ2VJbmRl
eCA9IDA7IHBhZ2VJbmRleCA8IHBhZ2VSZWN0cy5zaXplKCk7IHBhZ2VJbmRleCsrKSB7CiAgICAg
ICAgIC8vIERyYXcgYSBsaW5lIGZvciBhIHBhZ2UgYm91bmRhcnkgaWYgdGhpcyBpc24ndCB0aGUg
Zmlyc3QgcGFnZS4KICAgICAgICAgaWYgKHBhZ2VJbmRleCA+IDApIHsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICAgICAgICAgIGludCBib3VuZGFyeUxpbmVZID0gY3VycmVudEhlaWdodDsKKyNl
bHNlCisgICAgICAgICAgICBpbnQgYm91bmRhcnlMaW5lWSA9IGN1cnJlbnRIZWlnaHQgLSAxOwor
I2VuZGlmCiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOwogICAgICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDAsIDI1NSksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihD
b2xvcigwLCAwLCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5kcmF3TGluZShJbnRQb2ludCgwLCBjdXJyZW50SGVpZ2h0KSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChwYWdlV2lkdGgsIGN1cnJlbnRI
ZWlnaHQpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3TGluZShJbnRQb2ludCgw
LCBib3VuZGFyeUxpbmVZKSwgSW50UG9pbnQocGFnZVdpZHRoLCBib3VuZGFyeUxpbmVZKSk7CiAg
ICAgICAgICAgICBncmFwaGljc0NvbnRleHQucmVzdG9yZSgpOwogICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1ByaW50Q29udGV4dC5oCmluZGV4IDdjNTFjYTQuLmQzZDNlYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QcmludENvbnRleHQuaApAQCAtNzMsMTEgKzczLDExIEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHBhZ2VQcm9wZXJ0eShGcmFtZSosIGNvbnN0IGNoYXIq
IHByb3BlcnR5TmFtZSwgaW50IHBhZ2VOdW1iZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBib29sIGlzUGFnZUJveFZpc2libGUoRnJhbWUqLCBpbnQgcGFnZU51bWJlcik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhGcmFt
ZSosIGludCBwYWdlTnVtYmVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBtYXJnaW5Ub3As
IGludCBtYXJnaW5SaWdodCwgaW50IG1hcmdpbkJvdHRvbSwgaW50IG1hcmdpbkxlZnQpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBpbnQgbnVtYmVyT2ZQYWdlcyhGcmFtZSosIGNvbnN0IEZs
b2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGlu
dCBudW1iZXJPZlBhZ2VzKEZyYW1lJiwgY29uc3QgRmxvYXRTaXplJiBwYWdlU2l6ZUluUGl4ZWxz
KTsKICAgICAvLyBEcmF3IGFsbCBwYWdlcyBpbnRvIGEgZ3JhcGhpY3MgY29udGV4dCB3aXRoIGxp
bmVzIHdoaWNoIG1lYW4gcGFnZSBib3VuZGFyaWVzLgogICAgIC8vIFRoZSBoZWlnaHQgb2YgdGhl
IGdyYXBoaWNzIGNvbnRleHQgc2hvdWxkIGJlCiAgICAgLy8gKHBhZ2VTaXplSW5QaXhlbHMuaGVp
Z2h0KCkgKyAxKSAqIG51bWJlci1vZi1wYWdlcyAtIDEKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCBzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJpZXMoRnJhbWUqLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIHNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmllcyhGcmFtZSYsIEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscyk7CiAKIHByb3Rl
Y3RlZDoKICAgICBGcmFtZSogbV9mcmFtZTsKQEAgLTg1LDYgKzg1LDcgQEAgcHJvdGVjdGVkOgog
CiBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZUludGVybmFs
KGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscywgYm9vbCBhbGxvd0hvcml6b250YWxU
aWxpbmcpOworICAgIGJvb2wgYmVnaW5BbmRDb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplKEZy
YW1lJiwgY29uc3QgRmxvYXRTaXplJiBwYWdlU2l6ZUluUGl4ZWxzKTsKIAogICAgIC8vIFVzZWQg
dG8gcHJldmVudCBtaXN1c2VzIG9mIGJlZ2luKCkgYW5kIGVuZCgpIChlLmcuLCBjYWxsIGVuZCB3
aXRob3V0IGJlZ2luKS4KICAgICBib29sIG1faXNQcmludGluZzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCA3Mzc4NDc5Li5kOTM2MjhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCkBAIC0xOTkxLDcgKzE5OTEsNyBAQCBpbnQgSW50ZXJuYWxzOjpudW1i
ZXJPZlBhZ2VzKGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCkKICAgICBpZiAoIWZy
YW1lKCkpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIHJldHVybiBQcmludENvbnRleHQ6Om51
bWJlck9mUGFnZXMoZnJhbWUoKSwgRmxvYXRTaXplKHBhZ2VXaWR0aCwgcGFnZUhlaWdodCkpOwor
ICAgIHJldHVybiBQcmludENvbnRleHQ6Om51bWJlck9mUGFnZXMoKmZyYW1lKCksIEZsb2F0U2l6
ZShwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpKTsKIH0KIAogU3RyaW5nIEludGVybmFsczo6cGFnZVBy
b3BlcnR5KFN0cmluZyBwcm9wZXJ0eU5hbWUsIGludCBwYWdlTnVtYmVyLCBFeGNlcHRpb25Db2Rl
JiBlYykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA2NTE3NzRjLi4wNTAyMzQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDktMTYgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIHByaW50aW5nIGRvZXMgbm90IHVz
ZSBtaW5pbXVtIHBhZ2Ugem9vbSBmYWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwODUwNworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgIFBhc3MgYSB0aGUgZnJhbWUgYXMgYSByZWZlcmVuY2UgaW5zdGVhZCBv
ZiB1c2luZyBwb2ludGVycy4KKworICAgICAgICAqIE1pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW06
CisgICAgICAgICgtW1dlYkZyYW1lIG51bWJlck9mUGFnZXNXaXRoUGFnZVdpZHRoOnBhZ2VIZWln
aHQ6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIHByaW50VG9DR0NvbnRleHQ6cGFnZVdpZHRoOnBh
Z2VIZWlnaHQ6XSk6CisKIDIwMTUtMDktMTYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIEhhdmUgd2luZG93LmluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSByZXR1
cm4gYW4gSURCT3BlbkRCUmVxdWVzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01p
c2MvV2ViQ29yZVN0YXRpc3RpY3MubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVT
dGF0aXN0aWNzLm1tCmluZGV4IDc4MjEwYWMuLmMwY2FmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQpAQCAtMjc2LDcgKzI3NiwxMSBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogLSAoaW50KW51bWJlck9mUGFnZXNXaXRoUGFnZVdpZHRoOihm
bG9hdClwYWdlV2lkdGhJblBpeGVscyBwYWdlSGVpZ2h0OihmbG9hdClwYWdlSGVpZ2h0SW5QaXhl
bHMKIHsKLSAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpudW1iZXJPZlBhZ2VzKF9wcml2YXRlLT5j
b3JlRnJhbWUsIEZsb2F0U2l6ZShwYWdlV2lkdGhJblBpeGVscywgcGFnZUhlaWdodEluUGl4ZWxz
KSk7CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IF9wcml2YXRlLT5jb3JlRnJhbWU7CisgICAgaWYg
KCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJldHVybiBQcmludENvbnRl
eHQ6Om51bWJlck9mUGFnZXMoKmNvcmVGcmFtZSwgRmxvYXRTaXplKHBhZ2VXaWR0aEluUGl4ZWxz
LCBwYWdlSGVpZ2h0SW5QaXhlbHMpKTsKIH0KIAogLSAodm9pZClwcmludFRvQ0dDb250ZXh0OihD
R0NvbnRleHRSZWYpY2dDb250ZXh0IHBhZ2VXaWR0aDooZmxvYXQpcGFnZVdpZHRoSW5QaXhlbHMg
cGFnZUhlaWdodDooZmxvYXQpcGFnZUhlaWdodEluUGl4ZWxzCkBAIC0yODYsNyArMjkwLDcgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNz
Q29udGV4dCBncmFwaGljc0NvbnRleHQoY2dDb250ZXh0KTsKLSAgICBQcmludENvbnRleHQ6OnNw
b29sQWxsUGFnZXNXaXRoQm91bmRhcmllcyhjb3JlRnJhbWUsIGdyYXBoaWNzQ29udGV4dCwgRmxv
YXRTaXplKHBhZ2VXaWR0aEluUGl4ZWxzLCBwYWdlSGVpZ2h0SW5QaXhlbHMpKTsKKyAgICBQcmlu
dENvbnRleHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmllcygqY29yZUZyYW1lLCBncmFwaGlj
c0NvbnRleHQsIEZsb2F0U2l6ZShwYWdlV2lkdGhJblBpeGVscywgcGFnZUhlaWdodEluUGl4ZWxz
KSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAwNDRkZmJlLi5kOTFhNDQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjYgQEAKKzIwMTUtMDktMTYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIHByaW50aW5nIGRvZXMgbm90IHVzZSBtaW5pbXVt
IHBhZ2Ugem9vbSBmYWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwODUwNworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisg
ICAgICAgIEFkZCBrV0tTbmFwc2hvdE9wdGlvbnNQcmludGluZyBmbGFnIHRvIGluZGljYXRlIHRo
ZSBzbmFwc2hvdAorICAgICAgICBzaG91bGQgYmUgZ2VuZXJhdGVkIGluIHByaW50aW5nIG1vZGUu
CisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tJbWFnZS5oOgorICAgICAgICAqIFNoYXJlZC9B
UEkvYy9XS1NoYXJlZEFQSUNhc3QuaDoKKyAgICAgICAgKFdlYktpdDo6dG9TbmFwc2hvdE9wdGlv
bnMpOgorICAgICAgICAqIFNoYXJlZC9JbWFnZU9wdGlvbnMuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGU6Om51bWJlck9mUGFnZXMpOiBQYXNzIHRoZSBmcmFtZSBhcyBhCisgICAg
ICAgIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNjYWxlZFNu
YXBzaG90V2l0aE9wdGlvbnMpOiBJbiBjYXNlIG9mIHByaW50aW5nLAorICAgICAgICBjYWxjdWxh
dGUgdGhlIGJpdG1hcCBoZWlnaHQgYmFzZWQgb24gdGhlIG51bWJlciBvZiBwYWdlcy4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c25hcHNob3RBdFNpemUpOiBJbiBjYXNlIG9mIHByaW50aW5n
LCB1c2UKKyAgICAgICAgUHJpbnRDb250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJpZXMo
KSBhbmQgcmV0dXJuLgorCiAyMDE1LTA5LTE2ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRml4IGNvbW1vbiB0eXBvICJzdXBy
ZXNzIiA9PiAic3VwcHJlc3MiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tJbWFnZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLSW1hZ2UuaAppbmRl
eCA4ZGQ1NmNjLi4yN2EzNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0ltYWdlLmgK
QEAgLTQ1LDYgKzQ1LDcgQEAgZW51bSB7CiAgICAga1dLU25hcHNob3RPcHRpb25zUGFpbnRTZWxl
Y3Rpb25SZWN0YW5nbGUgPSAxIDw8IDMsCiAgICAga1dLU25hcHNob3RPcHRpb25zRm9yY2VCbGFj
a1RleHQgPSAxIDw8IDQsCiAgICAga1dLU25hcHNob3RPcHRpb25zRm9yY2VXaGl0ZVRleHQgPSAx
IDw8IDUsCisgICAga1dLU25hcHNob3RPcHRpb25zUHJpbnRpbmcgPSAxIDw8IDYsCiB9OwogdHlw
ZWRlZiB1aW50MzJfdCBXS1NuYXBzaG90T3B0aW9uczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCmluZGV4IDAzNTQ2YzYuLjRmMTdlMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKQEAgLTk1MSw2
ICs5NTEsOCBAQCBpbmxpbmUgU25hcHNob3RPcHRpb25zIHRvU25hcHNob3RPcHRpb25zKFdLU25h
cHNob3RPcHRpb25zIHdrU25hcHNob3RPcHRpb25zKQogICAgICAgICBzbmFwc2hvdE9wdGlvbnMg
fD0gU25hcHNob3RPcHRpb25zRm9yY2VCbGFja1RleHQ7CiAgICAgaWYgKHdrU25hcHNob3RPcHRp
b25zICYga1dLU25hcHNob3RPcHRpb25zRm9yY2VXaGl0ZVRleHQpCiAgICAgICAgIHNuYXBzaG90
T3B0aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNGb3JjZVdoaXRlVGV4dDsKKyAgICBpZiAod2tTbmFw
c2hvdE9wdGlvbnMgJiBrV0tTbmFwc2hvdE9wdGlvbnNQcmludGluZykKKyAgICAgICAgc25hcHNo
b3RPcHRpb25zIHw9IFNuYXBzaG90T3B0aW9uc1ByaW50aW5nOwogCiAgICAgcmV0dXJuIHNuYXBz
aG90T3B0aW9uczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbWFnZU9w
dGlvbnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbWFnZU9wdGlvbnMuaAppbmRleCA5OWJh
NzlmLi4zMTJjYTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW1hZ2VPcHRp
b25zLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0ltYWdlT3B0aW9ucy5oCkBAIC00MCw2
ICs0MCw3IEBAIGVudW0gewogICAgIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVEZXZpY2VTY2FsZUZh
Y3RvciA9IDEgPDwgNSwKICAgICBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCA9IDEgPDwg
NiwKICAgICBTbmFwc2hvdE9wdGlvbnNGb3JjZVdoaXRlVGV4dCA9IDEgPDwgNywKKyAgICBTbmFw
c2hvdE9wdGlvbnNQcmludGluZyA9IDEgPDwgOCwKIH07CiB0eXBlZGVmIHVpbnQzMl90IFNuYXBz
aG90T3B0aW9uczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCAwMzkzNjU4Li4yNDQ0MDFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtNDA3LDcgKzQwNyw3IEBAIGludCBJbmplY3Rl
ZEJ1bmRsZTo6bnVtYmVyT2ZQYWdlcyhXZWJGcmFtZSogZnJhbWUsIGRvdWJsZSBwYWdlV2lkdGhJ
blBpeGVscywgZG91CiAgICAgaWYgKCFwYWdlSGVpZ2h0SW5QaXhlbHMpCiAgICAgICAgIHBhZ2VI
ZWlnaHRJblBpeGVscyA9IGNvcmVGcmFtZS0+dmlldygpLT5oZWlnaHQoKTsKIAotICAgIHJldHVy
biBQcmludENvbnRleHQ6Om51bWJlck9mUGFnZXMoY29yZUZyYW1lLCBGbG9hdFNpemUocGFnZVdp
ZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscykpOworICAgIHJldHVybiBQcmludENvbnRl
eHQ6Om51bWJlck9mUGFnZXMoKmNvcmVGcmFtZSwgRmxvYXRTaXplKHBhZ2VXaWR0aEluUGl4ZWxz
LCBwYWdlSGVpZ2h0SW5QaXhlbHMpKTsKIH0KIAogaW50IEluamVjdGVkQnVuZGxlOjpwYWdlTnVt
YmVyRm9yRWxlbWVudEJ5SWQoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIGlkLCBkb3Vi
bGUgcGFnZVdpZHRoSW5QaXhlbHMsIGRvdWJsZSBwYWdlSGVpZ2h0SW5QaXhlbHMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMGJlNTFlYi4u
MDVjYTgxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtMTcxMSwxMCArMTcxMSwxOCBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdl
OjpzY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKGNvbnN0IEludFJlY3QmIHJlY3QsIGRvdQogewog
ICAgIEludFJlY3Qgc25hcHNob3RSZWN0ID0gcmVjdDsKICAgICBJbnRTaXplIGJpdG1hcFNpemUg
PSBzbmFwc2hvdFJlY3Quc2l6ZSgpOwotICAgIGRvdWJsZSBzY2FsZUZhY3RvciA9IGFkZGl0aW9u
YWxTY2FsZUZhY3RvcjsKLSAgICBpZiAoIShvcHRpb25zICYgU25hcHNob3RPcHRpb25zRXhjbHVk
ZURldmljZVNjYWxlRmFjdG9yKSkKLSAgICAgICAgc2NhbGVGYWN0b3IgKj0gY29yZVBhZ2UoKS0+
ZGV2aWNlU2NhbGVGYWN0b3IoKTsKLSAgICBiaXRtYXBTaXplLnNjYWxlKHNjYWxlRmFjdG9yKTsK
KyAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc1ByaW50aW5nKSB7CisgICAgICAgIEFT
U0VSVChhZGRpdGlvbmFsU2NhbGVGYWN0b3IgPT0gMSk7CisgICAgICAgIEZyYW1lKiBjb3JlRnJh
bWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCk7CisgICAgICAgIGlmICghY29yZUZyYW1lKQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGJpdG1hcFNpemUuc2V0SGVpZ2h0
KFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcygqY29yZUZyYW1lLCBiaXRtYXBTaXplKSAqIChi
aXRtYXBTaXplLmhlaWdodCgpICsgMSkgLSAxKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkb3Vi
bGUgc2NhbGVGYWN0b3IgPSBhZGRpdGlvbmFsU2NhbGVGYWN0b3I7CisgICAgICAgIGlmICghKG9w
dGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlRGV2aWNlU2NhbGVGYWN0b3IpKQorICAgICAg
ICAgICAgc2NhbGVGYWN0b3IgKj0gY29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAg
ICAgICAgYml0bWFwU2l6ZS5zY2FsZShzY2FsZUZhY3Rvcik7CisgICAgfQogCiAgICAgcmV0dXJu
IHNuYXBzaG90QXRTaXplKHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMpOwogfQpAQCAtMTc0MCw2
ICsxNzQ4LDExIEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90QXRTaXpl
KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmCiAKICAgICBhdXRvIGdyYXBoaWNz
Q29udGV4dCA9IHNuYXBzaG90LT5iaXRtYXAoKS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAK
KyAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc1ByaW50aW5nKSB7CisgICAgICAgIFBy
aW50Q29udGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKCpjb3JlRnJhbWUsICpncmFw
aGljc0NvbnRleHQsIHNuYXBzaG90UmVjdC5zaXplKCkpOworICAgICAgICByZXR1cm4gc25hcHNo
b3QucmVsZWFzZSgpOworICAgIH0KKwogICAgIENvbG9yIGRvY3VtZW50QmFja2dyb3VuZENvbG9y
ID0gZnJhbWVWaWV3LT5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpOwogICAgIENvbG9yIGJhY2tn
cm91bmRDb2xvciA9IChjb3JlRnJhbWUtPnNldHRpbmdzKCkuYmFja2dyb3VuZFNob3VsZEV4dGVu
ZEJleW9uZFBhZ2UoKSAmJiBkb2N1bWVudEJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpID8gZG9j
dW1lbnRCYWNrZ3JvdW5kQ29sb3IgOiBmcmFtZVZpZXctPmJhc2VCYWNrZ3JvdW5kQ29sb3IoKTsK
ICAgICBncmFwaGljc0NvbnRleHQtPmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgYml0bWFw
U2l6ZSksIGJhY2tncm91bmRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTM4M2VmYy4uZjdlZDE2
NyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM5IEBACisyMDE1LTA5LTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBwcmludGluZyBkb2VzIG5vdCB1c2UgbWluaW11bSBwYWdl
IHpvb20gZmFjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDg1MDcKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICBXZWJLaXRUZXN0UnVubmVyIGFsd2F5cyB0YWtlcyB0aGUgc25hcHNob3RzIGZyb20gdGhlIFVJ
IHByb2Nlc3MKKyAgICAgICAgKGV4cGVjdCBmb3IgSU9TKSwgc28gaW4gdGhlIGNhc2Ugb2YgcHJp
bnRpbmcsIHRoZSBsYXlvdXQgaW4gdGhlCisgICAgICAgIHdlYiB2aWV3IGlzIG5vdCB0aGUgZXhw
ZWN0ZWQgb25lLiBXaGVuIHByaW50aW5nLCB3ZSBuZWVkIHRvIHRha2UKKyAgICAgICAgdGhlIHNu
YXBzaG90IGluIHRoZSB3ZWIgcHJvY2VzcyBhbmQgZW5zdXJlIGl0J3MgcmVuZGVyZWQgd2l0aCBh
CisgICAgICAgIFByaW50Q29udGV4dC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGVQYWdlOjpkdW1wKTogV2hlbiBkdW1waW5nIHBpeGVscywgcGFzcworICAgICAgICBr
V0tTbmFwc2hvdE9wdGlvbnNQcmludGluZyBvcHRpb24gdG8KKyAgICAgICAgV0tCdW5kbGVQYWdl
Q3JlYXRlU25hcHNob3RXaXRoT3B0aW9ucygpIHdoZW4gcHJpbnRpbmcuIFdoZW4gbm90CisgICAg
ICAgIHByaW50aW5nLCBkb24ndCBldmVuIGNyZWF0ZSB0aGUgc25hcHNob3QsIHNpbmNlIGl0IHdp
bGwgYmUgaWdub3JlZAorICAgICAgICBieSB0aGUgVUkgcHJvY2VzcyB0aGF0IGFsd2F5cyBjcmVh
dGVzIGl0cyBvd24gZnJvbSB0aGUgV2ViVmlldyAoZXhwZWN0IGZvciBJT1MgcGxhdGZvcm0pCisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChX
VFI6OlRlc3RJbnZvY2F0aW9uOjpkdW1wUmVzdWx0cyk6IFVzZSBhbHdheXMgdGhlIHNuYXBzaG90
IGltYWdlCisgICAgICAgIHJlY2VpdmVkIGZyb20gdGhlIHdlYiBwcm9jZXNzIGlmIGFueSB3aGVu
IGNvbXBhcmluZyBwaXhlbAorICAgICAgICByZXN1bHRzLiBOb3cgd2Ugb25seSByZWNlaXZlIGEg
c25hcHNob3QgZnJvbSB0aGUgd2ViIHByb2Nlc3MgaW4KKyAgICAgICAgY2FzZSBvZiBwcmludGlu
Zywgb3Igd2hlbiBwbGF0Zm9ybSBpcyBJT1MuIE90aGVyd2hpc2UsIGdlbmVyYXRlCisgICAgICAg
IHRoZSBzbmFwc2hvdCBmcm9tIHRoZSBXZWJWaWV3IGFzIHVzdWFsLgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDogQWRkIFNuYXBzaG90UmVzdWx0VHlwZSBlbnVt
CisgICAgICAgIHBhcmFtZXRlciB0byBkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZCwg
c2luY2UgdGhlIHNuYXBzaG90CisgICAgICAgIGlzIGNyZWF0ZWQgYnkgdGhlIGNhbGxlciBub3cs
IGJ1dCB0aGUgQ0cgaW1wbGVtZW50YXRpb24gbmVlZHMgdG8KKyAgICAgICAga25vdyBpZiBpdCdz
IGEgV2ViIG9yIFVJIHByb2Nlc3Mgc25hcHNob3QuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9j
YXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKTogQ3JlYXRlIGEKKyAgICAg
ICAgY2Fpcm8gc3VyZmFjZSBmb3IgdGhlIGdpdmVuIGltYWdlLgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZv
Y2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZCk6IENyZWF0ZSBhCisgICAg
ICAgIENHQ29udGV4dCBmb3IgdGhlIGdpdmVuIGltYWdlLgorCiAyMDE1LTA5LTE2ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgQ3JlYXRlIGEgZm9u
dCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgdGVzdGluZyBmb250IGZlYXR1cmVzCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5jcHAKaW5kZXggY2IyMmQ2ZC4uYWZmMmE5ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
LmNwcApAQCAtODg5LDEyICs4ODksMjYgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXAo
KQogICAgICAgICBpbmplY3RlZEJ1bmRsZS5kdW1wQmFja0ZvcndhcmRMaXN0c0ZvckFsbFBhZ2Vz
KHN0cmluZ0J1aWxkZXIpOwogCiAgICAgaWYgKGluamVjdGVkQnVuZGxlLnNob3VsZER1bXBQaXhl
bHMoKSAmJiBpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBQaXhlbHMoKSkg
ewotICAgICAgICBXS1NuYXBzaG90T3B0aW9ucyBvcHRpb25zID0ga1dLU25hcHNob3RPcHRpb25z
U2hhcmVhYmxlIHwga1dLU25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0ZXM7Ci0gICAgICAg
IGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBTZWxlY3Rpb25SZWN0
KCkpCi0gICAgICAgICAgICBvcHRpb25zIHw9IGtXS1NuYXBzaG90T3B0aW9uc1BhaW50U2VsZWN0
aW9uUmVjdGFuZ2xlOworICAgICAgICBXS1NuYXBzaG90T3B0aW9ucyBvcHRpb25zID0ga1dLU25h
cHNob3RPcHRpb25zU2hhcmVhYmxlOworICAgICAgICBXS1JlY3Qgc25hcHNob3RSZWN0ID0gV0tC
dW5kbGVGcmFtZUdldFZpc2libGVDb250ZW50Qm91bmRzKFdLQnVuZGxlUGFnZUdldE1haW5GcmFt
ZShtX3BhZ2UpKTsKKyAgICAgICAgYm9vbCBzaG91bGRDcmVhdGVTbmFwc2hvdCA9IGZhbHNlOwor
ICAgICAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5pc1ByaW50aW5nKCkpIHsK
KyAgICAgICAgICAgIHNob3VsZENyZWF0ZVNuYXBzaG90ID0gdHJ1ZTsKKyAgICAgICAgICAgIG9w
dGlvbnMgfD0ga1dLU25hcHNob3RPcHRpb25zUHJpbnRpbmc7CisgICAgICAgIH0gZWxzZSB7Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgICAgICAgICAgLy8gT25seSBJT1MgbmVlZHMgdG8gZ2VuZXJh
dGUgdGhlIHNuYXBzaG90IGluIHRoZSB3ZWIgcHJvY2VzcywgYWxsIG90aGVyIHBvcnRzIGdlbmVy
YXRlCisgICAgICAgICAgICAvLyBhIHNuYXBzaG90IGZyb20gdGhlIHdlYiB2aWV3IGNvbnRlbnRz
IGluIHRoZSBVSSBwcm9jZXNzLgorICAgICAgICAgICAgc2hvdWxkQ3JlYXRlU25hcHNob3QgPSB0
cnVlOworICAgICAgICAgICAgb3B0aW9ucyB8PSBrV0tTbmFwc2hvdE9wdGlvbnNJblZpZXdDb29y
ZGluYXRlczsKKyAgICAgICAgICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNo
b3VsZER1bXBTZWxlY3Rpb25SZWN0KCkpCisgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBrV0tT
bmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvblJlY3RhbmdsZTsKKyNlbmRpZgorICAgICAgICB9
CiAKLSAgICAgICAgaW5qZWN0ZWRCdW5kbGUuc2V0UGl4ZWxSZXN1bHQoYWRvcHRXSyhXS0J1bmRs
ZVBhZ2VDcmVhdGVTbmFwc2hvdFdpdGhPcHRpb25zKG1fcGFnZSwgV0tCdW5kbGVGcmFtZUdldFZp
c2libGVDb250ZW50Qm91bmRzKFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShtX3BhZ2UpKSwgb3B0
aW9ucykpLmdldCgpKTsKLSAgICAgICAgaWYgKFdLQnVuZGxlUGFnZUlzVHJhY2tpbmdSZXBhaW50
cyhtX3BhZ2UpKQorICAgICAgICBpZiAoc2hvdWxkQ3JlYXRlU25hcHNob3QpCisgICAgICAgICAg
ICBpbmplY3RlZEJ1bmRsZS5zZXRQaXhlbFJlc3VsdChhZG9wdFdLKFdLQnVuZGxlUGFnZUNyZWF0
ZVNuYXBzaG90V2l0aE9wdGlvbnMobV9wYWdlLCBzbmFwc2hvdFJlY3QsIG9wdGlvbnMpKS5nZXQo
KSk7CisgICAgICAgIGlmIChXS0J1bmRsZVBhZ2VJc1RyYWNraW5nUmVwYWludHMobV9wYWdlKSAm
JiAhaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5pc1ByaW50aW5nKCkpCiAgICAgICAgICAg
ICBpbmplY3RlZEJ1bmRsZS5zZXRSZXBhaW50UmVjdHMoYWRvcHRXSyhXS0J1bmRsZVBhZ2VDb3B5
VHJhY2tlZFJlcGFpbnRSZWN0cyhtX3BhZ2UpKS5nZXQoKSk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IGM0ZGVlMzYuLjZmMTgwNjYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0yNjcsMTYgKzI2
NywyMiBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUmVzdWx0cygpCiAgICAgZWxzZQogICAg
ICAgICBkdW1wQXVkaW8obV9hdWRpb1Jlc3VsdC5nZXQoKSk7CiAKLSAgICBpZiAobV9kdW1wUGl4
ZWxzICYmIG1fcGl4ZWxSZXN1bHQpIHsKLSAgICAgICAgbV9nb3RSZXBhaW50ID0gZmFsc2U7Ci0g
ICAgICAgIFdLUGFnZUZvcmNlUmVwYWludChUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFp
bldlYlZpZXcoKS0+cGFnZSgpLCB0aGlzLCBUZXN0SW52b2NhdGlvbjo6Zm9yY2VSZXBhaW50RG9u
ZUNhbGxiYWNrKTsKLSAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnJ1blVudGls
KG1fZ290UmVwYWludCwgVGVzdENvbnRyb2xsZXI6OnNob3J0VGltZW91dCk7Ci0gICAgICAgIGlm
ICghbV9nb3RSZXBhaW50KSB7Ci0gICAgICAgICAgICBtX2Vycm9yTWVzc2FnZSA9ICJUaW1lZCBv
dXQgd2FpdGluZyBmb3IgcHJlLXBpeGVsIGR1bXAgcmVwYWludFxuIjsKLSAgICAgICAgICAgIG1f
d2ViUHJvY2Vzc0lzVW5yZXNwb25zaXZlID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsKKyAg
ICBpZiAobV9kdW1wUGl4ZWxzKSB7CisgICAgICAgIGlmIChtX3BpeGVsUmVzdWx0KQorICAgICAg
ICAgICAgZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQobV9waXhlbFJlc3VsdC5nZXQo
KSwgbV9yZXBhaW50UmVjdHMuZ2V0KCksIFRlc3RJbnZvY2F0aW9uOjpTbmFwc2hvdFJlc3VsdFR5
cGU6OldlYkNvbnRlbnRzKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX2dvdFJlcGFp
bnQgPSBmYWxzZTsKKyAgICAgICAgICAgIFdLUGFnZUZvcmNlUmVwYWludChUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCB0aGlzLCBUZXN0SW52b2NhdGlv
bjo6Zm9yY2VSZXBhaW50RG9uZUNhbGxiYWNrKTsKKyAgICAgICAgICAgIFRlc3RDb250cm9sbGVy
OjpzaW5nbGV0b24oKS5ydW5VbnRpbChtX2dvdFJlcGFpbnQsIFRlc3RDb250cm9sbGVyOjpzaG9y
dFRpbWVvdXQpOworICAgICAgICAgICAgaWYgKCFtX2dvdFJlcGFpbnQpIHsKKyAgICAgICAgICAg
ICAgICBtX2Vycm9yTWVzc2FnZSA9ICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgcHJlLXBpeGVsIGR1
bXAgcmVwYWludFxuIjsKKyAgICAgICAgICAgICAgICBtX3dlYlByb2Nlc3NJc1VucmVzcG9uc2l2
ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgV0tSZXRhaW5QdHI8V0tJbWFnZVJlZj4gd2luZG93U25hcHNob3QgPSBUZXN0Q29udHJv
bGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+d2luZG93U25hcHNob3RJbWFnZSgpOwor
ICAgICAgICAgICAgQVNTRVJUKHdpbmRvd1NuYXBzaG90KTsKKyAgICAgICAgICAgIGR1bXBQaXhl
bHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKHdpbmRvd1NuYXBzaG90LmdldCgpLCBtX3JlcGFpbnRS
ZWN0cy5nZXQoKSwgVGVzdEludm9jYXRpb246OlNuYXBzaG90UmVzdWx0VHlwZTo6V2ViVmlldyk7
CiAgICAgICAgIH0KLSAgICAgICAgZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQobV9w
aXhlbFJlc3VsdC5nZXQoKSwgbV9yZXBhaW50UmVjdHMuZ2V0KCkpOwogICAgIH0KIAogICAgIGZw
dXRzKCIjRU9GXG4iLCBzdGRvdXQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5oCmluZGV4IDU5ODFhZGEuLjYxN2JiYTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmgKQEAgLTYzLDcgKzYzLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lk
IGR1bXBSZXN1bHRzKCk7CiAgICAgc3RhdGljIHZvaWQgZHVtcChjb25zdCBjaGFyKiB0ZXh0VG9T
dGRvdXQsIGNvbnN0IGNoYXIqIHRleHRUb1N0ZGVyciA9IDAsIGJvb2wgc2VlbkVycm9yID0gZmFs
c2UpOwotICAgIHZvaWQgZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoV0tJbWFnZVJl
ZiwgV0tBcnJheVJlZiByZXBhaW50UmVjdHMpOworICAgIGVudW0gY2xhc3MgU25hcHNob3RSZXN1
bHRUeXBlIHsgV2ViVmlldywgV2ViQ29udGVudHMgfTsKKyAgICB2b2lkIGR1bXBQaXhlbHNBbmRD
b21wYXJlV2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYsIFdLQXJyYXlSZWYgcmVwYWludFJlY3RzLCBT
bmFwc2hvdFJlc3VsdFR5cGUpOwogICAgIHZvaWQgZHVtcEF1ZGlvKFdLRGF0YVJlZik7CiAgICAg
Ym9vbCBjb21wYXJlQWN0dWFsSGFzaFRvRXhwZWN0ZWRBbmREdW1wUmVzdWx0cyhjb25zdCBjaGFy
WzMzXSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2Fpcm8vVGVzdElu
dm9jYXRpb25DYWlyby5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NhaXJvL1Rlc3RJbnZv
Y2F0aW9uQ2Fpcm8uY3BwCmluZGV4IDRmYWZiMTguLjM3NmYzMTkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvY2Fpcm8vVGVzdEludm9jYXRpb25DYWlyby5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcApAQCAtMTA2
LDkgKzEwNiw5IEBAIHN0YXRpYyB2b2lkIHBhaW50UmVwYWludFJlY3RPdmVybGF5KGNhaXJvX3N1
cmZhY2VfdCogc3VyZmFjZSwgV0tBcnJheVJlZiByZXBhaW50CiAgICAgY2Fpcm9fZGVzdHJveShj
b250ZXh0KTsKIH0KIAotdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVX
aXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiwgV0tBcnJheVJlZiByZXBhaW50UmVjdHMpCit2b2lkIFRl
c3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChXS0ltYWdlUmVm
IGltYWdlLCBXS0FycmF5UmVmIHJlcGFpbnRSZWN0cywgU25hcHNob3RSZXN1bHRUeXBlKQogewot
ICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IFdLSW1hZ2VDcmVhdGVDYWlyb1N1cmZhY2Uo
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPndpbmRvd1NuYXBzaG90
SW1hZ2UoKS5nZXQoKSk7CisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gV0tJbWFnZUNy
ZWF0ZUNhaXJvU3VyZmFjZShpbWFnZSk7CiAKICAgICBpZiAocmVwYWludFJlY3RzKQogICAgICAg
ICBwYWludFJlcGFpbnRSZWN0T3ZlcmxheShzdXJmYWNlLCByZXBhaW50UmVjdHMpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHAKaW5kZXggZWM4Mzky
YS4uN2YzZjJiOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52
b2NhdGlvbkNHLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0
aW9uQ0cuY3BwCkBAIC0xNTQsMTYgKzE1NCw5IEBAIHN0YXRpYyB2b2lkIHBhaW50UmVwYWludFJl
Y3RPdmVybGF5KENHQ29udGV4dFJlZiBjb250ZXh0LCBXS0ltYWdlUmVmIGltYWdlLCBXS0FyCiAg
ICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKIH0KIAotdm9pZCBUZXN0SW52b2Nh
dGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiBpbWFnZSwg
V0tBcnJheVJlZiByZXBhaW50UmVjdHMpCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxz
QW5kQ29tcGFyZVdpdGhFeHBlY3RlZChXS0ltYWdlUmVmIGltYWdlLCBXS0FycmF5UmVmIHJlcGFp
bnRSZWN0cywgU25hcHNob3RSZXN1bHRUeXBlIHNuYXBzaG90VHlwZSkKIHsKLSAgICBQbGF0Zm9y
bVdlYlZpZXcqIHdlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZp
ZXcoKTsKLSAgICBXS1JldGFpblB0cjxXS0ltYWdlUmVmPiB3aW5kb3dTbmFwc2hvdCA9IHdlYlZp
ZXctPndpbmRvd1NuYXBzaG90SW1hZ2UoKTsKLQotICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+
IGNvbnRleHQ7Ci0gICAgaWYgKHdpbmRvd1NuYXBzaG90KQotICAgICAgICBjb250ZXh0ID0gYWRv
cHRDRihjcmVhdGVDR0NvbnRleHRGcm9tSW1hZ2Uod2luZG93U25hcHNob3QuZ2V0KCksIERvbnRG
bGlwR3JhcGhpY3NDb250ZXh0KSk7Ci0gICAgZWxzZQotICAgICAgICBjb250ZXh0ID0gYWRvcHRD
RihjcmVhdGVDR0NvbnRleHRGcm9tSW1hZ2UoaW1hZ2UpKTsKKyAgICBSZXRhaW5QdHI8Q0dDb250
ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRDRihjcmVhdGVDR0NvbnRleHRGcm9tSW1hZ2UoaW1hZ2Us
IHNuYXBzaG90VHlwZSA9PSBTbmFwc2hvdFJlc3VsdFR5cGU6OldlYlZpZXcgPyBEb250RmxpcEdy
YXBoaWNzQ29udGV4dCA6IEZsaXBHcmFwaGljc0NvbnRleHQpKTsKIAogICAgIC8vIEEgbm9uLW51
bGwgcmVwYWludFJlY3RzIGFycmF5IG1lYW5zIHdlJ3JlIGRvaW5nIGEgcmVwYWludCB0ZXN0Lgog
ICAgIGlmIChyZXBhaW50UmVjdHMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262050</attachid>
            <date>2015-09-29 00:49:31 -0700</date>
            <delta_ts>2015-09-29 00:49:31 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wtr-printing.diff</filename>
            <type>text/plain</type>
            <size>20207</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyMWZmY2RlLi5mYmQ3MTM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDkt
MTYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAg
IHByaW50aW5nIGRvZXMgbm90IHVzZSBtaW5pbXVtIHBhZ2Ugem9vbSBmYWN0b3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODUwNworCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVuc2tpcCBwcmludGluZyByZWZ0
ZXN0cyB0aGF0IHNob3VsZCBwYXNzIG5vdy4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0
RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9u
czoKKwogMjAxNS0wOS0yOCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIGZhc3QvcmVwYWludC9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLmh0bWwgYW5kIGZhc3Qv
cmVwYWludC9maXhlZC5odG1sIGFyZSBmbGFreS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggMzlkYmRhYy4uYTY2ZjA3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI0MTEsMTAgKzI0MTEsNiBAQCB3ZWJraXQu
b3JnL2IvMTQzODcxIHN2Zy9XM0MtU1ZHLTEuMS1TRS9saW5raW5nLXVyaS0wMS1iLnN2ZyBbIEZh
aWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTQzOTI0IGZhc3QvdGV4dC9oeXBoZW4tbWluLXByZWZl
cnJlZC13aWR0aC5odG1sIFsgU2tpcCBdCiAKLXdlYmtpdC5vcmcvYi8xNDQ0OTQgcHJpbnRpbmcv
cXVpcmtzLXBlcmNlbnRhZ2UtaGVpZ2h0LWJvZHkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzE0NDQ5NCBwcmludGluZy9xdWlya3MtcGVyY2VudGFnZS1oZWlnaHQuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE0NDQ5NCBwcmludGluZy9zdGFu
ZGFyZHMtcGVyY2VudGFnZS1oZWlnaHRzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Vi
a2l0Lm9yZy9iLzE0NDU3NSBodHRwL3Rlc3RzL2xvYWRpbmcvcHJvbW90ZS1pbWctcHJlbG9hZC1w
cmlvcml0eS5odG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNDQ2NzMgZmFzdC9mb3Jt
cy9idXR0b24tbGluZS1oZWlnaHQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDg2ZmZjMDQuLjBl
YjQ3YjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTE5OSwxMCArMTk5LDYgQEAgd2Via2l0Lm9yZy9iLzEwNTk1NCBodHRwL3Rlc3RzL25h
dmlnYXRpb24vcmVsb2FkLXN1YmZyYW1lLW9iamVjdC5odG1sIFsgRmFpbHVyZQogCiB3ZWJraXQu
b3JnL2IvMTA1OTYwIHBsdWdpbnMvbmF2aWdhdG9yLXBsdWdpbnMuaHRtbCBbIEZhaWx1cmUgXQog
Ci13ZWJraXQub3JnL2IvMTA4NTA3IHByaW50aW5nL3F1aXJrcy1wZXJjZW50YWdlLWhlaWdodC1i
b2R5Lmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8xMDg1MDcgcHJpbnRpbmcvcXVpcmtzLXBl
cmNlbnRhZ2UtaGVpZ2h0Lmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8xMDg1MDcgcHJpbnRp
bmcvc3RhbmRhcmRzLXBlcmNlbnRhZ2UtaGVpZ2h0cy5odG1sIFsgU2tpcCBdCi0KIHdlYmtpdC5v
cmcvYi8xMDQ5NTQgaHR0cC90ZXN0cy9jYW52YXMvY2FudmFzLXNsb3ctZm9udC1sb2FkaW5nLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyBGbGFreSBldmVyeXdoZXJlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDlhZTQ5MTkuLjg3ZWVkYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNS0w
OS0xNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgcHJpbnRpbmcgZG9lcyBub3QgdXNlIG1pbmltdW0gcGFnZSB6b29tIGZhY3RvcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NTA3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBwYWdlL1ByaW50Q29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OmJlZ2luQW5kQ29tcHV0ZVBh
Z2VSZWN0c1dpdGhQYWdlU2l6ZSk6CisgICAgICAgIEhlbHBlciBmdW5jdGlvbiB0byBzaGFyZSBj
b21tb24gY29kZSBmcm9tIG51bWJlck9mUGFnZXMoKSBhbmQKKyAgICAgICAgc3Bvb2xBbGxQYWdl
c1dpdGhCb3VuZGFyaWVzKCkuCisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6Om51bWJl
ck9mUGFnZXMpOiBVc2UgYmVnaW5BbmRDb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplKCkuCisg
ICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmll
cyk6IFVzZQorICAgICAgICBiZWdpbkFuZENvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUoKSBh
bmQgZG9uJ3QgZmxpcCB0aGUgWSBheGlzCisgICAgICAgIGZvciBub24gQ29jb2EgcGxhdGZvcm1z
LgorICAgICAgICAqIHBhZ2UvUHJpbnRDb250ZXh0Lmg6CisKIDIwMTUtMDktMjggIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gRml4IGJ1aWxkIGFm
dGVyIHIxOTAyOTUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKaW5kZXggZjYyZGZh
Ni4uMjYzNzUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcApAQCAtMzAxLDMy
ICszMDEsMzYgQEAgU3RyaW5nIFByaW50Q29udGV4dDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhl
bHMoRnJhbWUqIGZyYW1lLCBpbnQgcGFnZU51bWJlciwgaW4KICAgICAgICAgICAgU3RyaW5nOjpu
dW1iZXIobWFyZ2luVG9wKSArICcgJyArIFN0cmluZzo6bnVtYmVyKG1hcmdpblJpZ2h0KSArICcg
JyArIFN0cmluZzo6bnVtYmVyKG1hcmdpbkJvdHRvbSkgKyAnICcgKyBTdHJpbmc6Om51bWJlciht
YXJnaW5MZWZ0KTsKIH0KIAotaW50IFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhGcmFtZSog
ZnJhbWUsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscykKK2Jvb2wgUHJpbnRDb250
ZXh0OjpiZWdpbkFuZENvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUoRnJhbWUmIGZyYW1lLCBj
b25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMpCiB7Ci0gICAgZnJhbWUtPmRvY3VtZW50
KCktPnVwZGF0ZUxheW91dCgpOworICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSB8fCAhZnJhbWUu
dmlldygpIHx8ICFmcmFtZS5kb2N1bWVudCgpLT5yZW5kZXJWaWV3KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIEZsb2F0UmVjdCBwYWdlUmVjdChGbG9hdFBvaW50KDAsIDApLCBwYWdl
U2l6ZUluUGl4ZWxzKTsKLSAgICBQcmludENvbnRleHQgcHJpbnRDb250ZXh0KGZyYW1lKTsKLSAg
ICBwcmludENvbnRleHQuYmVnaW4ocGFnZVJlY3Qud2lkdGgoKSwgcGFnZVJlY3QuaGVpZ2h0KCkp
OworICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworCisgICAgYmVnaW4ocGFn
ZVNpemVJblBpeGVscy53aWR0aCgpLCBwYWdlU2l6ZUluUGl4ZWxzLmhlaWdodCgpKTsKICAgICAv
LyBBY2NvdW50IGZvciBzaHJpbmstdG8tZml0LgogICAgIEZsb2F0U2l6ZSBzY2FsZWRQYWdlU2l6
ZSA9IHBhZ2VTaXplSW5QaXhlbHM7Ci0gICAgc2NhbGVkUGFnZVNpemUuc2NhbGUoZnJhbWUtPnZp
ZXcoKS0+Y29udGVudHNTaXplKCkud2lkdGgoKSAvIHBhZ2VSZWN0LndpZHRoKCkpOwotICAgIHBy
aW50Q29udGV4dC5jb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplKHNjYWxlZFBhZ2VTaXplLCBm
YWxzZSk7Ci0gICAgcmV0dXJuIHByaW50Q29udGV4dC5wYWdlQ291bnQoKTsKKyAgICBzY2FsZWRQ
YWdlU2l6ZS5zY2FsZShmcmFtZS52aWV3KCktPmNvbnRlbnRzU2l6ZSgpLndpZHRoKCkgLyBwYWdl
U2l6ZUluUGl4ZWxzLndpZHRoKCkpOworICAgIGNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUo
c2NhbGVkUGFnZVNpemUsIGZhbHNlKTsKKworICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFBy
aW50Q29udGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKEZyYW1lKiBmcmFtZSwgR3Jh
cGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJ
blBpeGVscykKK2ludCBQcmludENvbnRleHQ6Om51bWJlck9mUGFnZXMoRnJhbWUmIGZyYW1lLCBj
b25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMpCiB7Ci0gICAgaWYgKCFmcmFtZS0+ZG9j
dW1lbnQoKSB8fCAhZnJhbWUtPnZpZXcoKSB8fCAhZnJhbWUtPmRvY3VtZW50KCktPnJlbmRlclZp
ZXcoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxh
eW91dCgpOworICAgIFByaW50Q29udGV4dCBwcmludENvbnRleHQoJmZyYW1lKTsKKyAgICBpZiAo
IXByaW50Q29udGV4dC5iZWdpbkFuZENvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUoZnJhbWUs
IHBhZ2VTaXplSW5QaXhlbHMpKQorICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBQcmludENvbnRl
eHQgcHJpbnRDb250ZXh0KGZyYW1lKTsKLSAgICBwcmludENvbnRleHQuYmVnaW4ocGFnZVNpemVJ
blBpeGVscy53aWR0aCgpLCBwYWdlU2l6ZUluUGl4ZWxzLmhlaWdodCgpKTsKKyAgICByZXR1cm4g
cHJpbnRDb250ZXh0LnBhZ2VDb3VudCgpOworfQogCi0gICAgZmxvYXQgcGFnZUhlaWdodDsKLSAg
ICBwcmludENvbnRleHQuY29tcHV0ZVBhZ2VSZWN0cyhGbG9hdFJlY3QoRmxvYXRQb2ludCgwLCAw
KSwgcGFnZVNpemVJblBpeGVscyksIDAsIDAsIDEsIHBhZ2VIZWlnaHQpOwordm9pZCBQcmludENv
bnRleHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmllcyhGcmFtZSYgZnJhbWUsIEdyYXBoaWNz
Q29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhl
bHMpCit7CisgICAgUHJpbnRDb250ZXh0IHByaW50Q29udGV4dCgmZnJhbWUpOworICAgIGlmICgh
cHJpbnRDb250ZXh0LmJlZ2luQW5kQ29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZShmcmFtZSwg
cGFnZVNpemVJblBpeGVscykpCisgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IGZsb2F0IHBh
Z2VXaWR0aCA9IHBhZ2VTaXplSW5QaXhlbHMud2lkdGgoKTsKICAgICBjb25zdCBWZWN0b3I8SW50
UmVjdD4mIHBhZ2VSZWN0cyA9IHByaW50Q29udGV4dC5wYWdlUmVjdHMoKTsKQEAgLTMzNywxOCAr
MzQxLDI0IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJpZXMo
RnJhbWUqIGZyYW1lLCBHcmFwaGljc0NvbnRleHQmIGdyCiAgICAgZ3JhcGhpY3NDb250ZXh0LmZp
bGxSZWN0KEZsb2F0UmVjdCgwLCAwLCBwYWdlV2lkdGgsIHRvdGFsSGVpZ2h0KSk7CiAKICAgICBn
cmFwaGljc0NvbnRleHQuc2F2ZSgpOworI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGdyYXBoaWNz
Q29udGV4dC50cmFuc2xhdGUoMCwgdG90YWxIZWlnaHQpOwogICAgIGdyYXBoaWNzQ29udGV4dC5z
Y2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyNlbmRpZgogCiAgICAgaW50IGN1cnJlbnRIZWlnaHQg
PSAwOwogICAgIGZvciAoc2l6ZV90IHBhZ2VJbmRleCA9IDA7IHBhZ2VJbmRleCA8IHBhZ2VSZWN0
cy5zaXplKCk7IHBhZ2VJbmRleCsrKSB7CiAgICAgICAgIC8vIERyYXcgYSBsaW5lIGZvciBhIHBh
Z2UgYm91bmRhcnkgaWYgdGhpcyBpc24ndCB0aGUgZmlyc3QgcGFnZS4KICAgICAgICAgaWYgKHBh
Z2VJbmRleCA+IDApIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgICAgIGludCBib3Vu
ZGFyeUxpbmVZID0gY3VycmVudEhlaWdodDsKKyNlbHNlCisgICAgICAgICAgICBpbnQgYm91bmRh
cnlMaW5lWSA9IGN1cnJlbnRIZWlnaHQgLSAxOworI2VuZGlmCiAgICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQuc2F2ZSgpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZUNv
bG9yKENvbG9yKDAsIDAsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcigwLCAwLCAyNTUpLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3TGluZShJbnRQb2lu
dCgwLCBjdXJyZW50SGVpZ2h0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbnRQb2ludChwYWdlV2lkdGgsIGN1cnJlbnRIZWlnaHQpKTsKKyAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5kcmF3TGluZShJbnRQb2ludCgwLCBib3VuZGFyeUxpbmVZKSwgSW50UG9pbnQo
cGFnZVdpZHRoLCBib3VuZGFyeUxpbmVZKSk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQu
cmVzdG9yZSgpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UHJpbnRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5oCmluZGV4
IDdjNTFjYTQuLmQzZDNlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuaApAQCAtNzMs
MTEgKzczLDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHBh
Z2VQcm9wZXJ0eShGcmFtZSosIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgaW50IHBhZ2VOdW1i
ZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzUGFnZUJveFZpc2libGUoRnJh
bWUqLCBpbnQgcGFnZU51bWJlcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBw
YWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhGcmFtZSosIGludCBwYWdlTnVtYmVyLCBpbnQgd2lk
dGgsIGludCBoZWlnaHQsIGludCBtYXJnaW5Ub3AsIGludCBtYXJnaW5SaWdodCwgaW50IG1hcmdp
bkJvdHRvbSwgaW50IG1hcmdpbkxlZnQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBpbnQg
bnVtYmVyT2ZQYWdlcyhGcmFtZSosIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscyk7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGludCBudW1iZXJPZlBhZ2VzKEZyYW1lJiwgY29u
c3QgRmxvYXRTaXplJiBwYWdlU2l6ZUluUGl4ZWxzKTsKICAgICAvLyBEcmF3IGFsbCBwYWdlcyBp
bnRvIGEgZ3JhcGhpY3MgY29udGV4dCB3aXRoIGxpbmVzIHdoaWNoIG1lYW4gcGFnZSBib3VuZGFy
aWVzLgogICAgIC8vIFRoZSBoZWlnaHQgb2YgdGhlIGdyYXBoaWNzIGNvbnRleHQgc2hvdWxkIGJl
CiAgICAgLy8gKHBhZ2VTaXplSW5QaXhlbHMuaGVpZ2h0KCkgKyAxKSAqIG51bWJlci1vZi1wYWdl
cyAtIDEKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzcG9vbEFsbFBhZ2VzV2l0aEJv
dW5kYXJpZXMoRnJhbWUqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmIHBhZ2VT
aXplSW5QaXhlbHMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNwb29sQWxsUGFn
ZXNXaXRoQm91bmRhcmllcyhGcmFtZSYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6
ZSYgcGFnZVNpemVJblBpeGVscyk7CiAKIHByb3RlY3RlZDoKICAgICBGcmFtZSogbV9mcmFtZTsK
QEAgLTg1LDYgKzg1LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0
ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZUludGVybmFsKGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJ
blBpeGVscywgYm9vbCBhbGxvd0hvcml6b250YWxUaWxpbmcpOworICAgIGJvb2wgYmVnaW5BbmRD
b21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplKEZyYW1lJiwgY29uc3QgRmxvYXRTaXplJiBwYWdl
U2l6ZUluUGl4ZWxzKTsKIAogICAgIC8vIFVzZWQgdG8gcHJldmVudCBtaXN1c2VzIG9mIGJlZ2lu
KCkgYW5kIGVuZCgpIChlLmcuLCBjYWxsIGVuZCB3aXRob3V0IGJlZ2luKS4KICAgICBib29sIG1f
aXNQcmludGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAzNTk4MTky
Li5jNTRjNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMDEzLDcg
KzIwMTMsNyBAQCBpbnQgSW50ZXJuYWxzOjpudW1iZXJPZlBhZ2VzKGZsb2F0IHBhZ2VXaWR0aCwg
ZmxvYXQgcGFnZUhlaWdodCkKICAgICBpZiAoIWZyYW1lKCkpCiAgICAgICAgIHJldHVybiAtMTsK
IAotICAgIHJldHVybiBQcmludENvbnRleHQ6Om51bWJlck9mUGFnZXMoZnJhbWUoKSwgRmxvYXRT
aXplKHBhZ2VXaWR0aCwgcGFnZUhlaWdodCkpOworICAgIHJldHVybiBQcmludENvbnRleHQ6Om51
bWJlck9mUGFnZXMoKmZyYW1lKCksIEZsb2F0U2l6ZShwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpKTsK
IH0KIAogU3RyaW5nIEludGVybmFsczo6cGFnZVByb3BlcnR5KFN0cmluZyBwcm9wZXJ0eU5hbWUs
IGludCBwYWdlTnVtYmVyLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpp
bmRleCBjNTBlYjRhLi5jNTVjNDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTUtMDktMTYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIHByaW50aW5nIGRvZXMgbm90IHVzZSBtaW5pbXVtIHBhZ2Ugem9vbSBmYWN0b3IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODUwNwor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFBhc3MgYSB0aGUg
ZnJhbWUgYXMgYSByZWZlcmVuY2UgaW5zdGVhZCBvZiB1c2luZyBwb2ludGVycy4KKworICAgICAg
ICAqIE1pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW06CisgICAgICAgICgtW1dlYkZyYW1lIG51bWJl
ck9mUGFnZXNXaXRoUGFnZVdpZHRoOnBhZ2VIZWlnaHQ6XSk6CisgICAgICAgICgtW1dlYkZyYW1l
IHByaW50VG9DR0NvbnRleHQ6cGFnZVdpZHRoOnBhZ2VIZWlnaHQ6XSk6CisKIDIwMTUtMDktMjUg
IEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4g
dXAgdXNlciBtZWRpYSByZXF1ZXN0IGludGVybmFsIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01p
c2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KaW5kZXggNzgyMTBhYy4uYzBjYWZlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCkBAIC0yNzYsNyArMjc2LDEx
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAtIChpbnQpbnVtYmVyT2ZQYWdlc1dpdGhQ
YWdlV2lkdGg6KGZsb2F0KXBhZ2VXaWR0aEluUGl4ZWxzIHBhZ2VIZWlnaHQ6KGZsb2F0KXBhZ2VI
ZWlnaHRJblBpeGVscwogewotICAgIHJldHVybiBQcmludENvbnRleHQ6Om51bWJlck9mUGFnZXMo
X3ByaXZhdGUtPmNvcmVGcmFtZSwgRmxvYXRTaXplKHBhZ2VXaWR0aEluUGl4ZWxzLCBwYWdlSGVp
Z2h0SW5QaXhlbHMpKTsKKyAgICBGcmFtZSogY29yZUZyYW1lID0gX3ByaXZhdGUtPmNvcmVGcmFt
ZTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJu
IFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcygqY29yZUZyYW1lLCBGbG9hdFNpemUocGFnZVdp
ZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscykpOwogfQogCiAtICh2b2lkKXByaW50VG9D
R0NvbnRleHQ6KENHQ29udGV4dFJlZiljZ0NvbnRleHQgcGFnZVdpZHRoOihmbG9hdClwYWdlV2lk
dGhJblBpeGVscyBwYWdlSGVpZ2h0OihmbG9hdClwYWdlSGVpZ2h0SW5QaXhlbHMKQEAgLTI4Niw3
ICsyOTAsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dChjZ0NvbnRleHQpOwotICAgIFByaW50
Q29udGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKGNvcmVGcmFtZSwgZ3JhcGhpY3ND
b250ZXh0LCBGbG9hdFNpemUocGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscykp
OworICAgIFByaW50Q29udGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKCpjb3JlRnJh
bWUsIGdyYXBoaWNzQ29udGV4dCwgRmxvYXRTaXplKHBhZ2VXaWR0aEluUGl4ZWxzLCBwYWdlSGVp
Z2h0SW5QaXhlbHMpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGI0MjUyODcuLmFkZGZjYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxNS0wOS0xNiAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgcHJpbnRpbmcgZG9lcyBub3Qg
dXNlIG1pbmltdW0gcGFnZSB6b29tIGZhY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NTA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgQWRkIGtXS1NuYXBzaG90T3B0aW9uc1ByaW50aW5nIGZsYWcgdG8g
aW5kaWNhdGUgdGhlIHNuYXBzaG90CisgICAgICAgIHNob3VsZCBiZSBnZW5lcmF0ZWQgaW4gcHJp
bnRpbmcgbW9kZS4KKworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0ltYWdlLmg6CisgICAgICAg
ICogU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oOgorICAgICAgICAoV2ViS2l0Ojp0b1Nu
YXBzaG90T3B0aW9ucyk6CisgICAgICAgICogU2hhcmVkL0ltYWdlT3B0aW9ucy5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6bnVtYmVyT2ZQYWdlcyk6IFBhc3MgdGhlIGZyYW1l
IGFzIGEKKyAgICAgICAgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2NhbGVkU25hcHNob3RXaXRoT3B0aW9ucyk6IEluIGNhc2Ugb2YgcHJpbnRpbmcsCisgICAg
ICAgIGNhbGN1bGF0ZSB0aGUgYml0bWFwIGhlaWdodCBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIHBh
Z2VzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZSk6IEluIGNhc2Ug
b2YgcHJpbnRpbmcsIHVzZQorICAgICAgICBQcmludENvbnRleHQ6OnNwb29sQWxsUGFnZXNXaXRo
Qm91bmRhcmllcygpIGFuZCByZXR1cm4uCisKIDIwMTUtMDktMjggIEJyZW50IEZ1bGdoYW0gIDxi
ZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRXhwb3NlICdnZW9tZXRyeUZsaXBwZWQnIHN0
YXRlIGZvciBkZWJ1Z2dpbmcvbG9nZ2luZyBwdXJwb3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLSW1hZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9XS0ltYWdlLmgKaW5kZXggOGRkNTZjYy4uMjdhMzQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tJbWFnZS5oCkBAIC00NSw2ICs0NSw3IEBAIGVudW0gewogICAgIGtXS1NuYXBzaG90
T3B0aW9uc1BhaW50U2VsZWN0aW9uUmVjdGFuZ2xlID0gMSA8PCAzLAogICAgIGtXS1NuYXBzaG90
T3B0aW9uc0ZvcmNlQmxhY2tUZXh0ID0gMSA8PCA0LAogICAgIGtXS1NuYXBzaG90T3B0aW9uc0Zv
cmNlV2hpdGVUZXh0ID0gMSA8PCA1LAorICAgIGtXS1NuYXBzaG90T3B0aW9uc1ByaW50aW5nID0g
MSA8PCA2LAogfTsKIHR5cGVkZWYgdWludDMyX3QgV0tTbmFwc2hvdE9wdGlvbnM7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAppbmRleCAwMzU0NmM2
Li40ZjE3ZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFy
ZWRBUElDYXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJ
Q2FzdC5oCkBAIC05NTEsNiArOTUxLDggQEAgaW5saW5lIFNuYXBzaG90T3B0aW9ucyB0b1NuYXBz
aG90T3B0aW9ucyhXS1NuYXBzaG90T3B0aW9ucyB3a1NuYXBzaG90T3B0aW9ucykKICAgICAgICAg
c25hcHNob3RPcHRpb25zIHw9IFNuYXBzaG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0OwogICAgIGlm
ICh3a1NuYXBzaG90T3B0aW9ucyAmIGtXS1NuYXBzaG90T3B0aW9uc0ZvcmNlV2hpdGVUZXh0KQog
ICAgICAgICBzbmFwc2hvdE9wdGlvbnMgfD0gU25hcHNob3RPcHRpb25zRm9yY2VXaGl0ZVRleHQ7
CisgICAgaWYgKHdrU25hcHNob3RPcHRpb25zICYga1dLU25hcHNob3RPcHRpb25zUHJpbnRpbmcp
CisgICAgICAgIHNuYXBzaG90T3B0aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNQcmludGluZzsKIAog
ICAgIHJldHVybiBzbmFwc2hvdE9wdGlvbnM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvSW1hZ2VPcHRpb25zLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW1hZ2VPcHRp
b25zLmgKaW5kZXggOTliYTc5Zi4uMzEyY2E2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0ltYWdlT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbWFnZU9w
dGlvbnMuaApAQCAtNDAsNiArNDAsNyBAQCBlbnVtIHsKICAgICBTbmFwc2hvdE9wdGlvbnNFeGNs
dWRlRGV2aWNlU2NhbGVGYWN0b3IgPSAxIDw8IDUsCiAgICAgU25hcHNob3RPcHRpb25zRm9yY2VC
bGFja1RleHQgPSAxIDw8IDYsCiAgICAgU25hcHNob3RPcHRpb25zRm9yY2VXaGl0ZVRleHQgPSAx
IDw8IDcsCisgICAgU25hcHNob3RPcHRpb25zUHJpbnRpbmcgPSAxIDw8IDgsCiB9OwogdHlwZWRl
ZiB1aW50MzJfdCBTbmFwc2hvdE9wdGlvbnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXgg
MDM5MzY1OC4uMjQ0NDAxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTQwNyw3ICs0MDcs
NyBAQCBpbnQgSW5qZWN0ZWRCdW5kbGU6Om51bWJlck9mUGFnZXMoV2ViRnJhbWUqIGZyYW1lLCBk
b3VibGUgcGFnZVdpZHRoSW5QaXhlbHMsIGRvdQogICAgIGlmICghcGFnZUhlaWdodEluUGl4ZWxz
KQogICAgICAgICBwYWdlSGVpZ2h0SW5QaXhlbHMgPSBjb3JlRnJhbWUtPnZpZXcoKS0+aGVpZ2h0
KCk7CiAKLSAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpudW1iZXJPZlBhZ2VzKGNvcmVGcmFtZSwg
RmxvYXRTaXplKHBhZ2VXaWR0aEluUGl4ZWxzLCBwYWdlSGVpZ2h0SW5QaXhlbHMpKTsKKyAgICBy
ZXR1cm4gUHJpbnRDb250ZXh0OjpudW1iZXJPZlBhZ2VzKCpjb3JlRnJhbWUsIEZsb2F0U2l6ZShw
YWdlV2lkdGhJblBpeGVscywgcGFnZUhlaWdodEluUGl4ZWxzKSk7CiB9CiAKIGludCBJbmplY3Rl
ZEJ1bmRsZTo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKFdlYkZyYW1lKiBmcmFtZSwgY29uc3Qg
U3RyaW5nJiBpZCwgZG91YmxlIHBhZ2VXaWR0aEluUGl4ZWxzLCBkb3VibGUgcGFnZUhlaWdodElu
UGl4ZWxzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IGFjMWEzMGQuLjZmZDMwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE3MTcsMTAgKzE3MTcsMTggQEAgUGFzc1JlZlB0cjxX
ZWJJbWFnZT4gV2ViUGFnZTo6c2NhbGVkU25hcHNob3RXaXRoT3B0aW9ucyhjb25zdCBJbnRSZWN0
JiByZWN0LCBkb3UKIHsKICAgICBJbnRSZWN0IHNuYXBzaG90UmVjdCA9IHJlY3Q7CiAgICAgSW50
U2l6ZSBiaXRtYXBTaXplID0gc25hcHNob3RSZWN0LnNpemUoKTsKLSAgICBkb3VibGUgc2NhbGVG
YWN0b3IgPSBhZGRpdGlvbmFsU2NhbGVGYWN0b3I7Ci0gICAgaWYgKCEob3B0aW9ucyAmIFNuYXBz
aG90T3B0aW9uc0V4Y2x1ZGVEZXZpY2VTY2FsZUZhY3RvcikpCi0gICAgICAgIHNjYWxlRmFjdG9y
ICo9IGNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgYml0bWFwU2l6ZS5zY2Fs
ZShzY2FsZUZhY3Rvcik7CisgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQcmludGlu
ZykgeworICAgICAgICBBU1NFUlQoYWRkaXRpb25hbFNjYWxlRmFjdG9yID09IDEpOworICAgICAg
ICBGcmFtZSogY29yZUZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOworICAgICAgICBp
ZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBiaXRt
YXBTaXplLnNldEhlaWdodChQcmludENvbnRleHQ6Om51bWJlck9mUGFnZXMoKmNvcmVGcmFtZSwg
Yml0bWFwU2l6ZSkgKiAoYml0bWFwU2l6ZS5oZWlnaHQoKSArIDEpIC0gMSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgZG91YmxlIHNjYWxlRmFjdG9yID0gYWRkaXRpb25hbFNjYWxlRmFjdG9yOwor
ICAgICAgICBpZiAoIShvcHRpb25zICYgU25hcHNob3RPcHRpb25zRXhjbHVkZURldmljZVNjYWxl
RmFjdG9yKSkKKyAgICAgICAgICAgIHNjYWxlRmFjdG9yICo9IGNvcmVQYWdlKCktPmRldmljZVNj
YWxlRmFjdG9yKCk7CisgICAgICAgIGJpdG1hcFNpemUuc2NhbGUoc2NhbGVGYWN0b3IpOworICAg
IH0KIAogICAgIHJldHVybiBzbmFwc2hvdEF0U2l6ZShyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25z
KTsKIH0KQEAgLTE3NDYsNiArMTc1NCwxMSBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdl
OjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJgogCiAg
ICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+Yml0bWFwKCktPmNyZWF0ZUdyYXBo
aWNzQ29udGV4dCgpOwogCisgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQcmludGlu
ZykgeworICAgICAgICBQcmludENvbnRleHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmllcygq
Y29yZUZyYW1lLCAqZ3JhcGhpY3NDb250ZXh0LCBzbmFwc2hvdFJlY3Quc2l6ZSgpKTsKKyAgICAg
ICAgcmV0dXJuIHNuYXBzaG90LnJlbGVhc2UoKTsKKyAgICB9CisKICAgICBDb2xvciBkb2N1bWVu
dEJhY2tncm91bmRDb2xvciA9IGZyYW1lVmlldy0+ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKTsK
ICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSAoY29yZUZyYW1lLT5zZXR0aW5ncygpLmJhY2tn
cm91bmRTaG91bGRFeHRlbmRCZXlvbmRQYWdlKCkgJiYgZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3Iu
aXNWYWxpZCgpKSA/IGRvY3VtZW50QmFja2dyb3VuZENvbG9yIDogZnJhbWVWaWV3LT5iYXNlQmFj
a2dyb3VuZENvbG9yKCk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5maWxsUmVjdChJbnRSZWN0KElu
dFBvaW50KCksIGJpdG1hcFNpemUpLCBiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGQ2NzMyODUuLmFmYWJmYmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNS0wOS0xNiAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgcHJpbnRpbmcgZG9lcyBub3Qg
dXNlIG1pbmltdW0gcGFnZSB6b29tIGZhY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NTA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciBhbHdheXMgdGFrZXMgdGhlIHNuYXBz
aG90cyBmcm9tIHRoZSBVSSBwcm9jZXNzCisgICAgICAgIChleHBlY3QgZm9yIElPUyksIHNvIGlu
IHRoZSBjYXNlIG9mIHByaW50aW5nLCB0aGUgbGF5b3V0IGluIHRoZQorICAgICAgICB3ZWIgdmll
dyBpcyBub3QgdGhlIGV4cGVjdGVkIG9uZS4gV2hlbiBwcmludGluZywgd2UgbmVlZCB0byB0YWtl
CisgICAgICAgIHRoZSBzbmFwc2hvdCBpbiB0aGUgd2ViIHByb2Nlc3MgYW5kIGVuc3VyZSBpdCdz
IHJlbmRlcmVkIHdpdGggYQorICAgICAgICBQcmludENvbnRleHQuCisKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAg
ICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcCk6IFdoZW4gZHVtcGluZyBwaXhlbHMs
IHBhc3MKKyAgICAgICAga1dLU25hcHNob3RPcHRpb25zUHJpbnRpbmcgb3B0aW9uIHRvCisgICAg
ICAgIFdLQnVuZGxlUGFnZUNyZWF0ZVNuYXBzaG90V2l0aE9wdGlvbnMoKSB3aGVuIHByaW50aW5n
LgorCiAyMDE1LTA5LTI4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbV1RSXSBQaXhlbCB0ZXN0cyBnZW5lcmF0ZSB0aGUgc25hcHNob3RzIHR3
aWNlIGluIFdlYiBhbmQgVUkgcHJvY2Vzc2VzCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKaW5kZXgg
N2U1YzdhZC4uODYzMTY0OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAtODk0LDE1ICs4
OTQsMjcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXAoKQogICAgIGlmIChpbmplY3Rl
ZEJ1bmRsZS5zaG91bGREdW1wUGl4ZWxzKCkgJiYgaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigp
LT5zaG91bGREdW1wUGl4ZWxzKCkpIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIC8vIElP
UyBkb2Vzbid0IGltcGxlbWVudCBQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBzaG90SW1hZ2Uo
KSB5ZXQsIHNvIHdlIG5lZWQgdG8gZ2VuZXJhdGUgdGhlIHNuYXBzaG90IGluIHRoZSB3ZWIgcHJv
Y2Vzcy4KLSAgICAgICAgV0tTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucyA9IGtXS1NuYXBzaG90T3B0
aW9uc1NoYXJlYWJsZSB8IGtXS1NuYXBzaG90T3B0aW9uc0luVmlld0Nvb3JkaW5hdGVzOwotICAg
ICAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGREdW1wU2VsZWN0aW9u
UmVjdCgpKQotICAgICAgICAgICAgb3B0aW9ucyB8PSBrV0tTbmFwc2hvdE9wdGlvbnNQYWludFNl
bGVjdGlvblJlY3RhbmdsZTsKLQotICAgICAgICBpbmplY3RlZEJ1bmRsZS5zZXRQaXhlbFJlc3Vs
dChhZG9wdFdLKFdLQnVuZGxlUGFnZUNyZWF0ZVNuYXBzaG90V2l0aE9wdGlvbnMobV9wYWdlLCBX
S0J1bmRsZUZyYW1lR2V0VmlzaWJsZUNvbnRlbnRCb3VuZHMoV0tCdW5kbGVQYWdlR2V0TWFpbkZy
YW1lKG1fcGFnZSkpLCBvcHRpb25zKSkuZ2V0KCkpOworICAgICAgICBib29sIHNob3VsZENyZWF0
ZVNuYXBzaG90ID0gdHJ1ZTsKICNlbHNlCi0gICAgICAgIGluamVjdGVkQnVuZGxlLnNldFBpeGVs
UmVzdWx0SXNQZW5kaW5nKHRydWUpOworICAgICAgICBib29sIHNob3VsZENyZWF0ZVNuYXBzaG90
ID0gaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5pc1ByaW50aW5nKCk7CiAjZW5kaWYKLSAg
ICAgICAgaWYgKFdLQnVuZGxlUGFnZUlzVHJhY2tpbmdSZXBhaW50cyhtX3BhZ2UpKQorICAgICAg
ICBpZiAoc2hvdWxkQ3JlYXRlU25hcHNob3QpIHsKKyAgICAgICAgICAgIFdLU25hcHNob3RPcHRp
b25zIG9wdGlvbnMgPSBrV0tTbmFwc2hvdE9wdGlvbnNTaGFyZWFibGU7CisgICAgICAgICAgICBX
S1JlY3Qgc25hcHNob3RSZWN0ID0gV0tCdW5kbGVGcmFtZUdldFZpc2libGVDb250ZW50Qm91bmRz
KFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShtX3BhZ2UpKTsKKworICAgICAgICAgICAgaWYgKGlu
amVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+aXNQcmludGluZygpKQorICAgICAgICAgICAgICAg
IG9wdGlvbnMgfD0ga1dLU25hcHNob3RPcHRpb25zUHJpbnRpbmc7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBvcHRpb25zIHw9IGtXS1NuYXBzaG90T3B0aW9uc0luVmlld0Nv
b3JkaW5hdGVzOworICAgICAgICAgICAgICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVy
KCktPnNob3VsZER1bXBTZWxlY3Rpb25SZWN0KCkpCisgICAgICAgICAgICAgICAgICAgIG9wdGlv
bnMgfD0ga1dLU25hcHNob3RPcHRpb25zUGFpbnRTZWxlY3Rpb25SZWN0YW5nbGU7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGluamVjdGVkQnVuZGxlLnNldFBpeGVsUmVzdWx0KGFkb3B0
V0soV0tCdW5kbGVQYWdlQ3JlYXRlU25hcHNob3RXaXRoT3B0aW9ucyhtX3BhZ2UsIHNuYXBzaG90
UmVjdCwgb3B0aW9ucykpLmdldCgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBpbmpl
Y3RlZEJ1bmRsZS5zZXRQaXhlbFJlc3VsdElzUGVuZGluZyh0cnVlKTsKKworICAgICAgICBpZiAo
V0tCdW5kbGVQYWdlSXNUcmFja2luZ1JlcGFpbnRzKG1fcGFnZSkgJiYgIWluamVjdGVkQnVuZGxl
LnRlc3RSdW5uZXIoKS0+aXNQcmludGluZygpKQogICAgICAgICAgICAgaW5qZWN0ZWRCdW5kbGUu
c2V0UmVwYWludFJlY3RzKGFkb3B0V0soV0tCdW5kbGVQYWdlQ29weVRyYWNrZWRSZXBhaW50UmVj
dHMobV9wYWdlKSkuZ2V0KCkpOwogICAgIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>