<?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>15389</bug_id>
          
          <creation_ts>2007-10-05 22:12:09 -0700</creation_ts>
          <short_desc>SVG renderers should track transform/path changes, instead of pulling every time from SVG DOM</short_desc>
          <delta_ts>2010-04-13 03:36:12 -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>SVG</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://research.sun.com/projects/lively/index.xhtml</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>15388</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>krit</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>57895</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-05 22:12:09 -0700</bug_when>
    <thetext>setting the transform on an SVG renderer causes a layout even if no change was made

I think the lively kernel has a &quot;bug&quot; where they are setting the same transform on some of their elements repeatedly.  We relayout (and repaint) those elements, even if the transform hasn&apos;t changed.  We shouldn&apos;t do that. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57896</commentid>
    <comment_count>1</comment_count>
      <attachid>16558</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-05 22:12:26 -0700</bug_when>
    <thetext>Created attachment 16558
test case using setAttribute</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57897</commentid>
    <comment_count>2</comment_count>
      <attachid>16559</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-05 22:17:58 -0700</bug_when>
    <thetext>Created attachment 16559
another test case using TransformList::initialize</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57898</commentid>
    <comment_count>3</comment_count>
      <attachid>16560</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-05 22:30:59 -0700</bug_when>
    <thetext>Created attachment 16560
potential fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57900</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-05 23:05:18 -0700</bug_when>
    <thetext>So the &quot;potential fix&quot; doesn&apos;t actually work for *either* test case due to notifyAttributeChanged and the ultimate-evil which that function is.  nAC is called indiscriminately *any time* any attribute changes, and is the single &quot;notification method&quot; from tear-off javascript bindings back into SVG DOM elements.  We&apos;ve had at least one bug on the subject before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57901</commentid>
    <comment_count>5</comment_count>
      <attachid>16560</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2007-10-05 23:14:33 -0700</bug_when>
    <thetext>Comment on attachment 16560
potential fix

Looks fine -- we might want to go through and do similar on all the other similar attribute setters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57903</commentid>
    <comment_count>6</comment_count>
      <attachid>16560</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-05 23:37:27 -0700</bug_when>
    <thetext>Comment on attachment 16560
potential fix

Hadn&apos;t meant for this to be reviewed.  We could apply this, but it doesn&apos;t help us much given nAC has already marked us for layout before we even get to this code. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57923</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-06 02:01:15 -0700</bug_when>
    <thetext>The potential fix was landed as part of bug 15388: r26077 on feature-branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211403</commentid>
    <comment_count>8</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-04-11 12:46:56 -0700</bug_when>
    <thetext>The bug is still valid, though the codebase changed a lot since 2007, so I had to change the title to reflect what is really happening these days.
Uploading a patch to fix this problem soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211429</commentid>
    <comment_count>9</comment_count>
      <attachid>53110</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-04-11 13:30:16 -0700</bug_when>
    <thetext>Created attachment 53110
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211685</commentid>
    <comment_count>10</comment_count>
      <attachid>53110</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-04-12 11:41:44 -0700</bug_when>
    <thetext>Comment on attachment 53110
Patch

Fantastic patch! r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211909</commentid>
    <comment_count>11</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-04-13 03:36:12 -0700</bug_when>
    <thetext>Committed r57509: &lt;http://trac.webkit.org/changeset/57509&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>16558</attachid>
            <date>2007-10-05 22:12:26 -0700</date>
            <delta_ts>2007-10-05 22:12:26 -0700</delta_ts>
            <desc>test case using setAttribute</desc>
            <filename>001.xml</filename>
            <type>application/xml</type>
            <size>527</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxnPgogICAgPHJlY3Qg
ZmlsbD0icmVkIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgLz4KICAgIDxyZWN0IGlkPSJ0ZXN0
IiBmaWxsPSJibHVlIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIC8+CiAgPC9nPgogIDx0ZXh0IHg9
IjEwIiB5PSIxMjAiPlR1cm4gb24gUXVhcnR6IERlYnVnJ3MgImZsYXNoIG9uIHNjcmVlbiB1cGRh
dGVzIiB0byBzZWUgdGhpcyByZXBhaW50IHRvbyBtdWNoLjwvdGV4dD4KICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+PCFbQ0RBVEFbCiAgZnVuY3Rpb24gYm91bmNlKCkgewogICAgdmFy
IHJlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOwogICAgcmVjdC5zZXRBdHRy
aWJ1dGUoInRyYW5zZm9ybSIsICJzY2FsZSgyKSIpOwogICAgd2luZG93LnNldFRpbWVvdXQoYm91
bmNlLCAyMDApOwogIH0KICB3aW5kb3cuc2V0VGltZW91dChib3VuY2UsIDIwMCk7CiAgXV0+PC9z
Y3JpcHQ+Cjwvc3ZnPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>16559</attachid>
            <date>2007-10-05 22:17:58 -0700</date>
            <delta_ts>2007-10-05 22:17:58 -0700</delta_ts>
            <desc>another test case using TransformList::initialize</desc>
            <filename>001.xml</filename>
            <type>application/xml</type>
            <size>631</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxnPgogICAgPHJlY3Qg
ZmlsbD0icmVkIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgLz4KICAgIDxyZWN0IGlkPSJ0ZXN0
IiBmaWxsPSJibHVlIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIC8+CiAgPC9nPgogIDx0ZXh0IHg9
IjEwIiB5PSIxMjAiPlR1cm4gb24gUXVhcnR6IERlYnVnJ3MgImZsYXNoIG9uIHNjcmVlbiB1cGRh
dGVzIiB0byBzZWUgdGhpcyByZXBhaW50IHRvbyBtdWNoLjwvdGV4dD4KICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+PCFbQ0RBVEFbCiAgZnVuY3Rpb24gYm91bmNlKCkgewogICAgdmFy
IHJlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOwogICAgdmFyIG5ld1RyYW5z
Zm9ybSA9IHJlY3Qub3duZXJTVkdFbGVtZW50LmNyZWF0ZVNWR1RyYW5zZm9ybSgpOwogICAgbmV3
VHJhbnNmb3JtLnNldFNjYWxlKDIsIDIpOwogICAgcmVjdC50cmFuc2Zvcm0uYmFzZVZhbC5pbml0
aWFsaXplKG5ld1RyYW5zZm9ybSk7CiAgICB3aW5kb3cuc2V0VGltZW91dChib3VuY2UsIDIwMCk7
CiAgfQogIHdpbmRvdy5zZXRUaW1lb3V0KGJvdW5jZSwgMjAwKTsKICBdXT48L3NjcmlwdD4KPC9z
dmc+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16560</attachid>
            <date>2007-10-05 22:30:59 -0700</date>
            <delta_ts>2010-04-11 13:30:03 -0700</delta_ts>
            <desc>potential fix</desc>
            <filename>little.patch</filename>
            <type>text/plain</type>
            <size>889</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IGtzdmcyL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0ga3N2ZzIvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcAkocmV2
aXNpb24gMjYwNzUpCisrKyBrc3ZnMi9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxMiArNjYsMTEgQEAgQWZmaW5lVHJhbnNmb3JtIFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbAogCiB2b2lkIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50Ojp1cGRhdGVMb2NhbFRyYW5zZm9ybShTVkdUcmFuc2Zvcm1MaXN0KiBsb2NhbFRyYW5zZm9y
bXMpCiB7Ci0gICAgLy8gVXBkYXRlIGNhY2hlZCBsb2NhbCBtYXRyaXgKICAgICBTVkdUcmFuc2Zv
cm0gbG9jYWxUcmFuc2Zvcm0gPSBsb2NhbFRyYW5zZm9ybXMtPmNvbmNhdGVuYXRlKCk7Ci0gICAg
aWYgKGxvY2FsVHJhbnNmb3JtLmlzVmFsaWQoKSkKLSAgICAgICAgbV9sb2NhbE1hdHJpeCA9IGxv
Y2FsVHJhbnNmb3JtLm1hdHJpeCgpOwotICAgIGVsc2UgCi0gICAgICAgIG1fbG9jYWxNYXRyaXgg
PSBBZmZpbmVUcmFuc2Zvcm0oKTsKKyAgICBpZiAobG9jYWxUcmFuc2Zvcm0ubWF0cml4KCkgPT0g
bV9sb2NhbE1hdHJpeCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fbG9jYWxNYXRyaXgg
PSBsb2NhbFRyYW5zZm9ybS5tYXRyaXgoKTsKICAgICBpZiAocmVuZGVyZXIoKSkgewogICAgICAg
ICByZW5kZXJlcigpLT5zZXRMb2NhbFRyYW5zZm9ybShtX2xvY2FsTWF0cml4KTsKICAgICAgICAg
cmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53110</attachid>
            <date>2010-04-11 13:30:16 -0700</date>
            <delta_ts>2010-04-12 11:41:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-15389-20100411223010.patch</filename>
            <type>text/plain</type>
            <size>41220</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsOTMgQEAKKzIwMTAtMDQtMDkgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU1ZHIHJlbmRlcmVycyBzaG91bGQgdHJhY2sgdHJhbnNmb3JtL3BhdGggY2hhbmdlcywg
