<?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>52352</bug_id>
          
          <creation_ts>2011-01-12 21:46:21 -0800</creation_ts>
          <short_desc>Style cleanup for WebGLRenderingContext</short_desc>
          <delta_ts>2011-02-01 08:42:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zhenyao Mo">zmo</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>enne</cc>
    
    <cc>kbr</cc>
    
    <cc>levin</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>333540</commentid>
    <comment_count>0</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-12 21:46:21 -0800</bug_when>
    <thetext>remove unnecessary argument names in WebGLRenderingContext.h
remove unnecessary whitespaces and empty lines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334179</commentid>
    <comment_count>1</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-01-14 01:42:23 -0800</bug_when>
    <thetext>Here&apos;s the output from check-webkit-style on that previous patch:

Source/WebCore/html/canvas/WebGLBuffer.h:44:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLBuffer.h:47:  The parameter name &quot;array&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLBuffer.h:48:  The parameter name &quot;array&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLBuffer.h:98:  The parameter name &quot;array&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLBuffer.h:100:  The parameter name &quot;array&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLUniformLocation.h:42:  The parameter name &quot;program&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLUniformLocation.h:49:  The parameter name &quot;program&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:71:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:73:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:74:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:75:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:76:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:77:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:84:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:133:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:134:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:151:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:198:  The parameter name &quot;image&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:200:  The parameter name &quot;canvas&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:202:  The parameter name &quot;video&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:213:  The parameter name &quot;image&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:215:  The parameter name &quot;canvas&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:217:  The parameter name &quot;video&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:219:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:221:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:221:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:222:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:224:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:224:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:225:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:227:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:227:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:228:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:230:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:230:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:231:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:233:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:233:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:234:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:236:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:236:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:237:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:239:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:239:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:240:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:242:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:242:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:243:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:244:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:244:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:245:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:246:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:246:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:247:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:248:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:248:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:255:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:258:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:261:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:264:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:471:  The parameter name &quot;image&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:564:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:565:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:566:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:566:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:566:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:567:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:568:  The parameter name &quot;location&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:568:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:568:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:577:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]


If you felt it would be faster, you could probably hack up check-webkit-style for your our purposes to remove these names and write out the files again (but that may be more trouble than it is worth).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334548</commentid>
    <comment_count>2</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-01-14 13:24:14 -0800</bug_when>
    <thetext>In the OpenGL API (which WebGLRenderingContext and GraphicsContext3D mirror), the argument names provide a significant amount of information, and I think that removing them simply to satisfy a style guide is the wrong thing to do.

I think it would be better to exempt these files&apos; headers from this particular portion of check-webkit-style. The other style checks are still valuable for these files, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334558</commentid>
    <comment_count>3</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-01-14 13:33:12 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; In the OpenGL API (which WebGLRenderingContext and GraphicsContext3D mirror), the argument names provide a significant amount of information, and I think that removing them simply to satisfy a style guide is the wrong thing to do.

These are only parameter names that do not provide information (typically b/c they repeat the type name). If any of the items flagged provides information, then it should be left.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339292</commentid>
    <comment_count>4</comment_count>
      <attachid>79982</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-24 15:19:20 -0800</bug_when>
    <thetext>Created attachment 79982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339296</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-24 15:22:29 -0800</bug_when>
    <thetext>Attachment 79982 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/html/canvas/WebGLRenderingContext.h:568:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:570:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/canvas/WebGLRenderingContext.h:579:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 3 in 12 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>339297</commentid>
    <comment_count>6</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-24 15:23:52 -0800</bug_when>
    <thetext>This patch didn&apos;t touch any GL function signatures, because as kbr pointed out, they provide significant amount of information.  However, I try to remove all the unnecessary parameter names in the help functions.

Note that I didn&apos;t remove the &quot;size&quot; because in the same function, there are more than one GC3Dsizei-typed parameters.  I am thinking maybe we should update the style-check rules to be more sophisticated: if a parameter name is part of the type name, but that type name appears more than once, then we should add a parameter name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339333</commentid>
    <comment_count>7</comment_count>
      <attachid>79982</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-01-24 15:53:00 -0800</bug_when>
    <thetext>Comment on attachment 79982
Patch

Looks like a reasonable incremental improvement. We should still consider whether we should exempt these files and GraphicsContext3D in the style checker from this particular style rule. Please coordinate with Chris Marrin on the landing of his patch for https://bugs.webkit.org/show_bug.cgi?id=53041 , since there may be conflicts in several files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339344</commentid>
    <comment_count>8</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-24 16:06:03 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 79982 [details])
&gt; Looks like a reasonable incremental improvement. We should still consider whether we should exempt these files and GraphicsContext3D in the style checker from this particular style rule. Please coordinate with Chris Marrin on the landing of his patch for https://bugs.webkit.org/show_bug.cgi?id=53041 , since there may be conflicts in several files.

OK I&apos;ll wait until Chris lands since my patch is trivia.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339702</commentid>
    <comment_count>9</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-25 09:47:56 -0800</bug_when>
    <thetext>Committed r76603: &lt;http://trac.webkit.org/changeset/76603&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343035</commentid>
    <comment_count>10</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-01-31 22:24:02 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; This patch didn&apos;t touch any GL function signatures, because as kbr pointed out, they provide significant amount of information.  However, I try to remove all the unnecessary parameter names in the help functions.

