<?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>127506</bug_id>
          
          <creation_ts>2014-01-23 12:46:49 -0800</creation_ts>
          <short_desc>Avoid unnecessary copies in range-based for-loops</short_desc>
          <delta_ts>2014-02-17 10:30:24 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>alecflett</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>d-r</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jsbell</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>971293</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-01-23 12:46:49 -0800</bug_when>
    <thetext>In around 20 files range-based for-loops are used that assign each iterated value to an inferred non-reference type, causing copies:

    for (auto elem : range) { ... }

auto&amp; or const auto&amp; should be used instead.

Using auto&amp;&amp; in these loops would be the perfect solution, and there are plans to further simplify the range-based for-loops in the future based on using that type. I don&apos;t know if using auto&amp;&amp; now would be feasible for the project.
http://open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3853.htm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971298</commentid>
    <comment_count>1</comment_count>
      <attachid>222019</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-01-23 12:53:12 -0800</bug_when>
    <thetext>Created attachment 222019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973789</commentid>
    <comment_count>2</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-01-30 10:07:26 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; Using auto&amp;&amp; in these loops would be the perfect solution, and there are plans to further simplify the range-based for-loops in the future based on using that type. I don&apos;t know if using auto&amp;&amp; now would be feasible for the project.
&gt; http://open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3853.htm

What would be the problem with using auto&amp;&amp; now? It&apos;s valid on all compilers we support, isn&apos;t it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981348</commentid>
    <comment_count>3</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-02-17 01:13:35 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #0)
&gt; &gt; Using auto&amp;&amp; in these loops would be the perfect solution, and there are plans to further simplify the range-based for-loops in the future based on using that type. I don&apos;t know if using auto&amp;&amp; now would be feasible for the project.
&gt; &gt; http://open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3853.htm
&gt; 
&gt; What would be the problem with using auto&amp;&amp; now? It&apos;s valid on all compilers we support, isn&apos;t it?

It should be (haven&apos;t tested out MSVC). I&apos;m concerned whether it would be possible to enforce the use of auto&amp;&amp; through the style guidelines and whether the relative complexity overhead is acceptable until all the supported compilers actually support the simplified syntax.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981349</commentid>
    <comment_count>4</comment_count>
      <attachid>222019</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-02-17 01:14:06 -0800</bug_when>
    <thetext>Comment on attachment 222019
Patch

This patch needs updating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981521</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-02-17 10:30:24 -0800</bug_when>
    <thetext>&gt; What would be the problem with using auto&amp;&amp; now? It&apos;s valid on all compilers we support, isn&apos;t it?

FWIW, I&apos;m still not sure what the benefit would be. My understanding is that auto&amp;&amp; is superior for library code, where it allows for a wider range of types to work. But in normal WebCore code, isn&apos;t it best to use the most specific form that compiles? Less generality makes code more readable.

In other words, I&apos;d suggest that we prefer auto&amp; or const auto&amp;, and only use auto&amp;&amp; when that&apos;s required for successful compilation.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222019</attachid>
            <date>2014-01-23 12:53:12 -0800</date>
            <delta_ts>2014-02-17 01:14:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127506-20140123125311.patch</filename>
            <type>text/plain</type>
            <size>34043</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyNTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZDM3MGE1NzA1ZWQ3NDhhNjI3ZDY4ODFmYmUxYTRjNTlmZWUwNmYwLi5iZDkyNGQ2NTE5YTFlNWY1
