<?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>32325</bug_id>
          
          <creation_ts>2009-12-09 09:45:56 -0800</creation_ts>
          <short_desc>Filters contain some leaks in untested code</short_desc>
          <delta_ts>2009-12-29 02:56:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>eric</cc>
    
    <cc>krit</cc>
    
    <cc>mjs</cc>
    
    <cc>staikos</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>170024</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-12-09 09:45:56 -0800</bug_when>
    <thetext>We currently don&apos;t have support for the lighting filters, though we already build filter effect objects for those.
DistantLightSource &amp; PointLightSource are RefCounted objects w/o create() objects, leading to referennce counting bugs.

Just testing a patch that fixes those. Uploading later.
FYI: Besides that,  filters are up &amp; running on win/mac/gtk/qt!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170258</commentid>
    <comment_count>1</comment_count>
      <attachid>44584</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-12-09 17:14:50 -0800</bug_when>
    <thetext>Created attachment 44584
Initial patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170260</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-09 17:18:25 -0800</bug_when>
    <thetext>Attachment 44584 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/svg/graphics/filters/SVGLightSource.h:28:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170263</commentid>
    <comment_count>3</comment_count>
      <attachid>44585</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-12-09 17:28:31 -0800</bug_when>
    <thetext>Created attachment 44585
Updated patch

Picky Mrs. Stylebot...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170264</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-09 17:28:51 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44585 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170284</commentid>
    <comment_count>5</comment_count>
      <attachid>44585</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-12-09 19:05:49 -0800</bug_when>
    <thetext>Comment on attachment 44585
Updated patch

Land your own patches :P :D

Looks good, it concerns me that we seem to repeatedly create new LightSource objects but that&apos;s a distinct issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170390</commentid>
    <comment_count>6</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-12-10 04:00:44 -0800</bug_when>
    <thetext>Thanks Oliver. The patch only aims to fix the leaks - once the lighting filters will be implemented, these issues will be resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175439</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-28 23:22:07 -0800</bug_when>
    <thetext>Ping?  Looks like this has been reviewed for a little over 2 weeks.  I assume the holiday season has just gotten in the way of landing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175485</commentid>
    <comment_count>8</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-12-29 02:56:49 -0800</bug_when>
    <thetext>Oops, this has already been landed, a while ago. Forgot to close.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44584</attachid>
            <date>2009-12-09 17:14:50 -0800</date>
            <delta_ts>2009-12-09 17:28:31 -0800</delta_ts>
            <desc>Initial patch</desc>
            <filename>FilterLeaks.diff</filename>
            <type>text/plain</type>
            <size>21320</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTkzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTQgQEAKKzIwMDktMTItMDkgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRmlsdGVycyBjb250YWluIHNvbWUgbGVha3MgaW4gdW50ZXN0ZWQgY29kZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIzMjUKKworICAgICAg
