<?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>81890</bug_id>
          
          <creation_ts>2012-03-22 04:17:42 -0700</creation_ts>
          <short_desc>Merge SVGImageBufferTools to SVGRenderingContext</short_desc>
          <delta_ts>2012-03-23 01:50:54 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zoltan Herczeg">zherczeg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>krit</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>585122</commentid>
    <comment_count>0</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-03-22 04:17:42 -0700</bug_when>
    <thetext>Copy the methods, no functionality change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585127</commentid>
    <comment_count>1</comment_count>
      <attachid>133221</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-03-22 04:28:14 -0700</bug_when>
    <thetext>Created attachment 133221
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585146</commentid>
    <comment_count>2</comment_count>
      <attachid>133221</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-22 05:22:54 -0700</bug_when>
    <thetext>Comment on attachment 133221
patch

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

Looks great, r=me, in case cr-linux ews bot is also happy with it.

&gt; Source/WebCore/ChangeLog:11
&gt; +        no functionality change.
&gt; +

You should note here, that this is the first step, towards making SVGImageBufferTools stageful, and this only moves the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585175</commentid>
    <comment_count>3</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-03-22 05:52:58 -0700</bug_when>
    <thetext>Thanks for the review. Landed as http://trac.webkit.org/changeset/111674</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585484</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-03-22 11:02:15 -0700</bug_when>
    <thetext>I&apos;m not opposed to the change, but what is the reason for moving it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586172</commentid>
    <comment_count>5</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-23 01:50:54 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I&apos;m not opposed to the change, but what is the reason for moving it?
Sorry for not including more context here, I discuss this since a while with Zoltan.
The goal is to change the current state-less design of SVGImageBufferTools/SVGRenderingSupport. As first step Zoltan extracted the prepareRenderSVGContent/finishREnderSVGContent from SVGRenderSupport into SVGRenderingContext, making it state-full (not a bunch of static functions, but a real class holding data). This simplifies the SVG subtree rendering code a lot.

SVGImageBufferTools suffers from the same problem. The intent is to merge it into SVGRenderingContext and make it state-full as well, removing the hacks currently needed for &quot;currentContentTransformation&quot; and fixing up the design in general.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133221</attachid>
            <date>2012-03-22 04:28:14 -0700</date>
            <delta_ts>2012-03-22 05:22:54 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-SVGImageBufferTools.patch</filename>
            <type>text/plain</type>
            <size>45881</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSA3ZWE5MjAxZDdkZGI1YTgyYjk4YTNiNmFhN2QwN2ZkOGFlZmQzNzI1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAd2Via2l0Lm9yZz4K
