From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v3 2/5] x86/clang: fix build with indirect thunks Date: Mon, 29 Jan 2018 12:26:40 +0000 Message-ID: <20180129122643.13008-3-roger.pau@citrix.com> References: <20180129122643.13008-1-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eg8Yy-0002bG-3k for xen-devel@lists.xenproject.org; Mon, 29 Jan 2018 12:29:28 +0000 In-Reply-To: <20180129122643.13008-1-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Jan Beulich , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org VGhlIGJ1aWxkIHdpdGggY2xhbmcgaXMgY3VycmVudGx5IGJyb2tlbiBiZWNhdXNlIGNsYW5nIGlu dGVncmF0ZWQKYXNzZW1ibGVyIHJlcXVpcmVzIGFzbSBtYWNyb3MgdG8gYmUgZGVjbGFyZWQgaW5z aWRlIHRoZSBzYW1lIGlubGluZQphc20gZGVjbGFyYXRpb24gd2hlcmUgdGhleSBhcmUgdXNlZC4K CkluIG9yZGVyIHRvIGZpeCB0aGlzIGFsd2F5cyBpbmNsdWRlIGluZGlyZWN0X3RodW5rX2FzbS5o IGluIHRoZSBzYW1lCmFzbSBkZWNsYXJhdGlvbiB3aGVyZSBpdCdzIGJlaW5nIHVzZWQuCgpUaGlz IGhhcyBiZWVuIHJlcG9ydGVkIHRvIHVwc3RyZWFtIGNsYW5nIGF0OgoKaHR0cHM6Ly9idWdzLmxs dm0ub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjExMAoKVGhpcyBjaGFuZ2UgaGFzIGJlZW4gdGVzdGVk IHdpdGggY2xhbmcgMy41LCBjbGFuZyA2LjAgYW5kIGdjYyA2LjQuMC4KClNpZ25lZC1vZmYtYnk6 IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgotLS0KQ2M6IEFuZHJldyBD b29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBHZW9yZ2UgRHVubGFwIDxHZW9y Z2UuRHVubGFwQGV1LmNpdHJpeC5jb20+CkNjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUu Y2l0cml4LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEtvbnJh ZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KQ2M6IFN0ZWZhbm8gU3Rh YmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KQ2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4u b3JnPgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0tCkNoYW5nZXMgc2luY2Ug djE6CiAtIFVzZSBhcy1pbnNuIHRvIGNoZWNrIGlmIHRoZSBhc3NlbWJsZXIgc3VwcG9ydHMgLmlu Y2x1ZGUuCiAtIE9wZW4gY29kZSBhIGNoZWNrIGZvciB3aGV0aGVyIHRoZSBhc3NlbWJsZXIgZm9y Z2V0cyAubWFjcm8tcwogICBiZXR3ZWVuIGFzbSgpLXMuCi0tLQogQ29uZmlnLm1rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgNyArKystLS0tCiB4ZW4vUnVsZXMubWsgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICA2ICsrKystLQogeGVuL2FyY2gveDg2L1J1bGVzLm1rICAgICAg ICAgICAgICAgICAgfCAxNyArKysrKysrKysrKysrKy0tLQogeGVuL2FyY2gveDg2L2V4dGFibGUu YyAgICAgICAgICAgICAgICAgfCAgMyArKy0KIHhlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZf ZW11bGF0ZS5jIHwgIDMgKystCiB4ZW4vY29tbW9uL3dhaXQuYyAgICAgICAgICAgICAgICAgICAg ICB8ICAxICsKIHhlbi9pbmNsdWRlL2FzbS14ODYvYXNtX2RlZm5zLmggICAgICAgIHwgMjggKysr KysrKysrKysrKysrKysrKysrKysrKy0tLQogNyBmaWxlcyBjaGFuZ2VkLCA1MSBpbnNlcnRpb25z KCspLCAxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Db25maWcubWsgYi9Db25maWcubWsK aW5kZXggNTFhZGMyN2Q4My4uYzU1ZjAyM2YzNSAxMDA2NDQKLS0tIGEvQ29uZmlnLm1rCisrKyBi L0NvbmZpZy5tawpAQCAtMTU3LDE3ICsxNTcsMTYgQEAgaWZuZGVmIFhFTl9IQVNfQ0hFQ0tQT0xJ Q1kKIGVuZGlmCiAKICMgYXMtaW5zbjogQ2hlY2sgd2hldGhlciBhc3NlbWJsZXIgc3VwcG9ydHMg YW4gaW5zdHJ1Y3Rpb24uCi0jIFVzYWdlOiBjZmxhZ3MteSArPSAkKGNhbGwgYXMtaW5zbiAiaW5z biIsb3B0aW9uLXllcyxvcHRpb24tbm8pCisjIFVzYWdlOiBjZmxhZ3MteSArPSAkKGNhbGwgYXMt aW5zbiBjYywiaW5zbiIsb3B0aW9uLXllcyxvcHRpb24tbm8sRkxBR1MpCiBhcy1pbnNuID0gJChp ZiAkKHNoZWxsIGVjaG8gJ3ZvaWQgXyh2b2lkKSB7IGFzbSB2b2xhdGlsZSAoICQoMikgKTsgfScg XAotICAgICAgICAgICAgICAgICAgICAgICB8ICQoMSkgJChmaWx0ZXItb3V0IC1NJSAlLmQgLWlu Y2x1ZGUgJS9pbmNsdWRlL3hlbi9jb25maWcuaCwkKEFGTEFHUykpIFwKKyAgICAgICAgICAgICAg ICAgICAgICAgfCAkKDEpICQoZmlsdGVyLW91dCAtTSUgJS5kIC1pbmNsdWRlICUvaW5jbHVkZS94 ZW4vY29uZmlnLmgsJCg1KSkgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWMgLXgg YyAtbyAvZGV2L251bGwgLSAyPiYxKSwkKDQpLCQoMykpCi0KICMgYXMtaW5zbi1jaGVjazogQWRk IGFuIG9wdGlvbiB0byBjb21waWxhdGlvbiBmbGFncywgYnV0IG9ubHkgaWYgaW5zbiBpcwogIyAg ICAgICAgICAgICAgICBzdXBwb3J0ZWQgYnkgYXNzZW1ibGVyLgogIyBVc2FnZTogJChjYWxsIGFz LWluc24tY2hlY2sgQ0ZMQUdTLENDLCJub3AiLC1ESEFWRV9HQVNfTk9QKQogYXMtaW5zbi1jaGVj ayA9ICQoZXZhbCAkKGNhbGwgYXMtaW5zbi1jaGVjay1jbG9zdXJlLCQoMSksJCgyKSwkKDMpLCQo NCkpKQogZGVmaW5lIGFzLWluc24tY2hlY2stY2xvc3VyZQotICAgIGlmZXEgKCQkKGNhbGwgYXMt aW5zbiwkJCgkKDIpKSwkKDMpLHksbikseSkKKyAgICBpZmVxICgkJChjYWxsIGFzLWluc24sJCQo JCgyKSksJCgzKSx5LG4sJCQoQUZMQUdTKSkseSkKICAgICAgICAgJCgxKSArPSAkKDQpCiAgICAg ZW5kaWYKIGVuZGVmCmRpZmYgLS1naXQgYS94ZW4vUnVsZXMubWsgYi94ZW4vUnVsZXMubWsKaW5k ZXggM2NmNDA3NTRhNi4uMjA1ZjBhZmYzMCAxMDA2NDQKLS0tIGEveGVuL1J1bGVzLm1rCisrKyBi L3hlbi9SdWxlcy5tawpAQCAtNjYsOCArNjYsMTAgQEAgZW5kaWYKIAogQUZMQUdTLXkgICAgICAg ICAgICAgICAgKz0gLURfX0FTU0VNQkxZX18KIAotIyBDbGFuZydzIGJ1aWx0LWluIGFzc2VtYmxl ciBjYW4ndCBoYW5kbGUgZW1iZWRkZWQgLmluY2x1ZGUncwotQ0ZMQUdTLSQoY2xhbmcpICAgICAg ICAgKz0gLW5vLWludGVncmF0ZWQtYXMKKyMgQ2xhbmcncyBidWlsdC1pbiBhc3NlbWJsZXIgZG9l c24ndCB1bmRlcnN0YW5kIC5za2lwIG9yIC5yZXB0IGFzc2VtYmxlcgorIyBkaXJlY3RpdmVzIHdp dGhvdXQgYW4gYWJzb2x1dGUgdmFsdWU6CisjIGh0dHBzOi8vYnVncy5sbHZtLm9yZy9zaG93X2J1 Zy5jZ2k/aWQ9MjczNjkKK0FGTEFHUy0kKGNsYW5nKSAgICAgICAgICs9IC1uby1pbnRlZ3JhdGVk LWFzCiAKIEFMTF9PQkpTIDo9ICQoQUxMX09CSlMteSkKIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L1J1bGVzLm1rIGIveGVuL2FyY2gveDg2L1J1bGVzLm1rCmluZGV4IDU2YjJlYTgzNTYuLmFl YWUwMWNkOTcgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9SdWxlcy5taworKysgYi94ZW4vYXJj aC94ODYvUnVsZXMubWsKQEAgLTQyLDggKzQyLDE5IEBAIENGTEFHUyArPSAtRENPTkZJR19JTkRJ UkVDVF9USFVOSwogZXhwb3J0IENPTkZJR19JTkRJUkVDVF9USFVOSz15CiBlbmRpZgogCi0jIFNl dCB1cCB0aGUgYXNzZW1ibGVyIGluY2x1ZGUgcGF0aCBwcm9wZXJseSBmb3Igb2xkZXIgR0NDIHRv b2xjaGFpbnMuICBDbGFuZwotIyBvYmplY3RzIHRvIHRoZSBhZ3VtZW50IGJlaW5nIHBhc3NlZCBo b3dldmVyLgotaWZuZXEgKCQoY2xhbmcpLHkpCisjIFNldCB1cCB0aGUgYXNzZW1ibGVyIGluY2x1 ZGUgcGF0aCBwcm9wZXJseSBmb3Igb2xkZXIgdG9vbGNoYWlucy4KIENGTEFHUyArPSAtV2EsLUkk KEJBU0VESVIpL2luY2x1ZGUKKworaWZlcSAoJChjbGFuZykseSkKKyAgICAjIENoZWNrIHdoZXRo ZXIgY2xhbmcgYXNtKCktcyBzdXBwb3J0IC5pbmNsdWRlLgorICAgIGlmZXEgKCQoY2FsbCBhcy1p bnNuLCQoQ0MpLCIuaW5jbHVkZSBcImFzbS9pbmRpcmVjdF90aHVua19hc20uaFwiIix5LG4sJChD RkxBR1MpKSxuKQorICAgICAgICBDRkxBR1MgKz0gLW5vLWludGVncmF0ZWQtYXMKKyAgICBlbmRp ZgorICAgICMgQ2hlY2sgaWYgdGhlIGFzc2VtYmxlciBrZWVwcyAubWFjcm8tcyBiZXR3ZWVuIGFz bSgpLXMuCisgICAgaWZlcSAoJChpZiAkKHNoZWxsIGVjaG8gJ3ZvaWQgXyh2b2lkKSB7IGFzbSB2 b2xhdGlsZSAoICIubWFjcm8gRk9PXG4uZW5kbSIgKTsgXAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhc20gdm9sYXRpbGUgKCAiLm1hY3JvIEZPT1xuLmVuZG0i ICk7IH0nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgfCAkKENDKSAkKGZpbHRlci1vdXQgLU0l ICUuZCAtaW5jbHVkZSAlL2luY2x1ZGUveGVuL2NvbmZpZy5oLCQoQ0ZMQUdTKSkgXAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLWMgLXggYyAtbyAvZGV2L251bGwgLSAyPiYxKSxuLHkp LHkpCisgICAgICAgIENGTEFHUyArPSAtRENPTkZJR19JTkNMVURFX1RIVU5LX0lOTElORQorICAg IGVuZGlmCiBlbmRpZgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2V4dGFibGUuYyBiL3hlbi9h cmNoL3g4Ni9leHRhYmxlLmMKaW5kZXggNzJmMzBkOTA2MC4uMzA4OTNjMzc3MCAxMDA2NDQKLS0t IGEveGVuL2FyY2gveDg2L2V4dGFibGUuYworKysgYi94ZW4vYXJjaC94ODYvZXh0YWJsZS5jCkBA IC0xNTgsNyArMTU4LDggQEAgc3RhdGljIGludCBfX2luaXQgc3R1Yl9zZWxmdGVzdCh2b2lkKQog ICAgICAgICBtZW1jcHkocHRyLCB0ZXN0c1tpXS5vcGMsIEFSUkFZX1NJWkUodGVzdHNbaV0ub3Bj KSk7CiAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKHB0cik7CiAKLSAgICAgICAgYXNtIHZvbGF0 aWxlICggIklORElSRUNUX0NBTEwgJVtzdGJdXG4iCisgICAgICAgIGFzbSB2b2xhdGlsZSAoIElO Q0xVREVfSU5ESVJFQ1RfVEhVTksKKyAgICAgICAgICAgICAgICAgICAgICAgIklORElSRUNUX0NB TEwgJVtzdGJdXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIuTHJldCU9OlxuXHQiCiAgICAg ICAgICAgICAgICAgICAgICAgICIucHVzaHNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIgogICAgICAg ICAgICAgICAgICAgICAgICAiLkxmaXglPTpcblx0IgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2 X2VtdWxhdGUuYwppbmRleCBmZjBhMDAzOTAyLi5lNTI1ZTZiYjBkIDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYworKysgYi94ZW4vYXJjaC94ODYveDg2 X2VtdWxhdGUveDg2X2VtdWxhdGUuYwpAQCAtODY3LDcgKzg2Nyw4IEBAIHN0YXRpYyBpbmxpbmUg aW50IG1rZWModWludDhfdCBlLCBpbnQzMl90IGVjLCAuLi4pCiAjaWZkZWYgX19YRU5fXwogIyBk ZWZpbmUgaW52b2tlX3N0dWIocHJlLCBwb3N0LCBjb25zdHJhaW50cy4uLikgZG8geyAgICAgICAg ICAgICAgICAgICAgXAogICAgIHVuaW9uIHN0dWJfZXhjZXB0aW9uX3Rva2VuIHJlc18gPSB7IC5y YXcgPSB+MCB9OyAgICAgICAgICAgICAgICAgICAgXAotICAgIGFzbSB2b2xhdGlsZSAoIHByZSAi XG5cdElORElSRUNUX0NBTEwgJVtzdHViXVxuXHQiIHBvc3QgIlxuIiAgICAgICAgXAorICAgIGFz bSB2b2xhdGlsZSAoIElOQ0xVREVfSU5ESVJFQ1RfVEhVTksgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHByZSAiXG5cdElORElSRUNUX0NBTEwgJVtz dHViXVxuXHQiIHBvc3QgIlxuIiAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICIuTHJldCU9 OlxuXHQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAg ICAgICAgICAgICIucHVzaHNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAgICAgICAgICAgICAgICAg ICAgICAgXAogICAgICAgICAgICAgICAgICAgICIuTGZpeCU9OlxuXHQiICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi93YWl0LmMg Yi94ZW4vY29tbW9uL3dhaXQuYwppbmRleCBhNTdiYzEwZDYxLi45MWRjZDQ2MzQyIDEwMDY0NAot LS0gYS94ZW4vY29tbW9uL3dhaXQuYworKysgYi94ZW4vY29tbW9uL3dhaXQuYwpAQCAtMjA3LDYg KzIwNyw3IEBAIHZvaWQgY2hlY2tfd2FrZXVwX2Zyb21fd2FpdCh2b2lkKQogICAgICAqIHJlc3Rv cmVkIGZyb20gdGhlIHN0YWNrLCBzbyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgaGVyZS4KICAgICAg Ki8KICAgICBhc20gdm9sYXRpbGUgKAorICAgICAgICBJTkNMVURFX0lORElSRUNUX1RIVU5LCiAg ICAgICAgICJtb3YgJTEsJSUiX19PUCJzcDsgSU5ESVJFQ1RfSk1QICVbaXBdIgogICAgICAgICA6 IDogIlMiICh3cXYtPnN0YWNrKSwgIkQiICh3cXYtPmVzcCksCiAgICAgICAgICAgImMiICgoY2hh ciAqKWdldF9jcHVfaW5mbygpIC0gKGNoYXIgKil3cXYtPmVzcCksCmRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS9hc20teDg2L2FzbV9kZWZucy5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9hc21fZGVm bnMuaAppbmRleCBkMmQ5MWNhMWZhLi40NDdiZjY3YWVkIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVk ZS9hc20teDg2L2FzbV9kZWZucy5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvYXNtX2RlZm5z LmgKQEAgLTE2LDkgKzE2LDMxIEBACiAjaWZkZWYgX19BU1NFTUJMWV9fCiAjIGluY2x1ZGUgPGFz bS9pbmRpcmVjdF90aHVua19hc20uaD4KICNlbHNlCi1hc20gKCAiXHQuZXF1IENPTkZJR19JTkRJ UkVDVF9USFVOSywgIgotICAgICAgX19zdHJpbmdpZnkoSVNfRU5BQkxFRChDT05GSUdfSU5ESVJF Q1RfVEhVTkspKSApOwotYXNtICggIlx0LmluY2x1ZGUgXCJhc20vaW5kaXJlY3RfdGh1bmtfYXNt LmhcIiIgKTsKKy8qCisgKiBOQjogZm9yIGNsYW5nJ3MgaW50ZWdyYXRlZCBhc3NlbWJsZXIgdGhl IG1hY3JvIG11c3QgYmUgaW5jbHVkZWQgaW4gZXZlcnkKKyAqIGFzbSgpIGluc3RhbmNlIHdoZXJl IGl0J3MgdXNlZC4gRm9yIGdjYy9nYXMgaXQgb25seSBuZWVkcyB0byBiZSBpbmNsdWRlZAorICog b25jZSBwZXIgZmlsZS4gTm90ZSB0aGF0IGV2ZW4gZ3VhcmRpbmcgdGhlIGluZGlyZWN0X3RodW5r X2FzbS5oIHdpdGgKKyAqIHNvbWV0aGluZyBsaWtlOgorICoKKyAqIC5pZm5kZWYgX1g4Nl9JTkRJ UkVDVF9USFVOS19BU01fSF8KKyAqIC5lcXUgX1g4Nl9JTkRJUkVDVF9USFVOS19BU01fSF8sIDEK KyAqIC4uLgorICogLmVuZGlmCisgKgorICogRG9lc24ndCB3b3JrIHdpdGggY2xhbmcgYmVjYXVz ZSBpdCB3aWxsIGtlZXAgdGhlIC5lcXUgZGVmaW5lZCBiZXR3ZWVuIGFzbSgpCisgKiBpbnN0YW5j ZXMsIGJ1dCB3aWxsIGZvcmdldCB0aGUgLm1hY3JvLiBUaGlzIGhhcyBiZWVuIHJlcG9ydGVkIHVw c3RyZWFtOgorICogaHR0cHM6Ly9idWdzLmxsdm0ub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjExMAor ICovCisjIGRlZmluZSBJTkRJUkVDVF9USFVOS19BU00gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgICJcdC5lcXUgQ09ORklHX0lORElSRUNUX1RIVU5LLCAiICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBfX3N0cmluZ2lmeShJU19FTkFCTEVEKENPTkZJ R19JTkRJUkVDVF9USFVOSykpICJcbiIgICAgICAgICBcCisgICAgIlx0LmluY2x1ZGUgXCJhc20v aW5kaXJlY3RfdGh1bmtfYXNtLmhcIlxuIgorIyBpZmRlZiBDT05GSUdfSU5DTFVERV9USFVOS19J TkxJTkUKKyMgIGRlZmluZSBJTkNMVURFX0lORElSRUNUX1RIVU5LIElORElSRUNUX1RIVU5LX0FT TQorIyBlbHNlCisgICBhc20gKCBJTkRJUkVDVF9USFVOS19BU00gKTsKKyMgIGRlZmluZSBJTkNM VURFX0lORElSRUNUX1RIVU5LCisjIGVuZGlmCiAjZW5kaWYKIAogI2lmbmRlZiBfX0FTU0VNQkxZ X18KLS0gCjIuMTUuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2 ZWw=