MzBjMjc2ZWIxODFmMDhmMGI0NjQyZjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNC0wMS0yMyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CisKKyAgICAgICAgQXZvaWQgdW5uZWNlc3NhcnkgY29waWVzIGluIHJhbmdlLWJhc2VkIGZv
ci1sb29wcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI3NTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXNlICdhdXRvJicgb3IgJ2NvbnN0IGF1dG8mJyB0eXBlcyBpbnN0ZWFkIG9mICdhdXRvJyBhbmQg
J2NvbnN0IGF1dG8nIHR5cGVzLCByZXNwZWN0aXZlbHksIGFzIHR5cGVzCisgICAgICAgIGZvciB0
aGUgZWxlbWVudHMgb2YgY29udGFpbmVycyB0aGF0IGFyZSBiZWluZyBpdGVyYXRlZCBvdmVyIGlu
IHJhbmdlLWJhc2VkIGZvci1sb29wcy4KKworICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEhvc3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdEhvc3Q6OmNs
ZWFyQWxsV3JhcHBlcnMpOgorCiAyMDE0LTAxLTIyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxl
LmNvbT4KIAogICAgICAgICBQb29yIG1hbidzIGZhc3QgYnJlYWtwb2ludHMgZm9yIGEgMi4zeCBk
ZWJ1Z2dlciBzcGVlZHVwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGYzY2YzODk0NDU4MTE0Yjk3NGY5MDM4Njg1
MzM1OWY2N2JhMzc4NjMuLjhkOTg4MDRhOTIyNzhkNWY3MjMyZjlkM2NkMDliN2E2MTA3YWJhNzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxNC0wMS0yMyAgWmFuIERvYmVyc2VrICA8
emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgQXZvaWQgdW5uZWNlc3NhcnkgY29waWVz
IGluIHJhbmdlLWJhc2VkIGZvci1sb29wcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXNlICdhdXRvJicgb3IgJ2NvbnN0IGF1dG8mJyB0eXBlcyBpbnN0
ZWFkIG9mICdhdXRvJyBhbmQgJ2NvbnN0IGF1dG8nIHR5cGVzLCByZXNwZWN0aXZlbHksIGFzIHR5
cGVzCisgICAgICAgIGZvciB0aGUgZWxlbWVudHMgb2YgY29udGFpbmVycyB0aGF0IGFyZSBiZWlu
ZyBpdGVyYXRlZCBvdmVyIGluIHJhbmdlLWJhc2VkIGZvci1sb29wcy4KKworICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5
RGF0YTo6SURCS2V5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjptYXliZUNy
ZWF0ZUlEQktleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjppc29sYXRlZENvcHkp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaERpZFNhbXBsZVByb2JlKToKKyAg
ICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjpsb2FkUGVuZGluZ1NWR0RvY3VtZW50cyk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6cmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgICogcGFnZS9pb3MvRnJhbWVJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW50ZXJwcmV0YXRpb25zRm9yQ3VycmVu
dFJvb3QpOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZpbGVDaG9vc2VyOjpjaG9vc2VNZWRpYUZpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpuYXR1cmFs
U2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0xheWVyQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2lv
cy9UaWxlR3JpZC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVHcmlkOjpkcm9wVGlsZXNCZXR3
ZWVuUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUdyaWQ6OmRyb3BEaXN0YW50VGlsZXMp
OgorICAgICAgICAoV2ViQ29yZTo6VGlsZUdyaWQ6OmRyb3BJbnZhbGlkVGlsZXMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cmVtb3ZlRnJvbUNhY2hlQW5kSW52YWxpZGF0ZURlcGVuZGVuY2llcyk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6bWFya0FsbENsaWVudHNGb3JJbnZh
bGlkYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6
Om1hcmtBbGxDbGllbnRMYXllcnNGb3JJbnZhbGlkYXRpb24pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJT
dXBwb3J0OjpsYXlvdXRDaGlsZHJlbik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNv
dXJjZXNDeWNsZVNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXNDeWNs
ZVNvbHZlcjo6cmVzb3VyY2VDb250YWluc0N5Y2xlcyk6CisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVNb3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25F
bGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjppbnZhbGlkYXRlTVBh
dGhEZXBlbmRlbmNpZXMpOgorCiAyMDE0LTAxLTIyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cnJvdW5kIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0
IGNvZGUgd2l0aCBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA3
NGIxNTBmMGJiN2NkMWJmYjM2YTFjYjg2ZGRiN2Q5N2EwYTE4NzkyLi4yYmYzNzdhY2I5ZjkxNjc3
NDlhNTFlMjI0OTRjYjAwNjdmMzAxODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTQtMDEtMjMgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisg
ICAgICAgIEF2b2lkIHVubmVjZXNzYXJ5IGNvcGllcyBpbiByYW5nZS1iYXNlZCBmb3ItbG9vcHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzUwNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSAnYXV0
byYnIG9yICdjb25zdCBhdXRvJicgdHlwZXMgaW5zdGVhZCBvZiAnYXV0bycgYW5kICdjb25zdCBh
dXRvJyB0eXBlcywgcmVzcGVjdGl2ZWx5LCBhcyB0eXBlcworICAgICAgICBmb3IgdGhlIGVsZW1l
bnRzIG9mIGNvbnRhaW5lcnMgdGhhdCBhcmUgYmVpbmcgaXRlcmF0ZWQgb3ZlciBpbiByYW5nZS1i
YXNlZCBmb3ItbG9vcHMuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAg
ICAoLVtXZWJGcmFtZSBfZG9jdW1lbnRGcmFnbWVudFdpdGhOb2Rlc0FzUGFyYWdyYXBoczpdKToK
KwogMjAxNC0wMS0yMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSBDU1MzX1RFWFRfREVDT1JBVElPTiBkZWZpbmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCA0Yzc1ODA5MTA0NDBkNWNiN2FhNDc5ZWM4MmUwZjgwMWQ3OTIzNGM0Li45MWM1MTI5OTJlMTVl
NDY0ZTdhMWMyZTNlZTE5NDVhZjhhNmZjMzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAK
KzIwMTQtMDEtMjMgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAg
ICAgIEF2b2lkIHVubmVjZXNzYXJ5IGNvcGllcyBpbiByYW5nZS1iYXNlZCBmb3ItbG9vcHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzUwNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSAnYXV0byYn
IG9yICdjb25zdCBhdXRvJicgdHlwZXMgaW5zdGVhZCBvZiAnYXV0bycgYW5kICdjb25zdCBhdXRv
JyB0eXBlcywgcmVzcGVjdGl2ZWx5LCBhcyB0eXBlcworICAgICAgICBmb3IgdGhlIGVsZW1lbnRz
IG9mIGNvbnRhaW5lcnMgdGhhdCBhcmUgYmVpbmcgaXRlcmF0ZWQgb3ZlciBpbiByYW5nZS1iYXNl
ZCBmb3ItbG9vcHMuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ3Jvc3NUaHJlYWRDb3BpZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VmVjdG9yPFZlY3RvcjxJREJLZXlEYXRhPj4+Ojpjb3B5KToK
KyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAg
ICAoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bik6Cisg
ICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW06Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6YXBwbHlQcm9w
ZXJ0aWVzVG9MYXllcik6CisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6OmR1bXBDaGFuZ2VkTGF5
ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk6OmludmFsaWRhdGVSZXF1ZXN0cyk6CisgICAgICAgICogVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6aW52YWxpZGF0ZVJlcXVlc3RzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU2Ny
b2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Ojpjb25uZWN0U3RhdGVOb2RlTGF5
ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHQ6OnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllclRyZWUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6V2luZG93
U2VydmVyQ29ubmVjdGlvbjo6V2luZG93U2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpwdXQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAgICAg
ICAgKFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6cmVjdXJzaXZlQnVpbGRUcmFuc2FjdGlvbik6CisK
IDIwMTQtMDEtMjIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgU3Vycm91bmQgZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgY29kZSB3aXRoIFVTRShUSUxF
RF9CQUNLSU5HX1NUT1JFKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IDQ2YjNjNGUzN2Y4MTBkNGE1OWZiMGZk
MzhlZDc2ZmNlNjQ4OWMzMjkuLmRiOTE3Zjg1OWMxMDg5ZmMyZTNiZjM2ZDIzYTQxMTQyZGUzOTc0
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0SG9zdC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdEhv
c3Q6OmNsZWFyV3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmoKIAogdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmNsZWFyQWxsV3JhcHBlcnMoKQogewotICAg
IGZvciAoYXV0byB3cmFwcGVyIDogbV93cmFwcGVycykKKyAgICBmb3IgKGF1dG8mIHdyYXBwZXIg
OiBtX3dyYXBwZXJzKQogICAgICAgICBjbGVhcldyYXBwZXJGcm9tVmFsdWUod3JhcHBlci52YWx1
ZS5nZXQoKSk7CiAKICAgICBtX3dyYXBwZXJzLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwCmluZGV4IDFmYzgyY2RhMTgxODM4YzM5
MGIyY2RhYmM3ODU1NmM2MzNmZTAxOWQuLjVhYjYxNjA0MGVhZTVlOWFiOWM2NDI1YjBhOTY1NWRj
ZGZkYWM4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QktleURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktl
eURhdGEuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIElEQktleURhdGE6OklEQktleURhdGEoSURCS2V5
KiBrZXkpCiAgICAgY2FzZSBJREJLZXk6OkludmFsaWRUeXBlOgogICAgICAgICBicmVhazsKICAg
ICBjYXNlIElEQktleTo6QXJyYXlUeXBlOgotICAgICAgICBmb3IgKGF1dG8ga2V5MiA6IGtleS0+
YXJyYXkoKSkKKyAgICAgICAgZm9yIChhdXRvJiBrZXkyIDoga2V5LT5hcnJheSgpKQogICAgICAg
ICAgICAgYXJyYXlWYWx1ZS5hcHBlbmQoSURCS2V5RGF0YShrZXkyLmdldCgpKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgSURCS2V5OjpTdHJpbmdUeXBlOgpAQCAtNzYsNyArNzYsNyBAQCBQ
YXNzUmVmUHRyPElEQktleT4gSURCS2V5RGF0YTo6bWF5YmVDcmVhdGVJREJLZXkoKSBjb25zdAog
ICAgIGNhc2UgSURCS2V5OjpBcnJheVR5cGU6CiAgICAgICAgIHsKICAgICAgICAgICAgIElEQktl
eTo6S2V5QXJyYXkgYXJyYXk7Ci0gICAgICAgICAgICBmb3IgKGF1dG8ga2V5RGF0YSA6IGFycmF5
VmFsdWUpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYga2V5RGF0YSA6IGFycmF5VmFsdWUpIHsK
ICAgICAgICAgICAgICAgICBhcnJheS5hcHBlbmQoa2V5RGF0YS5tYXliZUNyZWF0ZUlEQktleSgp
KTsKICAgICAgICAgICAgICAgICBBU1NFUlQoYXJyYXkubGFzdCgpKTsKICAgICAgICAgICAgIH0K
QEAgLTEwNyw3ICsxMDcsNyBAQCBJREJLZXlEYXRhIElEQktleURhdGE6Omlzb2xhdGVkQ29weSgp
IGNvbnN0CiAgICAgY2FzZSBJREJLZXk6OkludmFsaWRUeXBlOgogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIGNhc2UgSURCS2V5OjpBcnJheVR5cGU6Ci0gICAgICAgIGZvciAoYXV0byBrZXkg
OiBhcnJheVZhbHVlKQorICAgICAgICBmb3IgKGF1dG8mIGtleSA6IGFycmF5VmFsdWUpCiAgICAg
ICAgICAgICByZXN1bHQuYXJyYXlWYWx1ZS5hcHBlbmQoa2V5Lmlzb2xhdGVkQ29weSgpKTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICBjYXNlIElEQktleTo6U3RyaW5nVHlwZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBk
YWM1MmEyNDRmYjQ3YTBhZTI4NzJkNDMxOWJkZTNjNDA5ZTI5ODZmLi44OTM0ZTNiOTkyODhmNmNm
ZGIyZGM2M2NlYTBkM2Q4OWIxMWFiZGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBTY3Jp
cHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRTYW1wbGVQcm9iZShFeGVjU3RhdGUqIGV4ZWMsIGlu
dCBpZGVudGlmaWVyLAogCiAgICAgVmVjdG9yPFNjcmlwdERlYnVnTGlzdGVuZXIqPiBsaXN0ZW5l
cnNDb3B5OwogICAgIGNvcHlUb1ZlY3RvcigqbGlzdGVuZXJzLCBsaXN0ZW5lcnNDb3B5KTsKLSAg
ICBmb3IgKGF1dG8gbGlzdGVuZXIgOiBsaXN0ZW5lcnNDb3B5KQorICAgIGZvciAoYXV0byYgbGlz
dGVuZXIgOiBsaXN0ZW5lcnNDb3B5KQogICAgICAgICBsaXN0ZW5lci0+ZGlkU2FtcGxlUHJvYmUo
ZXhlYywgaWRlbnRpZmllciwgbV9oaXRDb3VudCwgc2FtcGxlKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGUzNjI3ZThhY2E1MTE2OWFmZTlmNzhmNTA0NzYxMDA4
ZTgwY2ZhYTUuLjU1NzY2MWRkZjA5OWE2YTg0NDE3ZTgwZWZmMzNiYWY1ZWVkZmM3N2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTM0MTksNyArMzQxOSw3IEBAIHZvaWQg
U3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdTVkdEb2N1bWVudHMoKQogICAgICAgICByZXR1cm47
CiAKICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBzdGF0
ZS5kb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgZm9yIChhdXRvIHBlbmRp
bmdEb2N1bWVudCA6IHN0YXRlLnBlbmRpbmdTVkdEb2N1bWVudHMoKSkKKyAgICBmb3IgKGF1dG8m
IHBlbmRpbmdEb2N1bWVudCA6IHN0YXRlLnBlbmRpbmdTVkdEb2N1bWVudHMoKSkKICAgICAgICAg
cGVuZGluZ0RvY3VtZW50LT5sb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKICAgICBzdGF0ZS5w
ZW5kaW5nU1ZHRG9jdW1lbnRzKCkuY2xlYXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA2ZTkwYjM0OTRmYWVi
ODQyYTk2M2Y3OTcxMDZjZGVjYTBjYWRmNGViLi5iOGE4N2VhODM2NzA2NjhjOTFhYTRkMWQ2MGNj
YzZlM2JiYzhhZmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zNTUsNyArMzU1LDcgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBicmVha3AKICAgICBtX2phdmFTY3JpcHRCcmVha3BvaW50cy5yZW1vdmUoYnJlYWtwb2ludElk
ZW50aWZpZXIpOwogCiAgICAgVmVjdG9yPEpTQzo6QnJlYWtwb2ludElEPiBicmVha3BvaW50SURz
ID0gbV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzLnRha2Uo
YnJlYWtwb2ludElkZW50aWZpZXIpOwotICAgIGZvciAoYXV0byBicmVha3BvaW50SUQgOiBicmVh
a3BvaW50SURzKSB7CisgICAgZm9yIChhdXRvJiBicmVha3BvaW50SUQgOiBicmVha3BvaW50SURz
KSB7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxTY3JpcHRCcmVha3BvaW50QWN0aW9uPiYgYnJlYWtw
b2ludEFjdGlvbnMgPSBzY3JpcHREZWJ1Z1NlcnZlcigpLmdldEFjdGlvbnNGb3JCcmVha3BvaW50
KGJyZWFrcG9pbnRJRCk7CiAgICAgICAgIGZvciAoYXV0byYgYWN0aW9uIDogYnJlYWtwb2ludEFj
dGlvbnMpCiAgICAgICAgICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+cmVsZWFzZU9iamVj
dEdyb3VwKG9iamVjdEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbihhY3Rpb24uaWRlbnRpZmllcikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQppbmRleCAxNDk2OGI2YzgzNTNmMzI2YzAy
ZTYzOTViYTNkMjVkZjIyNzg2MTNjLi4yMTc5N2QwNzA0M2ZiYjhhMGI3NmM3Njc4MzUxZGJhYmYy
ODU5ZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQpAQCAtODAwLDcgKzgwMCw3
IEBAIE5TQXJyYXkgKkZyYW1lOjppbnRlcnByZXRhdGlvbnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0
CiAgICAgLy8gVGhlIG51bWJlciBvZiBpbnRlcnByZXRhdGlvbnMgd2lsbCBiZSBpMSAqIGkyICog
Li4uICogaU4sIHdoZXJlIGlYIGlzIHRoZSBudW1iZXIgb2YgaW50ZXJwcmV0YXRpb25zIGZvciB0
aGUgWHRoIHBocmFzZSB3aXRoIGFsdGVybmF0aXZlcy4KICAgICBzaXplX3QgaW50ZXJwcmV0YXRp
b25zQ291bnQgPSAxOwogCi0gICAgZm9yIChhdXRvIG1hcmtlciA6IG1hcmtlcnNJblJvb3QpCisg
ICAgZm9yIChhdXRvJiBtYXJrZXIgOiBtYXJrZXJzSW5Sb290KQogICAgICAgICBpbnRlcnByZXRh
dGlvbnNDb3VudCAqPSBtYXJrZXItPmFsdGVybmF0aXZlcygpLnNpemUoKSArIDE7CiAKICAgICBW
ZWN0b3I8VmVjdG9yPFVDaGFyPj4gaW50ZXJwcmV0YXRpb25zOwpAQCAtODEzLDcgKzgxMyw3IEBA
IE5TQXJyYXkgKkZyYW1lOjppbnRlcnByZXRhdGlvbnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0CiAg
ICAgTm9kZSogcGFzdExhc3ROb2RlID0gcmFuZ2VPZlJvb3RDb250ZW50cy0+cGFzdExhc3ROb2Rl
KCk7CiAgICAgZm9yIChOb2RlKiBub2RlID0gcmFuZ2VPZlJvb3RDb250ZW50cy0+Zmlyc3ROb2Rl
KCk7IG5vZGUgIT0gcGFzdExhc3ROb2RlOyBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dChub2Rl
KSkgewogICAgICAgICBjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiYgbWFya2VycyA9IGRv
Y3VtZW50KCktPm1hcmtlcnMoKS5tYXJrZXJzRm9yKG5vZGUsIERvY3VtZW50TWFya2VyOjpNYXJr
ZXJUeXBlcyhEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcykp
OwotICAgICAgICBmb3IgKGF1dG8gbWFya2VyIDogbWFya2VycykgeworICAgICAgICBmb3IgKGF1
dG8mIG1hcmtlciA6IG1hcmtlcnMpIHsKICAgICAgICAgICAgIC8vIEZpcnN0LCBhZGQgdGV4dCB0
aGF0IHByZWNlZGUgdGhlIG1hcmtlci4KICAgICAgICAgICAgIGlmIChwcmVjZWRpbmdUZXh0U3Rh
cnRQb3NpdGlvbiAhPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5z
dGFydE9mZnNldCgpKSkgewogICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcHJlY2VkaW5n
VGV4dFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4dFN0YXJ0
UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPnN0YXJ0
T2Zmc2V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9v
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAppbmRleCA0
YTEwZjE2ZDMzZWQ1ZmNjMzU0ODkzZWZkOWI2Y2U3MmNkMzBlODUwLi5hOWE2OTNiMzczYThiYmIw
YTYzZTZkOWFmMzE1Mjg3Njc1MmMzZTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNo
b29zZXIuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgRmlsZUNob29zZXI6OmNob29zZU1lZGlh
RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgU3RyaW5nCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiBmaWxlczsKLSAg
ICBmb3IgKGF1dG8gZmlsZW5hbWUgOiBmaWxlbmFtZXMpCisgICAgZm9yIChhdXRvJiBmaWxlbmFt
ZSA6IGZpbGVuYW1lcykKICAgICAgICAgZmlsZXMuYXBwZW5kKEZpbGVDaG9vc2VyRmlsZUluZm8o
ZmlsZW5hbWUpKTsKICAgICBtX2NsaWVudC0+ZmlsZXNDaG9zZW4oZmlsZXMsIGRpc3BsYXlTdHJp
bmcsIGljb24pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCA0MjZlOWZjZGMxYzNmMjIzNzk2NDA3YjI5ZTI2ZTFl
MmVkYTljYTA5Li45Y2VkY2Y1N2MxNzljOGNmNDEzNWEzY2RhNzhhN2NkYjAzODJlNDNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5tbQpAQCAtNjQ0LDcgKzY0NCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OnNlZWtUb1RpbWUoTWVkaWFUaW1lIHRpbWUpCiAKIEludFNpemUgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6Om5hdHVyYWxTaXplKCkKIHsKLSAgICBmb3IgKGF1dG8gdmlkZW9UcmFjayA6IG1f
dmlkZW9UcmFja3MpIHsKKyAgICBmb3IgKGF1dG8mIHZpZGVvVHJhY2sgOiBtX3ZpZGVvVHJhY2tz
KSB7CiAgICAgICAgIGlmICh2aWRlb1RyYWNrLT5zZWxlY3RlZCgpKQogICAgICAgICAgICAgcmV0
dXJuIHZpZGVvVHJhY2stPm5hdHVyYWxTaXplKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCmluZGV4IGE5MjRjZGY4Y2RlOGE5
ODIwMTE4ZDAzYTlmOTExNDEwNGEyM2MzMjguLjkwNGEwNmYyNmIxZjI2OTliOTc2MDQ2ZjRiMDI0
YmFiNjYxZTk3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvV2ViTGF5ZXIubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIGRyYXdMYXllckNvbnRlbnRz
KENHQ29udGV4dFJlZiBjb250ZXh0LCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3Jt
QwogICAgIFRoZW1lTWFjOjpzZXRGb2N1c1JpbmdDbGlwUmVjdChmb2N1c1JpbmdDbGlwUmVjdCk7
CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAotICAgIGZvciAoYXV0byByZWN0IDogZGlydHlS
ZWN0cykgeworICAgIGZvciAoYXV0byYgcmVjdCA6IGRpcnR5UmVjdHMpIHsKICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CiAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwKHJlY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvVGlsZUdyaWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvVGlsZUdyaWQubW0KaW5kZXggMmQ5YzZhYzQ2ZTMzNzU5MTJhMzhmZjE3NDUzY2U5MTVkMjY1
YWEyYy4uNjY3MDlmYTM3ODdhZjI3MjhiNDA2YjRkZjAzNmQ5ZjU3YjQwNDBkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RpbGVHcmlkLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9UaWxlR3JpZC5tbQpAQCAtODUsNyArODUsNyBAQCB2b2lkIFRp
bGVHcmlkOjpkcm9wVGlsZXNPdXRzaWRlUmVjdChjb25zdCBJbnRSZWN0JiBrZWVwUmVjdCkKIHZv
aWQgVGlsZUdyaWQ6OmRyb3BUaWxlc0JldHdlZW5SZWN0cyhjb25zdCBJbnRSZWN0JiBkcm9wUmVj
dCwgY29uc3QgSW50UmVjdCYga2VlcFJlY3QpCiB7CiAgICAgVmVjdG9yPFRpbGVJbmRleD4gdG9S
ZW1vdmU7Ci0gICAgZm9yIChhdXRvIHRpbGUgOiBtX3RpbGVzKSB7CisgICAgZm9yIChhdXRvJiB0
aWxlIDogbV90aWxlcykgewogICAgICAgICBUaWxlSW5kZXgmIGluZGV4ID0gdGlsZS5rZXk7CiAg
ICAgICAgIEludFJlY3QgdGlsZVJlY3QgPSB0aWxlLnZhbHVlLT5yZWN0KCk7CiAgICAgICAgIGlm
ICh0aWxlUmVjdC5pbnRlcnNlY3RzKGRyb3BSZWN0KSAmJiAhdGlsZVJlY3QuaW50ZXJzZWN0cyhr
ZWVwUmVjdCkpCkBAIC0xMjQsNyArMTI0LDcgQEAgYm9vbCBUaWxlR3JpZDo6ZHJvcERpc3RhbnRU
aWxlcyh1bnNpZ25lZCB0aWxlc05lZWRlZCwgZG91YmxlIHNob3J0ZXN0RGlzdGFuY2UpCiAKICAg
ICBJbnRSZWN0IHZpc2libGVSZWN0ID0gdGhpcy0+dmlzaWJsZVJlY3QoKTsKICAgICBWZWN0b3I8
c3RkOjpwYWlyPGRvdWJsZSwgVGlsZUluZGV4Pj4gdG9SZW1vdmU7Ci0gICAgZm9yIChhdXRvIHRp
bGUgOiBtX3RpbGVzKSB7CisgICAgZm9yIChhdXRvJiB0aWxlIDogbV90aWxlcykgewogICAgICAg
ICBUaWxlSW5kZXgmIGluZGV4ID0gdGlsZS5rZXk7CiAgICAgICAgIEludFJlY3QgdGlsZVJlY3Qg
PSB0aWxlLnZhbHVlLT5yZWN0KCk7CiAgICAgICAgIGRvdWJsZSBkaXN0YW5jZSA9IHRpbGVEaXN0
YW5jZTIodmlzaWJsZVJlY3QsIHRpbGVSZWN0KTsKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIFRp
bGVHcmlkOjpkcm9wSW52YWxpZFRpbGVzKCkKICAgICBJbnRSZWN0IGJvdW5kcyA9IHRoaXMtPmJv
dW5kcygpOwogICAgIEludFJlY3QgZHJvcEJvdW5kcyA9IGludGVyc2VjdGlvbihtX3ZhbGlkQm91
bmRzLCBib3VuZHMpOwogICAgIFZlY3RvcjxUaWxlSW5kZXg+IHRvUmVtb3ZlOwotICAgIGZvciAo
YXV0byB0aWxlIDogbV90aWxlcykgeworICAgIGZvciAoYXV0byYgdGlsZSA6IG1fdGlsZXMpIHsK
ICAgICAgICAgVGlsZUluZGV4JiBpbmRleCA9IHRpbGUua2V5OwogICAgICAgICBJbnRSZWN0IHRp
bGVSZWN0ID0gdGlsZS52YWx1ZS0+cmVjdCgpOwogICAgICAgICBJbnRSZWN0IGV4cGVjdGVkVGls
ZVJlY3QgPSB0aWxlUmVjdEZvckluZGV4KGluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHAKaW5kZXggMGI0ZTU5ZDQ4NDM5ZDVh
ZDI5NGY5OTBkOGVhZjgwNmUyMjczODlmNi4uMGJiMDY2YWQ3ODQ1NDJjOGJjZGU0N2NjNjg4ZTZh
MjQ1NmU5ZWUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZS5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
cmVtb3ZlRnJvbUNhY2hlQW5kSW52YWxpZGF0ZURlcGVuZGVuY2llcyhSZW5kZXJPYmplY3QmIG9i
amVjdAogICAgIEhhc2hTZXQ8U1ZHRWxlbWVudCo+KiBkZXBlbmRlbmNpZXMgPSBvYmplY3QuZG9j
dW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnNldE9mRWxlbWVudHNSZWZlcmVuY2luZ1Rh
cmdldCh0b1NWR0VsZW1lbnQob2JqZWN0Lm5vZGUoKSkpOwogICAgIGlmICghZGVwZW5kZW5jaWVz
KQogICAgICAgICByZXR1cm47Ci0gICAgZm9yIChhdXRvIGVsZW1lbnQgOiAqZGVwZW5kZW5jaWVz
KSB7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogKmRlcGVuZGVuY2llcykgewogICAgICAgICBp
ZiAoYXV0byByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBSZW5k
ZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9u
KCpyZW5kZXJlciwgbmVlZHNMYXlvdXQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAKaW5k
ZXggMmQ4YTczMTM4YWYzODc2NmFiNDM2ZjgxODE4MWMzMGE1MzYwNmNmNi4uMjU1ZTNmYWI2NWZk
NjMyMmVjNDllNGVkMTg0MjBlODQ2NjA1ZDQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAKQEAg
LTk4LDcgKzk4LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6bWFya0FsbENs
aWVudHNGb3JJbnZhbGlkYXRpb24oSW52YWxpZGF0aW9uTW9kZQogICAgIGJvb2wgbmVlZHNMYXlv
dXQgPSBtb2RlID09IExheW91dEFuZEJvdW5kYXJpZXNJbnZhbGlkYXRpb247CiAgICAgYm9vbCBt
YXJrRm9ySW52YWxpZGF0aW9uID0gbW9kZSAhPSBQYXJlbnRPbmx5SW52YWxpZGF0aW9uOwogCi0g
ICAgZm9yIChhdXRvIGNsaWVudCA6IG1fY2xpZW50cykgeworICAgIGZvciAoYXV0byYgY2xpZW50
IDogbV9jbGllbnRzKSB7CiAgICAgICAgIGlmIChjbGllbnQtPmlzU1ZHUmVzb3VyY2VDb250YWlu
ZXIoKSkgewogICAgICAgICAgICAgY2xpZW50LT50b1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVy
KCktPnJlbW92ZUFsbENsaWVudHNGcm9tQ2FjaGUobWFya0ZvckludmFsaWRhdGlvbik7CiAgICAg
ICAgICAgICBjb250aW51ZTsKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291
cmNlQ29udGFpbmVyOjptYXJrQWxsQ2xpZW50c0ZvckludmFsaWRhdGlvbihJbnZhbGlkYXRpb25N
b2RlCiB2b2lkIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyOjptYXJrQWxsQ2xpZW50TGF5ZXJz
Rm9ySW52YWxpZGF0aW9uKCkKIHsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0gICAgZm9yIChh
dXRvIGNsaWVudExheWVyIDogbV9jbGllbnRMYXllcnMpCisgICAgZm9yIChhdXRvJiBjbGllbnRM
YXllciA6IG1fY2xpZW50TGF5ZXJzKQogICAgICAgICBjbGllbnRMYXllci0+ZmlsdGVyTmVlZHNS
ZXBhaW50KCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlclN1cHBvcnQuY3BwCmluZGV4IDk2MDI5MjdmMjlmMGM3M2JjOTdhMGRmNzVhYzgz
YjMyNTM3N2E0ZmYuLmRjNzViNWYzNmNjZjEzNGMzZWY5OGU1YmUzZjU3ZWExMDBjOTY3ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNw
cApAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6bGF5b3V0Q2hpbGRy
ZW4oUmVuZGVyRWxlbWVudCYgc3RhcnQsIGJvb2wgc2VsZk5lZWRzTGF5b3V0CiAgICAgfQogCiAg
ICAgLy8gSWYgdGhlIGxheW91dCBzaXplIGNoYW5nZWQsIGludmFsaWRhdGUgYWxsIHJlc291cmNl
cyBvZiBhbGwgY2hpbGRyZW4gdGhhdCBkaWRuJ3QgZ28gdGhyb3VnaCB0aGUgbGF5b3V0KCkgY29k
ZSBwYXRoLgotICAgIGZvciAoYXV0byBjaGlsZCA6IG5vdGxheW91dGVkT2JqZWN0cykKKyAgICBm
b3IgKGF1dG8mIGNoaWxkIDogbm90bGF5b3V0ZWRPYmplY3RzKQogICAgICAgICBpbnZhbGlkYXRl
UmVzb3VyY2VzT2ZDaGlsZHJlbigqY2hpbGQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0N5Y2xlU29sdmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuY3BwCmluZGV4IGM2
Nzc2ZjY2NzM2ZDYyYWU2NzQ3MGE4YjllMjVkYTNkYTRmNTlhYzIuLmE5NTUzOTcyZWZhZDZhZDk2
MDk2OTk1ZmQzM2Q2ODhiMDcyYzRmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuY3BwCkBAIC01Nyw3ICs1Nyw3
IEBAIGJvb2wgU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXI6OnJlc291cmNlQ29udGFpbnNDeWNsZXMo
UmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpIGNvCiAgICAgICAgIHJlc291cmNlcy0+YnVpbGRTZXRP
ZlJlc291cmNlcyhyZXNvdXJjZVNldCk7CiAKICAgICAgICAgLy8gV2FsayBhbGwgcmVzb3VyY2Vz
IGFuZCBjaGVjayB3aGV0ZXIgdGhleSByZWZlcmVuY2UgYW55IHJlc291cmNlIGNvbnRhaW5lZCBp
biB0aGUgcmVzb3VyY2VzIHNldC4KLSAgICAgICAgZm9yIChhdXRvIHJlc291cmNlIDogcmVzb3Vy
Y2VTZXQpIHsKKyAgICAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IHJlc291cmNlU2V0KSB7CiAg
ICAgICAgICAgICBpZiAobV9hbGxSZXNvdXJjZXMuY29udGFpbnMocmVzb3VyY2UpKQogICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAppbmRleCA4YmI2MTUwNDg5M2UwNTlhNDFhZmRj
ZmI3MTVmYTYyOGQxNzc4Y2QyLi45OTk4MWQxMzgxMDg4NGY4Y2FjMjBmMDZjOTU4YjgxNmZjN2Ix
MTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5j
cHAKQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjphcHBs
eVJlc3VsdHNUb1RhcmdldCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIC4uLmV4Y2VwdCBp
biBjYXNlIHdoZXJlIHdlIGhhdmUgYWRkaXRpb25hbCBpbnN0YW5jZXMgaW4gPHVzZT4gdHJlZXMu
Ci0gICAgZm9yIChhdXRvIGluc3RhbmNlIDogdGFyZ2V0RWxlbWVudC0+aW5zdGFuY2VzRm9yRWxl
bWVudCgpKSB7CisgICAgZm9yIChhdXRvJiBpbnN0YW5jZSA6IHRhcmdldEVsZW1lbnQtPmluc3Rh
bmNlc0ZvckVsZW1lbnQoKSkgewogICAgICAgICBTVkdFbGVtZW50KiBzaGFkb3dUcmVlRWxlbWVu
dCA9IGluc3RhbmNlLT5zaGFkb3dUcmVlRWxlbWVudCgpOwogICAgICAgICBBU1NFUlQoc2hhZG93
VHJlZUVsZW1lbnQpOwogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0qIHRyYW5zZm9ybSA9IHNoYWRv
d1RyZWVFbGVtZW50LT5zdXBwbGVtZW50YWxUcmFuc2Zvcm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aEVsZW1lbnQuY3BwCmluZGV4IDNmM2EwOGYxOGM1NmMxMzEyYjJmYzExNDFkMDE2Zjc1YzNj
OWJmZjAuLjNkNTlkOGZhOWE2NjMzYjE4ZGVmMWFiODhjZWNhNjY3NjU4MjNkNGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcApAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgU1ZH
UGF0aEVsZW1lbnQ6OmludmFsaWRhdGVNUGF0aERlcGVuZGVuY2llcygpCiAgICAgLy8gPG1wYXRo
PiBjYW4gb25seSByZWZlcmVuY2UgPHBhdGg+IGJ1dCB0aGlzIGRlcGVuZGVuY3kgaXMgbm90IGhh
bmRsZWQgaW4KICAgICAvLyBtYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRp
b24gc28gd2UgdXBkYXRlIGFueSBtcGF0aCBkZXBlbmRlbmNpZXMgbWFudWFsbHkuCiAgICAgaWYg
KEhhc2hTZXQ8U1ZHRWxlbWVudCo+KiBkZXBlbmRlbmNpZXMgPSBkb2N1bWVudCgpLmFjY2Vzc1NW
R0V4dGVuc2lvbnMoKS0+c2V0T2ZFbGVtZW50c1JlZmVyZW5jaW5nVGFyZ2V0KHRoaXMpKSB7Ci0g
ICAgICAgIGZvciAoYXV0byBlbGVtZW50IDogKmRlcGVuZGVuY2llcykgeworICAgICAgICBmb3Ig
KGF1dG8mIGVsZW1lbnQgOiAqZGVwZW5kZW5jaWVzKSB7CiAgICAgICAgICAgICBpZiAoZWxlbWVu
dC0+aGFzVGFnTmFtZShTVkdOYW1lczo6bXBhdGhUYWcpKQogICAgICAgICAgICAgICAgIHRvU1ZH
TVBhdGhFbGVtZW50KGVsZW1lbnQpLT50YXJnZXRQYXRoQ2hhbmdlZCgpOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBlYjk5YTRhZWViOTQyYjIwZjU4
ZTNkODU1ZDhjMjdjNmM5NmEyY2RmLi4wMjkwYjU4OTNlZTEwY2I0MTg3OWNiYTIxNzBiZDcyZTA3
ZWZmZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTkwNCw3ICs5
MDQsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcikKIAogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9
IGRvY3VtZW50LT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAKLSAgICBmb3IgKGF1dG8gbm9k
ZSA6IG5vZGVzVmVjdG9yKSB7CisgICAgZm9yIChhdXRvJiBub2RlIDogbm9kZXNWZWN0b3IpIHsK
ICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBjcmVhdGVEZWZhdWx0UGFyYWdyYXBo
RWxlbWVudCgqZG9jdW1lbnQpOwogICAgICAgICBlbGVtZW50LT5hcHBlbmRDaGlsZChub2RlLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGVsZW1l
bnQucmVsZWFzZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDcm9zc1RocmVhZENvcGllci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCmluZGV4IGM3YjA2NjljNGIxNTVmYjk4NjBh
MmZkZjcyZDg0NDBhZWI2YTE0ODMuLjA0NWNlYzQ5YzQxNzc0YzQxNTQ5ZTRlZDVkYTE0YWQwYmVl
ODJlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDcm9zc1RocmVhZENv
cGllci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNyb3NzVGhyZWFkQ29waWVy
LmNwcApAQCAtNjMsOSArNjMsOSBAQCBWZWN0b3I8VmVjdG9yPElEQktleURhdGE+PiBDcm9zc1Ro
cmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBWZWN0b3I8VmVjdG9yPElEQgogewogICAgIFZl
Y3RvcjxWZWN0b3I8SURCS2V5RGF0YT4+IHJlc3VsdDsKIAotICAgIGZvciAoYXV0byBrZXlzIDog
dmVjdG9yKSB7CisgICAgZm9yIChhdXRvJiBrZXlzIDogdmVjdG9yKSB7CiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoVmVjdG9yPElEQktleURhdGE+KCkpOwotICAgICAgICBmb3IgKGF1dG8ga2V5IDog
a2V5cykKKyAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKQogICAgICAgICAgICAgcmVzdWx0
Lmxhc3QoKS5hcHBlbmQoV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8SURCS2V5RGF0YT46OmNv
cHkoa2V5KSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9S
ZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQppbmRleCA3ZGQ1MmI2MDk3MWQ1MWVmNjIzYTc3YTRi
MDc3MzczZDg1NDMwNTc4Li4xOTlhYTlmYjljYTIyOGIyY2IyODgxN2JmODY5YzM2ZjkzYTQ4YjQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmUubW0KQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjplbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oQ0dDb250ZXh0UmVmIGNvbnRleHQsIHZvaQog
ICAgIGludmVyc2VUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybVNjYWxlKGludmVyc2VUcmFu
c2Zvcm0sIG1fc2NhbGUsIC1tX3NjYWxlKTsKICAgICBpbnZlcnNlVHJhbnNmb3JtID0gQ0dBZmZp
bmVUcmFuc2Zvcm1UcmFuc2xhdGUoaW52ZXJzZVRyYW5zZm9ybSwgMCwgLW1fc2l6ZS5oZWlnaHQo
KSk7CiAKLSAgICBmb3IgKGF1dG8gcmVjdCA6IG1fcGFpbnRpbmdSZWN0cykgeworICAgIGZvciAo
YXV0byYgcmVjdCA6IG1fcGFpbnRpbmdSZWN0cykgewogICAgICAgICBDR1JlY3QgcmVjdFRvRHJh
dyA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKHJlY3QsIGludmVyc2VUcmFuc2Zvcm0pOwog
ICAgICAgICBibG9jayhyZWN0VG9EcmF3KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tCmlu
ZGV4IGVhMzVhNzY3MGE5ZThkYWQ3Y2YzN2ExZTlkMTY3OGJhOTdiZjNiM2YuLjNlYzM4Mzc2NzBj
NTZjNWFkODZjNzdlOWIwZjI2NzJkZGUzNTAyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tCkBA
IC0xMDIsNyArMTAyLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OmFw
cGx5UHJvcGVydGllc1RvTGF5ZXIoQ0FMYXllciAqbGF5ZXIsIFJlbW8KIAogICAgIGlmIChwcm9w
ZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkNo
aWxkcmVuQ2hhbmdlZCkgewogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGNoaWxk
cmVuID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnBy
b3BlcnRpZXMuY2hpbGRyZW4uc2l6ZSgpXSk7Ci0gICAgICAgIGZvciAoYXV0byBjaGlsZCA6IHBy
b3BlcnRpZXMuY2hpbGRyZW4pCisgICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiBwcm9wZXJ0aWVz
LmNoaWxkcmVuKQogICAgICAgICAgICAgW2NoaWxkcmVuIGFkZE9iamVjdDpyZWxhdGVkTGF5ZXJz
LmdldChjaGlsZCldOwogICAgICAgICBsYXllci5zdWJsYXllcnMgPSBjaGlsZHJlbi5nZXQoKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbi5tbQppbmRleCBkOTkzZWQwMDY5YTM0YjNjMDdmMzU3MGZlYmVkMGFh
OTkxZDBmMGNmLi4yMDFjYzUyY2Y5YjQ0YzM5Mjc0YTVmMmQzOWUwNTZiNjA0MzAwNGU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24ubW0KQEAgLTE5NCw3ICsxOTQsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZAog
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jaGlsZHJlbikpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgZm9yIChhdXRvIGxheWVySUQgOiByZXN1bHQuY2hp
bGRyZW4pIHsKKyAgICAgICAgZm9yIChhdXRvJiBsYXllcklEIDogcmVzdWx0LmNoaWxkcmVuKSB7
CiAgICAgICAgICAgICBpZiAoIWxheWVySUQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CkBAIC0zNjAsNyArMzYwLDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVMYXkK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2Rlc3Ryb3llZExheWVySURzKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZm9yIChhdXRvIGxheWVySUQgOiByZXN1bHQubV9k
ZXN0cm95ZWRMYXllcklEcykgeworICAgIGZvciAoYXV0byYgbGF5ZXJJRCA6IHJlc3VsdC5tX2Rl
c3Ryb3llZExheWVySURzKSB7CiAgICAgICAgIGlmICghbGF5ZXJJRCkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkBAIC01ODIsNyArNTgyLDcgQEAgc3RhdGljIHZvaWQgZHVtcENo
YW5nZWRMYXllcnMoUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEhhc2hNYXA8
R3JhcGgKICAgICBjb3B5S2V5c1RvVmVjdG9yKGNoYW5nZWRMYXllclByb3BlcnRpZXMsIGxheWVy
SURzKTsKICAgICBzdGQ6OnNvcnQobGF5ZXJJRHMuYmVnaW4oKSwgbGF5ZXJJRHMuZW5kKCkpOwog
Ci0gICAgZm9yIChhdXRvIGxheWVySUQgOiBsYXllcklEcykgeworICAgIGZvciAoYXV0byYgbGF5
ZXJJRCA6IGxheWVySURzKSB7CiAgICAgICAgIGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjpMYXllclByb3BlcnRpZXMmIGxheWVyUHJvcGVydGllcyA9IGNoYW5nZWRMYXllclByb3Bl
cnRpZXMuZ2V0KGxheWVySUQpOwogCiAgICAgICAgIHRzIDw8ICJcbiI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggNzEwNDdmMzAyODliZjAyMjU0YTlkZGYy
NjQwNmU1ZjE3Zjk4OWE1MS4uMjA1YTBmMDZjOWUzYzRlZTlmNmQ1YTgwYTBmMWQyM2U1MzczZDY2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtMzksNyAr
MzksNyBAQCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBybwogCiB2b2lkIEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmludmFsaWRhdGVSZXF1ZXN0cygpCiB7Ci0gICAgZm9y
IChhdXRvIHJlcXVlc3QgOiBtX3BlbmRpbmdSZXF1ZXN0cy52YWx1ZXMoKSkKKyAgICBmb3IgKGF1
dG8mIHJlcXVlc3QgOiBtX3BlbmRpbmdSZXF1ZXN0cy52YWx1ZXMoKSkKICAgICAgICAgcmVxdWVz
dC0+aW52YWxpZGF0ZSgpOwogCiAgICAgbV9wZW5kaW5nUmVxdWVzdHMuY2xlYXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcAppbmRleCBlOWI4ZDhjZWIyZjdhYzdjZmM5ZTNhMjIzMjAyZWE1MzVkYTE4ZjI2Li4w
YjJhNjMyOTc4ZGI3Y2I0ZTNhYzVlODE4NDMxODkyY2MxNjk1NGU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3Bw
CkBAIC00MCw3ICs0MCw3IEBAIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5OjpOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQCiAKIHZvaWQgTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmludmFsaWRhdGVSZXF1ZXN0cygp
CiB7Ci0gICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX3BlbmRpbmdSZXF1ZXN0cy52YWx1ZXMoKSkK
KyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3BlbmRpbmdSZXF1ZXN0cy52YWx1ZXMoKSkKICAg
ICAgICAgcmVxdWVzdC0+aW52YWxpZGF0ZSgpOwogCiAgICAgbV9wZW5kaW5nUmVxdWVzdHMuY2xl
YXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcvUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4IDBj
YjlmNzJkZmVkYmVkMmYxMjc3NmU5MjAyNzM3MmJlYTBlMDFkODYuLmI4ZmIxNmZiM2E1OGZhNjc5
ZTRiYmM1NTA0NDE1ZmYxNDk5MjVkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclByb3h5LmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHk6OnVwZGF0ZVNjcm9sbGluZ1RyZWUoY29uc3QgUmVtb3RlU2Nyb2xsaW5nQwog
CiB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNvbm5lY3RTdGF0ZU5vZGVM
YXllcnMoU2Nyb2xsaW5nU3RhdGVUcmVlJiBzdGF0ZVRyZWUsIGNvbnN0IFJlbW90ZUxheWVyVHJl
ZUhvc3QmIGxheWVyVHJlZUhvc3QpCiB7Ci0gICAgZm9yIChhdXRvIGl0IDogc3RhdGVUcmVlLm5v
ZGVNYXAoKSkgeworICAgIGZvciAoYXV0byYgaXQgOiBzdGF0ZVRyZWUubm9kZU1hcCgpKSB7CiAg
ICAgICAgIFNjcm9sbGluZ1N0YXRlTm9kZSogY3Vyck5vZGUgPSBpdC52YWx1ZTsKICAgICAgICAg
c3dpdGNoIChjdXJyTm9kZS0+bm9kZVR5cGUoKSkgewogICAgICAgICBjYXNlIFNjcm9sbGluZ05v
ZGU6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAppbmRleCBlMjI3NjJk
YTEyOWYzM2FkNWEyNWVlNzExZmQ0MDJhYzg1MThjNmMxLi4yM2YxYzQxNTY4ZmY0YzUyMDE2OWQw
MjA3OWVjMDhjNjk4YTZjODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQu
Y3BwCkBAIC04MDcsNyArODA3LDcgQEAgdm9pZCBXZWJDb250ZXh0Ojpwb3N0TWVzc2FnZVRvSW5q
ZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmoKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGZvciAoYXV0byBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsK
KyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgewogICAgICAgICAvLyBGSVhN
RTogUmV0dXJuIGVhcmx5IGlmIHRoZSBtZXNzYWdlIGJvZHkgY29udGFpbnMgYW55IHJlZmVyZW5j
ZXMgdG8gV0tQYWdlUmVmcy9XS0ZyYW1lUmVmcyBldGMuIHNpbmNlIHRoZXkncmUgbG9jYWwgdG8g
YSBwcm9jZXNzLgogICAgICAgICBJUEM6OkFyZ3VtZW50RW5jb2RlciBtZXNzYWdlRGF0YTsKICAg
ICAgICAgbWVzc2FnZURhdGEuZW5jb2RlKG1lc3NhZ2VOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQppbmRleCA4M2U3M2Yy
YjhjYTc5ZGIwYTAxMzFhNGE0YzQyMDdiOTI1ZGEzZWM1Li5lMmY0ZWQ5YjVlM2QwMTVkNTkyMjBl
MTkyYzExYmNlNjQ2ZTc3MTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgUmVtb3Rl
TGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJUcmVlKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uJiB0cmFuCiB7CiAgICAgTE9HKFJlbW90ZUxheWVyVHJlZSwgIiVzIiwgdHJhbnNhY3Rp
b24uZGVzY3JpcHRpb24oKS5kYXRhKCkpOwogCi0gICAgZm9yIChhdXRvIGNyZWF0ZWRMYXllciA6
IHRyYW5zYWN0aW9uLmNyZWF0ZWRMYXllcnMoKSkKKyAgICBmb3IgKGF1dG8mIGNyZWF0ZWRMYXll
ciA6IHRyYW5zYWN0aW9uLmNyZWF0ZWRMYXllcnMoKSkKICAgICAgICAgY3JlYXRlTGF5ZXIoY3Jl
YXRlZExheWVyKTsKIAogICAgIENBTGF5ZXIgKnJvb3RMYXllciA9IGdldExheWVyKHRyYW5zYWN0
aW9uLnJvb3RMYXllcklEKCkpOwpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVyVHJlZShjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYg
dHJhbgogICAgICAgICBtX3dlYlBhZ2VQcm94eS0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jv
b3RMYXllcihtX3Jvb3RMYXllcik7CiAgICAgfQogCi0gICAgZm9yIChhdXRvIGNoYW5nZWRMYXll
ciA6IHRyYW5zYWN0aW9uLmNoYW5nZWRMYXllcnMoKSkgeworICAgIGZvciAoYXV0byYgY2hhbmdl
ZExheWVyIDogdHJhbnNhY3Rpb24uY2hhbmdlZExheWVycygpKSB7CiAgICAgICAgIGF1dG8gbGF5
ZXJJRCA9IGNoYW5nZWRMYXllci5rZXk7CiAgICAgICAgIGNvbnN0IGF1dG8mIHByb3BlcnRpZXMg
PSBjaGFuZ2VkTGF5ZXIudmFsdWU7CiAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBSZW1vdGVMYXll
clRyZWVIb3N0Ojp1cGRhdGVMYXllclRyZWUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24mIHRyYW4KIAogICAgICAgICBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OlJlbGF0
ZWRMYXllck1hcCByZWxhdGVkTGF5ZXJzOwogICAgICAgICBpZiAocHJvcGVydGllcy5jaGFuZ2Vk
UHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpDaGlsZHJlbkNoYW5nZWQp
IHsKLSAgICAgICAgICAgIGZvciAoYXV0byBjaGlsZCA6IHByb3BlcnRpZXMuY2hpbGRyZW4pCisg
ICAgICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDogcHJvcGVydGllcy5jaGlsZHJlbikKICAgICAg
ICAgICAgICAgICByZWxhdGVkTGF5ZXJzLnNldChjaGlsZCwgZ2V0TGF5ZXIoY2hpbGQpKTsKICAg
ICAgICAgfQogCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlSG9zdDo6dXBk
YXRlTGF5ZXJUcmVlKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiB0cmFuCiAgICAg
ICAgIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6YXBwbHlQcm9wZXJ0aWVzVG9MYXll
cihsYXllciwgcHJvcGVydGllcywgcmVsYXRlZExheWVycyk7CiAgICAgfQogCi0gICAgZm9yIChh
dXRvIGRlc3Ryb3llZExheWVyIDogdHJhbnNhY3Rpb24uZGVzdHJveWVkTGF5ZXJzKCkpCisgICAg
Zm9yIChhdXRvJiBkZXN0cm95ZWRMYXllciA6IHRyYW5zYWN0aW9uLmRlc3Ryb3llZExheWVycygp
KQogICAgICAgICBtX2xheWVycy5yZW1vdmUoZGVzdHJveWVkTGF5ZXIpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5lY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5lY3Rpb24u
bW0KaW5kZXggODBlYzJmNTU1ODBjNTkyNjFlNTFhODRhMzMzMzNkMmFjODNlYjZjOS4uMTUxZjA1
NmI4YTllNjRmOThiMzkwMjY5NjhmNDRkMTQ0YWY1ZDkwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5tbQpAQCAtODAs
NyArODAsNyBAQCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpXaW5kb3dTZXJ2ZXJDb25uZWN0aW9u
KCkKICAgICAgICAgeyBXS09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbldpbmRv
d01vZGlmaWNhdGlvbnNTdG9wcGVkLCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9w
cGVkLCAiQXBwbGljYXRpb24gV2luZG93IE1vZGlmaWNhdGlvbnMgU3RvcHBlZCIgfSwKICAgICB9
OwogCi0gICAgZm9yIChhdXRvIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIgOiBvY2NsdXNp
b25Ob3RpZmljYXRpb25IYW5kbGVycykgeworICAgIGZvciAoYXV0byYgb2NjbHVzaW9uTm90aWZp
Y2F0aW9uSGFuZGxlciA6IG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKSB7CiAgICAgICAg
IGJvb2wgcmVzdWx0ID0gV0tSZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIob2Nj
bHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlci5ub3RpZmljYXRpb25UeXBlLCBvY2NsdXNpb25Ob3Rp
ZmljYXRpb25IYW5kbGVyLmhhbmRsZXIpOwogICAgICAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsK
ICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXN1bHQsICJSZWdpc3RyYXRpb24gb2YgXCIl
c1wiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIsIG9jY2x1c2lvbk5vdGlmaWNhdGlv
bkhhbmRsZXIubmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlv
bi5jcHAKaW5kZXggZjkwOWNkZGNiZmU1YmNiMGIzOWJjMzRlMjIzOWIzN2VkMmQ3NzM1MC4uMjA3
NDI5ODBjYjcwOGRiMWVmNmFlZWM0ZWFhZjQ5ZjA2NDYzM2E3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4
ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMzIxLDkgKzMyMSw5IEBAIHZvaWQg
V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6cHV0KElEQlRyYW5zYWN0aW9uQmFja2VuZCYgdHJhbnNh
Y3Rpb24sIGNvbnN0IFB1dE9wCiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIHZhbHVlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG9wZXJhdGlvbi52YWx1ZSgpLT5kYXRhKCkpLCBvcGVy
YXRpb24udmFsdWUoKS0+c2l6ZSgpKTsKIAogICAgIFZlY3RvcjxWZWN0b3I8SURCS2V5RGF0YT4+
IGluZGV4S2V5czsKLSAgICBmb3IgKGF1dG8ga2V5cyA6IG9wZXJhdGlvbi5pbmRleEtleXMoKSkg
eworICAgIGZvciAoYXV0byYga2V5cyA6IG9wZXJhdGlvbi5pbmRleEtleXMoKSkgewogICAgICAg
ICBpbmRleEtleXMuYXBwZW5kKFZlY3RvcjxJREJLZXlEYXRhPigpKTsKLSAgICAgICAgZm9yIChh
dXRvIGtleSA6IGtleXMpCisgICAgICAgIGZvciAoYXV0byYga2V5IDoga2V5cykKICAgICAgICAg
ICAgIGluZGV4S2V5cy5sYXN0KCkuYXBwZW5kKElEQktleURhdGEoa2V5LmdldCgpKSk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKaW5kZXggMjUxMTNhNDZlMGVkZjI5MDRk
OWQ2M2ZkMjgxMDA2MDI5ZmFhZWE5ZC4uODU5NDIyMzE0YjRiMWVjZDIyODgxNGQ3Njk0MDI1YzIy
NDhmNzg5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcApAQCAtMTA0LDcgKzEwNCw3
IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9u
KFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uCiAgICAgaWYgKG1fcHJvcGVydGllcy5jaGFuZ2Vk
UHJvcGVydGllcyAhPSBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Tm9DaGFuZ2UpIHsKICAg
ICAgICAgaWYgKG1fcHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpDaGlsZHJlbkNoYW5nZWQpIHsKICAgICAgICAgICAgIG1fcHJvcGVydGll
cy5jaGlsZHJlbi5jbGVhcigpOwotICAgICAgICAgICAgZm9yIChhdXRvIGxheWVyIDogbV9jaGls
ZHJlbikKKyAgICAgICAgICAgIGZvciAoYXV0byYgbGF5ZXIgOiBtX2NoaWxkcmVuKQogICAgICAg
ICAgICAgICAgIG1fcHJvcGVydGllcy5jaGlsZHJlbi5hcHBlbmQobGF5ZXItPmxheWVySUQoKSk7
CiAgICAgICAgIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>