ICBGaXggb2J2aW91cyBsZWFrIGluIFNWR0ZFKkxpZ2h0aW5nIGNsYXNzZXMuIEltcGxlbWVudCB0
aGUgY3JlYXRlKCkgaWRpb20gZm9yIAorICAgICAgICBhbGwgY2xhc3NlcyBpbiBzdmcvZ3JhcGhp
Y3MsIHRoYXQgd2VyZSBtaXNzaW5nIGl0LiBUaGUgbGlnaHRpbmcgZmlsdGVycyBhcmVuJ3QKKyAg
ICAgICAgaW1wbGVtZW50ZWQgc28gZmFyLCBidXQgdGhlIGFzc29jaWF0ZWQgRmlsdGVyRWZmZWN0
IG9iamVjdHMgYXJlIGJ1aWxkLCB3aGljaCBjcmVhdGVkCisgICAgICAgIHRoZXNlIGxlYWtzLgor
CisgICAgICAgIFRoaXMgcmVtb3ZlcyB0aGUgU1ZHIHJlbGF0ZWQgZmFpbHVyZXMgaW4gdGhlIGxl
YWtzIGJvdC4KKworICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpmaW5kTGln
aHRzKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQ6OmxpZ2h0U291cmNlKToKKyAgICAgICAgKiBzdmcv
U1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVQb2ludExpZ2h0RWxlbWVudDo6bGlnaHRTb3VyY2UpOgorICAgICAg
ICAqIHN2Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudDo6ZmluZExpZ2h0cyk6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BvdExpZ2h0RWxlbWVudDo6bGlnaHRTb3Vy
Y2UpOgorICAgICAgICAqIHN2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdEaXN0YW50TGlnaHRTb3VyY2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3RhbnRMaWdodFNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3RhbnRMaWdodFNvdXJjZTo6RGlzdGFudExpZ2h0U291cmNlKToKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1
c2VMaWdodGluZzo6c2V0TGlnaHRTb3VyY2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3Vs
YXJMaWdodGluZzo6RkVTcGVjdWxhckxpZ2h0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3Bl
Y3VsYXJMaWdodGluZzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdo
dGluZzo6c2V0TGlnaHRTb3VyY2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFU3BlY3VsYXJMaWdodGluZy5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0xpZ2h0U291cmNlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHUG9pbnRM
aWdodFNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRMaWdodFNvdXJjZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50TGlnaHRTb3VyY2U6OlBvaW50TGlnaHRTb3VyY2Up
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR1Nwb3RMaWdodFNvdXJjZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U3BvdExpZ2h0U291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U3BvdExpZ2h0U291cmNlOjpTcG90TGlnaHRTb3VyY2UpOgorCiAyMDA5LTEyLTA5ICBT
YW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUm9sbCBvdXQgNTE5MTkgYW5k
IDUxOTIwLiBUaGV5IHdlcmUgaW5jb3JyZWN0IGFuZCB1bm5lY2Vzc2FyeSByaWdodCBub3cuCklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJKHJldmlz
aW9uIDUxOTMyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODgsMjAgKzg4LDE4IEBAIGJvb2wgU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50OjpidWlsZCgKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotTGlnaHRTb3VyY2Uq
IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6ZmluZExpZ2h0cygpIGNvbnN0CitQYXNzUmVm
UHRyPExpZ2h0U291cmNlPiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmZpbmRMaWdodHMo
KSBjb25zdAogewotICAgIExpZ2h0U291cmNlKiBsaWdodCA9IDA7CiAgICAgZm9yIChOb2RlKiBu
ID0gZmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAo
bi0+aGFzVGFnTmFtZShTVkdOYW1lczo6ZmVEaXN0YW50TGlnaHRUYWcpIHx8CiAgICAgICAgICAg
ICBuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZVBvaW50TGlnaHRUYWcpIHx8CiAgICAgICAgICAg
ICBuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZVNwb3RMaWdodFRhZykpIHsKICAgICAgICAgICAg
IFNWR0ZFTGlnaHRFbGVtZW50KiBsaWdodE5vZGUgPSBzdGF0aWNfY2FzdDxTVkdGRUxpZ2h0RWxl
bWVudCo+KG4pOyAKLSAgICAgICAgICAgIGxpZ2h0ID0gbGlnaHROb2RlLT5saWdodFNvdXJjZSgp
OwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gbGlnaHROb2RlLT5saWdo
dFNvdXJjZSgpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGxpZ2h0OworICAgIHJl
dHVybiAwOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuaAkocmV2aXNpb24gNTE5MzIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpmZURpZmZ1c2VMaWdodGluZ1RhZ1N0cmlu
ZywgU1ZHS2VybmVsVW5pdExlbmd0aFhJZGVudGlmaWVyLCBmbG9hdCwgS2VybmVsVW5pdExlbmd0
aFgsIGtlcm5lbFVuaXRMZW5ndGhYKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6ZmVEaWZmdXNlTGln
aHRpbmdUYWdTdHJpbmcsIFNWR0tlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllciwgZmxvYXQsIEtl
cm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKIAotICAgICAgICBMaWdodFNvdXJj
ZSogZmluZExpZ2h0cygpIGNvbnN0OworICAgICAgICBQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBm
aW5kTGlnaHRzKCkgY29uc3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuY3BwCShyZXZpc2lvbiA1MTkz
MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDkgKzM0LDkgQEAgU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50Ojp+U1ZHRkVE
aXN0YW50TAogewogfQogCi1MaWdodFNvdXJjZSogU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50Ojps
aWdodFNvdXJjZSgpIGNvbnN0CitQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBTVkdGRURpc3RhbnRM
aWdodEVsZW1lbnQ6OmxpZ2h0U291cmNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbmV3IERpc3Rh
bnRMaWdodFNvdXJjZShhemltdXRoKCksIGVsZXZhdGlvbigpKTsKKyAgICByZXR1cm4gRGlzdGFu
dExpZ2h0U291cmNlOjpjcmVhdGUoYXppbXV0aCgpLCBlbGV2YXRpb24oKSk7CiB9CiAKIH0KSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5oCShyZXZpc2lvbiA1MTkzMikK
KysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU1ZHRkVEaXN0
YW50TGlnaHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAg
ICB2aXJ0dWFsIH5TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQoKTsKIAotICAgICAgICB2aXJ0dWFs
IExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKCkgY29uc3Q7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oCShyZXZpc2lvbiA1
MTkzMikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTVkdGRUxpZ2h0
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVh
bCB+U1ZHRkVMaWdodEVsZW1lbnQoKTsKICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgTGlnaHRT
b3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAKICAgICBwcml2
YXRlOgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHAJKHJldmlzaW9u
IDUxOTMyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDEwICszNCwxMCBAQCBTVkdGRVBvaW50TGlnaHRFbGVtZW50Ojp+U1ZH
RkVQb2ludExpZ2h0CiB7CiB9CiAKLUxpZ2h0U291cmNlKiBTVkdGRVBvaW50TGlnaHRFbGVtZW50
OjpsaWdodFNvdXJjZSgpIGNvbnN0CitQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBTVkdGRVBvaW50
TGlnaHRFbGVtZW50OjpsaWdodFNvdXJjZSgpIGNvbnN0CiB7CiAgICAgRmxvYXRQb2ludDNEIHBv
cyh4KCksIHkoKSwgeigpKTsKLSAgICByZXR1cm4gbmV3IFBvaW50TGlnaHRTb3VyY2UocG9zKTsK
KyAgICByZXR1cm4gUG9pbnRMaWdodFNvdXJjZTo6Y3JlYXRlKHBvcyk7CiB9CiAKIH0KSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50LmgJKHJldmlzaW9uIDUxOTMyKQorKysgV2Vi
Q29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3
ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU1ZHRkVQb2ludExpZ2h0RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+
U1ZHRkVQb2ludExpZ2h0RWxlbWVudCgpOwogCi0gICAgICAgIHZpcnR1YWwgTGlnaHRTb3VyY2Uq
IGxpZ2h0U291cmNlKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxMaWdodFNv
dXJjZT4gbGlnaHRTb3VyY2UoKSBjb25zdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNw
cAkocmV2aXNpb24gNTE5MzIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsMjAgKzcwLDE4IEBAIHZvaWQgU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6cGFyc2UKICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotTGln
aHRTb3VyY2UqIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmZpbmRMaWdodHMoKSBjb25z
dAorUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6
ZmluZExpZ2h0cygpIGNvbnN0CiB7Ci0gICAgTGlnaHRTb3VyY2UqIGxpZ2h0ID0gMDsKICAgICBm
b3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG47IG4gPSBuLT5uZXh0U2libGluZygpKSB7CiAg
ICAgICAgIGlmIChuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZURpc3RhbnRMaWdodFRhZykgfHwK
ICAgICAgICAgICAgIG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlUG9pbnRMaWdodFRhZykgfHwK
ICAgICAgICAgICAgIG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlU3BvdExpZ2h0VGFnKSkgewog
ICAgICAgICAgICAgU1ZHRkVMaWdodEVsZW1lbnQqIGxpZ2h0Tm9kZSA9IHN0YXRpY19jYXN0PFNW
R0ZFTGlnaHRFbGVtZW50Kj4obik7IAotICAgICAgICAgICAgbGlnaHQgPSBsaWdodE5vZGUtPmxp
Z2h0U291cmNlKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiBsaWdo
dE5vZGUtPmxpZ2h0U291cmNlKCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gbGln
aHQ7CisgICAgcmV0dXJuIDA7CiB9CiAKIGJvb2wgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dDo6YnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlclJlc291cmNlKQpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAkocmV2aXNpb24gNTE5MzIpCisr
KyBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDggKzQ4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU1ZH
TmFtZXM6OmZlU3BlY3VsYXJMaWdodGluZ1RhZ1N0cmluZywgU1ZHTmFtZXM6OnN1cmZhY2VTY2Fs
ZUF0dHJTdHJpbmcsIGZsb2F0LCBTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSkKICAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQsIFNWR05hbWVzOjpmZVNwZWN1bGFyTGlnaHRpbmdUYWdTdHJpbmcsIFNWR0tlcm5lbFVuaXRM
ZW5ndGhYSWRlbnRpZmllciwgZmxvYXQsIEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVu
Z3RoWCkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpmZVNwZWN1bGFyTGlnaHRpbmdUYWdTdHJpbmcs
IFNWR0tlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllciwgZmxvYXQsIEtlcm5lbFVuaXRMZW5ndGhZ
LCBrZXJuZWxVbml0TGVuZ3RoWSkKLSAgICAgICAgCi0gICAgICAgIExpZ2h0U291cmNlKiBmaW5k
TGlnaHRzKCkgY29uc3Q7CisKKyAgICAgICAgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gZmluZExp
Z2h0cygpIGNvbnN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmNwcAkocmV2aXNpb24gNTE5MzIpCisrKyBXZWJD
b3JlL3N2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3
ICszNCw3IEBAIFNWR0ZFU3BvdExpZ2h0RWxlbWVudDo6flNWR0ZFU3BvdExpZ2h0RWwKIHsKIH0K
IAotTGlnaHRTb3VyY2UqIFNWR0ZFU3BvdExpZ2h0RWxlbWVudDo6bGlnaHRTb3VyY2UoKSBjb25z
dAorUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gU1ZHRkVTcG90TGlnaHRFbGVtZW50OjpsaWdodFNv
dXJjZSgpIGNvbnN0CiB7CiAgICAgRmxvYXRQb2ludDNEIHBvcyh4KCksIHkoKSwgeigpKTsKIApA
QCAtNDQsNyArNDQsNyBAQCBMaWdodFNvdXJjZSogU1ZHRkVTcG90TGlnaHRFbGVtZW50OjpsaWdo
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHNBdFooKSAtIHBvcy56KCkpOwogCiAg
ICAgZGlyZWN0aW9uLm5vcm1hbGl6ZSgpOwotICAgIHJldHVybiBuZXcgU3BvdExpZ2h0U291cmNl
KHBvcywgZGlyZWN0aW9uLCBzcGVjdWxhckV4cG9uZW50KCksIGxpbWl0aW5nQ29uZUFuZ2xlKCkp
OworICAgIHJldHVybiBTcG90TGlnaHRTb3VyY2U6OmNyZWF0ZShwb3MsIGRpcmVjdGlvbiwgc3Bl
Y3VsYXJFeHBvbmVudCgpLCBsaW1pdGluZ0NvbmVBbmdsZSgpKTsKIH0KIAogfQpJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmgJKHJldmlzaW9uIDUxOTMyKQorKysgV2ViQ29yZS9z
dmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTVkdGRVNwb3RMaWdodEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR0ZFU3Bv
dExpZ2h0RWxlbWVudCgpOwogCi0gICAgICAgIHZpcnR1YWwgTGlnaHRTb3VyY2UqIGxpZ2h0U291
cmNlKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gbGln
aHRTb3VyY2UoKSBjb25zdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Rpc3RhbnRMaWdodFNvdXJjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRGlzdGFudExpZ2h0
U291cmNlLmgJKHJldmlzaW9uIDUxOTMyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdEaXN0YW50TGlnaHRTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIERpc3RhbnRMaWdodFNvdXJjZSA6
IHB1YmxpYyBMaWdodFNvdXJjZSB7CiAgICAgcHVibGljOgotICAgICAgICBEaXN0YW50TGlnaHRT
b3VyY2UoZmxvYXQgYXppbXV0aCwgZmxvYXQgZWxldmF0aW9uKQotICAgICAgICAgICAgOiBMaWdo
dFNvdXJjZShMU19ESVNUQU5UKQotICAgICAgICAgICAgLCBtX2F6aW11dGgoYXppbXV0aCkKLSAg
ICAgICAgICAgICwgbV9lbGV2YXRpb24oZWxldmF0aW9uKQotICAgICAgICB7IH0KKyAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8RGlzdGFudExpZ2h0U291cmNlPiBjcmVhdGUoZmxvYXQgYXppbXV0
aCwgZmxvYXQgZWxldmF0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IERpc3RhbnRMaWdodFNvdXJjZShhemltdXRoLCBlbGV2YXRpb24pKTsKKyAgICAgICAg
fQogCiAgICAgICAgIGZsb2F0IGF6aW11dGgoKSBjb25zdCB7IHJldHVybiBtX2F6aW11dGg7IH0K
ICAgICAgICAgZmxvYXQgZWxldmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lbGV2YXRpb247IH0K
QEAgLTQyLDYgKzQxLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBU
ZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKIAog
ICAgIHByaXZhdGU6CisgICAgICAgIERpc3RhbnRMaWdodFNvdXJjZShmbG9hdCBhemltdXRoLCBm
bG9hdCBlbGV2YXRpb24pCisgICAgICAgICAgICA6IExpZ2h0U291cmNlKExTX0RJU1RBTlQpCisg
ICAgICAgICAgICAsIG1fYXppbXV0aChhemltdXRoKQorICAgICAgICAgICAgLCBtX2VsZXZhdGlv
bihlbGV2YXRpb24pCisgICAgICAgIHsKKyAgICAgICAgfQorCiAgICAgICAgIGZsb2F0IG1fYXpp
bXV0aDsKICAgICAgICAgZmxvYXQgbV9lbGV2YXRpb247CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuY3Bw
CShyZXZpc2lvbiA1MTkzMikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVE
aWZmdXNlTGlnaHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEZFRGlmZnVzZUxpZ2h0aW5nOjpGRURpZmZ1c2VMaWdodGluZyhG
aWx0ZXJFZmZlY3QqIGluICwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGNvbnN0IGZsb2F0
JiBzdXJmYWNlU2NhbGUsCi0gICAgY29uc3QgZmxvYXQmIGRpZmZ1c2VDb25zdGFudCwgY29uc3Qg
ZmxvYXQmIGtlcm5lbFVuaXRMZW5ndGhYLCBjb25zdCBmbG9hdCYga2VybmVsVW5pdExlbmd0aFks
IExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSkKKyAgICBjb25zdCBmbG9hdCYgZGlmZnVzZUNvbnN0
YW50LCBjb25zdCBmbG9hdCYga2VybmVsVW5pdExlbmd0aFgsIGNvbnN0IGZsb2F0JiBrZXJuZWxV
bml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCiAgICAgOiBG
aWx0ZXJFZmZlY3QoKQogICAgICwgbV9pbihpbikKICAgICAsIG1fbGlnaHRpbmdDb2xvcihsaWdo
dGluZ0NvbG9yKQpAQCAtNDQsNyArNDQsNyBAQCBGRURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNl
TGlnaHRpbmcoRmlsCiAKIFBhc3NSZWZQdHI8RkVEaWZmdXNlTGlnaHRpbmc+IEZFRGlmZnVzZUxp
Z2h0aW5nOjpjcmVhdGUoRmlsdGVyRWZmZWN0KiBpbiAsIGNvbnN0IENvbG9yJiBsaWdodGluZ0Nv
bG9yLAogICAgIGNvbnN0IGZsb2F0JiBzdXJmYWNlU2NhbGUsIGNvbnN0IGZsb2F0JiBkaWZmdXNl
Q29uc3RhbnQsIGNvbnN0IGZsb2F0JiBrZXJuZWxVbml0TGVuZ3RoWCwKLSAgICBjb25zdCBmbG9h
dCYga2VybmVsVW5pdExlbmd0aFksIExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSkKKyAgICBjb25z
dCBmbG9hdCYga2VybmVsVW5pdExlbmd0aFksIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0
U291cmNlKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVEaWZmdXNlTGlnaHRpbmcoaW4s
IGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgZGlmZnVzZUNvbnN0YW50LCBrZXJuZWxVbml0
TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIGxpZ2h0U291cmNlKSk7CiB9CkBAIC0xMDgsNyAr
MTA4LDcgQEAgY29uc3QgTGlnaHRTb3VyY2UqIEZFRGlmZnVzZUxpZ2h0aW5nOjpsaQogICAgIHJl
dHVybiBtX2xpZ2h0U291cmNlLmdldCgpOwogfQogCi12b2lkIEZFRGlmZnVzZUxpZ2h0aW5nOjpz
ZXRMaWdodFNvdXJjZShMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UpCit2b2lkIEZFRGlmZnVzZUxp
Z2h0aW5nOjpzZXRMaWdodFNvdXJjZShQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBsaWdodFNvdXJj
ZSkKIHsgICAgCiAgICAgbV9saWdodFNvdXJjZSA9IGxpZ2h0U291cmNlOwogfQpJbmRleDogV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcu
aAkocmV2aXNpb24gNTE5MzIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
RGlmZnVzZUxpZ2h0aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZFRGlmZnVzZUxpZ2h0aW5nIDogcHVibGljIEZpbHRl
ckVmZmVjdCB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRURpZmZ1
c2VMaWdodGluZz4gY3JlYXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IENvbG9yJiwgY29uc3QgZmxv
YXQmLCBjb25zdCBmbG9hdCYsCi0gICAgICAgICAgICAgICAgY29uc3QgZmxvYXQmLCBjb25zdCBm
bG9hdCYsIExpZ2h0U291cmNlKik7CisgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQmLCBjb25z
dCBmbG9hdCYsIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKICAgICAgICAgdmlydHVhbCB+RkVE
aWZmdXNlTGlnaHRpbmcoKTsKIAogICAgICAgICBDb2xvciBsaWdodGluZ0NvbG9yKCkgY29uc3Q7
CkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRL
ZXJuZWxVbml0TGVuZ3RoWShmbG9hdCk7CiAKICAgICAgICAgY29uc3QgTGlnaHRTb3VyY2UqIGxp
Z2h0U291cmNlKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0TGlnaHRTb3VyY2UoTGlnaHRTb3Vy
Y2UqKTsKKyAgICAgICAgdm9pZCBzZXRMaWdodFNvdXJjZShQYXNzUmVmUHRyPExpZ2h0U291cmNl
Pik7CiAKICAgICAgICAgdmlydHVhbCBGbG9hdFJlY3QgdW5pdGVDaGlsZEVmZmVjdFN1YnJlZ2lv
bnMoRmlsdGVyKiBmaWx0ZXIpIHsgcmV0dXJuIGNhbGN1bGF0ZVVuaW9uT2ZDaGlsZEVmZmVjdFN1
YnJlZ2lvbnMoZmlsdGVyLCBtX2luLmdldCgpKTsgfQogICAgICAgICB2b2lkIGFwcGx5KEZpbHRl
ciopOwpAQCAtNjIsNyArNjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAg
IHByaXZhdGU6CiAgICAgICAgIEZFRGlmZnVzZUxpZ2h0aW5nKEZpbHRlckVmZmVjdCosIGNvbnN0
IENvbG9yJiwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsCi0gICAgICAgICAgICAgICAgY29u
c3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsIExpZ2h0U291cmNlKik7CisgICAgICAgICAgICAgICAg
Y29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKIAog
ICAgICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2luOwogICAgICAgICBDb2xvciBtX2xpZ2h0
aW5nQ29sb3I7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3Vs
YXJMaWdodGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuY3BwCShyZXZpc2lvbiA1MTkzMikKKysrIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZFU3BlY3VsYXJM
aWdodGluZzo6RkVTcGVjdWxhckxpZ2h0aW5nKEZpbHRlckVmZmVjdCogaW4sIGNvbnN0IENvbG9y
JiBsaWdodGluZ0NvbG9yLCBjb25zdCBmbG9hdCYgc3VyZmFjZVNjYWxlLAogICAgIGNvbnN0IGZs
b2F0JiBzcGVjdWxhckNvbnN0YW50LCBjb25zdCBmbG9hdCYgc3BlY3VsYXJFeHBvbmVudCwgY29u
c3QgZmxvYXQmIGtlcm5lbFVuaXRMZW5ndGhYLAotICAgIGNvbnN0IGZsb2F0JiBrZXJuZWxVbml0
TGVuZ3RoWSwgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKQorICAgIGNvbnN0IGZsb2F0JiBrZXJu
ZWxVbml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCiAgICAg
OiBGaWx0ZXJFZmZlY3QoKQogICAgICwgbV9pbihpbikKICAgICAsIG1fbGlnaHRpbmdDb2xvcihs
aWdodGluZ0NvbG9yKQpAQCAtNDUsNyArNDUsNyBAQCBGRVNwZWN1bGFyTGlnaHRpbmc6OkZFU3Bl
Y3VsYXJMaWdodGluZyhGCiAKIFBhc3NSZWZQdHI8RkVTcGVjdWxhckxpZ2h0aW5nPiBGRVNwZWN1
bGFyTGlnaHRpbmc6OmNyZWF0ZShGaWx0ZXJFZmZlY3QqIGluLCBjb25zdCBDb2xvciYgbGlnaHRp
bmdDb2xvciwKICAgICBjb25zdCBmbG9hdCYgc3VyZmFjZVNjYWxlLCBjb25zdCBmbG9hdCYgc3Bl
Y3VsYXJDb25zdGFudCwgY29uc3QgZmxvYXQmIHNwZWN1bGFyRXhwb25lbnQsCi0gICAgY29uc3Qg
ZmxvYXQmIGtlcm5lbFVuaXRMZW5ndGhYLCBjb25zdCBmbG9hdCYga2VybmVsVW5pdExlbmd0aFks
IExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSkKKyAgICBjb25zdCBmbG9hdCYga2VybmVsVW5pdExl
bmd0aFgsIGNvbnN0IGZsb2F0JiBrZXJuZWxVbml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxMaWdodFNv
dXJjZT4gbGlnaHRTb3VyY2UpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGRVNwZWN1bGFy
TGlnaHRpbmcoaW4sIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgc3BlY3VsYXJDb25zdGFu
dCwgc3BlY3VsYXJFeHBvbmVudCwKICAgICAgICAga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVu
aXRMZW5ndGhZLCBsaWdodFNvdXJjZSkpOwpAQCAtMTIwLDcgKzEyMCw3IEBAIGNvbnN0IExpZ2h0
U291cmNlKiBGRVNwZWN1bGFyTGlnaHRpbmc6OmwKICAgICByZXR1cm4gbV9saWdodFNvdXJjZS5n
ZXQoKTsKIH0KIAotdm9pZCBGRVNwZWN1bGFyTGlnaHRpbmc6OnNldExpZ2h0U291cmNlKExpZ2h0
U291cmNlKiBsaWdodFNvdXJjZSkKK3ZvaWQgRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRMaWdodFNv
dXJjZShQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZSkKIHsKICAgICBtX2xpZ2h0
U291cmNlID0gbGlnaHRTb3VyY2U7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmgJKHJldmlzaW9uIDUxOTMyKQor
KysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuaAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgRkVTcGVjdWxhckxpZ2h0aW5nIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiAgICAgcHVi
bGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRVNwZWN1bGFyTGlnaHRpbmc+IGNyZWF0
ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBDb2xvciYsIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQm
LAotICAgICAgICAgICAgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0Jiwg
TGlnaHRTb3VyY2UqKTsKKyAgICAgICAgICAgIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmLCBj
b25zdCBmbG9hdCYsIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKICAgICAgICAgdmlydHVhbCB+
RkVTcGVjdWxhckxpZ2h0aW5nKCk7CiAKICAgICAgICAgQ29sb3IgbGlnaHRpbmdDb2xvcigpIGNv
bnN0OwpAQCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQg
c2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQpOwogCiAgICAgICAgIGNvbnN0IExpZ2h0U291cmNl
KiBsaWdodFNvdXJjZSgpIGNvbnN0OwotICAgICAgICB2b2lkIHNldExpZ2h0U291cmNlKExpZ2h0
U291cmNlKik7CisgICAgICAgIHZvaWQgc2V0TGlnaHRTb3VyY2UoUGFzc1JlZlB0cjxMaWdodFNv
dXJjZT4pOwogCiAgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IHVuaXRlRWZmZWN0UmVjdChGaWx0
ZXIqIGZpbHRlcikgeyByZXR1cm4gY2FsY3VsYXRlVW5pb25PZkNoaWxkRWZmZWN0U3VicmVnaW9u
cyhmaWx0ZXIsIG1faW4uZ2V0KCkpOyB9CiAgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7CkBA
IC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIEZFU3BlY3VsYXJMaWdodGluZyhGaWx0ZXJFZmZlY3QqLCBjb25zdCBDb2xvciYsIGNvbnN0
IGZsb2F0JiwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsCi0gICAgICAgICAgICBjb25zdCBm
bG9hdCYsIGNvbnN0IGZsb2F0JiwgTGlnaHRTb3VyY2UqKTsKKyAgICAgICAgICAgIGNvbnN0IGZs
b2F0JiwgY29uc3QgZmxvYXQmLCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CiAKICAgICAgICAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gbV9pbjsKICAgICAgICAgQ29sb3IgbV9saWdodGluZ0NvbG9y
OwpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdMaWdodFNvdXJjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHTGlnaHRTb3VyY2Uu
aAkocmV2aXNpb24gNTE5MzIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0xp
Z2h0U291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2lmIEVOQUJM
RShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4
OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR1BvaW50TGlnaHRTb3VyY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR1BvaW50TGlnaHRTb3Vy
Y2UuaAkocmV2aXNpb24gNTE5MzIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R1BvaW50TGlnaHRTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDIyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFBvaW50TGlnaHRTb3VyY2UgOiBwdWJsaWMg
TGlnaHRTb3VyY2UgewogICAgIHB1YmxpYzoKLSAgICAgICAgUG9pbnRMaWdodFNvdXJjZShjb25z
dCBGbG9hdFBvaW50M0QmIHBvc2l0aW9uKQotICAgICAgICAgICAgOiBMaWdodFNvdXJjZShMU19Q
T0lOVCkKLSAgICAgICAgICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKLSAgICAgICAgeyB9Cisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBvaW50TGlnaHRTb3VyY2U+IGNyZWF0ZShjb25zdCBG
bG9hdFBvaW50M0QmIHBvc2l0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFBvaW50TGlnaHRTb3VyY2UocG9zaXRpb24pKTsKKyAgICAgICAgfQogCiAgICAg
ICAgIGNvbnN0IEZsb2F0UG9pbnQzRCYgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0
aW9uOyB9CiAKICAgICAgICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0
aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKIAogICAgIHByaXZhdGU6CisgICAgICAgIFBvaW50TGln
aHRTb3VyY2UoY29uc3QgRmxvYXRQb2ludDNEJiBwb3NpdGlvbikKKyAgICAgICAgICAgIDogTGln
aHRTb3VyY2UoTFNfUE9JTlQpCisgICAgICAgICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCisg
ICAgICAgIHsKKyAgICAgICAgfQorCiAgICAgICAgIEZsb2F0UG9pbnQzRCBtX3Bvc2l0aW9uOwog
ICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHU3BvdExpZ2h0
U291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdT
cG90TGlnaHRTb3VyY2UuaAkocmV2aXNpb24gNTE5MzIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR1Nwb3RMaWdodFNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMyAr
MzEsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgU3BvdExpZ2h0U291cmNl
IDogcHVibGljIExpZ2h0U291cmNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFNwb3RMaWdodFNv
dXJjZShjb25zdCBGbG9hdFBvaW50M0QmIHBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50M0QmIGRp
cmVjdGlvbiwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQgbGltaXRpbmdDb25lQW5nbGUp
Ci0gICAgICAgICAgICA6IExpZ2h0U291cmNlKExTX1NQT1QpCi0gICAgICAgICAgICAsIG1fcG9z
aXRpb24ocG9zaXRpb24pCi0gICAgICAgICAgICAsIG1fZGlyZWN0aW9uKGRpcmVjdGlvbikKLSAg
ICAgICAgICAgICwgbV9zcGVjdWxhckV4cG9uZW50KHNwZWN1bGFyRXhwb25lbnQpCi0gICAgICAg
ICAgICAsIG1fbGltaXRpbmdDb25lQW5nbGUobGltaXRpbmdDb25lQW5nbGUpCi0gICAgICAgIHsg
fQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcG90TGlnaHRTb3VyY2U+IGNyZWF0ZShjb25z
dCBGbG9hdFBvaW50M0QmIHBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50M0QmIGRpcmVjdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQg
c3BlY3VsYXJFeHBvbmVudCwgZmxvYXQgbGltaXRpbmdDb25lQW5nbGUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3BvdExpZ2h0U291cmNlKHBvc2l0aW9uLCBk
aXJlY3Rpb24sIHNwZWN1bGFyRXhwb25lbnQsIGxpbWl0aW5nQ29uZUFuZ2xlKSk7CisgICAgICAg
IH0KIAogICAgICAgICBjb25zdCBGbG9hdFBvaW50M0QmIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9wb3NpdGlvbjsgfQogICAgICAgICBjb25zdCBGbG9hdFBvaW50M0QmIGRpcmVjdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uOyB9CkBAIC00OCw2ICs0NiwxNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7CiAKICAgICBwcml2YXRlOgorICAgICAgICBTcG90
TGlnaHRTb3VyY2UoY29uc3QgRmxvYXRQb2ludDNEJiBwb3NpdGlvbiwgY29uc3QgRmxvYXRQb2lu
dDNEJiBkaXJlY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBzcGVjdWxhckV4
cG9uZW50LCBmbG9hdCBsaW1pdGluZ0NvbmVBbmdsZSkKKyAgICAgICAgICAgIDogTGlnaHRTb3Vy
Y2UoTFNfU1BPVCkKKyAgICAgICAgICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKKyAgICAgICAg
ICAgICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQorICAgICAgICAgICAgLCBtX3NwZWN1bGFyRXhw
b25lbnQoc3BlY3VsYXJFeHBvbmVudCkKKyAgICAgICAgICAgICwgbV9saW1pdGluZ0NvbmVBbmds
ZShsaW1pdGluZ0NvbmVBbmdsZSkKKyAgICAgICAgeworICAgICAgICB9CisKICAgICAgICAgRmxv
YXRQb2ludDNEIG1fcG9zaXRpb247CiAgICAgICAgIEZsb2F0UG9pbnQzRCBtX2RpcmVjdGlvbjsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44585</attachid>
            <date>2009-12-09 17:28:31 -0800</date>
            <delta_ts>2009-12-09 19:05:48 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>FilterLeaks.diff</filename>
            <type>text/plain</type>
            <size>21344</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTkzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTQgQEAKKzIwMDktMTItMDkgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRmlsdGVycyBjb250YWluIHNvbWUgbGVha3MgaW4gdW50ZXN0ZWQgY29kZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIzMjUKKworICAgICAg
ICBGaXggb2J2aW91cyBsZWFrIGluIFNWR0ZFKkxpZ2h0aW5nIGNsYXNzZXMuIEltcGxlbWVudCB0
aGUgY3JlYXRlKCkgaWRpb20gZm9yIAorICAgICAgICBhbGwgY2xhc3NlcyBpbiBzdmcvZ3JhcGhp
Y3MsIHRoYXQgd2VyZSBtaXNzaW5nIGl0LiBUaGUgbGlnaHRpbmcgZmlsdGVycyBhcmVuJ3QKKyAg
ICAgICAgaW1wbGVtZW50ZWQgc28gZmFyLCBidXQgdGhlIGFzc29jaWF0ZWQgRmlsdGVyRWZmZWN0
IG9iamVjdHMgYXJlIGJ1aWxkLCB3aGljaCBjcmVhdGVkCisgICAgICAgIHRoZXNlIGxlYWtzLgor
CisgICAgICAgIFRoaXMgcmVtb3ZlcyB0aGUgU1ZHIHJlbGF0ZWQgZmFpbHVyZXMgaW4gdGhlIGxl
YWtzIGJvdC4KKworICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpmaW5kTGln
aHRzKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQ6OmxpZ2h0U291cmNlKToKKyAgICAgICAgKiBzdmcv
U1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVQb2ludExpZ2h0RWxlbWVudDo6bGlnaHRTb3VyY2UpOgorICAgICAg
ICAqIHN2Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudDo6ZmluZExpZ2h0cyk6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BvdExpZ2h0RWxlbWVudDo6bGlnaHRTb3Vy
Y2UpOgorICAgICAgICAqIHN2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdEaXN0YW50TGlnaHRTb3VyY2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3RhbnRMaWdodFNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3RhbnRMaWdodFNvdXJjZTo6RGlzdGFudExpZ2h0U291cmNlKToKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1
c2VMaWdodGluZzo6c2V0TGlnaHRTb3VyY2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3Vs
YXJMaWdodGluZzo6RkVTcGVjdWxhckxpZ2h0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3Bl
Y3VsYXJMaWdodGluZzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdo
dGluZzo6c2V0TGlnaHRTb3VyY2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFU3BlY3VsYXJMaWdodGluZy5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0xpZ2h0U291cmNlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHUG9pbnRM
aWdodFNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRMaWdodFNvdXJjZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50TGlnaHRTb3VyY2U6OlBvaW50TGlnaHRTb3VyY2Up
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR1Nwb3RMaWdodFNvdXJjZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U3BvdExpZ2h0U291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U3BvdExpZ2h0U291cmNlOjpTcG90TGlnaHRTb3VyY2UpOgorCiAyMDA5LTEyLTA5ICBT
YW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUm9sbCBvdXQgNTE5MTkgYW5k
IDUxOTIwLiBUaGV5IHdlcmUgaW5jb3JyZWN0IGFuZCB1bm5lY2Vzc2FyeSByaWdodCBub3cuCklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJKHJldmlz
aW9uIDUxOTMyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODgsMjAgKzg4LDE4IEBAIGJvb2wgU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50OjpidWlsZCgKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotTGlnaHRTb3VyY2Uq
IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6ZmluZExpZ2h0cygpIGNvbnN0CitQYXNzUmVm
UHRyPExpZ2h0U291cmNlPiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmZpbmRMaWdodHMo
KSBjb25zdAogewotICAgIExpZ2h0U291cmNlKiBsaWdodCA9IDA7CiAgICAgZm9yIChOb2RlKiBu
ID0gZmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAo
bi0+aGFzVGFnTmFtZShTVkdOYW1lczo6ZmVEaXN0YW50TGlnaHRUYWcpIHx8CiAgICAgICAgICAg
ICBuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZVBvaW50TGlnaHRUYWcpIHx8CiAgICAgICAgICAg
ICBuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZVNwb3RMaWdodFRhZykpIHsKICAgICAgICAgICAg
IFNWR0ZFTGlnaHRFbGVtZW50KiBsaWdodE5vZGUgPSBzdGF0aWNfY2FzdDxTVkdGRUxpZ2h0RWxl
bWVudCo+KG4pOyAKLSAgICAgICAgICAgIGxpZ2h0ID0gbGlnaHROb2RlLT5saWdodFNvdXJjZSgp
OwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gbGlnaHROb2RlLT5saWdo
dFNvdXJjZSgpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGxpZ2h0OworICAgIHJl
dHVybiAwOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuaAkocmV2aXNpb24gNTE5MzIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpmZURpZmZ1c2VMaWdodGluZ1RhZ1N0cmlu
ZywgU1ZHS2VybmVsVW5pdExlbmd0aFhJZGVudGlmaWVyLCBmbG9hdCwgS2VybmVsVW5pdExlbmd0
aFgsIGtlcm5lbFVuaXRMZW5ndGhYKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6ZmVEaWZmdXNlTGln
aHRpbmdUYWdTdHJpbmcsIFNWR0tlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllciwgZmxvYXQsIEtl
cm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKIAotICAgICAgICBMaWdodFNvdXJj
ZSogZmluZExpZ2h0cygpIGNvbnN0OworICAgICAgICBQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBm
aW5kTGlnaHRzKCkgY29uc3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuY3BwCShyZXZpc2lvbiA1MTkz
MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDkgKzM0LDkgQEAgU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50Ojp+U1ZHRkVE
aXN0YW50TAogewogfQogCi1MaWdodFNvdXJjZSogU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50Ojps
aWdodFNvdXJjZSgpIGNvbnN0CitQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBTVkdGRURpc3RhbnRM
aWdodEVsZW1lbnQ6OmxpZ2h0U291cmNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbmV3IERpc3Rh
bnRMaWdodFNvdXJjZShhemltdXRoKCksIGVsZXZhdGlvbigpKTsKKyAgICByZXR1cm4gRGlzdGFu
dExpZ2h0U291cmNlOjpjcmVhdGUoYXppbXV0aCgpLCBlbGV2YXRpb24oKSk7CiB9CiAKIH0KSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5oCShyZXZpc2lvbiA1MTkzMikK
KysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU1ZHRkVEaXN0
YW50TGlnaHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAg
ICB2aXJ0dWFsIH5TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQoKTsKIAotICAgICAgICB2aXJ0dWFs
IExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKCkgY29uc3Q7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oCShyZXZpc2lvbiA1
MTkzMikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTVkdGRUxpZ2h0
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVh
bCB+U1ZHRkVMaWdodEVsZW1lbnQoKTsKICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgTGlnaHRT
b3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAKICAgICBwcml2
YXRlOgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHAJKHJldmlzaW9u
IDUxOTMyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDEwICszNCwxMCBAQCBTVkdGRVBvaW50TGlnaHRFbGVtZW50Ojp+U1ZH
RkVQb2ludExpZ2h0CiB7CiB9CiAKLUxpZ2h0U291cmNlKiBTVkdGRVBvaW50TGlnaHRFbGVtZW50
OjpsaWdodFNvdXJjZSgpIGNvbnN0CitQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBTVkdGRVBvaW50
TGlnaHRFbGVtZW50OjpsaWdodFNvdXJjZSgpIGNvbnN0CiB7CiAgICAgRmxvYXRQb2ludDNEIHBv
cyh4KCksIHkoKSwgeigpKTsKLSAgICByZXR1cm4gbmV3IFBvaW50TGlnaHRTb3VyY2UocG9zKTsK
KyAgICByZXR1cm4gUG9pbnRMaWdodFNvdXJjZTo6Y3JlYXRlKHBvcyk7CiB9CiAKIH0KSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50LmgJKHJldmlzaW9uIDUxOTMyKQorKysgV2Vi
Q29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3
ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU1ZHRkVQb2ludExpZ2h0RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+
U1ZHRkVQb2ludExpZ2h0RWxlbWVudCgpOwogCi0gICAgICAgIHZpcnR1YWwgTGlnaHRTb3VyY2Uq
IGxpZ2h0U291cmNlKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxMaWdodFNv
dXJjZT4gbGlnaHRTb3VyY2UoKSBjb25zdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNw
cAkocmV2aXNpb24gNTE5MzIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsMjAgKzcwLDE4IEBAIHZvaWQgU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6cGFyc2UKICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotTGln
aHRTb3VyY2UqIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmZpbmRMaWdodHMoKSBjb25z
dAorUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6
ZmluZExpZ2h0cygpIGNvbnN0CiB7Ci0gICAgTGlnaHRTb3VyY2UqIGxpZ2h0ID0gMDsKICAgICBm
b3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG47IG4gPSBuLT5uZXh0U2libGluZygpKSB7CiAg
ICAgICAgIGlmIChuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZURpc3RhbnRMaWdodFRhZykgfHwK
ICAgICAgICAgICAgIG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlUG9pbnRMaWdodFRhZykgfHwK
ICAgICAgICAgICAgIG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlU3BvdExpZ2h0VGFnKSkgewog
ICAgICAgICAgICAgU1ZHRkVMaWdodEVsZW1lbnQqIGxpZ2h0Tm9kZSA9IHN0YXRpY19jYXN0PFNW
R0ZFTGlnaHRFbGVtZW50Kj4obik7IAotICAgICAgICAgICAgbGlnaHQgPSBsaWdodE5vZGUtPmxp
Z2h0U291cmNlKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiBsaWdo
dE5vZGUtPmxpZ2h0U291cmNlKCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gbGln
aHQ7CisgICAgcmV0dXJuIDA7CiB9CiAKIGJvb2wgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dDo6YnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlclJlc291cmNlKQpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAkocmV2aXNpb24gNTE5MzIpCisr
KyBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDggKzQ4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU1ZH
TmFtZXM6OmZlU3BlY3VsYXJMaWdodGluZ1RhZ1N0cmluZywgU1ZHTmFtZXM6OnN1cmZhY2VTY2Fs
ZUF0dHJTdHJpbmcsIGZsb2F0LCBTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSkKICAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQsIFNWR05hbWVzOjpmZVNwZWN1bGFyTGlnaHRpbmdUYWdTdHJpbmcsIFNWR0tlcm5lbFVuaXRM
ZW5ndGhYSWRlbnRpZmllciwgZmxvYXQsIEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVu
Z3RoWCkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpmZVNwZWN1bGFyTGlnaHRpbmdUYWdTdHJpbmcs
IFNWR0tlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllciwgZmxvYXQsIEtlcm5lbFVuaXRMZW5ndGhZ
LCBrZXJuZWxVbml0TGVuZ3RoWSkKLSAgICAgICAgCi0gICAgICAgIExpZ2h0U291cmNlKiBmaW5k
TGlnaHRzKCkgY29uc3Q7CisKKyAgICAgICAgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gZmluZExp
Z2h0cygpIGNvbnN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmNwcAkocmV2aXNpb24gNTE5MzIpCisrKyBXZWJD
b3JlL3N2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3
ICszNCw3IEBAIFNWR0ZFU3BvdExpZ2h0RWxlbWVudDo6flNWR0ZFU3BvdExpZ2h0RWwKIHsKIH0K
IAotTGlnaHRTb3VyY2UqIFNWR0ZFU3BvdExpZ2h0RWxlbWVudDo6bGlnaHRTb3VyY2UoKSBjb25z
dAorUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gU1ZHRkVTcG90TGlnaHRFbGVtZW50OjpsaWdodFNv
dXJjZSgpIGNvbnN0CiB7CiAgICAgRmxvYXRQb2ludDNEIHBvcyh4KCksIHkoKSwgeigpKTsKIApA
QCAtNDQsNyArNDQsNyBAQCBMaWdodFNvdXJjZSogU1ZHRkVTcG90TGlnaHRFbGVtZW50OjpsaWdo
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHNBdFooKSAtIHBvcy56KCkpOwogCiAg
ICAgZGlyZWN0aW9uLm5vcm1hbGl6ZSgpOwotICAgIHJldHVybiBuZXcgU3BvdExpZ2h0U291cmNl
KHBvcywgZGlyZWN0aW9uLCBzcGVjdWxhckV4cG9uZW50KCksIGxpbWl0aW5nQ29uZUFuZ2xlKCkp
OworICAgIHJldHVybiBTcG90TGlnaHRTb3VyY2U6OmNyZWF0ZShwb3MsIGRpcmVjdGlvbiwgc3Bl
Y3VsYXJFeHBvbmVudCgpLCBsaW1pdGluZ0NvbmVBbmdsZSgpKTsKIH0KIAogfQpJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmgJKHJldmlzaW9uIDUxOTMyKQorKysgV2ViQ29yZS9z
dmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTVkdGRVNwb3RMaWdodEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR0ZFU3Bv
dExpZ2h0RWxlbWVudCgpOwogCi0gICAgICAgIHZpcnR1YWwgTGlnaHRTb3VyY2UqIGxpZ2h0U291
cmNlKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gbGln
aHRTb3VyY2UoKSBjb25zdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Rpc3RhbnRMaWdodFNvdXJjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRGlzdGFudExpZ2h0
U291cmNlLmgJKHJldmlzaW9uIDUxOTMyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdEaXN0YW50TGlnaHRTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIERpc3RhbnRMaWdodFNvdXJjZSA6
IHB1YmxpYyBMaWdodFNvdXJjZSB7CiAgICAgcHVibGljOgotICAgICAgICBEaXN0YW50TGlnaHRT
b3VyY2UoZmxvYXQgYXppbXV0aCwgZmxvYXQgZWxldmF0aW9uKQotICAgICAgICAgICAgOiBMaWdo
dFNvdXJjZShMU19ESVNUQU5UKQotICAgICAgICAgICAgLCBtX2F6aW11dGgoYXppbXV0aCkKLSAg
ICAgICAgICAgICwgbV9lbGV2YXRpb24oZWxldmF0aW9uKQotICAgICAgICB7IH0KKyAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8RGlzdGFudExpZ2h0U291cmNlPiBjcmVhdGUoZmxvYXQgYXppbXV0
aCwgZmxvYXQgZWxldmF0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IERpc3RhbnRMaWdodFNvdXJjZShhemltdXRoLCBlbGV2YXRpb24pKTsKKyAgICAgICAg
fQogCiAgICAgICAgIGZsb2F0IGF6aW11dGgoKSBjb25zdCB7IHJldHVybiBtX2F6aW11dGg7IH0K
ICAgICAgICAgZmxvYXQgZWxldmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lbGV2YXRpb247IH0K
QEAgLTQyLDYgKzQxLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBU
ZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKIAog
ICAgIHByaXZhdGU6CisgICAgICAgIERpc3RhbnRMaWdodFNvdXJjZShmbG9hdCBhemltdXRoLCBm
bG9hdCBlbGV2YXRpb24pCisgICAgICAgICAgICA6IExpZ2h0U291cmNlKExTX0RJU1RBTlQpCisg
ICAgICAgICAgICAsIG1fYXppbXV0aChhemltdXRoKQorICAgICAgICAgICAgLCBtX2VsZXZhdGlv
bihlbGV2YXRpb24pCisgICAgICAgIHsKKyAgICAgICAgfQorCiAgICAgICAgIGZsb2F0IG1fYXpp
bXV0aDsKICAgICAgICAgZmxvYXQgbV9lbGV2YXRpb247CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuY3Bw
CShyZXZpc2lvbiA1MTkzMikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVE
aWZmdXNlTGlnaHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEZFRGlmZnVzZUxpZ2h0aW5nOjpGRURpZmZ1c2VMaWdodGluZyhG
aWx0ZXJFZmZlY3QqIGluICwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGNvbnN0IGZsb2F0
JiBzdXJmYWNlU2NhbGUsCi0gICAgY29uc3QgZmxvYXQmIGRpZmZ1c2VDb25zdGFudCwgY29uc3Qg
ZmxvYXQmIGtlcm5lbFVuaXRMZW5ndGhYLCBjb25zdCBmbG9hdCYga2VybmVsVW5pdExlbmd0aFks
IExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSkKKyAgICBjb25zdCBmbG9hdCYgZGlmZnVzZUNvbnN0
YW50LCBjb25zdCBmbG9hdCYga2VybmVsVW5pdExlbmd0aFgsIGNvbnN0IGZsb2F0JiBrZXJuZWxV
bml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCiAgICAgOiBG
aWx0ZXJFZmZlY3QoKQogICAgICwgbV9pbihpbikKICAgICAsIG1fbGlnaHRpbmdDb2xvcihsaWdo
dGluZ0NvbG9yKQpAQCAtNDQsNyArNDQsNyBAQCBGRURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNl
TGlnaHRpbmcoRmlsCiAKIFBhc3NSZWZQdHI8RkVEaWZmdXNlTGlnaHRpbmc+IEZFRGlmZnVzZUxp
Z2h0aW5nOjpjcmVhdGUoRmlsdGVyRWZmZWN0KiBpbiAsIGNvbnN0IENvbG9yJiBsaWdodGluZ0Nv
bG9yLAogICAgIGNvbnN0IGZsb2F0JiBzdXJmYWNlU2NhbGUsIGNvbnN0IGZsb2F0JiBkaWZmdXNl
Q29uc3RhbnQsIGNvbnN0IGZsb2F0JiBrZXJuZWxVbml0TGVuZ3RoWCwKLSAgICBjb25zdCBmbG9h
dCYga2VybmVsVW5pdExlbmd0aFksIExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSkKKyAgICBjb25z
dCBmbG9hdCYga2VybmVsVW5pdExlbmd0aFksIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0
U291cmNlKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVEaWZmdXNlTGlnaHRpbmcoaW4s
IGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgZGlmZnVzZUNvbnN0YW50LCBrZXJuZWxVbml0
TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIGxpZ2h0U291cmNlKSk7CiB9CkBAIC0xMDgsNyAr
MTA4LDcgQEAgY29uc3QgTGlnaHRTb3VyY2UqIEZFRGlmZnVzZUxpZ2h0aW5nOjpsaQogICAgIHJl
dHVybiBtX2xpZ2h0U291cmNlLmdldCgpOwogfQogCi12b2lkIEZFRGlmZnVzZUxpZ2h0aW5nOjpz
ZXRMaWdodFNvdXJjZShMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UpCit2b2lkIEZFRGlmZnVzZUxp
Z2h0aW5nOjpzZXRMaWdodFNvdXJjZShQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBsaWdodFNvdXJj
ZSkKIHsgICAgCiAgICAgbV9saWdodFNvdXJjZSA9IGxpZ2h0U291cmNlOwogfQpJbmRleDogV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcu
aAkocmV2aXNpb24gNTE5MzIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
RGlmZnVzZUxpZ2h0aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZFRGlmZnVzZUxpZ2h0aW5nIDogcHVibGljIEZpbHRl
ckVmZmVjdCB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRURpZmZ1
c2VMaWdodGluZz4gY3JlYXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IENvbG9yJiwgY29uc3QgZmxv
YXQmLCBjb25zdCBmbG9hdCYsCi0gICAgICAgICAgICAgICAgY29uc3QgZmxvYXQmLCBjb25zdCBm
bG9hdCYsIExpZ2h0U291cmNlKik7CisgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQmLCBjb25z
dCBmbG9hdCYsIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKICAgICAgICAgdmlydHVhbCB+RkVE
aWZmdXNlTGlnaHRpbmcoKTsKIAogICAgICAgICBDb2xvciBsaWdodGluZ0NvbG9yKCkgY29uc3Q7
CkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRL
ZXJuZWxVbml0TGVuZ3RoWShmbG9hdCk7CiAKICAgICAgICAgY29uc3QgTGlnaHRTb3VyY2UqIGxp
Z2h0U291cmNlKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0TGlnaHRTb3VyY2UoTGlnaHRTb3Vy
Y2UqKTsKKyAgICAgICAgdm9pZCBzZXRMaWdodFNvdXJjZShQYXNzUmVmUHRyPExpZ2h0U291cmNl
Pik7CiAKICAgICAgICAgdmlydHVhbCBGbG9hdFJlY3QgdW5pdGVDaGlsZEVmZmVjdFN1YnJlZ2lv
bnMoRmlsdGVyKiBmaWx0ZXIpIHsgcmV0dXJuIGNhbGN1bGF0ZVVuaW9uT2ZDaGlsZEVmZmVjdFN1
YnJlZ2lvbnMoZmlsdGVyLCBtX2luLmdldCgpKTsgfQogICAgICAgICB2b2lkIGFwcGx5KEZpbHRl
ciopOwpAQCAtNjIsNyArNjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAg
IHByaXZhdGU6CiAgICAgICAgIEZFRGlmZnVzZUxpZ2h0aW5nKEZpbHRlckVmZmVjdCosIGNvbnN0
IENvbG9yJiwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsCi0gICAgICAgICAgICAgICAgY29u
c3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsIExpZ2h0U291cmNlKik7CisgICAgICAgICAgICAgICAg
Y29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKIAog
ICAgICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2luOwogICAgICAgICBDb2xvciBtX2xpZ2h0
aW5nQ29sb3I7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3Vs
YXJMaWdodGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuY3BwCShyZXZpc2lvbiA1MTkzMikKKysrIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZFU3BlY3VsYXJM
aWdodGluZzo6RkVTcGVjdWxhckxpZ2h0aW5nKEZpbHRlckVmZmVjdCogaW4sIGNvbnN0IENvbG9y
JiBsaWdodGluZ0NvbG9yLCBjb25zdCBmbG9hdCYgc3VyZmFjZVNjYWxlLAogICAgIGNvbnN0IGZs
b2F0JiBzcGVjdWxhckNvbnN0YW50LCBjb25zdCBmbG9hdCYgc3BlY3VsYXJFeHBvbmVudCwgY29u
c3QgZmxvYXQmIGtlcm5lbFVuaXRMZW5ndGhYLAotICAgIGNvbnN0IGZsb2F0JiBrZXJuZWxVbml0
TGVuZ3RoWSwgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKQorICAgIGNvbnN0IGZsb2F0JiBrZXJu
ZWxVbml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCiAgICAg
OiBGaWx0ZXJFZmZlY3QoKQogICAgICwgbV9pbihpbikKICAgICAsIG1fbGlnaHRpbmdDb2xvcihs
aWdodGluZ0NvbG9yKQpAQCAtNDUsNyArNDUsNyBAQCBGRVNwZWN1bGFyTGlnaHRpbmc6OkZFU3Bl
Y3VsYXJMaWdodGluZyhGCiAKIFBhc3NSZWZQdHI8RkVTcGVjdWxhckxpZ2h0aW5nPiBGRVNwZWN1
bGFyTGlnaHRpbmc6OmNyZWF0ZShGaWx0ZXJFZmZlY3QqIGluLCBjb25zdCBDb2xvciYgbGlnaHRp
bmdDb2xvciwKICAgICBjb25zdCBmbG9hdCYgc3VyZmFjZVNjYWxlLCBjb25zdCBmbG9hdCYgc3Bl
Y3VsYXJDb25zdGFudCwgY29uc3QgZmxvYXQmIHNwZWN1bGFyRXhwb25lbnQsCi0gICAgY29uc3Qg
ZmxvYXQmIGtlcm5lbFVuaXRMZW5ndGhYLCBjb25zdCBmbG9hdCYga2VybmVsVW5pdExlbmd0aFks
IExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSkKKyAgICBjb25zdCBmbG9hdCYga2VybmVsVW5pdExl
bmd0aFgsIGNvbnN0IGZsb2F0JiBrZXJuZWxVbml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxMaWdodFNv
dXJjZT4gbGlnaHRTb3VyY2UpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGRVNwZWN1bGFy
TGlnaHRpbmcoaW4sIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgc3BlY3VsYXJDb25zdGFu
dCwgc3BlY3VsYXJFeHBvbmVudCwKICAgICAgICAga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVu
aXRMZW5ndGhZLCBsaWdodFNvdXJjZSkpOwpAQCAtMTIwLDcgKzEyMCw3IEBAIGNvbnN0IExpZ2h0
U291cmNlKiBGRVNwZWN1bGFyTGlnaHRpbmc6OmwKICAgICByZXR1cm4gbV9saWdodFNvdXJjZS5n
ZXQoKTsKIH0KIAotdm9pZCBGRVNwZWN1bGFyTGlnaHRpbmc6OnNldExpZ2h0U291cmNlKExpZ2h0
U291cmNlKiBsaWdodFNvdXJjZSkKK3ZvaWQgRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRMaWdodFNv
dXJjZShQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZSkKIHsKICAgICBtX2xpZ2h0
U291cmNlID0gbGlnaHRTb3VyY2U7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmgJKHJldmlzaW9uIDUxOTMyKQor
KysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuaAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgRkVTcGVjdWxhckxpZ2h0aW5nIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiAgICAgcHVi
bGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRVNwZWN1bGFyTGlnaHRpbmc+IGNyZWF0
ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBDb2xvciYsIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQm
LAotICAgICAgICAgICAgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0Jiwg
TGlnaHRTb3VyY2UqKTsKKyAgICAgICAgICAgIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmLCBj
b25zdCBmbG9hdCYsIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKICAgICAgICAgdmlydHVhbCB+
RkVTcGVjdWxhckxpZ2h0aW5nKCk7CiAKICAgICAgICAgQ29sb3IgbGlnaHRpbmdDb2xvcigpIGNv
bnN0OwpAQCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQg
c2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQpOwogCiAgICAgICAgIGNvbnN0IExpZ2h0U291cmNl
KiBsaWdodFNvdXJjZSgpIGNvbnN0OwotICAgICAgICB2b2lkIHNldExpZ2h0U291cmNlKExpZ2h0
U291cmNlKik7CisgICAgICAgIHZvaWQgc2V0TGlnaHRTb3VyY2UoUGFzc1JlZlB0cjxMaWdodFNv
dXJjZT4pOwogCiAgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IHVuaXRlRWZmZWN0UmVjdChGaWx0
ZXIqIGZpbHRlcikgeyByZXR1cm4gY2FsY3VsYXRlVW5pb25PZkNoaWxkRWZmZWN0U3VicmVnaW9u
cyhmaWx0ZXIsIG1faW4uZ2V0KCkpOyB9CiAgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7CkBA
IC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIEZFU3BlY3VsYXJMaWdodGluZyhGaWx0ZXJFZmZlY3QqLCBjb25zdCBDb2xvciYsIGNvbnN0
IGZsb2F0JiwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsCi0gICAgICAgICAgICBjb25zdCBm
bG9hdCYsIGNvbnN0IGZsb2F0JiwgTGlnaHRTb3VyY2UqKTsKKyAgICAgICAgICAgIGNvbnN0IGZs
b2F0JiwgY29uc3QgZmxvYXQmLCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CiAKICAgICAgICAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gbV9pbjsKICAgICAgICAgQ29sb3IgbV9saWdodGluZ0NvbG9y
OwpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdMaWdodFNvdXJjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHTGlnaHRTb3VyY2Uu
aAkocmV2aXNpb24gNTE5MzIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0xp
Z2h0U291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNkZWZpbmUgU1ZH
TGlnaHRTb3VyY2VfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R1BvaW50TGlnaHRTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR1BvaW50TGlnaHRTb3VyY2UuaAkocmV2aXNpb24gNTE5MzIpCisrKyBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR1BvaW50TGlnaHRTb3VyY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMzEsMTYgKzMxLDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFBv
aW50TGlnaHRTb3VyY2UgOiBwdWJsaWMgTGlnaHRTb3VyY2UgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgUG9pbnRMaWdodFNvdXJjZShjb25zdCBGbG9hdFBvaW50M0QmIHBvc2l0aW9uKQotICAgICAg
ICAgICAgOiBMaWdodFNvdXJjZShMU19QT0lOVCkKLSAgICAgICAgICAgICwgbV9wb3NpdGlvbihw
b3NpdGlvbikKLSAgICAgICAgeyB9CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBvaW50TGln
aHRTb3VyY2U+IGNyZWF0ZShjb25zdCBGbG9hdFBvaW50M0QmIHBvc2l0aW9uKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBvaW50TGlnaHRTb3VyY2UocG9zaXRp
b24pKTsKKyAgICAgICAgfQogCiAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQzRCYgcG9zaXRpb24o
KSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CiAKICAgICAgICAgdmlydHVhbCBUZXh0U3Ry
ZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKIAogICAgIHBy
aXZhdGU6CisgICAgICAgIFBvaW50TGlnaHRTb3VyY2UoY29uc3QgRmxvYXRQb2ludDNEJiBwb3Np
dGlvbikKKyAgICAgICAgICAgIDogTGlnaHRTb3VyY2UoTFNfUE9JTlQpCisgICAgICAgICAgICAs
IG1fcG9zaXRpb24ocG9zaXRpb24pCisgICAgICAgIHsKKyAgICAgICAgfQorCiAgICAgICAgIEZs
b2F0UG9pbnQzRCBtX3Bvc2l0aW9uOwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHU3BvdExpZ2h0U291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdTcG90TGlnaHRTb3VyY2UuaAkocmV2aXNpb24gNTE5MzIp
CisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR1Nwb3RMaWdodFNvdXJjZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSwxMyArMzEsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgY2xhc3MgU3BvdExpZ2h0U291cmNlIDogcHVibGljIExpZ2h0U291cmNlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFNwb3RMaWdodFNvdXJjZShjb25zdCBGbG9hdFBvaW50M0QmIHBvc2l0aW9u
LCBjb25zdCBGbG9hdFBvaW50M0QmIGRpcmVjdGlvbiwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwg
ZmxvYXQgbGltaXRpbmdDb25lQW5nbGUpCi0gICAgICAgICAgICA6IExpZ2h0U291cmNlKExTX1NQ
T1QpCi0gICAgICAgICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCi0gICAgICAgICAgICAsIG1f
ZGlyZWN0aW9uKGRpcmVjdGlvbikKLSAgICAgICAgICAgICwgbV9zcGVjdWxhckV4cG9uZW50KHNw
ZWN1bGFyRXhwb25lbnQpCi0gICAgICAgICAgICAsIG1fbGltaXRpbmdDb25lQW5nbGUobGltaXRp
bmdDb25lQW5nbGUpCi0gICAgICAgIHsgfQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcG90
TGlnaHRTb3VyY2U+IGNyZWF0ZShjb25zdCBGbG9hdFBvaW50M0QmIHBvc2l0aW9uLCBjb25zdCBG
bG9hdFBvaW50M0QmIGRpcmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQgbGltaXRpbmdD
b25lQW5nbGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3Bv
dExpZ2h0U291cmNlKHBvc2l0aW9uLCBkaXJlY3Rpb24sIHNwZWN1bGFyRXhwb25lbnQsIGxpbWl0
aW5nQ29uZUFuZ2xlKSk7CisgICAgICAgIH0KIAogICAgICAgICBjb25zdCBGbG9hdFBvaW50M0Qm
IHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQogICAgICAgICBjb25zdCBG
bG9hdFBvaW50M0QmIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uOyB9CkBA
IC00OCw2ICs0NiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgVGV4
dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7CiAKICAg
ICBwcml2YXRlOgorICAgICAgICBTcG90TGlnaHRTb3VyY2UoY29uc3QgRmxvYXRQb2ludDNEJiBw
b3NpdGlvbiwgY29uc3QgRmxvYXRQb2ludDNEJiBkaXJlY3Rpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBsaW1pdGluZ0NvbmVBbmdsZSkK
KyAgICAgICAgICAgIDogTGlnaHRTb3VyY2UoTFNfU1BPVCkKKyAgICAgICAgICAgICwgbV9wb3Np
dGlvbihwb3NpdGlvbikKKyAgICAgICAgICAgICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQorICAg
ICAgICAgICAgLCBtX3NwZWN1bGFyRXhwb25lbnQoc3BlY3VsYXJFeHBvbmVudCkKKyAgICAgICAg
ICAgICwgbV9saW1pdGluZ0NvbmVBbmdsZShsaW1pdGluZ0NvbmVBbmdsZSkKKyAgICAgICAgewor
ICAgICAgICB9CisKICAgICAgICAgRmxvYXRQb2ludDNEIG1fcG9zaXRpb247CiAgICAgICAgIEZs
b2F0UG9pbnQzRCBtX2RpcmVjdGlvbjsKIAo=
</data>
<flag name="review"
          id="26477"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="26478"
          type_id="3"
          status="-"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>