It looks like you got many of the important ones. Thanks!

&gt; Note that I didn&apos;t remove the &quot;size&quot; because in the same function, there are more than one GC3Dsizei-typed parameters.  I am thinking maybe we should update the style-check rules to be more sophisticated: if a parameter name is part of the type name, but that type name appears more than once, then we should add a parameter name.

Interesting idea. Want to try it? :) (it is pretty easy to modify the python code.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343238</commentid>
    <comment_count>11</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-02-01 08:42:05 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #6)
&gt; &gt; This patch didn&apos;t touch any GL function signatures, because as kbr pointed out, they provide significant amount of information.  However, I try to remove all the unnecessary parameter names in the help functions.
&gt; 
&gt; It looks like you got many of the important ones. Thanks!
&gt; 
&gt; &gt; Note that I didn&apos;t remove the &quot;size&quot; because in the same function, there are more than one GC3Dsizei-typed parameters.  I am thinking maybe we should update the style-check rules to be more sophisticated: if a parameter name is part of the type name, but that type name appears more than once, then we should add a parameter name.
&gt; 
&gt; Interesting idea. Want to try it? :) (it is pretty easy to modify the python code.)

Actually I would suggest one more thing: if a parameter name is a single character, then maybe we shouldn&apos;t use the rule whether it is part of the type name.  For example, size_t s, s is part of size_t, but there is no strong semantic connection.

Yeah I could give it a try, only it has to wait until I get some more urgent GPU-related stuff done.  I&apos;ll ping you for tips when I am ready to go.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79982</attachid>
            <date>2011-01-24 15:19:20 -0800</date>
            <delta_ts>2011-01-24 15:52:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52352-20110124151918.patch</filename>
            <type>text/plain</type>
            <size>23601</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2NTUwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDEtMjQgIFpoZW55YW8g
TW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTdHlsZSBjbGVhbnVwIGZvciBXZWJHTFJlbmRlcmluZ0NvbnRleHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyMzUyCisKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHA6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xCdWZmZXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHA6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHA6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
ZGVsZXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
ZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
ZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnZhbGlkYXRlSW5kZXhBcnJheVByZWNpc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVJlbmRlcmluZ1N0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGV0YWNoQW5kUmVt
b3ZlQWxsT2JqZWN0cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuY3BwOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHA6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xVbmlmb3JtTG9jYXRpb24uY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVW5pZm9y
bUxvY2F0aW9uLmg6CisKIDIwMTEtMDEtMjQgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAJKHJldmlzaW9uIDc2NDA4KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw3ICszNCw3IEBACiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICAKKwogUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4gV2ViR0xCdWZm
ZXI6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYkdMQnVmZmVyKGN0eCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEJ1ZmZlci5oCShyZXZpc2lvbiA3NjQwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEwICs0MiwxMCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+IGNyZWF0ZShXZWJH
TFJlbmRlcmluZ0NvbnRleHQqKTsKIAogICAgIGJvb2wgYXNzb2NpYXRlQnVmZmVyRGF0YShHQzNE
c2l6ZWlwdHIgc2l6ZSk7Ci0gICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJEYXRhKEFycmF5QnVmZmVy
KiBhcnJheSk7Ci0gICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJEYXRhKEFycmF5QnVmZmVyVmlldyog
YXJyYXkpOwotICAgIGJvb2wgYXNzb2NpYXRlQnVmZmVyU3ViRGF0YShHQzNEaW50cHRyIG9mZnNl
dCwgQXJyYXlCdWZmZXIqIGFycmF5KTsKLSAgICBib29sIGFzc29jaWF0ZUJ1ZmZlclN1YkRhdGEo
R0MzRGludHB0ciBvZmZzZXQsIEFycmF5QnVmZmVyVmlldyogYXJyYXkpOworICAgIGJvb2wgYXNz
b2NpYXRlQnVmZmVyRGF0YShBcnJheUJ1ZmZlciopOworICAgIGJvb2wgYXNzb2NpYXRlQnVmZmVy
RGF0YShBcnJheUJ1ZmZlclZpZXcqKTsKKyAgICBib29sIGFzc29jaWF0ZUJ1ZmZlclN1YkRhdGEo
R0MzRGludHB0ciBvZmZzZXQsIEFycmF5QnVmZmVyKik7CisgICAgYm9vbCBhc3NvY2lhdGVCdWZm
ZXJTdWJEYXRhKEdDM0RpbnRwdHIgb2Zmc2V0LCBBcnJheUJ1ZmZlclZpZXcqKTsKIAogICAgIEdD
M0RzaXplaXB0ciBieXRlTGVuZ3RoKCkgY29uc3Q7CiAgICAgY29uc3QgQXJyYXlCdWZmZXIqIGVs
ZW1lbnRBcnJheUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudEFycmF5QnVmZmVyLmdl
dCgpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3Bw
CShyZXZpc2lvbiA3NjQwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIldlYkdM
UmVuZGVyaW5nQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCisKIFdlYkdM
T2JqZWN0OjpXZWJHTE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCiAgICAg
OiBtX29iamVjdCgwKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAJKHJldmlzaW9uIDc2NDA4KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCisKIFBhc3NSZWZQdHI8V2ViR0xQcm9ncmFtPiBX
ZWJHTFByb2dyYW06OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCkKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdMUHJvZ3JhbShjdHgpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAJKHJldmlzaW9uIDc2
NDA4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwogUGFzc1JlZlB0cjxX
ZWJHTFJlbmRlcmJ1ZmZlcj4gV2ViR0xSZW5kZXJidWZmZXI6OmNyZWF0ZShXZWJHTFJlbmRlcmlu
Z0NvbnRleHQqIGN0eCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdMUmVuZGVyYnVm
ZmVyKGN0eCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA3NjU0OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1MSw3ICszNTEsNyBAQCBQYXNzT3duUHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4gV2Vi
R0xSCiAgICAgICAgIGNhbnZhcy0+ZGlzcGF0Y2hFdmVudChXZWJHTENvbnRleHRFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS53ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yRXZlbnQsIGZhbHNlLCB0
cnVlLCAiQ291bGQgbm90IGNyZWF0ZSBhIFdlYkdMIGNvbnRleHQuIikpOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9Ci0gICAgICAgIAorCiAgICAgcmV0dXJuIG5ldyBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQoY2FudmFzLCBjb250ZXh0LCBhdHRyaWJ1dGVzKTsKIH0KIApAQCAtNTc1LDcgKzU3NSw2
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kQnVmZmVyKEcKICAgICBjbGVhbnVw
QWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCi0KIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpiaW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBi
dWZmZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFVOVVNFRF9QQVJBTShlYyk7CkBAIC02
MTYsNyArNjE1LDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRSZW5kZXJidQog
ICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKLQogdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmJpbmRUZXh0dXJlKEdDM0RlbnVtIHRhcmdldCwgV2ViR0xUZXh0dXJl
KiB0ZXh0dXJlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwpA
QCAtNjg0LDcgKzY4Miw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpibGVuZEZ1bmMo
R0MKICAgICAgICAgcmV0dXJuOwogICAgIG1fY29udGV4dC0+YmxlbmRGdW5jKHNmYWN0b3IsIGRm
YWN0b3IpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci19ICAgICAgIAor
fQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmxlbmRGdW5jU2VwYXJhdGUoR0MzRGVu
dW0gc3JjUkdCLCBHQzNEZW51bSBkc3RSR0IsIEdDM0RlbnVtIHNyY0FscGhhLCBHQzNEZW51bSBk
c3RBbHBoYSkKIHsKQEAgLTk4OSw3ICs5ODcsNyBAQCBQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBX
ZWJHTFJlbmRlcmluZ0NvCiAgICAgYWRkT2JqZWN0KG8uZ2V0KCkpOwogICAgIHJldHVybiBvOwog
fQotICAgICAgICAKKwogUGFzc1JlZlB0cjxXZWJHTEZyYW1lYnVmZmVyPiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmNyZWF0ZUZyYW1lYnVmZmVyKCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgp
KQpAQCAtMTAzNSw3ICsxMDMzLDcgQEAgUGFzc1JlZlB0cjxXZWJHTFNoYWRlcj4gV2ViR0xSZW5k
ZXJpbmdDbwogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX0VOVU0pOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgCisK
ICAgICBSZWZQdHI8V2ViR0xTaGFkZXI+IG8gPSBXZWJHTFNoYWRlcjo6Y3JlYXRlKHRoaXMsIHR5
cGUpOwogICAgIGFkZE9iamVjdChvLmdldCgpKTsKICAgICByZXR1cm4gbzsKQEAgLTEwNTMsNyAr
MTA1MSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVCdWZmZXIKIHsKICAg
ICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybjsKLSAgICAK
KwogICAgIGJ1ZmZlci0+ZGVsZXRlT2JqZWN0KCk7CiAKICAgICBpZiAoIWlzR0xFUzJDb21wbGlh
bnQoKSkgewpAQCAtMTExMSw3ICsxMTA5LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmRlbGV0ZVNoYWRlcgogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkgfHwgIXNoYWRlcikKICAg
ICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgc2hhZGVyLT5kZWxldGVPYmplY3QoKTsKIH0KIApA
QCAtMTExOSw3ICsxMTE3LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRl
eHR1cgogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkgfHwgIXRleHR1cmUpCiAgICAgICAgIHJl
dHVybjsKLSAgICAKKwogICAgIHRleHR1cmUtPmRlbGV0ZU9iamVjdCgpOwogICAgIGlmIChtX2Zy
YW1lYnVmZmVyQmluZGluZykKICAgICAgICAgbV9mcmFtZWJ1ZmZlckJpbmRpbmctPnJlbW92ZUF0
dGFjaG1lbnQodGV4dHVyZSk7CkBAIC0xMTY3LDcgKzExNjUsNiBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6ZGV0YWNoU2hhZGVyCiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKIH0KIAotCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGlzYWJsZShHQzNEZW51
bSBjYXApCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSB8fCAhdmFsaWRhdGVDYXBhYmlsaXR5
KGNhcCkpCkBAIC0xMTg1LDcgKzExODIsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
ZGlzYWJsZVZlcnRlCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IAorCiAgICAgaWYgKGluZGV4IDwgbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5zaXplKCkpCiAgICAgICAg
IG1fdmVydGV4QXR0cmliU3RhdGVbaW5kZXhdLmVuYWJsZWQgPSBmYWxzZTsKIApAQCAtMTMwOCw4
ICsxMzA1LDggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlSW5kZQogICAg
ICAgICAgICAgICAgIGxhc3RJbmRleCA9ICpwOwogICAgICAgICAgICAgKytwOwogICAgICAgICB9
Ci0gICAgfSAgICAKLSAgICAgICAgCisgICAgfQorCiAgICAgLy8gVGhlbiBzZXQgdGhlIGxhc3Qg
aW5kZXggaW4gdGhlIGluZGV4IGFycmF5IGFuZCBtYWtlIHN1cmUgaXQgaXMgdmFsaWQuCiAgICAg
bnVtRWxlbWVudHNSZXF1aXJlZCA9IGxhc3RJbmRleCArIDE7CiAgICAgcmV0dXJuIG51bUVsZW1l
bnRzUmVxdWlyZWQgPiAwOwpAQCAtMTM1MywxMCArMTM1MCwxMCBAQCBib29sIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dmFsaWRhdGVSZW5kCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
Ci0gICAgCisKICAgICBpZiAoc21hbGxlc3ROdW1FbGVtZW50cyA9PSBJTlRfTUFYKQogICAgICAg
ICBzbWFsbGVzdE51bUVsZW1lbnRzID0gMDsKLSAgICAKKwogICAgIHJldHVybiBudW1FbGVtZW50
c1JlcXVpcmVkIDw9IHNtYWxsZXN0TnVtRWxlbWVudHM7CiB9CiAKQEAgLTE1MTIsMTIgKzE1MDks
MTIgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmVuYWJsZVZlcnRleAogICAgICAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZB
TFVFKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGlmIChpbmRleCA+PSBt
X3ZlcnRleEF0dHJpYlN0YXRlLnNpemUoKSkKICAgICAgICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5y
ZXNpemUoaW5kZXggKyAxKTsKLSAgICAgICAgCisKICAgICBtX3ZlcnRleEF0dHJpYlN0YXRlW2lu
ZGV4XS5lbmFibGVkID0gdHJ1ZTsKLSAgICAKKwogICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4
QXR0cmliQXJyYXkoaW5kZXgpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
CiB9CkBAIC0xNTMwLDcgKzE1MjcsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Zmlu
aXNoKCkKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwodHJ1ZSk7CiB9CiAKLQogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZsdXNoKCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgp
KQpAQCAtMjI0NCw3ICsyMjQwLDcgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0VQogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQogICAgIEdDM0Rp
bnQgbG9jYXRpb24gPSB1bmlmb3JtTG9jYXRpb24tPmxvY2F0aW9uKCk7Ci0gICAgCisKICAgICBX
ZWJHTFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOwogICAgIC8vIEZJWE1FOiBtYWtlIHRoaXMg
bW9yZSBlZmZpY2llbnQgdXNpbmcgV2ViR0xVbmlmb3JtTG9jYXRpb24gYW5kIGNhY2hpbmcgdHlw
ZXMgaW4gaXQKICAgICBHQzNEaW50IGFjdGl2ZVVuaWZvcm1zID0gMDsKQEAgLTM3NDksNyArMzc0
NSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkZXRhY2hBbmRSZW0KICAgICBIYXNo
U2V0PFJlZlB0cjxXZWJHTE9iamVjdD4gPjo6aXRlcmF0b3IgcGVuZCA9IG1fY2FudmFzT2JqZWN0
cy5lbmQoKTsKICAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdlYkdMT2JqZWN0PiA+OjppdGVyYXRv
ciBpdCA9IG1fY2FudmFzT2JqZWN0cy5iZWdpbigpOyBpdCAhPSBwZW5kOyArK2l0KQogICAgICAg
ICAoKml0KS0+ZGV0YWNoQ29udGV4dCgpOwotICAgICAgICAKKwogICAgIG1fY2FudmFzT2JqZWN0
cy5jbGVhcigpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkocmV2aXNpb24gNzY0MDgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpA
QCAtNjksMTMgKzY5LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlbGVyYXRl
ZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRzSW50b0Nh
bnZhc0J1ZmZlcigpIGNvbnN0OwogCi0gICAgdm9pZCBhY3RpdmVUZXh0dXJlKEdDM0RlbnVtIHRl
eHR1cmUsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKLSAgICB2b2lkIGF0dGFjaFNoYWRlcihXZWJHTFBy
b2dyYW0qLCBXZWJHTFNoYWRlciosIEV4Y2VwdGlvbkNvZGUmIGVjKTsKLSAgICB2b2lkIGJpbmRB
dHRyaWJMb2NhdGlvbihXZWJHTFByb2dyYW0qLCBHQzNEdWludCBpbmRleCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYyk7Ci0gICAgdm9pZCBiaW5kQnVmZmVyKEdDM0RlbnVt
IHRhcmdldCwgV2ViR0xCdWZmZXIqLCBFeGNlcHRpb25Db2RlJiBlYyk7Ci0gICAgdm9pZCBiaW5k
RnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiwgRXhjZXB0aW9u
Q29kZSYgZWMpOwotICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFdl
YkdMUmVuZGVyYnVmZmVyKiwgRXhjZXB0aW9uQ29kZSYgZWMpOwotICAgIHZvaWQgYmluZFRleHR1
cmUoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTFRleHR1cmUqLCBFeGNlcHRpb25Db2RlJiBlYyk7Cisg
ICAgdm9pZCBhY3RpdmVUZXh0dXJlKEdDM0RlbnVtIHRleHR1cmUsIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2b2lkIGF0dGFjaFNoYWRlcihXZWJHTFByb2dyYW0qLCBXZWJHTFNoYWRlciosIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihXZWJHTFByb2dyYW0qLCBH
QzNEdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CisgICAg
dm9pZCBiaW5kQnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgV2ViR0xCdWZmZXIqLCBFeGNlcHRpb25D
b2RlJik7CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTEZy
YW1lYnVmZmVyKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcihH
QzNEZW51bSB0YXJnZXQsIFdlYkdMUmVuZGVyYnVmZmVyKiwgRXhjZXB0aW9uQ29kZSYpOworICAg
IHZvaWQgYmluZFRleHR1cmUoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTFRleHR1cmUqLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdm9pZCBibGVuZENvbG9yKEdDM0RmbG9hdCByZWQsIEdDM0RmbG9hdCBn
cmVlbiwgR0MzRGZsb2F0IGJsdWUsIEdDM0RmbG9hdCBhbHBoYSk7CiAgICAgdm9pZCBibGVuZEVx
dWF0aW9uKEdDM0RlbnVtIG1vZGUpOwogICAgIHZvaWQgYmxlbmRFcXVhdGlvblNlcGFyYXRlKEdD
M0RlbnVtIG1vZGVSR0IsIEdDM0RlbnVtIG1vZGVBbHBoYSk7CkBAIC05NCw3ICs5NCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNsZWFyRGVwdGgoR0MzRGZsb2F0KTsKICAgICB2b2lkIGNsZWFyU3Rl
bmNpbChHQzNEaW50KTsKICAgICB2b2lkIGNvbG9yTWFzayhHQzNEYm9vbGVhbiByZWQsIEdDM0Ri
b29sZWFuIGdyZWVuLCBHQzNEYm9vbGVhbiBibHVlLCBHQzNEYm9vbGVhbiBhbHBoYSk7Ci0gICAg
dm9pZCBjb21waWxlU2hhZGVyKFdlYkdMU2hhZGVyKiwgRXhjZXB0aW9uQ29kZSYgZWMpOworICAg
IHZvaWQgY29tcGlsZVNoYWRlcihXZWJHTFNoYWRlciosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAg
IC8vIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxl
dmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCog
ZGF0YSk7CiAgICAgLy8gdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJn
ZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNE
c2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQs
IEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOwpAQCAtMTMxLDggKzEzMSw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1aW50IGlu
ZGV4LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBmaW5pc2goKTsKICAgICB2b2lkIGZsdXNo
KCk7Ci0gICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIEdD
M0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2ViR0xSZW5k
ZXJidWZmZXIqLCBFeGNlcHRpb25Db2RlJiBlYyk7Ci0gICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1
cmUyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHRleHRh
cmdldCwgV2ViR0xUZXh0dXJlKiwgR0MzRGludCBsZXZlbCwgRXhjZXB0aW9uQ29kZSYgZWMpOwor
ICAgIHZvaWQgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51
bSBhdHRhY2htZW50LCBHQzNEZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFdlYkdMUmVuZGVyYnVm
ZmVyKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSB0ZXh0YXJnZXQsIFdl
YkdMVGV4dHVyZSosIEdDM0RpbnQgbGV2ZWwsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGZy
b250RmFjZShHQzNEZW51bSBtb2RlKTsKICAgICB2b2lkIGdlbmVyYXRlTWlwbWFwKEdDM0RlbnVt
IHRhcmdldCk7CiAKQEAgLTE0NywxMCArMTQ3LDEwIEBAIHB1YmxpYzoKICAgICBXZWJHTEdldElu
Zm8gZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBX
ZWJHTEdldEluZm8gZ2V0UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7
CiAgICAgV2ViR0xHZXRJbmZvIGdldFByb2dyYW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtKiwgR0Mz
RGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9M
b2coV2ViR0xQcm9ncmFtKiwgRXhjZXB0aW9uQ29kZSYgZWMpOworICAgIFN0cmluZyBnZXRQcm9n
cmFtSW5mb0xvZyhXZWJHTFByb2dyYW0qLCBFeGNlcHRpb25Db2RlJik7CiAgICAgV2ViR0xHZXRJ
bmZvIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBu
YW1lLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgV2ViR0xHZXRJbmZvIGdldFNoYWRlclBhcmFtZXRl
cihXZWJHTFNoYWRlciosIEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYyk7Ci0gICAg
U3RyaW5nIGdldFNoYWRlckluZm9Mb2coV2ViR0xTaGFkZXIqLCBFeGNlcHRpb25Db2RlJiBlYyk7
CisgICAgV2ViR0xHZXRJbmZvIGdldFNoYWRlclBhcmFtZXRlcihXZWJHTFNoYWRlciosIEdDM0Rl
bnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CisgICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2co
V2ViR0xTaGFkZXIqLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAvLyBUQkQKICAgICAvLyB2b2lk
IGdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IChHQzNEZW51bSBzaGFkZXJ0eXBlLCBHQzNEZW51
bSBwcmVjaXNpb250eXBlLCBHQzNEaW50KiByYW5nZSwgR0MzRGludCogcHJlY2lzaW9uKTsKQEAg
LTE5MiwzMCArMTkyLDMwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdGV4SW1hZ2UyRChHQzNEZW51
bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgICBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQg
Ym9yZGVyLAotICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5
cGUsIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgICAg
ICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3
KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgdGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQs
IEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAg
ICAgICBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEltYWdlRGF0YSogcGl4ZWxzLCBF
eGNlcHRpb25Db2RlJik7CisgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR0Mz
RGVudW0gdHlwZSwgSW1hZ2VEYXRhKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgdGV4SW1h
Z2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9y
bWF0LAotICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUs
IEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgICAgICAg
ICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgSFRNTEltYWdlRWxlbWVudCos
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAgICAg
ICAgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBIVE1MQ2FudmFzRWxlbWVudCogY2Fu
dmFzLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1h
dCwgR0MzRGVudW0gdHlwZSwgSFRNTENhbnZhc0VsZW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgdm9pZCB0ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVu
dW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwg
R0MzRGVudW0gdHlwZSwgSFRNTFZpZGVvRWxlbWVudCogdmlkZW8sIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBIVE1M
VmlkZW9FbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJm
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RmbG9hdCBwYXJhbSk7CiAgICAg
dm9pZCB0ZXhQYXJhbWV0ZXJpKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0Rp
bnQgcGFyYW0pOwogCiAgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBBcnJheUJ1ZmZl
clZpZXcqIHBpeGVscywgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICAgICAgICAgICAgICAgICBH
QzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEFycmF5QnVmZmVyVmlldyosIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2b2lkIHRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50
IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBJbWFnZURhdGEqIHBpeGVs
cywgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3Jt
YXQsIEdDM0RlbnVtIHR5cGUsIEltYWdlRGF0YSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lk
IHRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhv
ZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0g
Zm9ybWF0LCBHQzNEZW51bSB0eXBlLCBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSwgRXhjZXB0aW9u
Q29kZSYpOworICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVt
IHR5cGUsIEhUTUxJbWFnZUVsZW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCB0ZXhT
dWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0
LCBHQzNEaW50IHlvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1h
dCwgR0MzRGVudW0gdHlwZSwgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcywgRXhjZXB0aW9uQ29k
ZSYpOworICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5
cGUsIEhUTUxDYW52YXNFbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgdGV4U3Vi
SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwg
R0MzRGludCB5b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQs
IEdDM0RlbnVtIHR5cGUsIEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvLCBFeGNlcHRpb25Db2RlJik7
CisgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwg
SFRNTFZpZGVvRWxlbWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgdW5pZm9ybTFm
KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGZsb2F0IHgsIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICB2b2lkIHVuaWZvcm0xZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBGbG9hdDMyQXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTMzNCw5
ICszMzQsOSBAQCBwdWJsaWM6CiAgICAgLy8gSWYgbnVtRWxlbWVudHMgPD0gMCwgd2Ugb25seSBj
aGVjayBpZiBlYWNoIGVuYWJsZWQgdmVydGV4IGF0dHJpYnV0ZSBpcyBib3VuZCB0byBhIGJ1ZmZl
ci4KICAgICBib29sIHZhbGlkYXRlUmVuZGVyaW5nU3RhdGUoaW50IG51bUVsZW1lbnRzKTsKIAot
ICAgIGJvb2wgdmFsaWRhdGVXZWJHTE9iamVjdChXZWJHTE9iamVjdCogb2JqZWN0KTsKKyAgICBi
b29sIHZhbGlkYXRlV2ViR0xPYmplY3QoV2ViR0xPYmplY3QqKTsKIAotICAgIFBhc3NSZWZQdHI8
SW1hZ2U+IHZpZGVvRnJhbWVUb0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvKTsKKyAgICBQ
YXNzUmVmUHRyPEltYWdlPiB2aWRlb0ZyYW1lVG9JbWFnZShIVE1MVmlkZW9FbGVtZW50Kik7CiAK
ICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKIApAQCAtNDU3LDIwICs0
NTcsMjAgQEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJLaXRMb3NlQ29udGV4dD4gbV93ZWJraXRM
b3NlQ29udGV4dDsKIAogICAgIC8vIEhlbHBlcnMgZm9yIGdldFBhcmFtZXRlciBhbmQgb3RoZXJz
Ci0gICAgV2ViR0xHZXRJbmZvIGdldEJvb2xlYW5QYXJhbWV0ZXIoR0MzRGVudW0gcG5hbWUpOwot
ICAgIFdlYkdMR2V0SW5mbyBnZXRCb29sZWFuQXJyYXlQYXJhbWV0ZXIoR0MzRGVudW0gcG5hbWUp
OwotICAgIFdlYkdMR2V0SW5mbyBnZXRGbG9hdFBhcmFtZXRlcihHQzNEZW51bSBwbmFtZSk7Ci0g
ICAgV2ViR0xHZXRJbmZvIGdldEludFBhcmFtZXRlcihHQzNEZW51bSBwbmFtZSk7Ci0gICAgV2Vi
R0xHZXRJbmZvIGdldExvbmdQYXJhbWV0ZXIoR0MzRGVudW0gcG5hbWUpOwotICAgIFdlYkdMR2V0
SW5mbyBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIoR0MzRGVudW0gcG5hbWUpOwotICAgIFdlYkdM
R2V0SW5mbyBnZXRXZWJHTEZsb2F0QXJyYXlQYXJhbWV0ZXIoR0MzRGVudW0gcG5hbWUpOwotICAg
IFdlYkdMR2V0SW5mbyBnZXRXZWJHTEludEFycmF5UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lKTsK
KyAgICBXZWJHTEdldEluZm8gZ2V0Qm9vbGVhblBhcmFtZXRlcihHQzNEZW51bSk7CisgICAgV2Vi
R0xHZXRJbmZvIGdldEJvb2xlYW5BcnJheVBhcmFtZXRlcihHQzNEZW51bSk7CisgICAgV2ViR0xH
ZXRJbmZvIGdldEZsb2F0UGFyYW1ldGVyKEdDM0RlbnVtKTsKKyAgICBXZWJHTEdldEluZm8gZ2V0
SW50UGFyYW1ldGVyKEdDM0RlbnVtKTsKKyAgICBXZWJHTEdldEluZm8gZ2V0TG9uZ1BhcmFtZXRl
cihHQzNEZW51bSk7CisgICAgV2ViR0xHZXRJbmZvIGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcihH
QzNEZW51bSk7CisgICAgV2ViR0xHZXRJbmZvIGdldFdlYkdMRmxvYXRBcnJheVBhcmFtZXRlcihH
QzNEZW51bSk7CisgICAgV2ViR0xHZXRJbmZvIGdldFdlYkdMSW50QXJyYXlQYXJhbWV0ZXIoR0Mz
RGVudW0pOwogCiAgICAgdm9pZCB0ZXhJbWFnZTJEQmFzZShHQzNEZW51bSB0YXJnZXQsIEdDM0Rp
bnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgdm9p
ZCogcGl4ZWxzLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCB0ZXhJbWFnZTJESW1wbChHQzNE
ZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBJbWFn
ZSogaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdDM0Rl
bnVtIHR5cGUsIEltYWdlKiwKICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZmxpcFksIGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgdGV4U3ViSW1h
Z2UyREJhc2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQs
IEdDM0RpbnQgeW9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3
aWR0aCwgR0MzRHNpemVpIGhlaWdodCwKQEAgLTU0Nyw3ICs1NDcsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gcHJpbnQgd2FybmluZ3MgdG8gY29uc29sZS4gQ3VycmVu
dGx5CiAgICAgLy8gdXNlZCBvbmx5IHRvIHdhcm4gYWJvdXQgdXNlIG9mIG9ic29sZXRlIGZ1bmN0
aW9ucy4KLSAgICB2b2lkIHByaW50V2FybmluZ1RvQ29uc29sZShjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpOworICAgIHZvaWQgcHJpbnRXYXJuaW5nVG9Db25zb2xlKGNvbnN0IFN0cmluZyYpOwogCiAg
ICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIGlucHV0IHBhcmFtZXRlcnMgZm9yIGZy
YW1lYnVmZmVyIGZ1bmN0aW9ucy4KICAgICAvLyBHZW5lcmF0ZSBHTCBlcnJvciBpZiBwYXJhbWV0
ZXJzIGFyZSBpbGxlZ2FsLgpAQCAtNTYzLDIwICs1NjMsMjAgQEAgcHVibGljOgogICAgIGJvb2wg
dmFsaWRhdGVDYXBhYmlsaXR5KEdDM0RlbnVtKTsKIAogICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0
byB2YWxpZGF0ZSBpbnB1dCBwYXJhbWV0ZXJzIGZvciB1bmlmb3JtIGZ1bmN0aW9ucy4KLSAgICBi
b29sIHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBGbG9hdDMyQXJyYXkqIHYsIEdDM0RzaXplaSBtb2QpOwotICAgIGJvb2wgdmFs
aWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sIEludDMyQXJyYXkqIHYsIEdDM0RzaXplaSBtb2QpOwotICAgIGJvb2wgdmFsaWRhdGVVbmlm
b3JtUGFyYW1ldGVycyhjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIHZvaWQq
IHYsIEdDM0RzaXplaSBzaXplLCBHQzNEc2l6ZWkgbW9kKTsKLSAgICBib29sIHZhbGlkYXRlVW5p
Zm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSogdiwgR0MzRHNpemVpIG1vZCk7
Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCB2b2lkKiB2LCBH
QzNEc2l6ZWkgc2l6ZSwgR0MzRHNpemVpIG1vZCk7CisgICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1Q
YXJhbWV0ZXJzKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgRmxvYXQzMkFycmF5KiwgR0Mz
RHNpemVpIG1vZCk7CisgICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiwgSW50MzJBcnJheSosIEdDM0RzaXplaSBtb2QpOworICAgIGJv
b2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbios
IHZvaWQqLCBHQzNEc2l6ZWkgc2l6ZSwgR0MzRHNpemVpIG1vZCk7CisgICAgYm9vbCB2YWxpZGF0
ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0Mz
RGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkqLCBHQzNEc2l6ZWkgbW9kKTsKKyAgICBi
b29sIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIHZvaWQqLCBHQzNEc2l6ZWkgc2l6ZSwgR0Mz
RHNpemVpIG1vZCk7CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgcGFyYW1l
dGVycyBmb3IgYnVmZmVyRGF0YS4KICAgICAvLyBSZXR1cm4gdGhlIGN1cnJlbnQgYm91bmQgYnVm
ZmVyIHRvIHRhcmdldCwgb3IgMCBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkLgogICAgIFdlYkdM
QnVmZmVyKiB2YWxpZGF0ZUJ1ZmZlckRhdGFQYXJhbWV0ZXJzKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGVudW0gdXNhZ2UpOwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3IgdmVydGV4QXR0cmli
TmZ7dn0uCi0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWJmSW1wbChHQzNEdWludCBpbmRleCwgR0MzRHNp
emVpIGV4cGVjdGVkU2l6ZSwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEsIEdDM0RmbG9hdCB2
MiwgR0MzRGZsb2F0IHYzKTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYmZ2SW1wbChHQzNEdWludCBp
bmRleCwgRmxvYXQzMkFycmF5KiB2LCBHQzNEc2l6ZWkgZXhwZWN0ZWRTaXplKTsKLSAgICB2b2lk
IHZlcnRleEF0dHJpYmZ2SW1wbChHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6
ZWkgc2l6ZSwgR0MzRHNpemVpIGV4cGVjdGVkU2l6ZSk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJm
SW1wbChHQzNEdWludCBpbmRleCwgR0MzRHNpemVpIGV4cGVjdGVkU2l6ZSwgR0MzRGZsb2F0LCBH
QzNEZmxvYXQsIEdDM0RmbG9hdCwgR0MzRGZsb2F0KTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYmZ2
SW1wbChHQzNEdWludCBpbmRleCwgRmxvYXQzMkFycmF5KiwgR0MzRHNpemVpIGV4cGVjdGVkU2l6
ZSk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJmdkltcGwoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9h
dCosIEdDM0RzaXplaSBzaXplLCBHQzNEc2l6ZWkgZXhwZWN0ZWRTaXplKTsKIAogICAgIC8vIEhl
bHBlcnMgZm9yIHNpbXVsYXRpbmcgdmVydGV4QXR0cmliMAogICAgIHZvaWQgaW5pdFZlcnRleEF0
dHJpYjAoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5j
cHAJKHJldmlzaW9uIDc2NDA4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xT
aGFkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwogUGFz
c1JlZlB0cjxXZWJHTFNoYWRlcj4gV2ViR0xTaGFkZXI6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0Nv
bnRleHQqIGN0eCwgR0MzRGVudW0gdHlwZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdl
YkdMU2hhZGVyKGN0eCwgdHlwZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xUZXh0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFRleHR1cmUuY3BwCShyZXZpc2lvbiA3NjQwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcg
QEAKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotICAgIAorCiBQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4gV2ViR0xUZXh0dXJlOjpjcmVh
dGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJHTFRleHR1cmUoY3R4KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwCShyZXZpc2lvbiA3NjQwOCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIldlYkdMVW5pZm9ybUxvY2F0aW9u
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwogUGFzc1JlZlB0cjxXZWJHTFVuaWZv
cm1Mb2NhdGlvbj4gV2ViR0xVbmlmb3JtTG9jYXRpb246OmNyZWF0ZShXZWJHTFByb2dyYW0qIHBy
b2dyYW0sIEdDM0RpbnQgbG9jYXRpb24pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJH
TFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBsb2NhdGlvbikpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFVuaWZvcm1Mb2NhdGlvbi5oCShyZXZpc2lvbiA3
NjQwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDE0ICszOSwxNCBAQCBjbGFzcyBXZWJHTFVuaWZvcm1M
b2NhdGlvbiA6IHB1YmxpYyBSZWZDCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR0xVbmlmb3Jt
TG9jYXRpb24oKSB7IH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMVW5pZm9ybUxvY2F0
aW9uPiBjcmVhdGUoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBHQzNEaW50IGxvY2F0aW9uKTsKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTFVuaWZvcm1Mb2NhdGlvbj4gY3JlYXRlKFdlYkdMUHJv
Z3JhbSosIEdDM0RpbnQgbG9jYXRpb24pOwogCiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtKCkg
Y29uc3Q7CiAKICAgICBHQzNEaW50IGxvY2F0aW9uKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAg
ICBXZWJHTFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0qIHByb2dyYW0sIEdDM0RpbnQgbG9j
YXRpb24pOworICAgIFdlYkdMVW5pZm9ybUxvY2F0aW9uKFdlYkdMUHJvZ3JhbSosIEdDM0RpbnQg
bG9jYXRpb24pOwogCiBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJHTFByb2dyYW0+IG1fcHJvZ3Jh
bTsK
</data>
<flag name="review"
          id="71448"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>