aW5zdGVhZCBvZiBwdWxsaW5nIGV2ZXJ5IHRpbWUgZnJvbSBTVkcgRE9NCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM4OQorCisgICAgICAgIFJlbmRl
clBhdGggY2FjaGVzIHJlcGFpbnQgcmVjdGFuZ2xlcyAoZmlsbC9zdHJva2UgYmJveCBldGMuKSB0
aG91Z2ggdGhpcyBjYWNoaW5nCisgICAgICAgIHdhcyBlZmZlY3RpdmVseSB1c2VsZXNzIGJlY2F1
c2UgZXZlcnkgbGF5b3V0KCkgY2FsbCBjYXVzZWQgdGhlbSB0byBiZSByZXNldCB0byBlbXB0eSBy
ZWN0cy4KKyAgICAgICAgRnVydGhlcm1vcmUgUmVuZGVyUGF0aDo6bGF5b3V0KCkgcXVlcmllZCB0
aGUgU1ZHIERPTSB1cG9uIGV2ZXJ5IGludm9jYXRpb24gdG8gcmV0cmlldmUKKyAgICAgICAgdGhl
IFBhdGggb2JqZWN0LCBpbnN0ZWFkIG9mIG9ubHkgZG9pbmcgaXQgd2hlbiBuZWNlc3NhcnkuIEV2
ZW4gdGhlIFRyYW5zZm9ybWF0aW9uTWF0cml4CisgICAgICAgIHdhcyBwb2xsZWQgZXZlcnl0aW1l
IGZyb20gdGhlIFNWRyBET00uCisKKyAgICAgICAgTW92ZSB0aGUga25vd25sZWRnZSB3aGV0ZXIg
d2UgbmVlZCB0byB1cGRhdGUgcGF0aC90cmFuc2Zvcm0gaW50byB0aGUgcmVuZGVyIHRyZWUgYW5k
CisgICAgICAgIG9ubHkgdXBkYXRlIHdoZW4gbmVjZXNzYXJ5LiBUaGlzIHNob3VsZCByZXN1bHQg
aW4gYSBodWdlIHBlcmZvcm1hbmNlIGluY3JlYXNlLCB3aXRoCisgICAgICAgIHRoZSBkcmF3YmFj
ayBvZiBhZGRpbmcgc2xpZ2h0bHkgbW9yZSBtZW1vcnksIGJlY2F1c2Ugd2UgbmVlZCB0byBhZGQg
Ym9vbGVhbnMgaW5kaWNhdGluZworICAgICAgICB0aGUgc3RhdHVzIG9mIHBhdGgvdHJhbnNmb3Jt
IChpcyBkaXJ0eT8pLgorCisgICAgICAgIERvZXNuJ3QgYWZmZWN0IGFueSB0ZXN0cywgb25seSBw
ZXJmb3JtYW5jZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZvcmVpZ25PYmplY3Q6OlJlbmRlckZvcmVpZ25P
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRm9yZWlnbk9iamVjdDo6bGF5b3V0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRm9yZWlnbk9iamVjdDo6c2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6c2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0OjpzZXROZWVkc0JvdW5kYXJpZXNVcGRhdGUpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclBhdGg6OlJlbmRlclBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUGF0aDo6bGF5b3V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclBhdGg6OmludmFsaWRhdGVDYWNoZWRCb3VuZGFyaWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclBhdGg6OnN0eWxlV2lsbENoYW5nZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclBhdGg6OnNldE5lZWRz
Qm91bmRhcmllc1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJQYXRoOjpzZXROZWVk
c1BhdGhVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUGF0aDo6c2V0TmVlZHNUcmFu
c2Zvcm1VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUGF0aDo6bG9jYWxUb1BhcmVu
dFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJQYXRoOjpsb2NhbFRyYW5zZm9y
bSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR0ltYWdlOjpSZW5kZXJTVkdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdJbWFnZTo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZH
SW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpzZXROZWVkc1RyYW5z
Zm9ybVVwZGF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmludmFs
aWRhdGVDbGllbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OmludmFs
aWRhdGVDbGllbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmludmFs
aWRhdGVDbGllbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjpSZW5kZXJTVkdUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclNWR1RleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OnNldE5lZWRz
VHJhbnNmb3JtVXBkYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHVHJhbnNmb3Jt
YWJsZUNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUcmFuc2Zvcm1h
YmxlQ29udGFpbmVyOjpSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6OmNhbGN1bGF0ZUxvY2Fs
VHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNv
bnRhaW5lci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRh
aW5lcjo6bG9jYWxUb1BhcmVudFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyOjpzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyOjpsb2NhbFRyYW5z
Zm9ybSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjphcHBseVJl
c3VsdHNUb1RhcmdldCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjphcHBs
eVJlc3VsdHNUb1RhcmdldCk6CisgICAgICAgICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6
CisgICAgICAgICogc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0VsbGlwc2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdH
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdMaW5lRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKiBzdmcvU1ZHUG9seUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUG9seUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdS
ZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1RleHRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1RleHRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAg
ICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKwogMjAxMC0wNC0xMCAgTGFzemxvIEdvbWJvcyAg
PGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0
aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3Jl
aWduT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3Jl
aWduT2JqZWN0LmNwcAkocmV2aXNpb24gNTc0MTgpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGb3JlaWduT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlckZvcmVpZ25PYmplY3Q6OlJlbmRlckZvcmVpZ25PYmpl
Y3QoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQqIG5vZGUpIAogICAgIDogUmVuZGVyU1ZHQmxvY2so
bm9kZSkKKyAgICAsIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUodHJ1ZSkKIHsKIH0KIApAQCAtOTks
OSArMTAwLDEyIEBAIHZvaWQgUmVuZGVyRm9yZWlnbk9iamVjdDo6bGF5b3V0KCkKICAgICBBU1NF
UlQoIXZpZXcoKS0+bGF5b3V0U3RhdGVFbmFibGVkKCkpOyAvLyBSZW5kZXJTVkdSb290IGRpc2Fi
bGVzIGxheW91dFN0YXRlIGZvciB0aGUgU1ZHIHJlbmRlcmluZyB0cmVlLgogCiAgICAgTGF5b3V0
UmVwYWludGVyIHJlcGFpbnRlcigqdGhpcywgY2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCkp
OwotCiAgICAgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQqIGZvcmVpZ24gPSBzdGF0aWNfY2FzdDxT
VkdGb3JlaWduT2JqZWN0RWxlbWVudCo+KG5vZGUoKSk7Ci0gICAgbV9sb2NhbFRyYW5zZm9ybSA9
IGZvcmVpZ24tPmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKTsKKworICAgIGlmIChtX25lZWRzVHJh
bnNmb3JtVXBkYXRlKSB7CisgICAgICAgIG1fbG9jYWxUcmFuc2Zvcm0gPSBmb3JlaWduLT5hbmlt
YXRlZExvY2FsVHJhbnNmb3JtKCk7CisgICAgICAgIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSBm
YWxzZTsKKyAgICB9CiAKICAgICAvLyBDYWNoZSB2aWV3cG9ydCBib3VuZGFyaWVzCiAgICAgRmxv
YXRQb2ludCB2aWV3cG9ydExvY2F0aW9uKGZvcmVpZ24tPngoKS52YWx1ZShmb3JlaWduKSwgZm9y
ZWlnbi0+eSgpLnZhbHVlKGZvcmVpZ24pKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZvcmVpZ25PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
b3JlaWduT2JqZWN0LmgJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRm9yZWlnbk9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdGb3JlaWduT2JqZWN0KCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQgLCBib29sIHVzZVRyYW5z
Zm9ybXMsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSkgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgeyBtX25lZWRzVHJhbnNmb3JtVXBkYXRl
ID0gdHJ1ZTsgfQogCiAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY2FsY1dpZHRoKCk7CkBA
IC02Miw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0OwogICAgIHZpcnR1YWwgQWZmaW5lVHJh
bnNmb3JtIGxvY2FsVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsg
fQogCisgICAgYm9vbCBtX25lZWRzVHJhbnNmb3JtVXBkYXRlIDogMTsKICAgICBGbG9hdFJlY3Qg
bV92aWV3cG9ydDsKICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9sb2NhbFRyYW5zZm9ybTsKICAgICBt
dXRhYmxlIEFmZmluZVRyYW5zZm9ybSBtX2xvY2FsVG9QYXJlbnRUcmFuc2Zvcm07CkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2aXNpb24gNTc0MTgpCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzQxLDYgKzM0MSwxMiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBTVkdSZW5kZXJCYXNlKiB0b1NWR1JlbmRlckJhc2Uo
KSBjb25zdDsKICAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlKiB0b1JlbmRlclNWR1Jlc291
cmNlKCk7CiAKKyAgICAvLyBGSVhNRTogVGhvc2UgYmVsb25nIGludG8gYSBTVkcgc3BlY2lmaWMg
YmFzZS1jbGFzcyBmb3IgYWxsIHJlbmRlcmVycyAoc2VlIGFib3ZlKQorICAgIC8vIFVuZm9ydHVu
YXRlbHkgd2UgZG9uJ3QgaGF2ZSBzdWNoIGEgY2xhc3MgeWV0LCBiZWNhdXNlIGl0J3Mgbm90IHBv
c3NpYmxlIGZvciBhbGwgcmVuZGVyZXJzCisgICAgLy8gdG8gaW5oZXJpdCBmcm9tIFJlbmRlclNW
R09iamVjdCAtPiBSZW5kZXJPYmplY3QgKHNvbWUgbmVlZCBSZW5kZXJCbG9jayBpbmhlcml0YW5j
ZSBmb3IgaW5zdGFuY2UpCisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRl
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQm91bmRhcmllc1VwZGF0ZSgpIHsgfQor
CiAgICAgLy8gUGVyIFNWRyAxLjEgb2JqZWN0Qm91bmRpbmdCb3ggaWdub3JlcyBjbGlwcGluZywg
bWFza2luZywgZmlsdGVyIGVmZmVjdHMsIG9wYWNpdHkgYW5kIHN0cm9rZS13aWR0aC4KICAgICAv
LyBUaGlzIGlzIHVzZWQgZm9yIGFsbCBjb21wdXRhdGlvbiBvZiBvYmplY3RCb3VuZGluZ0JveCBy
ZWxhdGl2ZSB1bml0cyBhbmQgYnkgU1ZHTG9jYXRlYWJsZTo6Z2V0QkJveCgpLgogICAgIC8vIE5P
VEU6IE1hcmtlcnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgaWdub3JlZCBoZXJlIGJ5IFNWRyAxLjEg
c3BlYywgYnV0IHdlIGlnbm9yZSB0aGVtCkBAIC0zNTMsNyArMzU5LDYgQEAgcHVibGljOgogICAg
IC8vIHJlc3BlY3RpbmcgY2xpcHBpbmcsIG1hc2tpbmcsIGZpbHRlcnMsIG9wYWNpdHksIHN0cm9r
ZS13aWR0aCBhbmQgbWFya2VycwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5M
b2NhbENvb3JkaW5hdGVzKCkgY29uc3Q7CiAKLSAgICAvLyBGSVhNRTogVGhpcyBhY2Nlc3NvciBp
cyBkZXByZWNhdGVkIGFuZCBtb3N0bHkgYXJvdW5kIGZvciBTVkdSZW5kZXJUcmVlQXNUZXh0Lgog
ICAgIC8vIFRoaXMgb25seSByZXR1cm5zIHRoZSB0cmFuc2Zvcm09IiIgdmFsdWUgZnJvbSB0aGUg
ZWxlbWVudAogICAgIC8vIG1vc3QgY2FsbHNpdGVzIHdhbnQgbG9jYWxUb1BhcmVudFRyYW5zZm9y
bSgpIGluc3RlYWQuCiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0o
KSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCShyZXZpc2lvbiA1NzQxOCkK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
NCwxOSArNjQsMTIgQEAgcHJpdmF0ZToKIAogUmVuZGVyUGF0aDo6UmVuZGVyUGF0aChTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCogbm9kZSkKICAgICA6IFJlbmRlclNWR01vZGVsT2JqZWN0
KG5vZGUpCisgICAgLCBtX25lZWRzQm91bmRhcmllc1VwZGF0ZShmYWxzZSkgLy8gZGVmYXVsdCBp
cyBmYWxzZSwgYXMgdGhpcyBpcyBvbmx5IHVzZWQgd2hlbiBhIFJlbmRlclNWR1Jlc291cmNlIHRl
bGxzIHVzIHRoYXQgdGhlIGJvdW5kYXJpZXMgbmVlZCB0byBiZSByZWNhY2hlZAorICAgICwgbV9u
ZWVkc1BhdGhVcGRhdGUodHJ1ZSkgLy8gZGVmYXVsdCBpcyB0cnVlLCBzbyB3ZSBncmFiIGEgUGF0
aCBvYmplY3Qgb25jZSBmcm9tIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50CisgICAgLCBt
X25lZWRzVHJhbnNmb3JtVXBkYXRlKHRydWUpIC8vIGRlZmF1bHQgaXMgdHJ1ZSwgc28gd2UgZ3Jh
YiBhIEFmZmluZVRyYW5zZm9ybSBvYmplY3Qgb25jZSBmcm9tIFNWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50CiB7CiB9CiAKLWNvbnN0IEFmZmluZVRyYW5zZm9ybSYgUmVuZGVyUGF0aDo6bG9j
YWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbG9jYWxUcmFuc2Zv
cm07Ci19Ci0KLUFmZmluZVRyYW5zZm9ybSBSZW5kZXJQYXRoOjpsb2NhbFRyYW5zZm9ybSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07Ci19Ci0KIGJvb2wgUmVuZGVyUGF0
aDo6ZmlsbENvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBib29sIHJlcXVpcmVzRmls
bCkgY29uc3QKIHsKICAgICBpZiAobV9wYXRoLmlzRW1wdHkoKSkKQEAgLTE3MSwyMiArMTY0LDM0
IEBAIEZsb2F0UmVjdCBSZW5kZXJQYXRoOjpyZXBhaW50UmVjdEluTG9jYWwKICAgICByZXR1cm4g
bV9jYWNoZWRMb2NhbFJlcGFpbnRSZWN0OwogfQogCi12b2lkIFJlbmRlclBhdGg6OnNldFBhdGgo
Y29uc3QgUGF0aCYgbmV3UGF0aCkKLXsKLSAgICBtX3BhdGggPSBuZXdQYXRoOwotICAgIG1fY2Fj
aGVkTG9jYWxSZXBhaW50UmVjdCA9IEZsb2F0UmVjdCgpOwotICAgIG1fY2FjaGVkTG9jYWxTdHJv
a2VCQm94ID0gRmxvYXRSZWN0KCk7Ci0gICAgbV9jYWNoZWRMb2NhbEZpbGxCQm94ID0gRmxvYXRS
ZWN0KCk7Ci0gICAgbV9jYWNoZWRMb2NhbE1hcmtlckJCb3ggPSBGbG9hdFJlY3QoKTsKLX0KLQog
dm9pZCBSZW5kZXJQYXRoOjpsYXlvdXQoKQogewogICAgIExheW91dFJlcGFpbnRlciByZXBhaW50
ZXIoKnRoaXMsIGNoZWNrRm9yUmVwYWludER1cmluZ0xheW91dCgpICYmIHNlbGZOZWVkc0xheW91
dCgpKTsKLQogICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KiBlbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqPihub2RlKCkpOwotICAgIG1f
bG9jYWxUcmFuc2Zvcm0gPSBlbGVtZW50LT5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCk7Ci0gICAg
c2V0UGF0aChlbGVtZW50LT50b1BhdGhEYXRhKCkpOworCisgICAgLy8gV2UgbmVlZCB0byB1cGRh
dGUgdGhlIFBhdGggb2JqZWN0IHdoZW5ldmVyIHRoZSB1bmRlcmx5aW5nIFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50IHVzZXMgcmVsYXRpdmUgdmFsdWVzCisgICAgLy8gYXMgdGhlIHZpZXdw
b3J0IHNpemUgbWF5IGhhdmUgY2hhbmdlZC4gSXQgd291bGQgYmUgbmljZSB0byBvcHRpbWl6ZSB0
aGlzIHRvIGRldGVjdCB0aGVzZSBjaGFuZ2VzLCBhbmQgb25seQorICAgIC8vIHVwZGF0ZSB3aGVu
IG5lZWRlZCwgZXZlbiB3aGVuIHVzaW5nIHJlbGF0aXZlIHZhbHVlcy4KKyAgICBpZiAoIW1fbmVl
ZHNQYXRoVXBkYXRlICYmIGVsZW1lbnQtPmhhc1JlbGF0aXZlVmFsdWVzKCkpCisgICAgICAgIG1f
bmVlZHNQYXRoVXBkYXRlID0gdHJ1ZTsKKworICAgIGJvb2wgbmVlZHNVcGRhdGUgPSBtX25lZWRz
UGF0aFVwZGF0ZSB8fCBtX25lZWRzVHJhbnNmb3JtVXBkYXRlIHx8IG1fbmVlZHNCb3VuZGFyaWVz
VXBkYXRlOworCisgICAgaWYgKG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlKQorICAgICAgICBtX25l
ZWRzQm91bmRhcmllc1VwZGF0ZSA9IGZhbHNlOworCisgICAgaWYgKG1fbmVlZHNQYXRoVXBkYXRl
KSB7CisgICAgICAgIG1fcGF0aCA9IGVsZW1lbnQtPnRvUGF0aERhdGEoKTsKKyAgICAgICAgbV9u
ZWVkc1BhdGhVcGRhdGUgPSBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAobV9uZWVkc1RyYW5zZm9y
bVVwZGF0ZSkgeworICAgICAgICBtX2xvY2FsVHJhbnNmb3JtID0gZWxlbWVudC0+YW5pbWF0ZWRM
b2NhbFRyYW5zZm9ybSgpOworICAgICAgICBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0gZmFsc2U7
CisgICAgfQorCisgICAgaWYgKG5lZWRzVXBkYXRlKQorICAgICAgICBpbnZhbGlkYXRlQ2FjaGVk
Qm91bmRhcmllcygpOwogCiAgICAgcmVwYWludGVyLnJlcGFpbnRBZnRlckxheW91dCgpOwogICAg
IHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKQEAgLTMyNiw2ICszMzEsMjAgQEAgdm9pZCBSZW5kZXJQ
YXRoOjpjYWxjdWxhdGVNYXJrZXJCb3VuZHNJZgogICAgIG1fY2FjaGVkTG9jYWxNYXJrZXJCQm94
ID0gbV9tYXJrZXJMYXlvdXRJbmZvLmNhbGN1bGF0ZUJvdW5kYXJpZXMoc3RhcnRNYXJrZXIsIG1p
ZE1hcmtlciwgZW5kTWFya2VyLCBzdHJva2VXaWR0aCwgbV9wYXRoKTsKIH0KIAordm9pZCBSZW5k
ZXJQYXRoOjppbnZhbGlkYXRlQ2FjaGVkQm91bmRhcmllcygpCit7CisgICAgbV9jYWNoZWRMb2Nh
bFJlcGFpbnRSZWN0ID0gRmxvYXRSZWN0KCk7CisgICAgbV9jYWNoZWRMb2NhbFN0cm9rZUJCb3gg
PSBGbG9hdFJlY3QoKTsKKyAgICBtX2NhY2hlZExvY2FsRmlsbEJCb3ggPSBGbG9hdFJlY3QoKTsK
KyAgICBtX2NhY2hlZExvY2FsTWFya2VyQkJveCA9IEZsb2F0UmVjdCgpOworfQorCit2b2lkIFJl
bmRlclBhdGg6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVu
ZGVyU3R5bGUqIG5ld1N0eWxlKQoreworICAgIGludmFsaWRhdGVDYWNoZWRCb3VuZGFyaWVzKCk7
CisgICAgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShkaWZmLCBuZXdTdHls
ZSk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJQYXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UGF0aC5oCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGgu
aAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOSBAQCBwdWJsaWM6CiAgICAgUmVuZGVyUGF0
aChTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCopOwogCiAgICAgY29uc3QgUGF0aCYgcGF0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aDsgfQorICAgIHZvaWQgc2V0TmVlZHNCb3VuZGFyaWVz
VXBkYXRlKCkgeyBtX25lZWRzQm91bmRhcmllc1VwZGF0ZSA9IHRydWU7IH0KKyAgICB2b2lkIHNl
dE5lZWRzUGF0aFVwZGF0ZSgpIHsgbV9uZWVkc1BhdGhVcGRhdGUgPSB0cnVlOyB9CisgICAgdmly
dHVhbCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgeyBtX25lZWRzVHJhbnNmb3JtVXBk
YXRlID0gdHJ1ZTsgfQogCiBwcml2YXRlOgogICAgIC8vIEhpdC1kZXRlY3Rpb24gc2VwZXJhdGVk
IGZvciB0aGUgZmlsbCBhbmQgdGhlIHN0cm9rZQpAQCAtNTIsOSArNTUsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgRmxvYXRSZWN0IG1hcmtlckJvdW5kaW5nQm94KCkgY29uc3Q7CiAgICAgdmly
dHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdDsKIAot
ICAgIHZpcnR1YWwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3Jt
KCkgY29uc3Q7Ci0KLSAgICB2b2lkIHNldFBhdGgoY29uc3QgUGF0aCYpOworICAgIHZpcnR1YWwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsgfQogCiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyUGF0
aCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyUGF0aCI7IH0KQEAgLTY0LDExICs2NSwxNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50
UmVjdD4mLCBpbnQgdHgsIGludCB0eSk7CiAKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0RmxvYXRQ
b2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBGbG9hdFBv
aW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3R5
bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqKTsKIAogICAg
IHZvaWQgY2FsY3VsYXRlTWFya2VyQm91bmRzSWZOZWVkZWQoKSBjb25zdDsKKyAgICB2b2lkIGlu
dmFsaWRhdGVDYWNoZWRCb3VuZGFyaWVzKCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBBZmZp
bmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2aXJ0dWFsIEFmZmluZVRy
YW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07
IH0KKworICAgIGJvb2wgbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUgOiAxOworICAgIGJvb2wgbV9u
ZWVkc1BhdGhVcGRhdGUgOiAxOworICAgIGJvb2wgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA6IDE7
CiAKICAgICBtdXRhYmxlIFBhdGggbV9wYXRoOwogICAgIG11dGFibGUgRmxvYXRSZWN0IG1fY2Fj
aGVkTG9jYWxGaWxsQkJveDsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAJ
KHJldmlzaW9uIDU3NDE4KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
UmVuZGVyU1ZHSW1hZ2U6OlJlbmRlclNWR0ltYWdlKFNWR0ltYWdlRWxlbWVudCogaW1wbCkKICAg
ICA6IFJlbmRlckltYWdlKGltcGwpCisgICAgLCBtX25lZWRzVHJhbnNmb3JtVXBkYXRlKHRydWUp
CiB7CiB9CiAKQEAgLTUwLDEwICs1MSwxMyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpsYXlvdXQo
KQogICAgIEFTU0VSVChuZWVkc0xheW91dCgpKTsKIAogICAgIExheW91dFJlcGFpbnRlciByZXBh
aW50ZXIoKnRoaXMsIGNoZWNrRm9yUmVwYWludER1cmluZ0xheW91dCgpKTsKLQogICAgIFNWR0lt
YWdlRWxlbWVudCogaW1hZ2UgPSBzdGF0aWNfY2FzdDxTVkdJbWFnZUVsZW1lbnQqPihub2RlKCkp
OwotICAgIG1fbG9jYWxUcmFuc2Zvcm0gPSBpbWFnZS0+YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgp
OwotICAgIAorCisgICAgaWYgKG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUpIHsKKyAgICAgICAgbV9s
b2NhbFRyYW5zZm9ybSA9IGltYWdlLT5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCk7CisgICAgICAg
IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSBmYWxzZTsKKyAgICB9CisKICAgICAvLyBtaW5pbXVt
IGhlaWdodAogICAgIHNldEhlaWdodChlcnJvck9jY3VycmVkKCkgPyBpbnRyaW5zaWNTaXplKCku
aGVpZ2h0KCkgOiAwKTsKIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5oCShyZXZp
c2lvbiA1NzQxOCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDYgKzM4LDggQEAgY2xhc3MgUmVuZGVyU1ZHSW1hZ2UgOiBwdWJsaWMg
UmVuZGVySW1hZwogcHVibGljOgogICAgIFJlbmRlclNWR0ltYWdlKFNWR0ltYWdlRWxlbWVudCop
OwogCisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgeyBtX25lZWRz
VHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3Qg
U1ZHUmVuZGVyQmFzZSogdG9TVkdSZW5kZXJCYXNlKCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQog
ICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5k
ZXJTVkdJbWFnZSI7IH0KQEAgLTcyLDYgKzc0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwg
QWZmaW5lVHJhbnNmb3JtIGxvY2FsVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFRy
YW5zZm9ybTsgfQogCisgICAgYm9vbCBtX25lZWRzVHJhbnNmb3JtVXBkYXRlIDogMTsKICAgICBB
ZmZpbmVUcmFuc2Zvcm0gbV9sb2NhbFRyYW5zZm9ybTsKICAgICBGbG9hdFJlY3QgbV9sb2NhbEJv
dW5kczsKICAgICBtdXRhYmxlIEZsb2F0UmVjdCBtX2NhY2hlZExvY2FsUmVwYWludFJlY3Q7Cklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAJ
KHJldmlzaW9uIDU3NDE4KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsOCArNTEsMTIgQEAgUmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyOjp+UmVuZGVyU1ZHUmVzbwogdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBw
ZXI6OmludmFsaWRhdGVDbGllbnRzKCkKIHsKICAgICBIYXNoU2V0PFJlbmRlck9iamVjdCo+Ojpj
b25zdF9pdGVyYXRvciBlbmQgPSBtX2NsaXBwZXIuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFJl
bmRlck9iamVjdCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fY2xpcHBlci5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpCi0gICAgICAgICgqaXQpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKKyAgICBm
b3IgKEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jbGlwcGVy
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gKml0OworICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNCb3VuZGFyaWVzVXBkYXRlKCk7
CisgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc0xheW91dCh0cnVlKTsKKyAgICB9CisKICAgICBt
X2NsaXBwZXIuY2xlYXIoKTsKIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZH
UmVzb3VyY2VNYXJrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNWR1Jlc291cmNlTWFya2VyLmNwcAkocmV2aXNpb24gNTc0MTgpCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDkg
KzYwLDEzIEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OmFkZENsaWVudCgKIAogdm9p
ZCBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcjo6aW52YWxpZGF0ZUNsaWVudHMoKQogewotICAgIEhh
c2hTZXQ8Y29uc3QgUmVuZGVyT2JqZWN0Kj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fbWFya2Vy
LmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxjb25zdCBSZW5kZXJPYmplY3QqPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtX21hcmtlci5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGNv
bnN0X2Nhc3Q8UmVuZGVyT2JqZWN0Kj4oKml0KS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CisgICAg
Y29uc3QgSGFzaFNldDxjb25zdCBSZW5kZXJPYmplY3QqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
bV9tYXJrZXIuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PGNvbnN0IFJlbmRlck9iamVjdCo+Ojpj
b25zdF9pdGVyYXRvciBpdCA9IG1fbWFya2VyLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewor
ICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29uc3RfY2FzdDxSZW5kZXJPYmplY3Qq
PigqaXQpOworICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNCb3VuZGFyaWVzVXBkYXRlKCk7Cisg
ICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc0xheW91dCh0cnVlKTsKKyAgICB9CisKICAgICBtX21h
cmtlci5jbGVhcigpOwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNv
dXJjZU1hc2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXIuY3BwCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsOCArNTYs
MTIgQEAgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6On5SZW5kZXJTVkdSZXNvdQogdm9pZCBSZW5k
ZXJTVkdSZXNvdXJjZU1hc2tlcjo6aW52YWxpZGF0ZUNsaWVudHMoKQogewogICAgIEhhc2hNYXA8
UmVuZGVyT2JqZWN0KiwgTWFza2VyRGF0YSo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX21hc2tl
ci5lbmQoKTsKLSAgICBmb3IgKEhhc2hNYXA8UmVuZGVyT2JqZWN0KiwgTWFza2VyRGF0YSo+Ojpj
b25zdF9pdGVyYXRvciBpdCA9IG1fbWFza2VyLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAg
ICAgICAgaXQtPmZpcnN0LT5zZXROZWVkc0xheW91dCh0cnVlKTsKKyAgICBmb3IgKEhhc2hNYXA8
UmVuZGVyT2JqZWN0KiwgTWFza2VyRGF0YSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fbWFza2Vy
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gaXQtPmZpcnN0OworICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNCb3VuZGFyaWVzVXBk
YXRlKCk7CisgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc0xheW91dCh0cnVlKTsKKyAgICB9CisK
ICAgICBkZWxldGVBbGxWYWx1ZXMobV9tYXNrZXIpOwogICAgIG1fbWFza2VyLmNsZWFyKCk7CiB9
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdUZXh0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdUZXh0LmNwcAkocmV2aXNpb24gNTc0MTgpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDksNiArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclNWR1RleHQ6OlJlbmRl
clNWR1RleHQoU1ZHVGV4dEVsZW1lbnQqIG5vZGUpIAogICAgIDogUmVuZGVyU1ZHQmxvY2sobm9k
ZSkKKyAgICAsIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUodHJ1ZSkKIHsKIH0KIApAQCAtNzgsNyAr
NzksMTAgQEAgdm9pZCBSZW5kZXJTVkdUZXh0OjpsYXlvdXQoKQogICAgIGludCB5T2Zmc2V0ID0g
KGludCkodGV4dC0+eSgpLT5nZXRGaXJzdCgpLnZhbHVlKHRleHQpKTsKICAgICBzZXRMb2NhdGlv
bih4T2Zmc2V0LCB5T2Zmc2V0KTsKIAotICAgIG1fbG9jYWxUcmFuc2Zvcm0gPSB0ZXh0LT5hbmlt
YXRlZExvY2FsVHJhbnNmb3JtKCk7CisgICAgaWYgKG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUpIHsK
KyAgICAgICAgbV9sb2NhbFRyYW5zZm9ybSA9IHRleHQtPmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0o
KTsKKyAgICAgICAgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IGZhbHNlOworICAgIH0KIAogICAg
IFJlbmRlckJsb2NrOjpsYXlvdXQoKTsKIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U1ZHVGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1RleHQu
aAkocmV2aXNpb24gNTc0MTgpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdUZXh0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDggQEAgY2xhc3MgUmVuZGVyU1ZHVGV4dCA6IHB1
YmxpYyBSZW5kZXJTVkdCbAogcHVibGljOgogICAgIFJlbmRlclNWR1RleHQoU1ZHVGV4dEVsZW1l
bnQqIG5vZGUpOwogCisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkg
eyBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIHZpcnR1
YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdUZXh0
IjsgfQogCkBAIC02NywxMSArNjksMTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEZsb2F0UmVj
dCBzdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0OwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlcGFp
bnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3Q7CiAKLSAgICAvLyBGSVhNRTogVGhpcyBj
YW4gYmUgcmVtb3ZlZCB3aGVuIGxvY2FsVHJhbnNmb3JtKCkgaXMgcmVtb3ZlZCBmcm9tIFJlbmRl
ck9iamVjdAogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsVHJhbnNmb3JtKCkgY29u
c3QgeyByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsgfQogCiAgICAgdmlydHVhbCBSb290SW5saW5l
Qm94KiBjcmVhdGVSb290SW5saW5lQm94KCk7CiAKKyAgICBib29sIG1fbmVlZHNUcmFuc2Zvcm1V
cGRhdGUgOiAxOwogICAgIEFmZmluZVRyYW5zZm9ybSBtX2xvY2FsVHJhbnNmb3JtOwogfTsKIApJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJs
ZUNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDI5
ICszMSwzMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBSZW5kZXJTVkdUcmFuc2Zvcm1h
YmxlQ29udGFpbmVyOjpSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKFNWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50KiBub2RlKQogICAgIDogUmVuZGVyU1ZHQ29udGFpbmVyKG5vZGUp
CisgICAgLCBtX25lZWRzVHJhbnNmb3JtVXBkYXRlKHRydWUpCiB7CiB9CiAKLWNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcjo6bG9jYWxUb1BhcmVu
dFRyYW5zZm9ybSgpIGNvbnN0Cit2b2lkIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6
OmNhbGN1bGF0ZUxvY2FsVHJhbnNmb3JtKCkKIHsKLSAgICByZXR1cm4gbV9sb2NhbFRyYW5zZm9y
bTsKLX0KKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCogZWxlbWVudCA9IHN0YXRp
Y19jYXN0PFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Kj4obm9kZSgpKTsKIAotQWZmaW5l
VHJhbnNmb3JtIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6OmxvY2FsVHJhbnNmb3Jt
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsKLX0KKyAgICBib29sIG5l
ZWRzVXBkYXRlID0gbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZTsKKyAgICBpZiAobmVlZHNVcGRhdGUp
IHsKKyAgICAgICAgbV9sb2NhbFRyYW5zZm9ybSA9IGVsZW1lbnQtPmFuaW1hdGVkTG9jYWxUcmFu
c2Zvcm0oKTsKKyAgICAgICAgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IGZhbHNlOworICAgIH0K
IAotdm9pZCBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyOjpjYWxjdWxhdGVMb2NhbFRy
YW5zZm9ybSgpCi17Ci0gICAgbV9sb2NhbFRyYW5zZm9ybSA9IHN0YXRpY19jYXN0PFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50Kj4obm9kZSgpKS0+YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgp
OwotICAgIGlmICghbm9kZSgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpnVGFnKSB8fCAhc3RhdGlj
X2Nhc3Q8U1ZHR0VsZW1lbnQqPihub2RlKCkpLT5pc1NoYWRvd1RyZWVDb250YWluZXJFbGVtZW50
KCkpCisgICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpnVGFnKSB8fCAhc3Rh
dGljX2Nhc3Q8U1ZHR0VsZW1lbnQqPihlbGVtZW50KS0+aXNTaGFkb3dUcmVlQ29udGFpbmVyRWxl
bWVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBGbG9hdFNpemUgdHJhbnNsYXRpb24gPSBz
dGF0aWNfY2FzdDxTVkdTaGFkb3dUcmVlQ29udGFpbmVyRWxlbWVudCo+KG5vZGUoKSktPmNvbnRh
aW5lclRyYW5zbGF0aW9uKCk7CisgICAgRmxvYXRTaXplIHRyYW5zbGF0aW9uID0gc3RhdGljX2Nh
c3Q8U1ZHU2hhZG93VHJlZUNvbnRhaW5lckVsZW1lbnQqPihlbGVtZW50KS0+Y29udGFpbmVyVHJh
bnNsYXRpb24oKTsKICAgICBpZiAodHJhbnNsYXRpb24ud2lkdGgoKSA9PSAwICYmIHRyYW5zbGF0
aW9uLmhlaWdodCgpID09IDApCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJWE1FOiBDb3Vs
ZCBvcHRpbWl6ZSB0aGlzIGNhc2UgZm9yIHVzZSB0byBhdm9pZCByZWZldGNoaW5nIHRoZSBhbmlt
YXRlZExvY2FsVHJhbnNmb3JtKCkgaGVyZSwgaWYgb25seSB0aGUgY29udGFpbmVyVHJhbnNsYXRp
b24oKSBjaGFuZ2VkLgorICAgIGlmICghbmVlZHNVcGRhdGUpCisgICAgICAgIG1fbG9jYWxUcmFu
c2Zvcm0gPSBlbGVtZW50LT5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCk7CisKICAgICBtX2xvY2Fs
VHJhbnNmb3JtLnRyYW5zbGF0ZSh0cmFuc2xhdGlvbi53aWR0aCgpLCB0cmFuc2xhdGlvbi5oZWln
aHQoKSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1RyYW5zZm9ybWFi
bGVDb250YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdU
cmFuc2Zvcm1hYmxlQ29udGFpbmVyLmgJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSwxMyArMzEsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAg
ICAgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcihTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudCopOwogCi0gICAgICAgIHZpcnR1YWwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2Nh
bFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9sb2Nh
bFRyYW5zZm9ybTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRh
dGUoKSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9CiAKICAgICBwcml2YXRlOgog
ICAgICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlTG9jYWxUcmFuc2Zvcm0oKTsKLSAgICAgICAg
Ly8gRklYTUU6IFRoaXMgY2FuIGJlIG1hZGUgbm9uLXZpcnR1YWwgb25jZSBTVkdSZW5kZXJUcmVl
QXNUZXh0IHN0b3BzIHVzaW5nIGxvY2FsVHJhbnNmb3JtKCkKLSAgICAgICAgdmlydHVhbCBBZmZp
bmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBBZmZp
bmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2xvY2FsVHJhbnNm
b3JtOyB9CiAKKyAgICAgICAgYm9vbCBtX25lZWRzVHJhbnNmb3JtVXBkYXRlIDogMTsKICAgICAg
ICAgQWZmaW5lVHJhbnNmb3JtIG1fbG9jYWxUcmFuc2Zvcm07CiAgICAgfTsKIH0KSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDU3NDE4KQorKysg
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzksNyArMTc5LDEwIEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0
ZUEKICAgICBBZmZpbmVUcmFuc2Zvcm0qIHRyYW5zZm9ybSA9IHRhcmdldC0+c3VwcGxlbWVudGFs
VHJhbnNmb3JtKCk7CiAgICAgaWYgKCF0cmFuc2Zvcm0pCiAgICAgICAgIHJldHVybjsKLSAgICAK
KworICAgIGlmICh0YXJnZXQtPnJlbmRlcmVyKCkpCisgICAgICAgIHRhcmdldC0+cmVuZGVyZXIo
KS0+c2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKTsKKwogICAgIGlmICghaXNBZGRpdGl2ZSgpKQog
ICAgICAgICB0cmFuc2Zvcm0tPm1ha2VJZGVudGl0eSgpOwogICAgIApAQCAtMjIzLDggKzIyNiwx
MCBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjphcHBseVJlc3VsCiAgICAgICAgIEFm
ZmluZVRyYW5zZm9ybSogdHJhbnNmb3JtID0gc2hhZG93VHJlZUVsZW1lbnQtPnN1cHBsZW1lbnRh
bFRyYW5zZm9ybSgpOwogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0qIHQgPSB0YXJnZXRFbGVtZW50
LT5zdXBwbGVtZW50YWxUcmFuc2Zvcm0oKTsKICAgICAgICAgdHJhbnNmb3JtLT5zZXRNYXRyaXgo
dC0+YSgpLCB0LT5iKCksIHQtPmMoKSwgdC0+ZCgpLCB0LT5lKCksIHQtPmYoKSk7Ci0gICAgICAg
IGlmIChzaGFkb3dUcmVlRWxlbWVudC0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHNoYWRvd1Ry
ZWVFbGVtZW50LT5yZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKKyAgICAgICAgaWYg
KFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzaGFkb3dUcmVlRWxlbWVudC0+cmVuZGVyZXIoKSkg
eworICAgICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7CisgICAg
ICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgICAgIH0KICAgICB9
CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDU3NDE4KQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksOSArMTU5LDExIEBAIHZvaWQgU1ZHQW5pbWF0
ZVRyYW5zZm9ybUVsZW1lbnQ6OmFwcGx5UmUKICAgICAgICAgcmV0dXJuOwogICAgIC8vIFdlIGFj
Y3VtdWxhdGUgdG8gdGhlIHRhcmdldCBlbGVtZW50IHRyYW5zZm9ybSBsaXN0IHNvIHRoZXJlIGlz
IG5vdCBtdWNoIHRvIGRvIGhlcmUuCiAgICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRo
aXMtPnRhcmdldEVsZW1lbnQoKTsKLSAgICBpZiAodGFyZ2V0RWxlbWVudC0+cmVuZGVyZXIoKSkK
LSAgICAgICAgdGFyZ2V0RWxlbWVudC0+cmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7
Ci0gICAgCisgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0YXJnZXRFbGVtZW50LT5y
ZW5kZXJlcigpKSB7CisgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgp
OworICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgfQorCiAgICAg
Ly8gLi4uZXhjZXB0IGluIGNhc2Ugd2hlcmUgd2UgaGF2ZSBhZGRpdGlvbmFsIGluc3RhbmNlcyBp
biA8dXNlPiB0cmVlcy4KICAgICBjb25zdCBIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+JiBp
bnN0YW5jZXMgPSB0YXJnZXRFbGVtZW50LT5pbnN0YW5jZXNGb3JFbGVtZW50KCk7CiAgICAgUmVm
UHRyPFNWR1RyYW5zZm9ybUxpc3Q+IHRyYW5zZm9ybUxpc3QgPSB0cmFuc2Zvcm1MaXN0Rm9yKHRh
cmdldEVsZW1lbnQpOwpAQCAtMTczLDggKzE3NSwxMCBAQCB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zv
cm1FbGVtZW50OjphcHBseVJlCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudCo+KHNoYWRvd1RyZWVFbGVtZW50KS0+c2V0VHJhbnNmb3JtQmFzZVZh
bHVlKHRyYW5zZm9ybUxpc3QuZ2V0KCkpOwogICAgICAgICBlbHNlIGlmIChzaGFkb3dUcmVlRWxl
bWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6dGV4dFRhZykpCiAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxTVkdUZXh0RWxlbWVudCo+KHNoYWRvd1RyZWVFbGVtZW50KS0+c2V0VHJhbnNmb3JtQmFz
ZVZhbHVlKHRyYW5zZm9ybUxpc3QuZ2V0KCkpOwotICAgICAgICBpZiAoc2hhZG93VHJlZUVsZW1l
bnQtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBzaGFkb3dUcmVlRWxlbWVudC0+cmVuZGVyZXIo
KS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gc2hhZG93VHJlZUVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgICAgIHJlbmRl
cmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpOworICAgICAgICAgICAgcmVuZGVyZXItPnNl
dE5lZWRzTGF5b3V0KHRydWUpOworICAgICAgICB9CiAgICAgfQogfQogICAgIApJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHQ2lyY2xlRWxlbWVudC5jcHAJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViQ29yZS9zdmcvU1ZH
Q2lyY2xlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDE2ICs3MSwyOCBAQCB2b2lk
IFNWR0NpcmNsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nCiB7CiAgICAgU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogCi0gICAg
aWYgKCFyZW5kZXJlcigpKQorICAgIFJlbmRlclBhdGgqIHJlbmRlcmVyID0gc3RhdGljX2Nhc3Q8
UmVuZGVyUGF0aCo+KHRoaXMtPnJlbmRlcmVyKCkpOworICAgIGlmICghcmVuZGVyZXIpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6Y3hBdHRyIHx8IGF0
dHJOYW1lID09IFNWR05hbWVzOjpjeUF0dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnJBdHRyIHx8Ci0gICAgICAgIFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSB8fAotICAgICAgICBTVkdMYW5nU3BhY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8
Ci0gICAgICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpIHx8Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkKLSAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlv
dXQodHJ1ZSk7CisgICAgaWYgKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojppc0tub3du
QXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNUcmFuc2Zv
cm1VcGRhdGUoKTsKKyAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzTGF5b3V0KHRydWUpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpjeEF0
dHIKKyAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmN5QXR0cgorICAgICAgICB8fCBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6ckF0dHIpIHsKKyAgICAgICAgcmVuZGVyZXItPnNldE5lZWRz
UGF0aFVwZGF0ZSgpOworICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpCisgICAgICAgIHx8IFNWR0xhbmdTcGFjZTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkKKyAgICAgICAgfHwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkpCisgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc0xheW91dCh0
cnVlKTsKIH0KIAogdm9pZCBTVkdDaXJjbGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRWxsaXBz
ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50
LmNwcAkocmV2aXNpb24gNTc0MTgpCisrKyBXZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDE2ICs3NiwyOSBAQCB2b2lkIFNWR0VsbGlwc2VFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuCiB7CiAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogCi0gICAgaWYgKCFyZW5kZXJlcigp
KQorICAgIFJlbmRlclBhdGgqIHJlbmRlcmVyID0gc3RhdGljX2Nhc3Q8UmVuZGVyUGF0aCo+KHRo
aXMtPnJlbmRlcmVyKCkpOworICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6Y3hBdHRyIHx8IGF0dHJOYW1lID09IFNWR05h
bWVzOjpjeUF0dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJ4QXR0ciB8fCBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6cnlBdHRyIHx8Ci0gICAgICAgIFNWR1Rlc3RzOjppc0tub3du
QXR0cmlidXRlKGF0dHJOYW1lKSB8fAotICAgICAgICBTVkdMYW5nU3BhY2U6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpIHx8Ci0gICAgICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKLSAgICAgICAgcmVuZGVy
ZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgaWYgKFNWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICByZW5kZXJl
ci0+c2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKTsKKyAgICAgICAgcmVuZGVyZXItPnNldE5lZWRz
TGF5b3V0KHRydWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjpjeEF0dHIKKyAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmN5
QXR0cgorICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6cnhBdHRyCisgICAgICAgIHx8
IGF0dHJOYW1lID09IFNWR05hbWVzOjpyeUF0dHIpIHsKKyAgICAgICAgcmVuZGVyZXItPnNldE5l
ZWRzUGF0aFVwZGF0ZSgpOworICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpCisgICAgICAgIHx8IFNWR0xhbmdTcGFjZTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkKKyAgICAgICAgfHwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCisgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc0xheW91
dCh0cnVlKTsKIH0KIAogdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0Zv
cmVpZ25PYmplY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGb3Jl
aWduT2JqZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViQ29yZS9zdmcvU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NiwxOCArNzYsMjQg
QEAgdm9pZCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6c3ZnQXR0cmlidQogewogICAgIFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsK
IAotICAgIGlmICghcmVuZGVyZXIoKSkKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhp
cy0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKKyAg
ICBpZiAoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7CisgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpOwor
ICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyCiAgICAgICAgIHx8
IGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cgogICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdO
YW1lczo6d2lkdGhBdHRyCiAgICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRB
dHRyCiAgICAgICAgIHx8IFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKQogICAg
ICAgICB8fCBTVkdMYW5nU3BhY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpCi0gICAgICAg
IHx8IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpCi0gICAgICAgIHx8IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkKLSAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1
ZSk7CisgICAgICAgIHx8IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKQorICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7
CiB9CiAKIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdHRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCShyZXZp
c2lvbiA1NzQxOCkKKysrIFdlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTUsMTQgKzU1LDIwIEBAIHZvaWQgU1ZHR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY28KIHsKICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChhdHRyTmFtZSk7CiAKLSAgICBpZiAoIXJlbmRlcmVyKCkpCisgICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSB8fCAKLSAgICAgICAgU1ZHTGFuZ1NwYWNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSB8fAotICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSB8fAotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIHJlbmRlcmVyKCktPnNldE5lZWRz
TGF5b3V0KHRydWUpOworICAgIGlmIChTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzVHJh
bnNmb3JtVXBkYXRlKCk7CisgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc0xheW91dCh0cnVlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkKKyAgICAgICAgfHwgU1ZHTGFuZ1NwYWNlOjppc0tub3duQXR0cmlidXRl
KGF0dHJOYW1lKQorICAgICAgICB8fCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzTGF5b3V0
KHRydWUpOwogfQogCiB2b2lkIFNWR0dFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA1NzQxOCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkxLDE4ICs5MSwyNSBAQCB2b2lkIFNWR0ltYWdlRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlCiAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkpCiAgICAgICAgIG1faW1hZ2VMb2FkZXIudXBkYXRlRnJvbUVsZW1lbnRJZ25vcmlu
Z1ByZXZpb3VzRXJyb3IoKTsKIAotICAgIGlmICghcmVuZGVyZXIoKSkKKyAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyIHx8IGF0
dHJOYW1lID09IFNWR05hbWVzOjp5QXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSBTVkdOYW1l
czo6d2lkdGhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyIHx8Ci0gICAg
ICAgIGF0dHJOYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciB8fAotICAg
ICAgICBTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKLSAgICAgICAgU1ZH
TGFuZ1NwYWNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fAotICAgICAgICBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fAotICAg
ICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKLSAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CisgICAg
aWYgKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkgeworICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKTsKKyAg
ICAgICAgcmVuZGVyZXItPnNldE5lZWRzTGF5b3V0KHRydWUpOworICAgICAgICByZXR1cm47CiAg
ICAgfQorCisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cgorICAgICAgICB8fCBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIKKyAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OndpZHRoQXR0cgorICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0
cgorICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0
dHIKKyAgICAgICAgfHwgU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpCisgICAg
ICAgIHx8IFNWR0xhbmdTcGFjZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkKKyAgICAgICAg
fHwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFt
ZSkpCisgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KIAogdm9pZCBT
VkdJbWFnZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA1NzQxOCkKKysr
IFdlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsMTYg
KzcyLDI5IEBAIHZvaWQgU1ZHTGluZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKIHsKICAg
ICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRy
TmFtZSk7CiAKLSAgICBpZiAoIXJlbmRlcmVyKCkpCisgICAgUmVuZGVyUGF0aCogcmVuZGVyZXIg
PSBzdGF0aWNfY2FzdDxSZW5kZXJQYXRoKj4odGhpcy0+cmVuZGVyZXIoKSk7CisgICAgaWYgKCFy
ZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
Ojp4MUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnkxQXR0ciB8fAotICAgICAgICBhdHRy
TmFtZSA9PSBTVkdOYW1lczo6eDJBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp5MkF0dHIg
fHwKLSAgICAgICAgU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8Ci0gICAg
ICAgIFNWR0xhbmdTcGFjZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKLSAgICAgICAg
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkg
fHwKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpKQotICAgICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsK
KyAgICBpZiAoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7CisgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgp
OworICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OngxQXR0cgorICAgICAg
ICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eTFBdHRyCisgICAgICAgIHx8IGF0dHJOYW1lID09
IFNWR05hbWVzOjp4MkF0dHIKKyAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnkyQXR0
cikgeworICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNQYXRoVXBkYXRlKCk7CisgICAgICAgIHJl
bmRlcmVyLT5zZXROZWVkc0xheW91dCh0cnVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkKKyAgICAgICAgfHwg
U1ZHTGFuZ1NwYWNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKQorICAgICAgICB8fCBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAg
ICAgICAgcmVuZGVyZXItPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQogCiB2b2lkIFNWR0xpbmVF
bGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gNTc0MTgpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MywxNSArMTkzLDI3
IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKIHsKICAgICBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7
CiAKLSAgICBpZiAoIXJlbmRlcmVyKCkpCisgICAgUmVuZGVyUGF0aCogcmVuZGVyZXIgPSBzdGF0
aWNfY2FzdDxSZW5kZXJQYXRoKj4odGhpcy0+cmVuZGVyZXIoKSk7CisgICAgaWYgKCFyZW5kZXJl
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkQXR0
ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6cGF0aExlbmd0aEF0dHIgfHwKLSAgICAgICAgU1ZH
VGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8Ci0gICAgICAgIFNWR0xhbmdTcGFj
ZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKLSAgICAgICAgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKLSAgICAgICAgU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQot
ICAgICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKKyAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OmRBdHRyKSB7CisgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1BhdGhV
cGRhdGUoKTsKKyAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzTGF5b3V0KHRydWUpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICByZW5kZXJlci0+c2V0TmVl
ZHNUcmFuc2Zvcm1VcGRhdGUoKTsKKyAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzTGF5b3V0KHRy
dWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjpwYXRoTGVuZ3RoQXR0cgorICAgICAgICB8fCBTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkKKyAgICAgICAgfHwgU1ZHTGFuZ1NwYWNlOjppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKQorICAgICAgICB8fCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3du
QXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzTGF5b3V0KHRy
dWUpOwogfQogCiB2b2lkIFNWR1BhdGhFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAkocmV2
aXNpb24gNTc0MTgpCisrKyBXZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTkwLDE1ICs5MCwyNiBAQCB2b2lkIFNWR1BvbHlFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkCiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdHRyKQogICAg
ICAgICBzZXRTeW5jaHJvbml6ZWRTVkdBdHRyaWJ1dGVzKGZhbHNlKTsKIAotICAgIGlmICghcmVu
ZGVyZXIoKSkKKyAgICBSZW5kZXJQYXRoKiByZW5kZXJlciA9IHN0YXRpY19jYXN0PFJlbmRlclBh
dGgqPih0aGlzLT5yZW5kZXJlcigpKTsKKyAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0dHIKLSAgICAgICAg
fHwgU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpCisgICAgaWYgKFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAg
ICAgICByZW5kZXJlci0+c2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKTsKKyAgICAgICAgcmVuZGVy
ZXItPnNldE5lZWRzTGF5b3V0KHRydWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdHRyKSB7CisgICAgICAgIHJlbmRlcmVy
LT5zZXROZWVkc1BhdGhVcGRhdGUoKTsKKyAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzTGF5b3V0
KHRydWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFNWR1Rlc3RzOjppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKQogICAgICAgICB8fCBTVkdMYW5nU3BhY2U6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpCi0gICAgICAgIHx8IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpCi0gICAgICAgIHx8IFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKLSAgICAgICAgcmVu
ZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgICAgIHx8IFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQorICAgICAgICByZW5k
ZXJlci0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiB9CiAKIHZvaWQgU1ZHUG9seUVsZW1lbnQ6OnN5
bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHUmVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYkNvcmUvc3ZnL1NWR1Jl
Y3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsMTcgKzg1LDMxIEBAIHZvaWQgU1ZH
UmVjdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKIHsKICAgICBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAKLSAgICBpZiAo
IXJlbmRlcmVyKCkpCisgICAgUmVuZGVyUGF0aCogcmVuZGVyZXIgPSBzdGF0aWNfY2FzdDxSZW5k
ZXJQYXRoKj4odGhpcy0+cmVuZGVyZXIoKSk7CisgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0ciB8fCBhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6eUF0dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Ondp
ZHRoQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0ciB8fAotICAgICAgICBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6cnhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpyeUF0
dHIgfHwKLSAgICAgICAgU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8Ci0g
ICAgICAgIFNWR0xhbmdTcGFjZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKLSAgICAg
ICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFt
ZSkgfHwKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKQotICAgICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVl
KTsKKyAgICBpZiAoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7CisgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0
ZSgpOworICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyCisgICAg
ICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cgorICAgICAgICB8fCBhdHRyTmFtZSA9
PSBTVkdOYW1lczo6d2lkdGhBdHRyCisgICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpo
ZWlnaHRBdHRyCisgICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpyeEF0dHIKKyAgICAg
ICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJ5QXR0cikgeworICAgICAgICByZW5kZXJlci0+
c2V0TmVlZHNQYXRoVXBkYXRlKCk7CisgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc0xheW91dCh0
cnVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChTVkdUZXN0czo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkKKyAgICAgICAgfHwgU1ZHTGFuZ1NwYWNlOjppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKQorICAgICAgICB8fCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICAgICAgcmVuZGVyZXItPnNldE5lZWRz
TGF5b3V0KHRydWUpOwogfQogCiB2b2lkIFNWR1JlY3RFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
VGV4dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50
LmNwcAkocmV2aXNpb24gNTc0MTgpCisrKyBXZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExNCwxMSArMTE0LDE0IEBAIHZvaWQgU1ZHVGV4dEVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKIHsKICAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIAotICAgIGlmICghcmVuZGVyZXIoKSkKKyAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJl
bmRlcmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoU1ZHVHJhbnNmb3JtYWJsZTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIHJlbmRlcmVyKCktPnNldE5lZWRzTGF5
b3V0KHRydWUpOworICAgIGlmIChTVkdUcmFuc2Zvcm1hYmxlOjppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkgeworICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKTsK
KyAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzTGF5b3V0KHRydWUpOworICAgIH0KIH0KIAogdm9p
ZCBTVkdUZXh0RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA1NzQxOCkKKysr
IFdlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsMTIg
KzE2NSwxNiBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgICAgIHJlbmRlcmVyKCktPnNl
dE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7CisgICAgICAgIHJlbmRlcmVyKCktPnNldE5lZWRzTGF5
b3V0KHRydWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKFNWR1Rlc3RzOjpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKQogICAgICAgICB8fCBTVkdMYW5nU3BhY2U6OmlzS25v
d25BdHRyaWJ1dGUoYXR0ck5hbWUpCi0gICAgICAgIHx8IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpCi0gICAgICAgIHx8IFNWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAg
ICB8fCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkKICAgICAgICAgaW52YWxpZGF0ZVNoYWRvd1RyZWUoKTsKLSAgICB9CiB9CiAKIHZvaWQg
U1ZHVXNlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkK
</data>
<flag name="review"
          id="36757"
          type_id="1"
          status="+"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>