<?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>35961</bug_id>
          
          <creation_ts>2010-03-10 02:04:33 -0800</creation_ts>
          <short_desc>Implement render style selection for pages</short_desc>
          <delta_ts>2010-06-15 20:23:30 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://dev.w3.org/csswg/css3-page/#page-selector-and-context</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>35853</dependson>
          <blocked>15548</blocked>
    
    <blocked>37538</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yuzo Fujishima">yuzo</reporter>
          <assigned_to name="Yuzo Fujishima">yuzo</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>douglas</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>hamaji</cc>
    
    <cc>hayato</cc>
    
    <cc>hyatt</cc>
    
    <cc>jamesr</cc>
    
    <cc>peter.linss</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>197935</commentid>
    <comment_count>0</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-03-10 02:04:33 -0800</bug_when>
    <thetext>We need a mechanism to select render style for pages to implement
http://dev.w3.org/csswg/css3-page/#page-selector-and-context</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197937</commentid>
    <comment_count>1</comment_count>
      <attachid>50381</attachid>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-03-10 02:08:06 -0800</bug_when>
    <thetext>Created attachment 50381
Implement render style selection for pages to support CSS3 Paged Media.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197939</commentid>
    <comment_count>2</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-03-10 02:10:00 -0800</bug_when>
    <thetext>The first patch above is still work-in-progress but I&apos;d appreciate early feedbacks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197940</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-10 02:11:53 -0800</bug_when>
    <thetext>Attachment 50381 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/css/CSSStyleSelector.cpp:1482:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/css/CSSStyleSelector.cpp:3027:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/css/CSSStyleSelector.h:185:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 3 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197945</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-10 02:14:05 -0800</bug_when>
    <thetext>Attachment 50381 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/570020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197946</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-10 02:17:28 -0800</bug_when>
    <thetext>Attachment 50381 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/526015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197947</commentid>
    <comment_count>6</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-03-10 02:22:59 -0800</bug_when>
    <thetext>Hi, Eric,

Thank you for your attention.

For successful compilation, this patch requires all the patches in the dependence chain, i.e., 35853, 35851, ...

Yuzo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197960</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-10 03:43:02 -0800</bug_when>
    <thetext>Attachment 50381 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/542012</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197962</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-10 03:48:50 -0800</bug_when>
    <thetext>Attachment 50381 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/528026</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198496</commentid>
    <comment_count>9</comment_count>
      <attachid>50474</attachid>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-03-10 22:51:17 -0800</bug_when>
    <thetext>Created attachment 50474
Implement render style selection for pages to support CSS3 Paged Media.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203824</commentid>
    <comment_count>10</comment_count>
      <attachid>51598</attachid>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-03-24 23:22:06 -0700</bug_when>
    <thetext>Created attachment 51598
Implement render style selection for pages to support CSS3 Paged Media.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212982</commentid>
    <comment_count>11</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-04-15 12:41:25 -0700</bug_when>
    <thetext>Is there any way to test this?  Some bits (like left/right determination, etc) seem really fiddly and easy to regress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224443</commentid>
    <comment_count>12</comment_count>
      <attachid>55811</attachid>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-05-12 00:10:28 -0700</bug_when>
    <thetext>Created attachment 55811
Implement render style selection for pages to support CSS3 Paged Media.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224447</commentid>
    <comment_count>13</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-05-12 00:12:57 -0700</bug_when>
    <thetext>Reviewers,

Please hold off reviewing the patch. It is not finished yet.

I uploaded it only because to keep the patch applicable to the current HEAD.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224450</commentid>
    <comment_count>14</comment_count>
      <attachid>55811</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-05-12 00:25:03 -0700</bug_when>
    <thetext>Comment on attachment 55811
Implement render style selection for pages to support CSS3 Paged Media.

Clearing r? flag since it&apos;s not ready for review.  Yuzo, you can upload with the --no-review flag to avoid setting r?.  This will keep it out of the review queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232307</commentid>
    <comment_count>15</comment_count>
      <attachid>57448</attachid>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-05-31 03:21:43 -0700</bug_when>
    <thetext>Created attachment 57448
Implement render style selection for pages to support CSS3 Paged Media.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232309</commentid>
    <comment_count>16</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-05-31 03:25:47 -0700</bug_when>
    <thetext>Hi, Reviewers,

I&apos;d appreciate it if you could resume reviewing the patch.
I&apos;ve extended layoutTestController and added tests.

I&apos;ll add stubs for non-Mac platforms once the core part of the patch looks good.

Yuzo

PS
James, thank you for the comment. I&apos;ll use --no-review next time I need it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232336</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-31 05:51:36 -0700</bug_when>
    <thetext>Attachment 57448 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/2819007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232350</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-31 06:56:16 -0700</bug_when>
    <thetext>Attachment 57448 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/2763010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232643</commentid>
    <comment_count>19</comment_count>
      <attachid>57522</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-06-01 00:45:47 -0700</bug_when>
    <thetext>Created attachment 57522
trivial build and style fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232646</commentid>
    <comment_count>20</comment_count>
      <attachid>57522</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-06-01 00:58:56 -0700</bug_when>
    <thetext>Comment on attachment 57522
trivial build and style fixes

I did trivial fixes as Yuzo is out of office.


WebCore/css/CSSStyleSelector.cpp:1561
 +      matchPageRules(m_userStyle, isLeft, isFirst, page);
Does this mean we can use @page with user stylesheet? If so, I think we should add a layout test to check this. I think we can remove this for now and put FIXME?


WebCore/css/html.css:689
 +      margin: 1in;
I think this is a temporal value and needs FIXME. For example, chromium-linux is using Left = 0.25 in, Right = 0.25 in, Top = 0.25 in, Bottom = 0.56 in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235719</commentid>
    <comment_count>21</comment_count>
      <attachid>58227</attachid>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-06-09 02:47:15 -0700</bug_when>
    <thetext>Created attachment 58227
Add a test for line height.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235724</commentid>
    <comment_count>22</comment_count>
      <attachid>58228</attachid>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-06-09 03:04:44 -0700</bug_when>
    <thetext>Created attachment 58228
Add a test for user style sheet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235727</commentid>
    <comment_count>23</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-06-09 03:07:21 -0700</bug_when>
    <thetext>Thank you for the review. Can you take another look?

(In reply to comment #20)
&gt; (From update of attachment 57522 [details])
&gt; I did trivial fixes as Yuzo is out of office.
&gt; 
&gt; 
&gt; WebCore/css/CSSStyleSelector.cpp:1561
&gt;  +      matchPageRules(m_userStyle, isLeft, isFirst, page);
&gt; Does this mean we can use @page with user stylesheet? If so, I think we should add a layout test to check this. I think we can remove this for now and put FIXME?

I think user stylesheet can contain @page rules. Any reasons it can&apos;t?
I added a test.

&gt; 
&gt; 
&gt; WebCore/css/html.css:689
&gt;  +      margin: 1in;
&gt; I think this is a temporal value and needs FIXME. For example, chromium-linux is using Left = 0.25 in, Right = 0.25 in, Top = 0.25 in, Bottom = 0.56 in.

Added a FIXME comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236181</commentid>
    <comment_count>24</comment_count>
      <attachid>58333</attachid>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-06-09 23:36:00 -0700</bug_when>
    <thetext>Created attachment 58333
Add a test for zoom, to confirm the necessity of calling updateFont().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236184</commentid>
    <comment_count>25</comment_count>
      <attachid>58333</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-06-09 23:51:02 -0700</bug_when>
    <thetext>Comment on attachment 58333
Add a test for zoom, to confirm the necessity of calling updateFont().

This change looks good to me. Please wait for a while before landing this. Other reviewers might have some opinions.

LayoutTests/printing/page-rule-selection.html:22
 +          if (window.layoutTestController) {
Unnecessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238657</commentid>
    <comment_count>26</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-06-15 20:23:30 -0700</bug_when>
    <thetext>Committed r61232: &lt;http://trac.webkit.org/changeset/61232&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50381</attachid>
            <date>2010-03-10 02:08:06 -0800</date>
            <delta_ts>2010-03-10 22:51:11 -0800</delta_ts>
            <desc>Implement render style selection for pages to support CSS3 Paged Media.</desc>
            <filename>bug-35961-20100310190804.patch</filename>
            <type>text/plain</type>
            <size>6177</size>
            <attacher name="Yuzo Fujishima">yuzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGU2NzBmOS4uNGM0MjM2NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wMy0xMCAgWXV6byBGdWppc2hp
bWEgIDx5dXpvQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW1wbGVtZW50IHJlbmRlciBzdHlsZSBzZWxlY3Rpb24gZm9yIHBhZ2Vz
IHRvIHN1cHBvcnQgQ1NTMyBQYWdlZCBNZWRpYS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM1OTYxCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvclBh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hQYWdlUnVsZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hQYWdlUnVsZXNGb3JM
aXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmlzTGVmdFBhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6aXNGaXJzdFBhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cGFnZU5hbWUpOgorICAgICAgICAqIGNzcy9D
U1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpp
c1JpZ2h0UGFnZSk6CisKIDIwMTAtMDMtMDcgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcAppbmRleCAyNWNhMGZkLi5hMGM3Y2QwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcApAQCAtMTQ4NCw2ICsxNDg0LDM1IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0
eWxlU2VsZWN0b3I6OnBzZXVkb1N0eWxlRm9yRWxlbWVudChQc2V1ZG9JZCBwc2V1ZG8sCiAgICAg
cmV0dXJuIG1fc3R5bGUucmVsZWFzZSgpOwogfQogCitQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBD
U1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCkgeworICAgIGluaXRG
b3JTdHlsZVJlc29sdmUoMCk7CisgICAgbV9zdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsK
KyAgICBtX3N0eWxlLT5pbmhlcml0RnJvbShtX3Jvb3RFbGVtZW50U3R5bGUpOworCisgICAgYm9v
bCBpc0xlZnQgPSBpc0xlZnRQYWdlKHBhZ2VJbmRleCk7CisgICAgYm9vbCBpc0ZpcnN0ID0gaXNG
aXJzdFBhZ2UocGFnZUluZGV4KTsKKyAgICBTdHJpbmcgcGFnZSA9IHBhZ2VOYW1lKHBhZ2VJbmRl
eCk7CisgICAgaWYgKG1fbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzKSB7CisgICAgICAgIG1hdGNo
UGFnZVJ1bGVzKG1fdXNlclN0eWxlLCBpc0xlZnQsIGlzRmlyc3QsIHBhZ2UpOworICAgICAgICBt
YXRjaFBhZ2VSdWxlcyhtX2F1dGhvclN0eWxlLCBpc0xlZnQsIGlzRmlyc3QsIHBhZ2UpOworICAg
IH0KKyAgICBtX2xpbmVIZWlnaHRWYWx1ZSA9IDA7CisgICAgYXBwbHlEZWNsYXJhdGlvbnModHJ1
ZSwgZmFsc2UsIDAsIG1fbWF0Y2hlZERlY2xzLnNpemUoKSAtIDEpOworCisgICAgLy8gSWYgb3Vy
IGZvbnQgZ290IGRpcnRpZWQsIGdvIGFoZWFkIGFuZCB1cGRhdGUgaXQgbm93LgorICAgIGlmICht
X2ZvbnREaXJ0eSkKKyAgICAgICAgdXBkYXRlRm9udCgpOworCisgICAgLy8gTGluZS1oZWlnaHQg
aXMgc2V0IHdoZW4gd2UgYXJlIHN1cmUgd2UgZGVjaWRlZCBvbiB0aGUgZm9udC1zaXplCisgICAg
aWYgKG1fbGluZUhlaWdodFZhbHVlKQorICAgICAgICBhcHBseVByb3BlcnR5KENTU1Byb3BlcnR5
TGluZUhlaWdodCwgbV9saW5lSGVpZ2h0VmFsdWUpOworCisgICAgYXBwbHlEZWNsYXJhdGlvbnMo
ZmFsc2UsIGZhbHNlLCAwLCBtX21hdGNoZWREZWNscy5zaXplKCkgLSAxKTsKKworICAgIC8vIE5v
dyByZXR1cm4gdGhlIHN0eWxlLgorICAgIHJldHVybiBtX3N0eWxlLnJlbGVhc2UoKTsKK30KKwog
I2lmIEVOQUJMRShEQVRBR1JJRCkKIAogUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVT
ZWxlY3Rvcjo6cHNldWRvU3R5bGVGb3JEYXRhR3JpZENvbHVtbihEYXRhR3JpZENvbHVtbiosIFJl
bmRlclN0eWxlKikKQEAgLTI5NTYsNiArMjk4NSw3NSBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6
OmFwcGx5RGVjbGFyYXRpb25zKGJvb2wgYXBwbHlGaXJzdCwgYm9vbCBpc0ltcG9ydGFudCwKICAg
ICB9CiB9CiAKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hQYWdlUnVsZXMoQ1NTUnVsZVNl
dCogcnVsZXMsIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgU3RyaW5nJiBwYWdl
TmFtZSkKK3sKKyAgICBtX21hdGNoZWRSdWxlcy5jbGVhcigpOworCisgICAgaWYgKCFydWxlcykK
KyAgICAgICAgcmV0dXJuOworCisgICAgbWF0Y2hQYWdlUnVsZXNGb3JMaXN0KHJ1bGVzLT5nZXRQ
YWdlUnVsZXMoKSwgaXNMZWZ0UGFnZSwgaXNGaXJzdFBhZ2UsIHBhZ2VOYW1lKTsKKworICAgIC8v
IElmIHdlIGRpZG4ndCBtYXRjaCBhbnkgcnVsZXMsIHdlJ3JlIGRvbmUuCisgICAgaWYgKG1fbWF0
Y2hlZFJ1bGVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gU29ydCB0aGUg
c2V0IG9mIG1hdGNoZWQgcnVsZXMuCisgICAgLy8gRklYTUU6IFByb3Blcmx5IGltcGxlbWVudCBD
U1NTZWxlY3Rvcjo6c3BlY2lmaWNpdHkgZm9yIHBhZ2UgcnVsZXMuCisgICAgc29ydE1hdGNoZWRS
dWxlcygwLCBtX21hdGNoZWRSdWxlcy5zaXplKCkpOworCisgICAgLy8gTm93IHRyYW5zZmVyIHRo
ZSBzZXQgb2YgbWF0Y2hlZCBydWxlcyBvdmVyIHRvIG91ciBsaXN0IG9mIGRlY2xzLgorICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21hdGNoZWRSdWxlcy5zaXplKCk7IGkrKykKKyAgICAg
ICAgYWRkTWF0Y2hlZERlY2xhcmF0aW9uKG1fbWF0Y2hlZFJ1bGVzW2ldLT5ydWxlKCktPmRlY2xh
cmF0aW9uKCkpOworfQorCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUGFnZVJ1bGVzRm9y
TGlzdChDU1NSdWxlRGF0YUxpc3QqIHJ1bGVzLCBib29sIGlzTGVmdFBhZ2UsIGJvb2wgaXNGaXJz
dFBhZ2UsIFN0cmluZyYgcGFnZU5hbWUpCit7CisgICAgaWYgKCFydWxlcykKKyAgICAgICAgcmV0
dXJuOworCisgICAgZm9yIChDU1NSdWxlRGF0YSogZCA9IHJ1bGVzLT5maXJzdCgpOyBkOyBkID0g
ZC0+bmV4dCgpKSB7CisgICAgICAgIENTU1N0eWxlUnVsZSogcnVsZSA9IGQtPnJ1bGUoKTsKKyAg
ICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3RvckxvY2FsTmFtZSA9IGQtPnNlbGVjdG9y
KCktPm1fdGFnLmxvY2FsTmFtZSgpOworICAgICAgICBpZiAoc2VsZWN0b3JMb2NhbE5hbWUgIT0g
c3RhckF0b20gJiYgc2VsZWN0b3JMb2NhbE5hbWUgIT0gcGFnZU5hbWUpCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgcHNldWRvVHlwZSA9IGQt
PnNlbGVjdG9yKCktPnBzZXVkb1R5cGUoKTsKKyAgICAgICAgaWYgKChwc2V1ZG9UeXBlID09IENT
U1NlbGVjdG9yOjpQc2V1ZG9MZWZ0UGFnZSAmJiAhaXNMZWZ0UGFnZSkKKyAgICAgICAgICAgIHx8
IChwc2V1ZG9UeXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9SaWdodFBhZ2UgJiYgaXNMZWZ0UGFn
ZSkKKyAgICAgICAgICAgIHx8IChwc2V1ZG9UeXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJz
dFBhZ2UgJiYgIWlzRmlyc3RQYWdlKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IC8vIElmIHRoZSBydWxlIGhhcyBubyBwcm9wZXJ0aWVzIHRvIGFwcGx5LCB0aGVuIGlnbm9yZSBp
dC4KKyAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGRlY2wgPSBydWxlLT5kZWNs
YXJhdGlvbigpOworICAgICAgICBpZiAoIWRlY2wgfHwgIWRlY2wtPmxlbmd0aCgpKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gQWRkIHRoaXMgcnVsZSB0byBvdXIgbGlzdCBv
ZiBtYXRjaGVkIHJ1bGVzLgorICAgICAgICBhZGRNYXRjaGVkUnVsZShkKTsKKyAgICB9Cit9CisK
K2Jvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6aXNMZWZ0UGFnZShpbnQgcGFnZUluZGV4KSBjb25zdAor
eworICAgIGJvb2wgaXNGaXJzdFBhZ2VMZWZ0ID0gZmFsc2U7CisgICAgaWYgKG1fcm9vdEVsZW1l
bnRTdHlsZS0+ZGlyZWN0aW9uKCkgPT0gUlRMKQorICAgICAgICBpc0ZpcnN0UGFnZUxlZnQgPSB0
cnVlOworCisgICAgcmV0dXJuIChwYWdlSW5kZXggKyAoaXNGaXJzdFBhZ2VMZWZ0ID8gMSA6IDAp
KSAlIDI7Cit9CisKK2Jvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6aXNGaXJzdFBhZ2UoaW50IHBhZ2VJ
bmRleCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogSW4gY2FzZSBvZiBmb3JjZWQgbGVmdC9yaWdo
dCBwYWdlLCBwYWdlIGF0IGluZGV4IDEgKG5vdCAwKSBjYW4gYmUgdGhlIGZpcnN0IHBhZ2UuCisg
ICAgcmV0dXJuIChwYWdlSW5kZXggPT0gMCk7Cit9CisKK1N0cmluZyBDU1NTdHlsZVNlbGVjdG9y
OjpwYWdlTmFtZShpbnQgLyogcGFnZUluZGV4ICovKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgcGFnZSBpbmRleCB0byBwYWdlIG5hbWUgbWFwcGluZy4KKyAgICByZXR1cm4gIiI7
Cit9CisKIHN0YXRpYyB2b2lkIGFwcGx5Q291bnRlckxpc3QoUmVuZGVyU3R5bGUqIHN0eWxlLCBD
U1NWYWx1ZUxpc3QqIGxpc3QsIGJvb2wgaXNSZXNldCkKIHsKICAgICBDb3VudGVyRGlyZWN0aXZl
TWFwJiBtYXAgPSBzdHlsZS0+YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMoKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuaAppbmRleCBlOTg1YjYzLi45MjcyM2U5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCkBA
IC05Myw2ICs5Myw4IEBAIHB1YmxpYzoKIAogICAgICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxl
PiBwc2V1ZG9TdHlsZUZvckVsZW1lbnQoUHNldWRvSWQsIEVsZW1lbnQqLCBSZW5kZXJTdHlsZSog
cGFyZW50U3R5bGUgPSAwKTsKIAorICAgICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHls
ZUZvclBhZ2UoaW50IHBhZ2VJbmRleCk7CisKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlRm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKIAogI2lmIEVOQUJMRShEQVRB
R1JJRCkKQEAgLTE3OCw2ICsxODAsMTMgQEAgcHVibGljOgogICAgICAgICB2b2lkIHNvcnRNYXRj
aGVkUnVsZXModW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCk7CiAKICAgICAgICAgdm9pZCBh
cHBseURlY2xhcmF0aW9ucyhib29sIGZpcnN0UGFzcywgYm9vbCBpbXBvcnRhbnQsIGludCBzdGFy
dEluZGV4LCBpbnQgZW5kSW5kZXgpOworCisgICAgICAgIHZvaWQgbWF0Y2hQYWdlUnVsZXMoQ1NT
UnVsZVNldCosIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgU3RyaW5nJiBwYWdl
TmFtZSk7CisgICAgICAgIHZvaWQgbWF0Y2hQYWdlUnVsZXNGb3JMaXN0KENTU1J1bGVEYXRhTGlz
dCosIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgU3RyaW5nJiBwYWdlTmFtZSk7
CisgICAgICAgIGJvb2wgaXNMZWZ0UGFnZShpbnQgcGFnZUluZGV4KSBjb25zdDsKKyAgICAgICAg
Ym9vbCBpc1JpZ2h0UGFnZShpbnQgcGFnZUluZGV4KSBjb25zdCB7IHJldHVybiAhaXNMZWZ0UGFn
ZShwYWdlSW5kZXgpOyB9OworICAgICAgICBib29sIGlzRmlyc3RQYWdlKGludCBwYWdlSW5kZXgp
IGNvbnN0OworICAgICAgICBTdHJpbmcgcGFnZU5hbWUoaW50IHBhZ2VJbmRleCkgY29uc3Q7CiAg
ICAgICAgIAogICAgICAgICBDU1NSdWxlU2V0KiBtX2F1dGhvclN0eWxlOwogICAgICAgICBDU1NS
dWxlU2V0KiBtX3VzZXJTdHlsZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50474</attachid>
            <date>2010-03-10 22:51:17 -0800</date>
            <delta_ts>2010-03-24 23:21:59 -0700</delta_ts>
            <desc>Implement render style selection for pages to support CSS3 Paged Media.</desc>
            <filename>bug-35961-20100311155115.patch</filename>
            <type>text/plain</type>
            <size>10125</size>
            <attacher name="Yuzo Fujishima">yuzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGU2NzBmOS4uMWE2MTRhNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wMy0xMCAgWXV6byBGdWppc2hp
bWEgIDx5dXpvQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW1wbGVtZW50IHJlbmRlciBzdHlsZSBzZWxlY3Rpb24gZm9yIHBhZ2Vz
IHRvIHN1cHBvcnQgQ1NTMyBQYWdlZCBNZWRpYS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM1OTYxCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55
OgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
ZWxlY3Rvcjo6c3BlY2lmaWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnNw
ZWNpZmljaXR5Rm9yUGFnZSk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmg6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6Q1NTU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU2VsZWN0b3I6OmlzRm9yUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6
c2V0Rm9yUGFnZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JQYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUGFnZVJ1bGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUGFnZVJ1bGVzRm9yTGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjppc0xlZnRQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2VsZWN0b3I6OmlzRmlyc3RQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0
eWxlU2VsZWN0b3I6OnBhZ2VOYW1lKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5o
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6aXNSaWdodFBhZ2UpOgorCiAy
MDEwLTAzLTA3ICBZdXpvIEZ1amlzaGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0dy
YW1tYXIueSBiL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQppbmRleCA1ZjI5ZDhmLi41NzA0MzAz
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKKysrIGIvV2ViQ29yZS9jc3Mv
Q1NTR3JhbW1hci55CkBAIC03NjgsMTkgKzc2OCwyNSBAQCBwYWdlX3NlbGVjdG9yOgogICAgICAg
ICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwogICAgICAg
ICAkJCA9IHAtPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKICAgICAgICAgJCQtPm1fdGFnID0g
UXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDEsIHAtPm1fZGVmYXVsdE5hbWVzcGFjZSk7CisgICAg
ICAgICQkLT5zZXRGb3JQYWdlKCk7CiAgICAgfQogICAgIHwgSURFTlQgcHNldWRvIHsKICAgICAg
ICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAg
ICAgJCQgPSAkMjsKLSAgICAgICAgaWYgKCQkKQorICAgICAgICBpZiAoJCQpIHsKICAgICAgICAg
ICAgICQkLT5tX3RhZyA9IFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQxLCBwLT5tX2RlZmF1bHRO
YW1lc3BhY2UpOworICAgICAgICAgICAgJCQtPnNldEZvclBhZ2UoKTsKKyAgICAgICAgfQogICAg
IH0KICAgICB8IHBzZXVkbyB7CiAgICAgICAgICQkID0gJDE7CisgICAgICAgIGlmICgkJCkKKyAg
ICAgICAgICAgICQkLT5zZXRGb3JQYWdlKCk7CiAgICAgfQogICAgIHwgLyogZW1wdHkgKi8gewog
ICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwog
ICAgICAgICAkJCA9IHAtPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNl
dEZvclBhZ2UoKTsKICAgICB9CiAgICAgOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NT
ZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXggZmMwNTYwNi4u
NGQ2Y2I3OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCisrKyBiL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcApAQCAtMzYsNiArMzYsOSBAQCB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCiB1bnNpZ25lZCBpbnQgQ1NTU2VsZWN0b3I6OnNwZWNpZmljaXR5KCkK
IHsKKyAgICBpZiAobV9pc0ZvclBhZ2UpCisgICAgICAgIHJldHVybiBzcGVjaWZpY2l0eUZvclBh
Z2UoKTsKKwogICAgIC8vIEZJWE1FOiBQc2V1ZG8tZWxlbWVudHMgYW5kIHBzZXVkby1jbGFzc2Vz
IGRvIG5vdCBoYXZlIHRoZSBzYW1lIHNwZWNpZmljaXR5LiBUaGlzIGZ1bmN0aW9uCiAgICAgLy8g
aXNuJ3QgcXVpdGUgY29ycmVjdC4KICAgICBpbnQgcyA9IChtX3RhZy5sb2NhbE5hbWUoKSA9PSBz
dGFyQXRvbSA/IDAgOiAxKTsKQEAgLTY1LDYgKzY4LDI3IEBAIHVuc2lnbmVkIGludCBDU1NTZWxl
Y3Rvcjo6c3BlY2lmaWNpdHkoKQogICAgIHJldHVybiBzICYgMHhmZmZmZmY7CiB9CiAKK3Vuc2ln
bmVkIENTU1NlbGVjdG9yOjpzcGVjaWZpY2l0eUZvclBhZ2UoKQoreworICAgIC8vIFNlZSBodHRw
Oi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MzLXBhZ2UvI2Nhc2NhZGluZy1hbmQtcGFnZS1jb250ZXh0
CisgICAgdW5zaWduZWQgcyA9IChtX3RhZy5sb2NhbE5hbWUoKSA9PSBzdGFyQXRvbSA/IDAgOiA0
KTsKKworICAgIHN3aXRjaCAocHNldWRvVHlwZSgpKSB7CisgICAgY2FzZSBQc2V1ZG9GaXJzdFBh
Z2U6CisgICAgICAgIHMgKz0gMjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQc2V1ZG9MZWZ0
UGFnZToKKyAgICBjYXNlIFBzZXVkb1JpZ2h0UGFnZToKKyAgICAgICAgcyArPSAxOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBzZXVkb05vdFBhcnNlZDoKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVy
biBzOworfQorCiB2b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSgpIGNvbnN0CiB7
CiAgICAgaWYgKG1fbWF0Y2ggIT0gUHNldWRvQ2xhc3MgJiYgbV9tYXRjaCAhPSBQc2V1ZG9FbGVt
ZW50KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaCBiL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yLmgKaW5kZXggNWE1NGI1Mi4uMWFiYjc0NyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3IuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCkBAIC0z
OSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9wYXJzZWRO
dGgoZmFsc2UpCiAgICAgICAgICAgICAsIG1faXNMYXN0SW5TZWxlY3Rvckxpc3QoZmFsc2UpCiAg
ICAgICAgICAgICAsIG1faGFzUmFyZURhdGEoZmFsc2UpCisgICAgICAgICAgICAsIG1faXNGb3JQ
YWdlKGZhbHNlKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNTAsNiArNTEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fcGFyc2VkTnRoKGZhbHNlKQogICAgICAg
ICAgICAgLCBtX2lzTGFzdEluU2VsZWN0b3JMaXN0KGZhbHNlKQogICAgICAgICAgICAgLCBtX2hh
c1JhcmVEYXRhKGZhbHNlKQorICAgICAgICAgICAgLCBtX2lzRm9yUGFnZShmYWxzZSkKICAgICAg
ICAgewogICAgICAgICB9CiAKQEAgLTIzOSw2ICsyNDEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGJvb2wgaXNMYXN0SW5TZWxlY3Rvckxpc3QoKSBjb25zdCB7IHJldHVybiBtX2lz
TGFzdEluU2VsZWN0b3JMaXN0OyB9CiAgICAgICAgIHZvaWQgc2V0TGFzdEluU2VsZWN0b3JMaXN0
KCkgeyBtX2lzTGFzdEluU2VsZWN0b3JMaXN0ID0gdHJ1ZTsgfQogCisgICAgICAgIGJvb2wgaXNG
b3JQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZvclBhZ2U7IH0KKyAgICAgICAgdm9pZCBzZXRG
b3JQYWdlKCkgeyBtX2lzRm9yUGFnZSA9IHRydWU7IH0KKwogICAgICAgICBtdXRhYmxlIEF0b21p
Y1N0cmluZyBtX3ZhbHVlOwogICAgICAgICBRdWFsaWZpZWROYW1lIG1fdGFnOwogCkBAIC0yNTAs
NyArMjU1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fcGFyc2VkTnRo
ICAgICAgICAgICAgICA6IDE7IC8vIFVzZWQgZm9yIDpudGgtKiAKICAgICAgICAgYm9vbCBtX2lz
TGFzdEluU2VsZWN0b3JMaXN0ICAgOiAxOwogICAgICAgICBib29sIG1faGFzUmFyZURhdGEgICAg
ICAgICAgICA6IDE7CisgICAgICAgIGJvb2wgbV9pc0ZvclBhZ2UgICAgICAgICAgICAgIDogMTsK
IAorICAgICAgICB1bnNpZ25lZCBzcGVjaWZpY2l0eUZvclBhZ2UoKTsKICAgICAgICAgdm9pZCBl
eHRyYWN0UHNldWRvVHlwZSgpIGNvbnN0OwogCiAgICAgICAgIHN0cnVjdCBSYXJlRGF0YSA6IE5v
bmNvcHlhYmxlIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
IGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggMjVjYTBmZC4uY2M4NDI0
NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTE0ODQsNiArMTQ4NCwzOSBAQCBQYXNz
UmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpwc2V1ZG9TdHlsZUZvckVsZW1l
bnQoUHNldWRvSWQgcHNldWRvLAogICAgIHJldHVybiBtX3N0eWxlLnJlbGVhc2UoKTsKIH0KIAor
UGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JQYWdlKGlu
dCBwYWdlSW5kZXgpIHsKKyAgICBpbml0Rm9yU3R5bGVSZXNvbHZlKDApOworICAgIE5vZGUqIHJl
ZmVyZW5jZUVsZW1lbnQgPSBtX2NoZWNrZXIubV9kb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7
CisgICAgcmVmZXJlbmNlRWxlbWVudCA9IChyZWZlcmVuY2VFbGVtZW50ID8gcmVmZXJlbmNlRWxl
bWVudCA6IG1fY2hlY2tlci5tX2RvY3VtZW50KTsKKyAgICBtX3Jvb3RFbGVtZW50U3R5bGUgPSBy
ZWZlcmVuY2VFbGVtZW50LT5yZW5kZXJTdHlsZSgpOworCisgICAgbV9zdHlsZSA9IFJlbmRlclN0
eWxlOjpjcmVhdGUoKTsKKyAgICBtX3N0eWxlLT5pbmhlcml0RnJvbShtX3Jvb3RFbGVtZW50U3R5
bGUpOworCisgICAgYm9vbCBpc0xlZnQgPSBpc0xlZnRQYWdlKHBhZ2VJbmRleCk7CisgICAgYm9v
bCBpc0ZpcnN0ID0gaXNGaXJzdFBhZ2UocGFnZUluZGV4KTsKKyAgICBTdHJpbmcgcGFnZSA9IHBh
Z2VOYW1lKHBhZ2VJbmRleCk7CisgICAgaWYgKG1fbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzKSB7
CisgICAgICAgIG1hdGNoUGFnZVJ1bGVzKG1fdXNlclN0eWxlLCBpc0xlZnQsIGlzRmlyc3QsIHBh
Z2UpOworICAgICAgICBtYXRjaFBhZ2VSdWxlcyhtX2F1dGhvclN0eWxlLCBpc0xlZnQsIGlzRmly
c3QsIHBhZ2UpOworICAgIH0KKyAgICBtX2xpbmVIZWlnaHRWYWx1ZSA9IDA7CisgICAgYXBwbHlE
ZWNsYXJhdGlvbnModHJ1ZSwgZmFsc2UsIDAsIG1fbWF0Y2hlZERlY2xzLnNpemUoKSAtIDEpOwor
CisgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRpcnRpZWQsIGdvIGFoZWFkIGFuZCB1cGRhdGUgaXQg
bm93LgorICAgIGlmIChtX2ZvbnREaXJ0eSkKKyAgICAgICAgdXBkYXRlRm9udCgpOworCisgICAg
Ly8gTGluZS1oZWlnaHQgaXMgc2V0IHdoZW4gd2UgYXJlIHN1cmUgd2UgZGVjaWRlZCBvbiB0aGUg
Zm9udC1zaXplCisgICAgaWYgKG1fbGluZUhlaWdodFZhbHVlKQorICAgICAgICBhcHBseVByb3Bl
cnR5KENTU1Byb3BlcnR5TGluZUhlaWdodCwgbV9saW5lSGVpZ2h0VmFsdWUpOworCisgICAgYXBw
bHlEZWNsYXJhdGlvbnMoZmFsc2UsIGZhbHNlLCAwLCBtX21hdGNoZWREZWNscy5zaXplKCkgLSAx
KTsKKworICAgIC8vIE5vdyByZXR1cm4gdGhlIHN0eWxlLgorICAgIHJldHVybiBtX3N0eWxlLnJl
bGVhc2UoKTsKK30KKwogI2lmIEVOQUJMRShEQVRBR1JJRCkKIAogUGFzc1JlZlB0cjxSZW5kZXJT
dHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVGb3JEYXRhR3JpZENvbHVtbihEYXRh
R3JpZENvbHVtbiosIFJlbmRlclN0eWxlKikKQEAgLTI5NTYsNiArMjk4OSw3NSBAQCB2b2lkIENT
U1N0eWxlU2VsZWN0b3I6OmFwcGx5RGVjbGFyYXRpb25zKGJvb2wgYXBwbHlGaXJzdCwgYm9vbCBp
c0ltcG9ydGFudCwKICAgICB9CiB9CiAKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hQYWdl
UnVsZXMoQ1NTUnVsZVNldCogcnVsZXMsIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFn
ZSwgU3RyaW5nJiBwYWdlTmFtZSkKK3sKKyAgICBtX21hdGNoZWRSdWxlcy5jbGVhcigpOworCisg
ICAgaWYgKCFydWxlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgbWF0Y2hQYWdlUnVsZXNGb3JM
aXN0KHJ1bGVzLT5nZXRQYWdlUnVsZXMoKSwgaXNMZWZ0UGFnZSwgaXNGaXJzdFBhZ2UsIHBhZ2VO
YW1lKTsKKworICAgIC8vIElmIHdlIGRpZG4ndCBtYXRjaCBhbnkgcnVsZXMsIHdlJ3JlIGRvbmUu
CisgICAgaWYgKG1fbWF0Y2hlZFJ1bGVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gU29ydCB0aGUgc2V0IG9mIG1hdGNoZWQgcnVsZXMuCisgICAgLy8gRklYTUU6IFByb3Bl
cmx5IGltcGxlbWVudCBDU1NTZWxlY3Rvcjo6c3BlY2lmaWNpdHkgZm9yIHBhZ2UgcnVsZXMuCisg
ICAgc29ydE1hdGNoZWRSdWxlcygwLCBtX21hdGNoZWRSdWxlcy5zaXplKCkpOworCisgICAgLy8g
Tm93IHRyYW5zZmVyIHRoZSBzZXQgb2YgbWF0Y2hlZCBydWxlcyBvdmVyIHRvIG91ciBsaXN0IG9m
IGRlY2xzLgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21hdGNoZWRSdWxlcy5zaXpl
KCk7IGkrKykKKyAgICAgICAgYWRkTWF0Y2hlZERlY2xhcmF0aW9uKG1fbWF0Y2hlZFJ1bGVzW2ld
LT5ydWxlKCktPmRlY2xhcmF0aW9uKCkpOworfQorCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1h
dGNoUGFnZVJ1bGVzRm9yTGlzdChDU1NSdWxlRGF0YUxpc3QqIHJ1bGVzLCBib29sIGlzTGVmdFBh
Z2UsIGJvb2wgaXNGaXJzdFBhZ2UsIFN0cmluZyYgcGFnZU5hbWUpCit7CisgICAgaWYgKCFydWxl
cykKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChDU1NSdWxlRGF0YSogZCA9IHJ1bGVzLT5m
aXJzdCgpOyBkOyBkID0gZC0+bmV4dCgpKSB7CisgICAgICAgIENTU1N0eWxlUnVsZSogcnVsZSA9
IGQtPnJ1bGUoKTsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3RvckxvY2FsTmFt
ZSA9IGQtPnNlbGVjdG9yKCktPm1fdGFnLmxvY2FsTmFtZSgpOworICAgICAgICBpZiAoc2VsZWN0
b3JMb2NhbE5hbWUgIT0gc3RhckF0b20gJiYgc2VsZWN0b3JMb2NhbE5hbWUgIT0gcGFnZU5hbWUp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUg
cHNldWRvVHlwZSA9IGQtPnNlbGVjdG9yKCktPnBzZXVkb1R5cGUoKTsKKyAgICAgICAgaWYgKChw
c2V1ZG9UeXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9MZWZ0UGFnZSAmJiAhaXNMZWZ0UGFnZSkK
KyAgICAgICAgICAgIHx8IChwc2V1ZG9UeXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9SaWdodFBh
Z2UgJiYgaXNMZWZ0UGFnZSkKKyAgICAgICAgICAgIHx8IChwc2V1ZG9UeXBlID09IENTU1NlbGVj
dG9yOjpQc2V1ZG9GaXJzdFBhZ2UgJiYgIWlzRmlyc3RQYWdlKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIC8vIElmIHRoZSBydWxlIGhhcyBubyBwcm9wZXJ0aWVzIHRvIGFwcGx5
LCB0aGVuIGlnbm9yZSBpdC4KKyAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGRl
Y2wgPSBydWxlLT5kZWNsYXJhdGlvbigpOworICAgICAgICBpZiAoIWRlY2wgfHwgIWRlY2wtPmxl
bmd0aCgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gQWRkIHRoaXMgcnVs
ZSB0byBvdXIgbGlzdCBvZiBtYXRjaGVkIHJ1bGVzLgorICAgICAgICBhZGRNYXRjaGVkUnVsZShk
KTsKKyAgICB9Cit9CisKK2Jvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6aXNMZWZ0UGFnZShpbnQgcGFn
ZUluZGV4KSBjb25zdAoreworICAgIGJvb2wgaXNGaXJzdFBhZ2VMZWZ0ID0gZmFsc2U7CisgICAg
aWYgKG1fcm9vdEVsZW1lbnRTdHlsZS0+ZGlyZWN0aW9uKCkgPT0gUlRMKQorICAgICAgICBpc0Zp
cnN0UGFnZUxlZnQgPSB0cnVlOworCisgICAgcmV0dXJuIChwYWdlSW5kZXggKyAoaXNGaXJzdFBh
Z2VMZWZ0ID8gMSA6IDApKSAlIDI7Cit9CisKK2Jvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6aXNGaXJz
dFBhZ2UoaW50IHBhZ2VJbmRleCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogSW4gY2FzZSBvZiBm
b3JjZWQgbGVmdC9yaWdodCBwYWdlLCBwYWdlIGF0IGluZGV4IDEgKG5vdCAwKSBjYW4gYmUgdGhl
IGZpcnN0IHBhZ2UuCisgICAgcmV0dXJuIChwYWdlSW5kZXggPT0gMCk7Cit9CisKK1N0cmluZyBD
U1NTdHlsZVNlbGVjdG9yOjpwYWdlTmFtZShpbnQgLyogcGFnZUluZGV4ICovKSBjb25zdAorewor
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcGFnZSBpbmRleCB0byBwYWdlIG5hbWUgbWFwcGluZy4K
KyAgICByZXR1cm4gIiI7Cit9CisKIHN0YXRpYyB2b2lkIGFwcGx5Q291bnRlckxpc3QoUmVuZGVy
U3R5bGUqIHN0eWxlLCBDU1NWYWx1ZUxpc3QqIGxpc3QsIGJvb2wgaXNSZXNldCkKIHsKICAgICBD
b3VudGVyRGlyZWN0aXZlTWFwJiBtYXAgPSBzdHlsZS0+YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMo
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaCBiL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuaAppbmRleCBlOTg1YjYzLi45MjcyM2U5IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTZWxlY3Rvci5oCkBAIC05Myw2ICs5Myw4IEBAIHB1YmxpYzoKIAogICAgICAgICBQYXNzUmVm
UHRyPFJlbmRlclN0eWxlPiBwc2V1ZG9TdHlsZUZvckVsZW1lbnQoUHNldWRvSWQsIEVsZW1lbnQq
LCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSAwKTsKIAorICAgICAgICBQYXNzUmVmUHRyPFJl
bmRlclN0eWxlPiBzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCk7CisKICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKIAog
I2lmIEVOQUJMRShEQVRBR1JJRCkKQEAgLTE3OCw2ICsxODAsMTMgQEAgcHVibGljOgogICAgICAg
ICB2b2lkIHNvcnRNYXRjaGVkUnVsZXModW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCk7CiAK
ICAgICAgICAgdm9pZCBhcHBseURlY2xhcmF0aW9ucyhib29sIGZpcnN0UGFzcywgYm9vbCBpbXBv
cnRhbnQsIGludCBzdGFydEluZGV4LCBpbnQgZW5kSW5kZXgpOworCisgICAgICAgIHZvaWQgbWF0
Y2hQYWdlUnVsZXMoQ1NTUnVsZVNldCosIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFn
ZSwgU3RyaW5nJiBwYWdlTmFtZSk7CisgICAgICAgIHZvaWQgbWF0Y2hQYWdlUnVsZXNGb3JMaXN0
KENTU1J1bGVEYXRhTGlzdCosIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgU3Ry
aW5nJiBwYWdlTmFtZSk7CisgICAgICAgIGJvb2wgaXNMZWZ0UGFnZShpbnQgcGFnZUluZGV4KSBj
b25zdDsKKyAgICAgICAgYm9vbCBpc1JpZ2h0UGFnZShpbnQgcGFnZUluZGV4KSBjb25zdCB7IHJl
dHVybiAhaXNMZWZ0UGFnZShwYWdlSW5kZXgpOyB9OworICAgICAgICBib29sIGlzRmlyc3RQYWdl
KGludCBwYWdlSW5kZXgpIGNvbnN0OworICAgICAgICBTdHJpbmcgcGFnZU5hbWUoaW50IHBhZ2VJ
bmRleCkgY29uc3Q7CiAgICAgICAgIAogICAgICAgICBDU1NSdWxlU2V0KiBtX2F1dGhvclN0eWxl
OwogICAgICAgICBDU1NSdWxlU2V0KiBtX3VzZXJTdHlsZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51598</attachid>
            <date>2010-03-24 23:22:06 -0700</date>
            <delta_ts>2010-05-12 00:10:19 -0700</delta_ts>
            <desc>Implement render style selection for pages to support CSS3 Paged Media.</desc>
            <filename>bug-35961-20100325152204.patch</filename>
            <type>text/plain</type>
            <size>9909</size>
            <attacher name="Yuzo Fujishima">yuzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGU2NzBmOS4uMWE2MTRhNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wMy0xMCAgWXV6byBGdWppc2hp
bWEgIDx5dXpvQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW1wbGVtZW50IHJlbmRlciBzdHlsZSBzZWxlY3Rpb24gZm9yIHBhZ2Vz
IHRvIHN1cHBvcnQgQ1NTMyBQYWdlZCBNZWRpYS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM1OTYxCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55
OgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
ZWxlY3Rvcjo6c3BlY2lmaWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnNw
ZWNpZmljaXR5Rm9yUGFnZSk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmg6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6Q1NTU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU2VsZWN0b3I6OmlzRm9yUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6
c2V0Rm9yUGFnZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JQYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUGFnZVJ1bGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUGFnZVJ1bGVzRm9yTGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjppc0xlZnRQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2VsZWN0b3I6OmlzRmlyc3RQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0
eWxlU2VsZWN0b3I6OnBhZ2VOYW1lKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5o
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6aXNSaWdodFBhZ2UpOgorCiAy
MDEwLTAzLTA3ICBZdXpvIEZ1amlzaGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0dy
YW1tYXIueSBiL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQppbmRleCA1ZjI5ZDhmLi41NzA0MzAz
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKKysrIGIvV2ViQ29yZS9jc3Mv
Q1NTR3JhbW1hci55CkBAIC03NjgsMTkgKzc2OCwyNSBAQCBwYWdlX3NlbGVjdG9yOgogICAgICAg
ICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwogICAgICAg
ICAkJCA9IHAtPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKICAgICAgICAgJCQtPm1fdGFnID0g
UXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDEsIHAtPm1fZGVmYXVsdE5hbWVzcGFjZSk7CisgICAg
ICAgICQkLT5zZXRGb3JQYWdlKCk7CiAgICAgfQogICAgIHwgSURFTlQgcHNldWRvIHsKICAgICAg
ICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAg
ICAgJCQgPSAkMjsKLSAgICAgICAgaWYgKCQkKQorICAgICAgICBpZiAoJCQpIHsKICAgICAgICAg
ICAgICQkLT5tX3RhZyA9IFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQxLCBwLT5tX2RlZmF1bHRO
YW1lc3BhY2UpOworICAgICAgICAgICAgJCQtPnNldEZvclBhZ2UoKTsKKyAgICAgICAgfQogICAg
IH0KICAgICB8IHBzZXVkbyB7CiAgICAgICAgICQkID0gJDE7CisgICAgICAgIGlmICgkJCkKKyAg
ICAgICAgICAgICQkLT5zZXRGb3JQYWdlKCk7CiAgICAgfQogICAgIHwgLyogZW1wdHkgKi8gewog
ICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwog
ICAgICAgICAkJCA9IHAtPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNl
dEZvclBhZ2UoKTsKICAgICB9CiAgICAgOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NT
ZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXggZmMwNTYwNi4u
NGQ2Y2I3OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCisrKyBiL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcApAQCAtMzYsNiArMzYsOSBAQCB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCiB1bnNpZ25lZCBpbnQgQ1NTU2VsZWN0b3I6OnNwZWNpZmljaXR5KCkK
IHsKKyAgICBpZiAobV9pc0ZvclBhZ2UpCisgICAgICAgIHJldHVybiBzcGVjaWZpY2l0eUZvclBh
Z2UoKTsKKwogICAgIC8vIEZJWE1FOiBQc2V1ZG8tZWxlbWVudHMgYW5kIHBzZXVkby1jbGFzc2Vz
IGRvIG5vdCBoYXZlIHRoZSBzYW1lIHNwZWNpZmljaXR5LiBUaGlzIGZ1bmN0aW9uCiAgICAgLy8g
aXNuJ3QgcXVpdGUgY29ycmVjdC4KICAgICBpbnQgcyA9IChtX3RhZy5sb2NhbE5hbWUoKSA9PSBz
dGFyQXRvbSA/IDAgOiAxKTsKQEAgLTY1LDYgKzY4LDI3IEBAIHVuc2lnbmVkIGludCBDU1NTZWxl
Y3Rvcjo6c3BlY2lmaWNpdHkoKQogICAgIHJldHVybiBzICYgMHhmZmZmZmY7CiB9CiAKK3Vuc2ln
bmVkIENTU1NlbGVjdG9yOjpzcGVjaWZpY2l0eUZvclBhZ2UoKQoreworICAgIC8vIFNlZSBodHRw
Oi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MzLXBhZ2UvI2Nhc2NhZGluZy1hbmQtcGFnZS1jb250ZXh0
CisgICAgdW5zaWduZWQgcyA9IChtX3RhZy5sb2NhbE5hbWUoKSA9PSBzdGFyQXRvbSA/IDAgOiA0
KTsKKworICAgIHN3aXRjaCAocHNldWRvVHlwZSgpKSB7CisgICAgY2FzZSBQc2V1ZG9GaXJzdFBh
Z2U6CisgICAgICAgIHMgKz0gMjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQc2V1ZG9MZWZ0
UGFnZToKKyAgICBjYXNlIFBzZXVkb1JpZ2h0UGFnZToKKyAgICAgICAgcyArPSAxOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBzZXVkb05vdFBhcnNlZDoKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVy
biBzOworfQorCiB2b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSgpIGNvbnN0CiB7
CiAgICAgaWYgKG1fbWF0Y2ggIT0gUHNldWRvQ2xhc3MgJiYgbV9tYXRjaCAhPSBQc2V1ZG9FbGVt
ZW50KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaCBiL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yLmgKaW5kZXggNWE1NGI1Mi4uMWFiYjc0NyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3IuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCkBAIC0z
OSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9wYXJzZWRO
dGgoZmFsc2UpCiAgICAgICAgICAgICAsIG1faXNMYXN0SW5TZWxlY3Rvckxpc3QoZmFsc2UpCiAg
ICAgICAgICAgICAsIG1faGFzUmFyZURhdGEoZmFsc2UpCisgICAgICAgICAgICAsIG1faXNGb3JQ
YWdlKGZhbHNlKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNTAsNiArNTEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fcGFyc2VkTnRoKGZhbHNlKQogICAgICAg
ICAgICAgLCBtX2lzTGFzdEluU2VsZWN0b3JMaXN0KGZhbHNlKQogICAgICAgICAgICAgLCBtX2hh
c1JhcmVEYXRhKGZhbHNlKQorICAgICAgICAgICAgLCBtX2lzRm9yUGFnZShmYWxzZSkKICAgICAg
ICAgewogICAgICAgICB9CiAKQEAgLTIzOSw2ICsyNDEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGJvb2wgaXNMYXN0SW5TZWxlY3Rvckxpc3QoKSBjb25zdCB7IHJldHVybiBtX2lz
TGFzdEluU2VsZWN0b3JMaXN0OyB9CiAgICAgICAgIHZvaWQgc2V0TGFzdEluU2VsZWN0b3JMaXN0
KCkgeyBtX2lzTGFzdEluU2VsZWN0b3JMaXN0ID0gdHJ1ZTsgfQogCisgICAgICAgIGJvb2wgaXNG
b3JQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZvclBhZ2U7IH0KKyAgICAgICAgdm9pZCBzZXRG
b3JQYWdlKCkgeyBtX2lzRm9yUGFnZSA9IHRydWU7IH0KKwogICAgICAgICBtdXRhYmxlIEF0b21p
Y1N0cmluZyBtX3ZhbHVlOwogICAgICAgICBRdWFsaWZpZWROYW1lIG1fdGFnOwogCkBAIC0yNTAs
NyArMjU1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fcGFyc2VkTnRo
ICAgICAgICAgICAgICA6IDE7IC8vIFVzZWQgZm9yIDpudGgtKiAKICAgICAgICAgYm9vbCBtX2lz
TGFzdEluU2VsZWN0b3JMaXN0ICAgOiAxOwogICAgICAgICBib29sIG1faGFzUmFyZURhdGEgICAg
ICAgICAgICA6IDE7CisgICAgICAgIGJvb2wgbV9pc0ZvclBhZ2UgICAgICAgICAgICAgIDogMTsK
IAorICAgICAgICB1bnNpZ25lZCBzcGVjaWZpY2l0eUZvclBhZ2UoKTsKICAgICAgICAgdm9pZCBl
eHRyYWN0UHNldWRvVHlwZSgpIGNvbnN0OwogCiAgICAgICAgIHN0cnVjdCBSYXJlRGF0YSA6IE5v
bmNvcHlhYmxlIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
IGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggMjVjYTBmZC4uM2QyYjE1
NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTE0ODQsNiArMTQ4NCwzNiBAQCBQYXNz
UmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpwc2V1ZG9TdHlsZUZvckVsZW1l
bnQoUHNldWRvSWQgcHNldWRvLAogICAgIHJldHVybiBtX3N0eWxlLnJlbGVhc2UoKTsKIH0KIAor
UGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JQYWdlKGlu
dCBwYWdlSW5kZXgpIHsKKyAgICBpbml0Rm9yU3R5bGVSZXNvbHZlKDApOworCisgICAgbV9zdHls
ZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKKyAgICBtX3N0eWxlLT5pbmhlcml0RnJvbShtX3Jv
b3RFbGVtZW50U3R5bGUpOworCisgICAgYm9vbCBpc0xlZnQgPSBpc0xlZnRQYWdlKHBhZ2VJbmRl
eCk7CisgICAgYm9vbCBpc0ZpcnN0ID0gaXNGaXJzdFBhZ2UocGFnZUluZGV4KTsKKyAgICBTdHJp
bmcgcGFnZSA9IHBhZ2VOYW1lKHBhZ2VJbmRleCk7CisgICAgaWYgKG1fbWF0Y2hBdXRob3JBbmRV
c2VyU3R5bGVzKSB7CisgICAgICAgIG1hdGNoUGFnZVJ1bGVzKG1fdXNlclN0eWxlLCBpc0xlZnQs
IGlzRmlyc3QsIHBhZ2UpOworICAgICAgICBtYXRjaFBhZ2VSdWxlcyhtX2F1dGhvclN0eWxlLCBp
c0xlZnQsIGlzRmlyc3QsIHBhZ2UpOworICAgIH0KKyAgICBtX2xpbmVIZWlnaHRWYWx1ZSA9IDA7
CisgICAgYXBwbHlEZWNsYXJhdGlvbnModHJ1ZSwgZmFsc2UsIDAsIG1fbWF0Y2hlZERlY2xzLnNp
emUoKSAtIDEpOworCisgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRpcnRpZWQsIGdvIGFoZWFkIGFu
ZCB1cGRhdGUgaXQgbm93LgorICAgIGlmIChtX2ZvbnREaXJ0eSkKKyAgICAgICAgdXBkYXRlRm9u
dCgpOworCisgICAgLy8gTGluZS1oZWlnaHQgaXMgc2V0IHdoZW4gd2UgYXJlIHN1cmUgd2UgZGVj
aWRlZCBvbiB0aGUgZm9udC1zaXplCisgICAgaWYgKG1fbGluZUhlaWdodFZhbHVlKQorICAgICAg
ICBhcHBseVByb3BlcnR5KENTU1Byb3BlcnR5TGluZUhlaWdodCwgbV9saW5lSGVpZ2h0VmFsdWUp
OworCisgICAgYXBwbHlEZWNsYXJhdGlvbnMoZmFsc2UsIGZhbHNlLCAwLCBtX21hdGNoZWREZWNs
cy5zaXplKCkgLSAxKTsKKworICAgIC8vIE5vdyByZXR1cm4gdGhlIHN0eWxlLgorICAgIHJldHVy
biBtX3N0eWxlLnJlbGVhc2UoKTsKK30KKwogI2lmIEVOQUJMRShEQVRBR1JJRCkKIAogUGFzc1Jl
ZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVGb3JEYXRhR3Jp
ZENvbHVtbihEYXRhR3JpZENvbHVtbiosIFJlbmRlclN0eWxlKikKQEAgLTI5NTYsNiArMjk4Niw3
NSBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5RGVjbGFyYXRpb25zKGJvb2wgYXBwbHlG
aXJzdCwgYm9vbCBpc0ltcG9ydGFudCwKICAgICB9CiB9CiAKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rv
cjo6bWF0Y2hQYWdlUnVsZXMoQ1NTUnVsZVNldCogcnVsZXMsIGJvb2wgaXNMZWZ0UGFnZSwgYm9v
bCBpc0ZpcnN0UGFnZSwgU3RyaW5nJiBwYWdlTmFtZSkKK3sKKyAgICBtX21hdGNoZWRSdWxlcy5j
bGVhcigpOworCisgICAgaWYgKCFydWxlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgbWF0Y2hQ
YWdlUnVsZXNGb3JMaXN0KHJ1bGVzLT5nZXRQYWdlUnVsZXMoKSwgaXNMZWZ0UGFnZSwgaXNGaXJz
dFBhZ2UsIHBhZ2VOYW1lKTsKKworICAgIC8vIElmIHdlIGRpZG4ndCBtYXRjaCBhbnkgcnVsZXMs
IHdlJ3JlIGRvbmUuCisgICAgaWYgKG1fbWF0Y2hlZFJ1bGVzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gU29ydCB0aGUgc2V0IG9mIG1hdGNoZWQgcnVsZXMuCisgICAgLy8g
RklYTUU6IFByb3Blcmx5IGltcGxlbWVudCBDU1NTZWxlY3Rvcjo6c3BlY2lmaWNpdHkgZm9yIHBh
Z2UgcnVsZXMuCisgICAgc29ydE1hdGNoZWRSdWxlcygwLCBtX21hdGNoZWRSdWxlcy5zaXplKCkp
OworCisgICAgLy8gTm93IHRyYW5zZmVyIHRoZSBzZXQgb2YgbWF0Y2hlZCBydWxlcyBvdmVyIHRv
IG91ciBsaXN0IG9mIGRlY2xzLgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21hdGNo
ZWRSdWxlcy5zaXplKCk7IGkrKykKKyAgICAgICAgYWRkTWF0Y2hlZERlY2xhcmF0aW9uKG1fbWF0
Y2hlZFJ1bGVzW2ldLT5ydWxlKCktPmRlY2xhcmF0aW9uKCkpOworfQorCit2b2lkIENTU1N0eWxl
U2VsZWN0b3I6Om1hdGNoUGFnZVJ1bGVzRm9yTGlzdChDU1NSdWxlRGF0YUxpc3QqIHJ1bGVzLCBi
b29sIGlzTGVmdFBhZ2UsIGJvb2wgaXNGaXJzdFBhZ2UsIFN0cmluZyYgcGFnZU5hbWUpCit7Cisg
ICAgaWYgKCFydWxlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChDU1NSdWxlRGF0YSog
ZCA9IHJ1bGVzLT5maXJzdCgpOyBkOyBkID0gZC0+bmV4dCgpKSB7CisgICAgICAgIENTU1N0eWxl
UnVsZSogcnVsZSA9IGQtPnJ1bGUoKTsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxl
Y3RvckxvY2FsTmFtZSA9IGQtPnNlbGVjdG9yKCktPm1fdGFnLmxvY2FsTmFtZSgpOworICAgICAg
ICBpZiAoc2VsZWN0b3JMb2NhbE5hbWUgIT0gc3RhckF0b20gJiYgc2VsZWN0b3JMb2NhbE5hbWUg
IT0gcGFnZU5hbWUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQ1NTU2VsZWN0b3I6
OlBzZXVkb1R5cGUgcHNldWRvVHlwZSA9IGQtPnNlbGVjdG9yKCktPnBzZXVkb1R5cGUoKTsKKyAg
ICAgICAgaWYgKChwc2V1ZG9UeXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9MZWZ0UGFnZSAmJiAh
aXNMZWZ0UGFnZSkKKyAgICAgICAgICAgIHx8IChwc2V1ZG9UeXBlID09IENTU1NlbGVjdG9yOjpQ
c2V1ZG9SaWdodFBhZ2UgJiYgaXNMZWZ0UGFnZSkKKyAgICAgICAgICAgIHx8IChwc2V1ZG9UeXBl
ID09IENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdFBhZ2UgJiYgIWlzRmlyc3RQYWdlKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIElmIHRoZSBydWxlIGhhcyBubyBwcm9wZXJ0
aWVzIHRvIGFwcGx5LCB0aGVuIGlnbm9yZSBpdC4KKyAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24qIGRlY2wgPSBydWxlLT5kZWNsYXJhdGlvbigpOworICAgICAgICBpZiAoIWRlY2wg
fHwgIWRlY2wtPmxlbmd0aCgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8g
QWRkIHRoaXMgcnVsZSB0byBvdXIgbGlzdCBvZiBtYXRjaGVkIHJ1bGVzLgorICAgICAgICBhZGRN
YXRjaGVkUnVsZShkKTsKKyAgICB9Cit9CisKK2Jvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6aXNMZWZ0
UGFnZShpbnQgcGFnZUluZGV4KSBjb25zdAoreworICAgIGJvb2wgaXNGaXJzdFBhZ2VMZWZ0ID0g
ZmFsc2U7CisgICAgaWYgKG1fcm9vdEVsZW1lbnRTdHlsZS0+ZGlyZWN0aW9uKCkgPT0gUlRMKQor
ICAgICAgICBpc0ZpcnN0UGFnZUxlZnQgPSB0cnVlOworCisgICAgcmV0dXJuIChwYWdlSW5kZXgg
KyAoaXNGaXJzdFBhZ2VMZWZ0ID8gMSA6IDApKSAlIDI7Cit9CisKK2Jvb2wgQ1NTU3R5bGVTZWxl
Y3Rvcjo6aXNGaXJzdFBhZ2UoaW50IHBhZ2VJbmRleCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTog
SW4gY2FzZSBvZiBmb3JjZWQgbGVmdC9yaWdodCBwYWdlLCBwYWdlIGF0IGluZGV4IDEgKG5vdCAw
KSBjYW4gYmUgdGhlIGZpcnN0IHBhZ2UuCisgICAgcmV0dXJuIChwYWdlSW5kZXggPT0gMCk7Cit9
CisKK1N0cmluZyBDU1NTdHlsZVNlbGVjdG9yOjpwYWdlTmFtZShpbnQgLyogcGFnZUluZGV4ICov
KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcGFnZSBpbmRleCB0byBwYWdlIG5h
bWUgbWFwcGluZy4KKyAgICByZXR1cm4gIiI7Cit9CisKIHN0YXRpYyB2b2lkIGFwcGx5Q291bnRl
ckxpc3QoUmVuZGVyU3R5bGUqIHN0eWxlLCBDU1NWYWx1ZUxpc3QqIGxpc3QsIGJvb2wgaXNSZXNl
dCkKIHsKICAgICBDb3VudGVyRGlyZWN0aXZlTWFwJiBtYXAgPSBzdHlsZS0+YWNjZXNzQ291bnRl
ckRpcmVjdGl2ZXMoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
aCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAppbmRleCBlOTg1YjYzLi45MjcyM2U5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKKysrIGIvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCkBAIC05Myw2ICs5Myw4IEBAIHB1YmxpYzoKIAogICAg
ICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBwc2V1ZG9TdHlsZUZvckVsZW1lbnQoUHNldWRv
SWQsIEVsZW1lbnQqLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSAwKTsKIAorICAgICAgICBQ
YXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCk7CisKICAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yRG9jdW1lbnQoRG9j
dW1lbnQqKTsKIAogI2lmIEVOQUJMRShEQVRBR1JJRCkKQEAgLTE3OCw2ICsxODAsMTMgQEAgcHVi
bGljOgogICAgICAgICB2b2lkIHNvcnRNYXRjaGVkUnVsZXModW5zaWduZWQgc3RhcnQsIHVuc2ln
bmVkIGVuZCk7CiAKICAgICAgICAgdm9pZCBhcHBseURlY2xhcmF0aW9ucyhib29sIGZpcnN0UGFz
cywgYm9vbCBpbXBvcnRhbnQsIGludCBzdGFydEluZGV4LCBpbnQgZW5kSW5kZXgpOworCisgICAg
ICAgIHZvaWQgbWF0Y2hQYWdlUnVsZXMoQ1NTUnVsZVNldCosIGJvb2wgaXNMZWZ0UGFnZSwgYm9v
bCBpc0ZpcnN0UGFnZSwgU3RyaW5nJiBwYWdlTmFtZSk7CisgICAgICAgIHZvaWQgbWF0Y2hQYWdl
UnVsZXNGb3JMaXN0KENTU1J1bGVEYXRhTGlzdCosIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0Zp
cnN0UGFnZSwgU3RyaW5nJiBwYWdlTmFtZSk7CisgICAgICAgIGJvb2wgaXNMZWZ0UGFnZShpbnQg
cGFnZUluZGV4KSBjb25zdDsKKyAgICAgICAgYm9vbCBpc1JpZ2h0UGFnZShpbnQgcGFnZUluZGV4
KSBjb25zdCB7IHJldHVybiAhaXNMZWZ0UGFnZShwYWdlSW5kZXgpOyB9OworICAgICAgICBib29s
IGlzRmlyc3RQYWdlKGludCBwYWdlSW5kZXgpIGNvbnN0OworICAgICAgICBTdHJpbmcgcGFnZU5h
bWUoaW50IHBhZ2VJbmRleCkgY29uc3Q7CiAgICAgICAgIAogICAgICAgICBDU1NSdWxlU2V0KiBt
X2F1dGhvclN0eWxlOwogICAgICAgICBDU1NSdWxlU2V0KiBtX3VzZXJTdHlsZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55811</attachid>
            <date>2010-05-12 00:10:28 -0700</date>
            <delta_ts>2010-05-31 03:21:34 -0700</delta_ts>
            <desc>Implement render style selection for pages to support CSS3 Paged Media.</desc>
            <filename>bug-35961-20100512001026.patch</filename>
            <type>text/plain</type>
            <size>10260</size>
            <attacher name="Yuzo Fujishima">yuzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWRiZmY1NThlYjdlNTZlNWJjY2E5N2M5ZjRmZmI5ZjZjNTVkMDYxMC4uN2QwNGRlNTMzZjc4OTY0
MjM1ZDc3MDU4NWIzM2FjMDI2OTA5YzYwYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wMy0xMCAgWXV6
byBGdWppc2hpbWEgIDx5dXpvQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHJlbmRlciBzdHlsZSBzZWxlY3Rpb24g
Zm9yIHBhZ2VzIHRvIHN1cHBvcnQgQ1NTMyBQYWdlZCBNZWRpYS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1OTYxCisKKyAgICAgICAgKiBjc3MvQ1NT
R3JhbW1hci55OgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTZWxlY3Rvcjo6c3BlY2lmaWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2Vs
ZWN0b3I6OnNwZWNpZmljaXR5Rm9yUGFnZSk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmg6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6Q1NTU2VsZWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmlzRm9yUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
ZWxlY3Rvcjo6c2V0Rm9yUGFnZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JQYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUGFnZVJ1bGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUGFnZVJ1bGVzRm9yTGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjppc0xlZnRQYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmlzRmlyc3RQYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6OnBhZ2VOYW1lKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6aXNSaWdodFBh
Z2UpOgorCiAyMDEwLTA1LTEwICBEdW1pdHJ1IERhbmlsaXVjICA8ZHVtaUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9jc3MvQ1NTR3JhbW1hci55IGIvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CmluZGV4IDc3OTgy
NjRjNzI1YzEyZmY3YmZjNWY4ZjNiYmRiZTQ2MjkzZmE3MDUuLmE0MDIwZWEyOWM5ZTI1MmMzZmYw
MjIzZGQ5M2UyZTY1NjM3OWE1NTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIu
eQorKysgYi9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKQEAgLTc3MCwxOSArNzcwLDI1IEBAIHBh
Z2Vfc2VsZWN0b3I6CiAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNl
cio+KHBhcnNlcik7CiAgICAgICAgICQkID0gcC0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwog
ICAgICAgICAkJC0+bV90YWcgPSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMSwgcC0+bV9kZWZh
dWx0TmFtZXNwYWNlKTsKKyAgICAgICAgJCQtPnNldEZvclBhZ2UoKTsKICAgICB9CiAgICAgfCBJ
REVOVCBwc2V1ZG8gewogICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJz
ZXIqPihwYXJzZXIpOwogICAgICAgICAkJCA9ICQyOwotICAgICAgICBpZiAoJCQpCisgICAgICAg
IGlmICgkJCkgewogICAgICAgICAgICAgJCQtPm1fdGFnID0gUXVhbGlmaWVkTmFtZShudWxsQXRv
bSwgJDEsIHAtPm1fZGVmYXVsdE5hbWVzcGFjZSk7CisgICAgICAgICAgICAkJC0+c2V0Rm9yUGFn
ZSgpOworICAgICAgICB9CiAgICAgfQogICAgIHwgcHNldWRvIHsKICAgICAgICAgJCQgPSAkMTsK
KyAgICAgICAgaWYgKCQkKQorICAgICAgICAgICAgJCQtPnNldEZvclBhZ2UoKTsKICAgICB9CiAg
ICAgfCAvKiBlbXB0eSAqLyB7CiAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENT
U1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgICQkID0gcC0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rv
cigpOworICAgICAgICAkJC0+c2V0Rm9yUGFnZSgpOwogICAgIH0KICAgICA7CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmNwcAppbmRleCBlZTljODQ2NWM2MzI2MTYwOWRiZGFkOThkOTNmZGQzZTMyYTVmMjRmLi4wMzQ4
ZTExMjZjOGJlMjUzYmY4YzFiMjMzMDI3MGY1OGE3ZmI1ZDNhIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCkBA
IC0zNyw2ICszNyw5IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIHVuc2lnbmVkIGlu
dCBDU1NTZWxlY3Rvcjo6c3BlY2lmaWNpdHkoKQogeworICAgIGlmIChtX2lzRm9yUGFnZSkKKyAg
ICAgICAgcmV0dXJuIHNwZWNpZmljaXR5Rm9yUGFnZSgpOworCiAgICAgLy8gRklYTUU6IFBzZXVk
by1lbGVtZW50cyBhbmQgcHNldWRvLWNsYXNzZXMgZG8gbm90IGhhdmUgdGhlIHNhbWUgc3BlY2lm
aWNpdHkuIFRoaXMgZnVuY3Rpb24KICAgICAvLyBpc24ndCBxdWl0ZSBjb3JyZWN0LgogICAgIGlu
dCBzID0gKG1fdGFnLmxvY2FsTmFtZSgpID09IHN0YXJBdG9tID8gMCA6IDEpOwpAQCAtNjYsNiAr
NjksMjcgQEAgdW5zaWduZWQgaW50IENTU1NlbGVjdG9yOjpzcGVjaWZpY2l0eSgpCiAgICAgcmV0
dXJuIHMgJiAweGZmZmZmZjsKIH0KIAordW5zaWduZWQgQ1NTU2VsZWN0b3I6OnNwZWNpZmljaXR5
Rm9yUGFnZSgpCit7CisgICAgLy8gU2VlIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczMtcGFn
ZS8jY2FzY2FkaW5nLWFuZC1wYWdlLWNvbnRleHQKKyAgICB1bnNpZ25lZCBzID0gKG1fdGFnLmxv
Y2FsTmFtZSgpID09IHN0YXJBdG9tID8gMCA6IDQpOworCisgICAgc3dpdGNoIChwc2V1ZG9UeXBl
KCkpIHsKKyAgICBjYXNlIFBzZXVkb0ZpcnN0UGFnZToKKyAgICAgICAgcyArPSAyOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBzZXVkb0xlZnRQYWdlOgorICAgIGNhc2UgUHNldWRvUmlnaHRQ
YWdlOgorICAgICAgICBzICs9IDE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHNldWRvTm90
UGFyc2VkOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIHM7Cit9CisKIFBzZXVkb0lkIENTU1NlbGVj
dG9yOjpwc2V1ZG9JZChQc2V1ZG9UeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oIGIvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3IuaAppbmRleCA4Zjg0YjA1OGE2MTRiYzU5OTc2ZTFiZjI1ODIwNzk4MWJjOTMyNzMyLi5i
ZmE2MjEzYjEyYzViODRlZWVlZGJlYTUwNjAyNTJmMjJlOGNjYWE5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2Nzcy9DU1NTZWxlY3Rvci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAg
LTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX3BhcnNl
ZE50aChmYWxzZSkKICAgICAgICAgICAgICwgbV9pc0xhc3RJblNlbGVjdG9yTGlzdChmYWxzZSkK
ICAgICAgICAgICAgICwgbV9oYXNSYXJlRGF0YShmYWxzZSkKKyAgICAgICAgICAgICwgbV9pc0Zv
clBhZ2UoZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC01MSw2ICs1Miw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9wYXJzZWROdGgoZmFsc2UpCiAgICAg
ICAgICAgICAsIG1faXNMYXN0SW5TZWxlY3Rvckxpc3QoZmFsc2UpCiAgICAgICAgICAgICAsIG1f
aGFzUmFyZURhdGEoZmFsc2UpCisgICAgICAgICAgICAsIG1faXNGb3JQYWdlKGZhbHNlKQogICAg
ICAgICB7CiAgICAgICAgIH0KIApAQCAtMjUyLDYgKzI1NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdm9pZCBzZXRMYXN0SW5TZWxlY3Rvckxpc3QoKSB7IG1faXNMYXN0SW5TZWxl
Y3Rvckxpc3QgPSB0cnVlOyB9CiAgICAgICAgIGJvb2wgaXNTaW1wbGUoKSBjb25zdDsKIAorICAg
ICAgICBib29sIGlzRm9yUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNGb3JQYWdlOyB9CisgICAg
ICAgIHZvaWQgc2V0Rm9yUGFnZSgpIHsgbV9pc0ZvclBhZ2UgPSB0cnVlOyB9CisKICAgICAgICAg
bXV0YWJsZSBBdG9taWNTdHJpbmcgbV92YWx1ZTsKICAgICAgICAgUXVhbGlmaWVkTmFtZSBtX3Rh
ZzsKIApAQCAtMjYzLDcgKzI2OCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9v
bCBtX3BhcnNlZE50aCAgICAgICAgICAgICAgOiAxOyAvLyBVc2VkIGZvciA6bnRoLSogCiAgICAg
ICAgIGJvb2wgbV9pc0xhc3RJblNlbGVjdG9yTGlzdCAgIDogMTsKICAgICAgICAgYm9vbCBtX2hh
c1JhcmVEYXRhICAgICAgICAgICAgOiAxOworICAgICAgICBib29sIG1faXNGb3JQYWdlICAgICAg
ICAgICAgICA6IDE7CiAKKyAgICAgICAgdW5zaWduZWQgc3BlY2lmaWNpdHlGb3JQYWdlKCk7CiAg
ICAgICAgIHZvaWQgZXh0cmFjdFBzZXVkb1R5cGUoKSBjb25zdDsKIAogICAgICAgICBzdHJ1Y3Qg
UmFyZURhdGEgOiBOb25jb3B5YWJsZSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDk2
YjM2YmJkMDhiZDUzNWQ4MGIzZWUzYjMxOTJhZTdmNWE3YjY1M2UuLjIzMTZjODA1Yzk3OWQ0YWFk
MDQ4YTk0MTY0MmI5MTQ5YTRlZTVmMGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC0x
NTM0LDYgKzE1MzQsMzYgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rv
cjo6cHNldWRvU3R5bGVGb3JFbGVtZW50KFBzZXVkb0lkIHBzZXVkbywKICAgICByZXR1cm4gbV9z
dHlsZS5yZWxlYXNlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2Vs
ZWN0b3I6OnN0eWxlRm9yUGFnZShpbnQgcGFnZUluZGV4KSB7CisgICAgaW5pdEZvclN0eWxlUmVz
b2x2ZSgwKTsKKworICAgIG1fc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgbV9z
dHlsZS0+aW5oZXJpdEZyb20obV9yb290RWxlbWVudFN0eWxlKTsKKworICAgIGJvb2wgaXNMZWZ0
ID0gaXNMZWZ0UGFnZShwYWdlSW5kZXgpOworICAgIGJvb2wgaXNGaXJzdCA9IGlzRmlyc3RQYWdl
KHBhZ2VJbmRleCk7CisgICAgU3RyaW5nIHBhZ2UgPSBwYWdlTmFtZShwYWdlSW5kZXgpOworICAg
IGlmIChtX21hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykgeworICAgICAgICBtYXRjaFBhZ2VSdWxl
cyhtX3VzZXJTdHlsZSwgaXNMZWZ0LCBpc0ZpcnN0LCBwYWdlKTsKKyAgICAgICAgbWF0Y2hQYWdl
UnVsZXMobV9hdXRob3JTdHlsZSwgaXNMZWZ0LCBpc0ZpcnN0LCBwYWdlKTsKKyAgICB9CisgICAg
bV9saW5lSGVpZ2h0VmFsdWUgPSAwOworICAgIGFwcGx5RGVjbGFyYXRpb25zKHRydWUsIGZhbHNl
LCAwLCBtX21hdGNoZWREZWNscy5zaXplKCkgLSAxKTsKKworICAgIC8vIElmIG91ciBmb250IGdv
dCBkaXJ0aWVkLCBnbyBhaGVhZCBhbmQgdXBkYXRlIGl0IG5vdy4KKyAgICBpZiAobV9mb250RGly
dHkpCisgICAgICAgIHVwZGF0ZUZvbnQoKTsKKworICAgIC8vIExpbmUtaGVpZ2h0IGlzIHNldCB3
aGVuIHdlIGFyZSBzdXJlIHdlIGRlY2lkZWQgb24gdGhlIGZvbnQtc2l6ZQorICAgIGlmIChtX2xp
bmVIZWlnaHRWYWx1ZSkKKyAgICAgICAgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpbmVIZWln
aHQsIG1fbGluZUhlaWdodFZhbHVlKTsKKworICAgIGFwcGx5RGVjbGFyYXRpb25zKGZhbHNlLCBm
YWxzZSwgMCwgbV9tYXRjaGVkRGVjbHMuc2l6ZSgpIC0gMSk7CisKKyAgICAvLyBOb3cgcmV0dXJu
IHRoZSBzdHlsZS4KKyAgICByZXR1cm4gbV9zdHlsZS5yZWxlYXNlKCk7Cit9CisKICNpZiBFTkFC
TEUoREFUQUdSSUQpCiAKIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3I6
OnBzZXVkb1N0eWxlRm9yRGF0YUdyaWRDb2x1bW4oRGF0YUdyaWRDb2x1bW4qLCBSZW5kZXJTdHls
ZSopCkBAIC0yODc3LDYgKzI5MDcsNzUgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseURl
Y2xhcmF0aW9ucyhib29sIGlzSW1wb3J0YW50LCBpbnQgc3RhcnRJbmRleCwgaW50IGUKICAgICB9
CiB9CiAKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hQYWdlUnVsZXMoQ1NTUnVsZVNldCog
cnVsZXMsIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgU3RyaW5nJiBwYWdlTmFt
ZSkKK3sKKyAgICBtX21hdGNoZWRSdWxlcy5jbGVhcigpOworCisgICAgaWYgKCFydWxlcykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbWF0Y2hQYWdlUnVsZXNGb3JMaXN0KHJ1bGVzLT5nZXRQYWdl
UnVsZXMoKSwgaXNMZWZ0UGFnZSwgaXNGaXJzdFBhZ2UsIHBhZ2VOYW1lKTsKKworICAgIC8vIElm
IHdlIGRpZG4ndCBtYXRjaCBhbnkgcnVsZXMsIHdlJ3JlIGRvbmUuCisgICAgaWYgKG1fbWF0Y2hl
ZFJ1bGVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gU29ydCB0aGUgc2V0
IG9mIG1hdGNoZWQgcnVsZXMuCisgICAgLy8gRklYTUU6IFByb3Blcmx5IGltcGxlbWVudCBDU1NT
ZWxlY3Rvcjo6c3BlY2lmaWNpdHkgZm9yIHBhZ2UgcnVsZXMuCisgICAgc29ydE1hdGNoZWRSdWxl
cygwLCBtX21hdGNoZWRSdWxlcy5zaXplKCkpOworCisgICAgLy8gTm93IHRyYW5zZmVyIHRoZSBz
ZXQgb2YgbWF0Y2hlZCBydWxlcyBvdmVyIHRvIG91ciBsaXN0IG9mIGRlY2xzLgorICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX21hdGNoZWRSdWxlcy5zaXplKCk7IGkrKykKKyAgICAgICAg
YWRkTWF0Y2hlZERlY2xhcmF0aW9uKG1fbWF0Y2hlZFJ1bGVzW2ldLT5ydWxlKCktPmRlY2xhcmF0
aW9uKCkpOworfQorCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUGFnZVJ1bGVzRm9yTGlz
dChDU1NSdWxlRGF0YUxpc3QqIHJ1bGVzLCBib29sIGlzTGVmdFBhZ2UsIGJvb2wgaXNGaXJzdFBh
Z2UsIFN0cmluZyYgcGFnZU5hbWUpCit7CisgICAgaWYgKCFydWxlcykKKyAgICAgICAgcmV0dXJu
OworCisgICAgZm9yIChDU1NSdWxlRGF0YSogZCA9IHJ1bGVzLT5maXJzdCgpOyBkOyBkID0gZC0+
bmV4dCgpKSB7CisgICAgICAgIENTU1N0eWxlUnVsZSogcnVsZSA9IGQtPnJ1bGUoKTsKKyAgICAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3RvckxvY2FsTmFtZSA9IGQtPnNlbGVjdG9yKCkt
Pm1fdGFnLmxvY2FsTmFtZSgpOworICAgICAgICBpZiAoc2VsZWN0b3JMb2NhbE5hbWUgIT0gc3Rh
ckF0b20gJiYgc2VsZWN0b3JMb2NhbE5hbWUgIT0gcGFnZU5hbWUpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgcHNldWRvVHlwZSA9IGQtPnNl
bGVjdG9yKCktPnBzZXVkb1R5cGUoKTsKKyAgICAgICAgaWYgKChwc2V1ZG9UeXBlID09IENTU1Nl
bGVjdG9yOjpQc2V1ZG9MZWZ0UGFnZSAmJiAhaXNMZWZ0UGFnZSkKKyAgICAgICAgICAgIHx8IChw
c2V1ZG9UeXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9SaWdodFBhZ2UgJiYgaXNMZWZ0UGFnZSkK
KyAgICAgICAgICAgIHx8IChwc2V1ZG9UeXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdFBh
Z2UgJiYgIWlzRmlyc3RQYWdlKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8v
IElmIHRoZSBydWxlIGhhcyBubyBwcm9wZXJ0aWVzIHRvIGFwcGx5LCB0aGVuIGlnbm9yZSBpdC4K
KyAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGRlY2wgPSBydWxlLT5kZWNsYXJh
dGlvbigpOworICAgICAgICBpZiAoIWRlY2wgfHwgIWRlY2wtPmxlbmd0aCgpKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgLy8gQWRkIHRoaXMgcnVsZSB0byBvdXIgbGlzdCBvZiBt
YXRjaGVkIHJ1bGVzLgorICAgICAgICBhZGRNYXRjaGVkUnVsZShkKTsKKyAgICB9Cit9CisKK2Jv
b2wgQ1NTU3R5bGVTZWxlY3Rvcjo6aXNMZWZ0UGFnZShpbnQgcGFnZUluZGV4KSBjb25zdAorewor
ICAgIGJvb2wgaXNGaXJzdFBhZ2VMZWZ0ID0gZmFsc2U7CisgICAgaWYgKG1fcm9vdEVsZW1lbnRT
dHlsZS0+ZGlyZWN0aW9uKCkgPT0gUlRMKQorICAgICAgICBpc0ZpcnN0UGFnZUxlZnQgPSB0cnVl
OworCisgICAgcmV0dXJuIChwYWdlSW5kZXggKyAoaXNGaXJzdFBhZ2VMZWZ0ID8gMSA6IDApKSAl
IDI7Cit9CisKK2Jvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6aXNGaXJzdFBhZ2UoaW50IHBhZ2VJbmRl
eCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogSW4gY2FzZSBvZiBmb3JjZWQgbGVmdC9yaWdodCBw
YWdlLCBwYWdlIGF0IGluZGV4IDEgKG5vdCAwKSBjYW4gYmUgdGhlIGZpcnN0IHBhZ2UuCisgICAg
cmV0dXJuIChwYWdlSW5kZXggPT0gMCk7Cit9CisKK1N0cmluZyBDU1NTdHlsZVNlbGVjdG9yOjpw
YWdlTmFtZShpbnQgLyogcGFnZUluZGV4ICovKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgcGFnZSBpbmRleCB0byBwYWdlIG5hbWUgbWFwcGluZy4KKyAgICByZXR1cm4gIiI7Cit9
CisKIHN0YXRpYyB2b2lkIGFwcGx5Q291bnRlckxpc3QoUmVuZGVyU3R5bGUqIHN0eWxlLCBDU1NW
YWx1ZUxpc3QqIGxpc3QsIGJvb2wgaXNSZXNldCkKIHsKICAgICBDb3VudGVyRGlyZWN0aXZlTWFw
JiBtYXAgPSBzdHlsZS0+YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMoKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuaAppbmRleCA1MDg5Njg2NGFhZjZkZTRlYjk3ODE1MTBmZTEyYmZhZTkyY2RlMGQ1Li4zMGRh
YjM3ODFmMGU1ZTg2N2M0ZTMxOGE2Yzc5M2Y3ODkyMDJjM2E4IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5oCkBAIC05Miw2ICs5Miw4IEBAIHB1YmxpYzoKIAogICAgICAgICBQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBwc2V1ZG9TdHlsZUZvckVsZW1lbnQoUHNldWRvSWQgcHNldWRvLCBFbGVtZW50KiBl
LCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSAwKSB7IHJldHVybiBwc2V1ZG9TdHlsZUZvckVs
ZW1lbnQocHNldWRvLCBlLCBwYXJlbnRTdHlsZSwgZmFsc2UpOyB9CiAKKyAgICAgICAgUGFzc1Jl
ZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JQYWdlKGludCBwYWdlSW5kZXgpOworCiAgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvckRvY3VtZW50KERvY3VtZW50
Kik7CiAKICNpZiBFTkFCTEUoREFUQUdSSUQpCkBAIC0xODEsNiArMTgzLDEzIEBAIHB1YmxpYzoK
IAogICAgICAgICB0ZW1wbGF0ZSA8Ym9vbCBmaXJzdFBhc3M+CiAgICAgICAgIHZvaWQgYXBwbHlE
ZWNsYXJhdGlvbnMoYm9vbCBpbXBvcnRhbnQsIGludCBzdGFydEluZGV4LCBpbnQgZW5kSW5kZXgp
OworCisgICAgICAgIHZvaWQgbWF0Y2hQYWdlUnVsZXMoQ1NTUnVsZVNldCosIGJvb2wgaXNMZWZ0
UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgU3RyaW5nJiBwYWdlTmFtZSk7CisgICAgICAgIHZvaWQg
bWF0Y2hQYWdlUnVsZXNGb3JMaXN0KENTU1J1bGVEYXRhTGlzdCosIGJvb2wgaXNMZWZ0UGFnZSwg
Ym9vbCBpc0ZpcnN0UGFnZSwgU3RyaW5nJiBwYWdlTmFtZSk7CisgICAgICAgIGJvb2wgaXNMZWZ0
UGFnZShpbnQgcGFnZUluZGV4KSBjb25zdDsKKyAgICAgICAgYm9vbCBpc1JpZ2h0UGFnZShpbnQg
cGFnZUluZGV4KSBjb25zdCB7IHJldHVybiAhaXNMZWZ0UGFnZShwYWdlSW5kZXgpOyB9OworICAg
ICAgICBib29sIGlzRmlyc3RQYWdlKGludCBwYWdlSW5kZXgpIGNvbnN0OworICAgICAgICBTdHJp
bmcgcGFnZU5hbWUoaW50IHBhZ2VJbmRleCkgY29uc3Q7CiAgICAgICAgIAogICAgICAgICBDU1NS
dWxlU2V0KiBtX2F1dGhvclN0eWxlOwogICAgICAgICBDU1NSdWxlU2V0KiBtX3VzZXJTdHlsZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57448</attachid>
            <date>2010-05-31 03:21:43 -0700</date>
            <delta_ts>2010-06-01 00:45:37 -0700</delta_ts>
            <desc>Implement render style selection for pages to support CSS3 Paged Media.</desc>
            <filename>bug-35961-20100531032141.patch</filename>
            <type>text/plain</type>
            <size>31423</size>
            <attacher name="Yuzo Fujishima">yuzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNzhhNjBmMTk2MjlhMzYxODYyOGM2MmE5NDA5NGU2ODlhODJkZTExLi40ODViZmRl
ZTI4YmJhNGYwNTk4YzgzMTViZGMxYjA3NDU1YjRiMzMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDUtMzEgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCByZW5kZXIg
c3R5bGUgc2VsZWN0aW9uIGZvciBwYWdlcyB0byBzdXBwb3J0IENTUzMgUGFnZWQgTWVkaWEuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTk2MQorCisg
ICAgICAgICogcHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHByaW50aW5nL3BhZ2UtcnVsZS1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCisK
IDIwMTAtMDUtMjAgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3ByaW50aW5nL3BhZ2UtcnVsZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjM3YzMwNjhkYWQ4MWU3MzljYzgxNDI1ODYyMGQ0NjVhYzJjMjM4MgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVsZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNDIgQEAKK1RoaXMgdGVzdHMgcGFnZSBzdHlsZSBzZWxlY3Rpb24uCisKK0Rl
ZmF1bHQgbWFyZ2luIGlzIDFpbiA9IDk2cHguCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBh
Z2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAwKSBpcyAiOTYiCitQQVNTIGxheW91dFRlc3RDb250
cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAxKSBpcyAiOTYiCitQQVNTIGxheW91
dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAyKSBpcyAiOTYiCitQ
QVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAzKSBp
cyAiOTYiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxl
ZnQnLCA0KSBpcyAiOTYiCitTZXQgbWFyZ2luIHRvIDEwMHB4LgorUEFTUyBsYXlvdXRUZXN0Q29u
dHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMCkgaXMgIjEwMCIKK1BBU1MgbGF5
b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDEpIGlzICIxMDAi
CitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAy
KSBpcyAiMTAwIgorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdp
bi1sZWZ0JywgMykgaXMgIjEwMCIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3Bl
cnR5KCdtYXJnaW4tbGVmdCcsIDQpIGlzICIxMDAiCitTZXQgbWFyZ2luIGZvciByaWdodCBwYWdl
cyB0byA1MHB4LiBUaGUgZmlyc3QgcGFnZSBpcyBhIHJpZ2h0IHBhZ2UuCitQQVNTIGxheW91dFRl
c3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAwKSBpcyAiNTAiCitQQVNT
IGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAxKSBpcyAi
MTAwIgorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0
JywgMikgaXMgIjUwIgorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21h
cmdpbi1sZWZ0JywgMykgaXMgIjEwMCIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVBy
b3BlcnR5KCdtYXJnaW4tbGVmdCcsIDQpIGlzICI1MCIKK1NldCBtYXJnaW4gZm9yIGxlZnQgcGFn
ZXMgdG8gNzVweC4KK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJn
aW4tbGVmdCcsIDApIGlzICI1MCIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3Bl
cnR5KCdtYXJnaW4tbGVmdCcsIDEpIGlzICI3NSIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIu
cGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDIpIGlzICI1MCIKK1BBU1MgbGF5b3V0VGVzdENv
bnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDMpIGlzICI3NSIKK1BBU1MgbGF5
b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDQpIGlzICI1MCIK
K1NldCBtYXJnaW4gZm9yIHRoZSBmaXJzdCBwYWdlIHRvIDEyNXB4LgorUEFTUyBsYXlvdXRUZXN0
Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMCkgaXMgIjEyNSIKK1BBU1Mg
bGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDEpIGlzICI3
NSIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcs
IDIpIGlzICI1MCIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJn
aW4tbGVmdCcsIDMpIGlzICI3NSIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3Bl
cnR5KCdtYXJnaW4tbGVmdCcsIDQpIGlzICI1MCIKK0NoYW5nZSB0aGUgZG9jdW1lbnQgZGlyZWN0
aW9uIHRvIFJUTC4gVGhpcyBtYWtlcyB0aGUgZmlyc3QgcGFnZSBhIGxlZnQgcGFnZS4KK1BBU1Mg
bGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDApIGlzICIx
MjUiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQn
LCAxKSBpcyAiNTAiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFy
Z2luLWxlZnQnLCAyKSBpcyAiNzUiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9w
ZXJ0eSgnbWFyZ2luLWxlZnQnLCAzKSBpcyAiNTAiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVy
LnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCA0KSBpcyAiNzUiCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvcHJpbnRp
bmcvcGFnZS1ydWxlLXNlbGVjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0ZjkxYWZjMzBhODliZTE1
ZmNhOTk0MzM0MzQ4MGE1Njk0ODgyNGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9w
cmludGluZy9wYWdlLXJ1bGUtc2VsZWN0aW9uLmh0bWwKQEAgLTAsMCArMSw3NSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbCBpZD0iaHRtbF9lbGVtZW50Ij4KKzxoZWFkIGlkPSJoZWFkX2VsZW1l
bnQiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPlRoaXMgdGVzdHMgcGFnZSBzdHlsZSBzZWxlY3Rpb24uPC9wPgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGZ1bmN0aW9uIGFwcGVuZFN0eWxlKHN0eWxlU3RyaW5n
KQorICAgIHsKKyAgICAgICAgdmFyIHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInN0eWxlIik7CisgICAgICAgIHN0eWxlRWxlbWVudC5pbm5lckhUTUwgPSBzdHlsZVN0cmlu
ZzsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhlYWRfZWxlbWVudCIpLmFwcGVu
ZENoaWxkKHN0eWxlRWxlbWVudCk7CisgICAgfQorCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAg
IGRlYnVnKCJEZWZhdWx0IG1hcmdpbiBpcyAxaW4gPSA5NnB4LiIpOworICAgICAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21h
cmdpbi1sZWZ0JywgMCkiLCAiOTYiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDEpIiwg
Ijk2Iik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250
cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAyKSIsICI5NiIpOworICAgICAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVy
dHkoJ21hcmdpbi1sZWZ0JywgMykiLCAiOTYiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcs
IDQpIiwgIjk2Iik7CisKKyAgICAgICAgICAgIGRlYnVnKCJTZXQgbWFyZ2luIHRvIDEwMHB4LiIp
OworICAgICAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdlIHsgbWFyZ2luOjEwMHB4OyB9Iik7Cisg
ICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBh
Z2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAwKSIsICIxMDAiKTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJn
aW4tbGVmdCcsIDEpIiwgIjEwMCIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMikiLCAi
MTAwIik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250
cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAzKSIsICIxMDAiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3Bl
cnR5KCdtYXJnaW4tbGVmdCcsIDQpIiwgIjEwMCIpOworCisgICAgICAgICAgICBkZWJ1ZygiU2V0
IG1hcmdpbiBmb3IgcmlnaHQgcGFnZXMgdG8gNTBweC4gVGhlIGZpcnN0IHBhZ2UgaXMgYSByaWdo
dCBwYWdlLiIpOworICAgICAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdlIDpyaWdodCB7IG1hcmdp
bjo1MHB4OyB9Iik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRl
c3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAwKSIsICI1MCIpOworICAg
ICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdl
UHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMSkiLCAiMTAwIik7CisgICAgICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2lu
LWxlZnQnLCAyKSIsICI1MCIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJs
YXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMykiLCAiMTAw
Iik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9s
bGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCA0KSIsICI1MCIpOworCisgICAgICAgICAg
ICBkZWJ1ZygiU2V0IG1hcmdpbiBmb3IgbGVmdCBwYWdlcyB0byA3NXB4LiIpOworICAgICAgICAg
ICAgYXBwZW5kU3R5bGUoIkBwYWdlIDpsZWZ0IHsgbWFyZ2luOjc1cHg7IH0iKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3Bl
cnR5KCdtYXJnaW4tbGVmdCcsIDApIiwgIjUwIik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQn
LCAxKSIsICI3NSIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRU
ZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMikiLCAiNTAiKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFn
ZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDMpIiwgIjc1Iik7CisgICAgICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2lu
LWxlZnQnLCA0KSIsICI1MCIpOworCisgICAgICAgICAgICBkZWJ1ZygiU2V0IG1hcmdpbiBmb3Ig
dGhlIGZpcnN0IHBhZ2UgdG8gMTI1cHguIik7CisgICAgICAgICAgICBhcHBlbmRTdHlsZSgiQHBh
Z2UgOmZpcnN0IHsgbWFyZ2luOjEyNXB4OyB9Iik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQn
LCAwKSIsICIxMjUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0
VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDEpIiwgIjc1Iik7Cisg
ICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBh
Z2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAyKSIsICI1MCIpOworICAgICAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdp
bi1sZWZ0JywgMykiLCAiNzUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
bGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDQpIiwgIjUw
Iik7CisKKyAgICAgICAgICAgIGRlYnVnKCJDaGFuZ2UgdGhlIGRvY3VtZW50IGRpcmVjdGlvbiB0
byBSVEwuIFRoaXMgbWFrZXMgdGhlIGZpcnN0IHBhZ2UgYSBsZWZ0IHBhZ2UuIik7CisgICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaHRtbF9lbGVtZW50Iikuc2V0QXR0cmlidXRl
KCJkaXIiLCAicnRsIik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91
dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAwKSIsICIxMjUiKTsK
KyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIu
cGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDEpIiwgIjUwIik7CisgICAgICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFy
Z2luLWxlZnQnLCAyKSIsICI3NSIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMykiLCAi
NTAiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRy
b2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDQpIiwgIjc1Iik7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJUaGlzIHRlc3QgY2FuIGJlIHJ1biBv
bmx5IHdpdGggd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyIik7CisgICAgfQorICAgIHZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggYTUwNDBiN2ViYjg4NTc4NmFjZTI3MmM3MDNjNzgyNDYxMDQyOTBjNC4uYjlkOGMxMTBmNTEy
YWZiZDVkYTg4YzQ3ZGU2ZDM4MTdhNzQ4YTgzZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxMC0wNS0zMSAg
WXV6byBGdWppc2hpbWEgIDx5dXpvQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHJlbmRlciBzdHlsZSBzZWxlY3Rp
b24gZm9yIHBhZ2VzIHRvIHN1cHBvcnQgQ1NTMyBQYWdlZCBNZWRpYS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1OTYxCisKKyAgICAgICAgVGVzdDog
cHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmJh
c2UuZXhwOgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgICogY3NzL0NTU1Nl
bGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzcGVjaWZpY2l0eSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c3BlY2lmaWNpdHlGb3JQYWdlKToKKyAg
ICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9y
OjpDU1NTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6aXNGb3JQYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZXRGb3JQYWdlKToKKyAgICAgICAg
KiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjpzdHlsZUZvclBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rv
cjo6bWF0Y2hQYWdlUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6
bWF0Y2hQYWdlUnVsZXNGb3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0
b3I6OmlzTGVmdFBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6aXNG
aXJzdFBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cGFnZU5hbWUp
OgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTdHlsZVNlbGVjdG9yOjppc1JpZ2h0UGFnZSk6CisgICAgICAgICogY3NzL2h0bWwuY3NzOgor
ICAgICAgICAoQHBhZ2UpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6c3R5bGVGb3JQYWdlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aDoKKyAgICAgICAgKiBwYWdlL1ByaW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
cmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eSk6CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQu
aDoKKwogMjAxMC0wNS0yMCAgS3dhbmcgWXVsIFNlbyAgPHNreXVsQGNvbXBhbnkxMDAubmV0Pgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLmJhc2UuZXhwIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCmluZGV4IDcyYjhjMDA2
NWQ4ZGJhMDU0YzczMzRkNjk0M2IyMTVhNWE2ZGI0NjIuLmJkMDRiZDA1ZWQwZmQzNmI4NDg0MjI1
YzQzOTlkN2JiNmQzZDY1OTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAor
KysgYi9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKQEAgLTI0OCw2ICsyNDgsNyBAQCBfX1pON1dl
YkNvcmUxMkljb25EYXRhYmFzZTRvcGVuRVJLTlNfNlN0cmluZ0UKIF9fWk43V2ViQ29yZTEySWNv
bkRhdGFiYXNlNWNsb3NlRXYKIF9fWk43V2ViQ29yZTEySWNvbkRhdGFiYXNlOXNldENsaWVudEVQ
TlNfMThJY29uRGF0YWJhc2VDbGllbnRFCiBfX1pON1dlYkNvcmUxMlBsdWdpbldpZGdldDE0aW52
YWxpZGF0ZVJlY3RFUktOU183SW50UmVjdEUKK19fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0MTJw
YWdlUHJvcGVydHlFUE5TXzVGcmFtZUVQS2NpCiBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDEz
bnVtYmVyT2ZQYWdlc0VQTlNfNUZyYW1lRVJLTlNfOUZsb2F0U2l6ZUUKIF9fWk43V2ViQ29yZTEy
UHJpbnRDb250ZXh0MjBwYWdlTnVtYmVyRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRFUktOU185Rmxv
YXRTaXplRQogX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQyOGNvbXB1dGVQYWdlUmVjdHNXaXRo
UGFnZVNpemVFUktOU185RmxvYXRTaXplRWIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0dy
YW1tYXIueSBiL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQppbmRleCAzN2M1Mzg1NGNlYjRmMDZh
MzRiYzAzY2IxNmE3N2QxYzc1YWI4MmYwLi5hZDdjNTdiZGNmMTU1M2FkYThiYzIwYzdlMDBmYzcy
Yjg0MTRhM2ZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKKysrIGIvV2Vi
Q29yZS9jc3MvQ1NTR3JhbW1hci55CkBAIC03NzgsMTkgKzc3OCwyNSBAQCBwYWdlX3NlbGVjdG9y
OgogICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIp
OwogICAgICAgICAkJCA9IHAtPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKICAgICAgICAgJCQt
Pm1fdGFnID0gUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDEsIHAtPm1fZGVmYXVsdE5hbWVzcGFj
ZSk7CisgICAgICAgICQkLT5zZXRGb3JQYWdlKCk7CiAgICAgfQogICAgIHwgSURFTlQgcHNldWRv
X3BhZ2UgewogICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihw
YXJzZXIpOwogICAgICAgICAkJCA9ICQyOwotICAgICAgICBpZiAoJCQpCisgICAgICAgIGlmICgk
JCkgewogICAgICAgICAgICAgJCQtPm1fdGFnID0gUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDEs
IHAtPm1fZGVmYXVsdE5hbWVzcGFjZSk7CisgICAgICAgICAgICAkJC0+c2V0Rm9yUGFnZSgpOwor
ICAgICAgICB9CiAgICAgfQogICAgIHwgcHNldWRvX3BhZ2UgewogICAgICAgICAkJCA9ICQxOwor
ICAgICAgICBpZiAoJCQpCisgICAgICAgICAgICAkJC0+c2V0Rm9yUGFnZSgpOwogICAgIH0KICAg
ICB8IC8qIGVtcHR5ICovIHsKICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NT
UGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgJCQgPSBwLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9y
KCk7CisgICAgICAgICQkLT5zZXRGb3JQYWdlKCk7CiAgICAgfQogICAgIDsKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3Iu
Y3BwCmluZGV4IDVhZGQ5MGJlZmE2NGYyMWYwZTVhYTI1NTY2ZjNiNmE2YzM3MzQyODEuLjU5NGFh
OTM1OGNjOGE0N2Q1OTM3ZTQ2YjFjMzViYTAyMGUyM2JlODIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Y3NzL0NTU1NlbGVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKQEAg
LTM3LDYgKzM3LDkgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogdW5zaWduZWQgaW50
IENTU1NlbGVjdG9yOjpzcGVjaWZpY2l0eSgpCiB7CisgICAgaWYgKG1faXNGb3JQYWdlKQorICAg
ICAgICByZXR1cm4gc3BlY2lmaWNpdHlGb3JQYWdlKCk7CisKICAgICAvLyBGSVhNRTogUHNldWRv
LWVsZW1lbnRzIGFuZCBwc2V1ZG8tY2xhc3NlcyBkbyBub3QgaGF2ZSB0aGUgc2FtZSBzcGVjaWZp
Y2l0eS4gVGhpcyBmdW5jdGlvbgogICAgIC8vIGlzbid0IHF1aXRlIGNvcnJlY3QuCiAgICAgaW50
IHMgPSAobV90YWcubG9jYWxOYW1lKCkgPT0gc3RhckF0b20gPyAwIDogMSk7CkBAIC02Niw2ICs2
OSwyNyBAQCB1bnNpZ25lZCBpbnQgQ1NTU2VsZWN0b3I6OnNwZWNpZmljaXR5KCkKICAgICByZXR1
cm4gcyAmIDB4ZmZmZmZmOwogfQogCit1bnNpZ25lZCBDU1NTZWxlY3Rvcjo6c3BlY2lmaWNpdHlG
b3JQYWdlKCkKK3sKKyAgICAvLyBTZWUgaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzMy1wYWdl
LyNjYXNjYWRpbmctYW5kLXBhZ2UtY29udGV4dAorICAgIHVuc2lnbmVkIHMgPSAobV90YWcubG9j
YWxOYW1lKCkgPT0gc3RhckF0b20gPyAwIDogNCk7CisKKyAgICBzd2l0Y2ggKHBzZXVkb1R5cGUo
KSkgeworICAgIGNhc2UgUHNldWRvRmlyc3RQYWdlOgorICAgICAgICBzICs9IDI7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUHNldWRvTGVmdFBhZ2U6CisgICAgY2FzZSBQc2V1ZG9SaWdodFBh
Z2U6CisgICAgICAgIHMgKz0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQc2V1ZG9Ob3RQ
YXJzZWQ6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gczsKK30KKwogUHNldWRvSWQgQ1NTU2VsZWN0
b3I6OnBzZXVkb0lkKFBzZXVkb1R5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmggYi9XZWJDb3JlL2Nzcy9DU1NTZWxl
Y3Rvci5oCmluZGV4IDExZDMwYjE5OTFjNTgzOWFjMjM1NzZiZTUzYjJkYmQwZDBmNGUzMjkuLmVi
MDcwNzhlZmQ0NzRjZjRhODhmYjQ2NGM4MjY1NmRjY2Q3MWQ0NzMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaApAQCAt
MzksNiArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fcGFyc2Vk
TnRoKGZhbHNlKQogICAgICAgICAgICAgLCBtX2lzTGFzdEluU2VsZWN0b3JMaXN0KGZhbHNlKQog
ICAgICAgICAgICAgLCBtX2hhc1JhcmVEYXRhKGZhbHNlKQorICAgICAgICAgICAgLCBtX2lzRm9y
UGFnZShmYWxzZSkKICAgICAgICAgICAgICwgbV90YWcoYW55UU5hbWUoKSkKICAgICAgICAgewog
ICAgICAgICB9CkBAIC01MCw2ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
ICAgICwgbV9wYXJzZWROdGgoZmFsc2UpCiAgICAgICAgICAgICAsIG1faXNMYXN0SW5TZWxlY3Rv
ckxpc3QoZmFsc2UpCiAgICAgICAgICAgICAsIG1faGFzUmFyZURhdGEoZmFsc2UpCisgICAgICAg
ICAgICAsIG1faXNGb3JQYWdlKGZhbHNlKQogICAgICAgICAgICAgLCBtX3RhZyhxTmFtZSkKICAg
ICAgICAgewogICAgICAgICB9CkBAIC0yNTMsNiArMjU1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2b2lkIHNldExhc3RJblNlbGVjdG9yTGlzdCgpIHsgbV9pc0xhc3RJblNlbGVj
dG9yTGlzdCA9IHRydWU7IH0KICAgICAgICAgYm9vbCBpc1NpbXBsZSgpIGNvbnN0OwogCisgICAg
ICAgIGJvb2wgaXNGb3JQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZvclBhZ2U7IH0KKyAgICAg
ICAgdm9pZCBzZXRGb3JQYWdlKCkgeyBtX2lzRm9yUGFnZSA9IHRydWU7IH0KKwogICAgICAgICB1
bnNpZ25lZCBtX3JlbGF0aW9uICAgICAgICAgICA6IDM7IC8vIGVudW0gUmVsYXRpb24KICAgICAg
ICAgbXV0YWJsZSB1bnNpZ25lZCBtX21hdGNoICAgICAgOiA0OyAvLyBlbnVtIE1hdGNoCiAgICAg
ICAgIG11dGFibGUgdW5zaWduZWQgbV9wc2V1ZG9UeXBlIDogODsgLy8gUHNldWRvVHlwZQpAQCAt
MjYxLDcgKzI2Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX3BhcnNl
ZE50aCAgICAgICAgICAgICAgOiAxOyAvLyBVc2VkIGZvciA6bnRoLSogCiAgICAgICAgIGJvb2wg
bV9pc0xhc3RJblNlbGVjdG9yTGlzdCAgIDogMTsKICAgICAgICAgYm9vbCBtX2hhc1JhcmVEYXRh
ICAgICAgICAgICAgOiAxOworICAgICAgICBib29sIG1faXNGb3JQYWdlICAgICAgICAgICAgICA6
IDE7CiAKKyAgICAgICAgdW5zaWduZWQgc3BlY2lmaWNpdHlGb3JQYWdlKCk7CiAgICAgICAgIHZv
aWQgZXh0cmFjdFBzZXVkb1R5cGUoKSBjb25zdDsKIAogICAgICAgICBzdHJ1Y3QgUmFyZURhdGEg
OiBOb25jb3B5YWJsZSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDQ1MmVkMWQxYzE0
MTczOTgyNDYwNWM3YWU3ZWY3MGRmYjEzZmQxMjUuLmEwNWM5Y2FiM2U3ZmRmZjUzZjI0OTBkNzEz
NGIzNzAyY2M0ZDA2OGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC0xNTQ1LDYgKzE1
NDUsMzYgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRv
U3R5bGVGb3JFbGVtZW50KFBzZXVkb0lkIHBzZXVkbywKICAgICByZXR1cm4gbV9zdHlsZS5yZWxl
YXNlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3I6OnN0
eWxlRm9yUGFnZShpbnQgcGFnZUluZGV4KQoreworICAgIGluaXRGb3JTdHlsZVJlc29sdmUobV9j
aGVja2VyLm1fZG9jdW1lbnQtPmJvZHkoKSk7CisKKyAgICBtX3N0eWxlID0gUmVuZGVyU3R5bGU6
OmNyZWF0ZSgpOworICAgIG1fc3R5bGUtPmluaGVyaXRGcm9tKG1fcm9vdEVsZW1lbnRTdHlsZSk7
CisKKyAgICBib29sIGlzTGVmdCA9IGlzTGVmdFBhZ2UocGFnZUluZGV4KTsKKyAgICBib29sIGlz
Rmlyc3QgPSBpc0ZpcnN0UGFnZShwYWdlSW5kZXgpOworICAgIFN0cmluZyBwYWdlID0gcGFnZU5h
bWUocGFnZUluZGV4KTsKKyAgICBtYXRjaFBhZ2VSdWxlcyhkZWZhdWx0UHJpbnRTdHlsZSwgaXNM
ZWZ0LCBpc0ZpcnN0LCBwYWdlKTsKKyAgICBtYXRjaFBhZ2VSdWxlcyhtX3VzZXJTdHlsZSwgaXNM
ZWZ0LCBpc0ZpcnN0LCBwYWdlKTsKKyAgICBtYXRjaFBhZ2VSdWxlcyhtX2F1dGhvclN0eWxlLCBp
c0xlZnQsIGlzRmlyc3QsIHBhZ2UpOworICAgIG1fbGluZUhlaWdodFZhbHVlID0gMDsKKyAgICBh
cHBseURlY2xhcmF0aW9uczx0cnVlPihmYWxzZSwgMCwgbV9tYXRjaGVkRGVjbHMuc2l6ZSgpIC0g
MSk7CisKKyAgICAvLyBJZiBvdXIgZm9udCBnb3QgZGlydGllZCwgZ28gYWhlYWQgYW5kIHVwZGF0
ZSBpdCBub3cuCisgICAgaWYgKG1fZm9udERpcnR5KQorICAgICAgICB1cGRhdGVGb250KCk7CisK
KyAgICAvLyBMaW5lLWhlaWdodCBpcyBzZXQgd2hlbiB3ZSBhcmUgc3VyZSB3ZSBkZWNpZGVkIG9u
IHRoZSBmb250LXNpemUKKyAgICBpZiAobV9saW5lSGVpZ2h0VmFsdWUpCisgICAgICAgIGFwcGx5
UHJvcGVydHkoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0LCBtX2xpbmVIZWlnaHRWYWx1ZSk7CisKKyAg
ICBhcHBseURlY2xhcmF0aW9uczxmYWxzZT4oZmFsc2UsIDAsIG1fbWF0Y2hlZERlY2xzLnNpemUo
KSAtIDEpOworCisgICAgLy8gTm93IHJldHVybiB0aGUgc3R5bGUuCisgICAgcmV0dXJuIG1fc3R5
bGUucmVsZWFzZSgpOworfQorCiAjaWYgRU5BQkxFKERBVEFHUklEKQogCiBQYXNzUmVmUHRyPFJl
bmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpwc2V1ZG9TdHlsZUZvckRhdGFHcmlkQ29sdW1u
KERhdGFHcmlkQ29sdW1uKiwgUmVuZGVyU3R5bGUqKQpAQCAtMjg4Myw2ICsyOTEzLDc0IEBAIHZv
aWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlEZWNsYXJhdGlvbnMoYm9vbCBpc0ltcG9ydGFudCwg
aW50IHN0YXJ0SW5kZXgsIGludCBlCiAgICAgfQogfQogCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6
Om1hdGNoUGFnZVJ1bGVzKENTU1J1bGVTZXQqIHJ1bGVzLCBib29sIGlzTGVmdFBhZ2UsIGJvb2wg
aXNGaXJzdFBhZ2UsIFN0cmluZyYgcGFnZU5hbWUpCit7CisgICAgbV9tYXRjaGVkUnVsZXMuY2xl
YXIoKTsKKworICAgIGlmICghcnVsZXMpCisgICAgICAgIHJldHVybjsKKworICAgIG1hdGNoUGFn
ZVJ1bGVzRm9yTGlzdChydWxlcy0+Z2V0UGFnZVJ1bGVzKCksIGlzTGVmdFBhZ2UsIGlzRmlyc3RQ
YWdlLCBwYWdlTmFtZSk7CisKKyAgICAvLyBJZiB3ZSBkaWRuJ3QgbWF0Y2ggYW55IHJ1bGVzLCB3
ZSdyZSBkb25lLgorICAgIGlmIChtX21hdGNoZWRSdWxlcy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIFNvcnQgdGhlIHNldCBvZiBtYXRjaGVkIHJ1bGVzLgorICAgIHNvcnRN
YXRjaGVkUnVsZXMoMCwgbV9tYXRjaGVkUnVsZXMuc2l6ZSgpKTsKKworICAgIC8vIE5vdyB0cmFu
c2ZlciB0aGUgc2V0IG9mIG1hdGNoZWQgcnVsZXMgb3ZlciB0byBvdXIgbGlzdCBvZiBkZWNscy4K
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXRjaGVkUnVsZXMuc2l6ZSgpOyBpKysp
CisgICAgICAgIGFkZE1hdGNoZWREZWNsYXJhdGlvbihtX21hdGNoZWRSdWxlc1tpXS0+cnVsZSgp
LT5kZWNsYXJhdGlvbigpKTsKK30KKwordm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXRjaFBhZ2VS
dWxlc0Zvckxpc3QoQ1NTUnVsZURhdGFMaXN0KiBydWxlcywgYm9vbCBpc0xlZnRQYWdlLCBib29s
IGlzRmlyc3RQYWdlLCBTdHJpbmcmIHBhZ2VOYW1lKQoreworICAgIGlmICghcnVsZXMpCisgICAg
ICAgIHJldHVybjsKKworICAgIGZvciAoQ1NTUnVsZURhdGEqIGQgPSBydWxlcy0+Zmlyc3QoKTsg
ZDsgZCA9IGQtPm5leHQoKSkgeworICAgICAgICBDU1NTdHlsZVJ1bGUqIHJ1bGUgPSBkLT5ydWxl
KCk7CisgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc2VsZWN0b3JMb2NhbE5hbWUgPSBkLT5z
ZWxlY3RvcigpLT5tX3RhZy5sb2NhbE5hbWUoKTsKKyAgICAgICAgaWYgKHNlbGVjdG9yTG9jYWxO
YW1lICE9IHN0YXJBdG9tICYmIHNlbGVjdG9yTG9jYWxOYW1lICE9IHBhZ2VOYW1lKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHBzZXVkb1R5
cGUgPSBkLT5zZWxlY3RvcigpLT5wc2V1ZG9UeXBlKCk7CisgICAgICAgIGlmICgocHNldWRvVHlw
ZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvTGVmdFBhZ2UgJiYgIWlzTGVmdFBhZ2UpCisgICAgICAg
ICAgICB8fCAocHNldWRvVHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvUmlnaHRQYWdlICYmIGlz
TGVmdFBhZ2UpCisgICAgICAgICAgICB8fCAocHNldWRvVHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNl
dWRvRmlyc3RQYWdlICYmICFpc0ZpcnN0UGFnZSkpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAvLyBJZiB0aGUgcnVsZSBoYXMgbm8gcHJvcGVydGllcyB0byBhcHBseSwgdGhlbiBp
Z25vcmUgaXQuCisgICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBkZWNsID0gcnVs
ZS0+ZGVjbGFyYXRpb24oKTsKKyAgICAgICAgaWYgKCFkZWNsIHx8ICFkZWNsLT5sZW5ndGgoKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIEFkZCB0aGlzIHJ1bGUgdG8gb3Vy
IGxpc3Qgb2YgbWF0Y2hlZCBydWxlcy4KKyAgICAgICAgYWRkTWF0Y2hlZFJ1bGUoZCk7CisgICAg
fQorfQorCitib29sIENTU1N0eWxlU2VsZWN0b3I6OmlzTGVmdFBhZ2UoaW50IHBhZ2VJbmRleCkg
Y29uc3QKK3sKKyAgICBib29sIGlzRmlyc3RQYWdlTGVmdCA9IGZhbHNlOworICAgIGlmIChtX3Jv
b3RFbGVtZW50U3R5bGUtPmRpcmVjdGlvbigpID09IFJUTCkKKyAgICAgICAgaXNGaXJzdFBhZ2VM
ZWZ0ID0gdHJ1ZTsKKworICAgIHJldHVybiAocGFnZUluZGV4ICsgKGlzRmlyc3RQYWdlTGVmdCA/
IDEgOiAwKSkgJSAyOworfQorCitib29sIENTU1N0eWxlU2VsZWN0b3I6OmlzRmlyc3RQYWdlKGlu
dCBwYWdlSW5kZXgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IEluIGNhc2Ugb2YgZm9yY2VkIGxl
ZnQvcmlnaHQgcGFnZSwgcGFnZSBhdCBpbmRleCAxIChub3QgMCkgY2FuIGJlIHRoZSBmaXJzdCBw
YWdlLgorICAgIHJldHVybiAoIXBhZ2VJbmRleCk7Cit9CisKK1N0cmluZyBDU1NTdHlsZVNlbGVj
dG9yOjpwYWdlTmFtZShpbnQgLyogcGFnZUluZGV4ICovKSBjb25zdAoreworICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgcGFnZSBpbmRleCB0byBwYWdlIG5hbWUgbWFwcGluZy4KKyAgICByZXR1cm4g
IiI7Cit9CisKIHN0YXRpYyB2b2lkIGFwcGx5Q291bnRlckxpc3QoUmVuZGVyU3R5bGUqIHN0eWxl
LCBDU1NWYWx1ZUxpc3QqIGxpc3QsIGJvb2wgaXNSZXNldCkKIHsKICAgICBDb3VudGVyRGlyZWN0
aXZlTWFwJiBtYXAgPSBzdHlsZS0+YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMoKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuaAppbmRleCBmZDM3Yzg1YmE0YjZkMTI0YjdjMjEwZmRmNGQ4Y2YyYWRjMGY2ZjNl
Li45ZDRiMDcwZWE0MmVlMDkzY2NjZWQ3MTNiM2EyNThkMjU1ZDE1NTgzIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5oCkBAIC05Myw2ICs5Myw4IEBAIHB1YmxpYzoKIAogICAgICAgICBQYXNzUmVmUHRy
PFJlbmRlclN0eWxlPiBwc2V1ZG9TdHlsZUZvckVsZW1lbnQoUHNldWRvSWQgcHNldWRvLCBFbGVt
ZW50KiBlLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSAwLCBib29sIG1hdGNoVmlzaXRlZFBz
ZXVkb0NsYXNzID0gZmFsc2UpOwogCisgICAgICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0
eWxlRm9yUGFnZShpbnQgcGFnZUluZGV4KTsKKwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4gc3R5bGVGb3JEb2N1bWVudChEb2N1bWVudCopOwogCiAjaWYgRU5BQkxFKERB
VEFHUklEKQpAQCAtMTgwLDYgKzE4MiwxMyBAQCBwdWJsaWM6CiAKICAgICAgICAgdGVtcGxhdGUg
PGJvb2wgZmlyc3RQYXNzPgogICAgICAgICB2b2lkIGFwcGx5RGVjbGFyYXRpb25zKGJvb2wgaW1w
b3J0YW50LCBpbnQgc3RhcnRJbmRleCwgaW50IGVuZEluZGV4KTsKKworICAgICAgICB2b2lkIG1h
dGNoUGFnZVJ1bGVzKENTU1J1bGVTZXQqLCBib29sIGlzTGVmdFBhZ2UsIGJvb2wgaXNGaXJzdFBh
Z2UsIFN0cmluZyYgcGFnZU5hbWUpOworICAgICAgICB2b2lkIG1hdGNoUGFnZVJ1bGVzRm9yTGlz
dChDU1NSdWxlRGF0YUxpc3QqLCBib29sIGlzTGVmdFBhZ2UsIGJvb2wgaXNGaXJzdFBhZ2UsIFN0
cmluZyYgcGFnZU5hbWUpOworICAgICAgICBib29sIGlzTGVmdFBhZ2UoaW50IHBhZ2VJbmRleCkg
Y29uc3Q7CisgICAgICAgIGJvb2wgaXNSaWdodFBhZ2UoaW50IHBhZ2VJbmRleCkgY29uc3QgeyBy
ZXR1cm4gIWlzTGVmdFBhZ2UocGFnZUluZGV4KTsgfQorICAgICAgICBib29sIGlzRmlyc3RQYWdl
KGludCBwYWdlSW5kZXgpIGNvbnN0OworICAgICAgICBTdHJpbmcgcGFnZU5hbWUoaW50IHBhZ2VJ
bmRleCkgY29uc3Q7CiAgICAgICAgIAogICAgICAgICBDU1NSdWxlU2V0KiBtX2F1dGhvclN0eWxl
OwogICAgICAgICBDU1NSdWxlU2V0KiBtX3VzZXJTdHlsZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Y3NzL2h0bWwuY3NzIGIvV2ViQ29yZS9jc3MvaHRtbC5jc3MKaW5kZXggYjRiYjA1YThlOWRiYzhm
OTE0OWYyNjc2YWFhZjRkYmU3M2VmNzU5OC4uYmY2MDEyM2I4NjRlMDhmMjA3MDk2YjkxZmYzODJj
MjZlY2Q3ZTVhZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvaHRtbC5jc3MKKysrIGIvV2ViQ29y
ZS9jc3MvaHRtbC5jc3MKQEAgLTY4Myw0ICs2ODMsMTAgQEAgaWZyYW1lIHsKICAgICBib3JkZXI6
IDJweCBpbnNldAogfQogCisvKiBwYWdlICovCisKK0BwYWdlIHsKKyAgICBtYXJnaW46IDFpbjsK
K30KKwogLyogbm9zY3JpcHQgaXMgaGFuZGxlZCBpbnRlcm5hbGx5LCBhcyBpdCBkZXBlbmRzIG9u
IHNldHRpbmdzICovCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZWFlZWQxM2UwYmU5NTFhNTY3MmRmODJkZjI0ZDM2
MWRkMmU0OGVmZS4uMWViODgwMDUxMTQ0NzkyMGYwNmIwNzNkNDE4YjdlZGE3YTdkZjk5MSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtMTQ5NCw2ICsxNDk0LDE0IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IERv
Y3VtZW50OjpzdHlsZUZvckVsZW1lbnRJZ25vcmluZ1BlbmRpbmdTdHlsZXNoZWV0cyhFbGVtCiAg
ICAgcmV0dXJuIHN0eWxlLnJlbGVhc2UoKTsKIH0KIAorUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
RG9jdW1lbnQ6OnN0eWxlRm9yUGFnZShpbnQgcGFnZUluZGV4KQoreworICAgIEFTU0VSVF9BUkco
ZWxlbWVudCwgZWxlbWVudC0+ZG9jdW1lbnQoKSA9PSB0aGlzKTsKKworICAgIFJlZlB0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUgPSBzdHlsZVNlbGVjdG9yKCktPnN0eWxlRm9yUGFnZShwYWdlSW5kZXgp
OworICAgIHJldHVybiBzdHlsZS5yZWxlYXNlKCk7Cit9CisKIHZvaWQgRG9jdW1lbnQ6OmNyZWF0
ZVN0eWxlU2VsZWN0b3IoKQogewogICAgIGJvb2wgbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzID0g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCmluZGV4IGYwZmRkNTM3YTg4YjgzMWZjYWIwY2VkNjE3MzEyNTk2NGYyNTYzMGMu
Ljg4MDM3YWRkMjk5NzNlMGMyOTNhMzU1MTlhOTBjYjYxOTFkNjZkODAgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNDgw
LDYgKzQ4MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUxheW91dCgpOwogICAgIHZvaWQg
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4gc3R5bGVGb3JFbGVtZW50SWdub3JpbmdQZW5kaW5nU3R5bGVzaGVldHMoRWxl
bWVudCopOworICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yUGFnZShpbnQgcGFn
ZUluZGV4KTsKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVTdHlsZUZvckFsbERvY3VtZW50cygpOyAv
LyBGSVhNRTogVHJ5IHRvIHJlZHVjZSB0aGUgIyBvZiBjYWxscyB0byB0aGlzIGZ1bmN0aW9uLgog
ICAgIERvY0xvYWRlciogZG9jTG9hZGVyKCkgeyByZXR1cm4gbV9kb2NMb2FkZXIuZ2V0KCk7IH0K
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAgYi9XZWJDb3JlL3Bh
Z2UvUHJpbnRDb250ZXh0LmNwcAppbmRleCBmZmRlMGJlYjFlM2MwYmU0NGQ3ZTUyMjk3N2IzYWI1
MzYyODZjMWQwLi5kZDg2M2Q4ZGI1ZmUxMDNkNjAzYmU0ODkxYTU1NmQ2Mzc5MzliNDFlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAorKysgYi9XZWJDb3JlL3BhZ2Uv
UHJpbnRDb250ZXh0LmNwcApAQCAtMTk4LDYgKzE5OCwxOCBAQCBpbnQgUHJpbnRDb250ZXh0Ojpw
YWdlTnVtYmVyRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBjb25zdCBGbG9hdFNpemUmIHBh
Z2VTaQogICAgIHJldHVybiAtMTsKIH0KIAorU3RyaW5nIFByaW50Q29udGV4dDo6cGFnZVByb3Bl
cnR5KEZyYW1lKiBmcmFtZSwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBpbnQgcGFnZU51bWJl
cikKK3sKKyAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgUmVmUHRy
PFJlbmRlclN0eWxlPiBzdHlsZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZUZvclBhZ2UocGFn
ZU51bWJlcik7CisKKyAgICAvLyBJbXBsZW1lbnQgZm9ybWF0dGVycyBmb3IgcHJvcGVydGllcyB3
ZSBjYXJlIGFib3V0LgorICAgIGlmICghc3RyY21wKHByb3BlcnR5TmFtZSwgIm1hcmdpbi1sZWZ0
IikpCisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJWQiLCBzdHlsZS0+bWFyZ2luTGVm
dCgpLnJhd1ZhbHVlKCkpOworCisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJwYWdlUHJvcGVy
dHkoKSB1bmltcGxlbWVudGVkIGZvcjogJXMiLCBwcm9wZXJ0eU5hbWUpOworfQorCiBpbnQgUHJp
bnRDb250ZXh0OjpudW1iZXJPZlBhZ2VzKEZyYW1lKiBmcmFtZSwgY29uc3QgRmxvYXRTaXplJiBw
YWdlU2l6ZUluUGl4ZWxzKQogewogICAgIGZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQo
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuaCBiL1dlYkNvcmUvcGFn
ZS9QcmludENvbnRleHQuaAppbmRleCAxODkxMTQ0Zjk0MmQzOWFmN2ExMmQwMDdhNDFkZWYzMGRl
NTRkODQwLi45Mzk4YTZlYmQwODhlODYwMTNmMjRmNjY1MjkyNTY3NDA5ZTI0ODUxIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9wYWdlL1ByaW50
Q29udGV4dC5oCkBAIC0zMSw2ICszMSw3IEBAIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEZsb2F0
U2l6ZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEludFJlY3Q7CitjbGFzcyBTdHJp
bmc7CiAKIGNsYXNzIFByaW50Q29udGV4dCB7CiBwdWJsaWM6CkBAIC01NCw2ICs1NSw3IEBAIHB1
YmxpYzoKIAogICAgIC8vIFVzZWQgYnkgbGF5b3V0IHRlc3RzLgogICAgIHN0YXRpYyBpbnQgcGFn
ZU51bWJlckZvckVsZW1lbnQoRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBp
eGVscyk7CisgICAgc3RhdGljIFN0cmluZyBwYWdlUHJvcGVydHkoRnJhbWUqIGZyYW1lLCBjb25z
dCBjaGFyKiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlTnVtYmVyKTsKICAgICBzdGF0aWMgaW50IG51
bWJlck9mUGFnZXMoRnJhbWUqLCBjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMpOwog
CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCmluZGV4IDg1Y2FjNjNhZmQxM2JmMDkzZTJlYmNhNmY1MDFiZGQwMDkyMzI4
ZGMuLjcyNTg5Mzc1YmFkZmI5ZmM1MDM0ZWNmYjUyMTAwODVkOTkxMzFhMzggMTAwNjQ0Ci0tLSBh
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTAtMDUtMzEgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dCByZW5kZXIgc3R5bGUgc2VsZWN0aW9uIGZvciBwYWdlcyB0byBzdXBwb3J0IENTUzMgUGFnZWQg
TWVkaWEuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NTk2MQorCisgICAgICAgICogTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5oOgorICAgICAgICAqIE1p
c2MvV2ViQ29yZVN0YXRpc3RpY3MubW06CisgICAgICAgICgtW1dlYkZyYW1lIHBhZ2VQcm9wZXJ0
eTpwcm9wZXJ0eU5hbWU6XSk6CisKIDIwMTAtMDUtMjAgIE1pa2UgVGhvbGUgIDxtdGhvbGVAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmUgSHlhdHQuCmRpZmYgLS1naXQgYS9X
ZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaCBiL1dlYktpdC9tYWMvTWlzYy9XZWJD
b3JlU3RhdGlzdGljcy5oCmluZGV4IGExMWMwNjQ0OGM4YzdmNWRhODJiMGYyZWM2NjVlNTViZTI1
Mzg5YmMuLmM3OWM5NmRmMWEwYzA5NGVkMzZjZDgzY2ZhNDE4YjgzMTQ4MTJmZDggMTAwNjQ0Ci0t
LSBhL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5oCisrKyBiL1dlYktpdC9tYWMv
TWlzYy9XZWJDb3JlU3RhdGlzdGljcy5oCkBAIC04Nyw0ICs4Nyw1IEBACiAtIChOU1N0cmluZyAq
KWNvdW50ZXJWYWx1ZUZvckVsZW1lbnQ6KERPTUVsZW1lbnQqKWVsZW1lbnQ7CiAtIChpbnQpcGFn
ZU51bWJlckZvckVsZW1lbnQ6KERPTUVsZW1lbnQqKWVsZW1lbnQ6KGZsb2F0KXBhZ2VXaWR0aElu
UGl4ZWxzOihmbG9hdClwYWdlSGVpZ2h0SW5QaXhlbHM7CiAtIChpbnQpbnVtYmVyT2ZQYWdlczoo
ZmxvYXQpcGFnZVdpZHRoSW5QaXhlbHM6KGZsb2F0KXBhZ2VIZWlnaHRJblBpeGVsczsKKy0gKE5T
U3RyaW5nICopcGFnZVByb3BlcnR5Oihjb25zdCBjaGFyKilwcm9wZXJ0eU5hbWU6KGludClwYWdl
TnVtYmVyOwogQGVuZApkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0
aWNzLm1tIGIvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCmluZGV4IGMzZmMy
M2VjZjQ4NzE3MTU0MDU3NjFiMWM0YTA0YzU0YzM5NGMwNTguLjg5ZjcwZmQ5YzczMjZhMzdkYWVm
NWM1ODY0NGUzOTcyMTI0YzZiZjUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvTWlzYy9XZWJDb3Jl
U3RhdGlzdGljcy5tbQorKysgYi9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0K
QEAgLTI3NSw0ICsyNzUsOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICByZXR1cm4g
UHJpbnRDb250ZXh0OjpudW1iZXJPZlBhZ2VzKF9wcml2YXRlLT5jb3JlRnJhbWUsIEZsb2F0U2l6
ZShwYWdlV2lkdGhJblBpeGVscywgcGFnZUhlaWdodEluUGl4ZWxzKSk7CiB9CiAKKy0gKE5TU3Ry
aW5nICopcGFnZVByb3BlcnR5Oihjb25zdCBjaGFyICopcHJvcGVydHlOYW1lOihpbnQpcGFnZU51
bWJlcgoreworICAgIHJldHVybiBQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eShfcHJpdmF0ZS0+
Y29yZUZyYW1lLCBwcm9wZXJ0eU5hbWUsIHBhZ2VOdW1iZXIpOworfQorCiBAZW5kCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXgg
OTlhMGE3YzhhMDViNDBhZGRkZjY4OGY3ZDhlMmI0ZWU5YTRmYTNiMS4uMzE1ZmFjOGUxYjdlZjA4
NDIzNGM5ODJiNWIxMDNmMDcxZTg5YWUyMiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEwLTA1
LTMxICBZdXpvIEZ1amlzaGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgcmVuZGVyIHN0eWxlIHNl
bGVjdGlvbiBmb3IgcGFnZXMgdG8gc3VwcG9ydCBDU1MzIFBhZ2VkIE1lZGlhLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU5NjEKKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHBhcnNl
UGFnZVByb3BlcnR5UGFyYW1ldGVycyk6CisgICAgICAgIChwYWdlUHJvcGVydHlDYWxsYmFjayk6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjpwYWdlUHJvcGVydHkpOgorCiAyMDEwLTA1LTIwICBUb255IEdl
bnRpbGNvcmUgIDx0b255Z0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFu
aWVsIEJhdGVzLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwCmluZGV4IGI5NmE5YzljNTZhNDM3MTUxN2VmZjdlNWViMDllMmRiOTJh
ODFmYjguLmNiNjg3OGJjODUwN2FhOGE3MGQwYmU3YjI0NWNiMDFhYTNlM2U5OTkgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAor
KysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAK
QEAgLTUyMSw2ICs1MjEsMzMgQEAgc3RhdGljIGJvb2wgcGFyc2VQYWdlUGFyYW1ldGVycyhKU0Nv
bnRleHRSZWYgY29udGV4dCwgaW50IGFyZ3VtZW50Q291bnQsIGNvbnN0IEoKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAorLy8gQ2FsbGVyIG5lZWRzIHRvIGRlbGV0ZVtdIHByb3BlcnR5TmFtZS4KK3N0
YXRpYyBib29sIHBhcnNlUGFnZVByb3BlcnR5UGFyYW1ldGVycyhKU0NvbnRleHRSZWYgY29udGV4
dCwgaW50IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYqIGFyZ3VtZW50cywgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uLCBjaGFyKiYgcHJvcGVydHlOYW1lLCBpbnQmIHBhZ2VOdW1iZXIpCit7
CisgICAgcGFnZU51bWJlciA9IDA7CisgICAgc3dpdGNoIChhcmd1bWVudENvdW50KSB7CisgICAg
Y2FzZSAyOgorICAgICAgICBwYWdlTnVtYmVyID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KEpTVmFsdWVU
b051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2VwdGlvbikpOworICAgICAgICBpZiAo
KmV4Y2VwdGlvbikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgLy8gRmFsbCB0
aHJvdWdoLgorICAgIGNhc2UgMToKKyAgICAgICAgeworICAgICAgICAgICAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IHByb3BlcnR5TmFtZVN0cmluZyhBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29w
eShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgQVNTRVJU
KCEqZXhjZXB0aW9uKTsKKworICAgICAgICAgICAgc2l6ZV90IG1heExlbmd0aCA9IEpTU3RyaW5n
R2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShwcm9wZXJ0eU5hbWVTdHJpbmcuZ2V0KCkpOworICAg
ICAgICAgICAgcHJvcGVydHlOYW1lID0gbmV3IGNoYXJbbWF4TGVuZ3RoICsgMV07CisgICAgICAg
ICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKHByb3BlcnR5TmFtZVN0cmluZy5nZXQoKSwgcHJv
cGVydHlOYW1lLCBtYXhMZW5ndGggKyAxKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgY2FzZSAwOgorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHBhZ2VOdW1i
ZXJGb3JFbGVtZW50QnlJZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsK
ICAgICBmbG9hdCBwYWdlV2lkdGhJblBpeGVscyA9IDA7CkBAIC01NDgsNiArNTc1LDIwIEBAIHN0
YXRpYyBKU1ZhbHVlUmVmIG51bWJlck9mUGFnZXNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgZnVuY3RpCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRl
eHQsIGNvbnRyb2xsZXItPm51bWJlck9mUGFnZXMocGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWln
aHRJblBpeGVscykpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBwYWdlUHJvcGVydHlDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgY2hhciogcHJvcGVydHlOYW1l
OworICAgIGludCBwYWdlTnVtYmVyID0gMDsKKyAgICBpZiAoIXBhcnNlUGFnZVByb3BlcnR5UGFy
YW1ldGVycyhjb250ZXh0LCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMsIGV4Y2VwdGlvbiwgcHJv
cGVydHlOYW1lLCBwYWdlTnVtYmVyKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGNvbnRleHQpOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBz
dGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlz
T2JqZWN0KSk7CisgICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRl
eHQsIGNvbnRyb2xsZXItPnBhZ2VQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIHBhZ2VOdW1iZXIpLmdl
dCgpKTsKKworICAgIGRlbGV0ZVtdIHByb3BlcnR5TmFtZTsKKyAgICByZXR1cm4gdmFsdWU7Cit9
CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHF1ZXVlQmFja05hdmlnYXRpb25DYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIG1hYyAmIHdpbmRvd3MgaW1wbGVt
ZW50YXRpb24KQEAgLTE2MDEsNiArMTY0Miw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRl
c3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJudW1iZXJPZkFjdGl2
ZUFuaW1hdGlvbnMiLCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnNDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJvdmVycmlkZVByZWZlcmVuY2UiLCBvdmVycmlkZVByZWZlcmVuY2VDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQiLCBwYWdlTnVt
YmVyRm9yRWxlbWVudEJ5SWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJwYWdlUHJvcGVy
dHkiLCBwYWdlUHJvcGVydHlDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJwYXRoVG9Mb2Nh
bFJlc291cmNlIiwgcGF0aFRvTG9jYWxSZXNvdXJjZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgInBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkIiwgcGF1c2VBbmltYXRpb25B
dFRpbWVPbkVsZW1lbnRXaXRoSWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJwYXVzZVRy
YW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQiLCBwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVs
ZW1lbnRXaXRoSWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggOGZmMzhkMTA5MDEwZjRlOTY4MmRh
MmI4N2U4ZWYxODZjNDExYzJhOC4uMTRlYzEzMGM1ZTA0YjEzYjMxYjRmZTYwNjU1ODFjMzczYWYz
ZjM0OSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCkBAIC02Miw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICBpbnQgbnVtYmVyT2ZQYWdl
cyhmbG9hdCBwYWdlV2lkdGhJblBpeGVscywgZmxvYXQgcGFnZUhlaWdodEluUGl4ZWxzKTsKICAg
ICB2b2lkIG92ZXJyaWRlUHJlZmVyZW5jZShKU1N0cmluZ1JlZiBrZXksIEpTU3RyaW5nUmVmIHZh
bHVlKTsKICAgICBpbnQgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkLCBm
bG9hdCBwYWdlV2lkdGhJblBpeGVscywgZmxvYXQgcGFnZUhlaWdodEluUGl4ZWxzKTsKKyAgICBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGFnZVByb3BlcnR5KGNvbnN0IGNoYXIqIHByb3BlcnR5
TmFtZSwgaW50IHBhZ2VOdW1iZXIpIGNvbnN0OwogICAgIEpTU3RyaW5nUmVmIHBhdGhUb0xvY2Fs
UmVzb3VyY2UoSlNDb250ZXh0UmVmLCBKU1N0cmluZ1JlZiB1cmwpOwogICAgIHZvaWQgcXVldWVC
YWNrTmF2aWdhdGlvbihpbnQgaG93RmFyQmFja3dhcmQpOwogICAgIHZvaWQgcXVldWVGb3J3YXJk
TmF2aWdhdGlvbihpbnQgaG93RmFyRm9yd2FyZCk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggZTVl
YmMwMmVkMGMwYmVlZjk3ZmNlM2I0NWJiNWE1M2I2NGRjYjlhMS4uNTA1ZDM2NjgwOTEzZmZmOTMw
Mzg1YWZiNGZmODhiZmZjYjc2MzYxZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtMjE0LDYgKzIx
NCwxMiBAQCBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJ
ZChKU1N0cmluZ1JlZiBpZCwgZmxvYXQgcGFnZVdpZAogICAgIHJldHVybiBbbWFpbkZyYW1lIHBh
Z2VOdW1iZXJGb3JFbGVtZW50OmVsZW1lbnQ6cGFnZVdpZHRoSW5QaXhlbHM6cGFnZUhlaWdodElu
UGl4ZWxzXTsKIH0KIAorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9s
bGVyOjpwYWdlUHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBpbnQgcGFnZU51bWJl
cikgY29uc3QKK3sKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcHJvcGVydHlWYWx1ZShB
ZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKVttYWluRnJhbWUg
cGFnZVByb3BlcnR5OnByb3BlcnR5TmFtZTpwYWdlTnVtYmVyXSkpOworICAgIHJldHVybiBwcm9w
ZXJ0eVZhbHVlOworfQorCiBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGFnZXMo
ZmxvYXQgcGFnZVdpZHRoSW5QaXhlbHMsIGZsb2F0IHBhZ2VIZWlnaHRJblBpeGVscykKIHsKICAg
ICByZXR1cm4gW21haW5GcmFtZSBudW1iZXJPZlBhZ2VzOnBhZ2VXaWR0aEluUGl4ZWxzOnBhZ2VI
ZWlnaHRJblBpeGVsc107Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57522</attachid>
            <date>2010-06-01 00:45:47 -0700</date>
            <delta_ts>2010-06-09 02:47:04 -0700</delta_ts>
            <desc>trivial build and style fixes</desc>
            <filename>bug-35961-20100601004545.patch</filename>
            <type>text/plain</type>
            <size>32941</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMmU2NjQ5OTBiYjcwZGVkNWI3ODMwYjkzNzk4Y2EyNDVkMTU2OWUxLi4yMjRkM2Q1
YzVkOTBjY2Q2ODU4MDc4NGYyMTgzZjRmNTVjYzg1ZDQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDUtMzEgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCByZW5kZXIg
c3R5bGUgc2VsZWN0aW9uIGZvciBwYWdlcyB0byBzdXBwb3J0IENTUzMgUGFnZWQgTWVkaWEuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTk2MQorCisg
ICAgICAgICogcHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHByaW50aW5nL3BhZ2UtcnVsZS1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCisK
IDIwMTAtMDUtMzEgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wcmludGluZy9w
YWdlLXJ1bGUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3ByaW50aW5nL3Bh
Z2UtcnVsZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzN2MzMDY4ZGFkODFl
NzM5Y2M4MTQyNTg2MjBkNDY1YWMyYzIzODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wcmludGluZy9wYWdlLXJ1bGUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQy
IEBACitUaGlzIHRlc3RzIHBhZ2Ugc3R5bGUgc2VsZWN0aW9uLgorCitEZWZhdWx0IG1hcmdpbiBp
cyAxaW4gPSA5NnB4LgorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21h
cmdpbi1sZWZ0JywgMCkgaXMgIjk2IgorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJv
cGVydHkoJ21hcmdpbi1sZWZ0JywgMSkgaXMgIjk2IgorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxl
ci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMikgaXMgIjk2IgorUEFTUyBsYXlvdXRUZXN0
Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMykgaXMgIjk2IgorUEFTUyBs
YXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgNCkgaXMgIjk2
IgorU2V0IG1hcmdpbiB0byAxMDBweC4KK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVBy
b3BlcnR5KCdtYXJnaW4tbGVmdCcsIDApIGlzICIxMDAiCitQQVNTIGxheW91dFRlc3RDb250cm9s
bGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAxKSBpcyAiMTAwIgorUEFTUyBsYXlvdXRU
ZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMikgaXMgIjEwMCIKK1BB
U1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDMpIGlz
ICIxMDAiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxl
ZnQnLCA0KSBpcyAiMTAwIgorU2V0IG1hcmdpbiBmb3IgcmlnaHQgcGFnZXMgdG8gNTBweC4gVGhl
IGZpcnN0IHBhZ2UgaXMgYSByaWdodCBwYWdlLgorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5w
YWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMCkgaXMgIjUwIgorUEFTUyBsYXlvdXRUZXN0Q29u
dHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMSkgaXMgIjEwMCIKK1BBU1MgbGF5
b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDIpIGlzICI1MCIK
K1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDMp
IGlzICIxMDAiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2lu
LWxlZnQnLCA0KSBpcyAiNTAiCitTZXQgbWFyZ2luIGZvciBsZWZ0IHBhZ2VzIHRvIDc1cHguCitQ
QVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAwKSBp
cyAiNTAiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxl
ZnQnLCAxKSBpcyAiNzUiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgn
bWFyZ2luLWxlZnQnLCAyKSBpcyAiNTAiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQ
cm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAzKSBpcyAiNzUiCitQQVNTIGxheW91dFRlc3RDb250cm9s
bGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCA0KSBpcyAiNTAiCitTZXQgbWFyZ2luIGZv
ciB0aGUgZmlyc3QgcGFnZSB0byAxMjVweC4KK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFn
ZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDApIGlzICIxMjUiCitQQVNTIGxheW91dFRlc3RDb250
cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAxKSBpcyAiNzUiCitQQVNTIGxheW91
dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAyKSBpcyAiNTAiCitQ
QVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAzKSBp
cyAiNzUiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxl
ZnQnLCA0KSBpcyAiNTAiCitDaGFuZ2UgdGhlIGRvY3VtZW50IGRpcmVjdGlvbiB0byBSVEwuIFRo
aXMgbWFrZXMgdGhlIGZpcnN0IHBhZ2UgYSBsZWZ0IHBhZ2UuCitQQVNTIGxheW91dFRlc3RDb250
cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAwKSBpcyAiMTI1IgorUEFTUyBsYXlv
dXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMSkgaXMgIjUwIgor
UEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMikg
aXMgIjc1IgorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1s
ZWZ0JywgMykgaXMgIjUwIgorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHko
J21hcmdpbi1sZWZ0JywgNCkgaXMgIjc1IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3ByaW50aW5nL3Bh
Z2UtcnVsZS1zZWxlY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVsZS1z
ZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGY5MWFmYzMwYTg5YmUxNWZjYTk5NDMzNDM0ODBh
NTY5NDg4MjRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcHJpbnRpbmcvcGFnZS1y
dWxlLXNlbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsNzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWwgaWQ9Imh0bWxfZWxlbWVudCI+Cis8aGVhZCBpZD0iaGVhZF9lbGVtZW50Ij4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj5UaGlzIHRlc3Rz
IHBhZ2Ugc3R5bGUgc2VsZWN0aW9uLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKyAgICBmdW5jdGlvbiBhcHBlbmRTdHlsZShzdHlsZVN0cmluZykKKyAgICB7CisgICAg
ICAgIHZhciBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOwor
ICAgICAgICBzdHlsZUVsZW1lbnQuaW5uZXJIVE1MID0gc3R5bGVTdHJpbmc7CisgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJoZWFkX2VsZW1lbnQiKS5hcHBlbmRDaGlsZChzdHlsZUVs
ZW1lbnQpOworICAgIH0KKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICBkZWJ1ZygiRGVmYXVs
dCBtYXJnaW4gaXMgMWluID0gOTZweC4iKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDAp
IiwgIjk2Iik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RD
b250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAxKSIsICI5NiIpOworICAgICAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJv
cGVydHkoJ21hcmdpbi1sZWZ0JywgMikiLCAiOTYiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVm
dCcsIDMpIiwgIjk2Iik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91
dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCA0KSIsICI5NiIpOwor
CisgICAgICAgICAgICBkZWJ1ZygiU2V0IG1hcmdpbiB0byAxMDBweC4iKTsKKyAgICAgICAgICAg
IGFwcGVuZFN0eWxlKCJAcGFnZSB7IG1hcmdpbjoxMDBweDsgfSIpOworICAgICAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21h
cmdpbi1sZWZ0JywgMCkiLCAiMTAwIik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAxKSIs
ICIxMDAiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENv
bnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDIpIiwgIjEwMCIpOworICAgICAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJv
cGVydHkoJ21hcmdpbi1sZWZ0JywgMykiLCAiMTAwIik7CisgICAgICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxl
ZnQnLCA0KSIsICIxMDAiKTsKKworICAgICAgICAgICAgZGVidWcoIlNldCBtYXJnaW4gZm9yIHJp
Z2h0IHBhZ2VzIHRvIDUwcHguIFRoZSBmaXJzdCBwYWdlIGlzIGEgcmlnaHQgcGFnZS4iKTsKKyAg
ICAgICAgICAgIGFwcGVuZFN0eWxlKCJAcGFnZSA6cmlnaHQgeyBtYXJnaW46NTBweDsgfSIpOwor
ICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5w
YWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMCkiLCAiNTAiKTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJn
aW4tbGVmdCcsIDEpIiwgIjEwMCIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMikiLCAi
NTAiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRy
b2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDMpIiwgIjEwMCIpOworICAgICAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVy
dHkoJ21hcmdpbi1sZWZ0JywgNCkiLCAiNTAiKTsKKworICAgICAgICAgICAgZGVidWcoIlNldCBt
YXJnaW4gZm9yIGxlZnQgcGFnZXMgdG8gNzVweC4iKTsKKyAgICAgICAgICAgIGFwcGVuZFN0eWxl
KCJAcGFnZSA6bGVmdCB7IG1hcmdpbjo3NXB4OyB9Iik7CisgICAgICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxl
ZnQnLCAwKSIsICI1MCIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlv
dXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMSkiLCAiNzUiKTsK
KyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIu
cGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDIpIiwgIjUwIik7CisgICAgICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFy
Z2luLWxlZnQnLCAzKSIsICI3NSIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgNCkiLCAi
NTAiKTsKKworICAgICAgICAgICAgZGVidWcoIlNldCBtYXJnaW4gZm9yIHRoZSBmaXJzdCBwYWdl
IHRvIDEyNXB4LiIpOworICAgICAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdlIDpmaXJzdCB7IG1h
cmdpbjoxMjVweDsgfSIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlv
dXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMCkiLCAiMTI1Iik7
CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVy
LnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAxKSIsICI3NSIpOworICAgICAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21h
cmdpbi1sZWZ0JywgMikiLCAiNTAiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDMpIiwg
Ijc1Iik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250
cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCA0KSIsICI1MCIpOworCisgICAgICAg
ICAgICBkZWJ1ZygiQ2hhbmdlIHRoZSBkb2N1bWVudCBkaXJlY3Rpb24gdG8gUlRMLiBUaGlzIG1h
a2VzIHRoZSBmaXJzdCBwYWdlIGEgbGVmdCBwYWdlLiIpOworICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImh0bWxfZWxlbWVudCIpLnNldEF0dHJpYnV0ZSgiZGlyIiwgInJ0bCIp
OworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxl
ci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMCkiLCAiMTI1Iik7CisgICAgICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgn
bWFyZ2luLWxlZnQnLCAxKSIsICI1MCIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMiki
LCAiNzUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENv
bnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDMpIiwgIjUwIik7CisgICAgICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9w
ZXJ0eSgnbWFyZ2luLWxlZnQnLCA0KSIsICI3NSIpOworICAgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgICAgdGVzdEZhaWxlZCgiVGhpcyB0ZXN0IGNhbiBiZSBydW4gb25seSB3aXRoIHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlciIpOworICAgIH0KKyAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDcwODAzYzRkMGU5
MmNjOTVlN2E5YjkxMDA0YWViYzFiYzljZTI5YzguLjM2ZWNlOGQxNzU1NTMwNGIzNDA5NGZlN2Y5
Y2RmZDY5MzQ5M2Q0YjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTAtMDUtMzEgIFl1em8gRnVqaXNoaW1h
ICA8eXV6b0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudCByZW5kZXIgc3R5bGUgc2VsZWN0aW9uIGZvciBwYWdlcyB0
byBzdXBwb3J0IENTUzMgUGFnZWQgTWVkaWEuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNTk2MQorCisgICAgICAgIFRlc3Q6IHByaW50aW5nL3BhZ2Ut
cnVsZS1zZWxlY3Rpb24uaHRtbAorCisgICAgICAgICogV2ViQ29yZS5iYXNlLmV4cDoKKyAgICAg
ICAgKiBjc3MvQ1NTR3JhbW1hci55OgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c3BlY2lmaWNpdHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU2VsZWN0b3I6OnNwZWNpZmljaXR5Rm9yUGFnZSk6CisgICAgICAgICogY3NzL0NT
U1NlbGVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6Q1NTU2VsZWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmlzRm9yUGFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2V0Rm9yUGFnZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVG
b3JQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUGFnZVJ1
bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUGFnZVJ1bGVz
Rm9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjppc0xlZnRQYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmlzRmlyc3RQYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnBhZ2VOYW1lKToKKyAgICAgICAgKiBj
c3MvQ1NTU3R5bGVTZWxlY3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rv
cjo6aXNSaWdodFBhZ2UpOgorICAgICAgICAqIGNzcy9odG1sLmNzczoKKyAgICAgICAgKEBwYWdl
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnN0eWxlRm9yUGFnZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICog
cGFnZS9QcmludENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0Ojpw
YWdlUHJvcGVydHkpOgorICAgICAgICAqIHBhZ2UvUHJpbnRDb250ZXh0Lmg6CisKIDIwMTAtMDUt
MzEgIEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cCBiL1dlYkNv
cmUvV2ViQ29yZS5iYXNlLmV4cAppbmRleCBjNzk5Yjg0NTNkNGIwZWJhNWQ2MzNjODBjMTAxOTI0
ZTQxZTM4NjY1Li4yZmIyYmVkNzk5ODM5ZGJiMjMyMWYwNzQ5Zjg0MDBlMTU1ODU5OTQ5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmJh
c2UuZXhwCkBAIC0yNDgsNiArMjQ4LDcgQEAgX19aTjdXZWJDb3JlMTJJY29uRGF0YWJhc2U0b3Bl
bkVSS05TXzZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMkljb25EYXRhYmFzZTVjbG9zZUV2CiBfX1pO
N1dlYkNvcmUxMkljb25EYXRhYmFzZTlzZXRDbGllbnRFUE5TXzE4SWNvbkRhdGFiYXNlQ2xpZW50
RQogX19aTjdXZWJDb3JlMTJQbHVnaW5XaWRnZXQxNGludmFsaWRhdGVSZWN0RVJLTlNfN0ludFJl
Y3RFCitfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDEycGFnZVByb3BlcnR5RVBOU181RnJhbWVF
UEtjaQogX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQxM251bWJlck9mUGFnZXNFUE5TXzVGcmFt
ZUVSS05TXzlGbG9hdFNpemVFCiBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDIwcGFnZU51bWJl
ckZvckVsZW1lbnRFUE5TXzdFbGVtZW50RVJLTlNfOUZsb2F0U2l6ZUUKIF9fWk43V2ViQ29yZTEy
UHJpbnRDb250ZXh0Mjhjb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplRVJLTlNfOUZsb2F0U2l6
ZUViCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkgYi9XZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkKaW5kZXggMDZjNmQwMTg2NmRjNzQ1Y2Q0ODA5MmVmOTkxZGQ2ZjY2NGM2OGY1
OC4uMjZiMmJhODZiZDBkMzhiODYxNzcxNGMxOTk2NzI0MTJiODUwMTU2OCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CisrKyBiL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQpA
QCAtNzc4LDE5ICs3NzgsMjUgQEAgcGFnZV9zZWxlY3RvcjoKICAgICAgICAgQ1NTUGFyc2VyKiBw
ID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgJCQgPSBwLT5jcmVh
dGVGbG9hdGluZ1NlbGVjdG9yKCk7CiAgICAgICAgICQkLT5tX3RhZyA9IFF1YWxpZmllZE5hbWUo
bnVsbEF0b20sICQxLCBwLT5tX2RlZmF1bHROYW1lc3BhY2UpOworICAgICAgICAkJC0+c2V0Rm9y
UGFnZSgpOwogICAgIH0KICAgICB8IElERU5UIHBzZXVkb19wYWdlIHsKICAgICAgICAgQ1NTUGFy
c2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgJCQgPSAk
MjsKLSAgICAgICAgaWYgKCQkKQorICAgICAgICBpZiAoJCQpIHsKICAgICAgICAgICAgICQkLT5t
X3RhZyA9IFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQxLCBwLT5tX2RlZmF1bHROYW1lc3BhY2Up
OworICAgICAgICAgICAgJCQtPnNldEZvclBhZ2UoKTsKKyAgICAgICAgfQogICAgIH0KICAgICB8
IHBzZXVkb19wYWdlIHsKICAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgaWYgKCQkKQorICAgICAg
ICAgICAgJCQtPnNldEZvclBhZ2UoKTsKICAgICB9CiAgICAgfCAvKiBlbXB0eSAqLyB7CiAgICAg
ICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAg
ICAgICQkID0gcC0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAkJC0+c2V0Rm9y
UGFnZSgpOwogICAgIH0KICAgICA7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCA1YWRkOTBiZWZhNjRm
MjFmMGU1YWEyNTU2NmYzYjZhNmMzNzM0MjgxLi41OTRhYTkzNThjYzhhNDdkNTkzN2U0NmIxYzM1
YmEwMjBlMjNiZTgyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysr
IGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCkBAIC0zNyw2ICszNyw5IEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAKIHVuc2lnbmVkIGludCBDU1NTZWxlY3Rvcjo6c3BlY2lmaWNp
dHkoKQogeworICAgIGlmIChtX2lzRm9yUGFnZSkKKyAgICAgICAgcmV0dXJuIHNwZWNpZmljaXR5
Rm9yUGFnZSgpOworCiAgICAgLy8gRklYTUU6IFBzZXVkby1lbGVtZW50cyBhbmQgcHNldWRvLWNs
YXNzZXMgZG8gbm90IGhhdmUgdGhlIHNhbWUgc3BlY2lmaWNpdHkuIFRoaXMgZnVuY3Rpb24KICAg
ICAvLyBpc24ndCBxdWl0ZSBjb3JyZWN0LgogICAgIGludCBzID0gKG1fdGFnLmxvY2FsTmFtZSgp
ID09IHN0YXJBdG9tID8gMCA6IDEpOwpAQCAtNjYsNiArNjksMjcgQEAgdW5zaWduZWQgaW50IENT
U1NlbGVjdG9yOjpzcGVjaWZpY2l0eSgpCiAgICAgcmV0dXJuIHMgJiAweGZmZmZmZjsKIH0KIAor
dW5zaWduZWQgQ1NTU2VsZWN0b3I6OnNwZWNpZmljaXR5Rm9yUGFnZSgpCit7CisgICAgLy8gU2Vl
IGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczMtcGFnZS8jY2FzY2FkaW5nLWFuZC1wYWdlLWNv
bnRleHQKKyAgICB1bnNpZ25lZCBzID0gKG1fdGFnLmxvY2FsTmFtZSgpID09IHN0YXJBdG9tID8g
MCA6IDQpOworCisgICAgc3dpdGNoIChwc2V1ZG9UeXBlKCkpIHsKKyAgICBjYXNlIFBzZXVkb0Zp
cnN0UGFnZToKKyAgICAgICAgcyArPSAyOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBzZXVk
b0xlZnRQYWdlOgorICAgIGNhc2UgUHNldWRvUmlnaHRQYWdlOgorICAgICAgICBzICs9IDE7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUHNldWRvTm90UGFyc2VkOgorICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAg
cmV0dXJuIHM7Cit9CisKIFBzZXVkb0lkIENTU1NlbGVjdG9yOjpwc2V1ZG9JZChQc2V1ZG9UeXBl
IHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvci5oIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCAxMWQzMGIxOTkx
YzU4MzlhYzIzNTc2YmU1M2IyZGJkMGQwZjRlMzI5Li5lYjA3MDc4ZWZkNDc0Y2Y0YTg4ZmI0NjRj
ODI2NTZkY2NkNzFkNDczIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCisr
KyBiL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX3BhcnNlZE50aChmYWxzZSkKICAgICAgICAgICAg
ICwgbV9pc0xhc3RJblNlbGVjdG9yTGlzdChmYWxzZSkKICAgICAgICAgICAgICwgbV9oYXNSYXJl
RGF0YShmYWxzZSkKKyAgICAgICAgICAgICwgbV9pc0ZvclBhZ2UoZmFsc2UpCiAgICAgICAgICAg
ICAsIG1fdGFnKGFueVFOYW1lKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtNTAsNiArNTEs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fcGFyc2VkTnRoKGZhbHNl
KQogICAgICAgICAgICAgLCBtX2lzTGFzdEluU2VsZWN0b3JMaXN0KGZhbHNlKQogICAgICAgICAg
ICAgLCBtX2hhc1JhcmVEYXRhKGZhbHNlKQorICAgICAgICAgICAgLCBtX2lzRm9yUGFnZShmYWxz
ZSkKICAgICAgICAgICAgICwgbV90YWcocU5hbWUpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAt
MjUzLDYgKzI1NSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRMYXN0
SW5TZWxlY3Rvckxpc3QoKSB7IG1faXNMYXN0SW5TZWxlY3Rvckxpc3QgPSB0cnVlOyB9CiAgICAg
ICAgIGJvb2wgaXNTaW1wbGUoKSBjb25zdDsKIAorICAgICAgICBib29sIGlzRm9yUGFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNGb3JQYWdlOyB9CisgICAgICAgIHZvaWQgc2V0Rm9yUGFnZSgpIHsg
bV9pc0ZvclBhZ2UgPSB0cnVlOyB9CisKICAgICAgICAgdW5zaWduZWQgbV9yZWxhdGlvbiAgICAg
ICAgICAgOiAzOyAvLyBlbnVtIFJlbGF0aW9uCiAgICAgICAgIG11dGFibGUgdW5zaWduZWQgbV9t
YXRjaCAgICAgIDogNDsgLy8gZW51bSBNYXRjaAogICAgICAgICBtdXRhYmxlIHVuc2lnbmVkIG1f
cHNldWRvVHlwZSA6IDg7IC8vIFBzZXVkb1R5cGUKQEAgLTI2MSw3ICsyNjYsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9wYXJzZWROdGggICAgICAgICAgICAgIDogMTsg
Ly8gVXNlZCBmb3IgOm50aC0qIAogICAgICAgICBib29sIG1faXNMYXN0SW5TZWxlY3Rvckxpc3Qg
ICA6IDE7CiAgICAgICAgIGJvb2wgbV9oYXNSYXJlRGF0YSAgICAgICAgICAgIDogMTsKKyAgICAg
ICAgYm9vbCBtX2lzRm9yUGFnZSAgICAgICAgICAgICAgOiAxOwogCisgICAgICAgIHVuc2lnbmVk
IHNwZWNpZmljaXR5Rm9yUGFnZSgpOwogICAgICAgICB2b2lkIGV4dHJhY3RQc2V1ZG9UeXBlKCkg
Y29uc3Q7CiAKICAgICAgICAgc3RydWN0IFJhcmVEYXRhIDogTm9uY29weWFibGUgewpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcAppbmRleCBhOTQwNzIxOTVkZmNhMDgxODE1ZWJhYTJhZGQ5MmI5YmNl
MmU0OTI5Li43YWZkZmMzNzhlNWVjZjhmMTVmOTI0Njk3NTg3NTllZjg2NjIzYzYzIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmNwcApAQCAtMTU0Nyw2ICsxNTQ3LDM2IEBAIFBhc3NSZWZQdHI8UmVu
ZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3I6OnBzZXVkb1N0eWxlRm9yRWxlbWVudChQc2V1ZG9J
ZCBwc2V1ZG8sCiAgICAgcmV0dXJuIG1fc3R5bGUucmVsZWFzZSgpOwogfQogCitQYXNzUmVmUHRy
PFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRl
eCkKK3sKKyAgICBpbml0Rm9yU3R5bGVSZXNvbHZlKG1fY2hlY2tlci5tX2RvY3VtZW50LT5ib2R5
KCkpOworCisgICAgbV9zdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKKyAgICBtX3N0eWxl
LT5pbmhlcml0RnJvbShtX3Jvb3RFbGVtZW50U3R5bGUpOworCisgICAgY29uc3QgYm9vbCBpc0xl
ZnQgPSBpc0xlZnRQYWdlKHBhZ2VJbmRleCk7CisgICAgY29uc3QgYm9vbCBpc0ZpcnN0ID0gaXNG
aXJzdFBhZ2UocGFnZUluZGV4KTsKKyAgICBjb25zdCBTdHJpbmcgcGFnZSA9IHBhZ2VOYW1lKHBh
Z2VJbmRleCk7CisgICAgbWF0Y2hQYWdlUnVsZXMoZGVmYXVsdFByaW50U3R5bGUsIGlzTGVmdCwg
aXNGaXJzdCwgcGFnZSk7CisgICAgbWF0Y2hQYWdlUnVsZXMobV91c2VyU3R5bGUsIGlzTGVmdCwg
aXNGaXJzdCwgcGFnZSk7CisgICAgbWF0Y2hQYWdlUnVsZXMobV9hdXRob3JTdHlsZSwgaXNMZWZ0
LCBpc0ZpcnN0LCBwYWdlKTsKKyAgICBtX2xpbmVIZWlnaHRWYWx1ZSA9IDA7CisgICAgYXBwbHlE
ZWNsYXJhdGlvbnM8dHJ1ZT4oZmFsc2UsIDAsIG1fbWF0Y2hlZERlY2xzLnNpemUoKSAtIDEpOwor
CisgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRpcnRpZWQsIGdvIGFoZWFkIGFuZCB1cGRhdGUgaXQg
bm93LgorICAgIGlmIChtX2ZvbnREaXJ0eSkKKyAgICAgICAgdXBkYXRlRm9udCgpOworCisgICAg
Ly8gTGluZS1oZWlnaHQgaXMgc2V0IHdoZW4gd2UgYXJlIHN1cmUgd2UgZGVjaWRlZCBvbiB0aGUg
Zm9udC1zaXplCisgICAgaWYgKG1fbGluZUhlaWdodFZhbHVlKQorICAgICAgICBhcHBseVByb3Bl
cnR5KENTU1Byb3BlcnR5TGluZUhlaWdodCwgbV9saW5lSGVpZ2h0VmFsdWUpOworCisgICAgYXBw
bHlEZWNsYXJhdGlvbnM8ZmFsc2U+KGZhbHNlLCAwLCBtX21hdGNoZWREZWNscy5zaXplKCkgLSAx
KTsKKworICAgIC8vIE5vdyByZXR1cm4gdGhlIHN0eWxlLgorICAgIHJldHVybiBtX3N0eWxlLnJl
bGVhc2UoKTsKK30KKwogI2lmIEVOQUJMRShEQVRBR1JJRCkKIAogUGFzc1JlZlB0cjxSZW5kZXJT
dHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVGb3JEYXRhR3JpZENvbHVtbihEYXRh
R3JpZENvbHVtbiosIFJlbmRlclN0eWxlKikKQEAgLTI4ODUsNiArMjkxNSw3NCBAQCB2b2lkIENT
U1N0eWxlU2VsZWN0b3I6OmFwcGx5RGVjbGFyYXRpb25zKGJvb2wgaXNJbXBvcnRhbnQsIGludCBz
dGFydEluZGV4LCBpbnQgZQogICAgIH0KIH0KIAordm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXRj
aFBhZ2VSdWxlcyhDU1NSdWxlU2V0KiBydWxlcywgYm9vbCBpc0xlZnRQYWdlLCBib29sIGlzRmly
c3RQYWdlLCBjb25zdCBTdHJpbmcmIHBhZ2VOYW1lKQoreworICAgIG1fbWF0Y2hlZFJ1bGVzLmNs
ZWFyKCk7CisKKyAgICBpZiAoIXJ1bGVzKQorICAgICAgICByZXR1cm47CisKKyAgICBtYXRjaFBh
Z2VSdWxlc0Zvckxpc3QocnVsZXMtPmdldFBhZ2VSdWxlcygpLCBpc0xlZnRQYWdlLCBpc0ZpcnN0
UGFnZSwgcGFnZU5hbWUpOworCisgICAgLy8gSWYgd2UgZGlkbid0IG1hdGNoIGFueSBydWxlcywg
d2UncmUgZG9uZS4KKyAgICBpZiAobV9tYXRjaGVkUnVsZXMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBTb3J0IHRoZSBzZXQgb2YgbWF0Y2hlZCBydWxlcy4KKyAgICBzb3J0
TWF0Y2hlZFJ1bGVzKDAsIG1fbWF0Y2hlZFJ1bGVzLnNpemUoKSk7CisKKyAgICAvLyBOb3cgdHJh
bnNmZXIgdGhlIHNldCBvZiBtYXRjaGVkIHJ1bGVzIG92ZXIgdG8gb3VyIGxpc3Qgb2YgZGVjbHMu
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF0Y2hlZFJ1bGVzLnNpemUoKTsgaSsr
KQorICAgICAgICBhZGRNYXRjaGVkRGVjbGFyYXRpb24obV9tYXRjaGVkUnVsZXNbaV0tPnJ1bGUo
KS0+ZGVjbGFyYXRpb24oKSk7Cit9CisKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hQYWdl
UnVsZXNGb3JMaXN0KENTU1J1bGVEYXRhTGlzdCogcnVsZXMsIGJvb2wgaXNMZWZ0UGFnZSwgYm9v
bCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5nJiBwYWdlTmFtZSkKK3sKKyAgICBpZiAoIXJ1bGVz
KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKENTU1J1bGVEYXRhKiBkID0gcnVsZXMtPmZp
cnN0KCk7IGQ7IGQgPSBkLT5uZXh0KCkpIHsKKyAgICAgICAgQ1NTU3R5bGVSdWxlKiBydWxlID0g
ZC0+cnVsZSgpOworICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdG9yTG9jYWxOYW1l
ID0gZC0+c2VsZWN0b3IoKS0+bV90YWcubG9jYWxOYW1lKCk7CisgICAgICAgIGlmIChzZWxlY3Rv
ckxvY2FsTmFtZSAhPSBzdGFyQXRvbSAmJiBzZWxlY3RvckxvY2FsTmFtZSAhPSBwYWdlTmFtZSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSBw
c2V1ZG9UeXBlID0gZC0+c2VsZWN0b3IoKS0+cHNldWRvVHlwZSgpOworICAgICAgICBpZiAoKHBz
ZXVkb1R5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0xlZnRQYWdlICYmICFpc0xlZnRQYWdlKQor
ICAgICAgICAgICAgfHwgKHBzZXVkb1R5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1JpZ2h0UGFn
ZSAmJiBpc0xlZnRQYWdlKQorICAgICAgICAgICAgfHwgKHBzZXVkb1R5cGUgPT0gQ1NTU2VsZWN0
b3I6OlBzZXVkb0ZpcnN0UGFnZSAmJiAhaXNGaXJzdFBhZ2UpKQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgLy8gSWYgdGhlIHJ1bGUgaGFzIG5vIHByb3BlcnRpZXMgdG8gYXBwbHks
IHRoZW4gaWdub3JlIGl0LgorICAgICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZGVj
bCA9IHJ1bGUtPmRlY2xhcmF0aW9uKCk7CisgICAgICAgIGlmICghZGVjbCB8fCAhZGVjbC0+bGVu
Z3RoKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvLyBBZGQgdGhpcyBydWxl
IHRvIG91ciBsaXN0IG9mIG1hdGNoZWQgcnVsZXMuCisgICAgICAgIGFkZE1hdGNoZWRSdWxlKGQp
OworICAgIH0KK30KKworYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjppc0xlZnRQYWdlKGludCBwYWdl
SW5kZXgpIGNvbnN0Cit7CisgICAgYm9vbCBpc0ZpcnN0UGFnZUxlZnQgPSBmYWxzZTsKKyAgICBp
ZiAobV9yb290RWxlbWVudFN0eWxlLT5kaXJlY3Rpb24oKSA9PSBSVEwpCisgICAgICAgIGlzRmly
c3RQYWdlTGVmdCA9IHRydWU7CisKKyAgICByZXR1cm4gKHBhZ2VJbmRleCArIChpc0ZpcnN0UGFn
ZUxlZnQgPyAxIDogMCkpICUgMjsKK30KKworYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjppc0ZpcnN0
UGFnZShpbnQgcGFnZUluZGV4KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBJbiBjYXNlIG9mIGZv
cmNlZCBsZWZ0L3JpZ2h0IHBhZ2UsIHBhZ2UgYXQgaW5kZXggMSAobm90IDApIGNhbiBiZSB0aGUg
Zmlyc3QgcGFnZS4KKyAgICByZXR1cm4gKCFwYWdlSW5kZXgpOworfQorCitTdHJpbmcgQ1NTU3R5
bGVTZWxlY3Rvcjo6cGFnZU5hbWUoaW50IC8qIHBhZ2VJbmRleCAqLykgY29uc3QKK3sKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHBhZ2UgaW5kZXggdG8gcGFnZSBuYW1lIG1hcHBpbmcuCisgICAg
cmV0dXJuICIiOworfQorCiBzdGF0aWMgdm9pZCBhcHBseUNvdW50ZXJMaXN0KFJlbmRlclN0eWxl
KiBzdHlsZSwgQ1NTVmFsdWVMaXN0KiBsaXN0LCBib29sIGlzUmVzZXQpCiB7CiAgICAgQ291bnRl
ckRpcmVjdGl2ZU1hcCYgbWFwID0gc3R5bGUtPmFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKCk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmggYi9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmgKaW5kZXggZmQzN2M4NWJhNGI2ZDEyNGI3YzIxMGZkZjRkOGNmMmFk
YzBmNmYzZS4uMDVjZDEwOWMxY2IyYzA3ZTZiZTMwYWE3NTVjYzAyZDhmZDE0ZTQ3MiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCisrKyBiL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2VsZWN0b3IuaApAQCAtOTMsNiArOTMsOCBAQCBwdWJsaWM6CiAKICAgICAgICAgUGFz
c1JlZlB0cjxSZW5kZXJTdHlsZT4gcHNldWRvU3R5bGVGb3JFbGVtZW50KFBzZXVkb0lkIHBzZXVk
bywgRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gMCwgYm9vbCBtYXRjaFZp
c2l0ZWRQc2V1ZG9DbGFzcyA9IGZhbHNlKTsKIAorICAgICAgICBQYXNzUmVmUHRyPFJlbmRlclN0
eWxlPiBzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCk7CisKICAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKIAogI2lmIEVO
QUJMRShEQVRBR1JJRCkKQEAgLTE4MCw2ICsxODIsMTMgQEAgcHVibGljOgogCiAgICAgICAgIHRl
bXBsYXRlIDxib29sIGZpcnN0UGFzcz4KICAgICAgICAgdm9pZCBhcHBseURlY2xhcmF0aW9ucyhi
b29sIGltcG9ydGFudCwgaW50IHN0YXJ0SW5kZXgsIGludCBlbmRJbmRleCk7CisKKyAgICAgICAg
dm9pZCBtYXRjaFBhZ2VSdWxlcyhDU1NSdWxlU2V0KiwgYm9vbCBpc0xlZnRQYWdlLCBib29sIGlz
Rmlyc3RQYWdlLCBjb25zdCBTdHJpbmcmIHBhZ2VOYW1lKTsKKyAgICAgICAgdm9pZCBtYXRjaFBh
Z2VSdWxlc0Zvckxpc3QoQ1NTUnVsZURhdGFMaXN0KiwgYm9vbCBpc0xlZnRQYWdlLCBib29sIGlz
Rmlyc3RQYWdlLCBjb25zdCBTdHJpbmcmIHBhZ2VOYW1lKTsKKyAgICAgICAgYm9vbCBpc0xlZnRQ
YWdlKGludCBwYWdlSW5kZXgpIGNvbnN0OworICAgICAgICBib29sIGlzUmlnaHRQYWdlKGludCBw
YWdlSW5kZXgpIGNvbnN0IHsgcmV0dXJuICFpc0xlZnRQYWdlKHBhZ2VJbmRleCk7IH0KKyAgICAg
ICAgYm9vbCBpc0ZpcnN0UGFnZShpbnQgcGFnZUluZGV4KSBjb25zdDsKKyAgICAgICAgU3RyaW5n
IHBhZ2VOYW1lKGludCBwYWdlSW5kZXgpIGNvbnN0OwogICAgICAgICAKICAgICAgICAgQ1NTUnVs
ZVNldCogbV9hdXRob3JTdHlsZTsKICAgICAgICAgQ1NTUnVsZVNldCogbV91c2VyU3R5bGU7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9odG1sLmNzcyBiL1dlYkNvcmUvY3NzL2h0bWwuY3NzCmlu
ZGV4IGI0YmIwNWE4ZTlkYmM4ZjkxNDlmMjY3NmFhYWY0ZGJlNzNlZjc1OTguLmJmNjAxMjNiODY0
ZTA4ZjIwNzA5NmI5MWZmMzgyYzI2ZWNkN2U1YWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL2h0
bWwuY3NzCisrKyBiL1dlYkNvcmUvY3NzL2h0bWwuY3NzCkBAIC02ODMsNCArNjgzLDEwIEBAIGlm
cmFtZSB7CiAgICAgYm9yZGVyOiAycHggaW5zZXQKIH0KIAorLyogcGFnZSAqLworCitAcGFnZSB7
CisgICAgbWFyZ2luOiAxaW47Cit9CisKIC8qIG5vc2NyaXB0IGlzIGhhbmRsZWQgaW50ZXJuYWxs
eSwgYXMgaXQgZGVwZW5kcyBvbiBzZXR0aW5ncyAqLwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDVlNGM1YzY2YzU3
MjIwNzBhMDIxMjQzODNmMTEzN2ZkOTgwZWU0M2QuLmVhNWVjZDE0ZTIyZmRjMzJkNmY0MWI1MGIy
YWUzM2Y5NDIzY2VlYTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE0OTQsNiArMTQ5NCwxMiBAQCBQYXNzUmVm
UHRyPFJlbmRlclN0eWxlPiBEb2N1bWVudDo6c3R5bGVGb3JFbGVtZW50SWdub3JpbmdQZW5kaW5n
U3R5bGVzaGVldHMoRWxlbQogICAgIHJldHVybiBzdHlsZS5yZWxlYXNlKCk7CiB9CiAKK1Bhc3NS
ZWZQdHI8UmVuZGVyU3R5bGU+IERvY3VtZW50OjpzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCkK
K3sKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gc3R5bGVTZWxlY3RvcigpLT5zdHls
ZUZvclBhZ2UocGFnZUluZGV4KTsKKyAgICByZXR1cm4gc3R5bGUucmVsZWFzZSgpOworfQorCiB2
b2lkIERvY3VtZW50OjpjcmVhdGVTdHlsZVNlbGVjdG9yKCkKIHsKICAgICBib29sIG1hdGNoQXV0
aG9yQW5kVXNlclN0eWxlcyA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA1MDkzMTAwZWE3YmFkYjViMDg1YmJi
MmVhZjY3MWU2MDIxNTdjNDQ0Li4yNTE5MWEwMTM5N2Y5ZDFiMzYyYTg1MTQ5N2ZiMTVhOGY3NjMw
YjY0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKQEAgLTQ4MSw2ICs0ODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVM
YXlvdXQoKTsKICAgICB2b2lkIHVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygp
OwogICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVudElnbm9yaW5nUGVu
ZGluZ1N0eWxlc2hlZXRzKEVsZW1lbnQqKTsKKyAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBz
dHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCk7CiAgICAgc3RhdGljIHZvaWQgdXBkYXRlU3R5bGVG
b3JBbGxEb2N1bWVudHMoKTsgLy8gRklYTUU6IFRyeSB0byByZWR1Y2UgdGhlICMgb2YgY2FsbHMg
dG8gdGhpcyBmdW5jdGlvbi4KICAgICBEb2NMb2FkZXIqIGRvY0xvYWRlcigpIHsgcmV0dXJuIG1f
ZG9jTG9hZGVyLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9QcmludENvbnRl
eHQuY3BwIGIvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKaW5kZXggZmZkZTBiZWIxZTNj
MGJlNDRkN2U1MjI5NzdiM2FiNTM2Mjg2YzFkMC4uZGQ4NjNkOGRiNWZlMTAzZDYwM2JlNDg5MWE1
NTZkNjM3OTM5YjQxZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAK
KysrIGIvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTE5OCw2ICsxOTgsMTggQEAg
aW50IFByaW50Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwg
Y29uc3QgRmxvYXRTaXplJiBwYWdlU2kKICAgICByZXR1cm4gLTE7CiB9CiAKK1N0cmluZyBQcmlu
dENvbnRleHQ6OnBhZ2VQcm9wZXJ0eShGcmFtZSogZnJhbWUsIGNvbnN0IGNoYXIqIHByb3BlcnR5
TmFtZSwgaW50IHBhZ2VOdW1iZXIpCit7CisgICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxh
eW91dCgpOworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBmcmFtZS0+ZG9jdW1lbnQo
KS0+c3R5bGVGb3JQYWdlKHBhZ2VOdW1iZXIpOworCisgICAgLy8gSW1wbGVtZW50IGZvcm1hdHRl
cnMgZm9yIHByb3BlcnRpZXMgd2UgY2FyZSBhYm91dC4KKyAgICBpZiAoIXN0cmNtcChwcm9wZXJ0
eU5hbWUsICJtYXJnaW4tbGVmdCIpKQorICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVk
Iiwgc3R5bGUtPm1hcmdpbkxlZnQoKS5yYXdWYWx1ZSgpKTsKKworICAgIHJldHVybiBTdHJpbmc6
OmZvcm1hdCgicGFnZVByb3BlcnR5KCkgdW5pbXBsZW1lbnRlZCBmb3I6ICVzIiwgcHJvcGVydHlO
YW1lKTsKK30KKwogaW50IFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhGcmFtZSogZnJhbWUs
IGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscykKIHsKICAgICBmcmFtZS0+ZG9jdW1l
bnQoKS0+dXBkYXRlTGF5b3V0KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250
ZXh0LmggYi9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmgKaW5kZXggMTg5MTE0NGY5NDJkMzlh
ZjdhMTJkMDA3YTQxZGVmMzBkZTU0ZDg0MC4uOTM5OGE2ZWJkMDg4ZTg2MDEzZjI0ZjY2NTI5MjU2
NzQwOWUyNDg1MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5oCisrKyBi
L1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuaApAQCAtMzEsNiArMzEsNyBAQCBjbGFzcyBGbG9h
dFJlY3Q7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJ
bnRSZWN0OworY2xhc3MgU3RyaW5nOwogCiBjbGFzcyBQcmludENvbnRleHQgewogcHVibGljOgpA
QCAtNTQsNiArNTUsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBVc2VkIGJ5IGxheW91dCB0ZXN0cy4K
ICAgICBzdGF0aWMgaW50IHBhZ2VOdW1iZXJGb3JFbGVtZW50KEVsZW1lbnQqLCBjb25zdCBGbG9h
dFNpemUmIHBhZ2VTaXplSW5QaXhlbHMpOworICAgIHN0YXRpYyBTdHJpbmcgcGFnZVByb3BlcnR5
KEZyYW1lKiBmcmFtZSwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBpbnQgcGFnZU51bWJlcik7
CiAgICAgc3RhdGljIGludCBudW1iZXJPZlBhZ2VzKEZyYW1lKiwgY29uc3QgRmxvYXRTaXplJiBw
YWdlU2l6ZUluUGl4ZWxzKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9D
aGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA3ZDg4ZmVkZjIyMWZmMWFjYTll
OTBlYzQ2NTczMjgzYzU4Y2RiNWNlLi4zZGNhMmU2Y2QxNmFjZWM2YjcyZGE5ZWNmMDkyMDFiOGU0
Mzg4ZWU3IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEwLTA1LTMxICBZdXpvIEZ1amlzaGltYSAg
PHl1em9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbXBsZW1lbnQgcmVuZGVyIHN0eWxlIHNlbGVjdGlvbiBmb3IgcGFnZXMgdG8g
c3VwcG9ydCBDU1MzIFBhZ2VkIE1lZGlhLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzU5NjEKKworICAgICAgICAqIE1pc2MvV2ViQ29yZVN0YXRpc3Rp
Y3MuaDoKKyAgICAgICAgKiBNaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tOgorICAgICAgICAoLVtX
ZWJGcmFtZSBwYWdlUHJvcGVydHk6cHJvcGVydHlOYW1lOl0pOgorCiAyMDEwLTA1LTMwICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vp
bmlnLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmggYi9X
ZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaAppbmRleCBhMTFjMDY0NDhjOGM3ZjVk
YTgyYjBmMmVjNjY1ZTU1YmUyNTM4OWJjLi5jNzljOTZkZjFhMGMwOTRlZDM2Y2Q4M2NmYTQxOGI4
MzE0ODEyZmQ4IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3Mu
aAorKysgYi9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaApAQCAtODcsNCArODcs
NSBAQAogLSAoTlNTdHJpbmcgKiljb3VudGVyVmFsdWVGb3JFbGVtZW50OihET01FbGVtZW50Kill
bGVtZW50OwogLSAoaW50KXBhZ2VOdW1iZXJGb3JFbGVtZW50OihET01FbGVtZW50KillbGVtZW50
OihmbG9hdClwYWdlV2lkdGhJblBpeGVsczooZmxvYXQpcGFnZUhlaWdodEluUGl4ZWxzOwogLSAo
aW50KW51bWJlck9mUGFnZXM6KGZsb2F0KXBhZ2VXaWR0aEluUGl4ZWxzOihmbG9hdClwYWdlSGVp
Z2h0SW5QaXhlbHM7CistIChOU1N0cmluZyAqKXBhZ2VQcm9wZXJ0eTooY29uc3QgY2hhciopcHJv
cGVydHlOYW1lOihpbnQpcGFnZU51bWJlcjsKIEBlbmQKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMv
TWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbSBiL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlz
dGljcy5tbQppbmRleCBjM2ZjMjNlY2Y0ODcxNzE1NDA1NzYxYjFjNGEwNGM1NGMzOTRjMDU4Li44
OWY3MGZkOWM3MzI2YTM3ZGFlZjVjNTg2NDRlMzk3MjEyNGM2YmY1IDEwMDY0NAotLS0gYS9XZWJL
aXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KKysrIGIvV2ViS2l0L21hYy9NaXNjL1dl
YkNvcmVTdGF0aXN0aWNzLm1tCkBAIC0yNzUsNCArMjc1LDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAgICAgcmV0dXJuIFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhfcHJpdmF0ZS0+
Y29yZUZyYW1lLCBGbG9hdFNpemUocGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVs
cykpOwogfQogCistIChOU1N0cmluZyAqKXBhZ2VQcm9wZXJ0eTooY29uc3QgY2hhciAqKXByb3Bl
cnR5TmFtZTooaW50KXBhZ2VOdW1iZXIKK3sKKyAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpwYWdl
UHJvcGVydHkoX3ByaXZhdGUtPmNvcmVGcmFtZSwgcHJvcGVydHlOYW1lLCBwYWdlTnVtYmVyKTsK
K30KKwogQGVuZApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDc2N2YwMTE3ODQzMjZmZTJjMWY5Y2ZmYzNjMThkMTBhODNkMWI1
NjEuLmU0MGI2ZGZlNGZkODZhZWIzNzRlYzlmNjcyZTExYjY4NmE5YjYxNjYgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxMC0wNS0zMSAgWXV6byBGdWppc2hpbWEgIDx5dXpvQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVt
ZW50IHJlbmRlciBzdHlsZSBzZWxlY3Rpb24gZm9yIHBhZ2VzIHRvIHN1cHBvcnQgQ1NTMyBQYWdl
ZCBNZWRpYS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM1OTYxCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChwYXJzZVBhZ2VQcm9wZXJ0eVBhcmFtZXRlcnMpOgorICAgICAgICAocGFn
ZVByb3BlcnR5Q2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRp
Y0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJN
YWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZVByb3BlcnR5KToKKwog
MjAxMC0wNS0zMSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGI5NmE5YzljNTZhNDM3MTUx
N2VmZjdlNWViMDllMmRiOTJhODFmYjguLjMzY2QxYzZmZjAzYTNjYWZjZDVhZDFjZGQ3ZTY1NWY1
ZTRiMzUyYWMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKQEAgLTUyMSw2ICs1MjEsMzIgQEAgc3RhdGljIGJvb2wgcGFyc2VQ
YWdlUGFyYW1ldGVycyhKU0NvbnRleHRSZWYgY29udGV4dCwgaW50IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEoKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorLy8gQ2FsbGVyIG5lZWRzIHRvIGRlbGV0ZVtd
IHByb3BlcnR5TmFtZS4KK3N0YXRpYyBib29sIHBhcnNlUGFnZVByb3BlcnR5UGFyYW1ldGVycyhK
U0NvbnRleHRSZWYgY29udGV4dCwgaW50IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYq
IGFyZ3VtZW50cywgSlNWYWx1ZVJlZiogZXhjZXB0aW9uLCBjaGFyKiYgcHJvcGVydHlOYW1lLCBp
bnQmIHBhZ2VOdW1iZXIpCit7CisgICAgcGFnZU51bWJlciA9IDA7CisgICAgc3dpdGNoIChhcmd1
bWVudENvdW50KSB7CisgICAgY2FzZSAyOgorICAgICAgICBwYWdlTnVtYmVyID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2VwdGlv
bikpOworICAgICAgICBpZiAoKmV4Y2VwdGlvbikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgLy8gRmFsbCB0aHJvdWdoLgorICAgIGNhc2UgMTogeworICAgICAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gcHJvcGVydHlOYW1lU3RyaW5nKEFkb3B0LCBKU1ZhbHVlVG9TdHJp
bmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgICAgIGlmICgq
ZXhjZXB0aW9uKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHNpemVfdCBt
YXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUocHJvcGVydHlOYW1l
U3RyaW5nLmdldCgpKTsKKyAgICAgICAgcHJvcGVydHlOYW1lID0gbmV3IGNoYXJbbWF4TGVuZ3Ro
ICsgMV07CisgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcocHJvcGVydHlOYW1lU3RyaW5n
LmdldCgpLCBwcm9wZXJ0eU5hbWUsIG1heExlbmd0aCArIDEpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgY2FzZSAwOgorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJ
ZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNP
YmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBmbG9hdCBwYWdl
V2lkdGhJblBpeGVscyA9IDA7CkBAIC01NDgsNiArNTc0LDIwIEBAIHN0YXRpYyBKU1ZhbHVlUmVm
IG51bWJlck9mUGFnZXNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnVuY3RpCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIGNvbnRyb2xsZXIt
Pm51bWJlck9mUGFnZXMocGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscykpOwog
fQogCitzdGF0aWMgSlNWYWx1ZVJlZiBwYWdlUHJvcGVydHlDYWxsYmFjayhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNp
emVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pCit7CisgICAgY2hhciogcHJvcGVydHlOYW1lOworICAgIGludCBwYWdl
TnVtYmVyID0gMDsKKyAgICBpZiAoIXBhcnNlUGFnZVByb3BlcnR5UGFyYW1ldGVycyhjb250ZXh0
LCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMsIGV4Y2VwdGlvbiwgcHJvcGVydHlOYW1lLCBwYWdl
TnVtYmVyKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwor
CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlv
dXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAg
SlNWYWx1ZVJlZiB2YWx1ZSA9IEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIGNvbnRyb2xsZXIt
PnBhZ2VQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIHBhZ2VOdW1iZXIpLmdldCgpKTsKKworICAgIGRl
bGV0ZVtdIHByb3BlcnR5TmFtZTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKIHN0YXRpYyBKU1Zh
bHVlUmVmIHF1ZXVlQmFja05hdmlnYXRpb25DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1
bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pCiB7CiAgICAgLy8gSGFzIG1hYyAmIHdpbmRvd3MgaW1wbGVtZW50YXRpb24KQEAgLTE2
MDEsNiArMTY0MSw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjpz
dGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMiLCBu
dW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJvdmVy
cmlkZVByZWZlcmVuY2UiLCBvdmVycmlkZVByZWZlcmVuY2VDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQiLCBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5
SWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJwYWdlUHJvcGVydHkiLCBwYWdlUHJvcGVy
dHlDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJwYXRoVG9Mb2NhbFJlc291cmNlIiwgcGF0
aFRvTG9jYWxSZXNvdXJjZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInBhdXNlQW5pbWF0
aW9uQXRUaW1lT25FbGVtZW50V2l0aElkIiwgcGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRX
aXRoSWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJwYXVzZVRyYW5zaXRpb25BdFRpbWVP
bkVsZW1lbnRXaXRoSWQiLCBwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWRDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmgKaW5kZXggOGZmMzhkMTA5MDEwZjRlOTY4MmRhMmI4N2U4ZWYxODZjNDEx
YzJhOC4uMTRlYzEzMGM1ZTA0YjEzYjMxYjRmZTYwNjU1ODFjMzczYWYzZjM0OSAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC02
Miw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICBpbnQgbnVtYmVyT2ZQYWdlcyhmbG9hdCBwYWdlV2lk
dGhJblBpeGVscywgZmxvYXQgcGFnZUhlaWdodEluUGl4ZWxzKTsKICAgICB2b2lkIG92ZXJyaWRl
UHJlZmVyZW5jZShKU1N0cmluZ1JlZiBrZXksIEpTU3RyaW5nUmVmIHZhbHVlKTsKICAgICBpbnQg
cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkLCBmbG9hdCBwYWdlV2lkdGhJ
blBpeGVscywgZmxvYXQgcGFnZUhlaWdodEluUGl4ZWxzKTsKKyAgICBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gcGFnZVByb3BlcnR5KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgaW50IHBhZ2VO
dW1iZXIpIGNvbnN0OwogICAgIEpTU3RyaW5nUmVmIHBhdGhUb0xvY2FsUmVzb3VyY2UoSlNDb250
ZXh0UmVmLCBKU1N0cmluZ1JlZiB1cmwpOwogICAgIHZvaWQgcXVldWVCYWNrTmF2aWdhdGlvbihp
bnQgaG93RmFyQmFja3dhcmQpOwogICAgIHZvaWQgcXVldWVGb3J3YXJkTmF2aWdhdGlvbihpbnQg
aG93RmFyRm9yd2FyZCk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCBlOGI4NjI3NTg1MmRjYjVj
ZTFkMTlkNmRhNWZiYTUxYTAxNTQ5ZDYzLi4yYmRkODBjN2I0MzljYmYxODFhMTgzZDg0MWNmMTFk
ZjA0ZTVhODVmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5
b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKQEAgLTE3MSw2ICsxNzEsMTIgQEAgaW50
IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBhZ2VzKGZsb2F0IHBhZ2VXaWR0aCwgZmxv
YXQgcGFnZUhlaWdodCkKICAgICByZXR1cm4gd2Via2l0X3dlYl9mcmFtZV9udW1iZXJfb2ZfcGFn
ZXMobWFpbkZyYW1lLCBwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpOwogfQogCitKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VQcm9wZXJ0eShjb25zdCBjaGFy
KiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlTnVtYmVyKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQKKyAgICByZXR1cm4gSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+KCk7Cit9CisKIHNp
emVfdCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6d2ViSGlzdG9yeUl0ZW1Db3VudCgpCiB7CiAgICAg
Ly8gRklYTUU6IGltcGxlbWVudApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDg5ODIzNWI4N2NmZGU4
MTJhMzI4NzQwZjZmODgzYWFmMzQ0ODNjYmMuLjI0YzVjNzBlNTlhMGVkZmE5MWIzODM4ZjYzYjQw
NTk2MzkxMGFkODYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9M
YXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KQEAgLTIxMCw2ICsyMTAsMTIgQEAgaW50
IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdS
ZWYgaWQsIGZsb2F0IHBhZ2VXaWQKICAgICByZXR1cm4gW21haW5GcmFtZSBwYWdlTnVtYmVyRm9y
RWxlbWVudDplbGVtZW50OnBhZ2VXaWR0aEluUGl4ZWxzOnBhZ2VIZWlnaHRJblBpeGVsc107CiB9
CiAKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZVBy
b3BlcnR5KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgaW50IHBhZ2VOdW1iZXIpIGNvbnN0Cit7
CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHByb3BlcnR5VmFsdWUoQWRvcHQsIEpTU3Ry
aW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilbbWFpbkZyYW1lIHBhZ2VQcm9wZXJ0
eTpwcm9wZXJ0eU5hbWU6cGFnZU51bWJlcl0pKTsKKyAgICByZXR1cm4gcHJvcGVydHlWYWx1ZTsK
K30KKwogaW50IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBhZ2VzKGZsb2F0IHBhZ2VX
aWR0aEluUGl4ZWxzLCBmbG9hdCBwYWdlSGVpZ2h0SW5QaXhlbHMpCiB7CiAgICAgcmV0dXJuIFtt
YWluRnJhbWUgbnVtYmVyT2ZQYWdlczpwYWdlV2lkdGhJblBpeGVsczpwYWdlSGVpZ2h0SW5QaXhl
bHNdOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRl
c3RDb250cm9sbGVyV2luLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlv
dXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggYzcwYjUxN2ZlYmY3NDA2YjE1MmZjZmNjNDA0
NDA1YjY2ZjcwN2RiYS4uYjJhMzQ1YjUwZTc4NWI1NWI1YjFhOTlmMzY3YTc5NWQ0YjkwYzJhNyAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250
cm9sbGVyV2luLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0
VGVzdENvbnRyb2xsZXJXaW4uY3BwCkBAIC0xMjM3LDYgKzEyMzcsMTIgQEAgaW50IExheW91dFRl
c3RDb250cm9sbGVyOjpudW1iZXJPZlBhZ2VzKGZsb2F0IHBhZ2VXaWR0aEluUGl4ZWxzLCBmbG9h
dCBwYWdlSGVpZ2gKICAgICByZXR1cm4gcGFnZU51bWJlcjsKIH0KIAorSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlUHJvcGVydHkoY29uc3QgY2hhciog
cHJvcGVydHlOYW1lLCBpbnQgcGFnZU51bWJlcikgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMuCisgICAgcmV0dXJuIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPigpOworfQor
CiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphcGlUZXN0TmV3V2luZG93RGF0YUxvYWRCYXNl
VVJMKEpTU3RyaW5nUmVmIHV0ZjhEYXRhLCBKU1N0cmluZ1JlZiBiYXNlVVJMKQogewogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58227</attachid>
            <date>2010-06-09 02:47:15 -0700</date>
            <delta_ts>2010-06-09 03:04:33 -0700</delta_ts>
            <desc>Add a test for line height.</desc>
            <filename>bug-35961-20100609024712.patch</filename>
            <type>text/plain</type>
            <size>33592</size>
            <attacher name="Yuzo Fujishima">yuzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNjJjNTIwOWQwMzEwZWFjYmUyMDc0NjY2NWZhODc3ZDRkNWY0MTRmLi44YmU2YzY5
YTE1YWVjZWY1MmQyYzRhYmMxMTc3MDA2YTFmOTljZjZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDYtMDcgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCByZW5kZXIg
c3R5bGUgc2VsZWN0aW9uIGZvciBwYWdlcyB0byBzdXBwb3J0IENTUzMgUGFnZWQgTWVkaWEuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTk2MQorCisg
ICAgICAgICogcHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHByaW50aW5nL3BhZ2UtcnVsZS1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCisK
IDIwMTAtMDUtMTggIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFNoaW5pY2hpcm8gSGFtYWppLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
cmludGluZy9wYWdlLXJ1bGUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDA1
ODc5M2M1MzJlNWM1ZmZlMzBmNmVlZjZiNTIyZWQ3ODNhZDE5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw0NyBAQAorVGhpcyB0ZXN0cyBwYWdlIHN0eWxlIHNlbGVjdGlvbi4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0RlZmF1bHQgbWFyZ2luIGlzIDFpbiA9IDk2cHguCitQ
QVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAwKSBp
cyAiOTYiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxl
ZnQnLCAxKSBpcyAiOTYiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgn
bWFyZ2luLWxlZnQnLCAyKSBpcyAiOTYiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQ
cm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAzKSBpcyAiOTYiCitQQVNTIGxheW91dFRlc3RDb250cm9s
bGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCA0KSBpcyAiOTYiCitTZXQgbWFyZ2luIHRv
IDEwMHB4LgorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1s
ZWZ0JywgMCkgaXMgIjEwMCIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5
KCdtYXJnaW4tbGVmdCcsIDEpIGlzICIxMDAiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBh
Z2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAyKSBpcyAiMTAwIgorUEFTUyBsYXlvdXRUZXN0Q29u
dHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMykgaXMgIjEwMCIKK1BBU1MgbGF5
b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDQpIGlzICIxMDAi
CitTZXQgbWFyZ2luIGZvciByaWdodCBwYWdlcyB0byA1MHB4LiBUaGUgZmlyc3QgcGFnZSBpcyBh
IHJpZ2h0IHBhZ2UuCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFy
Z2luLWxlZnQnLCAwKSBpcyAiNTAiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9w
ZXJ0eSgnbWFyZ2luLWxlZnQnLCAxKSBpcyAiMTAwIgorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxl
ci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMikgaXMgIjUwIgorUEFTUyBsYXlvdXRUZXN0
Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMykgaXMgIjEwMCIKK1BBU1Mg
bGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDQpIGlzICI1
MCIKK1NldCBtYXJnaW4gZm9yIGxlZnQgcGFnZXMgdG8gNzVweC4KK1BBU1MgbGF5b3V0VGVzdENv
bnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDApIGlzICI1MCIKK1BBU1MgbGF5
b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDEpIGlzICI3NSIK
K1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDIp
IGlzICI1MCIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4t
bGVmdCcsIDMpIGlzICI3NSIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5
KCdtYXJnaW4tbGVmdCcsIDQpIGlzICI1MCIKK1NldCBtYXJnaW4gZm9yIHRoZSBmaXJzdCBwYWdl
IHRvIDEyNXB4LgorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdp
bi1sZWZ0JywgMCkgaXMgIjEyNSIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3Bl
cnR5KCdtYXJnaW4tbGVmdCcsIDEpIGlzICI3NSIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIu
cGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDIpIGlzICI1MCIKK1BBU1MgbGF5b3V0VGVzdENv
bnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDMpIGlzICI3NSIKK1BBU1MgbGF5
b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDQpIGlzICI1MCIK
K0NoYW5nZSB0aGUgZG9jdW1lbnQgZGlyZWN0aW9uIHRvIFJUTC4gVGhpcyBtYWtlcyB0aGUgZmly
c3QgcGFnZSBhIGxlZnQgcGFnZS4KK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3Bl
cnR5KCdtYXJnaW4tbGVmdCcsIDApIGlzICIxMjUiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVy
LnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAxKSBpcyAiNTAiCitQQVNTIGxheW91dFRlc3RD
b250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAyKSBpcyAiNzUiCitQQVNTIGxh
eW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAzKSBpcyAiNTAi
CitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCA0
KSBpcyAiNzUiCitDaGVjayBsaW5lIGhlaWdodCBvdmVycmlkZS4KK1BBU1MgbGF5b3V0VGVzdENv
bnRyb2xsZXIucGFnZVByb3BlcnR5KCdsaW5lLWhlaWdodCcsIDApIGlzICI3NSIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wcmludGluZy9wYWdlLXJ1bGUtc2VsZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0
cy9wcmludGluZy9wYWdlLXJ1bGUtc2VsZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE5MTY3OGI4
MjUyNjBjNTg3ZDUyOGQxYmQ5OTliMjNiMGQ3ODkwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVsZS1zZWxlY3Rpb24uaHRtbApAQCAtMCwwICsxLDgyIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sIGlkPSJodG1sX2VsZW1lbnQiPgorPGhlYWQgaWQ9Imhl
YWRfZWxlbWVudCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorICAg
IGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHBhZ2Ugc3R5bGUgc2VsZWN0aW9uLiIpOworCisgICAg
ZnVuY3Rpb24gYXBwZW5kU3R5bGUoc3R5bGVTdHJpbmcpCisgICAgeworICAgICAgICB2YXIgc3R5
bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKKyAgICAgICAgc3R5
bGVFbGVtZW50LmlubmVySFRNTCA9IHN0eWxlU3RyaW5nOworICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiaGVhZF9lbGVtZW50IikuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KTsKKyAg
ICB9CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgZGVidWcoIkRlZmF1bHQgbWFyZ2luIGlz
IDFpbiA9IDk2cHguIik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91
dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAwKSIsICI5NiIpOwor
ICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5w
YWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMSkiLCAiOTYiKTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJn
aW4tbGVmdCcsIDIpIiwgIjk2Iik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAzKSIsICI5
NiIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJv
bGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgNCkiLCAiOTYiKTsKKworICAgICAgICAg
ICAgZGVidWcoIlNldCBtYXJnaW4gdG8gMTAwcHguIik7CisgICAgICAgICAgICBhcHBlbmRTdHls
ZSgiQHBhZ2UgeyBtYXJnaW46MTAwcHg7IH0iKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcs
IDApIiwgIjEwMCIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRU
ZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMSkiLCAiMTAwIik7Cisg
ICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBh
Z2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAyKSIsICIxMDAiKTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJn
aW4tbGVmdCcsIDMpIiwgIjEwMCIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgNCkiLCAi
MTAwIik7CisKKyAgICAgICAgICAgIGRlYnVnKCJTZXQgbWFyZ2luIGZvciByaWdodCBwYWdlcyB0
byA1MHB4LiBUaGUgZmlyc3QgcGFnZSBpcyBhIHJpZ2h0IHBhZ2UuIik7CisgICAgICAgICAgICBh
cHBlbmRTdHlsZSgiQHBhZ2UgOnJpZ2h0IHsgbWFyZ2luOjUwcHg7IH0iKTsKKyAgICAgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5
KCdtYXJnaW4tbGVmdCcsIDApIiwgIjUwIik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAx
KSIsICIxMDAiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVz
dENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDIpIiwgIjUwIik7CisgICAg
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQ
cm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAzKSIsICIxMDAiKTsKKyAgICAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4t
bGVmdCcsIDQpIiwgIjUwIik7CisKKyAgICAgICAgICAgIGRlYnVnKCJTZXQgbWFyZ2luIGZvciBs
ZWZ0IHBhZ2VzIHRvIDc1cHguIik7CisgICAgICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2UgOmxl
ZnQgeyBtYXJnaW46NzVweDsgfSIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMCkiLCAi
NTAiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRy
b2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDEpIiwgIjc1Iik7CisgICAgICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0
eSgnbWFyZ2luLWxlZnQnLCAyKSIsICI1MCIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0Jywg
MykiLCAiNzUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVz
dENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDQpIiwgIjUwIik7CisKKyAg
ICAgICAgICAgIGRlYnVnKCJTZXQgbWFyZ2luIGZvciB0aGUgZmlyc3QgcGFnZSB0byAxMjVweC4i
KTsKKyAgICAgICAgICAgIGFwcGVuZFN0eWxlKCJAcGFnZSA6Zmlyc3QgeyBtYXJnaW46MTI1cHg7
IH0iKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRy
b2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDApIiwgIjEyNSIpOworICAgICAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVy
dHkoJ21hcmdpbi1sZWZ0JywgMSkiLCAiNzUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcs
IDIpIiwgIjUwIik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRl
c3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAzKSIsICI3NSIpOworICAg
ICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdl
UHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgNCkiLCAiNTAiKTsKKworICAgICAgICAgICAgZGVidWco
IkNoYW5nZSB0aGUgZG9jdW1lbnQgZGlyZWN0aW9uIHRvIFJUTC4gVGhpcyBtYWtlcyB0aGUgZmly
c3QgcGFnZSBhIGxlZnQgcGFnZS4iKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJodG1sX2VsZW1lbnQiKS5zZXRBdHRyaWJ1dGUoImRpciIsICJydGwiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3Bl
cnR5KCdtYXJnaW4tbGVmdCcsIDApIiwgIjEyNSIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0
JywgMSkiLCAiNTAiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0
VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDIpIiwgIjc1Iik7Cisg
ICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBh
Z2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAzKSIsICI1MCIpOworICAgICAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdp
bi1sZWZ0JywgNCkiLCAiNzUiKTsKKworICAgICAgICAgICAgZGVidWcoIkNoZWNrIGxpbmUgaGVp
Z2h0IG92ZXJyaWRlLiIpOworICAgICAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdlIHsgbGluZS1o
ZWlnaHQ6MWVtOyB9Iik7CisgICAgICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2UgeyBmb250OjE1
cHgvNWVtIEx1Y2lkYTsgfSIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJs
YXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ2xpbmUtaGVpZ2h0JywgMCkiLCAiNzUi
KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlRoaXMgdGVz
dCBjYW4gYmUgcnVuIG9ubHkgd2l0aCB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIiKTsKKyAg
ICB9CisgICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAwYTdjMzZiNThkNTU1NDAzOTlhNGIzMjQwYmFhYzJhNTlmMGM1Yzkx
Li45ZmI0N2Y4ODEyMTM5M2UwMGUwODYxYThiNGEzZDc5YmMzNjhiMTFkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBA
CisyMDEwLTA2LTA3ICBZdXpvIEZ1amlzaGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgcmVuZGVy
IHN0eWxlIHNlbGVjdGlvbiBmb3IgcGFnZXMgdG8gc3VwcG9ydCBDU1MzIFBhZ2VkIE1lZGlhLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU5NjEKKwor
ICAgICAgICBUZXN0OiBwcmludGluZy9wYWdlLXJ1bGUtc2VsZWN0aW9uLmh0bWwKKworICAgICAg
ICAqIFdlYkNvcmUuYmFzZS5leHA6CisgICAgICAgICogY3NzL0NTU0dyYW1tYXIueToKKyAgICAg
ICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6
OnNwZWNpZmljaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzcGVjaWZpY2l0
eUZvclBhZ2UpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU2VsZWN0b3I6OkNTU1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVj
dG9yOjppc0ZvclBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnNldEZvclBh
Z2UpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTdHlsZVNlbGVjdG9yOjptYXRjaFBhZ2VSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
dHlsZVNlbGVjdG9yOjptYXRjaFBhZ2VSdWxlc0Zvckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVTZWxlY3Rvcjo6aXNMZWZ0UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZVNlbGVjdG9yOjppc0ZpcnN0UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVj
dG9yOjpwYWdlTmFtZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmlzUmlnaHRQYWdlKToKKyAgICAgICAgKiBj
c3MvaHRtbC5jc3M6CisgICAgICAgIChAcGFnZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdHlsZUZvclBhZ2UpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIHBhZ2UvUHJpbnRDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlByaW50Q29udGV4dDo6cGFnZVByb3BlcnR5KToKKyAgICAgICAgKiBwYWdl
L1ByaW50Q29udGV4dC5oOgorCiAyMDEwLTA1LTE4ICBZdXpvIEZ1amlzaGltYSAgPHl1em9AZ29v
Z2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaGluaWNoaXJvIEhhbWFqaS4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cCBiL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4
cAppbmRleCAyOTcwNGZiNDU0OTgzNjA1ZjI3M2NjMWE2ZDU3NTM5NTUwNGE1NjFmLi4wZjE2NWFh
MDM0ZmJjNDc0MTliN2E5N2ZjODA0Y2VkNzQ3M2MyZjZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dl
YkNvcmUuYmFzZS5leHAKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCkBAIC0yNDgsNiAr
MjQ4LDcgQEAgX19aTjdXZWJDb3JlMTJJY29uRGF0YWJhc2U0b3BlbkVSS05TXzZTdHJpbmdFCiBf
X1pON1dlYkNvcmUxMkljb25EYXRhYmFzZTVjbG9zZUV2CiBfX1pON1dlYkNvcmUxMkljb25EYXRh
YmFzZTlzZXRDbGllbnRFUE5TXzE4SWNvbkRhdGFiYXNlQ2xpZW50RQogX19aTjdXZWJDb3JlMTJQ
bHVnaW5XaWRnZXQxNGludmFsaWRhdGVSZWN0RVJLTlNfN0ludFJlY3RFCitfX1pON1dlYkNvcmUx
MlByaW50Q29udGV4dDEycGFnZVByb3BlcnR5RVBOU181RnJhbWVFUEtjaQogX19aTjdXZWJDb3Jl
MTJQcmludENvbnRleHQxM251bWJlck9mUGFnZXNFUE5TXzVGcmFtZUVSS05TXzlGbG9hdFNpemVF
CiBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDIwcGFnZU51bWJlckZvckVsZW1lbnRFUE5TXzdF
bGVtZW50RVJLTlNfOUZsb2F0U2l6ZUUKIF9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0Mjhjb21w
dXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplRVJLTlNfOUZsb2F0U2l6ZUViCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkgYi9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKaW5kZXgg
MDZjNmQwMTg2NmRjNzQ1Y2Q0ODA5MmVmOTkxZGQ2ZjY2NGM2OGY1OC4uMjZiMmJhODZiZDBkMzhi
ODYxNzcxNGMxOTk2NzI0MTJiODUwMTU2OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55CisrKyBiL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQpAQCAtNzc4LDE5ICs3NzgsMjUg
QEAgcGFnZV9zZWxlY3RvcjoKICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NT
UGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgJCQgPSBwLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9y
KCk7CiAgICAgICAgICQkLT5tX3RhZyA9IFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQxLCBwLT5t
X2RlZmF1bHROYW1lc3BhY2UpOworICAgICAgICAkJC0+c2V0Rm9yUGFnZSgpOwogICAgIH0KICAg
ICB8IElERU5UIHBzZXVkb19wYWdlIHsKICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nh
c3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgJCQgPSAkMjsKLSAgICAgICAgaWYgKCQk
KQorICAgICAgICBpZiAoJCQpIHsKICAgICAgICAgICAgICQkLT5tX3RhZyA9IFF1YWxpZmllZE5h
bWUobnVsbEF0b20sICQxLCBwLT5tX2RlZmF1bHROYW1lc3BhY2UpOworICAgICAgICAgICAgJCQt
PnNldEZvclBhZ2UoKTsKKyAgICAgICAgfQogICAgIH0KICAgICB8IHBzZXVkb19wYWdlIHsKICAg
ICAgICAgJCQgPSAkMTsKKyAgICAgICAgaWYgKCQkKQorICAgICAgICAgICAgJCQtPnNldEZvclBh
Z2UoKTsKICAgICB9CiAgICAgfCAvKiBlbXB0eSAqLyB7CiAgICAgICAgIENTU1BhcnNlciogcCA9
IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgICQkID0gcC0+Y3JlYXRl
RmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAkJC0+c2V0Rm9yUGFnZSgpOwogICAgIH0KICAg
ICA7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1dlYkNvcmUv
Y3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCBlNDViZjRjN2FjMjQ2NDVhYTFjODIwNDIxYjhhZDRi
ZTRmNDdjMzZmLi44ZTk4YTNmZGI1YWZlMzFjMWUwYjQ1OWEyYjEzNGE5NTNlNmNkMmQ4IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3IuY3BwCkBAIC0zNyw2ICszNyw5IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiAKIHVuc2lnbmVkIGludCBDU1NTZWxlY3Rvcjo6c3BlY2lmaWNpdHkoKQogeworICAgIGlmICht
X2lzRm9yUGFnZSkKKyAgICAgICAgcmV0dXJuIHNwZWNpZmljaXR5Rm9yUGFnZSgpOworCiAgICAg
Ly8gRklYTUU6IFBzZXVkby1lbGVtZW50cyBhbmQgcHNldWRvLWNsYXNzZXMgZG8gbm90IGhhdmUg
dGhlIHNhbWUgc3BlY2lmaWNpdHkuIFRoaXMgZnVuY3Rpb24KICAgICAvLyBpc24ndCBxdWl0ZSBj
b3JyZWN0LgogICAgIGludCBzID0gKG1fdGFnLmxvY2FsTmFtZSgpID09IHN0YXJBdG9tID8gMCA6
IDEpOwpAQCAtNjYsNiArNjksMjcgQEAgdW5zaWduZWQgaW50IENTU1NlbGVjdG9yOjpzcGVjaWZp
Y2l0eSgpCiAgICAgcmV0dXJuIHMgJiAweGZmZmZmZjsKIH0KIAordW5zaWduZWQgQ1NTU2VsZWN0
b3I6OnNwZWNpZmljaXR5Rm9yUGFnZSgpCit7CisgICAgLy8gU2VlIGh0dHA6Ly9kZXYudzMub3Jn
L2Nzc3dnL2NzczMtcGFnZS8jY2FzY2FkaW5nLWFuZC1wYWdlLWNvbnRleHQKKyAgICB1bnNpZ25l
ZCBzID0gKG1fdGFnLmxvY2FsTmFtZSgpID09IHN0YXJBdG9tID8gMCA6IDQpOworCisgICAgc3dp
dGNoIChwc2V1ZG9UeXBlKCkpIHsKKyAgICBjYXNlIFBzZXVkb0ZpcnN0UGFnZToKKyAgICAgICAg
cyArPSAyOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBzZXVkb0xlZnRQYWdlOgorICAgIGNh
c2UgUHNldWRvUmlnaHRQYWdlOgorICAgICAgICBzICs9IDE7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUHNldWRvTm90UGFyc2VkOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIHM7Cit9CisKIFBz
ZXVkb0lkIENTU1NlbGVjdG9yOjpwc2V1ZG9JZChQc2V1ZG9UeXBlIHR5cGUpCiB7CiAgICAgc3dp
dGNoICh0eXBlKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oIGIvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCAxMWQzMGIxOTkxYzU4MzlhYzIzNTc2YmU1M2Iy
ZGJkMGQwZjRlMzI5Li5lYjA3MDc4ZWZkNDc0Y2Y0YTg4ZmI0NjRjODI2NTZkY2NkNzFkNDczIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCisrKyBiL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmgKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAgICAgLCBtX3BhcnNlZE50aChmYWxzZSkKICAgICAgICAgICAgICwgbV9pc0xhc3RJblNlbGVj
dG9yTGlzdChmYWxzZSkKICAgICAgICAgICAgICwgbV9oYXNSYXJlRGF0YShmYWxzZSkKKyAgICAg
ICAgICAgICwgbV9pc0ZvclBhZ2UoZmFsc2UpCiAgICAgICAgICAgICAsIG1fdGFnKGFueVFOYW1l
KCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtNTAsNiArNTEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgICAgICAsIG1fcGFyc2VkTnRoKGZhbHNlKQogICAgICAgICAgICAgLCBt
X2lzTGFzdEluU2VsZWN0b3JMaXN0KGZhbHNlKQogICAgICAgICAgICAgLCBtX2hhc1JhcmVEYXRh
KGZhbHNlKQorICAgICAgICAgICAgLCBtX2lzRm9yUGFnZShmYWxzZSkKICAgICAgICAgICAgICwg
bV90YWcocU5hbWUpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMjUzLDYgKzI1NSw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRMYXN0SW5TZWxlY3Rvckxpc3QoKSB7
IG1faXNMYXN0SW5TZWxlY3Rvckxpc3QgPSB0cnVlOyB9CiAgICAgICAgIGJvb2wgaXNTaW1wbGUo
KSBjb25zdDsKIAorICAgICAgICBib29sIGlzRm9yUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNG
b3JQYWdlOyB9CisgICAgICAgIHZvaWQgc2V0Rm9yUGFnZSgpIHsgbV9pc0ZvclBhZ2UgPSB0cnVl
OyB9CisKICAgICAgICAgdW5zaWduZWQgbV9yZWxhdGlvbiAgICAgICAgICAgOiAzOyAvLyBlbnVt
IFJlbGF0aW9uCiAgICAgICAgIG11dGFibGUgdW5zaWduZWQgbV9tYXRjaCAgICAgIDogNDsgLy8g
ZW51bSBNYXRjaAogICAgICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fcHNldWRvVHlwZSA6IDg7IC8v
IFBzZXVkb1R5cGUKQEAgLTI2MSw3ICsyNjYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIGJvb2wgbV9wYXJzZWROdGggICAgICAgICAgICAgIDogMTsgLy8gVXNlZCBmb3IgOm50aC0q
IAogICAgICAgICBib29sIG1faXNMYXN0SW5TZWxlY3Rvckxpc3QgICA6IDE7CiAgICAgICAgIGJv
b2wgbV9oYXNSYXJlRGF0YSAgICAgICAgICAgIDogMTsKKyAgICAgICAgYm9vbCBtX2lzRm9yUGFn
ZSAgICAgICAgICAgICAgOiAxOwogCisgICAgICAgIHVuc2lnbmVkIHNwZWNpZmljaXR5Rm9yUGFn
ZSgpOwogICAgICAgICB2b2lkIGV4dHJhY3RQc2V1ZG9UeXBlKCkgY29uc3Q7CiAKICAgICAgICAg
c3RydWN0IFJhcmVEYXRhIDogTm9uY29weWFibGUgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApp
bmRleCAzYjg2ZjBmYWNhMTliYzA5OTQwZDg5Y2E1ZDY5ZWZjNWQ0OTliNzM1Li4wNjg3NWQzZjY1
MDA2NzNkMDY4NDBlNDUzYmYwOWU5ZGFhMTAwZjllIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cApAQCAtMTU0Nyw2ICsxNTQ3LDM2IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxl
U2VsZWN0b3I6OnBzZXVkb1N0eWxlRm9yRWxlbWVudChQc2V1ZG9JZCBwc2V1ZG8sCiAgICAgcmV0
dXJuIG1fc3R5bGUucmVsZWFzZSgpOwogfQogCitQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NT
dHlsZVNlbGVjdG9yOjpzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCkKK3sKKyAgICBpbml0Rm9y
U3R5bGVSZXNvbHZlKG1fY2hlY2tlci5tX2RvY3VtZW50LT5ib2R5KCkpOworCisgICAgbV9zdHls
ZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKKyAgICBtX3N0eWxlLT5pbmhlcml0RnJvbShtX3Jv
b3RFbGVtZW50U3R5bGUpOworCisgICAgY29uc3QgYm9vbCBpc0xlZnQgPSBpc0xlZnRQYWdlKHBh
Z2VJbmRleCk7CisgICAgY29uc3QgYm9vbCBpc0ZpcnN0ID0gaXNGaXJzdFBhZ2UocGFnZUluZGV4
KTsKKyAgICBjb25zdCBTdHJpbmcgcGFnZSA9IHBhZ2VOYW1lKHBhZ2VJbmRleCk7CisgICAgbWF0
Y2hQYWdlUnVsZXMoZGVmYXVsdFByaW50U3R5bGUsIGlzTGVmdCwgaXNGaXJzdCwgcGFnZSk7Cisg
ICAgbWF0Y2hQYWdlUnVsZXMobV91c2VyU3R5bGUsIGlzTGVmdCwgaXNGaXJzdCwgcGFnZSk7Cisg
ICAgbWF0Y2hQYWdlUnVsZXMobV9hdXRob3JTdHlsZSwgaXNMZWZ0LCBpc0ZpcnN0LCBwYWdlKTsK
KyAgICBtX2xpbmVIZWlnaHRWYWx1ZSA9IDA7CisgICAgYXBwbHlEZWNsYXJhdGlvbnM8dHJ1ZT4o
ZmFsc2UsIDAsIG1fbWF0Y2hlZERlY2xzLnNpemUoKSAtIDEpOworCisgICAgLy8gSWYgb3VyIGZv
bnQgZ290IGRpcnRpZWQsIGdvIGFoZWFkIGFuZCB1cGRhdGUgaXQgbm93LgorICAgIGlmIChtX2Zv
bnREaXJ0eSkKKyAgICAgICAgdXBkYXRlRm9udCgpOworCisgICAgLy8gTGluZS1oZWlnaHQgaXMg
c2V0IHdoZW4gd2UgYXJlIHN1cmUgd2UgZGVjaWRlZCBvbiB0aGUgZm9udC1zaXplCisgICAgaWYg
KG1fbGluZUhlaWdodFZhbHVlKQorICAgICAgICBhcHBseVByb3BlcnR5KENTU1Byb3BlcnR5TGlu
ZUhlaWdodCwgbV9saW5lSGVpZ2h0VmFsdWUpOworCisgICAgYXBwbHlEZWNsYXJhdGlvbnM8ZmFs
c2U+KGZhbHNlLCAwLCBtX21hdGNoZWREZWNscy5zaXplKCkgLSAxKTsKKworICAgIC8vIE5vdyBy
ZXR1cm4gdGhlIHN0eWxlLgorICAgIHJldHVybiBtX3N0eWxlLnJlbGVhc2UoKTsKK30KKwogI2lm
IEVOQUJMRShEQVRBR1JJRCkKIAogUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxl
Y3Rvcjo6cHNldWRvU3R5bGVGb3JEYXRhR3JpZENvbHVtbihEYXRhR3JpZENvbHVtbiosIFJlbmRl
clN0eWxlKikKQEAgLTI4ODUsNiArMjkxNSw3NCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFw
cGx5RGVjbGFyYXRpb25zKGJvb2wgaXNJbXBvcnRhbnQsIGludCBzdGFydEluZGV4LCBpbnQgZQog
ICAgIH0KIH0KIAordm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXRjaFBhZ2VSdWxlcyhDU1NSdWxl
U2V0KiBydWxlcywgYm9vbCBpc0xlZnRQYWdlLCBib29sIGlzRmlyc3RQYWdlLCBjb25zdCBTdHJp
bmcmIHBhZ2VOYW1lKQoreworICAgIG1fbWF0Y2hlZFJ1bGVzLmNsZWFyKCk7CisKKyAgICBpZiAo
IXJ1bGVzKQorICAgICAgICByZXR1cm47CisKKyAgICBtYXRjaFBhZ2VSdWxlc0Zvckxpc3QocnVs
ZXMtPmdldFBhZ2VSdWxlcygpLCBpc0xlZnRQYWdlLCBpc0ZpcnN0UGFnZSwgcGFnZU5hbWUpOwor
CisgICAgLy8gSWYgd2UgZGlkbid0IG1hdGNoIGFueSBydWxlcywgd2UncmUgZG9uZS4KKyAgICBp
ZiAobV9tYXRjaGVkUnVsZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBT
b3J0IHRoZSBzZXQgb2YgbWF0Y2hlZCBydWxlcy4KKyAgICBzb3J0TWF0Y2hlZFJ1bGVzKDAsIG1f
bWF0Y2hlZFJ1bGVzLnNpemUoKSk7CisKKyAgICAvLyBOb3cgdHJhbnNmZXIgdGhlIHNldCBvZiBt
YXRjaGVkIHJ1bGVzIG92ZXIgdG8gb3VyIGxpc3Qgb2YgZGVjbHMuCisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fbWF0Y2hlZFJ1bGVzLnNpemUoKTsgaSsrKQorICAgICAgICBhZGRNYXRj
aGVkRGVjbGFyYXRpb24obV9tYXRjaGVkUnVsZXNbaV0tPnJ1bGUoKS0+ZGVjbGFyYXRpb24oKSk7
Cit9CisKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hQYWdlUnVsZXNGb3JMaXN0KENTU1J1
bGVEYXRhTGlzdCogcnVsZXMsIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29u
c3QgU3RyaW5nJiBwYWdlTmFtZSkKK3sKKyAgICBpZiAoIXJ1bGVzKQorICAgICAgICByZXR1cm47
CisKKyAgICBmb3IgKENTU1J1bGVEYXRhKiBkID0gcnVsZXMtPmZpcnN0KCk7IGQ7IGQgPSBkLT5u
ZXh0KCkpIHsKKyAgICAgICAgQ1NTU3R5bGVSdWxlKiBydWxlID0gZC0+cnVsZSgpOworICAgICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdG9yTG9jYWxOYW1lID0gZC0+c2VsZWN0b3IoKS0+
bV90YWcubG9jYWxOYW1lKCk7CisgICAgICAgIGlmIChzZWxlY3RvckxvY2FsTmFtZSAhPSBzdGFy
QXRvbSAmJiBzZWxlY3RvckxvY2FsTmFtZSAhPSBwYWdlTmFtZSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSBwc2V1ZG9UeXBlID0gZC0+c2Vs
ZWN0b3IoKS0+cHNldWRvVHlwZSgpOworICAgICAgICBpZiAoKHBzZXVkb1R5cGUgPT0gQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0xlZnRQYWdlICYmICFpc0xlZnRQYWdlKQorICAgICAgICAgICAgfHwgKHBz
ZXVkb1R5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1JpZ2h0UGFnZSAmJiBpc0xlZnRQYWdlKQor
ICAgICAgICAgICAgfHwgKHBzZXVkb1R5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0ZpcnN0UGFn
ZSAmJiAhaXNGaXJzdFBhZ2UpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8g
SWYgdGhlIHJ1bGUgaGFzIG5vIHByb3BlcnRpZXMgdG8gYXBwbHksIHRoZW4gaWdub3JlIGl0Lgor
ICAgICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZGVjbCA9IHJ1bGUtPmRlY2xhcmF0
aW9uKCk7CisgICAgICAgIGlmICghZGVjbCB8fCAhZGVjbC0+bGVuZ3RoKCkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAvLyBBZGQgdGhpcyBydWxlIHRvIG91ciBsaXN0IG9mIG1h
dGNoZWQgcnVsZXMuCisgICAgICAgIGFkZE1hdGNoZWRSdWxlKGQpOworICAgIH0KK30KKworYm9v
bCBDU1NTdHlsZVNlbGVjdG9yOjppc0xlZnRQYWdlKGludCBwYWdlSW5kZXgpIGNvbnN0Cit7Cisg
ICAgYm9vbCBpc0ZpcnN0UGFnZUxlZnQgPSBmYWxzZTsKKyAgICBpZiAobV9yb290RWxlbWVudFN0
eWxlLT5kaXJlY3Rpb24oKSA9PSBSVEwpCisgICAgICAgIGlzRmlyc3RQYWdlTGVmdCA9IHRydWU7
CisKKyAgICByZXR1cm4gKHBhZ2VJbmRleCArIChpc0ZpcnN0UGFnZUxlZnQgPyAxIDogMCkpICUg
MjsKK30KKworYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjppc0ZpcnN0UGFnZShpbnQgcGFnZUluZGV4
KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBJbiBjYXNlIG9mIGZvcmNlZCBsZWZ0L3JpZ2h0IHBh
Z2UsIHBhZ2UgYXQgaW5kZXggMSAobm90IDApIGNhbiBiZSB0aGUgZmlyc3QgcGFnZS4KKyAgICBy
ZXR1cm4gKCFwYWdlSW5kZXgpOworfQorCitTdHJpbmcgQ1NTU3R5bGVTZWxlY3Rvcjo6cGFnZU5h
bWUoaW50IC8qIHBhZ2VJbmRleCAqLykgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHBhZ2UgaW5kZXggdG8gcGFnZSBuYW1lIG1hcHBpbmcuCisgICAgcmV0dXJuICIiOworfQorCiBz
dGF0aWMgdm9pZCBhcHBseUNvdW50ZXJMaXN0KFJlbmRlclN0eWxlKiBzdHlsZSwgQ1NTVmFsdWVM
aXN0KiBsaXN0LCBib29sIGlzUmVzZXQpCiB7CiAgICAgQ291bnRlckRpcmVjdGl2ZU1hcCYgbWFw
ID0gc3R5bGUtPmFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKCk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmggYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgK
aW5kZXggZmQzN2M4NWJhNGI2ZDEyNGI3YzIxMGZkZjRkOGNmMmFkYzBmNmYzZS4uMDVjZDEwOWMx
Y2IyYzA3ZTZiZTMwYWE3NTVjYzAyZDhmZDE0ZTQ3MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaApA
QCAtOTMsNiArOTMsOCBAQCBwdWJsaWM6CiAKICAgICAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHls
ZT4gcHNldWRvU3R5bGVGb3JFbGVtZW50KFBzZXVkb0lkIHBzZXVkbywgRWxlbWVudCogZSwgUmVu
ZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gMCwgYm9vbCBtYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcyA9
IGZhbHNlKTsKIAorICAgICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvclBhZ2Uo
aW50IHBhZ2VJbmRleCk7CisKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+
IHN0eWxlRm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKIAogI2lmIEVOQUJMRShEQVRBR1JJRCkKQEAg
LTE4MCw2ICsxODIsMTMgQEAgcHVibGljOgogCiAgICAgICAgIHRlbXBsYXRlIDxib29sIGZpcnN0
UGFzcz4KICAgICAgICAgdm9pZCBhcHBseURlY2xhcmF0aW9ucyhib29sIGltcG9ydGFudCwgaW50
IHN0YXJ0SW5kZXgsIGludCBlbmRJbmRleCk7CisKKyAgICAgICAgdm9pZCBtYXRjaFBhZ2VSdWxl
cyhDU1NSdWxlU2V0KiwgYm9vbCBpc0xlZnRQYWdlLCBib29sIGlzRmlyc3RQYWdlLCBjb25zdCBT
dHJpbmcmIHBhZ2VOYW1lKTsKKyAgICAgICAgdm9pZCBtYXRjaFBhZ2VSdWxlc0Zvckxpc3QoQ1NT
UnVsZURhdGFMaXN0KiwgYm9vbCBpc0xlZnRQYWdlLCBib29sIGlzRmlyc3RQYWdlLCBjb25zdCBT
dHJpbmcmIHBhZ2VOYW1lKTsKKyAgICAgICAgYm9vbCBpc0xlZnRQYWdlKGludCBwYWdlSW5kZXgp
IGNvbnN0OworICAgICAgICBib29sIGlzUmlnaHRQYWdlKGludCBwYWdlSW5kZXgpIGNvbnN0IHsg
cmV0dXJuICFpc0xlZnRQYWdlKHBhZ2VJbmRleCk7IH0KKyAgICAgICAgYm9vbCBpc0ZpcnN0UGFn
ZShpbnQgcGFnZUluZGV4KSBjb25zdDsKKyAgICAgICAgU3RyaW5nIHBhZ2VOYW1lKGludCBwYWdl
SW5kZXgpIGNvbnN0OwogICAgICAgICAKICAgICAgICAgQ1NTUnVsZVNldCogbV9hdXRob3JTdHls
ZTsKICAgICAgICAgQ1NTUnVsZVNldCogbV91c2VyU3R5bGU7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2Nzcy9odG1sLmNzcyBiL1dlYkNvcmUvY3NzL2h0bWwuY3NzCmluZGV4IGI0YmIwNWE4ZTlkYmM4
ZjkxNDlmMjY3NmFhYWY0ZGJlNzNlZjc1OTguLmJmNjAxMjNiODY0ZTA4ZjIwNzA5NmI5MWZmMzgy
YzI2ZWNkN2U1YWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL2h0bWwuY3NzCisrKyBiL1dlYkNv
cmUvY3NzL2h0bWwuY3NzCkBAIC02ODMsNCArNjgzLDEwIEBAIGlmcmFtZSB7CiAgICAgYm9yZGVy
OiAycHggaW5zZXQKIH0KIAorLyogcGFnZSAqLworCitAcGFnZSB7CisgICAgbWFyZ2luOiAxaW47
Cit9CisKIC8qIG5vc2NyaXB0IGlzIGhhbmRsZWQgaW50ZXJuYWxseSwgYXMgaXQgZGVwZW5kcyBv
biBzZXR0aW5ncyAqLwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDRlZGRiYTQwZWFlZDUwMjAyNzA4YzU0ODE1ZGEz
YWI4ZWQ2YjRmZWMuLmU5YjQ0NGY0MDZiOTJhNDQ2NTllMWI1YTFjYjJhNWM0Mzc4NDcyZDIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKQEAgLTE0OTQsNiArMTQ5NCwxMiBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBE
b2N1bWVudDo6c3R5bGVGb3JFbGVtZW50SWdub3JpbmdQZW5kaW5nU3R5bGVzaGVldHMoRWxlbQog
ICAgIHJldHVybiBzdHlsZS5yZWxlYXNlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+
IERvY3VtZW50OjpzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCkKK3sKKyAgICBSZWZQdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlID0gc3R5bGVTZWxlY3RvcigpLT5zdHlsZUZvclBhZ2UocGFnZUluZGV4
KTsKKyAgICByZXR1cm4gc3R5bGUucmVsZWFzZSgpOworfQorCiB2b2lkIERvY3VtZW50OjpjcmVh
dGVTdHlsZVNlbGVjdG9yKCkKIHsKICAgICBib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcyA9
IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAppbmRleCA1MDkzMTAwZWE3YmFkYjViMDg1YmJiMmVhZjY3MWU2MDIxNTdjNDQ0
Li4yNTE5MWEwMTM5N2Y5ZDFiMzYyYTg1MTQ5N2ZiMTVhOGY3NjMwYjY0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQ4
MSw2ICs0ODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVMYXlvdXQoKTsKICAgICB2b2lk
IHVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgIFBhc3NSZWZQdHI8
UmVuZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVudElnbm9yaW5nUGVuZGluZ1N0eWxlc2hlZXRzKEVs
ZW1lbnQqKTsKKyAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvclBhZ2UoaW50IHBh
Z2VJbmRleCk7CiAgICAgc3RhdGljIHZvaWQgdXBkYXRlU3R5bGVGb3JBbGxEb2N1bWVudHMoKTsg
Ly8gRklYTUU6IFRyeSB0byByZWR1Y2UgdGhlICMgb2YgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbi4K
ICAgICBEb2NMb2FkZXIqIGRvY0xvYWRlcigpIHsgcmV0dXJuIG1fZG9jTG9hZGVyLmdldCgpOyB9
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvV2ViQ29yZS9w
YWdlL1ByaW50Q29udGV4dC5jcHAKaW5kZXggZmZkZTBiZWIxZTNjMGJlNDRkN2U1MjI5NzdiM2Fi
NTM2Mjg2YzFkMC4uNWQ3OWRjZWI1ODQxY2E1MzBmYWFmZjMxMjFkYTRkMmUxNDNkNzAzZCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS9wYWdl
L1ByaW50Q29udGV4dC5jcHAKQEAgLTE5OCw2ICsxOTgsMjAgQEAgaW50IFByaW50Q29udGV4dDo6
cGFnZU51bWJlckZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgY29uc3QgRmxvYXRTaXplJiBw
YWdlU2kKICAgICByZXR1cm4gLTE7CiB9CiAKK1N0cmluZyBQcmludENvbnRleHQ6OnBhZ2VQcm9w
ZXJ0eShGcmFtZSogZnJhbWUsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgaW50IHBhZ2VOdW1i
ZXIpCit7CisgICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIFJlZlB0
cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVGb3JQYWdlKHBh
Z2VOdW1iZXIpOworCisgICAgLy8gSW1wbGVtZW50IGZvcm1hdHRlcnMgZm9yIHByb3BlcnRpZXMg
d2UgY2FyZSBhYm91dC4KKyAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJtYXJnaW4tbGVm
dCIpKQorICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVkIiwgc3R5bGUtPm1hcmdpbkxl
ZnQoKS5yYXdWYWx1ZSgpKTsKKyAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJsaW5lLWhl
aWdodCIpKQorICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVkIiwgc3R5bGUtPmxpbmVI
ZWlnaHQoKS5yYXdWYWx1ZSgpKTsKKworICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgicGFnZVBy
b3BlcnR5KCkgdW5pbXBsZW1lbnRlZCBmb3I6ICVzIiwgcHJvcGVydHlOYW1lKTsKK30KKwogaW50
IFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhGcmFtZSogZnJhbWUsIGNvbnN0IEZsb2F0U2l6
ZSYgcGFnZVNpemVJblBpeGVscykKIHsKICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5
b3V0KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmggYi9XZWJDb3Jl
L3BhZ2UvUHJpbnRDb250ZXh0LmgKaW5kZXggMTg5MTE0NGY5NDJkMzlhZjdhMTJkMDA3YTQxZGVm
MzBkZTU0ZDg0MC4uOTM5OGE2ZWJkMDg4ZTg2MDEzZjI0ZjY2NTI5MjU2NzQwOWUyNDg1MSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5oCisrKyBiL1dlYkNvcmUvcGFnZS9Q
cmludENvbnRleHQuaApAQCAtMzEsNiArMzEsNyBAQCBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBG
bG9hdFNpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnRSZWN0OworY2xhc3Mg
U3RyaW5nOwogCiBjbGFzcyBQcmludENvbnRleHQgewogcHVibGljOgpAQCAtNTQsNiArNTUsNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBVc2VkIGJ5IGxheW91dCB0ZXN0cy4KICAgICBzdGF0aWMgaW50
IHBhZ2VOdW1iZXJGb3JFbGVtZW50KEVsZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXpl
SW5QaXhlbHMpOworICAgIHN0YXRpYyBTdHJpbmcgcGFnZVByb3BlcnR5KEZyYW1lKiBmcmFtZSwg
Y29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBpbnQgcGFnZU51bWJlcik7CiAgICAgc3RhdGljIGlu
dCBudW1iZXJPZlBhZ2VzKEZyYW1lKiwgY29uc3QgRmxvYXRTaXplJiBwYWdlU2l6ZUluUGl4ZWxz
KTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJL
aXQvbWFjL0NoYW5nZUxvZwppbmRleCA1MjAxZTFmNTNiMTgxNDQ4MTAzYjljM2E0ZWU1N2JlYzJi
ZTU0ODMzLi45ZjBiYjQ3MTM4YmIxMzBkNjgxNDE5OGFiY2E1ZDRhZGVhMDYwODlkIDEwMDY0NAot
LS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDEwLTA2LTA3ICBZdXpvIEZ1amlzaGltYSAgPHl1em9AZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBs
ZW1lbnQgcmVuZGVyIHN0eWxlIHNlbGVjdGlvbiBmb3IgcGFnZXMgdG8gc3VwcG9ydCBDU1MzIFBh
Z2VkIE1lZGlhLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzU5NjEKKworICAgICAgICAqIE1pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaDoKKyAgICAgICAg
KiBNaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBwYWdlUHJv
cGVydHk6cHJvcGVydHlOYW1lOl0pOgorCiAyMDEwLTA2LTA4ICBBbnRvbmlvIEdvbWVzICA8dG9u
aWtpdG9vQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaSBhbmQg
RGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3Rp
Y3MuaCBiL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5oCmluZGV4IGExMWMwNjQ0
OGM4YzdmNWRhODJiMGYyZWM2NjVlNTViZTI1Mzg5YmMuLmM3OWM5NmRmMWEwYzA5NGVkMzZjZDgz
Y2ZhNDE4YjgzMTQ4MTJmZDggMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3Rh
dGlzdGljcy5oCisrKyBiL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5oCkBAIC04
Nyw0ICs4Nyw1IEBACiAtIChOU1N0cmluZyAqKWNvdW50ZXJWYWx1ZUZvckVsZW1lbnQ6KERPTUVs
ZW1lbnQqKWVsZW1lbnQ7CiAtIChpbnQpcGFnZU51bWJlckZvckVsZW1lbnQ6KERPTUVsZW1lbnQq
KWVsZW1lbnQ6KGZsb2F0KXBhZ2VXaWR0aEluUGl4ZWxzOihmbG9hdClwYWdlSGVpZ2h0SW5QaXhl
bHM7CiAtIChpbnQpbnVtYmVyT2ZQYWdlczooZmxvYXQpcGFnZVdpZHRoSW5QaXhlbHM6KGZsb2F0
KXBhZ2VIZWlnaHRJblBpeGVsczsKKy0gKE5TU3RyaW5nICopcGFnZVByb3BlcnR5Oihjb25zdCBj
aGFyKilwcm9wZXJ0eU5hbWU6KGludClwYWdlTnVtYmVyOwogQGVuZApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tIGIvV2ViS2l0L21hYy9NaXNjL1dlYkNv
cmVTdGF0aXN0aWNzLm1tCmluZGV4IGMzZmMyM2VjZjQ4NzE3MTU0MDU3NjFiMWM0YTA0YzU0YzM5
NGMwNTguLjg5ZjcwZmQ5YzczMjZhMzdkYWVmNWM1ODY0NGUzOTcyMTI0YzZiZjUgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQorKysgYi9XZWJLaXQvbWFj
L01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KQEAgLTI3NSw0ICsyNzUsOSBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKICAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpudW1iZXJPZlBhZ2VzKF9w
cml2YXRlLT5jb3JlRnJhbWUsIEZsb2F0U2l6ZShwYWdlV2lkdGhJblBpeGVscywgcGFnZUhlaWdo
dEluUGl4ZWxzKSk7CiB9CiAKKy0gKE5TU3RyaW5nICopcGFnZVByb3BlcnR5Oihjb25zdCBjaGFy
ICopcHJvcGVydHlOYW1lOihpbnQpcGFnZU51bWJlcgoreworICAgIHJldHVybiBQcmludENvbnRl
eHQ6OnBhZ2VQcm9wZXJ0eShfcHJpdmF0ZS0+Y29yZUZyYW1lLCBwcm9wZXJ0eU5hbWUsIHBhZ2VO
dW1iZXIpOworfQorCiBAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9X
ZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggYWMzMzU3YWE2MmFlMTNkYmM2NWJhM2RhNTUzZmRl
YmYyMTVlNWUyMC4uMzdmYjBhMGQyZDM4ZjFjYTM3OWJjMGFjYmQ0ZTc0Mzg3Yjg5ZDk2OSAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDEwLTA2LTA3ICBZdXpvIEZ1amlzaGltYSAgPHl1em9AZ29v
Z2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgcmVuZGVyIHN0eWxlIHNlbGVjdGlvbiBmb3IgcGFnZXMgdG8gc3VwcG9ydCBD
U1MzIFBhZ2VkIE1lZGlhLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzU5NjEKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKHBhcnNlUGFnZVByb3BlcnR5UGFyYW1ldGVycyk6CisgICAg
ICAgIChwYWdlUHJvcGVydHlDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29u
dHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlUHJvcGVy
dHkpOgorCiAyMDEwLTA2LTA4ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjA4NzguCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5k
ZXggYjk2YTljOWM1NmE0MzcxNTE3ZWZmN2U1ZWIwOWUyZGI5MmE4MWZiOC4uMzU2NDAwMThlZDBh
OWMwZWE5ZGFlOWQzYzEyYmY3ZDI4MGI5N2MwMSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtNTIxLDYgKzUyMSwzMiBA
QCBzdGF0aWMgYm9vbCBwYXJzZVBhZ2VQYXJhbWV0ZXJzKEpTQ29udGV4dFJlZiBjb250ZXh0LCBp
bnQgYXJndW1lbnRDb3VudCwgY29uc3QgSgogICAgIHJldHVybiB0cnVlOwogfQogCisvLyBDYWxs
ZXIgbmVlZHMgdG8gZGVsZXRlW10gcHJvcGVydHlOYW1lLgorc3RhdGljIGJvb2wgcGFyc2VQYWdl
UHJvcGVydHlQYXJhbWV0ZXJzKEpTQ29udGV4dFJlZiBjb250ZXh0LCBpbnQgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiogYXJndW1lbnRzLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24sIGNo
YXIqJiBwcm9wZXJ0eU5hbWUsIGludCYgcGFnZU51bWJlcikKK3sKKyAgICBwYWdlTnVtYmVyID0g
MDsKKyAgICBzd2l0Y2ggKGFyZ3VtZW50Q291bnQpIHsKKyAgICBjYXNlIDI6CisgICAgICAgIHBh
Z2VOdW1iZXIgPSBzdGF0aWNfY2FzdDxmbG9hdD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFy
Z3VtZW50c1sxXSwgZXhjZXB0aW9uKSk7CisgICAgICAgIGlmICgqZXhjZXB0aW9uKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAvLyBGYWxsIHRocm91Z2guCisgICAgY2FzZSAx
OiB7CisgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwcm9wZXJ0eU5hbWVTdHJpbmco
QWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRp
b24pKTsKKyAgICAgICAgaWYgKCpleGNlcHRpb24pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgc2l6ZV90IG1heExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3Ry
aW5nU2l6ZShwcm9wZXJ0eU5hbWVTdHJpbmcuZ2V0KCkpOworICAgICAgICBwcm9wZXJ0eU5hbWUg
PSBuZXcgY2hhclttYXhMZW5ndGggKyAxXTsKKyAgICAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmlu
Zyhwcm9wZXJ0eU5hbWVTdHJpbmcuZ2V0KCksIHByb3BlcnR5TmFtZSwgbWF4TGVuZ3RoICsgMSk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBjYXNlIDA6CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwogc3RhdGljIEpTVmFsdWVSZWYgcGFn
ZU51bWJlckZvckVsZW1lbnRCeUlkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2Jq
ZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRD
b3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KQogewogICAgIGZsb2F0IHBhZ2VXaWR0aEluUGl4ZWxzID0gMDsKQEAgLTU0OCw2ICs1NzQsMjAg
QEAgc3RhdGljIEpTVmFsdWVSZWYgbnVtYmVyT2ZQYWdlc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGkKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIo
Y29udGV4dCwgY29udHJvbGxlci0+bnVtYmVyT2ZQYWdlcyhwYWdlV2lkdGhJblBpeGVscywgcGFn
ZUhlaWdodEluUGl4ZWxzKSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHBhZ2VQcm9wZXJ0eUNh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBjaGFyKiBwcm9wZXJ0
eU5hbWUgPSAwOworICAgIGludCBwYWdlTnVtYmVyID0gMDsKKyAgICBpZiAoIXBhcnNlUGFnZVBy
b3BlcnR5UGFyYW1ldGVycyhjb250ZXh0LCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMsIGV4Y2Vw
dGlvbiwgcHJvcGVydHlOYW1lLCBwYWdlTnVtYmVyKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRy
b2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJp
dmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IEpTVmFsdWVNYWtlU3Ry
aW5nKGNvbnRleHQsIGNvbnRyb2xsZXItPnBhZ2VQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIHBhZ2VO
dW1iZXIpLmdldCgpKTsKKworICAgIGRlbGV0ZVtdIHByb3BlcnR5TmFtZTsKKyAgICByZXR1cm4g
dmFsdWU7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHF1ZXVlQmFja05hdmlnYXRpb25DYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIG1hYyAmIHdpbmRv
d3MgaW1wbGVtZW50YXRpb24KQEAgLTE2MDEsNiArMTY0MSw3IEBAIEpTU3RhdGljRnVuY3Rpb24q
IExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJudW1i
ZXJPZkFjdGl2ZUFuaW1hdGlvbnMiLCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnNDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7ICJvdmVycmlkZVByZWZlcmVuY2UiLCBvdmVycmlkZVByZWZlcmVu
Y2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQi
LCBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJw
YWdlUHJvcGVydHkiLCBwYWdlUHJvcGVydHlDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJw
YXRoVG9Mb2NhbFJlc291cmNlIiwgcGF0aFRvTG9jYWxSZXNvdXJjZUNhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgInBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkIiwgcGF1c2VB
bmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQiLCBwYXVzZVRyYW5zaXRpb25B
dFRpbWVPbkVsZW1lbnRXaXRoSWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggOGZmMzhkMTA5MDEw
ZjRlOTY4MmRhMmI4N2U4ZWYxODZjNDExYzJhOC4uMTRlYzEzMGM1ZTA0YjEzYjMxYjRmZTYwNjU1
ODFjMzczYWYzZjM0OSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oCkBAIC02Miw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICBpbnQgbnVt
YmVyT2ZQYWdlcyhmbG9hdCBwYWdlV2lkdGhJblBpeGVscywgZmxvYXQgcGFnZUhlaWdodEluUGl4
ZWxzKTsKICAgICB2b2lkIG92ZXJyaWRlUHJlZmVyZW5jZShKU1N0cmluZ1JlZiBrZXksIEpTU3Ry
aW5nUmVmIHZhbHVlKTsKICAgICBpbnQgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKEpTU3RyaW5n
UmVmIGlkLCBmbG9hdCBwYWdlV2lkdGhJblBpeGVscywgZmxvYXQgcGFnZUhlaWdodEluUGl4ZWxz
KTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGFnZVByb3BlcnR5KGNvbnN0IGNoYXIq
IHByb3BlcnR5TmFtZSwgaW50IHBhZ2VOdW1iZXIpIGNvbnN0OwogICAgIEpTU3RyaW5nUmVmIHBh
dGhUb0xvY2FsUmVzb3VyY2UoSlNDb250ZXh0UmVmLCBKU1N0cmluZ1JlZiB1cmwpOwogICAgIHZv
aWQgcXVldWVCYWNrTmF2aWdhdGlvbihpbnQgaG93RmFyQmFja3dhcmQpOwogICAgIHZvaWQgcXVl
dWVGb3J3YXJkTmF2aWdhdGlvbihpbnQgaG93RmFyRm9yd2FyZCk7CmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNw
cAppbmRleCBlOGI4NjI3NTg1MmRjYjVjZTFkMTlkNmRhNWZiYTUxYTAxNTQ5ZDYzLi4yYmRkODBj
N2I0MzljYmYxODFhMTgzZDg0MWNmMTFkZjA0ZTVhODVmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAK
QEAgLTE3MSw2ICsxNzEsMTIgQEAgaW50IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBh
Z2VzKGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCkKICAgICByZXR1cm4gd2Via2l0
X3dlYl9mcmFtZV9udW1iZXJfb2ZfcGFnZXMobWFpbkZyYW1lLCBwYWdlV2lkdGgsIHBhZ2VIZWln
aHQpOwogfQogCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnBhZ2VQcm9wZXJ0eShjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlTnVtYmVyKSBj
b25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+KCk7Cit9CisKIHNpemVfdCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6d2ViSGlz
dG9yeUl0ZW1Db3VudCgpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudApkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1t
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFj
Lm1tCmluZGV4IGViMDEwOTAwMjZiN2Y5ZjZhYzNjZjQzYmI1NmYwM2NkMjYyNzM5YzguLmVlMTA3
MDMzNjYwMjAxNGMzYTM1NDgyNjczMjY1ZDdmZTk0MjUyZDYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0K
QEAgLTIxMiw2ICsyMTIsMTIgQEAgaW50IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVy
Rm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQsIGZsb2F0IHBhZ2VXaWQKICAgICByZXR1cm4g
W21haW5GcmFtZSBwYWdlTnVtYmVyRm9yRWxlbWVudDplbGVtZW50OnBhZ2VXaWR0aEluUGl4ZWxz
OnBhZ2VIZWlnaHRJblBpeGVsc107CiB9CiAKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6cGFnZVByb3BlcnR5KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwg
aW50IHBhZ2VOdW1iZXIpIGNvbnN0Cit7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBy
b3BlcnR5VmFsdWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1Jl
ZilbbWFpbkZyYW1lIHBhZ2VQcm9wZXJ0eTpwcm9wZXJ0eU5hbWU6cGFnZU51bWJlcl0pKTsKKyAg
ICByZXR1cm4gcHJvcGVydHlWYWx1ZTsKK30KKwogaW50IExheW91dFRlc3RDb250cm9sbGVyOjpu
dW1iZXJPZlBhZ2VzKGZsb2F0IHBhZ2VXaWR0aEluUGl4ZWxzLCBmbG9hdCBwYWdlSGVpZ2h0SW5Q
aXhlbHMpCiB7CiAgICAgcmV0dXJuIFttYWluRnJhbWUgbnVtYmVyT2ZQYWdlczpwYWdlV2lkdGhJ
blBpeGVsczpwYWdlSGVpZ2h0SW5QaXhlbHNdOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggYzcw
YjUxN2ZlYmY3NDA2YjE1MmZjZmNjNDA0NDA1YjY2ZjcwN2RiYS4uYjJhMzQ1YjUwZTc4NWI1NWI1
YjFhOTlmMzY3YTc5NWQ0YjkwYzJhNyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAorKysgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCkBAIC0xMjM3LDYg
KzEyMzcsMTIgQEAgaW50IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBhZ2VzKGZsb2F0
IHBhZ2VXaWR0aEluUGl4ZWxzLCBmbG9hdCBwYWdlSGVpZ2gKICAgICByZXR1cm4gcGFnZU51bWJl
cjsKIH0KIAorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpw
YWdlUHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBpbnQgcGFnZU51bWJlcikgY29u
c3QKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgcmV0dXJuIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPigpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphcGlU
ZXN0TmV3V2luZG93RGF0YUxvYWRCYXNlVVJMKEpTU3RyaW5nUmVmIHV0ZjhEYXRhLCBKU1N0cmlu
Z1JlZiBiYXNlVVJMKQogewogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58228</attachid>
            <date>2010-06-09 03:04:44 -0700</date>
            <delta_ts>2010-06-09 23:35:51 -0700</delta_ts>
            <desc>Add a test for user style sheet.</desc>
            <filename>bug-35961-20100609030441.patch</filename>
            <type>text/plain</type>
            <size>34678</size>
            <attacher name="Yuzo Fujishima">yuzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNjJjNTIwOWQwMzEwZWFjYmUyMDc0NjY2NWZhODc3ZDRkNWY0MTRmLi44YmU2YzY5
YTE1YWVjZWY1MmQyYzRhYmMxMTc3MDA2YTFmOTljZjZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDYtMDcgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCByZW5kZXIg
c3R5bGUgc2VsZWN0aW9uIGZvciBwYWdlcyB0byBzdXBwb3J0IENTUzMgUGFnZWQgTWVkaWEuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTk2MQorCisg
ICAgICAgICogcHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHByaW50aW5nL3BhZ2UtcnVsZS1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCisK
IDIwMTAtMDUtMTggIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFNoaW5pY2hpcm8gSGFtYWppLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
cmludGluZy9wYWdlLXJ1bGUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTlk
ZjMzNDZkNjI2NjY5YjZiNDZiOTBhMzg0YjI1YTRiNDNlOTZiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw1MyBAQAorVGhpcyB0ZXN0cyBwYWdlIHN0eWxlIHNlbGVjdGlvbi4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0RlZmF1bHQgbWFyZ2luIGlzIDFpbiA9IDk2cHguCitQ
QVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAwKSBp
cyAiOTYiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxl
ZnQnLCAxKSBpcyAiOTYiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgn
bWFyZ2luLWxlZnQnLCAyKSBpcyAiOTYiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQ
cm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAzKSBpcyAiOTYiCitQQVNTIGxheW91dFRlc3RDb250cm9s
bGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCA0KSBpcyAiOTYiCitTZXQgbWFyZ2luIHRv
IDIwMHB4IHZpYSB1c2VyIHN0eWxlIHNoZWV0LgorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5w
YWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMCkgaXMgIjIwMCIKK1BBU1MgbGF5b3V0VGVzdENv
bnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDEpIGlzICIyMDAiCitQQVNTIGxh
eW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAyKSBpcyAiMjAw
IgorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0Jywg
MykgaXMgIjIwMCIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJn
aW4tbGVmdCcsIDQpIGlzICIyMDAiCitTZXQgbWFyZ2luIHRvIDEwMHB4LgorUEFTUyBsYXlvdXRU
ZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMCkgaXMgIjEwMCIKK1BB
U1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDEpIGlz
ICIxMDAiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxl
ZnQnLCAyKSBpcyAiMTAwIgorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHko
J21hcmdpbi1sZWZ0JywgMykgaXMgIjEwMCIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFn
ZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDQpIGlzICIxMDAiCitTZXQgbWFyZ2luIGZvciByaWdo
dCBwYWdlcyB0byA1MHB4LiBUaGUgZmlyc3QgcGFnZSBpcyBhIHJpZ2h0IHBhZ2UuCitQQVNTIGxh
eW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAwKSBpcyAiNTAi
CitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAx
KSBpcyAiMTAwIgorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdp
bi1sZWZ0JywgMikgaXMgIjUwIgorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVy
dHkoJ21hcmdpbi1sZWZ0JywgMykgaXMgIjEwMCIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIu
cGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDQpIGlzICI1MCIKK1NldCBtYXJnaW4gZm9yIGxl
ZnQgcGFnZXMgdG8gNzVweC4KK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5
KCdtYXJnaW4tbGVmdCcsIDApIGlzICI1MCIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFn
ZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDEpIGlzICI3NSIKK1BBU1MgbGF5b3V0VGVzdENvbnRy
b2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDIpIGlzICI1MCIKK1BBU1MgbGF5b3V0
VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDMpIGlzICI3NSIKK1BB
U1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDQpIGlz
ICI1MCIKK1NldCBtYXJnaW4gZm9yIHRoZSBmaXJzdCBwYWdlIHRvIDEyNXB4LgorUEFTUyBsYXlv
dXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMCkgaXMgIjEyNSIK
K1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDEp
IGlzICI3NSIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4t
bGVmdCcsIDIpIGlzICI1MCIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5
KCdtYXJnaW4tbGVmdCcsIDMpIGlzICI3NSIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFn
ZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDQpIGlzICI1MCIKK0NoYW5nZSB0aGUgZG9jdW1lbnQg
ZGlyZWN0aW9uIHRvIFJUTC4gVGhpcyBtYWtlcyB0aGUgZmlyc3QgcGFnZSBhIGxlZnQgcGFnZS4K
K1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDAp
IGlzICIxMjUiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2lu
LWxlZnQnLCAxKSBpcyAiNTAiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0
eSgnbWFyZ2luLWxlZnQnLCAyKSBpcyAiNzUiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBh
Z2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAzKSBpcyAiNTAiCitQQVNTIGxheW91dFRlc3RDb250
cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCA0KSBpcyAiNzUiCitDaGVjayBsaW5l
IGhlaWdodCBvdmVycmlkZS4KK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5
KCdsaW5lLWhlaWdodCcsIDApIGlzICI3NSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wcmludGluZy9w
YWdlLXJ1bGUtc2VsZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9wcmludGluZy9wYWdlLXJ1bGUt
c2VsZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg1YTY2M2IyZjVhYzQ1MmM5MTc4YTdhNjc2YTRh
NzE0ZGRjODY5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2Ut
cnVsZS1zZWxlY3Rpb24uaHRtbApAQCAtMCwwICsxLDkwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sIGlkPSJodG1sX2VsZW1lbnQiPgorPGhlYWQgaWQ9ImhlYWRfZWxlbWVudCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRl
c3RzIHBhZ2Ugc3R5bGUgc2VsZWN0aW9uLiIpOworCisgICAgZnVuY3Rpb24gYXBwZW5kU3R5bGUo
c3R5bGVTdHJpbmcpCisgICAgeworICAgICAgICB2YXIgc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgic3R5bGUiKTsKKyAgICAgICAgc3R5bGVFbGVtZW50LmlubmVySFRNTCA9
IHN0eWxlU3RyaW5nOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaGVhZF9lbGVt
ZW50IikuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KTsKKyAgICB9CisKKyAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgICAgICAgICAgZGVidWcoIkRlZmF1bHQgbWFyZ2luIGlzIDFpbiA9IDk2cHguIik7CisgICAg
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQ
cm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAwKSIsICI5NiIpOworICAgICAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1s
ZWZ0JywgMSkiLCAiOTYiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5
b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDIpIiwgIjk2Iik7
CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVy
LnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAzKSIsICI5NiIpOworICAgICAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21h
cmdpbi1sZWZ0JywgNCkiLCAiOTYiKTsKKworICAgICAgICAgICAgZGVidWcoIlNldCBtYXJnaW4g
dG8gMjAwcHggdmlhIHVzZXIgc3R5bGUgc2hlZXQuIik7CisgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5hZGRVc2VyU3R5bGVTaGVldCgiQHBhZ2UgeyBtYXJnaW46MjAwcHg7IH0iKTsK
KyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIu
cGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDApIiwgIjIwMCIpOworICAgICAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21h
cmdpbi1sZWZ0JywgMSkiLCAiMjAwIik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAyKSIs
ICIyMDAiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENv
bnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDMpIiwgIjIwMCIpOworICAgICAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJv
cGVydHkoJ21hcmdpbi1sZWZ0JywgNCkiLCAiMjAwIik7CisKKyAgICAgICAgICAgIGRlYnVnKCJT
ZXQgbWFyZ2luIHRvIDEwMHB4LiIpOworICAgICAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdlIHsg
bWFyZ2luOjEwMHB4OyB9Iik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxh
eW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAwKSIsICIxMDAi
KTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xs
ZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDEpIiwgIjEwMCIpOworICAgICAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHko
J21hcmdpbi1sZWZ0JywgMikiLCAiMTAwIik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAz
KSIsICIxMDAiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVz
dENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDQpIiwgIjEwMCIpOworCisg
ICAgICAgICAgICBkZWJ1ZygiU2V0IG1hcmdpbiBmb3IgcmlnaHQgcGFnZXMgdG8gNTBweC4gVGhl
IGZpcnN0IHBhZ2UgaXMgYSByaWdodCBwYWdlLiIpOworICAgICAgICAgICAgYXBwZW5kU3R5bGUo
IkBwYWdlIDpyaWdodCB7IG1hcmdpbjo1MHB4OyB9Iik7CisgICAgICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxl
ZnQnLCAwKSIsICI1MCIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlv
dXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMSkiLCAiMTAwIik7
CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVy
LnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAyKSIsICI1MCIpOworICAgICAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21h
cmdpbi1sZWZ0JywgMykiLCAiMTAwIik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCA0KSIs
ICI1MCIpOworCisgICAgICAgICAgICBkZWJ1ZygiU2V0IG1hcmdpbiBmb3IgbGVmdCBwYWdlcyB0
byA3NXB4LiIpOworICAgICAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdlIDpsZWZ0IHsgbWFyZ2lu
Ojc1cHg7IH0iKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVz
dENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDApIiwgIjUwIik7CisgICAg
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQ
cm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAxKSIsICI3NSIpOworICAgICAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1s
ZWZ0JywgMikiLCAiNTAiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5
b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDMpIiwgIjc1Iik7
CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVy
LnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCA0KSIsICI1MCIpOworCisgICAgICAgICAgICBk
ZWJ1ZygiU2V0IG1hcmdpbiBmb3IgdGhlIGZpcnN0IHBhZ2UgdG8gMTI1cHguIik7CisgICAgICAg
ICAgICBhcHBlbmRTdHlsZSgiQHBhZ2UgOmZpcnN0IHsgbWFyZ2luOjEyNXB4OyB9Iik7CisgICAg
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQ
cm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAwKSIsICIxMjUiKTsKKyAgICAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4t
bGVmdCcsIDEpIiwgIjc1Iik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxh
eW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAyKSIsICI1MCIp
OworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxl
ci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMykiLCAiNzUiKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdt
YXJnaW4tbGVmdCcsIDQpIiwgIjUwIik7CisKKyAgICAgICAgICAgIGRlYnVnKCJDaGFuZ2UgdGhl
IGRvY3VtZW50IGRpcmVjdGlvbiB0byBSVEwuIFRoaXMgbWFrZXMgdGhlIGZpcnN0IHBhZ2UgYSBs
ZWZ0IHBhZ2UuIik7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaHRtbF9l
bGVtZW50Iikuc2V0QXR0cmlidXRlKCJkaXIiLCAicnRsIik7CisgICAgICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2lu
LWxlZnQnLCAwKSIsICIxMjUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
bGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDEpIiwgIjUw
Iik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9s
bGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAyKSIsICI3NSIpOworICAgICAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHko
J21hcmdpbi1sZWZ0JywgMykiLCAiNTAiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDQp
IiwgIjc1Iik7CisKKyAgICAgICAgICAgIGRlYnVnKCJDaGVjayBsaW5lIGhlaWdodCBvdmVycmlk
ZS4iKTsKKyAgICAgICAgICAgIGFwcGVuZFN0eWxlKCJAcGFnZSB7IGxpbmUtaGVpZ2h0OjFlbTsg
fSIpOworICAgICAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdlIHsgZm9udDoxNXB4LzVlbSBMdWNp
ZGE7IH0iKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENv
bnRyb2xsZXIucGFnZVByb3BlcnR5KCdsaW5lLWhlaWdodCcsIDApIiwgIjc1Iik7CisgICAgICAg
IH0KKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJUaGlzIHRlc3QgY2FuIGJlIHJ1
biBvbmx5IHdpdGggd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyIik7CisgICAgfQorICAgIHZh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMGE3YzM2YjU4ZDU1NTQwMzk5YTRiMzI0MGJhYWMyYTU5ZjBjNWM5MS4uOWZiNDdmODgx
MjEzOTNlMDBlMDg2MWE4YjRhM2Q3OWJjMzY4YjExZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxMC0wNi0w
NyAgWXV6byBGdWppc2hpbWEgIDx5dXpvQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHJlbmRlciBzdHlsZSBzZWxl
Y3Rpb24gZm9yIHBhZ2VzIHRvIHN1cHBvcnQgQ1NTMyBQYWdlZCBNZWRpYS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1OTYxCisKKyAgICAgICAgVGVz
dDogcHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi5odG1sCisKKyAgICAgICAgKiBXZWJDb3Jl
LmJhc2UuZXhwOgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgICogY3NzL0NT
U1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzcGVjaWZpY2l0
eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c3BlY2lmaWNpdHlGb3JQYWdlKToK
KyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVj
dG9yOjpDU1NTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6aXNGb3JQ
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZXRGb3JQYWdlKToKKyAgICAg
ICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZVNlbGVjdG9yOjpzdHlsZUZvclBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxl
Y3Rvcjo6bWF0Y2hQYWdlUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rv
cjo6bWF0Y2hQYWdlUnVsZXNGb3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2Vs
ZWN0b3I6OmlzTGVmdFBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6
aXNGaXJzdFBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cGFnZU5h
bWUpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNlbGVjdG9yOjppc1JpZ2h0UGFnZSk6CisgICAgICAgICogY3NzL2h0bWwuY3Nz
OgorICAgICAgICAoQHBhZ2UpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6c3R5bGVGb3JQYWdlKToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaDoKKyAgICAgICAgKiBwYWdlL1ByaW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eSk6CisgICAgICAgICogcGFnZS9QcmludENvbnRl
eHQuaDoKKwogMjAxMC0wNS0xOCAgWXV6byBGdWppc2hpbWEgIDx5dXpvQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgU2hpbmljaGlybyBIYW1hamkuCmRpZmYgLS1naXQgYS9XZWJD
b3JlL1dlYkNvcmUuYmFzZS5leHAgYi9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKaW5kZXggMjk3
MDRmYjQ1NDk4MzYwNWYyNzNjYzFhNmQ1NzUzOTU1MDRhNTYxZi4uMGYxNjVhYTAzNGZiYzQ3NDE5
YjdhOTdmYzgwNGNlZDc0NzNjMmY2ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmJhc2Uu
ZXhwCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cApAQCAtMjQ4LDYgKzI0OCw3IEBAIF9f
Wk43V2ViQ29yZTEySWNvbkRhdGFiYXNlNG9wZW5FUktOU182U3RyaW5nRQogX19aTjdXZWJDb3Jl
MTJJY29uRGF0YWJhc2U1Y2xvc2VFdgogX19aTjdXZWJDb3JlMTJJY29uRGF0YWJhc2U5c2V0Q2xp
ZW50RVBOU18xOEljb25EYXRhYmFzZUNsaWVudEUKIF9fWk43V2ViQ29yZTEyUGx1Z2luV2lkZ2V0
MTRpbnZhbGlkYXRlUmVjdEVSS05TXzdJbnRSZWN0RQorX19aTjdXZWJDb3JlMTJQcmludENvbnRl
eHQxMnBhZ2VQcm9wZXJ0eUVQTlNfNUZyYW1lRVBLY2kKIF9fWk43V2ViQ29yZTEyUHJpbnRDb250
ZXh0MTNudW1iZXJPZlBhZ2VzRVBOU181RnJhbWVFUktOU185RmxvYXRTaXplRQogX19aTjdXZWJD
b3JlMTJQcmludENvbnRleHQyMHBhZ2VOdW1iZXJGb3JFbGVtZW50RVBOU183RWxlbWVudEVSS05T
XzlGbG9hdFNpemVFCiBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDI4Y29tcHV0ZVBhZ2VSZWN0
c1dpdGhQYWdlU2l6ZUVSS05TXzlGbG9hdFNpemVFYgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3Mv
Q1NTR3JhbW1hci55IGIvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CmluZGV4IDA2YzZkMDE4NjZk
Yzc0NWNkNDgwOTJlZjk5MWRkNmY2NjRjNjhmNTguLjI2YjJiYTg2YmQwZDM4Yjg2MTc3MTRjMTk5
NjcyNDEyYjg1MDE1NjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQorKysg
Yi9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKQEAgLTc3OCwxOSArNzc4LDI1IEBAIHBhZ2Vfc2Vs
ZWN0b3I6CiAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBh
cnNlcik7CiAgICAgICAgICQkID0gcC0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwogICAgICAg
ICAkJC0+bV90YWcgPSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMSwgcC0+bV9kZWZhdWx0TmFt
ZXNwYWNlKTsKKyAgICAgICAgJCQtPnNldEZvclBhZ2UoKTsKICAgICB9CiAgICAgfCBJREVOVCBw
c2V1ZG9fcGFnZSB7CiAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNl
cio+KHBhcnNlcik7CiAgICAgICAgICQkID0gJDI7Ci0gICAgICAgIGlmICgkJCkKKyAgICAgICAg
aWYgKCQkKSB7CiAgICAgICAgICAgICAkJC0+bV90YWcgPSBRdWFsaWZpZWROYW1lKG51bGxBdG9t
LCAkMSwgcC0+bV9kZWZhdWx0TmFtZXNwYWNlKTsKKyAgICAgICAgICAgICQkLT5zZXRGb3JQYWdl
KCk7CisgICAgICAgIH0KICAgICB9CiAgICAgfCBwc2V1ZG9fcGFnZSB7CiAgICAgICAgICQkID0g
JDE7CisgICAgICAgIGlmICgkJCkKKyAgICAgICAgICAgICQkLT5zZXRGb3JQYWdlKCk7CiAgICAg
fQogICAgIHwgLyogZW1wdHkgKi8gewogICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2Fz
dDxDU1NQYXJzZXIqPihwYXJzZXIpOwogICAgICAgICAkJCA9IHAtPmNyZWF0ZUZsb2F0aW5nU2Vs
ZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldEZvclBhZ2UoKTsKICAgICB9CiAgICAgOwogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTZWxl
Y3Rvci5jcHAKaW5kZXggZTQ1YmY0YzdhYzI0NjQ1YWExYzgyMDQyMWI4YWQ0YmU0ZjQ3YzM2Zi4u
OGU5OGEzZmRiNWFmZTMxYzFlMGI0NTlhMmIxMzRhOTUzZTZjZDJkOCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNw
cApAQCAtMzcsNiArMzcsOSBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiB1bnNpZ25l
ZCBpbnQgQ1NTU2VsZWN0b3I6OnNwZWNpZmljaXR5KCkKIHsKKyAgICBpZiAobV9pc0ZvclBhZ2Up
CisgICAgICAgIHJldHVybiBzcGVjaWZpY2l0eUZvclBhZ2UoKTsKKwogICAgIC8vIEZJWE1FOiBQ
c2V1ZG8tZWxlbWVudHMgYW5kIHBzZXVkby1jbGFzc2VzIGRvIG5vdCBoYXZlIHRoZSBzYW1lIHNw
ZWNpZmljaXR5LiBUaGlzIGZ1bmN0aW9uCiAgICAgLy8gaXNuJ3QgcXVpdGUgY29ycmVjdC4KICAg
ICBpbnQgcyA9IChtX3RhZy5sb2NhbE5hbWUoKSA9PSBzdGFyQXRvbSA/IDAgOiAxKTsKQEAgLTY2
LDYgKzY5LDI3IEBAIHVuc2lnbmVkIGludCBDU1NTZWxlY3Rvcjo6c3BlY2lmaWNpdHkoKQogICAg
IHJldHVybiBzICYgMHhmZmZmZmY7CiB9CiAKK3Vuc2lnbmVkIENTU1NlbGVjdG9yOjpzcGVjaWZp
Y2l0eUZvclBhZ2UoKQoreworICAgIC8vIFNlZSBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mz
LXBhZ2UvI2Nhc2NhZGluZy1hbmQtcGFnZS1jb250ZXh0CisgICAgdW5zaWduZWQgcyA9IChtX3Rh
Zy5sb2NhbE5hbWUoKSA9PSBzdGFyQXRvbSA/IDAgOiA0KTsKKworICAgIHN3aXRjaCAocHNldWRv
VHlwZSgpKSB7CisgICAgY2FzZSBQc2V1ZG9GaXJzdFBhZ2U6CisgICAgICAgIHMgKz0gMjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQc2V1ZG9MZWZ0UGFnZToKKyAgICBjYXNlIFBzZXVkb1Jp
Z2h0UGFnZToKKyAgICAgICAgcyArPSAxOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBzZXVk
b05vdFBhcnNlZDoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiBzOworfQorCiBQc2V1ZG9JZCBDU1NT
ZWxlY3Rvcjo6cHNldWRvSWQoUHNldWRvVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkg
ewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaCBiL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmgKaW5kZXggMTFkMzBiMTk5MWM1ODM5YWMyMzU3NmJlNTNiMmRiZDBkMGY0ZTMy
OS4uZWIwNzA3OGVmZDQ3NGNmNGE4OGZiNDY0YzgyNjU2ZGNjZDcxZDQ3MyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5o
CkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9w
YXJzZWROdGgoZmFsc2UpCiAgICAgICAgICAgICAsIG1faXNMYXN0SW5TZWxlY3Rvckxpc3QoZmFs
c2UpCiAgICAgICAgICAgICAsIG1faGFzUmFyZURhdGEoZmFsc2UpCisgICAgICAgICAgICAsIG1f
aXNGb3JQYWdlKGZhbHNlKQogICAgICAgICAgICAgLCBtX3RhZyhhbnlRTmFtZSgpKQogICAgICAg
ICB7CiAgICAgICAgIH0KQEAgLTUwLDYgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAgICAgLCBtX3BhcnNlZE50aChmYWxzZSkKICAgICAgICAgICAgICwgbV9pc0xhc3RJblNl
bGVjdG9yTGlzdChmYWxzZSkKICAgICAgICAgICAgICwgbV9oYXNSYXJlRGF0YShmYWxzZSkKKyAg
ICAgICAgICAgICwgbV9pc0ZvclBhZ2UoZmFsc2UpCiAgICAgICAgICAgICAsIG1fdGFnKHFOYW1l
KQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTI1Myw2ICsyNTUsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZvaWQgc2V0TGFzdEluU2VsZWN0b3JMaXN0KCkgeyBtX2lzTGFzdElu
U2VsZWN0b3JMaXN0ID0gdHJ1ZTsgfQogICAgICAgICBib29sIGlzU2ltcGxlKCkgY29uc3Q7CiAK
KyAgICAgICAgYm9vbCBpc0ZvclBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2lzRm9yUGFnZTsgfQor
ICAgICAgICB2b2lkIHNldEZvclBhZ2UoKSB7IG1faXNGb3JQYWdlID0gdHJ1ZTsgfQorCiAgICAg
ICAgIHVuc2lnbmVkIG1fcmVsYXRpb24gICAgICAgICAgIDogMzsgLy8gZW51bSBSZWxhdGlvbgog
ICAgICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fbWF0Y2ggICAgICA6IDQ7IC8vIGVudW0gTWF0Y2gK
ICAgICAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3BzZXVkb1R5cGUgOiA4OyAvLyBQc2V1ZG9UeXBl
CkBAIC0yNjEsNyArMjY2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1f
cGFyc2VkTnRoICAgICAgICAgICAgICA6IDE7IC8vIFVzZWQgZm9yIDpudGgtKiAKICAgICAgICAg
Ym9vbCBtX2lzTGFzdEluU2VsZWN0b3JMaXN0ICAgOiAxOwogICAgICAgICBib29sIG1faGFzUmFy
ZURhdGEgICAgICAgICAgICA6IDE7CisgICAgICAgIGJvb2wgbV9pc0ZvclBhZ2UgICAgICAgICAg
ICAgIDogMTsKIAorICAgICAgICB1bnNpZ25lZCBzcGVjaWZpY2l0eUZvclBhZ2UoKTsKICAgICAg
ICAgdm9pZCBleHRyYWN0UHNldWRvVHlwZSgpIGNvbnN0OwogCiAgICAgICAgIHN0cnVjdCBSYXJl
RGF0YSA6IE5vbmNvcHlhYmxlIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggM2I4NmYw
ZmFjYTE5YmMwOTk0MGQ4OWNhNWQ2OWVmYzVkNDk5YjczNS4uMDY4NzVkM2Y2NTAwNjczZDA2ODQw
ZTQ1M2JmMDllOWRhYTEwMGY5ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTE1NDcs
NiArMTU0NywzNiBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpw
c2V1ZG9TdHlsZUZvckVsZW1lbnQoUHNldWRvSWQgcHNldWRvLAogICAgIHJldHVybiBtX3N0eWxl
LnJlbGVhc2UoKTsKIH0KIAorUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rv
cjo6c3R5bGVGb3JQYWdlKGludCBwYWdlSW5kZXgpCit7CisgICAgaW5pdEZvclN0eWxlUmVzb2x2
ZShtX2NoZWNrZXIubV9kb2N1bWVudC0+Ym9keSgpKTsKKworICAgIG1fc3R5bGUgPSBSZW5kZXJT
dHlsZTo6Y3JlYXRlKCk7CisgICAgbV9zdHlsZS0+aW5oZXJpdEZyb20obV9yb290RWxlbWVudFN0
eWxlKTsKKworICAgIGNvbnN0IGJvb2wgaXNMZWZ0ID0gaXNMZWZ0UGFnZShwYWdlSW5kZXgpOwor
ICAgIGNvbnN0IGJvb2wgaXNGaXJzdCA9IGlzRmlyc3RQYWdlKHBhZ2VJbmRleCk7CisgICAgY29u
c3QgU3RyaW5nIHBhZ2UgPSBwYWdlTmFtZShwYWdlSW5kZXgpOworICAgIG1hdGNoUGFnZVJ1bGVz
KGRlZmF1bHRQcmludFN0eWxlLCBpc0xlZnQsIGlzRmlyc3QsIHBhZ2UpOworICAgIG1hdGNoUGFn
ZVJ1bGVzKG1fdXNlclN0eWxlLCBpc0xlZnQsIGlzRmlyc3QsIHBhZ2UpOworICAgIG1hdGNoUGFn
ZVJ1bGVzKG1fYXV0aG9yU3R5bGUsIGlzTGVmdCwgaXNGaXJzdCwgcGFnZSk7CisgICAgbV9saW5l
SGVpZ2h0VmFsdWUgPSAwOworICAgIGFwcGx5RGVjbGFyYXRpb25zPHRydWU+KGZhbHNlLCAwLCBt
X21hdGNoZWREZWNscy5zaXplKCkgLSAxKTsKKworICAgIC8vIElmIG91ciBmb250IGdvdCBkaXJ0
aWVkLCBnbyBhaGVhZCBhbmQgdXBkYXRlIGl0IG5vdy4KKyAgICBpZiAobV9mb250RGlydHkpCisg
ICAgICAgIHVwZGF0ZUZvbnQoKTsKKworICAgIC8vIExpbmUtaGVpZ2h0IGlzIHNldCB3aGVuIHdl
IGFyZSBzdXJlIHdlIGRlY2lkZWQgb24gdGhlIGZvbnQtc2l6ZQorICAgIGlmIChtX2xpbmVIZWln
aHRWYWx1ZSkKKyAgICAgICAgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpbmVIZWlnaHQsIG1f
bGluZUhlaWdodFZhbHVlKTsKKworICAgIGFwcGx5RGVjbGFyYXRpb25zPGZhbHNlPihmYWxzZSwg
MCwgbV9tYXRjaGVkRGVjbHMuc2l6ZSgpIC0gMSk7CisKKyAgICAvLyBOb3cgcmV0dXJuIHRoZSBz
dHlsZS4KKyAgICByZXR1cm4gbV9zdHlsZS5yZWxlYXNlKCk7Cit9CisKICNpZiBFTkFCTEUoREFU
QUdSSUQpCiAKIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3I6OnBzZXVk
b1N0eWxlRm9yRGF0YUdyaWRDb2x1bW4oRGF0YUdyaWRDb2x1bW4qLCBSZW5kZXJTdHlsZSopCkBA
IC0yODg1LDYgKzI5MTUsNzQgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseURlY2xhcmF0
aW9ucyhib29sIGlzSW1wb3J0YW50LCBpbnQgc3RhcnRJbmRleCwgaW50IGUKICAgICB9CiB9CiAK
K3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hQYWdlUnVsZXMoQ1NTUnVsZVNldCogcnVsZXMs
IGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5nJiBwYWdlTmFt
ZSkKK3sKKyAgICBtX21hdGNoZWRSdWxlcy5jbGVhcigpOworCisgICAgaWYgKCFydWxlcykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbWF0Y2hQYWdlUnVsZXNGb3JMaXN0KHJ1bGVzLT5nZXRQYWdl
UnVsZXMoKSwgaXNMZWZ0UGFnZSwgaXNGaXJzdFBhZ2UsIHBhZ2VOYW1lKTsKKworICAgIC8vIElm
IHdlIGRpZG4ndCBtYXRjaCBhbnkgcnVsZXMsIHdlJ3JlIGRvbmUuCisgICAgaWYgKG1fbWF0Y2hl
ZFJ1bGVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gU29ydCB0aGUgc2V0
IG9mIG1hdGNoZWQgcnVsZXMuCisgICAgc29ydE1hdGNoZWRSdWxlcygwLCBtX21hdGNoZWRSdWxl
cy5zaXplKCkpOworCisgICAgLy8gTm93IHRyYW5zZmVyIHRoZSBzZXQgb2YgbWF0Y2hlZCBydWxl
cyBvdmVyIHRvIG91ciBsaXN0IG9mIGRlY2xzLgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX21hdGNoZWRSdWxlcy5zaXplKCk7IGkrKykKKyAgICAgICAgYWRkTWF0Y2hlZERlY2xhcmF0
aW9uKG1fbWF0Y2hlZFJ1bGVzW2ldLT5ydWxlKCktPmRlY2xhcmF0aW9uKCkpOworfQorCit2b2lk
IENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUGFnZVJ1bGVzRm9yTGlzdChDU1NSdWxlRGF0YUxpc3Qq
IHJ1bGVzLCBib29sIGlzTGVmdFBhZ2UsIGJvb2wgaXNGaXJzdFBhZ2UsIGNvbnN0IFN0cmluZyYg
cGFnZU5hbWUpCit7CisgICAgaWYgKCFydWxlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9y
IChDU1NSdWxlRGF0YSogZCA9IHJ1bGVzLT5maXJzdCgpOyBkOyBkID0gZC0+bmV4dCgpKSB7Cisg
ICAgICAgIENTU1N0eWxlUnVsZSogcnVsZSA9IGQtPnJ1bGUoKTsKKyAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBzZWxlY3RvckxvY2FsTmFtZSA9IGQtPnNlbGVjdG9yKCktPm1fdGFnLmxvY2Fs
TmFtZSgpOworICAgICAgICBpZiAoc2VsZWN0b3JMb2NhbE5hbWUgIT0gc3RhckF0b20gJiYgc2Vs
ZWN0b3JMb2NhbE5hbWUgIT0gcGFnZU5hbWUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgcHNldWRvVHlwZSA9IGQtPnNlbGVjdG9yKCktPnBz
ZXVkb1R5cGUoKTsKKyAgICAgICAgaWYgKChwc2V1ZG9UeXBlID09IENTU1NlbGVjdG9yOjpQc2V1
ZG9MZWZ0UGFnZSAmJiAhaXNMZWZ0UGFnZSkKKyAgICAgICAgICAgIHx8IChwc2V1ZG9UeXBlID09
IENTU1NlbGVjdG9yOjpQc2V1ZG9SaWdodFBhZ2UgJiYgaXNMZWZ0UGFnZSkKKyAgICAgICAgICAg
IHx8IChwc2V1ZG9UeXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdFBhZ2UgJiYgIWlzRmly
c3RQYWdlKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIElmIHRoZSBydWxl
IGhhcyBubyBwcm9wZXJ0aWVzIHRvIGFwcGx5LCB0aGVuIGlnbm9yZSBpdC4KKyAgICAgICAgQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGRlY2wgPSBydWxlLT5kZWNsYXJhdGlvbigpOworICAg
ICAgICBpZiAoIWRlY2wgfHwgIWRlY2wtPmxlbmd0aCgpKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgLy8gQWRkIHRoaXMgcnVsZSB0byBvdXIgbGlzdCBvZiBtYXRjaGVkIHJ1bGVz
LgorICAgICAgICBhZGRNYXRjaGVkUnVsZShkKTsKKyAgICB9Cit9CisKK2Jvb2wgQ1NTU3R5bGVT
ZWxlY3Rvcjo6aXNMZWZ0UGFnZShpbnQgcGFnZUluZGV4KSBjb25zdAoreworICAgIGJvb2wgaXNG
aXJzdFBhZ2VMZWZ0ID0gZmFsc2U7CisgICAgaWYgKG1fcm9vdEVsZW1lbnRTdHlsZS0+ZGlyZWN0
aW9uKCkgPT0gUlRMKQorICAgICAgICBpc0ZpcnN0UGFnZUxlZnQgPSB0cnVlOworCisgICAgcmV0
dXJuIChwYWdlSW5kZXggKyAoaXNGaXJzdFBhZ2VMZWZ0ID8gMSA6IDApKSAlIDI7Cit9CisKK2Jv
b2wgQ1NTU3R5bGVTZWxlY3Rvcjo6aXNGaXJzdFBhZ2UoaW50IHBhZ2VJbmRleCkgY29uc3QKK3sK
KyAgICAvLyBGSVhNRTogSW4gY2FzZSBvZiBmb3JjZWQgbGVmdC9yaWdodCBwYWdlLCBwYWdlIGF0
IGluZGV4IDEgKG5vdCAwKSBjYW4gYmUgdGhlIGZpcnN0IHBhZ2UuCisgICAgcmV0dXJuICghcGFn
ZUluZGV4KTsKK30KKworU3RyaW5nIENTU1N0eWxlU2VsZWN0b3I6OnBhZ2VOYW1lKGludCAvKiBw
YWdlSW5kZXggKi8pIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBwYWdlIGluZGV4
IHRvIHBhZ2UgbmFtZSBtYXBwaW5nLgorICAgIHJldHVybiAiIjsKK30KKwogc3RhdGljIHZvaWQg
YXBwbHlDb3VudGVyTGlzdChSZW5kZXJTdHlsZSogc3R5bGUsIENTU1ZhbHVlTGlzdCogbGlzdCwg
Ym9vbCBpc1Jlc2V0KQogewogICAgIENvdW50ZXJEaXJlY3RpdmVNYXAmIG1hcCA9IHN0eWxlLT5h
Y2Nlc3NDb3VudGVyRGlyZWN0aXZlcygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTZWxlY3Rvci5oIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCmluZGV4IGZkMzdj
ODViYTRiNmQxMjRiN2MyMTBmZGY0ZDhjZjJhZGMwZjZmM2UuLjA1Y2QxMDljMWNiMmMwN2U2YmUz
MGFhNzU1Y2MwMmQ4ZmQxNGU0NzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKQEAgLTkzLDYgKzkz
LDggQEAgcHVibGljOgogCiAgICAgICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHBzZXVkb1N0
eWxlRm9yRWxlbWVudChQc2V1ZG9JZCBwc2V1ZG8sIEVsZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBw
YXJlbnRTdHlsZSA9IDAsIGJvb2wgbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3MgPSBmYWxzZSk7CiAK
KyAgICAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JQYWdlKGludCBwYWdlSW5k
ZXgpOworCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvckRv
Y3VtZW50KERvY3VtZW50Kik7CiAKICNpZiBFTkFCTEUoREFUQUdSSUQpCkBAIC0xODAsNiArMTgy
LDEzIEBAIHB1YmxpYzoKIAogICAgICAgICB0ZW1wbGF0ZSA8Ym9vbCBmaXJzdFBhc3M+CiAgICAg
ICAgIHZvaWQgYXBwbHlEZWNsYXJhdGlvbnMoYm9vbCBpbXBvcnRhbnQsIGludCBzdGFydEluZGV4
LCBpbnQgZW5kSW5kZXgpOworCisgICAgICAgIHZvaWQgbWF0Y2hQYWdlUnVsZXMoQ1NTUnVsZVNl
dCosIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5nJiBwYWdl
TmFtZSk7CisgICAgICAgIHZvaWQgbWF0Y2hQYWdlUnVsZXNGb3JMaXN0KENTU1J1bGVEYXRhTGlz
dCosIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5nJiBwYWdl
TmFtZSk7CisgICAgICAgIGJvb2wgaXNMZWZ0UGFnZShpbnQgcGFnZUluZGV4KSBjb25zdDsKKyAg
ICAgICAgYm9vbCBpc1JpZ2h0UGFnZShpbnQgcGFnZUluZGV4KSBjb25zdCB7IHJldHVybiAhaXNM
ZWZ0UGFnZShwYWdlSW5kZXgpOyB9CisgICAgICAgIGJvb2wgaXNGaXJzdFBhZ2UoaW50IHBhZ2VJ
bmRleCkgY29uc3Q7CisgICAgICAgIFN0cmluZyBwYWdlTmFtZShpbnQgcGFnZUluZGV4KSBjb25z
dDsKICAgICAgICAgCiAgICAgICAgIENTU1J1bGVTZXQqIG1fYXV0aG9yU3R5bGU7CiAgICAgICAg
IENTU1J1bGVTZXQqIG1fdXNlclN0eWxlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvaHRtbC5j
c3MgYi9XZWJDb3JlL2Nzcy9odG1sLmNzcwppbmRleCBiNGJiMDVhOGU5ZGJjOGY5MTQ5ZjI2NzZh
YWFmNGRiZTczZWY3NTk4Li5mZTI4NTI4NzBjYzdjZGRlZTM4YzczODAwYTkwYjg5MzdjOWI4ODU2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9odG1sLmNzcworKysgYi9XZWJDb3JlL2Nzcy9odG1s
LmNzcwpAQCAtNjgzLDQgKzY4MywxMSBAQCBpZnJhbWUgewogICAgIGJvcmRlcjogMnB4IGluc2V0
CiB9CiAKKy8qIHBhZ2UgKi8KKworQHBhZ2UgeworICAgIC8qIEZJWE1FOiBEZWZpbmUgdGhlIHJp
Z2h0IGRlZmF1bHQgdmFsdWVzIGZvciBwYWdlIHByb3BlcnRpZXMuICovCisgICAgbWFyZ2luOiAx
aW47Cit9CisKIC8qIG5vc2NyaXB0IGlzIGhhbmRsZWQgaW50ZXJuYWxseSwgYXMgaXQgZGVwZW5k
cyBvbiBzZXR0aW5ncyAqLwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDRlZGRiYTQwZWFlZDUwMjAyNzA4YzU0ODE1
ZGEzYWI4ZWQ2YjRmZWMuLmU5YjQ0NGY0MDZiOTJhNDQ2NTllMWI1YTFjYjJhNWM0Mzc4NDcyZDIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTE0OTQsNiArMTQ5NCwxMiBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxl
PiBEb2N1bWVudDo6c3R5bGVGb3JFbGVtZW50SWdub3JpbmdQZW5kaW5nU3R5bGVzaGVldHMoRWxl
bQogICAgIHJldHVybiBzdHlsZS5yZWxlYXNlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5
bGU+IERvY3VtZW50OjpzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCkKK3sKKyAgICBSZWZQdHI8
UmVuZGVyU3R5bGU+IHN0eWxlID0gc3R5bGVTZWxlY3RvcigpLT5zdHlsZUZvclBhZ2UocGFnZUlu
ZGV4KTsKKyAgICByZXR1cm4gc3R5bGUucmVsZWFzZSgpOworfQorCiB2b2lkIERvY3VtZW50Ojpj
cmVhdGVTdHlsZVNlbGVjdG9yKCkKIHsKICAgICBib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxl
cyA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCA1MDkzMTAwZWE3YmFkYjViMDg1YmJiMmVhZjY3MWU2MDIxNTdj
NDQ0Li4yNTE5MWEwMTM5N2Y5ZDFiMzYyYTg1MTQ5N2ZiMTVhOGY3NjMwYjY0IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAg
LTQ4MSw2ICs0ODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVMYXlvdXQoKTsKICAgICB2
b2lkIHVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgIFBhc3NSZWZQ
dHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVudElnbm9yaW5nUGVuZGluZ1N0eWxlc2hlZXRz
KEVsZW1lbnQqKTsKKyAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvclBhZ2UoaW50
IHBhZ2VJbmRleCk7CiAgICAgc3RhdGljIHZvaWQgdXBkYXRlU3R5bGVGb3JBbGxEb2N1bWVudHMo
KTsgLy8gRklYTUU6IFRyeSB0byByZWR1Y2UgdGhlICMgb2YgY2FsbHMgdG8gdGhpcyBmdW5jdGlv
bi4KICAgICBEb2NMb2FkZXIqIGRvY0xvYWRlcigpIHsgcmV0dXJuIG1fZG9jTG9hZGVyLmdldCgp
OyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvV2ViQ29y
ZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKaW5kZXggZmZkZTBiZWIxZTNjMGJlNDRkN2U1MjI5Nzdi
M2FiNTM2Mjg2YzFkMC4uNWQ3OWRjZWI1ODQxY2E1MzBmYWFmZjMxMjFkYTRkMmUxNDNkNzAzZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS9w
YWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTE5OCw2ICsxOTgsMjAgQEAgaW50IFByaW50Q29udGV4
dDo6cGFnZU51bWJlckZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgY29uc3QgRmxvYXRTaXpl
JiBwYWdlU2kKICAgICByZXR1cm4gLTE7CiB9CiAKK1N0cmluZyBQcmludENvbnRleHQ6OnBhZ2VQ
cm9wZXJ0eShGcmFtZSogZnJhbWUsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgaW50IHBhZ2VO
dW1iZXIpCit7CisgICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIFJl
ZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVGb3JQYWdl
KHBhZ2VOdW1iZXIpOworCisgICAgLy8gSW1wbGVtZW50IGZvcm1hdHRlcnMgZm9yIHByb3BlcnRp
ZXMgd2UgY2FyZSBhYm91dC4KKyAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJtYXJnaW4t
bGVmdCIpKQorICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVkIiwgc3R5bGUtPm1hcmdp
bkxlZnQoKS5yYXdWYWx1ZSgpKTsKKyAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJsaW5l
LWhlaWdodCIpKQorICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVkIiwgc3R5bGUtPmxp
bmVIZWlnaHQoKS5yYXdWYWx1ZSgpKTsKKworICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgicGFn
ZVByb3BlcnR5KCkgdW5pbXBsZW1lbnRlZCBmb3I6ICVzIiwgcHJvcGVydHlOYW1lKTsKK30KKwog
aW50IFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhGcmFtZSogZnJhbWUsIGNvbnN0IEZsb2F0
U2l6ZSYgcGFnZVNpemVJblBpeGVscykKIHsKICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRl
TGF5b3V0KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmggYi9XZWJD
b3JlL3BhZ2UvUHJpbnRDb250ZXh0LmgKaW5kZXggMTg5MTE0NGY5NDJkMzlhZjdhMTJkMDA3YTQx
ZGVmMzBkZTU0ZDg0MC4uOTM5OGE2ZWJkMDg4ZTg2MDEzZjI0ZjY2NTI5MjU2NzQwOWUyNDg1MSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5oCisrKyBiL1dlYkNvcmUvcGFn
ZS9QcmludENvbnRleHQuaApAQCAtMzEsNiArMzEsNyBAQCBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFz
cyBGbG9hdFNpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnRSZWN0OworY2xh
c3MgU3RyaW5nOwogCiBjbGFzcyBQcmludENvbnRleHQgewogcHVibGljOgpAQCAtNTQsNiArNTUs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBVc2VkIGJ5IGxheW91dCB0ZXN0cy4KICAgICBzdGF0aWMg
aW50IHBhZ2VOdW1iZXJGb3JFbGVtZW50KEVsZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmIHBhZ2VT
aXplSW5QaXhlbHMpOworICAgIHN0YXRpYyBTdHJpbmcgcGFnZVByb3BlcnR5KEZyYW1lKiBmcmFt
ZSwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBpbnQgcGFnZU51bWJlcik7CiAgICAgc3RhdGlj
IGludCBudW1iZXJPZlBhZ2VzKEZyYW1lKiwgY29uc3QgRmxvYXRTaXplJiBwYWdlU2l6ZUluUGl4
ZWxzKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA1MjAxZTFmNTNiMTgxNDQ4MTAzYjljM2E0ZWU1N2Jl
YzJiZTU0ODMzLi45ZjBiYjQ3MTM4YmIxMzBkNjgxNDE5OGFiY2E1ZDRhZGVhMDYwODlkIDEwMDY0
NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDEwLTA2LTA3ICBZdXpvIEZ1amlzaGltYSAgPHl1em9AZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnQgcmVuZGVyIHN0eWxlIHNlbGVjdGlvbiBmb3IgcGFnZXMgdG8gc3VwcG9ydCBDU1Mz
IFBhZ2VkIE1lZGlhLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzU5NjEKKworICAgICAgICAqIE1pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaDoKKyAgICAg
ICAgKiBNaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBwYWdl
UHJvcGVydHk6cHJvcGVydHlOYW1lOl0pOgorCiAyMDEwLTA2LTA4ICBBbnRvbmlvIEdvbWVzICA8
dG9uaWtpdG9vQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaSBh
bmQgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRp
c3RpY3MuaCBiL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5oCmluZGV4IGExMWMw
NjQ0OGM4YzdmNWRhODJiMGYyZWM2NjVlNTViZTI1Mzg5YmMuLmM3OWM5NmRmMWEwYzA5NGVkMzZj
ZDgzY2ZhNDE4YjgzMTQ4MTJmZDggMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvTWlzYy9XZWJDb3Jl
U3RhdGlzdGljcy5oCisrKyBiL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5oCkBA
IC04Nyw0ICs4Nyw1IEBACiAtIChOU1N0cmluZyAqKWNvdW50ZXJWYWx1ZUZvckVsZW1lbnQ6KERP
TUVsZW1lbnQqKWVsZW1lbnQ7CiAtIChpbnQpcGFnZU51bWJlckZvckVsZW1lbnQ6KERPTUVsZW1l
bnQqKWVsZW1lbnQ6KGZsb2F0KXBhZ2VXaWR0aEluUGl4ZWxzOihmbG9hdClwYWdlSGVpZ2h0SW5Q
aXhlbHM7CiAtIChpbnQpbnVtYmVyT2ZQYWdlczooZmxvYXQpcGFnZVdpZHRoSW5QaXhlbHM6KGZs
b2F0KXBhZ2VIZWlnaHRJblBpeGVsczsKKy0gKE5TU3RyaW5nICopcGFnZVByb3BlcnR5Oihjb25z
dCBjaGFyKilwcm9wZXJ0eU5hbWU6KGludClwYWdlTnVtYmVyOwogQGVuZApkaWZmIC0tZ2l0IGEv
V2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tIGIvV2ViS2l0L21hYy9NaXNjL1dl
YkNvcmVTdGF0aXN0aWNzLm1tCmluZGV4IGMzZmMyM2VjZjQ4NzE3MTU0MDU3NjFiMWM0YTA0YzU0
YzM5NGMwNTguLjg5ZjcwZmQ5YzczMjZhMzdkYWVmNWM1ODY0NGUzOTcyMTI0YzZiZjUgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQorKysgYi9XZWJLaXQv
bWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KQEAgLTI3NSw0ICsyNzUsOSBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKICAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpudW1iZXJPZlBhZ2Vz
KF9wcml2YXRlLT5jb3JlRnJhbWUsIEZsb2F0U2l6ZShwYWdlV2lkdGhJblBpeGVscywgcGFnZUhl
aWdodEluUGl4ZWxzKSk7CiB9CiAKKy0gKE5TU3RyaW5nICopcGFnZVByb3BlcnR5Oihjb25zdCBj
aGFyICopcHJvcGVydHlOYW1lOihpbnQpcGFnZU51bWJlcgoreworICAgIHJldHVybiBQcmludENv
bnRleHQ6OnBhZ2VQcm9wZXJ0eShfcHJpdmF0ZS0+Y29yZUZyYW1lLCBwcm9wZXJ0eU5hbWUsIHBh
Z2VOdW1iZXIpOworfQorCiBAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cg
Yi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggYWMzMzU3YWE2MmFlMTNkYmM2NWJhM2RhNTUz
ZmRlYmYyMTVlNWUyMC4uMzdmYjBhMGQyZDM4ZjFjYTM3OWJjMGFjYmQ0ZTc0Mzg3Yjg5ZDk2OSAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEwLTA2LTA3ICBZdXpvIEZ1amlzaGltYSAgPHl1em9A
Z29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnQgcmVuZGVyIHN0eWxlIHNlbGVjdGlvbiBmb3IgcGFnZXMgdG8gc3VwcG9y
dCBDU1MzIFBhZ2VkIE1lZGlhLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzU5NjEKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKHBhcnNlUGFnZVByb3BlcnR5UGFyYW1ldGVycyk6Cisg
ICAgICAgIChwYWdlUHJvcGVydHlDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0
Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlUHJv
cGVydHkpOgorCiAyMDEwLTA2LTA4ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdt
YWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjA4NzguCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAK
aW5kZXggYjk2YTljOWM1NmE0MzcxNTE3ZWZmN2U1ZWIwOWUyZGI5MmE4MWZiOC4uMzU2NDAwMThl
ZDBhOWMwZWE5ZGFlOWQzYzEyYmY3ZDI4MGI5N2MwMSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtNTIxLDYgKzUyMSwz
MiBAQCBzdGF0aWMgYm9vbCBwYXJzZVBhZ2VQYXJhbWV0ZXJzKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBpbnQgYXJndW1lbnRDb3VudCwgY29uc3QgSgogICAgIHJldHVybiB0cnVlOwogfQogCisvLyBD
YWxsZXIgbmVlZHMgdG8gZGVsZXRlW10gcHJvcGVydHlOYW1lLgorc3RhdGljIGJvb2wgcGFyc2VQ
YWdlUHJvcGVydHlQYXJhbWV0ZXJzKEpTQ29udGV4dFJlZiBjb250ZXh0LCBpbnQgYXJndW1lbnRD
b3VudCwgY29uc3QgSlNWYWx1ZVJlZiogYXJndW1lbnRzLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24s
IGNoYXIqJiBwcm9wZXJ0eU5hbWUsIGludCYgcGFnZU51bWJlcikKK3sKKyAgICBwYWdlTnVtYmVy
ID0gMDsKKyAgICBzd2l0Y2ggKGFyZ3VtZW50Q291bnQpIHsKKyAgICBjYXNlIDI6CisgICAgICAg
IHBhZ2VOdW1iZXIgPSBzdGF0aWNfY2FzdDxmbG9hdD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQs
IGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKSk7CisgICAgICAgIGlmICgqZXhjZXB0aW9uKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAvLyBGYWxsIHRocm91Z2guCisgICAgY2Fz
ZSAxOiB7CisgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwcm9wZXJ0eU5hbWVTdHJp
bmcoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNl
cHRpb24pKTsKKyAgICAgICAgaWYgKCpleGNlcHRpb24pCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgc2l6ZV90IG1heExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhD
U3RyaW5nU2l6ZShwcm9wZXJ0eU5hbWVTdHJpbmcuZ2V0KCkpOworICAgICAgICBwcm9wZXJ0eU5h
bWUgPSBuZXcgY2hhclttYXhMZW5ndGggKyAxXTsKKyAgICAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0
cmluZyhwcm9wZXJ0eU5hbWVTdHJpbmcuZ2V0KCksIHByb3BlcnR5TmFtZSwgbWF4TGVuZ3RoICsg
MSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBjYXNlIDA6CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwogc3RhdGljIEpTVmFsdWVSZWYg
cGFnZU51bWJlckZvckVsZW1lbnRCeUlkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQogewogICAgIGZsb2F0IHBhZ2VXaWR0aEluUGl4ZWxzID0gMDsKQEAgLTU0OCw2ICs1NzQs
MjAgQEAgc3RhdGljIEpTVmFsdWVSZWYgbnVtYmVyT2ZQYWdlc0NhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGkKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1i
ZXIoY29udGV4dCwgY29udHJvbGxlci0+bnVtYmVyT2ZQYWdlcyhwYWdlV2lkdGhJblBpeGVscywg
cGFnZUhlaWdodEluUGl4ZWxzKSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHBhZ2VQcm9wZXJ0
eUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNP
YmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBjaGFyKiBwcm9w
ZXJ0eU5hbWUgPSAwOworICAgIGludCBwYWdlTnVtYmVyID0gMDsKKyAgICBpZiAoIXBhcnNlUGFn
ZVByb3BlcnR5UGFyYW1ldGVycyhjb250ZXh0LCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMsIGV4
Y2VwdGlvbiwgcHJvcGVydHlOYW1lLCBwYWdlTnVtYmVyKSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0
UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IEpTVmFsdWVNYWtl
U3RyaW5nKGNvbnRleHQsIGNvbnRyb2xsZXItPnBhZ2VQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIHBh
Z2VOdW1iZXIpLmdldCgpKTsKKworICAgIGRlbGV0ZVtdIHByb3BlcnR5TmFtZTsKKyAgICByZXR1
cm4gdmFsdWU7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHF1ZXVlQmFja05hdmlnYXRpb25DYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0
UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFy
Z3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIG1hYyAmIHdp
bmRvd3MgaW1wbGVtZW50YXRpb24KQEAgLTE2MDEsNiArMTY0MSw3IEBAIEpTU3RhdGljRnVuY3Rp
b24qIExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJu
dW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMiLCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnNDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJvdmVycmlkZVByZWZlcmVuY2UiLCBvdmVycmlkZVByZWZl
cmVuY2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJwYWdlTnVtYmVyRm9yRWxlbWVudEJ5
SWQiLCBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7
ICJwYWdlUHJvcGVydHkiLCBwYWdlUHJvcGVydHlDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJwYXRoVG9Mb2NhbFJlc291cmNlIiwgcGF0aFRvTG9jYWxSZXNvdXJjZUNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgInBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkIiwgcGF1
c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQiLCBwYXVzZVRyYW5zaXRp
b25BdFRpbWVPbkVsZW1lbnRXaXRoSWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggOGZmMzhkMTA5
MDEwZjRlOTY4MmRhMmI4N2U4ZWYxODZjNDExYzJhOC4uMTRlYzEzMGM1ZTA0YjEzYjMxYjRmZTYw
NjU1ODFjMzczYWYzZjM0OSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC02Miw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICBpbnQg
bnVtYmVyT2ZQYWdlcyhmbG9hdCBwYWdlV2lkdGhJblBpeGVscywgZmxvYXQgcGFnZUhlaWdodElu
UGl4ZWxzKTsKICAgICB2b2lkIG92ZXJyaWRlUHJlZmVyZW5jZShKU1N0cmluZ1JlZiBrZXksIEpT
U3RyaW5nUmVmIHZhbHVlKTsKICAgICBpbnQgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKEpTU3Ry
aW5nUmVmIGlkLCBmbG9hdCBwYWdlV2lkdGhJblBpeGVscywgZmxvYXQgcGFnZUhlaWdodEluUGl4
ZWxzKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGFnZVByb3BlcnR5KGNvbnN0IGNo
YXIqIHByb3BlcnR5TmFtZSwgaW50IHBhZ2VOdW1iZXIpIGNvbnN0OwogICAgIEpTU3RyaW5nUmVm
IHBhdGhUb0xvY2FsUmVzb3VyY2UoSlNDb250ZXh0UmVmLCBKU1N0cmluZ1JlZiB1cmwpOwogICAg
IHZvaWQgcXVldWVCYWNrTmF2aWdhdGlvbihpbnQgaG93RmFyQmFja3dhcmQpOwogICAgIHZvaWQg
cXVldWVGb3J3YXJkTmF2aWdhdGlvbihpbnQgaG93RmFyRm9yd2FyZCk7CmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3Bw
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3Rr
LmNwcAppbmRleCBlOGI4NjI3NTg1MmRjYjVjZTFkMTlkNmRhNWZiYTUxYTAxNTQ5ZDYzLi4yYmRk
ODBjN2I0MzljYmYxODFhMTgzZDg0MWNmMTFkZjA0ZTVhODVmIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBi
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5j
cHAKQEAgLTE3MSw2ICsxNzEsMTIgQEAgaW50IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJP
ZlBhZ2VzKGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCkKICAgICByZXR1cm4gd2Vi
a2l0X3dlYl9mcmFtZV9udW1iZXJfb2ZfcGFnZXMobWFpbkZyYW1lLCBwYWdlV2lkdGgsIHBhZ2VI
ZWlnaHQpOwogfQogCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnBhZ2VQcm9wZXJ0eShjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlTnVtYmVy
KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+KCk7Cit9CisKIHNpemVfdCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6d2Vi
SGlzdG9yeUl0ZW1Db3VudCgpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudApkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFj
Lm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVy
TWFjLm1tCmluZGV4IGViMDEwOTAwMjZiN2Y5ZjZhYzNjZjQzYmI1NmYwM2NkMjYyNzM5YzguLmVl
MTA3MDMzNjYwMjAxNGMzYTM1NDgyNjczMjY1ZDdmZTk0MjUyZDYgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW0KQEAgLTIxMiw2ICsyMTIsMTIgQEAgaW50IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVt
YmVyRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQsIGZsb2F0IHBhZ2VXaWQKICAgICByZXR1
cm4gW21haW5GcmFtZSBwYWdlTnVtYmVyRm9yRWxlbWVudDplbGVtZW50OnBhZ2VXaWR0aEluUGl4
ZWxzOnBhZ2VIZWlnaHRJblBpeGVsc107CiB9CiAKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZVByb3BlcnR5KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFt
ZSwgaW50IHBhZ2VOdW1iZXIpIGNvbnN0Cit7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IHByb3BlcnR5VmFsdWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmlu
Z1JlZilbbWFpbkZyYW1lIHBhZ2VQcm9wZXJ0eTpwcm9wZXJ0eU5hbWU6cGFnZU51bWJlcl0pKTsK
KyAgICByZXR1cm4gcHJvcGVydHlWYWx1ZTsKK30KKwogaW50IExheW91dFRlc3RDb250cm9sbGVy
OjpudW1iZXJPZlBhZ2VzKGZsb2F0IHBhZ2VXaWR0aEluUGl4ZWxzLCBmbG9hdCBwYWdlSGVpZ2h0
SW5QaXhlbHMpCiB7CiAgICAgcmV0dXJuIFttYWluRnJhbWUgbnVtYmVyT2ZQYWdlczpwYWdlV2lk
dGhJblBpeGVsczpwYWdlSGVpZ2h0SW5QaXhlbHNdOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXgg
YzcwYjUxN2ZlYmY3NDA2YjE1MmZjZmNjNDA0NDA1YjY2ZjcwN2RiYS4uYjJhMzQ1YjUwZTc4NWI1
NWI1YjFhOTlmMzY3YTc5NWQ0YjkwYzJhNyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAorKysgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCkBAIC0xMjM3
LDYgKzEyMzcsMTIgQEAgaW50IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBhZ2VzKGZs
b2F0IHBhZ2VXaWR0aEluUGl4ZWxzLCBmbG9hdCBwYWdlSGVpZ2gKICAgICByZXR1cm4gcGFnZU51
bWJlcjsKIH0KIAorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVy
OjpwYWdlUHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBpbnQgcGFnZU51bWJlcikg
Y29uc3QKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgcmV0dXJuIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPigpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjph
cGlUZXN0TmV3V2luZG93RGF0YUxvYWRCYXNlVVJMKEpTU3RyaW5nUmVmIHV0ZjhEYXRhLCBKU1N0
cmluZ1JlZiBiYXNlVVJMKQogewogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58333</attachid>
            <date>2010-06-09 23:36:00 -0700</date>
            <delta_ts>2010-06-09 23:51:02 -0700</delta_ts>
            <desc>Add a test for zoom, to confirm the necessity of calling updateFont().</desc>
            <filename>bug-35961-20100609233558.patch</filename>
            <type>text/plain</type>
            <size>35397</size>
            <attacher name="Yuzo Fujishima">yuzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNjJjNTIwOWQwMzEwZWFjYmUyMDc0NjY2NWZhODc3ZDRkNWY0MTRmLi44YmU2YzY5
YTE1YWVjZWY1MmQyYzRhYmMxMTc3MDA2YTFmOTljZjZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDYtMDcgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCByZW5kZXIg
c3R5bGUgc2VsZWN0aW9uIGZvciBwYWdlcyB0byBzdXBwb3J0IENTUzMgUGFnZWQgTWVkaWEuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTk2MQorCisg
ICAgICAgICogcHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHByaW50aW5nL3BhZ2UtcnVsZS1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCisK
IDIwMTAtMDUtMTggIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFNoaW5pY2hpcm8gSGFtYWppLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
cmludGluZy9wYWdlLXJ1bGUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTY1
YTRiNjI1MTBiOTk5OTk2MTk1NGZmNmY3ZjM5NDQ3NWM5ODhiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw1NSBAQAorVGhpcyB0ZXN0cyBwYWdlIHN0eWxlIHNlbGVjdGlvbi4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0RlZmF1bHQgbWFyZ2luIGlzIDFpbiA9IDk2cHguCitQ
QVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAwKSBp
cyAiOTYiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxl
ZnQnLCAxKSBpcyAiOTYiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgn
bWFyZ2luLWxlZnQnLCAyKSBpcyAiOTYiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQ
cm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAzKSBpcyAiOTYiCitQQVNTIGxheW91dFRlc3RDb250cm9s
bGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCA0KSBpcyAiOTYiCitTZXQgbWFyZ2luIHRv
IDIwMHB4IHZpYSB1c2VyIHN0eWxlIHNoZWV0LgorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5w
YWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMCkgaXMgIjIwMCIKK1BBU1MgbGF5b3V0VGVzdENv
bnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDEpIGlzICIyMDAiCitQQVNTIGxh
eW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAyKSBpcyAiMjAw
IgorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0Jywg
MykgaXMgIjIwMCIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJn
aW4tbGVmdCcsIDQpIGlzICIyMDAiCitTZXQgbWFyZ2luIHRvIDEwMHB4LgorUEFTUyBsYXlvdXRU
ZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMCkgaXMgIjEwMCIKK1BB
U1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDEpIGlz
ICIxMDAiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxl
ZnQnLCAyKSBpcyAiMTAwIgorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHko
J21hcmdpbi1sZWZ0JywgMykgaXMgIjEwMCIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFn
ZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDQpIGlzICIxMDAiCitTZXQgbWFyZ2luIGZvciByaWdo
dCBwYWdlcyB0byA1MHB4LiBUaGUgZmlyc3QgcGFnZSBpcyBhIHJpZ2h0IHBhZ2UuCitQQVNTIGxh
eW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAwKSBpcyAiNTAi
CitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAx
KSBpcyAiMTAwIgorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdp
bi1sZWZ0JywgMikgaXMgIjUwIgorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVy
dHkoJ21hcmdpbi1sZWZ0JywgMykgaXMgIjEwMCIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIu
cGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDQpIGlzICI1MCIKK1NldCBtYXJnaW4gZm9yIGxl
ZnQgcGFnZXMgdG8gNzVweC4KK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5
KCdtYXJnaW4tbGVmdCcsIDApIGlzICI1MCIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFn
ZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDEpIGlzICI3NSIKK1BBU1MgbGF5b3V0VGVzdENvbnRy
b2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDIpIGlzICI1MCIKK1BBU1MgbGF5b3V0
VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDMpIGlzICI3NSIKK1BB
U1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDQpIGlz
ICI1MCIKK1NldCBtYXJnaW4gZm9yIHRoZSBmaXJzdCBwYWdlIHRvIDEyNXB4LgorUEFTUyBsYXlv
dXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMCkgaXMgIjEyNSIK
K1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDEp
IGlzICI3NSIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4t
bGVmdCcsIDIpIGlzICI1MCIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5
KCdtYXJnaW4tbGVmdCcsIDMpIGlzICI3NSIKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFn
ZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDQpIGlzICI1MCIKK0NoYW5nZSB0aGUgZG9jdW1lbnQg
ZGlyZWN0aW9uIHRvIFJUTC4gVGhpcyBtYWtlcyB0aGUgZmlyc3QgcGFnZSBhIGxlZnQgcGFnZS4K
K1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDAp
IGlzICIxMjUiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2lu
LWxlZnQnLCAxKSBpcyAiNTAiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0
eSgnbWFyZ2luLWxlZnQnLCAyKSBpcyAiNzUiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBh
Z2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAzKSBpcyAiNTAiCitQQVNTIGxheW91dFRlc3RDb250
cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCA0KSBpcyAiNzUiCitDaGVjayBsaW5l
IGhlaWdodCBvdmVycmlkZS4KK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5
KCdsaW5lLWhlaWdodCcsIDApIGlzICIxODAiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBh
Z2VQcm9wZXJ0eSgnZm9udC1mYW1pbHknLCAwKSBpcyAiQXJpYWwiCitQQVNTIGxheW91dFRlc3RD
b250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnZm9udC1zaXplJywgMCkgaXMgIjMwIgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVsZS1zZWxlY3Rpb24uaHRtbCBiL0xheW91dFRlc3Rz
L3ByaW50aW5nL3BhZ2UtcnVsZS1zZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDM4YWE5MDVk
ZTQ1YmFmMjc2ZDUzNzU2NDc1ZjIwYzc5ZDljYzZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsOTQgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWwgaWQ9Imh0bWxfZWxlbWVudCI+Cis8aGVhZCBpZD0iaGVh
ZF9lbGVtZW50Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAg
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgcGFnZSBzdHlsZSBzZWxlY3Rpb24uIik7CisKKyAgICBm
dW5jdGlvbiBhcHBlbmRTdHlsZShzdHlsZVN0cmluZykKKyAgICB7CisgICAgICAgIHZhciBzdHls
ZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOworICAgICAgICBzdHls
ZUVsZW1lbnQuaW5uZXJIVE1MID0gc3R5bGVTdHJpbmc7CisgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJoZWFkX2VsZW1lbnQiKS5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpOworICAg
IH0KKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICBkZWJ1ZygiRGVmYXVsdCBtYXJnaW4gaXMg
MWluID0gOTZweC4iKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0
VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDApIiwgIjk2Iik7Cisg
ICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBh
Z2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAxKSIsICI5NiIpOworICAgICAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdp
bi1sZWZ0JywgMikiLCAiOTYiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
bGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDMpIiwgIjk2
Iik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9s
bGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCA0KSIsICI5NiIpOworCisgICAgICAgICAg
ICBkZWJ1ZygiU2V0IG1hcmdpbiB0byAyMDBweCB2aWEgdXNlciBzdHlsZSBzaGVldC4iKTsKKyAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmFkZFVzZXJTdHlsZVNoZWV0KCJAcGFnZSB7
IG1hcmdpbjoyMDBweDsgfSIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJs
YXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMCkiLCAiMjAw
Iik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9s
bGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAxKSIsICIyMDAiKTsKKyAgICAgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5
KCdtYXJnaW4tbGVmdCcsIDIpIiwgIjIwMCIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0Jywg
MykiLCAiMjAwIik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRl
c3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCA0KSIsICIyMDAiKTsKKwor
ICAgICAgICAgICAgZGVidWcoIlNldCBtYXJnaW4gdG8gMTAwcHguIik7CisgICAgICAgICAgICBh
cHBlbmRTdHlsZSgiQHBhZ2UgeyBtYXJnaW46MTAwcHg7IH0iKTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJn
aW4tbGVmdCcsIDApIiwgIjEwMCIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMSkiLCAi
MTAwIik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250
cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAyKSIsICIxMDAiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3Bl
cnR5KCdtYXJnaW4tbGVmdCcsIDMpIiwgIjEwMCIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0
JywgNCkiLCAiMTAwIik7CisKKyAgICAgICAgICAgIGRlYnVnKCJTZXQgbWFyZ2luIGZvciByaWdo
dCBwYWdlcyB0byA1MHB4LiBUaGUgZmlyc3QgcGFnZSBpcyBhIHJpZ2h0IHBhZ2UuIik7CisgICAg
ICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2UgOnJpZ2h0IHsgbWFyZ2luOjUwcHg7IH0iKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFn
ZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDApIiwgIjUwIik7CisgICAgICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2lu
LWxlZnQnLCAxKSIsICIxMDAiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
bGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDIpIiwgIjUw
Iik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9s
bGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAzKSIsICIxMDAiKTsKKyAgICAgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5
KCdtYXJnaW4tbGVmdCcsIDQpIiwgIjUwIik7CisKKyAgICAgICAgICAgIGRlYnVnKCJTZXQgbWFy
Z2luIGZvciBsZWZ0IHBhZ2VzIHRvIDc1cHguIik7CisgICAgICAgICAgICBhcHBlbmRTdHlsZSgi
QHBhZ2UgOmxlZnQgeyBtYXJnaW46NzVweDsgfSIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0
JywgMCkiLCAiNTAiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0
VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDEpIiwgIjc1Iik7Cisg
ICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBh
Z2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAyKSIsICI1MCIpOworICAgICAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21hcmdp
bi1sZWZ0JywgMykiLCAiNzUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
bGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDQpIiwgIjUw
Iik7CisKKyAgICAgICAgICAgIGRlYnVnKCJTZXQgbWFyZ2luIGZvciB0aGUgZmlyc3QgcGFnZSB0
byAxMjVweC4iKTsKKyAgICAgICAgICAgIGFwcGVuZFN0eWxlKCJAcGFnZSA6Zmlyc3QgeyBtYXJn
aW46MTI1cHg7IH0iKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0
VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDApIiwgIjEyNSIpOwor
ICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5w
YWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgMSkiLCAiNzUiKTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJn
aW4tbGVmdCcsIDIpIiwgIjUwIik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAzKSIsICI3
NSIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJv
bGxlci5wYWdlUHJvcGVydHkoJ21hcmdpbi1sZWZ0JywgNCkiLCAiNTAiKTsKKworICAgICAgICAg
ICAgZGVidWcoIkNoYW5nZSB0aGUgZG9jdW1lbnQgZGlyZWN0aW9uIHRvIFJUTC4gVGhpcyBtYWtl
cyB0aGUgZmlyc3QgcGFnZSBhIGxlZnQgcGFnZS4iKTsKKyAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJodG1sX2VsZW1lbnQiKS5zZXRBdHRyaWJ1dGUoImRpciIsICJydGwiKTsK
KyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIu
cGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDApIiwgIjEyNSIpOworICAgICAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ21h
cmdpbi1sZWZ0JywgMSkiLCAiNTAiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVByb3BlcnR5KCdtYXJnaW4tbGVmdCcsIDIpIiwg
Ijc1Iik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250
cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnbWFyZ2luLWxlZnQnLCAzKSIsICI1MCIpOworICAgICAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVy
dHkoJ21hcmdpbi1sZWZ0JywgNCkiLCAiNzUiKTsKKworICAgICAgICAgICAgZGVidWcoIkNoZWNr
IGxpbmUgaGVpZ2h0IG92ZXJyaWRlLiIpOworICAgICAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdl
IHsgbGluZS1oZWlnaHQ6MWVtOyB9Iik7CisgICAgICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2Ug
eyBmb250LWZhbWlseTpGdXR1cmE7IH0iKTsKKyAgICAgICAgICAgIGFwcGVuZFN0eWxlKCJAcGFn
ZSB7IGZvbnQ6MTVweC82ZW0gQXJpYWw7IH0iKTsKKyAgICAgICAgICAgIGFwcGVuZFN0eWxlKCJA
cGFnZSB7IHpvb206MjAwJTsgfSIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkoJ2xpbmUtaGVpZ2h0JywgMCkiLCAi
MTgwIik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250
cm9sbGVyLnBhZ2VQcm9wZXJ0eSgnZm9udC1mYW1pbHknLCAwKSIsICJBcmlhbCIpOworICAgICAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlUHJv
cGVydHkoJ2ZvbnQtc2l6ZScsIDApIiwgIjMwIik7CisgICAgICAgIH0KKyAgICB9IGVsc2Ugewor
ICAgICAgICB0ZXN0RmFpbGVkKCJUaGlzIHRlc3QgY2FuIGJlIHJ1biBvbmx5IHdpdGggd2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyIik7CisgICAgfQorICAgIHZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGE3YzM2YjU4ZDU1
NTQwMzk5YTRiMzI0MGJhYWMyYTU5ZjBjNWM5MS4uOWZiNDdmODgxMjEzOTNlMDBlMDg2MWE4YjRh
M2Q3OWJjMzY4YjExZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxMC0wNi0wNyAgWXV6byBGdWppc2hpbWEg
IDx5dXpvQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50IHJlbmRlciBzdHlsZSBzZWxlY3Rpb24gZm9yIHBhZ2VzIHRv
IHN1cHBvcnQgQ1NTMyBQYWdlZCBNZWRpYS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM1OTYxCisKKyAgICAgICAgVGVzdDogcHJpbnRpbmcvcGFnZS1y
dWxlLXNlbGVjdGlvbi5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmJhc2UuZXhwOgorICAgICAg
ICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzcGVjaWZpY2l0eSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTZWxlY3Rvcjo6c3BlY2lmaWNpdHlGb3JQYWdlKToKKyAgICAgICAgKiBjc3MvQ1NT
U2VsZWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpDU1NTZWxlY3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6aXNGb3JQYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1NlbGVjdG9yOjpzZXRGb3JQYWdlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZv
clBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hQYWdlUnVs
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hQYWdlUnVsZXNG
b3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmlzTGVmdFBhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6aXNGaXJzdFBhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cGFnZU5hbWUpOgorICAgICAgICAqIGNz
cy9DU1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
Ojppc1JpZ2h0UGFnZSk6CisgICAgICAgICogY3NzL2h0bWwuY3NzOgorICAgICAgICAoQHBhZ2Up
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6c3R5bGVGb3JQYWdlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBw
YWdlL1ByaW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OnBh
Z2VQcm9wZXJ0eSk6CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQuaDoKKwogMjAxMC0wNS0x
OCAgWXV6byBGdWppc2hpbWEgIDx5dXpvQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU2hpbmljaGlybyBIYW1hamkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuYmFzZS5l
eHAgYi9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKaW5kZXggMjk3MDRmYjQ1NDk4MzYwNWYyNzNj
YzFhNmQ1NzUzOTU1MDRhNTYxZi4uMGYxNjVhYTAzNGZiYzQ3NDE5YjdhOTdmYzgwNGNlZDc0NzNj
MmY2ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS5iYXNlLmV4cApAQCAtMjQ4LDYgKzI0OCw3IEBAIF9fWk43V2ViQ29yZTEySWNvbkRh
dGFiYXNlNG9wZW5FUktOU182U3RyaW5nRQogX19aTjdXZWJDb3JlMTJJY29uRGF0YWJhc2U1Y2xv
c2VFdgogX19aTjdXZWJDb3JlMTJJY29uRGF0YWJhc2U5c2V0Q2xpZW50RVBOU18xOEljb25EYXRh
YmFzZUNsaWVudEUKIF9fWk43V2ViQ29yZTEyUGx1Z2luV2lkZ2V0MTRpbnZhbGlkYXRlUmVjdEVS
S05TXzdJbnRSZWN0RQorX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQxMnBhZ2VQcm9wZXJ0eUVQ
TlNfNUZyYW1lRVBLY2kKIF9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0MTNudW1iZXJPZlBhZ2Vz
RVBOU181RnJhbWVFUktOU185RmxvYXRTaXplRQogX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQy
MHBhZ2VOdW1iZXJGb3JFbGVtZW50RVBOU183RWxlbWVudEVSS05TXzlGbG9hdFNpemVFCiBfX1pO
N1dlYkNvcmUxMlByaW50Q29udGV4dDI4Y29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZUVSS05T
XzlGbG9hdFNpemVFYgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IGIvV2Vi
Q29yZS9jc3MvQ1NTR3JhbW1hci55CmluZGV4IDA2YzZkMDE4NjZkYzc0NWNkNDgwOTJlZjk5MWRk
NmY2NjRjNjhmNTguLjI2YjJiYTg2YmQwZDM4Yjg2MTc3MTRjMTk5NjcyNDEyYjg1MDE1NjggMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQorKysgYi9XZWJDb3JlL2Nzcy9DU1NH
cmFtbWFyLnkKQEAgLTc3OCwxOSArNzc4LDI1IEBAIHBhZ2Vfc2VsZWN0b3I6CiAgICAgICAgIENT
U1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgICQk
ID0gcC0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwogICAgICAgICAkJC0+bV90YWcgPSBRdWFs
aWZpZWROYW1lKG51bGxBdG9tLCAkMSwgcC0+bV9kZWZhdWx0TmFtZXNwYWNlKTsKKyAgICAgICAg
JCQtPnNldEZvclBhZ2UoKTsKICAgICB9CiAgICAgfCBJREVOVCBwc2V1ZG9fcGFnZSB7CiAgICAg
ICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAg
ICAgICQkID0gJDI7Ci0gICAgICAgIGlmICgkJCkKKyAgICAgICAgaWYgKCQkKSB7CiAgICAgICAg
ICAgICAkJC0+bV90YWcgPSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMSwgcC0+bV9kZWZhdWx0
TmFtZXNwYWNlKTsKKyAgICAgICAgICAgICQkLT5zZXRGb3JQYWdlKCk7CisgICAgICAgIH0KICAg
ICB9CiAgICAgfCBwc2V1ZG9fcGFnZSB7CiAgICAgICAgICQkID0gJDE7CisgICAgICAgIGlmICgk
JCkKKyAgICAgICAgICAgICQkLT5zZXRGb3JQYWdlKCk7CiAgICAgfQogICAgIHwgLyogZW1wdHkg
Ki8gewogICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJz
ZXIpOwogICAgICAgICAkJCA9IHAtPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAg
JCQtPnNldEZvclBhZ2UoKTsKICAgICB9CiAgICAgOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nz
cy9DU1NTZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXggZTQ1
YmY0YzdhYzI0NjQ1YWExYzgyMDQyMWI4YWQ0YmU0ZjQ3YzM2Zi4uOGU5OGEzZmRiNWFmZTMxYzFl
MGI0NTlhMmIxMzRhOTUzZTZjZDJkOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3IuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcApAQCAtMzcsNiArMzcsOSBA
QCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiB1bnNpZ25lZCBpbnQgQ1NTU2VsZWN0b3I6
OnNwZWNpZmljaXR5KCkKIHsKKyAgICBpZiAobV9pc0ZvclBhZ2UpCisgICAgICAgIHJldHVybiBz
cGVjaWZpY2l0eUZvclBhZ2UoKTsKKwogICAgIC8vIEZJWE1FOiBQc2V1ZG8tZWxlbWVudHMgYW5k
IHBzZXVkby1jbGFzc2VzIGRvIG5vdCBoYXZlIHRoZSBzYW1lIHNwZWNpZmljaXR5LiBUaGlzIGZ1
bmN0aW9uCiAgICAgLy8gaXNuJ3QgcXVpdGUgY29ycmVjdC4KICAgICBpbnQgcyA9IChtX3RhZy5s
b2NhbE5hbWUoKSA9PSBzdGFyQXRvbSA/IDAgOiAxKTsKQEAgLTY2LDYgKzY5LDI3IEBAIHVuc2ln
bmVkIGludCBDU1NTZWxlY3Rvcjo6c3BlY2lmaWNpdHkoKQogICAgIHJldHVybiBzICYgMHhmZmZm
ZmY7CiB9CiAKK3Vuc2lnbmVkIENTU1NlbGVjdG9yOjpzcGVjaWZpY2l0eUZvclBhZ2UoKQorewor
ICAgIC8vIFNlZSBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MzLXBhZ2UvI2Nhc2NhZGluZy1h
bmQtcGFnZS1jb250ZXh0CisgICAgdW5zaWduZWQgcyA9IChtX3RhZy5sb2NhbE5hbWUoKSA9PSBz
dGFyQXRvbSA/IDAgOiA0KTsKKworICAgIHN3aXRjaCAocHNldWRvVHlwZSgpKSB7CisgICAgY2Fz
ZSBQc2V1ZG9GaXJzdFBhZ2U6CisgICAgICAgIHMgKz0gMjsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQc2V1ZG9MZWZ0UGFnZToKKyAgICBjYXNlIFBzZXVkb1JpZ2h0UGFnZToKKyAgICAgICAg
cyArPSAxOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBzZXVkb05vdFBhcnNlZDoKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgfQorICAgIHJldHVybiBzOworfQorCiBQc2V1ZG9JZCBDU1NTZWxlY3Rvcjo6cHNldWRvSWQo
UHNldWRvVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3IuaCBiL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKaW5kZXgg
MTFkMzBiMTk5MWM1ODM5YWMyMzU3NmJlNTNiMmRiZDBkMGY0ZTMyOS4uZWIwNzA3OGVmZDQ3NGNm
NGE4OGZiNDY0YzgyNjU2ZGNjZDcxZDQ3MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3IuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCkBAIC0zOSw2ICszOSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9wYXJzZWROdGgoZmFsc2UpCiAg
ICAgICAgICAgICAsIG1faXNMYXN0SW5TZWxlY3Rvckxpc3QoZmFsc2UpCiAgICAgICAgICAgICAs
IG1faGFzUmFyZURhdGEoZmFsc2UpCisgICAgICAgICAgICAsIG1faXNGb3JQYWdlKGZhbHNlKQog
ICAgICAgICAgICAgLCBtX3RhZyhhbnlRTmFtZSgpKQogICAgICAgICB7CiAgICAgICAgIH0KQEAg
LTUwLDYgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX3BhcnNl
ZE50aChmYWxzZSkKICAgICAgICAgICAgICwgbV9pc0xhc3RJblNlbGVjdG9yTGlzdChmYWxzZSkK
ICAgICAgICAgICAgICwgbV9oYXNSYXJlRGF0YShmYWxzZSkKKyAgICAgICAgICAgICwgbV9pc0Zv
clBhZ2UoZmFsc2UpCiAgICAgICAgICAgICAsIG1fdGFnKHFOYW1lKQogICAgICAgICB7CiAgICAg
ICAgIH0KQEAgLTI1Myw2ICsyNTUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgc2V0TGFzdEluU2VsZWN0b3JMaXN0KCkgeyBtX2lzTGFzdEluU2VsZWN0b3JMaXN0ID0gdHJ1
ZTsgfQogICAgICAgICBib29sIGlzU2ltcGxlKCkgY29uc3Q7CiAKKyAgICAgICAgYm9vbCBpc0Zv
clBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2lzRm9yUGFnZTsgfQorICAgICAgICB2b2lkIHNldEZv
clBhZ2UoKSB7IG1faXNGb3JQYWdlID0gdHJ1ZTsgfQorCiAgICAgICAgIHVuc2lnbmVkIG1fcmVs
YXRpb24gICAgICAgICAgIDogMzsgLy8gZW51bSBSZWxhdGlvbgogICAgICAgICBtdXRhYmxlIHVu
c2lnbmVkIG1fbWF0Y2ggICAgICA6IDQ7IC8vIGVudW0gTWF0Y2gKICAgICAgICAgbXV0YWJsZSB1
bnNpZ25lZCBtX3BzZXVkb1R5cGUgOiA4OyAvLyBQc2V1ZG9UeXBlCkBAIC0yNjEsNyArMjY2LDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fcGFyc2VkTnRoICAgICAgICAg
ICAgICA6IDE7IC8vIFVzZWQgZm9yIDpudGgtKiAKICAgICAgICAgYm9vbCBtX2lzTGFzdEluU2Vs
ZWN0b3JMaXN0ICAgOiAxOwogICAgICAgICBib29sIG1faGFzUmFyZURhdGEgICAgICAgICAgICA6
IDE7CisgICAgICAgIGJvb2wgbV9pc0ZvclBhZ2UgICAgICAgICAgICAgIDogMTsKIAorICAgICAg
ICB1bnNpZ25lZCBzcGVjaWZpY2l0eUZvclBhZ2UoKTsKICAgICAgICAgdm9pZCBleHRyYWN0UHNl
dWRvVHlwZSgpIGNvbnN0OwogCiAgICAgICAgIHN0cnVjdCBSYXJlRGF0YSA6IE5vbmNvcHlhYmxl
IHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggM2I4NmYwZmFjYTE5YmMwOTk0MGQ4OWNh
NWQ2OWVmYzVkNDk5YjczNS4uMDY4NzVkM2Y2NTAwNjczZDA2ODQwZTQ1M2JmMDllOWRhYTEwMGY5
ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTE1NDcsNiArMTU0NywzNiBAQCBQYXNz
UmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpwc2V1ZG9TdHlsZUZvckVsZW1l
bnQoUHNldWRvSWQgcHNldWRvLAogICAgIHJldHVybiBtX3N0eWxlLnJlbGVhc2UoKTsKIH0KIAor
UGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JQYWdlKGlu
dCBwYWdlSW5kZXgpCit7CisgICAgaW5pdEZvclN0eWxlUmVzb2x2ZShtX2NoZWNrZXIubV9kb2N1
bWVudC0+Ym9keSgpKTsKKworICAgIG1fc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7Cisg
ICAgbV9zdHlsZS0+aW5oZXJpdEZyb20obV9yb290RWxlbWVudFN0eWxlKTsKKworICAgIGNvbnN0
IGJvb2wgaXNMZWZ0ID0gaXNMZWZ0UGFnZShwYWdlSW5kZXgpOworICAgIGNvbnN0IGJvb2wgaXNG
aXJzdCA9IGlzRmlyc3RQYWdlKHBhZ2VJbmRleCk7CisgICAgY29uc3QgU3RyaW5nIHBhZ2UgPSBw
YWdlTmFtZShwYWdlSW5kZXgpOworICAgIG1hdGNoUGFnZVJ1bGVzKGRlZmF1bHRQcmludFN0eWxl
LCBpc0xlZnQsIGlzRmlyc3QsIHBhZ2UpOworICAgIG1hdGNoUGFnZVJ1bGVzKG1fdXNlclN0eWxl
LCBpc0xlZnQsIGlzRmlyc3QsIHBhZ2UpOworICAgIG1hdGNoUGFnZVJ1bGVzKG1fYXV0aG9yU3R5
bGUsIGlzTGVmdCwgaXNGaXJzdCwgcGFnZSk7CisgICAgbV9saW5lSGVpZ2h0VmFsdWUgPSAwOwor
ICAgIGFwcGx5RGVjbGFyYXRpb25zPHRydWU+KGZhbHNlLCAwLCBtX21hdGNoZWREZWNscy5zaXpl
KCkgLSAxKTsKKworICAgIC8vIElmIG91ciBmb250IGdvdCBkaXJ0aWVkLCBnbyBhaGVhZCBhbmQg
dXBkYXRlIGl0IG5vdy4KKyAgICBpZiAobV9mb250RGlydHkpCisgICAgICAgIHVwZGF0ZUZvbnQo
KTsKKworICAgIC8vIExpbmUtaGVpZ2h0IGlzIHNldCB3aGVuIHdlIGFyZSBzdXJlIHdlIGRlY2lk
ZWQgb24gdGhlIGZvbnQtc2l6ZQorICAgIGlmIChtX2xpbmVIZWlnaHRWYWx1ZSkKKyAgICAgICAg
YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpbmVIZWlnaHQsIG1fbGluZUhlaWdodFZhbHVlKTsK
KworICAgIGFwcGx5RGVjbGFyYXRpb25zPGZhbHNlPihmYWxzZSwgMCwgbV9tYXRjaGVkRGVjbHMu
c2l6ZSgpIC0gMSk7CisKKyAgICAvLyBOb3cgcmV0dXJuIHRoZSBzdHlsZS4KKyAgICByZXR1cm4g
bV9zdHlsZS5yZWxlYXNlKCk7Cit9CisKICNpZiBFTkFCTEUoREFUQUdSSUQpCiAKIFBhc3NSZWZQ
dHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3I6OnBzZXVkb1N0eWxlRm9yRGF0YUdyaWRD
b2x1bW4oRGF0YUdyaWRDb2x1bW4qLCBSZW5kZXJTdHlsZSopCkBAIC0yODg1LDYgKzI5MTUsNzQg
QEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseURlY2xhcmF0aW9ucyhib29sIGlzSW1wb3J0
YW50LCBpbnQgc3RhcnRJbmRleCwgaW50IGUKICAgICB9CiB9CiAKK3ZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6bWF0Y2hQYWdlUnVsZXMoQ1NTUnVsZVNldCogcnVsZXMsIGJvb2wgaXNMZWZ0UGFnZSwg
Ym9vbCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5nJiBwYWdlTmFtZSkKK3sKKyAgICBtX21hdGNo
ZWRSdWxlcy5jbGVhcigpOworCisgICAgaWYgKCFydWxlcykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbWF0Y2hQYWdlUnVsZXNGb3JMaXN0KHJ1bGVzLT5nZXRQYWdlUnVsZXMoKSwgaXNMZWZ0UGFn
ZSwgaXNGaXJzdFBhZ2UsIHBhZ2VOYW1lKTsKKworICAgIC8vIElmIHdlIGRpZG4ndCBtYXRjaCBh
bnkgcnVsZXMsIHdlJ3JlIGRvbmUuCisgICAgaWYgKG1fbWF0Y2hlZFJ1bGVzLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gU29ydCB0aGUgc2V0IG9mIG1hdGNoZWQgcnVsZXMu
CisgICAgc29ydE1hdGNoZWRSdWxlcygwLCBtX21hdGNoZWRSdWxlcy5zaXplKCkpOworCisgICAg
Ly8gTm93IHRyYW5zZmVyIHRoZSBzZXQgb2YgbWF0Y2hlZCBydWxlcyBvdmVyIHRvIG91ciBsaXN0
IG9mIGRlY2xzLgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21hdGNoZWRSdWxlcy5z
aXplKCk7IGkrKykKKyAgICAgICAgYWRkTWF0Y2hlZERlY2xhcmF0aW9uKG1fbWF0Y2hlZFJ1bGVz
W2ldLT5ydWxlKCktPmRlY2xhcmF0aW9uKCkpOworfQorCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6
Om1hdGNoUGFnZVJ1bGVzRm9yTGlzdChDU1NSdWxlRGF0YUxpc3QqIHJ1bGVzLCBib29sIGlzTGVm
dFBhZ2UsIGJvb2wgaXNGaXJzdFBhZ2UsIGNvbnN0IFN0cmluZyYgcGFnZU5hbWUpCit7CisgICAg
aWYgKCFydWxlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChDU1NSdWxlRGF0YSogZCA9
IHJ1bGVzLT5maXJzdCgpOyBkOyBkID0gZC0+bmV4dCgpKSB7CisgICAgICAgIENTU1N0eWxlUnVs
ZSogcnVsZSA9IGQtPnJ1bGUoKTsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3Rv
ckxvY2FsTmFtZSA9IGQtPnNlbGVjdG9yKCktPm1fdGFnLmxvY2FsTmFtZSgpOworICAgICAgICBp
ZiAoc2VsZWN0b3JMb2NhbE5hbWUgIT0gc3RhckF0b20gJiYgc2VsZWN0b3JMb2NhbE5hbWUgIT0g
cGFnZU5hbWUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQ1NTU2VsZWN0b3I6OlBz
ZXVkb1R5cGUgcHNldWRvVHlwZSA9IGQtPnNlbGVjdG9yKCktPnBzZXVkb1R5cGUoKTsKKyAgICAg
ICAgaWYgKChwc2V1ZG9UeXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9MZWZ0UGFnZSAmJiAhaXNM
ZWZ0UGFnZSkKKyAgICAgICAgICAgIHx8IChwc2V1ZG9UeXBlID09IENTU1NlbGVjdG9yOjpQc2V1
ZG9SaWdodFBhZ2UgJiYgaXNMZWZ0UGFnZSkKKyAgICAgICAgICAgIHx8IChwc2V1ZG9UeXBlID09
IENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdFBhZ2UgJiYgIWlzRmlyc3RQYWdlKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIElmIHRoZSBydWxlIGhhcyBubyBwcm9wZXJ0aWVz
IHRvIGFwcGx5LCB0aGVuIGlnbm9yZSBpdC4KKyAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24qIGRlY2wgPSBydWxlLT5kZWNsYXJhdGlvbigpOworICAgICAgICBpZiAoIWRlY2wgfHwg
IWRlY2wtPmxlbmd0aCgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gQWRk
IHRoaXMgcnVsZSB0byBvdXIgbGlzdCBvZiBtYXRjaGVkIHJ1bGVzLgorICAgICAgICBhZGRNYXRj
aGVkUnVsZShkKTsKKyAgICB9Cit9CisKK2Jvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6aXNMZWZ0UGFn
ZShpbnQgcGFnZUluZGV4KSBjb25zdAoreworICAgIGJvb2wgaXNGaXJzdFBhZ2VMZWZ0ID0gZmFs
c2U7CisgICAgaWYgKG1fcm9vdEVsZW1lbnRTdHlsZS0+ZGlyZWN0aW9uKCkgPT0gUlRMKQorICAg
ICAgICBpc0ZpcnN0UGFnZUxlZnQgPSB0cnVlOworCisgICAgcmV0dXJuIChwYWdlSW5kZXggKyAo
aXNGaXJzdFBhZ2VMZWZ0ID8gMSA6IDApKSAlIDI7Cit9CisKK2Jvb2wgQ1NTU3R5bGVTZWxlY3Rv
cjo6aXNGaXJzdFBhZ2UoaW50IHBhZ2VJbmRleCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogSW4g
Y2FzZSBvZiBmb3JjZWQgbGVmdC9yaWdodCBwYWdlLCBwYWdlIGF0IGluZGV4IDEgKG5vdCAwKSBj
YW4gYmUgdGhlIGZpcnN0IHBhZ2UuCisgICAgcmV0dXJuICghcGFnZUluZGV4KTsKK30KKworU3Ry
aW5nIENTU1N0eWxlU2VsZWN0b3I6OnBhZ2VOYW1lKGludCAvKiBwYWdlSW5kZXggKi8pIGNvbnN0
Cit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBwYWdlIGluZGV4IHRvIHBhZ2UgbmFtZSBtYXBw
aW5nLgorICAgIHJldHVybiAiIjsKK30KKwogc3RhdGljIHZvaWQgYXBwbHlDb3VudGVyTGlzdChS
ZW5kZXJTdHlsZSogc3R5bGUsIENTU1ZhbHVlTGlzdCogbGlzdCwgYm9vbCBpc1Jlc2V0KQogewog
ICAgIENvdW50ZXJEaXJlY3RpdmVNYXAmIG1hcCA9IHN0eWxlLT5hY2Nlc3NDb3VudGVyRGlyZWN0
aXZlcygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oIGIvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCmluZGV4IGZkMzdjODViYTRiNmQxMjRiN2MyMTBm
ZGY0ZDhjZjJhZGMwZjZmM2UuLjA1Y2QxMDljMWNiMmMwN2U2YmUzMGFhNzU1Y2MwMmQ4ZmQxNGU0
NzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAorKysgYi9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKQEAgLTkzLDYgKzkzLDggQEAgcHVibGljOgogCiAg
ICAgICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHBzZXVkb1N0eWxlRm9yRWxlbWVudChQc2V1
ZG9JZCBwc2V1ZG8sIEVsZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IDAsIGJv
b2wgbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3MgPSBmYWxzZSk7CiAKKyAgICAgICAgUGFzc1JlZlB0
cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JQYWdlKGludCBwYWdlSW5kZXgpOworCiAgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvckRvY3VtZW50KERvY3VtZW50Kik7
CiAKICNpZiBFTkFCTEUoREFUQUdSSUQpCkBAIC0xODAsNiArMTgyLDEzIEBAIHB1YmxpYzoKIAog
ICAgICAgICB0ZW1wbGF0ZSA8Ym9vbCBmaXJzdFBhc3M+CiAgICAgICAgIHZvaWQgYXBwbHlEZWNs
YXJhdGlvbnMoYm9vbCBpbXBvcnRhbnQsIGludCBzdGFydEluZGV4LCBpbnQgZW5kSW5kZXgpOwor
CisgICAgICAgIHZvaWQgbWF0Y2hQYWdlUnVsZXMoQ1NTUnVsZVNldCosIGJvb2wgaXNMZWZ0UGFn
ZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5nJiBwYWdlTmFtZSk7CisgICAgICAgIHZv
aWQgbWF0Y2hQYWdlUnVsZXNGb3JMaXN0KENTU1J1bGVEYXRhTGlzdCosIGJvb2wgaXNMZWZ0UGFn
ZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5nJiBwYWdlTmFtZSk7CisgICAgICAgIGJv
b2wgaXNMZWZ0UGFnZShpbnQgcGFnZUluZGV4KSBjb25zdDsKKyAgICAgICAgYm9vbCBpc1JpZ2h0
UGFnZShpbnQgcGFnZUluZGV4KSBjb25zdCB7IHJldHVybiAhaXNMZWZ0UGFnZShwYWdlSW5kZXgp
OyB9CisgICAgICAgIGJvb2wgaXNGaXJzdFBhZ2UoaW50IHBhZ2VJbmRleCkgY29uc3Q7CisgICAg
ICAgIFN0cmluZyBwYWdlTmFtZShpbnQgcGFnZUluZGV4KSBjb25zdDsKICAgICAgICAgCiAgICAg
ICAgIENTU1J1bGVTZXQqIG1fYXV0aG9yU3R5bGU7CiAgICAgICAgIENTU1J1bGVTZXQqIG1fdXNl
clN0eWxlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvaHRtbC5jc3MgYi9XZWJDb3JlL2Nzcy9o
dG1sLmNzcwppbmRleCBiNGJiMDVhOGU5ZGJjOGY5MTQ5ZjI2NzZhYWFmNGRiZTczZWY3NTk4Li5m
ZTI4NTI4NzBjYzdjZGRlZTM4YzczODAwYTkwYjg5MzdjOWI4ODU2IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2Nzcy9odG1sLmNzcworKysgYi9XZWJDb3JlL2Nzcy9odG1sLmNzcwpAQCAtNjgzLDQgKzY4
MywxMSBAQCBpZnJhbWUgewogICAgIGJvcmRlcjogMnB4IGluc2V0CiB9CiAKKy8qIHBhZ2UgKi8K
KworQHBhZ2UgeworICAgIC8qIEZJWE1FOiBEZWZpbmUgdGhlIHJpZ2h0IGRlZmF1bHQgdmFsdWVz
IGZvciBwYWdlIHByb3BlcnRpZXMuICovCisgICAgbWFyZ2luOiAxaW47Cit9CisKIC8qIG5vc2Ny
aXB0IGlzIGhhbmRsZWQgaW50ZXJuYWxseSwgYXMgaXQgZGVwZW5kcyBvbiBzZXR0aW5ncyAqLwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IDRlZGRiYTQwZWFlZDUwMjAyNzA4YzU0ODE1ZGEzYWI4ZWQ2YjRmZWMuLmU5
YjQ0NGY0MDZiOTJhNDQ2NTllMWI1YTFjYjJhNWM0Mzc4NDcyZDIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE0
OTQsNiArMTQ5NCwxMiBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBEb2N1bWVudDo6c3R5bGVG
b3JFbGVtZW50SWdub3JpbmdQZW5kaW5nU3R5bGVzaGVldHMoRWxlbQogICAgIHJldHVybiBzdHls
ZS5yZWxlYXNlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IERvY3VtZW50OjpzdHls
ZUZvclBhZ2UoaW50IHBhZ2VJbmRleCkKK3sKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxl
ID0gc3R5bGVTZWxlY3RvcigpLT5zdHlsZUZvclBhZ2UocGFnZUluZGV4KTsKKyAgICByZXR1cm4g
c3R5bGUucmVsZWFzZSgpOworfQorCiB2b2lkIERvY3VtZW50OjpjcmVhdGVTdHlsZVNlbGVjdG9y
KCkKIHsKICAgICBib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcyA9IHRydWU7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRl
eCA1MDkzMTAwZWE3YmFkYjViMDg1YmJiMmVhZjY3MWU2MDIxNTdjNDQ0Li4yNTE5MWEwMTM5N2Y5
ZDFiMzYyYTg1MTQ5N2ZiMTVhOGY3NjMwYjY0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQ4MSw2ICs0ODEsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCB1cGRhdGVMYXlvdXQoKTsKICAgICB2b2lkIHVwZGF0ZUxheW91dEln
bm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0
eWxlRm9yRWxlbWVudElnbm9yaW5nUGVuZGluZ1N0eWxlc2hlZXRzKEVsZW1lbnQqKTsKKyAgICBQ
YXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCk7CiAgICAg
c3RhdGljIHZvaWQgdXBkYXRlU3R5bGVGb3JBbGxEb2N1bWVudHMoKTsgLy8gRklYTUU6IFRyeSB0
byByZWR1Y2UgdGhlICMgb2YgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbi4KICAgICBEb2NMb2FkZXIq
IGRvY0xvYWRlcigpIHsgcmV0dXJuIG1fZG9jTG9hZGVyLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4
dC5jcHAKaW5kZXggZmZkZTBiZWIxZTNjMGJlNDRkN2U1MjI5NzdiM2FiNTM2Mjg2YzFkMC4uMmZm
ZmI4MTEyOTlkNjdkOGI5M2Y3NDU4YjA1YjU0ZWY0ZWZmNjc1YiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5j
cHAKQEAgLTE5OCw2ICsxOTgsMjQgQEAgaW50IFByaW50Q29udGV4dDo6cGFnZU51bWJlckZvckVs
ZW1lbnQoRWxlbWVudCogZWxlbWVudCwgY29uc3QgRmxvYXRTaXplJiBwYWdlU2kKICAgICByZXR1
cm4gLTE7CiB9CiAKK1N0cmluZyBQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eShGcmFtZSogZnJh
bWUsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgaW50IHBhZ2VOdW1iZXIpCit7CisgICAgZnJh
bWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4g
c3R5bGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVGb3JQYWdlKHBhZ2VOdW1iZXIpOworCisg
ICAgLy8gSW1wbGVtZW50IGZvcm1hdHRlcnMgZm9yIHByb3BlcnRpZXMgd2UgY2FyZSBhYm91dC4K
KyAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJtYXJnaW4tbGVmdCIpKQorICAgICAgICBy
ZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVkIiwgc3R5bGUtPm1hcmdpbkxlZnQoKS5yYXdWYWx1ZSgp
KTsKKyAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJsaW5lLWhlaWdodCIpKQorICAgICAg
ICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVkIiwgc3R5bGUtPmxpbmVIZWlnaHQoKS5yYXdWYWx1
ZSgpKTsKKyAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJmb250LXNpemUiKSkKKyAgICAg
ICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlZCIsIHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5j
b21wdXRlZFBpeGVsU2l6ZSgpKTsKKyAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJmb250
LWZhbWlseSIpKQorICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVzIiwgc3R5bGUtPmZv
bnREZXNjcmlwdGlvbigpLmZhbWlseSgpLmZhbWlseSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworCisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJwYWdlUHJvcGVydHkoKSB1bmltcGxlbWVu
dGVkIGZvcjogJXMiLCBwcm9wZXJ0eU5hbWUpOworfQorCiBpbnQgUHJpbnRDb250ZXh0OjpudW1i
ZXJPZlBhZ2VzKEZyYW1lKiBmcmFtZSwgY29uc3QgRmxvYXRTaXplJiBwYWdlU2l6ZUluUGl4ZWxz
KQogewogICAgIGZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuaCBiL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQu
aAppbmRleCAxODkxMTQ0Zjk0MmQzOWFmN2ExMmQwMDdhNDFkZWYzMGRlNTRkODQwLi45Mzk4YTZl
YmQwODhlODYwMTNmMjRmNjY1MjkyNTY3NDA5ZTI0ODUxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bh
Z2UvUHJpbnRDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5oCkBAIC0z
MSw2ICszMSw3IEBAIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDsKIGNsYXNzIEludFJlY3Q7CitjbGFzcyBTdHJpbmc7CiAKIGNsYXNzIFBy
aW50Q29udGV4dCB7CiBwdWJsaWM6CkBAIC01NCw2ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIC8v
IFVzZWQgYnkgbGF5b3V0IHRlc3RzLgogICAgIHN0YXRpYyBpbnQgcGFnZU51bWJlckZvckVsZW1l
bnQoRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscyk7CisgICAgc3Rh
dGljIFN0cmluZyBwYWdlUHJvcGVydHkoRnJhbWUqIGZyYW1lLCBjb25zdCBjaGFyKiBwcm9wZXJ0
eU5hbWUsIGludCBwYWdlTnVtYmVyKTsKICAgICBzdGF0aWMgaW50IG51bWJlck9mUGFnZXMoRnJh
bWUqLCBjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMpOwogCiBwcm90ZWN0ZWQ6CmRp
ZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IDUyMDFlMWY1M2IxODE0NDgxMDNiOWMzYTRlZTU3YmVjMmJlNTQ4MzMuLjlmMGJiNDcxMzhi
YjEzMGQ2ODE0MTk4YWJjYTVkNGFkZWEwNjA4OWQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAt
MDYtMDcgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCByZW5kZXIgc3R5bGUg
c2VsZWN0aW9uIGZvciBwYWdlcyB0byBzdXBwb3J0IENTUzMgUGFnZWQgTWVkaWEuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTk2MQorCisgICAgICAg
ICogTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5oOgorICAgICAgICAqIE1pc2MvV2ViQ29yZVN0YXRp
c3RpY3MubW06CisgICAgICAgICgtW1dlYkZyYW1lIHBhZ2VQcm9wZXJ0eTpwcm9wZXJ0eU5hbWU6
XSk6CisKIDIwMTAtMDYtMDggIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFpIGFuZCBEYXJpbiBBZGxlci4KZGlmZiAt
LWdpdCBhL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5oIGIvV2ViS2l0L21hYy9N
aXNjL1dlYkNvcmVTdGF0aXN0aWNzLmgKaW5kZXggYTExYzA2NDQ4YzhjN2Y1ZGE4MmIwZjJlYzY2
NWU1NWJlMjUzODliYy4uYzc5Yzk2ZGYxYTBjMDk0ZWQzNmNkODNjZmE0MThiODMxNDgxMmZkOCAx
MDA2NDQKLS0tIGEvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmgKKysrIGIvV2Vi
S2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmgKQEAgLTg3LDQgKzg3LDUgQEAKIC0gKE5T
U3RyaW5nICopY291bnRlclZhbHVlRm9yRWxlbWVudDooRE9NRWxlbWVudCopZWxlbWVudDsKIC0g
KGludClwYWdlTnVtYmVyRm9yRWxlbWVudDooRE9NRWxlbWVudCopZWxlbWVudDooZmxvYXQpcGFn
ZVdpZHRoSW5QaXhlbHM6KGZsb2F0KXBhZ2VIZWlnaHRJblBpeGVsczsKIC0gKGludCludW1iZXJP
ZlBhZ2VzOihmbG9hdClwYWdlV2lkdGhJblBpeGVsczooZmxvYXQpcGFnZUhlaWdodEluUGl4ZWxz
OworLSAoTlNTdHJpbmcgKilwYWdlUHJvcGVydHk6KGNvbnN0IGNoYXIqKXByb3BlcnR5TmFtZToo
aW50KXBhZ2VOdW1iZXI7CiBAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL01pc2MvV2ViQ29y
ZVN0YXRpc3RpY3MubW0gYi9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KaW5k
ZXggYzNmYzIzZWNmNDg3MTcxNTQwNTc2MWIxYzRhMDRjNTRjMzk0YzA1OC4uODlmNzBmZDljNzMy
NmEzN2RhZWY1YzU4NjQ0ZTM5NzIxMjRjNmJmNSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9NaXNj
L1dlYkNvcmVTdGF0aXN0aWNzLm1tCisrKyBiL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlz
dGljcy5tbQpAQCAtMjc1LDQgKzI3NSw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAg
IHJldHVybiBQcmludENvbnRleHQ6Om51bWJlck9mUGFnZXMoX3ByaXZhdGUtPmNvcmVGcmFtZSwg
RmxvYXRTaXplKHBhZ2VXaWR0aEluUGl4ZWxzLCBwYWdlSGVpZ2h0SW5QaXhlbHMpKTsKIH0KIAor
LSAoTlNTdHJpbmcgKilwYWdlUHJvcGVydHk6KGNvbnN0IGNoYXIgKilwcm9wZXJ0eU5hbWU6KGlu
dClwYWdlTnVtYmVyCit7CisgICAgcmV0dXJuIFByaW50Q29udGV4dDo6cGFnZVByb3BlcnR5KF9w
cml2YXRlLT5jb3JlRnJhbWUsIHByb3BlcnR5TmFtZSwgcGFnZU51bWJlcik7Cit9CisKIEBlbmQK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBhYzMzNTdhYTYyYWUxM2RiYzY1YmEzZGE1NTNmZGViZjIxNWU1ZTIwLi4zN2ZiMGEw
ZDJkMzhmMWNhMzc5YmMwYWNiZDRlNzQzODdiODlkOTY5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTAtMDYtMDcgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCByZW5kZXIg
c3R5bGUgc2VsZWN0aW9uIGZvciBwYWdlcyB0byBzdXBwb3J0IENTUzMgUGFnZWQgTWVkaWEuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTk2MQorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAocGFyc2VQYWdlUHJvcGVydHlQYXJhbWV0ZXJzKToKKyAgICAgICAgKHBhZ2VQcm9wZXJ0eUNh
bGxiYWNrKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VQcm9wZXJ0eSk6CisKIDIwMTAtMDYtMDgg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2MDg3OC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBiOTZhOWM5YzU2YTQzNzE1
MTdlZmY3ZTVlYjA5ZTJkYjkyYTgxZmI4Li4zNTY0MDAxOGVkMGE5YzBlYTlkYWU5ZDNjMTJiZjdk
MjgwYjk3YzAxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCkBAIC01MjEsNiArNTIxLDMyIEBAIHN0YXRpYyBib29sIHBhcnNl
UGFnZVBhcmFtZXRlcnMoSlNDb250ZXh0UmVmIGNvbnRleHQsIGludCBhcmd1bWVudENvdW50LCBj
b25zdCBKCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKy8vIENhbGxlciBuZWVkcyB0byBkZWxldGVb
XSBwcm9wZXJ0eU5hbWUuCitzdGF0aWMgYm9vbCBwYXJzZVBhZ2VQcm9wZXJ0eVBhcmFtZXRlcnMo
SlNDb250ZXh0UmVmIGNvbnRleHQsIGludCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVm
KiBhcmd1bWVudHMsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbiwgY2hhciomIHByb3BlcnR5TmFtZSwg
aW50JiBwYWdlTnVtYmVyKQoreworICAgIHBhZ2VOdW1iZXIgPSAwOworICAgIHN3aXRjaCAoYXJn
dW1lbnRDb3VudCkgeworICAgIGNhc2UgMjoKKyAgICAgICAgcGFnZU51bWJlciA9IHN0YXRpY19j
YXN0PGZsb2F0PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzFdLCBleGNlcHRp
b24pKTsKKyAgICAgICAgaWYgKCpleGNlcHRpb24pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIC8vIEZhbGwgdGhyb3VnaC4KKyAgICBjYXNlIDE6IHsKKyAgICAgICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IHByb3BlcnR5TmFtZVN0cmluZyhBZG9wdCwgSlNWYWx1ZVRvU3Ry
aW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgICAgICBpZiAo
KmV4Y2VwdGlvbikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBzaXplX3Qg
bWF4TGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHByb3BlcnR5TmFt
ZVN0cmluZy5nZXQoKSk7CisgICAgICAgIHByb3BlcnR5TmFtZSA9IG5ldyBjaGFyW21heExlbmd0
aCArIDFdOworICAgICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKHByb3BlcnR5TmFtZVN0cmlu
Zy5nZXQoKSwgcHJvcGVydHlOYW1lLCBtYXhMZW5ndGggKyAxKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIGNhc2UgMDoKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5
SWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgZmxvYXQgcGFn
ZVdpZHRoSW5QaXhlbHMgPSAwOwpAQCAtNTQ4LDYgKzU3NCwyMCBAQCBzdGF0aWMgSlNWYWx1ZVJl
ZiBudW1iZXJPZlBhZ2VzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bmN0aQogICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCBjb250cm9sbGVy
LT5udW1iZXJPZlBhZ2VzKHBhZ2VXaWR0aEluUGl4ZWxzLCBwYWdlSGVpZ2h0SW5QaXhlbHMpKTsK
IH0KIAorc3RhdGljIEpTVmFsdWVSZWYgcGFnZVByb3BlcnR5Q2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBz
aXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGNoYXIqIHByb3BlcnR5TmFtZSA9IDA7CisgICAgaW50
IHBhZ2VOdW1iZXIgPSAwOworICAgIGlmICghcGFyc2VQYWdlUHJvcGVydHlQYXJhbWV0ZXJzKGNv
bnRleHQsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywgZXhjZXB0aW9uLCBwcm9wZXJ0eU5hbWUs
IHBhZ2VOdW1iZXIpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCk7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0
PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsK
KyAgICBKU1ZhbHVlUmVmIHZhbHVlID0gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgY29udHJv
bGxlci0+cGFnZVByb3BlcnR5KHByb3BlcnR5TmFtZSwgcGFnZU51bWJlcikuZ2V0KCkpOworCisg
ICAgZGVsZXRlW10gcHJvcGVydHlOYW1lOworICAgIHJldHVybiB2YWx1ZTsKK30KKwogc3RhdGlj
IEpTVmFsdWVSZWYgcXVldWVCYWNrTmF2aWdhdGlvbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKIHsKICAgICAvLyBIYXMgbWFjICYgd2luZG93cyBpbXBsZW1lbnRhdGlvbgpA
QCAtMTYwMSw2ICsxNjQxLDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgIm51bWJlck9mQWN0aXZlQW5pbWF0aW9u
cyIsIG51bWJlck9mQWN0aXZlQW5pbWF0aW9uc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
Im92ZXJyaWRlUHJlZmVyZW5jZSIsIG92ZXJyaWRlUHJlZmVyZW5jZUNhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgInBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCIsIHBhZ2VOdW1iZXJGb3JFbGVt
ZW50QnlJZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInBhZ2VQcm9wZXJ0eSIsIHBhZ2VQ
cm9wZXJ0eUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInBhdGhUb0xvY2FsUmVzb3VyY2Ui
LCBwYXRoVG9Mb2NhbFJlc291cmNlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicGF1c2VB
bmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQiLCBwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxl
bWVudFdpdGhJZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInBhdXNlVHJhbnNpdGlvbkF0
VGltZU9uRWxlbWVudFdpdGhJZCIsIHBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJ
ZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA4ZmYzOGQxMDkwMTBmNGU5NjgyZGEyYjg3ZThlZjE4
NmM0MTFjMmE4Li4xNGVjMTMwYzVlMDRiMTNiMzFiNGZlNjA2NTU4MWMzNzNhZjNmMzQ5IDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
CisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgK
QEAgLTYyLDYgKzYyLDcgQEAgcHVibGljOgogICAgIGludCBudW1iZXJPZlBhZ2VzKGZsb2F0IHBh
Z2VXaWR0aEluUGl4ZWxzLCBmbG9hdCBwYWdlSGVpZ2h0SW5QaXhlbHMpOwogICAgIHZvaWQgb3Zl
cnJpZGVQcmVmZXJlbmNlKEpTU3RyaW5nUmVmIGtleSwgSlNTdHJpbmdSZWYgdmFsdWUpOwogICAg
IGludCBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQsIGZsb2F0IHBhZ2VX
aWR0aEluUGl4ZWxzLCBmbG9hdCBwYWdlSGVpZ2h0SW5QaXhlbHMpOworICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBwYWdlUHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBpbnQg
cGFnZU51bWJlcikgY29uc3Q7CiAgICAgSlNTdHJpbmdSZWYgcGF0aFRvTG9jYWxSZXNvdXJjZShK
U0NvbnRleHRSZWYsIEpTU3RyaW5nUmVmIHVybCk7CiAgICAgdm9pZCBxdWV1ZUJhY2tOYXZpZ2F0
aW9uKGludCBob3dGYXJCYWNrd2FyZCk7CiAgICAgdm9pZCBxdWV1ZUZvcndhcmROYXZpZ2F0aW9u
KGludCBob3dGYXJGb3J3YXJkKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGU4Yjg2Mjc1ODUy
ZGNiNWNlMWQxOWQ2ZGE1ZmJhNTFhMDE1NDlkNjMuLjJiZGQ4MGM3YjQzOWNiZjE4MWExODNkODQx
Y2YxMWRmMDRlNWE4NWYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAtMTcxLDYgKzE3MSwxMiBA
QCBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGFnZXMoZmxvYXQgcGFnZVdpZHRo
LCBmbG9hdCBwYWdlSGVpZ2h0KQogICAgIHJldHVybiB3ZWJraXRfd2ViX2ZyYW1lX251bWJlcl9v
Zl9wYWdlcyhtYWluRnJhbWUsIHBhZ2VXaWR0aCwgcGFnZUhlaWdodCk7CiB9CiAKK0pTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZVByb3BlcnR5KGNvbnN0
IGNoYXIqIHByb3BlcnR5TmFtZSwgaW50IHBhZ2VOdW1iZXIpIGNvbnN0Cit7CisgICAgLy8gRklY
TUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4oKTsKK30K
Kwogc2l6ZV90IExheW91dFRlc3RDb250cm9sbGVyOjp3ZWJIaXN0b3J5SXRlbUNvdW50KCkKIHsK
ICAgICAvLyBGSVhNRTogaW1wbGVtZW50CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggZWIwMTA5MDAy
NmI3ZjlmNmFjM2NmNDNiYjU2ZjAzY2QyNjI3MzljOC4uZWUxMDcwMzM2NjAyMDE0YzNhMzU0ODI2
NzMyNjVkN2ZlOTQyNTJkNiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtMjEyLDYgKzIxMiwxMiBA
QCBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChKU1N0
cmluZ1JlZiBpZCwgZmxvYXQgcGFnZVdpZAogICAgIHJldHVybiBbbWFpbkZyYW1lIHBhZ2VOdW1i
ZXJGb3JFbGVtZW50OmVsZW1lbnQ6cGFnZVdpZHRoSW5QaXhlbHM6cGFnZUhlaWdodEluUGl4ZWxz
XTsKIH0KIAorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpw
YWdlUHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBpbnQgcGFnZU51bWJlcikgY29u
c3QKK3sKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcHJvcGVydHlWYWx1ZShBZG9wdCwg
SlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKVttYWluRnJhbWUgcGFnZVBy
b3BlcnR5OnByb3BlcnR5TmFtZTpwYWdlTnVtYmVyXSkpOworICAgIHJldHVybiBwcm9wZXJ0eVZh
bHVlOworfQorCiBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGFnZXMoZmxvYXQg
cGFnZVdpZHRoSW5QaXhlbHMsIGZsb2F0IHBhZ2VIZWlnaHRJblBpeGVscykKIHsKICAgICByZXR1
cm4gW21haW5GcmFtZSBudW1iZXJPZlBhZ2VzOnBhZ2VXaWR0aEluUGl4ZWxzOnBhZ2VIZWlnaHRJ
blBpeGVsc107CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5
b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAppbmRleCBjNzBiNTE3ZmViZjc0MDZiMTUyZmNm
Y2M0MDQ0MDViNjZmNzA3ZGJhLi5iMmEzNDViNTBlNzg1YjU1YjViMWE5OWYzNjdhNzk1ZDRiOTBj
MmE3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVz
dENvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9M
YXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKQEAgLTEyMzcsNiArMTIzNywxMiBAQCBpbnQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGFnZXMoZmxvYXQgcGFnZVdpZHRoSW5QaXhlbHMs
IGZsb2F0IHBhZ2VIZWlnaAogICAgIHJldHVybiBwYWdlTnVtYmVyOwogfQogCitKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VQcm9wZXJ0eShjb25zdCBj
aGFyKiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlTnVtYmVyKSBjb25zdAoreworICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgdGhpcy4KKyAgICByZXR1cm4gSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+KCk7
Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFwaVRlc3ROZXdXaW5kb3dEYXRhTG9h
ZEJhc2VVUkwoSlNTdHJpbmdSZWYgdXRmOERhdGEsIEpTU3RyaW5nUmVmIGJhc2VVUkwpCiB7CiAK
</data>
<flag name="review"
          id="43373"
          type_id="1"
          status="+"
          setter="hamaji"
    />
          </attachment>
      

    </bug>

</bugzilla>