RGF0ZTogVGh1LCAyMiBNYXIgMjAxMiAwNDoyNDoxMiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFNW
R0ltYWdlQnVmZmVyVG9vbHMKCi0tLQogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgICAg
ICAgICAgICAgICAgICAgICAgfCAgICAxIC0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICA1NyArKysrKysrCiBTb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtICAgICAgICAgICAgICAgICB8ICAgIDIgLQogU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyIC0KIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCAtCiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICB8ICAgIDYgLQogLi4u
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwICAgfCAgICA0ICst
CiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0FsbEluT25lLmNwcCB8ICAg
IDEgLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcCAg
fCAgICA0ICstCiAuLi4vcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3Bw
ICAgICB8ICAgMTAgKy0KIC4uLi9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
LmNwcCAgICAgIHwgICAgNiArLQogLi4uL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VH
cmFkaWVudC5jcHAgICAgfCAgIDEwICstCiAuLi4vcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZU1hc2tlci5jcHAgICAgICB8ICAgMTAgKy0KIC4uLi9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5jcHAgICAgIHwgICAxMiArLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmNwcCAgfCAgMTY1IC0tLS0tLS0tLS0tLS0tLS0tLS0t
CiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0ltYWdlQnVmZmVyVG9vbHMuaCB8ICAg
NjUgLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJv
eC5jcHAgIHwgICAgMiArLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdD
b250ZXh0LmNwcCAgfCAgMTMxICsrKysrKysrKysrKysrKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oIHwgICAxNyArKwogU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAgfCAgICA0ICstCiAyMCBmaWxlcyBj
aGFuZ2VkLCAyMzUgaW5zZXJ0aW9ucygrKSwgMjc4IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW1hZ2VCdWZmZXJUb29scy5j
cHAKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lt
YWdlQnVmZmVyVG9vbHMuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNTVhMjQ0OS4uYmFmMzEx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE3MjgsNyArMTcyOCw2IEBAIElGIChFTkFCTEVf
U1ZHKQogICAgICAgICByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmNwcAogICAgICAg
ICByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3BwCiAgICAg
ICAgIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwCi0gICAgICAg
IHJlbmRlcmluZy9zdmcvU1ZHSW1hZ2VCdWZmZXJUb29scy5jcHAKICAgICAgICAgcmVuZGVyaW5n
L3N2Zy9TVkdJbmxpbmVGbG93Qm94LmNwcAogICAgICAgICByZW5kZXJpbmcvc3ZnL1NWR0lubGlu
ZVRleHRCb3guY3BwCiAgICAgICAgIHJlbmRlcmluZy9zdmcvU1ZHTWFya2VyTGF5b3V0SW5mby5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA1MjBjOTlkLi43MjI2YTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjAgQEAKKzIwMTItMDMtMjIgIFpvbHRhbiBIZXJjemVnICA8emhlcmN6ZWdAd2Via2l0Lm9yZz4K
KworICAgICAgICBNZXJnZSBTVkdJbWFnZUJ1ZmZlclRvb2xzIHRvIFNWR1JlbmRlcmluZ0NvbnRl
eHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxODkw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29weSB0
aGUgY29kZSB0byBTVkdSZW5kZXJpbmdDb250ZXh0IGFuZCBkZWxldGUKKyAgICAgICAgU1ZHSW1h
Z2VCdWZmZXJUb29sc1suY3BwLmhdLiBVcGRhdGUgYnVpbGQgc3lzdGVtcywKKyAgICAgICAgbm8g
ZnVuY3Rpb25hbGl0eSBjaGFuZ2UuCisKKyAgICAgICAgRXhpc3RpbmcgdGVzdHMgY292ZXIgdGhp
cyBpc3N1ZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0FsbEluT25lLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4
dDo6Y29tcHV0ZU5ld1NjYWxlZEZvbnRGb3JTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXBwaW5nVG9Db250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFza0FuZFN3YXBDb250ZXh0Rm9yVGV4dEdyYWRp
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNsaXBUb1RleHRNYXNrKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YXBwbHlSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJ
bWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0ltYWdlQnVmZmVyVG9vbHMuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjdXJyZW50Q29udGVudFRyYW5zZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJh
bnNmb3JtYXRpb25Ub091dGVybW9zdFNWR0Nvb3JkaW5hdGVTeXN0ZW0pOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXJGb3JQYXR0ZXJu
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRleHQ6OnJlbmRlclN1YnRyZWVU
b0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRleHQ6OmNs
aXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRleHQ6
OmNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVy
aW5nQ29udGV4dDo6Y2xhbXBlZEFic29sdXRlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjbGVhcjJEUm90YXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoU1ZHUmVuZGVyaW5nQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVJbWFnZUJ1
ZmZlclJlY3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKwog
MjAxMi0wMy0yMiAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
RXhwYW5kIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6Y29udHJvbENsaXBSZWN0KCkgdG8g
Y29udGFpbiBjb250ZW50UmVjdCgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
M2EwNTc5Mi4uOGUyNmYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0zOTU4
LDggKzM5NTgsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oIFwK
LQlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0ltYWdlQnVmZmVyVG9vbHMuY3BwIFwK
LQlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0ltYWdlQnVmZmVyVG9vbHMuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVGbG93Qm94LmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVGbG93Qm94LmggXAogCVNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5k
ZXggY2U3NDRkNC4uMGUyZGI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0yNTE3LDcgKzI1MTcsNiBAQCBI
RUFERVJTICs9IFwKICAgICByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmggXAogICAg
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oIFwKICAgICBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmggXAotICAgIHJlbmRlcmlu
Zy9zdmcvU1ZHSW1hZ2VCdWZmZXJUb29scy5oIFwKICAgICByZW5kZXJpbmcvc3ZnL1NWR0lubGlu
ZUZsb3dCb3guaCBcCiAgICAgcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmggXAogICAg
IHJlbmRlcmluZy9zdmcvU1ZHTWFya2VyRGF0YS5oIFwKQEAgLTM0NjIsNyArMzQ2MSw2IEBAIGNv
bnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkc9MSkgewogICAgICAgICAgICAgICByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RleHRQYXRoLmNwcCBcCiAgICAgICAgICAgICAgIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAgXAogICAgICAgICAgICAgICByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcCBcCi0gICAgICAgICAgICAg
IHJlbmRlcmluZy9zdmcvU1ZHSW1hZ2VCdWZmZXJUb29scy5jcHAgXAogICAgICAgICAgICAgICBy
ZW5kZXJpbmcvc3ZnL1NWR0lubGluZUZsb3dCb3guY3BwIFwKICAgICAgICAgICAgICAgcmVuZGVy
aW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcCBcCiAgICAgICAgICAgICAgIHJlbmRlcmluZy9z
dmcvU1ZHTWFya2VyTGF5b3V0SW5mby5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGYwMDE0MGUu
LmNkMDg1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQ4NDAsOCArNDg0MCw2IEBACiAgICAgICAg
ICAgICAncmVuZGVyaW5nL3N0eWxlL1N0eWxlU3Vycm91bmREYXRhLmNwcCcsCiAgICAgICAgICAg
ICAncmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5jcHAnLAogICAgICAgICAgICAg
J3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuY3BwJywKLSAgICAgICAgICAgICdyZW5k
ZXJpbmcvc3ZnL1NWR0ltYWdlQnVmZmVyVG9vbHMuY3BwJywKLSAgICAgICAgICAgICdyZW5kZXJp
bmcvc3ZnL1NWR0ltYWdlQnVmZmVyVG9vbHMuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N2
Zy9TVkdJbmxpbmVGbG93Qm94LmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N2Zy9TVkdJ
bmxpbmVGbG93Qm94LmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4
dEJveC5jcHAnLApAQCAtNTc1Nyw4ICs1NzU1LDYgQEAKICAgICAgICAgICAgICdyZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaCcsCiAgICAgICAgICAgICAncmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAnLAogICAgICAgICAgICAg
J3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaCcsCi0gICAgICAgICAg
ICAncmVuZGVyaW5nL3N2Zy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmNwcCcsCi0gICAgICAgICAgICAn
cmVuZGVyaW5nL3N2Zy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmgnLAogICAgICAgICAgICAgJ3JlbmRl
cmluZy9zdmcvU1ZHSW5saW5lRmxvd0JveC5jcHAnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9z
dmcvU1ZHSW5saW5lRmxvd0JveC5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3ZnL1NWR0lu
bGluZVRleHRCb3guY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBlNjBhNzljLi5mZjJhMTcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTExLDcgKzEx
MTEsNiBAQAogCQk0MzY3MDhFNTEyRDlDQTRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHUm9vdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM2NzA4QTYxMkQ5
Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR1Jvb3QuaCAqLzsgfTsKIAkJNDM2NzA4RTkxMkQ5Q0E0
QjAwMDQ0MjM0IC8qIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzNjcwOEFBMTJEOUNBNEIwMDA0
NDIzNCAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmggKi87IH07CiAJCTQzNjcw
OEVCMTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM2NzA4QUMxMkQ5Q0E0
QjAwMDQ0MjM0IC8qIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmggKi87IH07Ci0JCTQzNjcw
OEVEMTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdJbWFnZUJ1ZmZlclRvb2xzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzY3MDhBRTEyRDlDQTRCMDAwNDQy
MzQgLyogU1ZHSW1hZ2VCdWZmZXJUb29scy5oICovOyB9OwogCQk0MzY3MDhFRTEyRDlDQTRCMDAw
NDQyMzQgLyogU1ZHTWFya2VyRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDM2NzA4QUYxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR01hcmtlckRhdGEu
aCAqLzsgfTsKIAkJNDM2NzA4RjAxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR01hcmtlckxheW91dElu
Zm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzNjcw
OEIxMTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdNYXJrZXJMYXlvdXRJbmZvLmggKi87IH07CiAJCTQz
NjcwOEYyMTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZW5kZXJTdXBwb3J0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzY3MDhCMzEyRDlDQTRCMDAwNDQy
MzQgLyogU1ZHUmVuZGVyU3VwcG9ydC5oICovOyB9OwpAQCAtODAxNSw4ICs4MDE0LDYgQEAKIAkJ
NDM2NzA4QUExMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWlu
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHVHJhbnNmb3Jt
YWJsZUNvbnRhaW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzY3MDhBQjEy
RDlDQTRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzY3MDhBQzEyRDlDQTRCMDAwNDQy
MzQgLyogUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNDM2NzA4QUQxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR0ltYWdlQnVmZmVy
VG9vbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHSW1hZ2VC
dWZmZXJUb29scy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQzNjcwOEFFMTJE
OUNBNEIwMDA0NDIzNCAvKiBTVkdJbWFnZUJ1ZmZlclRvb2xzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNWR0ltYWdlQnVmZmVyVG9vbHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDM2NzA4QUYxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR01hcmtlckRhdGEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTWFya2VyRGF0YS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MzY3MDhCMDEyRDlDQTRCMDAwNDQyMzQgLyogU1ZHTWFy
a2VyTGF5b3V0SW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
VkdNYXJrZXJMYXlvdXRJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM2
NzA4QjExMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR01hcmtlckxheW91dEluZm8uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTWFya2VyTGF5b3V0SW5mby5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTM3NTQsOCArMTM3NTEsNiBAQAogCQkJCTA4NTRCMDBCMTI1
NUU0RTYwMEI5Q0REMCAvKiBSZW5kZXJTVkdUU3Bhbi5oICovLAogCQkJCTQzNjcwOEFCMTJEOUNB
NEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAgKi8sCiAJCQkJNDM2
NzA4QUMxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmggKi8s
Ci0JCQkJNDM2NzA4QUQxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR0ltYWdlQnVmZmVyVG9vbHMuY3Bw
ICovLAotCQkJCTQzNjcwOEFFMTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdJbWFnZUJ1ZmZlclRvb2xz
LmggKi8sCiAJCQkJMDg1NEIwMEMxMjU1RTRFNjAwQjlDREQwIC8qIFNWR0lubGluZUZsb3dCb3gu
Y3BwICovLAogCQkJCTA4NTRCMDBEMTI1NUU0RTYwMEI5Q0REMCAvKiBTVkdJbmxpbmVGbG93Qm94
LmggKi8sCiAJCQkJMDg1NEIwMEUxMjU1RTRFNjAwQjlDREQwIC8qIFNWR0lubGluZVRleHRCb3gu
Y3BwICovLApAQCAtMjQyMzUsNyArMjQyMzAsNiBAQAogCQkJCUIyMjI3QTJBMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdHcmFkaWVudEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1MEZCRjJC
MEQ5QUYwNDcwMDhGQzI5MiAvKiBTVkdIS2VybkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyNTU5OUE0MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdJbWFnZS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNDM2NzA4RUQxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR0ltYWdlQnVmZmVyVG9vbHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA4Rjg1OUQ1MTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0EyRDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHSW1h
Z2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjhDNkEyQTBEMDBDNDQ4MDAzMzRBQTQg
LyogU1ZHSW1hZ2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCmluZGV4IGU0YTk1MDguLjNk
YjdhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVUaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVGlsZS5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5o
IgotI2luY2x1ZGUgIlNWR0ltYWdlQnVmZmVyVG9vbHMuaCIKKyNpbmNsdWRlICJTVkdSZW5kZXJp
bmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KQogICAgIH0KIAogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gdGlsZUltYWdlOwotICAgIGlmICgh
U1ZHSW1hZ2VCdWZmZXJUb29sczo6Y3JlYXRlSW1hZ2VCdWZmZXJGb3JQYXR0ZXJuKHRpbGVSZWN0
LCB0aWxlUmVjdCwgdGlsZUltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBmaWx0ZXIoKS0+cmVu
ZGVyaW5nTW9kZSgpKSkKKyAgICBpZiAoIVNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdl
QnVmZmVyRm9yUGF0dGVybih0aWxlUmVjdCwgdGlsZVJlY3QsIHRpbGVJbWFnZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZmlsdGVyKCktPnJlbmRlcmluZ01vZGUoKSkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEdyYXBoaWNzQ29udGV4dCogdGlsZUltYWdlQ29udGV4dCA9IHRpbGVJbWFnZS0+Y29u
dGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Fs
bEluT25lLmNwcAppbmRleCA4ZjhjODZlLi5iNDY3YzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0FsbEluT25lLmNwcApAQCAtNTUsNyArNTUsNiBA
QAogI2luY2x1ZGUgIlJlbmRlclNWR1RleHRQYXRoLmNwcCIKICNpbmNsdWRlICJSZW5kZXJTVkdU
cmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcCIKICNpbmNsdWRlICJSZW5kZXJTVkdWaWV3cG9ydENv
bnRhaW5lci5jcHAiCi0jaW5jbHVkZSAiU1ZHSW1hZ2VCdWZmZXJUb29scy5jcHAiCiAjaW5jbHVk
ZSAiU1ZHSW5saW5lRmxvd0JveC5jcHAiCiAjaW5jbHVkZSAiU1ZHSW5saW5lVGV4dEJveC5jcHAi
CiAjaW5jbHVkZSAiU1ZHTWFya2VyTGF5b3V0SW5mby5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAppbmRleCA1OTEzMTYy
Li5kZjI2ZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW5saW5lVGV4dC5jcHAKQEAgLTM0LDggKzM0LDggQEAKICNpbmNsdWRlICJSZW5kZXJT
VkdSb290LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHVGV4dC5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCi0jaW5jbHVkZSAiU1ZHSW1hZ2VCdWZmZXJUb29scy5oIgogI2luY2x1ZGUgIlNWR0lubGlu
ZVRleHRCb3guaCIKKyNpbmNsdWRlICJTVkdSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAi
U1ZHUm9vdElubGluZUJveC5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogCkBAIC0y
NTgsNyArMjU4LDcgQEAgdm9pZCBSZW5kZXJTVkdJbmxpbmVUZXh0Ojpjb21wdXRlTmV3U2NhbGVk
Rm9udEZvclN0eWxlKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGMKIAogICAgIC8vIEFsdGVyIGZv
bnQtc2l6ZSB0byB0aGUgcmlnaHQgb24tc2NyZWVuIHZhbHVlIHRvIGF2b2lkIHNjYWxpbmcgdGhl
IGdseXBocyB0aGVtc2VsdmVzLCBleGNlcHQgd2hlbiBHZW9tZXRyaWNQcmVjaXNpb24gaXMgc3Bl
Y2lmaWVkCiAgICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsKLSAgICBTVkdJbWFnZUJ1ZmZlclRvb2xz
OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0U1ZHQ29vcmRpbmF0ZVN5c3RlbShy
ZW5kZXJlciwgY3RtKTsKKyAgICBTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zv
cm1hdGlvblRvT3V0ZXJtb3N0U1ZHQ29vcmRpbmF0ZVN5c3RlbShyZW5kZXJlciwgY3RtKTsKICAg
ICBzY2FsaW5nRmFjdG9yID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChzcXJ0KChwb3coY3RtLnhT
Y2FsZSgpLCAyKSArIHBvdyhjdG0ueVNjYWxlKCksIDIpKSAvIDIpKTsKICAgICBpZiAoc2NhbGlu
Z0ZhY3RvciA9PSAxIHx8ICFzY2FsaW5nRmFjdG9yIHx8IHN0eWxlLT5mb250RGVzY3JpcHRpb24o
KS50ZXh0UmVuZGVyaW5nTW9kZSgpID09IEdlb21ldHJpY1ByZWNpc2lvbikgewogICAgICAgICBz
Y2FsaW5nRmFjdG9yID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAppbmRleCA1NzQyMDYxLi43MzM5ZTI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlQ2xpcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC0zOSw5ICszOSw5IEBACiAjaW5jbHVkZSAiUmVuZGVy
U3R5bGUuaCIKICNpbmNsdWRlICJTVkdDbGlwUGF0aEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdF
bGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHSW1hZ2VCdWZmZXJUb29scy5oIgogI2luY2x1ZGUgIlNW
R05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3VwcG9ydC5oIgorI2luY2x1ZGUgIlNWR1Jl
bmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJTVkdSZXNvdXJjZXMuaCIKICNpbmNsdWRlICJT
VkdSZXNvdXJjZXNDYWNoZS5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKQEAgLTE2
OSwxMCArMTY5LDEwIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXBw
aW5nVG9Db250ZXh0KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zCiAgICAgfQogCiAgICAgQWZm
aW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtOwotICAgIFNWR0ltYWdlQnVmZmVyVG9vbHM6
OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RTVkdDb29yZGluYXRlU3lzdGVtKG9i
amVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0pOworICAgIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1
bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RTVkdDb29yZGluYXRlU3lzdGVtKG9iamVjdCwg
YWJzb2x1dGVUcmFuc2Zvcm0pOwogCiAgICAgaWYgKHNob3VsZENyZWF0ZUNsaXBEYXRhICYmICFy
ZXBhaW50UmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKCFTVkdJbWFnZUJ1ZmZlclRvb2xz
OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0sIGNsaXBw
ZXJEYXRhLT5jbGlwTWFza0ltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBVbmFjY2VsZXJhdGVk
KSkKKyAgICAgICAgaWYgKCFTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihy
ZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0sIGNsaXBwZXJEYXRhLT5jbGlwTWFza0ltYWdl
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBVbmFjY2VsZXJhdGVkKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgICAgICBHcmFwaGljc0NvbnRleHQqIG1hc2tDb250ZXh0ID0gY2xpcHBl
ckRhdGEtPmNsaXBNYXNrSW1hZ2UtPmNvbnRleHQoKTsKQEAgLTIwMiw3ICsyMDIsNyBAQCBib29s
IFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29udGV4dChSZW5kZXJP
YmplY3QqIG9iamVjdCwgY29ucwogICAgIGlmICghY2xpcHBlckRhdGEtPmNsaXBNYXNrSW1hZ2Up
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFNWR0ltYWdlQnVmZmVyVG9vbHM6OmNsaXBU
b0ltYWdlQnVmZmVyKGNvbnRleHQsIGFic29sdXRlVHJhbnNmb3JtLCByZXBhaW50UmVjdCwgY2xp
cHBlckRhdGEtPmNsaXBNYXNrSW1hZ2UsIG1pc3NpbmdDbGlwcGVyRGF0YSk7CisgICAgU1ZHUmVu
ZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoY29udGV4dCwgYWJzb2x1dGVUcmFuc2Zv
cm0sIHJlcGFpbnRSZWN0LCBjbGlwcGVyRGF0YS0+Y2xpcE1hc2tJbWFnZSwgbWlzc2luZ0NsaXBw
ZXJEYXRhKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjY0LDcgKzI2NCw3IEBAIGJvb2wg
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoQ2xpcHBl
ckRhdGEqIGNsaXBwZXJEYXRhCiAgICAgICAgIC8vIEluIHRoZSBjYXNlIG9mIGEgPHVzZT4gZWxl
bWVudCwgd2Ugb2J0YWluZWQgaXRzIHJlbmRlcmVyZSBhYm92ZSwgdG8gcmV0cmlldmUgaXRzIGNs
aXBSdWxlLgogICAgICAgICAvLyBXZSBoYXZlIHRvIHBhc3MgdGhlIDx1c2U+IHJlbmRlcmVyIGl0
c2VsZiB0byByZW5kZXJTdWJ0cmVlVG9JbWFnZUJ1ZmZlcigpIHRvIGFwcGx5IGl0J3MgeC95L3Ry
YW5zZm9ybS9ldGMuIHZhbHVlcyB3aGVuIHJlbmRlcmluZy4KICAgICAgICAgLy8gU28gaWYgaXNV
c2VFbGVtZW50IGlzIHRydWUsIHJlZmV0Y2ggdGhlIGNoaWxkTm9kZS0+cmVuZGVyZXIoKSwgYXMg
cmVuZGVyZXIgZ290IG92ZXJyaWRlbiBhYm92ZS4KLSAgICAgICAgU1ZHSW1hZ2VCdWZmZXJUb29s
czo6cmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIoY2xpcHBlckRhdGEtPmNsaXBNYXNrSW1hZ2Uu
Z2V0KCksIGlzVXNlRWxlbWVudCA/IGNoaWxkTm9kZS0+cmVuZGVyZXIoKSA6IHJlbmRlcmVyLCBt
YXNrQ29udGVudFRyYW5zZm9ybWF0aW9uKTsKKyAgICAgICAgU1ZHUmVuZGVyaW5nQ29udGV4dDo6
cmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIoY2xpcHBlckRhdGEtPmNsaXBNYXNrSW1hZ2UuZ2V0
KCksIGlzVXNlRWxlbWVudCA/IGNoaWxkTm9kZS0+cmVuZGVyZXIoKSA6IHJlbmRlcmVyLCBtYXNr
Q29udGVudFRyYW5zZm9ybWF0aW9uKTsKICAgICB9CiAKICAgICBmcmFtZSgpLT52aWV3KCktPnNl
dFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAppbmRleCA0M2ViZWUy
Li5kNWQ3OTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtNDMsOCArNDMsOCBAQAogI2luY2x1ZGUg
IlNWR0ZpbHRlci5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKLSNpbmNsdWRlICJTVkdJbWFn
ZUJ1ZmZlclRvb2xzLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKKyNpbmNsdWRlICJTVkdSZW5k
ZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUg
IlNWR1VuaXRUeXBlcy5oIgogCkBAIC0xNjUsNyArMTY1LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyU3R5
bGUqLAogCiAgICAgLy8gRGV0ZXJtaW5lIGFic29sdXRlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBm
b3IgZmlsdGVyLiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm07Ci0gICAg
U1ZHSW1hZ2VCdWZmZXJUb29sczo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdFNW
R0Nvb3JkaW5hdGVTeXN0ZW0ob2JqZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSk7CisgICAgU1ZHUmVu
ZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdFNWR0Nvb3Jk
aW5hdGVTeXN0ZW0ob2JqZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSk7CiAgICAgaWYgKCFhYnNvbHV0
ZVRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0y
MzUsNyArMjM1LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJj
ZShSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyU3R5bGUqLAogCiAgICAgT3duUHRyPEltYWdl
QnVmZmVyPiBzb3VyY2VHcmFwaGljOwogICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9
IG9iamVjdC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT5zZXR0aW5ncygpLT5hY2NlbGVyYXRlZEZpbHRl
cnNFbmFibGVkKCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQ7Ci0gICAgaWYgKCFTVkdJ
bWFnZUJ1ZmZlclRvb2xzOjpjcmVhdGVJbWFnZUJ1ZmZlcihkcmF3aW5nUmVnaW9uLCBlZmZlY3Rp
dmVUcmFuc2Zvcm0sIHNvdXJjZUdyYXBoaWMsIENvbG9yU3BhY2VMaW5lYXJSR0IsIHJlbmRlcmlu
Z01vZGUpKSB7CisgICAgaWYgKCFTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZl
cihkcmF3aW5nUmVnaW9uLCBlZmZlY3RpdmVUcmFuc2Zvcm0sIHNvdXJjZUdyYXBoaWMsIENvbG9y
U3BhY2VMaW5lYXJSR0IsIHJlbmRlcmluZ01vZGUpKSB7CiAgICAgICAgIEFTU0VSVCghbV9maWx0
ZXIuY29udGFpbnMob2JqZWN0KSk7CiAgICAgICAgIGZpbHRlckRhdGEtPnNhdmVkQ29udGV4dCA9
IGNvbnRleHQ7CiAgICAgICAgIG1fZmlsdGVyLnNldChvYmplY3QsIGZpbHRlckRhdGEubGVha1B0
cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQuY3BwCmluZGV4IDFhMWQ1YTAuLjkwN2ZlMTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUdyYWRpZW50LmNwcApAQCAtMjksOCArMjksOCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1NoYXBlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHVGV4
dC5oIgotI2luY2x1ZGUgIlNWR0ltYWdlQnVmZmVyVG9vbHMuaCIKICNpbmNsdWRlICJTVkdSZW5k
ZXJTdXBwb3J0LmgiCisjaW5jbHVkZSAiU1ZHUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
PHd0Zi9VbnVzZWRQYXJhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02OCwxMSArNjgs
MTEgQEAgc3RhdGljIGlubGluZSBib29sIGNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRH
cmFkaWVudChHcmFwaGljc0NvbnRleHQqJiBjb24KICAgICBBU1NFUlQodGV4dFJvb3RCbG9jayk7
CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm07Ci0gICAgU1ZHSW1hZ2VC
dWZmZXJUb29sczo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdFNWR0Nvb3JkaW5h
dGVTeXN0ZW0odGV4dFJvb3RCbG9jaywgYWJzb2x1dGVUcmFuc2Zvcm0pOworICAgIFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RTVkdDb29yZGlu
YXRlU3lzdGVtKHRleHRSb290QmxvY2ssIGFic29sdXRlVHJhbnNmb3JtKTsKIAogICAgIEZsb2F0
UmVjdCByZXBhaW50UmVjdCA9IHRleHRSb290QmxvY2stPnJlcGFpbnRSZWN0SW5Mb2NhbENvb3Jk
aW5hdGVzKCk7CiAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBtYXNrSW1hZ2U7Ci0gICAgaWYgKCFT
VkdJbWFnZUJ1ZmZlclRvb2xzOjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJzb2x1
dGVUcmFuc2Zvcm0sIG1hc2tJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgVW5hY2NlbGVyYXRl
ZCkpCisgICAgaWYgKCFTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBh
aW50UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0sIG1hc2tJbWFnZSwgQ29sb3JTcGFjZURldmljZVJH
QiwgVW5hY2NlbGVyYXRlZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEdyYXBoaWNz
Q29udGV4dCogbWFza0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwpAQCAtOTUs
MTAgKzk1LDEwIEBAIHN0YXRpYyBpbmxpbmUgQWZmaW5lVHJhbnNmb3JtIGNsaXBUb1RleHRNYXNr
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKICAgICBBU1NFUlQodGV4dFJvb3RCbG9jayk7CiAK
ICAgICBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm07Ci0gICAgU1ZHSW1hZ2VCdWZm
ZXJUb29sczo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdFNWR0Nvb3JkaW5hdGVT
eXN0ZW0odGV4dFJvb3RCbG9jaywgYWJzb2x1dGVUcmFuc2Zvcm0pOworICAgIFNWR1JlbmRlcmlu
Z0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RTVkdDb29yZGluYXRl
U3lzdGVtKHRleHRSb290QmxvY2ssIGFic29sdXRlVHJhbnNmb3JtKTsKIAogICAgIHRhcmdldFJl
Y3QgPSB0ZXh0Um9vdEJsb2NrLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOwotICAg
IFNWR0ltYWdlQnVmZmVyVG9vbHM6OmNsaXBUb0ltYWdlQnVmZmVyKGNvbnRleHQsIGFic29sdXRl
VHJhbnNmb3JtLCB0YXJnZXRSZWN0LCBpbWFnZUJ1ZmZlciwgZmFsc2UpOworICAgIFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKGNvbnRleHQsIGFic29sdXRlVHJhbnNmb3Jt
LCB0YXJnZXRSZWN0LCBpbWFnZUJ1ZmZlciwgZmFsc2UpOwogCiAgICAgQWZmaW5lVHJhbnNmb3Jt
IG1hdHJpeDsKICAgICBpZiAoYm91bmRpbmdCb3hNb2RlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCmluZGV4
IGY3YTM1ZTMuLmE1Mjc0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCkBAIC0zMiw4ICszMiw4IEBACiAj
aW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCiAjaW5j
bHVkZSAiU1ZHRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0ltYWdlQnVmZmVyVG9vbHMuaCIKICNp
bmNsdWRlICJTVkdNYXNrRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR1JlbmRlcmluZ0NvbnRleHQu
aCIKICNpbmNsdWRlICJTVkdTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVW5pdFR5cGVz
LmgiCiAKQEAgLTkzLDcgKzkzLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBw
bHlSZXNvdXJjZShSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyU3R5bGUqLAogICAgIE1hc2tl
ckRhdGEqIG1hc2tlckRhdGEgPSBtX21hc2tlci5nZXQob2JqZWN0KTsKIAogICAgIEFmZmluZVRy
YW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybTsKLSAgICBTVkdJbWFnZUJ1ZmZlclRvb2xzOjpjYWxj
dWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0U1ZHQ29vcmRpbmF0ZVN5c3RlbShvYmplY3Qs
IGFic29sdXRlVHJhbnNmb3JtKTsKKyAgICBTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVU
cmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0U1ZHQ29vcmRpbmF0ZVN5c3RlbShvYmplY3QsIGFic29s
dXRlVHJhbnNmb3JtKTsKIAogICAgIEZsb2F0UmVjdCByZXBhaW50UmVjdCA9IG9iamVjdC0+cmVw
YWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKIApAQCAtMTA2LDcgKzEwNiw3IEBAIGJvb2wg
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyT2JqZWN0KiBvYmpl
Y3QsIFJlbmRlclN0eWxlKiwKICAgICAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUqIHN2Z1N0eWxl
ID0gc3R5bGUoKS0+c3ZnU3R5bGUoKTsKICAgICAgICAgQVNTRVJUKHN2Z1N0eWxlKTsKICAgICAg
ICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gc3ZnU3R5bGUtPmNvbG9ySW50ZXJwb2xhdGlvbigp
ID09IENJX0xJTkVBUlJHQiA/IENvbG9yU3BhY2VMaW5lYXJSR0IgOiBDb2xvclNwYWNlRGV2aWNl
UkdCOwotICAgICAgICBpZiAoIVNWR0ltYWdlQnVmZmVyVG9vbHM6OmNyZWF0ZUltYWdlQnVmZmVy
KHJlcGFpbnRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSwgbWFza2VyRGF0YS0+bWFza0ltYWdlLCBj
b2xvclNwYWNlLCBVbmFjY2VsZXJhdGVkKSkKKyAgICAgICAgaWYgKCFTVkdSZW5kZXJpbmdDb250
ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0sIG1h
c2tlckRhdGEtPm1hc2tJbWFnZSwgY29sb3JTcGFjZSwgVW5hY2NlbGVyYXRlZCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgaWYgKCFkcmF3Q29udGVudEludG9NYXNrSW1h
Z2UobWFza2VyRGF0YSwgY29sb3JTcGFjZSwgbWFza0VsZW1lbnQsIG9iamVjdCkpIHsKQEAgLTEx
Nyw3ICsxMTcsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291cmNl
KFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJTdHlsZSosCiAgICAgaWYgKCFtYXNrZXJEYXRh
LT5tYXNrSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFNWR0ltYWdlQnVmZmVy
VG9vbHM6OmNsaXBUb0ltYWdlQnVmZmVyKGNvbnRleHQsIGFic29sdXRlVHJhbnNmb3JtLCByZXBh
aW50UmVjdCwgbWFza2VyRGF0YS0+bWFza0ltYWdlLCBtaXNzaW5nTWFza2VyRGF0YSk7CisgICAg
U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoY29udGV4dCwgYWJzb2x1dGVU
cmFuc2Zvcm0sIHJlcGFpbnRSZWN0LCBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UsIG1pc3NpbmdNYXNr
ZXJEYXRhKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTQ1LDcgKzE0NSw3IEBAIGJvb2wg
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJE
YXRhKiBtYXNrZXJEYXRhLCBDCiAgICAgICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlcmVy
LT5zdHlsZSgpOwogICAgICAgICBpZiAoIXN0eWxlIHx8IHN0eWxlLT5kaXNwbGF5KCkgPT0gTk9O
RSB8fCBzdHlsZS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgU1ZHSW1hZ2VCdWZmZXJUb29sczo6cmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZm
ZXIobWFza2VyRGF0YS0+bWFza0ltYWdlLmdldCgpLCByZW5kZXJlciwgbWFza0NvbnRlbnRUcmFu
c2Zvcm1hdGlvbik7CisgICAgICAgIFNWR1JlbmRlcmluZ0NvbnRleHQ6OnJlbmRlclN1YnRyZWVU
b0ltYWdlQnVmZmVyKG1hc2tlckRhdGEtPm1hc2tJbWFnZS5nZXQoKSwgcmVuZGVyZXIsIG1hc2tD
b250ZW50VHJhbnNmb3JtYXRpb24pOwogICAgIH0KIAogI2lmICFVU0UoQ0cpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVy
bi5jcHAKaW5kZXggZjcyN2JiMC4uYmVjMGYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcApAQCAtMjcs
OCArMjcsOCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhdHRl
cm5BdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUm9vdC5oIgotI2luY2x1ZGUgIlNW
R0ltYWdlQnVmZmVyVG9vbHMuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJTdXBwb3J0LmgiCisjaW5j
bHVkZSAiU1ZHUmVuZGVyaW5nQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTk5LDEwICs5OSwxMCBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YXBwbHlSZXNv
dXJjZShSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyU3R5bGUqCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtSWdu
b3JpbmdSb3RhdGlvbjsKLSAgICAgICAgU1ZHSW1hZ2VCdWZmZXJUb29sczo6Y2FsY3VsYXRlVHJh
bnNmb3JtYXRpb25Ub091dGVybW9zdFNWR0Nvb3JkaW5hdGVTeXN0ZW0ob2JqZWN0LCBhYnNvbHV0
ZVRyYW5zZm9ybUlnbm9yaW5nUm90YXRpb24pOworICAgICAgICBTVkdSZW5kZXJpbmdDb250ZXh0
OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0U1ZHQ29vcmRpbmF0ZVN5c3RlbShv
YmplY3QsIGFic29sdXRlVHJhbnNmb3JtSWdub3JpbmdSb3RhdGlvbik7CiAKICAgICAgICAgLy8g
SWdub3JlIDJEIHJvdGF0aW9uLCBhcyBpdCBkb2Vzbid0IGFmZmVjdCB0aGUgc2l6ZSBvZiB0aGUg
dGlsZS4KLSAgICAgICAgU1ZHSW1hZ2VCdWZmZXJUb29sczo6Y2xlYXIyRFJvdGF0aW9uKGFic29s
dXRlVHJhbnNmb3JtSWdub3JpbmdSb3RhdGlvbik7CisgICAgICAgIFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNsZWFyMkRSb3RhdGlvbihhYnNvbHV0ZVRyYW5zZm9ybUlnbm9yaW5nUm90YXRpb24pOwog
ICAgICAgICBGbG9hdFJlY3QgYWJzb2x1dGVUaWxlQm91bmRhcmllcyA9IGFic29sdXRlVHJhbnNm
b3JtSWdub3JpbmdSb3RhdGlvbi5tYXBSZWN0KHRpbGVCb3VuZGFyaWVzKTsKICAgICAgICAgRmxv
YXRSZWN0IGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzOwogCkBAIC0yMzIsMTEgKzIzMiwx
MSBAQCBQYXNzT3duUHRyPEltYWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNy
ZWF0ZVRpbGVJbWFnZShjb25zdCBQYXR0ZXJuQQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiB0aWxlSW1hZ2VUcmFuc2Zvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFJlY3QmIGNsYW1wZWRBYnNv
bHV0ZVRpbGVCb3VuZGFyaWVzKSBjb25zdAogewotICAgIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3Vu
ZGFyaWVzID0gU1ZHSW1hZ2VCdWZmZXJUb29sczo6Y2xhbXBlZEFic29sdXRlVGFyZ2V0UmVjdChh
YnNvbHV0ZVRpbGVCb3VuZGFyaWVzKTsKKyAgICBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmll
cyA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QoYWJzb2x1
dGVUaWxlQm91bmRhcmllcyk7CiAKICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IHRpbGVJbWFnZTsK
IAotICAgIGlmICghU1ZHSW1hZ2VCdWZmZXJUb29sczo6Y3JlYXRlSW1hZ2VCdWZmZXJGb3JQYXR0
ZXJuKGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVz
LCB0aWxlSW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIFVuYWNjZWxlcmF0ZWQpKQorICAgIGlm
ICghU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXJGb3JQYXR0ZXJuKGFic29s
dXRlVGlsZUJvdW5kYXJpZXMsIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCB0aWxlSW1h
Z2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIFVuYWNjZWxlcmF0ZWQpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIEdyYXBoaWNzQ29udGV4dCogdGlsZUltYWdlQ29udGV4dCA9IHRpbGVJ
bWFnZS0+Y29udGV4dCgpOwpAQCAtMjYwLDcgKzI2MCw3IEBAIFBhc3NPd25QdHI8SW1hZ2VCdWZm
ZXI+IFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlKGNvbnN0IFBhdHRl
cm5BCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkt
Pm5lZWRzTGF5b3V0KCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgU1ZH
SW1hZ2VCdWZmZXJUb29sczo6cmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIodGlsZUltYWdlLmdl
dCgpLCBub2RlLT5yZW5kZXJlcigpLCBjb250ZW50VHJhbnNmb3JtYXRpb24pOworICAgICAgICBT
VkdSZW5kZXJpbmdDb250ZXh0OjpyZW5kZXJTdWJ0cmVlVG9JbWFnZUJ1ZmZlcih0aWxlSW1hZ2Uu
Z2V0KCksIG5vZGUtPnJlbmRlcmVyKCksIGNvbnRlbnRUcmFuc2Zvcm1hdGlvbik7CiAgICAgfQog
CiAgICAgcmV0dXJuIHRpbGVJbWFnZS5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR0ltYWdlQnVmZmVyVG9vbHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMTI5NDE5Ni4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR0ltYWdlQnVmZmVyVG9vbHMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTY1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
IDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVO
QUJMRShTVkcpCi0jaW5jbHVkZSAiU1ZHSW1hZ2VCdWZmZXJUb29scy5oIgotCi0jaW5jbHVkZSAi
RnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCi0jaW5jbHVkZSAiUmVuZGVyU1ZHQ29udGFpbmVyLmgiCi0jaW5jbHVkZSAi
UmVuZGVyU1ZHUm9vdC5oIgotCi1zdGF0aWMgaW50IGtNYXhJbWFnZUJ1ZmZlclNpemUgPSA0MDk2
OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBBZmZpbmVUcmFuc2Zvcm0mIGN1cnJl
bnRDb250ZW50VHJhbnNmb3JtYXRpb24oKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQWZm
aW5lVHJhbnNmb3JtLCBzX2N1cnJlbnRDb250ZW50VHJhbnNmb3JtYXRpb24sICgpKTsKLSAgICBy
ZXR1cm4gc19jdXJyZW50Q29udGVudFRyYW5zZm9ybWF0aW9uOwotfQotCi12b2lkIFNWR0ltYWdl
QnVmZmVyVG9vbHM6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RTVkdDb29yZGlu
YXRlU3lzdGVtKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIEFmZmluZVRyYW5zZm9ybSYg
YWJzb2x1dGVUcmFuc2Zvcm0pCi17Ci0gICAgY29uc3QgUmVuZGVyT2JqZWN0KiBjdXJyZW50ID0g
cmVuZGVyZXI7Ci0gICAgQVNTRVJUKGN1cnJlbnQpOwotCi0gICAgYWJzb2x1dGVUcmFuc2Zvcm0g
PSBjdXJyZW50Q29udGVudFRyYW5zZm9ybWF0aW9uKCk7Ci0gICAgd2hpbGUgKGN1cnJlbnQpIHsK
LSAgICAgICAgYWJzb2x1dGVUcmFuc2Zvcm0gPSBjdXJyZW50LT5sb2NhbFRvUGFyZW50VHJhbnNm
b3JtKCkgKiBhYnNvbHV0ZVRyYW5zZm9ybTsKLSAgICAgICAgaWYgKGN1cnJlbnQtPmlzU1ZHUm9v
dCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5wYXJl
bnQoKTsKLSAgICB9Ci19Ci0KLWJvb2wgU1ZHSW1hZ2VCdWZmZXJUb29sczo6Y3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGFic29sdXRlVHJhbnNmb3JtLCBPd25QdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlciwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpCi17Ci0gICAg
SW50UmVjdCBwYWludFJlY3QgPSBjYWxjdWxhdGVJbWFnZUJ1ZmZlclJlY3QodGFyZ2V0UmVjdCwg
YWJzb2x1dGVUcmFuc2Zvcm0pOwotICAgIC8vIERvbid0IGNyZWF0ZSBlbXB0eSBJbWFnZUJ1ZmZl
cnMuCi0gICAgaWYgKHBhaW50UmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIEludFNpemUgY2xhbXBlZFNpemUgPSBjbGFtcGVkQWJzb2x1dGVTaXplKHBhaW50UmVj
dC5zaXplKCkpOwotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGNsYW1wZWRTaXplLCAxLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlKTsKLSAgICBp
ZiAoIWltYWdlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQq
IGltYWdlQ29udGV4dCA9IGltYWdlLT5jb250ZXh0KCk7Ci0gICAgQVNTRVJUKGltYWdlQ29udGV4
dCk7Ci0KLSAgICAvLyBUaGlzIGlzIGRvbmUgaW4gYWJzb2x1dGUgY29vcmRpbmF0ZXMuCi0gICAg
aW1hZ2VDb250ZXh0LT50cmFuc2xhdGUoLXBhaW50UmVjdC54KCksIC1wYWludFJlY3QueSgpKTsK
LQotICAgIGltYWdlQ29udGV4dC0+Y29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtKTsKLQotICAg
IC8vIFRoaXMgaGFwcGVucyBpbiBsb2NhbCBjb29yZGluYXRlcy4KLSAgICBpbWFnZUNvbnRleHQt
PnNjYWxlKEZsb2F0U2l6ZShzdGF0aWNfY2FzdDxmbG9hdD4oY2xhbXBlZFNpemUud2lkdGgoKSkg
LyBwYWludFJlY3Qud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxmbG9hdD4oY2xhbXBlZFNpemUuaGVpZ2h0KCkpIC8gcGFpbnRSZWN0LmhlaWdo
dCgpKSk7Ci0KLSAgICBpbWFnZUJ1ZmZlciA9IGltYWdlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotYm9vbCBTVkdJbWFnZUJ1ZmZlclRvb2xzOjpjcmVhdGVJbWFnZUJ1ZmZlckZv
clBhdHRlcm4oY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRhcmdldFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgY2xhbXBlZEFic29sdXRlVGFyZ2V0UmVjdCwgT3duUHRyPEltYWdlQnVmZmVyPiYgaW1h
Z2VCdWZmZXIsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdN
b2RlKQotewotICAgIEludFNpemUgaW1hZ2VTaXplKHJvdW5kZWRJbnRTaXplKGNsYW1wZWRBYnNv
bHV0ZVRhcmdldFJlY3Quc2l6ZSgpKSk7Ci0gICAgSW50U2l6ZSB1bmNsYW1wZWRJbWFnZVNpemUo
cm91bmRlZEludFNpemUoYWJzb2x1dGVUYXJnZXRSZWN0LnNpemUoKSkpOwotCi0gICAgLy8gRG9u
J3QgY3JlYXRlIGVtcHR5IEltYWdlQnVmZmVycy4KLSAgICBpZiAoaW1hZ2VTaXplLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBpbWFn
ZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VTaXplLCAxLCBjb2xvclNwYWNlLCByZW5kZXJp
bmdNb2RlKTsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBH
cmFwaGljc0NvbnRleHQqIGltYWdlQ29udGV4dCA9IGltYWdlLT5jb250ZXh0KCk7Ci0gICAgQVNT
RVJUKGltYWdlQ29udGV4dCk7Ci0KLSAgICAvLyBDb21wZW5zYXRlIHJvdW5kaW5nIGVmZmVjdHMs
IGFzIHRoZSBhYnNvbHV0ZSB0YXJnZXQgcmVjdCBpcyB1c2luZyBmbG9hdGluZy1wb2ludCBudW1i
ZXJzIGFuZCB0aGUgaW1hZ2UgYnVmZmVyIHNpemUgaXMgaW50ZWdlci4KLSAgICBpbWFnZUNvbnRl
eHQtPnNjYWxlKEZsb2F0U2l6ZSh1bmNsYW1wZWRJbWFnZVNpemUud2lkdGgoKSAvIGFic29sdXRl
VGFyZ2V0UmVjdC53aWR0aCgpLCB1bmNsYW1wZWRJbWFnZVNpemUuaGVpZ2h0KCkgLyBhYnNvbHV0
ZVRhcmdldFJlY3QuaGVpZ2h0KCkpKTsKLQotICAgIGltYWdlQnVmZmVyID0gaW1hZ2UucmVsZWFz
ZSgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFNWR0ltYWdlQnVmZmVyVG9vbHM6OnJl
bmRlclN1YnRyZWVUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgUmVuZGVyT2JqZWN0
KiBpdGVtLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHN1YnRyZWVDb250ZW50VHJhbnNmb3JtYXRp
b24pCi17Ci0gICAgQVNTRVJUKGl0ZW0pOwotICAgIEFTU0VSVChpbWFnZSk7Ci0gICAgQVNTRVJU
KGltYWdlLT5jb250ZXh0KCkpOwotCi0gICAgUGFpbnRJbmZvIGluZm8oaW1hZ2UtPmNvbnRleHQo
KSwgUGFpbnRJbmZvOjppbmZpbml0ZVJlY3QoKSwgUGFpbnRQaGFzZUZvcmVncm91bmQsIDAsIDAs
IDAsIDApOwotCi0gICAgQWZmaW5lVHJhbnNmb3JtJiBjb250ZW50VHJhbnNmb3JtYXRpb24gPSBj
dXJyZW50Q29udGVudFRyYW5zZm9ybWF0aW9uKCk7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIHNhdmVk
Q29udGVudFRyYW5zZm9ybWF0aW9uID0gY29udGVudFRyYW5zZm9ybWF0aW9uOwotICAgIGNvbnRl
bnRUcmFuc2Zvcm1hdGlvbiA9IHN1YnRyZWVDb250ZW50VHJhbnNmb3JtYXRpb24gKiBjb250ZW50
VHJhbnNmb3JtYXRpb247Ci0KLSAgICBBU1NFUlQoIWl0ZW0tPm5lZWRzTGF5b3V0KCkpOwotICAg
IGl0ZW0tPnBhaW50KGluZm8sIEludFBvaW50KCkpOwotCi0gICAgY29udGVudFRyYW5zZm9ybWF0
aW9uID0gc2F2ZWRDb250ZW50VHJhbnNmb3JtYXRpb247Ci19Ci0KLXZvaWQgU1ZHSW1hZ2VCdWZm
ZXJUb29sczo6Y2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRh
cmdldFJlY3QsIE93blB0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBib29sIHNhZmVUb0Ns
ZWFyKQotewotICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICBBU1NFUlQoaW1hZ2VCdWZmZXIpOwot
Ci0gICAgRmxvYXRSZWN0IGFic29sdXRlVGFyZ2V0UmVjdCA9IGNhbGN1bGF0ZUltYWdlQnVmZmVy
UmVjdCh0YXJnZXRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSk7Ci0KLSAgICAvLyBUaGUgbWFzayBp
bWFnZSBoYXMgYmVlbiBjcmVhdGVkIGluIHRoZSBhYnNvbHV0ZSBjb29yZGluYXRlIHNwYWNlLCBh
cyB0aGUgaW1hZ2Ugc2hvdWxkIG5vdCBiZSBzY2FsZWQuCi0gICAgLy8gU28gdGhlIGFjdHVhbCBt
YXNraW5nIHByb2Nlc3MgaGFzIHRvIGJlIGRvbmUgaW4gdGhlIGFic29sdXRlIGNvb3JkaW5hdGUg
c3BhY2UgYXMgd2VsbC4KLSAgICBjb250ZXh0LT5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0u
aW52ZXJzZSgpKTsKLSAgICBjb250ZXh0LT5jbGlwVG9JbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5n
ZXQoKSwgYWJzb2x1dGVUYXJnZXRSZWN0KTsKLSAgICBjb250ZXh0LT5jb25jYXRDVE0oYWJzb2x1
dGVUcmFuc2Zvcm0pOwotCi0gICAgLy8gV2hlbiBuZXN0aW5nIHJlc291cmNlcywgd2l0aCBvYmpl
Y3RCb3VuZGluZ0JveCBhcyBjb250ZW50IHVuaXQgdHlwZXMsIHRoZXJlJ3Mgbm8gdXNlIGluIGNh
Y2hpbmcgdGhlCi0gICAgLy8gcmVzdWx0aW5nIGltYWdlIGJ1ZmZlciBhcyB0aGUgcGFyZW50IHJl
c291cmNlIGFscmVhZHkgY2FjaGVzIHRoZSByZXN1bHQuCi0gICAgaWYgKHNhZmVUb0NsZWFyICYm
ICFjdXJyZW50Q29udGVudFRyYW5zZm9ybWF0aW9uKCkuaXNJZGVudGl0eSgpKQotICAgICAgICBp
bWFnZUJ1ZmZlci5jbGVhcigpOwotfQotCi1GbG9hdFJlY3QgU1ZHSW1hZ2VCdWZmZXJUb29sczo6
Y2xhbXBlZEFic29sdXRlVGFyZ2V0UmVjdChjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlVGFyZ2V0
UmVjdCkKLXsKLSAgICBjb25zdCBGbG9hdFNpemUgbWF4SW1hZ2VCdWZmZXJTaXplKGtNYXhJbWFn
ZUJ1ZmZlclNpemUsIGtNYXhJbWFnZUJ1ZmZlclNpemUpOwotICAgIHJldHVybiBGbG9hdFJlY3Qo
YWJzb2x1dGVUYXJnZXRSZWN0LmxvY2F0aW9uKCksIGFic29sdXRlVGFyZ2V0UmVjdC5zaXplKCku
c2hydW5rVG8obWF4SW1hZ2VCdWZmZXJTaXplKSk7Ci19Ci0KLUludFNpemUgU1ZHSW1hZ2VCdWZm
ZXJUb29sczo6Y2xhbXBlZEFic29sdXRlU2l6ZShjb25zdCBJbnRTaXplJiBhYnNvbHV0ZVNpemUp
Ci17Ci0gICAgY29uc3QgSW50U2l6ZSBtYXhJbWFnZUJ1ZmZlclNpemUoa01heEltYWdlQnVmZmVy
U2l6ZSwga01heEltYWdlQnVmZmVyU2l6ZSk7Ci0gICAgcmV0dXJuIGFic29sdXRlU2l6ZS5zaHJ1
bmtUbyhtYXhJbWFnZUJ1ZmZlclNpemUpOwotfQotCi12b2lkIFNWR0ltYWdlQnVmZmVyVG9vbHM6
OmNsZWFyMkRSb3RhdGlvbihBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKLXsKLSAgICBBZmZp
bmVUcmFuc2Zvcm06OkRlY29tcG9zZWRUeXBlIGRlY29tcG9zaXRpb247Ci0gICAgdHJhbnNmb3Jt
LmRlY29tcG9zZShkZWNvbXBvc2l0aW9uKTsKLSAgICBkZWNvbXBvc2l0aW9uLmFuZ2xlID0gMDsK
LSAgICB0cmFuc2Zvcm0ucmVjb21wb3NlKGRlY29tcG9zaXRpb24pOwotfQotCi19Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R0ltYWdlQnVmZmVyVG9vbHMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjcxYjEw
ZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0ltYWdlQnVm
ZmVyVG9vbHMuaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICov
Ci0KLSNpZm5kZWYgU1ZHSW1hZ2VCdWZmZXJUb29sc19oCi0jZGVmaW5lIFNWR0ltYWdlQnVmZmVy
VG9vbHNfaAotCi0jaWYgRU5BQkxFKFNWRykKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgotI2lu
Y2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBBZmZpbmVUcmFuc2Zvcm07Ci1jbGFzcyBGbG9hdFJlY3Q7
Ci1jbGFzcyBGbG9hdFNpemU7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBSZW5kZXJP
YmplY3Q7Ci0KLWNsYXNzIFNWR0ltYWdlQnVmZmVyVG9vbHMgewotICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFNWR0ltYWdlQnVmZmVyVG9vbHMpOwotCi1wdWJsaWM6Ci0gICAgc3RhdGljIGJvb2wg
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiBwYWludFJlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIE93blB0cjxJbWFnZUJ1ZmZlcj4mLCBDb2xv
clNwYWNlLCBSZW5kZXJpbmdNb2RlKTsKLSAgICAvLyBQYXR0ZXJucyBuZWVkIGEgZGlmZmVyZW50
IGZsb2F0LXRvLWludGVnZXIgY29vcmRpbmF0ZSBtYXBwaW5nLgotICAgIHN0YXRpYyBib29sIGNy
ZWF0ZUltYWdlQnVmZmVyRm9yUGF0dGVybihjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlVGFyZ2V0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0LCBPd25QdHI8
SW1hZ2VCdWZmZXI+JiwgQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSk7Ci0KLSAgICBzdGF0aWMg
dm9pZCByZW5kZXJTdWJ0cmVlVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIFJlbmRlck9iamVj
dCosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwotICAgIHN0YXRpYyB2b2lkIGNsaXBUb0ltYWdl
QnVmZmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVU
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgT3duUHRyPEltYWdlQnVmZmVy
PiYsIGJvb2wgc2FmZVRvQ2xlYXIpOwotCi0gICAgc3RhdGljIHZvaWQgY2FsY3VsYXRlVHJhbnNm
b3JtYXRpb25Ub091dGVybW9zdFNWR0Nvb3JkaW5hdGVTeXN0ZW0oY29uc3QgUmVuZGVyT2JqZWN0
KiwgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSk7Ci0gICAgc3RhdGljIEludFNp
emUgY2xhbXBlZEFic29sdXRlU2l6ZShjb25zdCBJbnRTaXplJik7Ci0gICAgc3RhdGljIEZsb2F0
UmVjdCBjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVU
YXJnZXRSZWN0KTsKLSAgICBzdGF0aWMgdm9pZCBjbGVhcjJEUm90YXRpb24oQWZmaW5lVHJhbnNm
b3JtJik7Ci0KLSAgICBzdGF0aWMgSW50UmVjdCBjYWxjdWxhdGVJbWFnZUJ1ZmZlclJlY3QoY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRl
VHJhbnNmb3JtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3QoYWJzb2x1
dGVUcmFuc2Zvcm0ubWFwUmVjdCh0YXJnZXRSZWN0KSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IFNWR0ltYWdlQnVmZmVyVG9vbHMoKSB7IH0KLSAgICB+U1ZHSW1hZ2VCdWZmZXJUb29scygpIHsg
fQotfTsKLQotfQotCi0jZW5kaWYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKaW5kZXggODk2N2RkYS4uNmRiOWUwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3Bw
CkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5lVGV4dC5oIgogI2lu
Y2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VT
b2xpZENvbG9yLmgiCi0jaW5jbHVkZSAiU1ZHSW1hZ2VCdWZmZXJUb29scy5oIgorI2luY2x1ZGUg
IlNWR1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJTVkdSZXNvdXJjZXNDYWNoZS5oIgog
I2luY2x1ZGUgIlNWR1Jvb3RJbmxpbmVCb3guaCIKICNpbmNsdWRlICJTVkdUZXh0UnVuUmVuZGVy
aW5nQ29udGV4dC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMGYxM2RjZi4uODBmNTNlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCkBA
IC0zMywxMCArMzMsMTEgQEAKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaCIK
ICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIgogI2luY2x1ZGUgIlJlbmRlclNW
R1Jlc291cmNlTWFza2VyLmgiCi0jaW5jbHVkZSAiU1ZHSW1hZ2VCdWZmZXJUb29scy5oIgogI2lu
Y2x1ZGUgIlNWR1Jlc291cmNlcy5oIgogI2luY2x1ZGUgIlNWR1Jlc291cmNlc0NhY2hlLmgiCiAK
K3N0YXRpYyBpbnQga01heEltYWdlQnVmZmVyU2l6ZSA9IDQwOTY7CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIGlubGluZSBib29sIGlzUmVuZGVyaW5nTWFza0ltYWdlKFJlbmRlck9i
amVjdCogb2JqZWN0KQpAQCAtMTYwLDYgKzE2MSwxMzQgQEAgdm9pZCBTVkdSZW5kZXJpbmdDb250
ZXh0OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlck9iamVjdCogb2JqZWN0LCBQYWlu
dEkKICAgICBtX3JlbmRlcmluZ0ZsYWdzIHw9IFJlbmRlcmluZ1ByZXBhcmVkOwogfQogCitzdGF0
aWMgQWZmaW5lVHJhbnNmb3JtJiBjdXJyZW50Q29udGVudFRyYW5zZm9ybWF0aW9uKCkKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEFmZmluZVRyYW5zZm9ybSwgc19jdXJyZW50Q29udGVudFRy
YW5zZm9ybWF0aW9uLCAoKSk7CisgICAgcmV0dXJuIHNfY3VycmVudENvbnRlbnRUcmFuc2Zvcm1h
dGlvbjsKK30KKwordm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zvcm1h
dGlvblRvT3V0ZXJtb3N0U1ZHQ29vcmRpbmF0ZVN5c3RlbShjb25zdCBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyLCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtKQoreworICAgIGNvbnN0
IFJlbmRlck9iamVjdCogY3VycmVudCA9IHJlbmRlcmVyOworICAgIEFTU0VSVChjdXJyZW50KTsK
KworICAgIGFic29sdXRlVHJhbnNmb3JtID0gY3VycmVudENvbnRlbnRUcmFuc2Zvcm1hdGlvbigp
OworICAgIHdoaWxlIChjdXJyZW50KSB7CisgICAgICAgIGFic29sdXRlVHJhbnNmb3JtID0gY3Vy
cmVudC0+bG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpICogYWJzb2x1dGVUcmFuc2Zvcm07CisgICAg
ICAgIGlmIChjdXJyZW50LT5pc1NWR1Jvb3QoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjdXJyZW50ID0gY3VycmVudC0+cGFyZW50KCk7CisgICAgfQorfQorCitib29sIFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgT3duUHRyPEltYWdl
QnVmZmVyPiYgaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlKQoreworICAgIEludFJlY3QgcGFpbnRSZWN0ID0gY2FsY3VsYXRlSW1h
Z2VCdWZmZXJSZWN0KHRhcmdldFJlY3QsIGFic29sdXRlVHJhbnNmb3JtKTsKKyAgICAvLyBEb24n
dCBjcmVhdGUgZW1wdHkgSW1hZ2VCdWZmZXJzLgorICAgIGlmIChwYWludFJlY3QuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBJbnRTaXplIGNsYW1wZWRTaXplID0gY2xh
bXBlZEFic29sdXRlU2l6ZShwYWludFJlY3Quc2l6ZSgpKTsKKyAgICBPd25QdHI8SW1hZ2VCdWZm
ZXI+IGltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgMSwgY29sb3JTcGFj
ZSwgcmVuZGVyaW5nTW9kZSk7CisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgR3JhcGhpY3NDb250ZXh0KiBpbWFnZUNvbnRleHQgPSBpbWFnZS0+Y29udGV4dCgp
OworICAgIEFTU0VSVChpbWFnZUNvbnRleHQpOworCisgICAgLy8gVGhpcyBpcyBkb25lIGluIGFi
c29sdXRlIGNvb3JkaW5hdGVzLgorICAgIGltYWdlQ29udGV4dC0+dHJhbnNsYXRlKC1wYWludFJl
Y3QueCgpLCAtcGFpbnRSZWN0LnkoKSk7CisKKyAgICBpbWFnZUNvbnRleHQtPmNvbmNhdENUTShh
YnNvbHV0ZVRyYW5zZm9ybSk7CisKKyAgICAvLyBUaGlzIGhhcHBlbnMgaW4gbG9jYWwgY29vcmRp
bmF0ZXMuCisgICAgaW1hZ2VDb250ZXh0LT5zY2FsZShGbG9hdFNpemUoc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGNsYW1wZWRTaXplLndpZHRoKCkpIC8gcGFpbnRSZWN0LndpZHRoKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNsYW1wZWRTaXplLmhl
aWdodCgpKSAvIHBhaW50UmVjdC5oZWlnaHQoKSkpOworCisgICAgaW1hZ2VCdWZmZXIgPSBpbWFn
ZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU1ZHUmVuZGVyaW5nQ29u
dGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXJGb3JQYXR0ZXJuKGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1
dGVUYXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3Qs
IE93blB0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Us
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkKK3sKKyAgICBJbnRTaXplIGltYWdlU2l6ZShy
b3VuZGVkSW50U2l6ZShjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0LnNpemUoKSkpOworICAgIElu
dFNpemUgdW5jbGFtcGVkSW1hZ2VTaXplKHJvdW5kZWRJbnRTaXplKGFic29sdXRlVGFyZ2V0UmVj
dC5zaXplKCkpKTsKKworICAgIC8vIERvbid0IGNyZWF0ZSBlbXB0eSBJbWFnZUJ1ZmZlcnMuCisg
ICAgaWYgKGltYWdlU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IE93blB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlU2l6
ZSwgMSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSk7CisgICAgaWYgKCFpbWFnZSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgR3JhcGhpY3NDb250ZXh0KiBpbWFnZUNvbnRleHQgPSBp
bWFnZS0+Y29udGV4dCgpOworICAgIEFTU0VSVChpbWFnZUNvbnRleHQpOworCisgICAgLy8gQ29t
cGVuc2F0ZSByb3VuZGluZyBlZmZlY3RzLCBhcyB0aGUgYWJzb2x1dGUgdGFyZ2V0IHJlY3QgaXMg
dXNpbmcgZmxvYXRpbmctcG9pbnQgbnVtYmVycyBhbmQgdGhlIGltYWdlIGJ1ZmZlciBzaXplIGlz
IGludGVnZXIuCisgICAgaW1hZ2VDb250ZXh0LT5zY2FsZShGbG9hdFNpemUodW5jbGFtcGVkSW1h
Z2VTaXplLndpZHRoKCkgLyBhYnNvbHV0ZVRhcmdldFJlY3Qud2lkdGgoKSwgdW5jbGFtcGVkSW1h
Z2VTaXplLmhlaWdodCgpIC8gYWJzb2x1dGVUYXJnZXRSZWN0LmhlaWdodCgpKSk7CisKKyAgICBp
bWFnZUJ1ZmZlciA9IGltYWdlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpyZW5kZXJTdWJ0cmVlVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciogaW1hZ2UsIFJlbmRlck9iamVjdCogaXRlbSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBz
dWJ0cmVlQ29udGVudFRyYW5zZm9ybWF0aW9uKQoreworICAgIEFTU0VSVChpdGVtKTsKKyAgICBB
U1NFUlQoaW1hZ2UpOworICAgIEFTU0VSVChpbWFnZS0+Y29udGV4dCgpKTsKKworICAgIFBhaW50
SW5mbyBpbmZvKGltYWdlLT5jb250ZXh0KCksIFBhaW50SW5mbzo6aW5maW5pdGVSZWN0KCksIFBh
aW50UGhhc2VGb3JlZ3JvdW5kLCAwLCAwLCAwLCAwKTsKKworICAgIEFmZmluZVRyYW5zZm9ybSYg
Y29udGVudFRyYW5zZm9ybWF0aW9uID0gY3VycmVudENvbnRlbnRUcmFuc2Zvcm1hdGlvbigpOwor
ICAgIEFmZmluZVRyYW5zZm9ybSBzYXZlZENvbnRlbnRUcmFuc2Zvcm1hdGlvbiA9IGNvbnRlbnRU
cmFuc2Zvcm1hdGlvbjsKKyAgICBjb250ZW50VHJhbnNmb3JtYXRpb24gPSBzdWJ0cmVlQ29udGVu
dFRyYW5zZm9ybWF0aW9uICogY29udGVudFRyYW5zZm9ybWF0aW9uOworCisgICAgQVNTRVJUKCFp
dGVtLT5uZWVkc0xheW91dCgpKTsKKyAgICBpdGVtLT5wYWludChpbmZvLCBJbnRQb2ludCgpKTsK
KworICAgIGNvbnRlbnRUcmFuc2Zvcm1hdGlvbiA9IHNhdmVkQ29udGVudFRyYW5zZm9ybWF0aW9u
OworfQorCit2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBPd25QdHI8SW1hZ2VCdWZmZXI+JiBp
bWFnZUJ1ZmZlciwgYm9vbCBzYWZlVG9DbGVhcikKK3sKKyAgICBBU1NFUlQoY29udGV4dCk7Cisg
ICAgQVNTRVJUKGltYWdlQnVmZmVyKTsKKworICAgIEZsb2F0UmVjdCBhYnNvbHV0ZVRhcmdldFJl
Y3QgPSBjYWxjdWxhdGVJbWFnZUJ1ZmZlclJlY3QodGFyZ2V0UmVjdCwgYWJzb2x1dGVUcmFuc2Zv
cm0pOworCisgICAgLy8gVGhlIG1hc2sgaW1hZ2UgaGFzIGJlZW4gY3JlYXRlZCBpbiB0aGUgYWJz
b2x1dGUgY29vcmRpbmF0ZSBzcGFjZSwgYXMgdGhlIGltYWdlIHNob3VsZCBub3QgYmUgc2NhbGVk
LgorICAgIC8vIFNvIHRoZSBhY3R1YWwgbWFza2luZyBwcm9jZXNzIGhhcyB0byBiZSBkb25lIGlu
IHRoZSBhYnNvbHV0ZSBjb29yZGluYXRlIHNwYWNlIGFzIHdlbGwuCisgICAgY29udGV4dC0+Y29u
Y2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKSk7CisgICAgY29udGV4dC0+Y2xpcFRv
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0KCksIGFic29sdXRlVGFyZ2V0UmVjdCk7CisgICAg
Y29udGV4dC0+Y29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtKTsKKworICAgIC8vIFdoZW4gbmVz
dGluZyByZXNvdXJjZXMsIHdpdGggb2JqZWN0Qm91bmRpbmdCb3ggYXMgY29udGVudCB1bml0IHR5
cGVzLCB0aGVyZSdzIG5vIHVzZSBpbiBjYWNoaW5nIHRoZQorICAgIC8vIHJlc3VsdGluZyBpbWFn
ZSBidWZmZXIgYXMgdGhlIHBhcmVudCByZXNvdXJjZSBhbHJlYWR5IGNhY2hlcyB0aGUgcmVzdWx0
LgorICAgIGlmIChzYWZlVG9DbGVhciAmJiAhY3VycmVudENvbnRlbnRUcmFuc2Zvcm1hdGlvbigp
LmlzSWRlbnRpdHkoKSkKKyAgICAgICAgaW1hZ2VCdWZmZXIuY2xlYXIoKTsKK30KKworRmxvYXRS
ZWN0IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiBhYnNvbHV0ZVRhcmdldFJlY3QpCit7CisgICAgY29uc3QgRmxvYXRTaXplIG1h
eEltYWdlQnVmZmVyU2l6ZShrTWF4SW1hZ2VCdWZmZXJTaXplLCBrTWF4SW1hZ2VCdWZmZXJTaXpl
KTsKKyAgICByZXR1cm4gRmxvYXRSZWN0KGFic29sdXRlVGFyZ2V0UmVjdC5sb2NhdGlvbigpLCBh
YnNvbHV0ZVRhcmdldFJlY3Quc2l6ZSgpLnNocnVua1RvKG1heEltYWdlQnVmZmVyU2l6ZSkpOwor
fQorCitJbnRTaXplIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsYW1wZWRBYnNvbHV0ZVNpemUoY29u
c3QgSW50U2l6ZSYgYWJzb2x1dGVTaXplKQoreworICAgIGNvbnN0IEludFNpemUgbWF4SW1hZ2VC
dWZmZXJTaXplKGtNYXhJbWFnZUJ1ZmZlclNpemUsIGtNYXhJbWFnZUJ1ZmZlclNpemUpOworICAg
IHJldHVybiBhYnNvbHV0ZVNpemUuc2hydW5rVG8obWF4SW1hZ2VCdWZmZXJTaXplKTsKK30KKwor
dm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGVhcjJEUm90YXRpb24oQWZmaW5lVHJhbnNmb3Jt
JiB0cmFuc2Zvcm0pCit7CisgICAgQWZmaW5lVHJhbnNmb3JtOjpEZWNvbXBvc2VkVHlwZSBkZWNv
bXBvc2l0aW9uOworICAgIHRyYW5zZm9ybS5kZWNvbXBvc2UoZGVjb21wb3NpdGlvbik7CisgICAg
ZGVjb21wb3NpdGlvbi5hbmdsZSA9IDA7CisgICAgdHJhbnNmb3JtLnJlY29tcG9zZShkZWNvbXBv
c2l0aW9uKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggMWRjM2Q2Mi4uNDY0OWQ5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0
LmgKQEAgLTc2LDYgKzc2LDIzIEBAIHB1YmxpYzoKICAgICB2b2lkIHByZXBhcmVUb1JlbmRlclNW
R0NvbnRlbnQoUmVuZGVyT2JqZWN0KiwgUGFpbnRJbmZvJiwgTmVlZHNHcmFwaGljc0NvbnRleHRT
YXZlID0gRG9udFNhdmVHcmFwaGljc0NvbnRleHQpOwogICAgIGJvb2wgaXNSZW5kZXJpbmdQcmVw
YXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nRmxhZ3MgJiBSZW5kZXJpbmdQcmVwYXJl
ZDsgfQogCisgICAgc3RhdGljIGJvb2wgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0
JiBwYWludFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIE93
blB0cjxJbWFnZUJ1ZmZlcj4mLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlKTsKKyAgICAvLyBQ
YXR0ZXJucyBuZWVkIGEgZGlmZmVyZW50IGZsb2F0LXRvLWludGVnZXIgY29vcmRpbmF0ZSBtYXBw
aW5nLgorICAgIHN0YXRpYyBib29sIGNyZWF0ZUltYWdlQnVmZmVyRm9yUGF0dGVybihjb25zdCBG
bG9hdFJlY3QmIGFic29sdXRlVGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkQWJz
b2x1dGVUYXJnZXRSZWN0LCBPd25QdHI8SW1hZ2VCdWZmZXI+JiwgQ29sb3JTcGFjZSwgUmVuZGVy
aW5nTW9kZSk7CisKKyAgICBzdGF0aWMgdm9pZCByZW5kZXJTdWJ0cmVlVG9JbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciosIFJlbmRlck9iamVjdCosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOworICAg
IHN0YXRpYyB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
UmVjdCwgT3duUHRyPEltYWdlQnVmZmVyPiYsIGJvb2wgc2FmZVRvQ2xlYXIpOworCisgICAgc3Rh
dGljIHZvaWQgY2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdFNWR0Nvb3JkaW5hdGVT
eXN0ZW0oY29uc3QgUmVuZGVyT2JqZWN0KiwgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5z
Zm9ybSk7CisgICAgc3RhdGljIEludFNpemUgY2xhbXBlZEFic29sdXRlU2l6ZShjb25zdCBJbnRT
aXplJik7CisgICAgc3RhdGljIEZsb2F0UmVjdCBjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUYXJnZXRSZWN0KTsKKyAgICBzdGF0aWMgdm9pZCBjbGVh
cjJEUm90YXRpb24oQWZmaW5lVHJhbnNmb3JtJik7CisKKyAgICBzdGF0aWMgSW50UmVjdCBjYWxj
dWxhdGVJbWFnZUJ1ZmZlclJlY3QoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGVuY2xvc2luZ0ludFJlY3QoYWJzb2x1dGVUcmFuc2Zvcm0ubWFwUmVjdCh0YXJnZXRSZWN0KSk7
CisgICAgfQorCiBwcml2YXRlOgogICAgIC8vIFRvIHByb3Blcmx5IHJldmVydCBwYXJ0aWFsbHkg
c3VjY2Vzc2Z1bCBpbml0aWFsaXp0aW9ucyBpbiB0aGUgZGVzdHJ1Y3Rvciwgd2UgcmVjb3JkIGFs
bCBzdWNjZXNzZnVsIHN0ZXBzLgogICAgIGVudW0gUmVuZGVyaW5nRmxhZ3MgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAppbmRleCA0
MzljNjZhLi42MmExYWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUltYWdlLmNwcApAQCAtMzEsOCArMzEsOCBAQAogI2luY2x1ZGUgIlJlbmRl
ck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJTVkdG
aWx0ZXIuaCIKLSNpbmNsdWRlICJTVkdJbWFnZUJ1ZmZlclRvb2xzLmgiCiAjaW5jbHVkZSAiU1ZH
UHJlc2VydmVBc3BlY3RSYXRpby5oIgorI2luY2x1ZGUgIlNWR1JlbmRlcmluZ0NvbnRleHQuaCIK
ICNpbmNsdWRlICJTVkdTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVVJJUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgpAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgRkVJ
bWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgfQogCiAgICAgICAgIEFmZmlu
ZVRyYW5zZm9ybSBjb250ZW50VHJhbnNmb3JtYXRpb247Ci0gICAgICAgIFNWR0ltYWdlQnVmZmVy
VG9vbHM6OnJlbmRlclN1YnRyZWVUb0ltYWdlQnVmZmVyKHJlc3VsdEltYWdlLCByZW5kZXJlciwg
Y29udGVudFRyYW5zZm9ybWF0aW9uKTsKKyAgICAgICAgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cmVu
ZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIocmVzdWx0SW1hZ2UsIHJlbmRlcmVyLCBjb250ZW50VHJh
bnNmb3JtYXRpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0tIAoxLjcuMi41Cgo=
</data>
<flag name="review"
          id="137137"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
      

    </bug>

</bugzilla>