digitalmars.D - String Switch Lowering
- Benjamin Thaut (506/506) Jan 25 2018 X0Q2b2JqZWN0X19UOF9fc3dpdGNoVHlhVnhBeWFhN180MzUzNTQzNjQzNDQ1NFZ4UXdhN180
- Jonathan M Davis (11/14) Jan 25 2018 That particular switch statement is in a function that's deprecated and
- Benjamin Thaut (8/15) Jan 25 2018 The main problem is binary size for shared library verisons of phobos.
- H. S. Teoh (41/60) Jan 25 2018 LOL! This reminds me of the days before Rainer's symbol backreferencing
- Steven Schveighoffer (19/31) Jan 25 2018 I believe that when the number of cases is small enough, the binary
- H. S. Teoh (19/33) Jan 25 2018 I haven't verified this yet, but I suspect that this may be (one of?)
- Walter Bright (2/7) Jan 26 2018 This clearly should be in bugzilla.
- Benjamin Thaut (2/3) Jan 27 2018 As phobos or dmd bug?
- Kagamin (1/1) Jan 27 2018 dmd
- timotheecour (39/40) Jan 27 2018 see also this horrendous stacktrace when calling getopt with a
- Kagamin (2/2) Jan 27 2018 IIRC several years ago somebody created a dub package with DbI
- Timothee Cour (5/7) Jan 27 2018 but this should be handled at the compiler level, with no change in
- H. S. Teoh (20/49) Jan 27 2018 This has nothing to do with name mangling. The mangling itself may be
- Kagamin (2/4) Jan 28 2018 https://github.com/jasonwhite/darg this?
- Seb (24/32) Jan 28 2018 Do you remember his motivation?
- Timothee Cour (23/72) Jan 27 2018 * This has nothing to do with name mangling.
- H. S. Teoh (25/39) Jan 27 2018 [...]
- Benjamin Thaut (5/8) Jan 28 2018 https://issues.dlang.org/show_bug.cgi?id=18324
X0Q2b2JqZWN0X19UOF9fc3dpdGNoVHlhVnhBeWFhN180MzUzNTQzNjQzNDQ1NFZ4UXdhN180 NTUzNTQzNTQ1NDQ1NFZ4UUJyYTdfNDU3NDYzMmY0NzRkNTRWeFFDbmE3XzRkNTM1NDM3NGQ0 NDU0VnhRRGphN181MDUzNTQzODUwNDQ1NFZ4UUVmYTlfNDE3MzY5NjEyZjQxNjQ2NTZlVnhR RmZhOV80MTczNjk2MTJmNDI2MTZiNzVWeFFHZmE5XzQxNzM2OTYxMmY0NDY5NmM2OVZ4UUhm YTlfNDE3MzY5NjEyZjQ4NmY3NjY0VnhRSWZhOV80MTczNjk2MTJmNGY2ZDczNmJWeFFKZmE5 XzQxNzM2OTYxMmY0ZjcyNjE2Y1Z4UUtmYTlfNDU3NDYzMmY0NzRkNTQyYjMxVnhRTGZhOV80 NTc0NjMyZjQ3NGQ1NDJiMzJWeFFNZmE5XzQ1NzQ2MzJmNDc0ZDU0MmIzM1Z4UU5mYTlfNDU3 NDYzMmY0NzRkNTQyYjM0VnhRT2ZhOV80NTc0NjMyZjQ3NGQ1NDJiMzVWeFFQZmE5XzQ1NzQ2 MzJmNDc0ZDU0MmIzNlZ4UVFmYTlfNDU3NDYzMmY0NzRkNTQyYjM3VnhRUmZhOV80NTc0NjMy ZjQ3NGQ1NDJiMzhWeFFTZmE5XzQ1NzQ2MzJmNDc0ZDU0MmIzOVZ4UVRmYTlfNDU3NDYzMmY0 NzRkNTQyZDMxVnhRVWZhOV80NTc0NjMyZjQ3NGQ1NDJkMzJWeFFWZmE5XzQ1NzQ2MzJmNDc0 ZDU0MmQzM1Z4UVdmYTlfNDU3NDYzMmY0NzRkNTQyZDM0VnhRWGZhOV80NTc0NjMyZjQ3NGQ1 NDJkMzVWeFFZZmE5XzQ1NzQ2MzJmNDc0ZDU0MmQzNlZ4UVpmYTlfNDU3NDYzMmY0NzRkNTQy ZDM3VnhRQkFmYTlfNDU3NDYzMmY0NzRkNTQyZDM4VnhRQkJnYTlfNDU3NDYzMmY0NzRkNTQy ZDM5VnhRQkNoYTEwXzQxNzM2OTYxMmY0MTZkNmQ2MTZlVnhRQkRsYTEwXzQxNzM2OTYxMmY0 MTcxNzQ2MTc1VnhRQkVwYTEwXzQxNzM2OTYxMmY0MzY4Njk3NDYxVnhRQkZ0YTEwXzQxNzM2 OTYxMmY0NDY4NjE2YjYxVnhRQkd4YTEwXzQxNzM2OTYxMmY0NDc1NjI2MTY5VnhRQkliYTEw XzQxNzM2OTYxMmY0YjYxNjI3NTZjVnhRQkpmYTEwXzQxNzM2OTYxMmY0ZDYxNjM2MTc1VnhR QktqYTEwXzQxNzM2OTYxMmY1MTYxNzQ2MTcyVnhRQkxuYTEwXzQxNzM2OTYxMmY1MzY1NmY3 NTZjVnhRQk1yYTEwXzQxNzM2OTYxMmY1NDZmNmI3OTZmVnhRQk52YTEwXzQxNzM2OTYxMmY1 NDZmNmQ3MzZiVnhRQk96YTEwXzQ1NzQ2MzJmNDc0ZDU0MmIzMTMwVnhRQlFkYTEwXzQ1NzQ2 MzJmNDc0ZDU0MmIzMTMxVnhRQlJoYTEwXzQ1NzQ2MzJmNDc0ZDU0MmIzMTMyVnhRQlNsYTEw XzQ1NzQ2MzJmNDc0ZDU0MmQzMTMwVnhRQlRwYTEwXzQ1NzQ2MzJmNDc0ZDU0MmQzMTMxVnhR QlV0YTEwXzQ1NzQ2MzJmNDc0ZDU0MmQzMTMyVnhRQlZ4YTEwXzQ1NzQ2MzJmNDc0ZDU0MmQz MTMzVnhRQlhiYTEwXzQ1NzQ2MzJmNDc0ZDU0MmQzMTM0VnhRQllmYTExXzQxNjY3MjY5NjM2 MTJmNGE3NTYyNjFWeFFCWmxhMTFfNDE2NjcyNjk2MzYxMmY0YzZmNmQ2NVZ4UUNBcmExMV80 MTczNjk2MTJmNDE2YzZkNjE3NDc5VnhRQ0J4YTExXzQxNzM2OTYxMmY0MTZlNjE2NDc5NzJW eFFDRGRhMTFfNDE3MzY5NjEyZjQxNzE3NDZmNjI2NVZ4UUNFamExMV80MTczNjk2MTJmNDI2 NTY5NzI3NTc0VnhRQ0ZwYTExXzQxNzM2OTYxMmY0MjcyNzU2ZTY1NjlWeFFDR3ZhMTFfNDE3 MzY5NjEyZjQ4NjU2MjcyNmY2ZVZ4UUNJYmExMV80MTczNjk2MTJmNGI3NTc3NjE2OTc0VnhR Q0poYTExXzQxNzM2OTYxMmY0ZDYxNmU2OTZjNjFWeFFDS25hMTFfNDE3MzY5NjEyZjRkNzU3 MzYzNjE3NFZ4UUNMdGExMV80MTczNjk2MTJmNTI2OTc5NjE2NDY4VnhRQ016YTExXzQxNzM2 OTYxMmY1MzYxNjk2NzZmNmVWeFFDT2ZhMTFfNDE3MzY5NjEyZjU0NjE2OTcwNjU2OVZ4UUNQ bGExMV80MTczNjk2MTJmNTQ2NTY4NzI2MTZlVnhRQ1FyYTExXzQxNzM2OTYxMmY1NTcyNzU2 ZDcxNjlWeFFDUnhhMTFfNDU3NTcyNmY3MDY1MmY0YjY5NjU3NlZ4UUNUZGExMV80NTc1NzI2 ZjcwNjUyZjRmNzM2YzZmVnhRQ1VqYTExXzQ1NzU3MjZmNzA2NTJmNTI2OTY3NjFWeFFDVnBh MTFfNDU3NTcyNmY3MDY1MmY1MjZmNmQ2NVZ4UUNXdmExMV80OTZlNjQ2OTYxNmUyZjRkNjE2 ODY1VnhRQ1liYTEyXzQxNjY3MjY5NjM2MTJmNDE2MzYzNzI2MVZ4UUNaamExMl80MTY2NzI2 OTYzNjEyZjQzNjE2OTcyNmZWeFFEQXJhMTJfNDE2NjcyNjk2MzYxMmY0MzY1NzU3NDYxVnhR REJ6YTEyXzQxNjY3MjY5NjM2MTJmNDQ2MTZiNjE3MlZ4UUREaGExMl80MTY2NzI2OTYzNjEy ZjRjNjE2NzZmNzNWeFFERXBhMTJfNDE2NjcyNjk2MzYxMmY1NDc1NmU2OTczVnhRREZ4YTEy XzQxNmQ2NTcyNjk2MzYxMmY0MTY0NjE2YlZ4UURIZmExMl80MTZkNjU3MjY5NjM2MTJmNGM2 OTZkNjFWeFFESW5hMTJfNDE2ZDY1NzI2OTYzNjEyZjRlNmY2ZDY1VnhRREp2YTEyXzQxNzM2 OTYxMmY0MjYxNjc2ODY0NjE2NFZ4UURMZGExMl80MTczNjk2MTJmNDI2MTY4NzI2MTY5NmVW eFFETWxhMTJfNDE3MzY5NjEyZjQyNjE2ZTY3NmI2ZjZiVnhRRE50YTEyXzQxNzM2OTYxMmY0 MjYxNzI2ZTYxNzU2Y1Z4UURQYmExMl80MTczNjk2MTJmNDI2OTczNjg2YjY1NmJWeFFEUWph MTJfNDE3MzY5NjEyZjQzNmY2YzZmNmQ2MjZmVnhRRFJyYTEyXzQxNzM2OTYxMmY0OTcyNmI3 NTc0NzM2YlZ4UURTemExMl80MTczNjk2MTJmNGE2MTZiNjE3Mjc0NjFWeFFEVWhhMTJfNDE3 MzY5NjEyZjRiNjE3MjYxNjM2ODY5VnhRRFZwYTEyXzQxNzM2OTYxMmY0Yjc1NjM2ODY5NmU2 N1Z4UURXeGExMl80MTczNjk2MTJmNGQ2MTY3NjE2NDYxNmVWeFFEWWZhMTJfNDE3MzY5NjEy ZjRlNjk2MzZmNzM2OTYxVnhRRFpuYTEyXzQxNzM2OTYxMmY1MjYxNmU2NzZmNmY2ZVZ4UUVB dmExMl80MTczNjk2MTJmNTQ2MjY5NmM2OTczNjlWeFFFQ2RhMTJfNDE3MzY5NjEyZjU0Njg2 OTZkNzA2ODc1VnhRRURsYTEyXzQxNzM2OTYxMmY1OTYxNmI3NTc0NzM2YlZ4UUVFdGExMl80 MTczNjk2MTJmNTk2NTcyNjU3NjYxNmVWeFFFR2JhMTJfNDU3NTcyNmY3MDY1MmY0ZDYxNmM3 NDYxVnhRRUhqYTEyXzQ1NzU3MjZmNzA2NTJmNGQ2OTZlNzM2YlZ4UUVJcmExMl80NTc1NzI2 ZjcwNjUyZjUwNjE3MjY5NzNWeFFFSnphMTJfNDU3NTcyNmY3MDY1MmY1MzZmNjY2OTYxVnhR RUxoYTEyXzQ1NzU3MjZmNzA2NTJmNTY2MTY0NzU3YVZ4UUVNcGExMl80OTZlNjQ2OTYxNmUy ZjQzNmY2MzZmNzNWeFFFTnhhMTJfNTA2MTYzNjk2NjY5NjMyZjQxNzA2OTYxVnhRRVBmYTEy XzUwNjE2MzY5NjY2OTYzMmY0NjY5NmE2OVZ4UUVRbmExMl81MDYxNjM2OTY2Njk2MzJmNDc3 NTYxNmRWeFFFUnZhMTJfNTA2MTYzNjk2NjY5NjMyZjRlNjk3NTY1VnhRRVRkYTEyXzUwNjE2 MzY5NjY2OTYzMmY1NDcyNzU2YlZ4UUVVbGExMl81MDYxNjM2OTY2Njk2MzJmNTc2MTZiNjVW eFFFVnRhMTNfNDE2NjcyNjk2MzYxMmY0MTczNmQ2NTcyNjFWeFFFWGRhMTNfNDE2NjcyNjk2 MzYxMmY0MjYxNmQ2MTZiNmZWeFFFWW5hMTNfNDE2NjcyNjk2MzYxMmY0MjYxNmU2Nzc1NjlW eFFFWnhhMTNfNDE2NjcyNjk2MzYxMmY0MjYxNmU2YTc1NmNWeFFGQmhhMTNfNDE2NjcyNjk2 MzYxMmY0MjY5NzM3MzYxNzVWeFFGQ3JhMTNfNDE2NjcyNjk2MzYxMmY0NDZmNzU2MTZjNjFW eFFGRWJhMTNfNDE2NjcyNjk2MzYxMmY0ODYxNzI2MTcyNjVWeFFGRmxhMTNfNDE2NjcyNjk2 MzYxMmY0YjY5Njc2MTZjNjlWeFFGR3ZhMTNfNDE2NjcyNjk2MzYxMmY0Yzc1NjE2ZTY0NjFW eFFGSWZhMTNfNDE2NjcyNjk2MzYxMmY0Yzc1NzM2MTZiNjFWeFFGSnBhMTNfNDE2NjcyNjk2 MzYxMmY0ZDYxNmM2MTYyNmZWeFFGS3phMTNfNDE2NjcyNjk2MzYxMmY0ZDYxNzA3NTc0NmZW eFFGTWphMTNfNDE2NjcyNjk2MzYxMmY0ZDYxNzM2NTcyNzVWeFFGTnRhMTNfNDE2NjcyNjk2 MzYxMmY0ZTY5NjE2ZDY1NzlWeFFGUGRhMTNfNDE2ZDY1NzI2OTYzNjEyZjQxNzI3NTYyNjFW eFFGUW5hMTNfNDE2ZDY1NzI2OTYzNjEyZjQyNjE2ODY5NjFWeFFGUnhhMTNfNDE2ZDY1NzI2 OTYzNjEyZjQyNjU2YzY1NmRWeFFGVGhhMTNfNDE2ZDY1NzI2OTYzNjEyZjQyNmY2OTczNjVW eFFGVXJhMTNfNDE2ZDY1NzI2OTYzNjEyZjRhNzU2YTc1NzlWeFFGV2JhMTNfNDE2ZDY1NzI2 OTYzNjEyZjUzNjk3NDZiNjFWeFFGWGxhMTNfNDE2ZDY1NzI2OTYzNjEyZjU0Njg3NTZjNjVW eFFGWXZhMTNfNDE3MzY5NjEyZjQxNzM2ODY3NjE2MjYxNzRWeFFHQWZhMTNfNDE3MzY5NjEy ZjQzNjE2YzYzNzU3NDc0NjFWeFFHQnBhMTNfNDE3MzY5NjEyZjQ0NjE2ZDYxNzM2Mzc1NzNW eFFHQ3phMTNfNDE3MzY5NjEyZjQ0NzU3MzY4NjE2ZTYyNjVWeFFHRWphMTNfNDE3MzY5NjEy ZjRhNjE3OTYxNzA3NTcyNjFWeFFHRnRhMTNfNDE3MzY5NjEyZjRiNjE3NDZkNjE2ZTY0NzVW eFFHSGRhMTNfNDE3MzY5NjEyZjRiNjg2MTZlNjQ3OTY3NjFWeFFHSW5hMTNfNDE3MzY5NjEy ZjRkNjE2YjYxNzM3MzYxNzJWeFFHSnhhMTNfNDE3MzY5NjEyZjUzNjE2YjY4NjE2YzY5NmVW eFFHTGhhMTNfNDE3MzY5NjEyZjUzNjg2MTZlNjc2ODYxNjlWeFFHTXJhMTNfNDE3MzY5NjEy ZjU0NjE3MzY4NmI2NTZlNzRWeFFHT2JhMTNfNDE3MzY5NjEyZjU1NzM3NDJkNGU2NTcyNjFW eFFHUGxhMTNfNDU3NTcyNmY3MDY1MmY0MTc0Njg2NTZlNzNWeFFHUXZhMTNfNDU3NTcyNmY3 MDY1MmY0MjY1NzI2YzY5NmVWeFFHU2ZhMTNfNDU3NTcyNmY3MDY1MmY0NDc1NjI2YzY5NmVW eFFHVHBhMTNfNDU3NTcyNmY3MDY1MmY0YTY1NzI3MzY1NzlWeFFHVXphMTNfNDU3NTcyNmY3 MDY1MmY0YzY5NzM2MjZmNmVWeFFHV2phMTNfNDU3NTcyNmY3MDY1MmY0YzZmNmU2NDZmNmVW eFFHWHRhMTNfNDU3NTcyNmY3MDY1MmY0ZDYxNjQ3MjY5NjRWeFFHWmRhMTNfNDU3NTcyNmY3 MDY1MmY0ZDZmNmU2MTYzNmZWeFFIQW5hMTNfNDU3NTcyNmY3MDY1MmY0ZDZmNzM2MzZmNzdW eFFIQnhhMTNfNDU3NTcyNmY3MDY1MmY1MDcyNjE2Nzc1NjVWeFFIRGhhMTNfNDU3NTcyNmY3 MDY1MmY1MzYxNmQ2MTcyNjFWeFFIRXJhMTNfNDU3NTcyNmY3MDY1MmY1MzZiNmY3MDZhNjVW eFFIR2JhMTNfNDU3NTcyNmY3MDY1MmY1NDY5NzI2MTZlNjVWeFFISGxhMTNfNDU3NTcyNmY3 MDY1MmY1NjY5NjU2ZTZlNjFWeFFISXZhMTNfNDU3NTcyNmY3MDY1MmY1NzYxNzI3MzYxNzdW eFFIS2ZhMTNfNDU3NTcyNmY3MDY1MmY1YTYxNjc3MjY1NjJWeFFITHBhMTNfNDU3NTcyNmY3 MDY1MmY1YTc1NzI2OTYzNjhWeFFITXphMTNfNDk2ZTY0Njk2MTZlMmY0MzY4NjE2NzZmNzNW eFFIT2phMTNfNDk2ZTY0Njk2MTZlMmY0MzZmNmQ2ZjcyNmZWeFFIUHRhMTNfNTA2MTYzNjk2 NjY5NjMyZjQ1NjY2MTc0NjVWeFFIUmRhMTNfNTA2MTYzNjk2NjY5NjMyZjRlNjE3NTcyNzVW eFFIU25hMTNfNTA2MTYzNjk2NjY5NjMyZjUwNjE2YzYxNzVWeFFIVHhhMTRfNDE2NjcyNjk2 MzYxMmY0MTYyNjk2NDZhNjE2ZVZ4UUhWamExNF80MTY2NzI2OTYzNjEyZjQxNmM2NzY5NjU3 MjczVnhRSFd2YTE0XzQxNjY3MjY5NjM2MTJmNDM2ZjZlNjE2YjcyNzlWeFFIWWhhMTRfNDE2 NjcyNjk2MzYxMmY0YjYxNmQ3MDYxNmM2MVZ4UUhadGExNF80MTY2NzI2OTYzNjEyZjRkNjI2 MTYyNjE2ZTY1VnhRSUJmYTE0XzQxNjY3MjY5NjM2MTJmNGU2MTY5NzI2ZjYyNjlWeFFJQ3Jh MTRfNDE2NjcyNjk2MzYxMmY1NDcyNjk3MDZmNmM2OVZ4UUlFZGExNF80MTZkNjU3MjY5NjM2 MTJmNDI2NTZjNjk3YTY1VnhRSUZwYTE0XzQxNmQ2NTcyNjk2MzYxMmY0MjZmNjc2Zjc0NjFW eFFJSGJhMTRfNDE2ZDY1NzI2OTYzNjEyZjQzNjE2ZTYzNzU2ZVZ4UUlJbmExNF80MTZkNjU3 MjY5NjM2MTJmNDM2MTc5NmQ2MTZlVnhRSUp6YTE0XzQxNmQ2NTcyNjk2MzYxMmY0Mzc1Njk2 MTYyNjFWeFFJTGxhMTRfNDE2ZDY1NzI2OTYzNjEyZjQ0NjE3NzczNmY2ZVZ4UUlNeGExNF80 MTZkNjU3MjY5NjM2MTJmNDQ2NTZlNzY2NTcyVnhRSU9qYTE0XzQxNmQ2NTcyNjk2MzYxMmY0 Nzc1Nzk2MTZlNjFWeFFJUHZhMTRfNDE2ZDY1NzI2OTYzNjEyZjQ4NjE3NjYxNmU2MVZ4UUlS aGExNF80MTZkNjU3MjY5NjM2MTJmNDk2ZTc1NzY2OTZiVnhRSVN0YTE0XzQxNmQ2NTcyNjk2 MzYxMmY0YTc1NmU2NTYxNzVWeFFJVWZhMTRfNDE2ZDY1NzI2OTYzNjEyZjRjNjE1ZjUwNjE3 YVZ4UUlWcmExNF80MTZkNjU3MjY5NjM2MTJmNGQ2MTYzNjU2OTZmVnhRSVhkYTE0XzQxNmQ2 NTcyNjk2MzYxMmY0ZDYxNmU2MTc1NzNWeFFJWXBhMTRfNDE2ZDY1NzI2OTYzNjEyZjRkNjU3 MjY5NjQ2MVZ4UUpBYmExNF80MTZkNjU3MjY5NjM2MTJmNGU2MTczNzM2MTc1VnhRSkJuYTE0 XzQxNmQ2NTcyNjk2MzYxMmY1MDYxNmU2MTZkNjFWeFFKQ3phMTRfNDE2ZDY1NzI2OTYzNjEy ZjUyNjU2MzY5NjY2NVZ4UUpFbGExNF80MTZkNjU3MjY5NjM2MTJmNTI2NTY3Njk2ZTYxVnhR SkZ4YTE0XzQxNzM2OTYxMmY0ODZmNmU2NzVmNGI2ZjZlNjdWeFFKSGphMTRfNDE3MzY5NjEy ZjRhNjU3Mjc1NzM2MTZjNjU2ZFZ4UUpJdmExNF80MTczNjk2MTJmNGI2MTZkNjM2ODYxNzQ2 YjYxVnhRSktoYTE0XzQxNzM2OTYxMmY1MDZmNmU3NDY5NjE2ZTYxNmJWeFFKTHRhMTRfNDE3 MzY5NjEyZjUwNzk2ZjZlNjc3OTYxNmU2N1Z4UUpOZmExNF80MTczNjk2MTJmNTE3OTdhNzk2 YzZmNzI2NDYxVnhRSk9yYTE0XzQxNzM2OTYxMmY1MzYxNmQ2MTcyNmI2MTZlNjRWeFFKUWRh MTRfNDE3MzY5NjEyZjUzNjk2ZTY3NjE3MDZmNzI2NVZ4UUpScGExNF80MTczNjk2MTJmNTY2 OTY1NmU3NDY5NjE2ZTY1VnhRSlRiYTE0XzQ1NzU3MjZmNzA2NTJmNDE2ZTY0NmY3MjcyNjFW eFFKVW5hMTRfNDU3NTcyNmY3MDY1MmY1NDYxNmM2YzY5NmU2ZVZ4UUpWemExNF80NTc1NzI2 ZjcwNjUyZjU2NjE3NDY5NjM2MTZlVnhRSlhsYTE0XzQ1NzU3MjZmNzA2NTJmNTY2OTZjNmU2 OTc1NzNWeFFKWXhhMTRfNDk2ZTY0Njk2MTZlMmY0ZDYxNzk2Zjc0NzQ2NVZ4UUtBamExNF80 OTZlNjQ2OTYxNmUyZjUyNjU3NTZlNjk2ZjZlVnhRS0J2YTE0XzUwNjE2MzY5NjY2OTYzMmY0 NTYxNzM3NDY1NzJWeFFLRGhhMTRfNTA2MTYzNjk2NjY5NjMyZjRiNmY3MzcyNjE2NVZ4UUtF dGExNF81MDYxNjM2OTY2Njk2MzJmNGQ2MTZhNzU3MjZmVnhRS0dmYTE0XzUwNjE2MzY5NjY2 OTYzMmY0ZDY5NjQ3NzYxNzlWeFFLSHJhMTRfNTA2MTYzNjk2NjY5NjMyZjRlNmY3NTZkNjU2 MVZ4UUtKZGExNF81MDYxNjM2OTY2Njk2MzJmNTA2ZjZlNjE3MDY1VnhRS0twYTE0XzUwNjE2 MzY5NjY2OTYzMmY1MzYxNjk3MDYxNmVWeFFLTWJhMTRfNTA2MTYzNjk2NjY5NjMyZjU0NjE2 ODY5NzQ2OVZ4UUtObmExNF81MDYxNjM2OTY2Njk2MzJmNTQ2MTcyNjE3NzYxVnhRS096YTE0 XzUwNjE2MzY5NjY2OTYzMmY1NzYxNmM2YzY5NzNWeFFLUWxhMTVfNDE2NjcyNjk2MzYxMmY0 MjZjNjE2ZTc0Nzk3MjY1VnhRS1J6YTE1XzQxNjY3MjY5NjM2MTJmNDQ2YTY5NjI2Zjc1NzQ2 OVZ4UUtUbmExNV80MTY2NzI2OTYzNjEyZjQ1NmM1ZjQxNjE2OTc1NmVWeFFLVmJhMTVfNDE2 NjcyNjk2MzYxMmY0NjcyNjU2NTc0NmY3NzZlVnhRS1dwYTE1XzQxNjY3MjY5NjM2MTJmNDc2 MTYyNmY3MjZmNmU2NVZ4UUtZZGExNV80MTY2NzI2OTYzNjEyZjRiNjg2MTcyNzQ2Zjc1NmRW eFFLWnJhMTVfNDE2NjcyNjk2MzYxMmY0YjY5NmU3MzY4NjE3MzYxVnhRTEJmYTE1XzQxNjY3 MjY5NjM2MTJmNGQ2ZjZlNzI2Zjc2Njk2MVZ4UUxDdGExNV80MTY2NzI2OTYzNjEyZjRlNjQ2 YTYxNmQ2NTZlNjFWeFFMRWhhMTVfNDE2NjcyNjk2MzYxMmY1MzYxNmY1ZjU0NmY2ZDY1VnhR TEZ2YTE1XzQxNjY3MjY5NjM2MTJmNTc2OTZlNjQ2ODZmNjU2YlZ4UUxIamExNV80MTZkNjU3 MjY5NjM2MTJmNDE2ZTc0Njk2Nzc1NjFWeFFMSXhhMTVfNDE2ZDY1NzI2OTYzNjEyZjQzNjE3 MjYxNjM2MTczVnhRTEtsYTE1XzQxNmQ2NTcyNjk2MzYxMmY0MzYxNzk2NTZlNmU2NVZ4UUxM emExNV80MTZkNjU3MjY5NjM2MTJmNDM2ODY5NjM2MTY3NmZWeFFMTm5hMTVfNDE2ZDY1NzI2 OTYzNjEyZjQzNmY3MjY0NmY2MjYxVnhRTFBiYTE1XzQxNmQ2NTcyNjk2MzYxMmY0MzcyNjU3 Mzc0NmY2ZVZ4UUxRcGExNV80MTZkNjU3MjY5NjM2MTJmNDM3NTcyNjE2MzYxNmZWeFFMU2Rh MTVfNDE2ZDY1NzI2OTYzNjEyZjQ0NjU3NDcyNmY2OTc0VnhRTFRyYTE1XzQxNmQ2NTcyNjk2 MzYxMmY0NzZmNjQ3NDY4NjE2MlZ4UUxWZmExNV80MTZkNjU3MjY5NjM2MTJmNDc3MjY1NmU2 MTY0NjFWeFFMV3RhMTVfNDE2ZDY1NzI2OTYzNjEyZjQ4NjE2YzY5NjY2MTc4VnhRTFloYTE1 XzQxNmQ2NTcyNjk2MzYxMmY0OTcxNjE2Yzc1Njk3NFZ4UUxadmExNV80MTZkNjU3MjY5NjM2 MTJmNGE2MTZkNjE2OTYzNjFWeFFNQmphMTVfNDE2ZDY1NzI2OTYzNjEyZjRkNjE2ZTYxNjc3 NTYxVnhRTUN4YTE1XzQxNmQ2NTcyNjk2MzYxMmY0ZDYxNzI2OTY3NmY3NFZ4UU1FbGExNV80 MTZkNjU3MjY5NjM2MTJmNGQ2NTZlNjQ2ZjdhNjFWeFFNRnphMTVfNDE2ZDY1NzI2OTYzNjEy ZjRkNmY2ZTYzNzQ2ZjZlVnhRTUhuYTE1XzQxNmQ2NTcyNjk2MzYxMmY0ZTY5NzA2OTY3NmY2 ZVZ4UU1KYmExNV80MTZkNjU3MjY5NjM2MTJmNGU2ZjcyNmY2ZTY4NjFWeFFNS3BhMTVfNDE2 ZDY1NzI2OTYzNjEyZjRmNmE2OTZlNjE2NzYxVnhRTU1kYTE1XzQxNmQ2NTcyNjk2MzYxMmY1 MDY4NmY2NTZlNjk3OFZ4UU1OcmExNV80MTZkNjU3MjY5NjM2MTJmNTQ2OTZhNzU2MTZlNjFW eFFNUGZhMTVfNDE2ZDY1NzI2OTYzNjEyZjU0NmY3MjZmNmU3NDZmVnhRTVF0YTE1XzQxNmQ2 NTcyNjk2MzYxMmY1NDZmNzI3NDZmNmM2MVZ4UU1TaGExNV80MTZkNjU3MjY5NjM2MTJmNTk2 MTZiNzU3NDYxNzRWeFFNVHZhMTVfNDE3MzY5NjEyZjQzNjg2ZjY5NjI2MTZjNzM2MTZlVnhR TVZqYTE1XzQxNzM2OTYxMmY1MDY4NmU2ZjZkNWY1MDY1NmU2OFZ4UU1XeGExNV80MTc0NmM2 MTZlNzQ2OTYzMmY0MTdhNmY3MjY1NzNWeFFNWWxhMTVfNDE3NDZjNjE2ZTc0Njk2MzJmNDM2 MTZlNjE3Mjc5VnhRTVp6YTE1XzQxNzQ2YzYxNmU3NDY5NjMyZjQ2NjE2NTcyNmY2NVZ4UU5C bmExNV80MTc1NzM3NDcyNjE2YzY5NjEyZjQ1NzU2MzZjNjFWeFFORGJhMTVfNDE3NTczNzQ3 MjYxNmM2OTYxMmY1MDY1NzI3NDY4VnhRTkVwYTE1XzQ1NzU3MjZmNzA2NTJmNDI2NTZjNjc3 MjYxNjQ2NVZ4UU5HZGExNV80NTc1NzI2ZjcwNjUyZjQyNzI3NTczNzM2NTZjNzNWeFFOSHJh MTVfNDU3NTcyNmY3MDY1MmY0Mjc1NjQ2MTcwNjU3Mzc0VnhRTkpmYTE1XzQ1NzU3MjZmNzA2 NTJmNDI3NTczNjk2ZTY3NjU2ZVZ4UU5LdGExNV80NTc1NzI2ZjcwNjUyZjQzNjg2OTczNjk2 ZTYxNzVWeFFOTWhhMTVfNDU3NTcyNmY3MDY1MmY0Nzc1NjU3MjZlNzM2NTc5VnhRTk52YTE1 XzQ1NzU3MjZmNzA2NTJmNDg2NTZjNzM2OTZlNmI2OVZ4UU5QamExNV80NTc1NzI2ZjcwNjUy ZjQ5NzM3NDYxNmU2Mjc1NmNWeFFOUXhhMTVfNDU3NTcyNmY3MDY1MmY1MzYxNzI2MTZhNjU3 NjZmVnhRTlNsYTE1XzQ1NzU3MjZmNzA2NTJmNTU3YTY4Njc2ZjcyNmY2NFZ4UU5UemExNV80 OTZlNjQ2OTYxNmUyZjRkNjE2YzY0Njk3NjY1NzNWeFFOVm5hMTVfNTA2MTYzNjk2NjY5NjMy ZjQzNjg2MTc0Njg2MTZkVnhRTlhiYTE1XzUwNjE2MzY5NjY2OTYzMmY0NjYxNmI2MTZmNjY2 ZlZ4UU5ZcGExNV81MDYxNjM2OTY2Njk2MzJmNGU2ZjcyNjY2ZjZjNmJWeFFPQWRhMTZfNDE2 NjcyNjk2MzYxMmY0Mjc1NmE3NTZkNjI3NTcyNjFWeFFPQnRhMTZfNDE2NjcyNjk2MzYxMmY0 ZDZmNjc2MTY0Njk3MzY4NzVWeFFPRGphMTZfNDE2ZDY1NzI2OTYzNjEyZjQxNmU2Nzc1Njk2 YzZjNjFWeFFPRXphMTZfNDE2ZDY1NzI2OTYzNjEyZjQxNzI2Nzc1NjE2OTZlNjFWeFFPR3Bh MTZfNDE2ZDY1NzI2OTYzNjEyZjQxNzM3NTZlNjM2OTZmNmVWeFFPSWZhMTZfNDE2ZDY1NzI2 OTYzNjEyZjQyNjE3MjYyNjE2NDZmNzNWeFFPSnZhMTZfNDE2ZDY1NzI2OTYzNjEyZjQ0NmY2 ZDY5NmU2OTYzNjFWeFFPTGxhMTZfNDE2ZDY1NzI2OTYzNjEyZjQ1NjQ2ZDZmNmU3NDZmNmVW eFFPTmJhMTZfNDE2ZDY1NzI2OTYzNjEyZjQ1Njk3Mjc1NmU2NTcwNjVWeFFPT3JhMTZfNDE2 ZDY1NzI2OTYzNjEyZjRkNjE3YTYxNzQ2YzYxNmVWeFFPUWhhMTZfNDE2ZDY1NzI2OTYzNjEy ZjRkNjk3MTc1NjU2YzZmNmVWeFFPUnhhMTZfNDE2ZDY1NzI2OTYzNjEyZjRkNmY2ZTc0NzI2 NTYxNmNWeFFPVG5hMTZfNDE2ZDY1NzI2OTYzNjEyZjRlNjU3NzVmNTk2ZjcyNmJWeFFPVmRh MTZfNDE2ZDY1NzI2OTYzNjEyZjUyNjU3MzZmNmM3NTc0NjVWeFFPV3RhMTZfNDE2ZDY1NzI2 OTYzNjEyZjUzNjE2ZTc0NjE3MjY1NmRWeFFPWWphMTZfNDE2ZDY1NzI2OTYzNjEyZjUzNjE2 ZTc0Njk2MTY3NmZWeFFPWnphMTZfNDE2ZDY1NzI2OTYzNjEyZjUzNzQ1ZjRhNmY2ODZlNzNW eFFQQnBhMTZfNDE2ZDY1NzI2OTYzNjEyZjUzNzQ1ZjRiNjk3NDc0NzNWeFFQRGZhMTZfNDE2 ZDY1NzI2OTYzNjEyZjUzNzQ1ZjRjNzU2MzY5NjFWeFFQRXZhMTZfNDE2ZDY1NzI2OTYzNjEy ZjU3Njk2ZTZlNjk3MDY1NjdWeFFQR2xhMTZfNDE2ZTc0NjE3MjYzNzQ2OTYzNjEyZjQzNjE3 MzY1NzlWeFFQSWJhMTZfNDE2ZTc0NjE3MjYzNzQ2OTYzNjEyZjQ0NjE3NjY5NzNWeFFQSnJh MTZfNDE2ZTc0NjE3MjYzNzQ2OTYzNjEyZjUzNzk2Zjc3NjFWeFFQTGhhMTZfNDE3MzY5NjEy ZjRiNzI2MTczNmU2Zjc5NjE3MjczNmJWeFFQTXhhMTZfNDE3MzY5NjEyZjRlNmY3NjZmNzM2 OTYyNjk3MjczNmJWeFFQT25hMTZfNDE3MzY5NjEyZjU1NmM2MTYxNmU2MjYxNjE3NDYxNzJW eFFQUWRhMTZfNDE3MzY5NjEyZjU2NmM2MTY0Njk3NjZmNzM3NDZmNmJWeFFQUnRhMTZfNDE3 NDZjNjE2ZTc0Njk2MzJmNDI2NTcyNmQ3NTY0NjFWeFFQVGphMTZfNDE3NDZjNjE2ZTc0Njk2 MzJmNGQ2MTY0NjU2OTcyNjFWeFFQVXphMTZfNDE3NDZjNjE2ZTc0Njk2MzJmNTM3NDYxNmU2 YzY1NzlWeFFQV3BhMTZfNDE3NTczNzQ3MjYxNmM2OTYxMmY0Mzc1NzI3MjY5NjVWeFFQWWZh MTZfNDE3NTczNzQ3MjYxNmM2OTYxMmY0NDYxNzI3NzY5NmVWeFFQWnZhMTZfNDE3NTczNzQ3 MjYxNmM2OTYxMmY0ODZmNjI2MTcyNzRWeFFRQmxhMTZfNDE3NTczNzQ3MjYxNmM2OTYxMmY1 Mzc5NjQ2ZTY1NzlWeFFRRGJhMTZfNDU3NTcyNmY3MDY1MmY0MTZkNzM3NDY1NzI2NDYxNmRW eFFRRXJhMTZfNDU3NTcyNmY3MDY1MmY0MTczNzQ3MjYxNmI2ODYxNmVWeFFRR2hhMTZfNDU3 NTcyNmY3MDY1MmY0Mjc1NjM2ODYxNzI2NTczNzRWeFFRSHhhMTZfNDU3NTcyNmY3MDY1MmY0 NzY5NjI3MjYxNmM3NDYxNzJWeFFRSm5hMTZfNDU3NTcyNmY3MDY1MmY0YzZhNzU2MjZjNmE2 MTZlNjFWeFFRTGRhMTZfNDU3NTcyNmY3MDY1MmY0ZDYxNzI2OTY1Njg2MTZkNmVWeFFRTXRh MTZfNDU3NTcyNmY3MDY1MmY1MDZmNjQ2NzZmNzI2OTYzNjFWeFFRT2phMTZfNDU3NTcyNmY3 MDY1MmY1Mzc0NmY2MzZiNjg2ZjZjNmRWeFFRUHphMTZfNDU3NTcyNmY3MDY1MmY1NjZmNmM2 NzZmNjc3MjYxNjRWeFFRUnBhMTZfNDk2ZTY0Njk2MTZlMmY0MzY4NzI2OTczNzQ2ZDYxNzNW eFFRVGZhMTZfNDk2ZTY0Njk2MTZlMmY0YjY1NzI2Nzc1NjU2YzY1NmVWeFFRVXZhMTZfNDk2 ZTY0Njk2MTZlMmY0ZDYxNzU3MjY5NzQ2OTc1NzNWeFFRV2xhMTZfNTA2MTYzNjk2NjY5NjMy ZjQxNzU2MzZiNmM2MTZlNjRWeFFRWWJhMTZfNTA2MTYzNjk2NjY5NjMyZjQ2NzU2ZTYxNjY3 NTc0NjlWeFFRWnJhMTZfNTA2MTYzNjk2NjY5NjMyZjQ4NmY2ZTZmNmM3NTZjNzVWeFFSQmhh MTZfNTA2MTYzNjk2NjY5NjMyZjRhNmY2ODZlNzM3NDZmNmVWeFFSQ3hhMTdfNDE2NjcyNjk2 MzYxMmY0MzYxNzM2MTYyNmM2MTZlNjM2MVZ4UVJFcGExN180MTY2NzI2OTYzNjEyZjRjNjk2 MjcyNjU3NjY5NmM2YzY1VnhRUkdoYTE3XzQxNjY3MjY5NjM2MTJmNGM3NTYyNzU2ZDYyNjE3 MzY4NjlWeFFSSHphMTdfNDE2NjcyNjk2MzYxMmY0ZTZmNzU2MTZiNjM2ODZmNzQ3NFZ4UVJK cmExN180MTY2NzI2OTYzNjEyZjUwNmY3Mjc0NmYyZDRlNmY3NjZmVnhRUkxqYTE3XzQxNmQ2 NTcyNjk2MzYxMmY0MTZlNjM2ODZmNzI2MTY3NjVWeFFSTmJhMTdfNDE2ZDY1NzI2OTYzNjEy ZjQxNzI2MTY3NzU2MTY5NmU2MVZ4UVJPdGExN180MTZkNjU3MjY5NjM2MTJmNDI2ZjYxNWY1 NjY5NzM3NDYxVnhRUlFsYTE3XzQxNmQ2NTcyNjk2MzYxMmY0MzYxNzQ2MTZkNjE3MjYzNjFW eFFSU2RhMTdfNDE2ZDY1NzI2OTYzNjEyZjQzNjg2OTY4NzU2MTY4NzU2MVZ4UVJUdmExN180 MTZkNjU3MjY5NjM2MTJmNDY2ZjcyNzQ2MTZjNjU3YTYxVnhRUlZuYTE3XzQxNmQ2NTcyNjk2 MzYxMmY0NzZjNjE2MzY1NWY0MjYxNzlWeFFSWGZhMTdfNDE2ZDY1NzI2OTYzNjEyZjQ3NmY2 ZjczNjU1ZjQyNjE3OVZ4UVJZeGExN180MTZkNjU3MjY5NjM2MTJmNDc3NTYxNzQ2NTZkNjE2 YzYxVnhRU0FwYTE3XzQxNmQ2NTcyNjk2MzYxMmY0Nzc1NjE3OTYxNzE3NTY5NmNWeFFTQ2hh MTdfNDE2ZDY1NzI2OTYzNjEyZjRkNjE3NDYxNmQ2ZjcyNmY3M1Z4UVNEemExN180MTZkNjU3 MjY5NjM2MTJmNGQ2NTZlNmY2ZDY5NmU2NTY1VnhRU0ZyYTE3XzQxNmQ2NTcyNjk2MzYxMmY0 ZDZmNmU3NDY1NzI3MjY1NzlWeFFTSGphMTdfNDE2ZDY1NzI2OTYzNjEyZjUzNjE2ZjVmNTA2 MTc1NmM2ZlZ4UVNKYmExN180MTZkNjU3MjY5NjM2MTJmNTM3NDVmNTQ2ODZmNmQ2MTczVnhR U0t0YTE3XzQxNmQ2NTcyNjk2MzYxMmY1NjYxNmU2MzZmNzU3NjY1NzJWeFFTTWxhMTdfNDE2 ZTc0NjE3MjYzNzQ2OTYzNjEyZjRkNjE3NzczNmY2ZVZ4UVNPZGExN180MTZlNzQ2MTcyNjM3 NDY5NjM2MTJmNTA2MTZjNmQ2NTcyVnhRU1B2YTE3XzQxNmU3NDYxNzI2Mzc0Njk2MzYxMmY1 NjZmNzM3NDZmNmJWeFFTUm5hMTdfNDE3MzY5NjEyZjRiNzU2MTZjNjE1ZjRjNzU2ZDcwNzU3 MlZ4UVNUZmExN180MTczNjk2MTJmNGU2Zjc2NmY2Yjc1N2E2ZTY1NzQ3MzZiVnhRU1V4YTE3 XzQ1NzU3MjZmNzA2NTJmNDI3MjYxNzQ2OTczNmM2MTc2NjFWeFFTV3BhMTdfNDU3NTcyNmY3 MDY1MmY0MzZmNzA2NTZlNjg2MTY3NjU2ZVZ4UVNZaGExN180NTc1NzI2ZjcwNjUyZjRjNzU3 ODY1NmQ2MjZmNzU3MjY3VnhRU1p6YTE3XzQ1NzU3MjZmNzA2NTJmNTM2MTZlNWY0ZDYxNzI2 OTZlNmZWeFFUQnJhMTdfNDU3NTcyNmY3MDY1MmY1MzY5NmQ2NjY1NzI2ZjcwNmY2Y1Z4UVRE amExN180NTc1NzI2ZjcwNjUyZjVhNjE3MDZmNzI2ZjdhNjg3OTY1VnhRVEZiYTE3XzUwNjE2 MzY5NjY2OTYzMmY0NTZlNjQ2NTcyNjI3NTcyNzlWeFFUR3RhMTdfNTA2MTYzNjk2NjY5NjMy ZjQ3NjE2YzYxNzA2MTY3NmY3M1Z4UVRJbGExN181MDYxNjM2OTY2Njk2MzJmNGI3NzYxNmE2 MTZjNjU2OTZlVnhRVEtkYTE3XzUwNjE2MzY5NjY2OTYzMmY0ZDYxNzI3MTc1NjU3MzYxNzNW eFFUTHZhMTdfNTA2MTYzNjk2NjY5NjMyZjUwNjE2NzZmNWY1MDYxNjc2ZlZ4UVRObmExN181 MDYxNjM2OTY2Njk2MzJmNTI2MTcyNmY3NDZmNmU2NzYxVnhRVFBmYTE3XzUwNjE2MzY5NjY2 OTYzMmY1NDZmNmU2NzYxNzQ2MTcwNzVWeFFUUXhhMThfNDE2NjcyNjk2MzYxMmY0MTY0NjQ2 OTczNWY0MTYyNjE2MjYxVnhRVFNyYTE4XzQxNjY3MjY5NjM2MTJmNDI3MjYxN2E3YTYxNzY2 OTZjNmM2NVZ4UVRVbGExOF80MTY2NzI2OTYzNjEyZjRmNzU2MTY3NjE2NDZmNzU2NzZmNzVW eFFUV2ZhMThfNDE2ZDY1NzI2OTYzNjEyZjQzNmY3Mzc0NjE1ZjUyNjk2MzYxVnhRVFh6YTE4 XzQxNmQ2NTcyNjk2MzYxMmY0NzcyNjE2ZTY0NWY1NDc1NzI2YlZ4UVRadGExOF80MTZkNjU3 MjY5NjM2MTJmNDc3NTYxNjQ2NTZjNmY3NTcwNjVWeFFVQm5hMThfNDE2ZDY1NzI2OTYzNjEy ZjQ4NjU3MjZkNmY3MzY5NmM2YzZmVnhRVURoYTE4XzQxNmQ2NTcyNjk2MzYxMmY0YjcyNjE2 YzY1NmU2NDY5NmE2YlZ4UVVGYmExOF80MTZkNjU3MjY5NjM2MTJmNGM2Zjc1Njk3Mzc2Njk2 YzZjNjVWeFFVR3ZhMThfNDE2ZDY1NzI2OTYzNjEyZjRkNjE3Mjc0Njk2ZTY5NzE3NTY1VnhR VUlwYTE4XzQxNmQ2NTcyNjk2MzYxMmY0ZDZmNmU3NDY1NzY2OTY0NjU2ZlZ4UVVLamExOF80 MTZkNjU3MjY5NjM2MTJmNGQ2ZjZlNzQ3MzY1NzI3MjYxNzRWeFFVTWRhMThfNDE2ZDY1NzI2 OTYzNjEyZjUwNjE3MjYxNmQ2MTcyNjk2MjZmVnhRVU54YTE4XzQxNmQ2NTcyNjk2MzYxMmY1 MjY5NmY1ZjQyNzI2MTZlNjM2ZlZ4UVVQcmExOF80MTZkNjU3MjY5NjM2MTJmNTM3NDVmNTY2 OTZlNjM2NTZlNzRWeFFVUmxhMThfNDE2ZDY1NzI2OTYzNjEyZjU3Njg2OTc0NjU2ODZmNzI3 MzY1VnhRVVRmYTE4XzQxNmU3NDYxNzI2Mzc0Njk2MzYxMmY0ZDYzNGQ3NTcyNjQ2ZlZ4UVVV emExOF80MTZlNzQ2MTcyNjM3NDY5NjM2MTJmNTI2Zjc0Njg2NTcyNjFWeFFVV3RhMThfNDE3 MzY5NjEyZjUzNzI2NTY0NmU2NTZiNmY2Yzc5NmQ3MzZiVnhRVVluYTE4XzQxNzM2OTYxMmY1 OTY1NmI2MTc0NjU3MjY5NmU2Mjc1NzI2N1Z4UVZBaGExOF80MTc0NmM2MTZlNzQ2OTYzMmY1 MjY1Nzk2YjZhNjE3NjY5NmJWeFFWQ2JhMThfNDE3NDZjNjE2ZTc0Njk2MzJmNTM3NDVmNDg2 NTZjNjU2ZTYxVnhRVkR2YTE4XzQxNzU3Mzc0NzI2MTZjNjk2MTJmNDE2NDY1NmM2MTY5NjQ2 NVZ4UVZGcGExOF80MTc1NzM3NDcyNjE2YzY5NjEyZjQyNzI2OTczNjI2MTZlNjVWeFFWSGph MThfNDE3NTczNzQ3MjYxNmM2OTYxMmY0YzY5NmU2NDY1NmQ2MTZlVnhRVkpkYTE4XzQ1NzU3 MjZmNzA2NTJmNDk3MzZjNjU1ZjZmNjY1ZjRkNjE2ZVZ4UVZLeGExOF80NTc1NzI2ZjcwNjUy ZjRiNjE2YzY5NmU2OTZlNjc3MjYxNjRWeFFWTXJhMThfNTA2MTYzNjk2NjY5NjMyZjRiNjk3 MjY5NzQ2OTZkNjE3NDY5VnhRVk9sYTE5XzQxNjY3MjY5NjM2MTJmNGE2ZjY4NjE2ZTZlNjU3 MzYyNzU3MjY3VnhRVlFoYTE5XzQxNmQ2NTcyNjk2MzYxMmY0NTZjNWY1MzYxNmM3NjYxNjQ2 ZjcyVnhRVlNkYTE5XzQxNmQ2NTcyNjk2MzYxMmY0YzZmNzM1ZjQxNmU2NzY1NmM2NTczVnhR VlR6YTE5XzQxNmQ2NTcyNjk2MzYxMmY0ZDY1Nzg2OTYzNmY1ZjQzNjk3NDc5VnhRVlZ2YTE5 XzQxNmQ2NTcyNjk2MzYxMmY1MDYxNmU2NzZlNjk3Mjc0NzU2ZTY3VnhRVlhyYTE5XzQxNmQ2 NTcyNjk2MzYxMmY1MDZmNzI3NDZmNWY1NjY1NmM2ODZmVnhRVlpuYTE5XzQxNmQ2NTcyNjk2 MzYxMmY1MDc1NjU3Mjc0NmY1ZjUyNjk2MzZmVnhRV0JqYTE5XzQxNmQ2NTcyNjk2MzYxMmY1 MjYxNjk2ZTc5NWY1MjY5NzY2NTcyVnhRV0RmYTE5XzQxNmQ2NTcyNjk2MzYxMmY1NDY1Njc3 NTYzNjk2NzYxNmM3MDYxVnhRV0ZiYTE5XzQxNmQ2NTcyNjk2MzYxMmY1NDY4NzU2ZTY0NjU3 MjVmNDI2MTc5VnhRV0d4YTE5XzQxNmQ2NTcyNjk2MzYxMmY1OTY1NmM2YzZmNzc2YjZlNjk2 NjY1VnhRV0l0YTE5XzQxNzI2Mzc0Njk2MzJmNGM2ZjZlNjc3OTY1NjE3MjYyNzk2NTZlVnhR V0twYTE5XzQxNzQ2YzYxNmU3NDY5NjMyZjQzNjE3MDY1NWY1NjY1NzI2NDY1VnhRV01sYTE5 XzQxNzU3Mzc0NzI2MTZjNjk2MTJmNGM2ZjcyNjQ1ZjQ4NmY3NzY1VnhRV09oYTE5XzQxNzU3 Mzc0NzI2MTZjNjk2MTJmNGQ2NTZjNjI2Zjc1NzI2ZTY1VnhRV1FkYTE5XzQ5NmU2NDY5NjE2 ZTJmNDE2ZTc0NjE2ZTYxNmU2MTcyNjk3NjZmVnhRV1J6YTE5XzUwNjE2MzY5NjY2OTYzMmY0 Nzc1NjE2NDYxNmM2MzYxNmU2MTZjVnhRV1R2YTIwXzQxNjY3MjY5NjM2MTJmNDQ2MTcyNWY2 NTczNWY1MzYxNmM2MTYxNmRWeFFXVnRhMjBfNDE2ZDY1NzI2OTYzNjEyZjQyNmM2MTZlNjMy ZDUzNjE2MjZjNmY2ZVZ4UVdYcmEyMF80MTZkNjU3MjY5NjM2MTJmNDI3NTY1NmU2ZjczNWY0 MTY5NzI2NTczVnhRV1pwYTIwXzQxNmQ2NTcyNjk2MzYxMmY0MzYxNmQ3MDZmNWY0NzcyNjE2 ZTY0NjVWeFFYQm5hMjBfNDE2ZDY1NzI2OTYzNjEyZjQ0NjE2ZTZkNjE3MjZiNzM2ODYxNzY2 ZVZ4UVhEbGEyMF80MTZkNjU3MjY5NjM2MTJmNDQ2MTc3NzM2ZjZlNWY0MzcyNjU2NTZiVnhR WEZqYTIwXzQxNmQ2NTcyNjk2MzYxMmY0OTZlNjQ2OTYxNmU2MTJmNGI2ZTZmNzhWeFFYSGhh MjBfNDE2ZDY1NzI2OTYzNjEyZjQ5NmU2NDY5NjE2ZTYxNzA2ZjZjNjk3M1Z4UVhKZmEyMF80 MTZkNjU3MjY5NjM2MTJmNTI2MTZlNmI2OTZlNWY0OTZlNmM2NTc0VnhRWExkYTIwXzQxNmQ2 NTcyNjk2MzYxMmY1MzYxNmU3NDYxNWY0OTczNjE2MjY1NmNWeFFYTmJhMjBfNDE2ZDY1NzI2 OTYzNjEyZjUzNjM2ZjcyNjU3MzYyNzk3Mzc1NmU2NFZ4UVhPemEyMF80MTZlNzQ2MTcyNjM3 NDY5NjM2MTJmNGQ2MTYzNzE3NTYxNzI2OTY1VnhRWFF4YTIwXzUwNjE2MzY5NjY2OTYzMmY0 MjZmNzU2NzYxNjk2ZTc2Njk2YzZjNjVWeFFYU3ZhMjBfNTA2MTYzNjk2NjY5NjMyZjUwNmY3 Mjc0NWY0ZDZmNzI2NTczNjI3OVZ4UVhVdGEyMV80MTZkNjU3MjY5NjM2MTJmNDM2MTZkNjI3 MjY5NjQ2NzY1NWY0MjYxNzlWeFFYV3RhMjFfNDE2ZDY1NzI2OTYzNjEyZjQzNmY3MjYxNmM1 ZjQ4NjE3MjYyNmY3NTcyVnhRWFl0YTIxXzQxNmQ2NTcyNjk2MzYxMmY0OTZlNjQ2OTYxNmU2 MTJmNTY2NTc2NjE3OVZ4UVlBdGEyMV80MTZkNjU3MjY5NjM2MTJmNGM2Zjc3NjU3MjVmNTA3 MjY5NmU2MzY1NzNWeFFZQ3RhMjFfNDE2ZDY1NzI2OTYzNjEyZjUwNmY3Mjc0NWY2ZjY2NWY1 MzcwNjE2OTZlVnhRWUV0YTIxXzQxNmQ2NTcyNjk2MzYxMmY1MzYxNmU3NDZmNWY0NDZmNmQ2 OTZlNjc2ZlZ4UVlHdGEyMV80MTZkNjU3MjY5NjM2MTJmNTM3NDVmNDI2MTcyNzQ2ODY1NmM2 NTZkNzlWeFFZSXRhMjFfNDE2ZDY1NzI2OTYzNjEyZjUzNzc2OTY2NzQ1ZjQzNzU3MjcyNjU2 ZTc0VnhRWUt0YTIxXzQxNzU3Mzc0NzI2MTZjNjk2MTJmNDI3MjZmNmI2NTZlNWY0ODY5NmM2 Y1Z4UVlNdGEyMl80MTZkNjU3MjY5NjM2MTJmNDI2MTY4Njk2MTVmNDI2MTZlNjQ2NTcyNjE3 M1Z4UVlPdmEyMl80MTZkNjU3MjY5NjM2MTJmNTA2ZjcyNzQyZDYxNzUyZDUwNzI2OTZlNjM2 NVZ4UVlReGEyMl80MTc0NmM2MTZlNzQ2OTYzMmY1MzZmNzU3NDY4NWY0NzY1NmY3MjY3Njk2 MVZ4UVlTemEyM180MTZkNjU3MjY5NjM2MTJmNDE3MjY3NjU2ZTc0Njk2ZTYxMmY1MzYxNmM3 NDYxVnhRWVZkYTIzXzQxNmQ2NTcyNjk2MzYxMmY0OTZlNjQ2OTYxNmU2MTJmNGQ2MTcyNjU2 ZTY3NmZWeFFZWGhhMjNfNDE2ZDY1NzI2OTYzNjEyZjQ5NmU2NDY5NjE2ZTYxMmY1NzY5NmU2 MTZkNjE2M1Z4UVlabGEyNV80MTZkNjU3MjY5NjM2MTJmNDE3MjY3NjU2ZTc0Njk2ZTYxMmY1 NDc1NjM3NTZkNjE2ZVZ4UVpCdGEyNV80MTZkNjU3MjY5NjM2MTJmNDE3MjY3NjU2ZTc0Njk2 ZTYxMmY1NTczNjg3NTYxNjk2MVZ4UVpFYmEyNV80MTZkNjU3MjY5NjM2MTJmNDk2ZTY0Njk2 MTZlNjEyZjU0NjU2YzZjNWY0MzY5NzQ3OVZ4UVpHamEyNV80MTZkNjU3MjY5NjM2MTJmNDk2 ZTY0Njk2MTZlNjEyZjU2Njk2ZTYzNjU2ZTZlNjU3M1Z4UVpJcmEyNV80MTZlNzQ2MTcyNjM3 NDY5NjM2MTJmNDQ3NTZkNmY2ZTc0NDQ1NTcyNzY2OTZjNmM2NVZ4UVpLemEyNl80MTZkNjU3 MjY5NjM2MTJmNDE3MjY3NjU2ZTc0Njk2ZTYxMmY0YzYxNWY1MjY5NmY2YTYxVnhRWk5qYTI2 XzQxNmQ2NTcyNjk2MzYxMmY0MTcyNjc2NTZlNzQ2OTZlNjEyZjUzNjE2ZTVmNGE3NTYxNmVW eFFaUHRhMjZfNDE2ZDY1NzI2OTYzNjEyZjQxNzI2NzY1NmU3NDY5NmU2MTJmNTM2MTZlNWY0 Yzc1Njk3M1Z4UVpTZGEyNl80MTZkNjU3MjY5NjM2MTJmNDk2ZTY0Njk2MTZlNjEyZjUwNjU3 NDY1NzI3MzYyNzU3MjY3VnhRWlVuYTI3XzQxNmQ2NTcyNjk2MzYxMmY0YjY1NmU3NDc1NjM2 Yjc5MmY0ZDZmNmU3NDY5NjM2NTZjNmM2ZlZ4UVpXemEyN180MTZkNjU3MjY5NjM2MTJmNGU2 ZjcyNzQ2ODVmNDQ2MTZiNmY3NDYxMmY0MjY1NzU2YzYxNjhWeFFaWmxhMjdfNDE2ZDY1NzI2 OTYzNjEyZjRlNmY3Mjc0Njg1ZjQ0NjE2YjZmNzQ2MTJmNDM2NTZlNzQ2NTcyVnhRQkFCeGEz MF80MTZkNjU3MjY5NjM2MTJmNDE3MjY3NjU2ZTc0Njk2ZTYxMmY1MjY5NmY1ZjQ3NjE2YzZj NjU2NzZmNzNWeFFCQUVxYTMwXzQxNmQ2NTcyNjk2MzYxMmY0ZTZmNzI3NDY4NWY0NDYxNmI2 Zjc0NjEyZjRlNjU3NzVmNTM2MTZjNjU2ZFpRQkFId0ZOYU5iTmlOZk14UUJBSHlaaSANCg0K DQpUaGUgZmlyc3QgdGltZSBJIGVuY291bnRlcmVkIHRoaXMgc3ltYm9sIGluIHBob2JvcyBJ IHRob3VnaDogV1RGPyBUaGVuIEkgDQp0cmllZCB0byBkZW1hbmdsZSBpdDoNCmNvcmUuZXhj ZXB0aW9uLlJhbmdlRXJyb3JAc3JjXGNvcmVcZGVtYW5nbGUuZCgyMzApOiBSYW5nZSB2aW9s YXRpb24NCg0KSSB3YXMgdGhlbiBxdWlja2x5IGluZm9ybWVkIGJ5IFJhaW5lciBTY2hldXR6 ZSB3aGF0IHRoZSBjb3JyZWN0IA0KZGVtYW5nbGluZyBmb3IgdGhpcyBzeW1ib2xzIGlzOg0K DQpwdXJlIG5vdGhyb3cgQG5vZ2MgQHNhZmUgaW50IG9iamVjdC5fX3N3aXRjaCEoaW1tdXRh YmxlKGNoYXIpLCANCiJDU1Q2Q0RUIiwgIkVTVDVFRFQiLCAiRXRjL0dNVCIsICJNU1Q3TURU IiwgIlBTVDhQRFQiLCAiQXNpYS9BZGVuIiwgDQoiQXNpYS9CYWt1IiwgIkFzaWEvRGlsaSIs ICJBc2lhL0hvdmQiLCAiQXNpYS9PbXNrIiwgIkFzaWEvT3JhbCIsIA0KIkV0Yy9HTVQrMSIs ICJFdGMvR01UKzIiLCAiRXRjL0dNVCszIiwgIkV0Yy9HTVQrNCIsICJFdGMvR01UKzUiLCAN CiJFdGMvR01UKzYiLCAiRXRjL0dNVCs3IiwgIkV0Yy9HTVQrOCIsICJFdGMvR01UKzkiLCAi RXRjL0dNVC0xIiwgDQoiRXRjL0dNVC0yIiwgIkV0Yy9HTVQtMyIsICJFdGMvR01ULTQiLCAi RXRjL0dNVC01IiwgIkV0Yy9HTVQtNiIsIA0KIkV0Yy9HTVQtNyIsICJFdGMvR01ULTgiLCAi RXRjL0dNVC05IiwgIkFzaWEvQW1tYW4iLCAiQXNpYS9BcXRhdSIsIA0KIkFzaWEvQ2hpdGEi LCAiQXNpYS9EaGFrYSIsICJBc2lhL0R1YmFpIiwgIkFzaWEvS2FidWwiLCAiQXNpYS9NYWNh dSIsIA0KIkFzaWEvUWF0YXIiLCAiQXNpYS9TZW91bCIsICJBc2lhL1Rva3lvIiwgIkFzaWEv VG9tc2siLCAiRXRjL0dNVCsxMCIsIA0KIkV0Yy9HTVQrMTEiLCAiRXRjL0dNVCsxMiIsICJF dGMvR01ULTEwIiwgIkV0Yy9HTVQtMTEiLCAiRXRjL0dNVC0xMiIsIA0KIkV0Yy9HTVQtMTMi LCAiRXRjL0dNVC0xNCIsICJBZnJpY2EvSnViYSIsICJBZnJpY2EvTG9tZSIsICJBc2lhL0Fs bWF0eSIsIA0KIkFzaWEvQW5hZHlyIiwgIkFzaWEvQXF0b2JlIiwgIkFzaWEvQmVpcnV0Iiwg IkFzaWEvQnJ1bmVpIiwgDQoiQXNpYS9IZWJyb24iLCAiQXNpYS9LdXdhaXQiLCAiQXNpYS9N YW5pbGEiLCAiQXNpYS9NdXNjYXQiLCANCiJBc2lhL1JpeWFkaCIsICJBc2lhL1NhaWdvbiIs ICJBc2lhL1RhaXBlaSIsICJBc2lhL1RlaHJhbiIsIA0KIkFzaWEvVXJ1bXFpIiwgIkV1cm9w ZS9LaWV2IiwgIkV1cm9wZS9Pc2xvIiwgIkV1cm9wZS9SaWdhIiwgDQoiRXVyb3BlL1JvbWUi LCAiSW5kaWFuL01haGUiLCAiQWZyaWNhL0FjY3JhIiwgIkFmcmljYS9DYWlybyIsIA0KIkFm cmljYS9DZXV0YSIsICJBZnJpY2EvRGFrYXIiLCAiQWZyaWNhL0xhZ29zIiwgIkFmcmljYS9U dW5pcyIsIA0KIkFtZXJpY2EvQWRhayIsICJBbWVyaWNhL0xpbWEiLCAiQW1lcmljYS9Ob21l IiwgIkFzaWEvQmFnaGRhZCIsIA0KIkFzaWEvQmFocmFpbiIsICJBc2lhL0Jhbmdrb2siLCAi QXNpYS9CYXJuYXVsIiwgIkFzaWEvQmlzaGtlayIsIA0KIkFzaWEvQ29sb21ibyIsICJBc2lh L0lya3V0c2siLCAiQXNpYS9KYWthcnRhIiwgIkFzaWEvS2FyYWNoaSIsIA0KIkFzaWEvS3Vj aGluZyIsICJBc2lhL01hZ2FkYW4iLCAiQXNpYS9OaWNvc2lhIiwgIkFzaWEvUmFuZ29vbiIs IA0KIkFzaWEvVGJpbGlzaSIsICJBc2lhL1RoaW1waHUiLCAiQXNpYS9ZYWt1dHNrIiwgIkFz aWEvWWVyZXZhbiIsIA0KIkV1cm9wZS9NYWx0YSIsICJFdXJvcGUvTWluc2siLCAiRXVyb3Bl L1BhcmlzIiwgIkV1cm9wZS9Tb2ZpYSIsIA0KIkV1cm9wZS9WYWR1eiIsICJJbmRpYW4vQ29j b3MiLCAiUGFjaWZpYy9BcGlhIiwgIlBhY2lmaWMvRmlqaSIsIA0KIlBhY2lmaWMvR3VhbSIs ICJQYWNpZmljL05pdWUiLCAiUGFjaWZpYy9UcnVrIiwgIlBhY2lmaWMvV2FrZSIsIA0KIkFm cmljYS9Bc21lcmEiLCAiQWZyaWNhL0JhbWFrbyIsICJBZnJpY2EvQmFuZ3VpIiwgIkFmcmlj YS9CYW5qdWwiLCANCiJBZnJpY2EvQmlzc2F1IiwgIkFmcmljYS9Eb3VhbGEiLCAiQWZyaWNh L0hhcmFyZSIsICJBZnJpY2EvS2lnYWxpIiwgDQoiQWZyaWNhL0x1YW5kYSIsICJBZnJpY2Ev THVzYWthIiwgIkFmcmljYS9NYWxhYm8iLCAiQWZyaWNhL01hcHV0byIsIA0KIkFmcmljYS9N YXNlcnUiLCAiQWZyaWNhL05pYW1leSIsICJBbWVyaWNhL0FydWJhIiwgIkFtZXJpY2EvQmFo aWEiLCANCiJBbWVyaWNhL0JlbGVtIiwgIkFtZXJpY2EvQm9pc2UiLCAiQW1lcmljYS9KdWp1 eSIsICJBbWVyaWNhL1NpdGthIiwgDQoiQW1lcmljYS9UaHVsZSIsICJBc2lhL0FzaGdhYmF0 IiwgIkFzaWEvQ2FsY3V0dGEiLCAiQXNpYS9EYW1hc2N1cyIsIA0KIkFzaWEvRHVzaGFuYmUi LCAiQXNpYS9KYXlhcHVyYSIsICJBc2lhL0thdG1hbmR1IiwgIkFzaWEvS2hhbmR5Z2EiLCAN CiJBc2lhL01ha2Fzc2FyIiwgIkFzaWEvU2FraGFsaW4iLCAiQXNpYS9TaGFuZ2hhaSIsICJB c2lhL1Rhc2hrZW50IiwgDQoiQXNpYS9Vc3QtTmVyYSIsICJFdXJvcGUvQXRoZW5zIiwgIkV1 cm9wZS9CZXJsaW4iLCAiRXVyb3BlL0R1YmxpbiIsIA0KIkV1cm9wZS9KZXJzZXkiLCAiRXVy b3BlL0xpc2JvbiIsICJFdXJvcGUvTG9uZG9uIiwgIkV1cm9wZS9NYWRyaWQiLCANCiJFdXJv cGUvTW9uYWNvIiwgIkV1cm9wZS9Nb3Njb3ciLCAiRXVyb3BlL1ByYWd1ZSIsICJFdXJvcGUv U2FtYXJhIiwgDQoiRXVyb3BlL1Nrb3BqZSIsICJFdXJvcGUvVGlyYW5lIiwgIkV1cm9wZS9W aWVubmEiLCAiRXVyb3BlL1dhcnNhdyIsIA0KIkV1cm9wZS9aYWdyZWIiLCAiRXVyb3BlL1p1 cmljaCIsICJJbmRpYW4vQ2hhZ29zIiwgIkluZGlhbi9Db21vcm8iLCANCiJQYWNpZmljL0Vm YXRlIiwgIlBhY2lmaWMvTmF1cnUiLCAiUGFjaWZpYy9QYWxhdSIsICJBZnJpY2EvQWJpZGph biIsIA0KIkFmcmljYS9BbGdpZXJzIiwgIkFmcmljYS9Db25ha3J5IiwgIkFmcmljYS9LYW1w YWxhIiwgIkFmcmljYS9NYmFiYW5lIiwgDQoiQWZyaWNhL05haXJvYmkiLCAiQWZyaWNhL1Ry aXBvbGkiLCAiQW1lcmljYS9CZWxpemUiLCAiQW1lcmljYS9Cb2dvdGEiLCANCiJBbWVyaWNh L0NhbmN1biIsICJBbWVyaWNhL0NheW1hbiIsICJBbWVyaWNhL0N1aWFiYSIsICJBbWVyaWNh L0Rhd3NvbiIsIA0KIkFtZXJpY2EvRGVudmVyIiwgIkFtZXJpY2EvR3V5YW5hIiwgIkFtZXJp Y2EvSGF2YW5hIiwgIkFtZXJpY2EvSW51dmlrIiwgDQoiQW1lcmljYS9KdW5lYXUiLCAiQW1l cmljYS9MYV9QYXoiLCAiQW1lcmljYS9NYWNlaW8iLCAiQW1lcmljYS9NYW5hdXMiLCANCiJB bWVyaWNhL01lcmlkYSIsICJBbWVyaWNhL05hc3NhdSIsICJBbWVyaWNhL1BhbmFtYSIsICJB bWVyaWNhL1JlY2lmZSIsIA0KIkFtZXJpY2EvUmVnaW5hIiwgIkFzaWEvSG9uZ19Lb25nIiwg IkFzaWEvSmVydXNhbGVtIiwgIkFzaWEvS2FtY2hhdGthIiwgDQoiQXNpYS9Qb250aWFuYWsi LCAiQXNpYS9QeW9uZ3lhbmciLCAiQXNpYS9ReXp5bG9yZGEiLCAiQXNpYS9TYW1hcmthbmQi LCANCiJBc2lhL1NpbmdhcG9yZSIsICJBc2lhL1ZpZW50aWFuZSIsICJFdXJvcGUvQW5kb3Jy YSIsICJFdXJvcGUvVGFsbGlubiIsIA0KIkV1cm9wZS9WYXRpY2FuIiwgIkV1cm9wZS9WaWxu aXVzIiwgIkluZGlhbi9NYXlvdHRlIiwgIkluZGlhbi9SZXVuaW9uIiwgDQoiUGFjaWZpYy9F YXN0ZXIiLCAiUGFjaWZpYy9Lb3NyYWUiLCAiUGFjaWZpYy9NYWp1cm8iLCAiUGFjaWZpYy9N aWR3YXkiLCANCiJQYWNpZmljL05vdW1lYSIsICJQYWNpZmljL1BvbmFwZSIsICJQYWNpZmlj L1NhaXBhbiIsICJQYWNpZmljL1RhaGl0aSIsIA0KIlBhY2lmaWMvVGFyYXdhIiwgIlBhY2lm aWMvV2FsbGlzIiwgIkFmcmljYS9CbGFudHlyZSIsIA0KIkFmcmljYS9Eamlib3V0aSIsICJB ZnJpY2EvRWxfQWFpdW4iLCAiQWZyaWNhL0ZyZWV0b3duIiwgDQoiQWZyaWNhL0dhYm9yb25l IiwgIkFmcmljYS9LaGFydG91bSIsICJBZnJpY2EvS2luc2hhc2EiLCANCiJBZnJpY2EvTW9u cm92aWEiLCAiQWZyaWNhL05kamFtZW5hIiwgIkFmcmljYS9TYW9fVG9tZSIsIA0KIkFmcmlj YS9XaW5kaG9layIsICJBbWVyaWNhL0FudGlndWEiLCAiQW1lcmljYS9DYXJhY2FzIiwgDQoi QW1lcmljYS9DYXllbm5lIiwgIkFtZXJpY2EvQ2hpY2FnbyIsICJBbWVyaWNhL0NvcmRvYmEi LCANCiJBbWVyaWNhL0NyZXN0b24iLCAiQW1lcmljYS9DdXJhY2FvIiwgIkFtZXJpY2EvRGV0 cm9pdCIsIA0KIkFtZXJpY2EvR29kdGhhYiIsICJBbWVyaWNhL0dyZW5hZGEiLCAiQW1lcmlj YS9IYWxpZmF4IiwgDQoiQW1lcmljYS9JcWFsdWl0IiwgIkFtZXJpY2EvSmFtYWljYSIsICJB bWVyaWNhL01hbmFndWEiLCANCiJBbWVyaWNhL01hcmlnb3QiLCAiQW1lcmljYS9NZW5kb3ph IiwgIkFtZXJpY2EvTW9uY3RvbiIsIA0KIkFtZXJpY2EvTmlwaWdvbiIsICJBbWVyaWNhL05v cm9uaGEiLCAiQW1lcmljYS9PamluYWdhIiwgDQoiQW1lcmljYS9QaG9lbml4IiwgIkFtZXJp Y2EvVGlqdWFuYSIsICJBbWVyaWNhL1Rvcm9udG8iLCANCiJBbWVyaWNhL1RvcnRvbGEiLCAi QW1lcmljYS9ZYWt1dGF0IiwgIkFzaWEvQ2hvaWJhbHNhbiIsIA0KIkFzaWEvUGhub21fUGVu aCIsICJBdGxhbnRpYy9Bem9yZXMiLCAiQXRsYW50aWMvQ2FuYXJ5IiwgDQoiQXRsYW50aWMv RmFlcm9lIiwgIkF1c3RyYWxpYS9FdWNsYSIsICJBdXN0cmFsaWEvUGVydGgiLCANCiJFdXJv cGUvQmVsZ3JhZGUiLCAiRXVyb3BlL0JydXNzZWxzIiwgIkV1cm9wZS9CdWRhcGVzdCIsIA0K IkV1cm9wZS9CdXNpbmdlbiIsICJFdXJvcGUvQ2hpc2luYXUiLCAiRXVyb3BlL0d1ZXJuc2V5 IiwgDQoiRXVyb3BlL0hlbHNpbmtpIiwgIkV1cm9wZS9Jc3RhbmJ1bCIsICJFdXJvcGUvU2Fy YWpldm8iLCANCiJFdXJvcGUvVXpoZ29yb2QiLCAiSW5kaWFuL01hbGRpdmVzIiwgIlBhY2lm aWMvQ2hhdGhhbSIsIA0KIlBhY2lmaWMvRmFrYW9mbyIsICJQYWNpZmljL05vcmZvbGsiLCAi QWZyaWNhL0J1anVtYnVyYSIsIA0KIkFmcmljYS9Nb2dhZGlzaHUiLCAiQW1lcmljYS9Bbmd1 aWxsYSIsICJBbWVyaWNhL0FyZ3VhaW5hIiwgDQoiQW1lcmljYS9Bc3VuY2lvbiIsICJBbWVy aWNhL0JhcmJhZG9zIiwgIkFtZXJpY2EvRG9taW5pY2EiLCANCiJBbWVyaWNhL0VkbW9udG9u IiwgIkFtZXJpY2EvRWlydW5lcGUiLCAiQW1lcmljYS9NYXphdGxhbiIsIA0KIkFtZXJpY2Ev TWlxdWVsb24iLCAiQW1lcmljYS9Nb250cmVhbCIsICJBbWVyaWNhL05ld19Zb3JrIiwgDQoi QW1lcmljYS9SZXNvbHV0ZSIsICJBbWVyaWNhL1NhbnRhcmVtIiwgIkFtZXJpY2EvU2FudGlh Z28iLCANCiJBbWVyaWNhL1N0X0pvaG5zIiwgIkFtZXJpY2EvU3RfS2l0dHMiLCAiQW1lcmlj YS9TdF9MdWNpYSIsIA0KIkFtZXJpY2EvV2lubmlwZWciLCAiQW50YXJjdGljYS9DYXNleSIs ICJBbnRhcmN0aWNhL0RhdmlzIiwgDQoiQW50YXJjdGljYS9TeW93YSIsICJBc2lhL0tyYXNu b3lhcnNrIiwgIkFzaWEvTm92b3NpYmlyc2siLCANCiJBc2lhL1VsYWFuYmFhdGFyIiwgIkFz aWEvVmxhZGl2b3N0b2siLCAiQXRsYW50aWMvQmVybXVkYSIsIA0KIkF0bGFudGljL01hZGVp cmEiLCAiQXRsYW50aWMvU3RhbmxleSIsICJBdXN0cmFsaWEvQ3VycmllIiwgDQoiQXVzdHJh bGlhL0RhcndpbiIsICJBdXN0cmFsaWEvSG9iYXJ0IiwgIkF1c3RyYWxpYS9TeWRuZXkiLCAN CiJFdXJvcGUvQW1zdGVyZGFtIiwgIkV1cm9wZS9Bc3RyYWtoYW4iLCAiRXVyb3BlL0J1Y2hh cmVzdCIsIA0KIkV1cm9wZS9HaWJyYWx0YXIiLCAiRXVyb3BlL0xqdWJsamFuYSIsICJFdXJv cGUvTWFyaWVoYW1uIiwgDQoiRXVyb3BlL1BvZGdvcmljYSIsICJFdXJvcGUvU3RvY2tob2xt IiwgIkV1cm9wZS9Wb2xnb2dyYWQiLCANCiJJbmRpYW4vQ2hyaXN0bWFzIiwgIkluZGlhbi9L ZXJndWVsZW4iLCAiSW5kaWFuL01hdXJpdGl1cyIsIA0KIlBhY2lmaWMvQXVja2xhbmQiLCAi UGFjaWZpYy9GdW5hZnV0aSIsICJQYWNpZmljL0hvbm9sdWx1IiwgDQoiUGFjaWZpYy9Kb2hu c3RvbiIsICJBZnJpY2EvQ2FzYWJsYW5jYSIsICJBZnJpY2EvTGlicmV2aWxsZSIsIA0KIkFm cmljYS9MdWJ1bWJhc2hpIiwgIkFmcmljYS9Ob3Vha2Nob3R0IiwgIkFmcmljYS9Qb3J0by1O b3ZvIiwgDQoiQW1lcmljYS9BbmNob3JhZ2UiLCAiQW1lcmljYS9BcmFndWFpbmEiLCAiQW1l cmljYS9Cb2FfVmlzdGEiLCANCiJBbWVyaWNhL0NhdGFtYXJjYSIsICJBbWVyaWNhL0NoaWh1 YWh1YSIsICJBbWVyaWNhL0ZvcnRhbGV6YSIsIA0KIkFtZXJpY2EvR2xhY2VfQmF5IiwgIkFt ZXJpY2EvR29vc2VfQmF5IiwgIkFtZXJpY2EvR3VhdGVtYWxhIiwgDQoiQW1lcmljYS9HdWF5 YXF1aWwiLCAiQW1lcmljYS9NYXRhbW9yb3MiLCAiQW1lcmljYS9NZW5vbWluZWUiLCANCiJB bWVyaWNhL01vbnRlcnJleSIsICJBbWVyaWNhL1Nhb19QYXVsbyIsICJBbWVyaWNhL1N0X1Ro b21hcyIsIA0KIkFtZXJpY2EvVmFuY291dmVyIiwgIkFudGFyY3RpY2EvTWF3c29uIiwgIkFu dGFyY3RpY2EvUGFsbWVyIiwgDQoiQW50YXJjdGljYS9Wb3N0b2siLCAiQXNpYS9LdWFsYV9M dW1wdXIiLCAiQXNpYS9Ob3Zva3V6bmV0c2siLCANCiJFdXJvcGUvQnJhdGlzbGF2YSIsICJF dXJvcGUvQ29wZW5oYWdlbiIsICJFdXJvcGUvTHV4ZW1ib3VyZyIsIA0KIkV1cm9wZS9TYW5f TWFyaW5vIiwgIkV1cm9wZS9TaW1mZXJvcG9sIiwgIkV1cm9wZS9aYXBvcm96aHllIiwgDQoi UGFjaWZpYy9FbmRlcmJ1cnkiLCAiUGFjaWZpYy9HYWxhcGFnb3MiLCAiUGFjaWZpYy9Ld2Fq YWxlaW4iLCANCiJQYWNpZmljL01hcnF1ZXNhcyIsICJQYWNpZmljL1BhZ29fUGFnbyIsICJQ YWNpZmljL1Jhcm90b25nYSIsIA0KIlBhY2lmaWMvVG9uZ2F0YXB1IiwgIkFmcmljYS9BZGRp c19BYmFiYSIsICJBZnJpY2EvQnJhenphdmlsbGUiLCANCiJBZnJpY2EvT3VhZ2Fkb3Vnb3Ui LCAiQW1lcmljYS9Db3N0YV9SaWNhIiwgIkFtZXJpY2EvR3JhbmRfVHVyayIsIA0KIkFtZXJp Y2EvR3VhZGVsb3VwZSIsICJBbWVyaWNhL0hlcm1vc2lsbG8iLCAiQW1lcmljYS9LcmFsZW5k aWprIiwgDQoiQW1lcmljYS9Mb3Vpc3ZpbGxlIiwgIkFtZXJpY2EvTWFydGluaXF1ZSIsICJB bWVyaWNhL01vbnRldmlkZW8iLCANCiJBbWVyaWNhL01vbnRzZXJyYXQiLCAiQW1lcmljYS9Q YXJhbWFyaWJvIiwgIkFtZXJpY2EvUmlvX0JyYW5jbyIsIA0KIkFtZXJpY2EvU3RfVmluY2Vu dCIsICJBbWVyaWNhL1doaXRlaG9yc2UiLCAiQW50YXJjdGljYS9NY011cmRvIiwgDQoiQW50 YXJjdGljYS9Sb3RoZXJhIiwgIkFzaWEvU3JlZG5la29seW1zayIsICJBc2lhL1lla2F0ZXJp bmJ1cmciLCANCiJBdGxhbnRpYy9SZXlramF2aWsiLCAiQXRsYW50aWMvU3RfSGVsZW5hIiwg IkF1c3RyYWxpYS9BZGVsYWlkZSIsIA0KIkF1c3RyYWxpYS9CcmlzYmFuZSIsICJBdXN0cmFs aWEvTGluZGVtYW4iLCAiRXVyb3BlL0lzbGVfb2ZfTWFuIiwgDQoiRXVyb3BlL0thbGluaW5n cmFkIiwgIlBhY2lmaWMvS2lyaXRpbWF0aSIsICJBZnJpY2EvSm9oYW5uZXNidXJnIiwgDQoi QW1lcmljYS9FbF9TYWx2YWRvciIsICJBbWVyaWNhL0xvc19BbmdlbGVzIiwgIkFtZXJpY2Ev TWV4aWNvX0NpdHkiLCANCiJBbWVyaWNhL1BhbmduaXJ0dW5nIiwgIkFtZXJpY2EvUG9ydG9f VmVsaG8iLCAiQW1lcmljYS9QdWVydG9fUmljbyIsIA0KIkFtZXJpY2EvUmFpbnlfUml2ZXIi LCAiQW1lcmljYS9UZWd1Y2lnYWxwYSIsICJBbWVyaWNhL1RodW5kZXJfQmF5IiwgDQoiQW1l cmljYS9ZZWxsb3drbmlmZSIsICJBcmN0aWMvTG9uZ3llYXJieWVuIiwgIkF0bGFudGljL0Nh cGVfVmVyZGUiLCANCiJBdXN0cmFsaWEvTG9yZF9Ib3dlIiwgIkF1c3RyYWxpYS9NZWxib3Vy bmUiLCAiSW5kaWFuL0FudGFuYW5hcml2byIsIA0KIlBhY2lmaWMvR3VhZGFsY2FuYWwiLCAi QWZyaWNhL0Rhcl9lc19TYWxhYW0iLCAiQW1lcmljYS9CbGFuYy1TYWJsb24iLCANCiJBbWVy aWNhL0J1ZW5vc19BaXJlcyIsICJBbWVyaWNhL0NhbXBvX0dyYW5kZSIsICJBbWVyaWNhL0Rh bm1hcmtzaGF2biIsIA0KIkFtZXJpY2EvRGF3c29uX0NyZWVrIiwgIkFtZXJpY2EvSW5kaWFu YS9Lbm94IiwgIkFtZXJpY2EvSW5kaWFuYXBvbGlzIiwgDQoiQW1lcmljYS9SYW5raW5fSW5s ZXQiLCAiQW1lcmljYS9TYW50YV9Jc2FiZWwiLCAiQW1lcmljYS9TY29yZXNieXN1bmQiLCAN CiJBbnRhcmN0aWNhL01hY3F1YXJpZSIsICJQYWNpZmljL0JvdWdhaW52aWxsZSIsICJQYWNp ZmljL1BvcnRfTW9yZXNieSIsIA0KIkFtZXJpY2EvQ2FtYnJpZGdlX0JheSIsICJBbWVyaWNh L0NvcmFsX0hhcmJvdXIiLCANCiJBbWVyaWNhL0luZGlhbmEvVmV2YXkiLCAiQW1lcmljYS9M b3dlcl9QcmluY2VzIiwgDQoiQW1lcmljYS9Qb3J0X29mX1NwYWluIiwgIkFtZXJpY2EvU2Fu dG9fRG9taW5nbyIsIA0KIkFtZXJpY2EvU3RfQmFydGhlbGVteSIsICJBbWVyaWNhL1N3aWZ0 X0N1cnJlbnQiLCANCiJBdXN0cmFsaWEvQnJva2VuX0hpbGwiLCAiQW1lcmljYS9CYWhpYV9C YW5kZXJhcyIsIA0KIkFtZXJpY2EvUG9ydC1hdS1QcmluY2UiLCAiQXRsYW50aWMvU291dGhf R2VvcmdpYSIsIA0KIkFtZXJpY2EvQXJnZW50aW5hL1NhbHRhIiwgIkFtZXJpY2EvSW5kaWFu YS9NYXJlbmdvIiwgDQoiQW1lcmljYS9JbmRpYW5hL1dpbmFtYWMiLCAiQW1lcmljYS9Bcmdl bnRpbmEvVHVjdW1hbiIsIA0KIkFtZXJpY2EvQXJnZW50aW5hL1VzaHVhaWEiLCAiQW1lcmlj YS9JbmRpYW5hL1RlbGxfQ2l0eSIsIA0KIkFtZXJpY2EvSW5kaWFuYS9WaW5jZW5uZXMiLCAi QW50YXJjdGljYS9EdW1vbnREVXJ2aWxsZSIsIA0KIkFtZXJpY2EvQXJnZW50aW5hL0xhX1Jp b2phIiwgIkFtZXJpY2EvQXJnZW50aW5hL1Nhbl9KdWFuIiwgDQoiQW1lcmljYS9BcmdlbnRp bmEvU2FuX0x1aXMiLCAiQW1lcmljYS9JbmRpYW5hL1BldGVyc2J1cmciLCANCiJBbWVyaWNh L0tlbnR1Y2t5L01vbnRpY2VsbG8iLCAiQW1lcmljYS9Ob3J0aF9EYWtvdGEvQmV1bGFoIiwg DQoiQW1lcmljYS9Ob3J0aF9EYWtvdGEvQ2VudGVyIiwgIkFtZXJpY2EvQXJnZW50aW5hL1Jp b19HYWxsZWdvcyIsIA0KIkFtZXJpY2EvTm9ydGhfRGFrb3RhL05ld19TYWxlbSIpLl9fc3dp dGNoKHNjb3BlIGNvbnN0KGltbXV0YWJsZShjaGFyKVtdKSkNCg0KU28gSSB3YXMgdGhpbmtp bmcgdG8gbXlzZWxmOiBJcyBpdCByZWFsbHkgYSBnb29kIGlkZWEgdG8gbG93ZXIgc3RyaW5n IA0Kc3dpdGNoZXMgdG8gYSB0ZW1wbGF0ZSBpZiBpdCByZXN1bHRzIGluIHN1Y2ggc3ltYm9s cz8gVGhpcyBzeW1ib2wgYWxvbmUgDQp0YWtlcyAxNzgxNSBCeXRlcy4NCg0KSWYgd2UgdGhp bmsgdGhpcyBpcyBhIGdvb2QgaWRlYSwgc2hvdWxkIHdlIHJld3JpdGUgdGhpcyBwYXJ0aWN1 bGFyIA0Kc3RyaW5nIHN3aXRjaCB0byB1c2UgYSBhc3NvY2lhdGl2ZSBhcnJheSBpbnN0ZWFk IHRvIGF2b2lkIHRoZSBvdmVybHkgDQpsb25nIHN5bWJvbCBuYW1lPw0KDQotLSANCktpbmQg UmVnYXJkcw0KQmVuamFtaW4gVGhhdXQNCg==
Jan 25 2018
On Thursday, January 25, 2018 19:21:29 Benjamin Thaut via Digitalmars-d wrote:If we think this is a good idea, should we rewrite this particular string switch to use a associative array instead to avoid the overly long symbol name?That particular switch statement is in a function that's deprecated and scheduled to be completely removed in about six months, so I don't see much point in worrying about it unless it's causing serious problems, and while that symbol name is stupidly long, AFAIK, it's not really causing any problems. I never would have thought that a switch statement would even have a symbol associated with it though. Clearly, I have no clue about how they're implemented. - Jonathan M Davis
Jan 25 2018
Am 25.01.2018 um 19:42 schrieb Jonathan M Davis:That particular switch statement is in a function that's deprecated and scheduled to be completely removed in about six months, so I don't see much point in worrying about it unless it's causing serious problems, and while that symbol name is stupidly long, AFAIK, it's not really causing any problems.The main problem is binary size for shared library verisons of phobos. The overly long symbols names contribute significantly to binary size as for both exports and imports. The full symbol name is stored in the dll and the exe that uses the dll. -- Kind Regards Benjamin Thaut
Jan 25 2018
On Thu, Jan 25, 2018 at 07:21:29PM +0100, Benjamin Thaut via Digitalmars-d wrote:_D6object__T8__switchTyaVxAyaa7_[...snip ridiculously long symbol...] The first time I encountered this symbol in phobos I though: WTF? Then I tried to demangle it: core.exception.RangeError src\core\demangle.d(230): Range violationLOL! This reminds me of the days before Rainer's symbol backreferencing PR was merged, where a UFCS chain of range algorithms causes exponential growth in symbol length. This one isn't exponential, but it *is* still ridiculously long. We need to fix it. :-DI was then quickly informed by Rainer Scheutze what the correct demangling for this symbols is: pure nothrow nogc safe int object.__switch!(immutable(char), "CST6CDT", "EST5EDT", "Etc/GMT", "MST7MDT", "PST8PDT", "Asia/Aden", "Asia/Baku",[... snip ridiculously long template argument list ...]"America/Argentina/Rio_Gallegos", "America/North_Dakota/New_Salem").__switch(scope const(immutable(char)[])) So I was thinking to myself: Is it really a good idea to lower string switches to a template if it results in such symbols? This symbol alone takes 17815 Bytes.I think this is part of a much larger issue that we need to tackle, that is, long template argument lists (esp. since D allows you to directly manipulate these lists aka tuples aka AliasSeq, so user code is liable to generate large numbers of these things with potentially very long lengths). I don't have a clear solution yet, but my initial thought is that in cases like these, where the list is basically unique, all that's *really* required of the generated symbol is that it be unique. There is really no need to go encoding every last detail into the symbol name, as if the first 1000 bytes or so of the symbol isn't probably already enough to disambiguate it from every other symbol in the program. If we could somehow detect or annotate these cases as merely requiring a unique symbol, then we could just substitute the whole monstrous thing with a hash, like an MD5 or SHA checksum, which will be much less than 100 bytes.If we think this is a good idea, should we rewrite this particular string switch to use a associative array instead to avoid the overly long symbol name?[...] I believe the original idea behind using a template for string switches was to allow the possibility for the implementation to be smarter about how to implement the switch (IIRC, string switches used to be implemented as a runtime function). Supposedly object.__switch could analyze the list of strings at compile-time and generate a perfect hash or something, to maximize runtime performance. IMO the real fix ought to be to make the compiler somehow recognize these cases and generate shorter symbols for them, rather than hard-coding the Phobos code to use AAs, though admittedly, the latter may probably a necessary stop-gap measure in the meantime. (On which note, I wonder if you may have inadvertently found the source of my recent dmd memory usage woes... a symbol like this in a commonly imported module in Phobos like std.datetime would explain why recently I suddenly can't compile Phobos anymore on a low-memory system without invoking the kernel OOM killer, or why even the most trivial of projects take ridiculous amounts of memory to compile.) T -- The volume of a pizza of thickness a and radius z can be described by the following formula: pi zz a. -- Wouter Verhelst
Jan 25 2018
On 1/25/18 1:41 PM, H. S. Teoh wrote:On Thu, Jan 25, 2018 at 07:21:29PM +0100, Benjamin Thaut via Digitalmars-d wrote:I believe that when the number of cases is small enough, the binary search of the strings is done recursively to allow full optimization. And these symbols should be relatively small. But I think if the number of strings is large enough, it calls the same runtime function as before (essentially). But here we have a problem -- the wrapper for this function is essentially this giant symbol that generates the string array locally, and then calls the real function. It's a huge cost just for a simple inline-able wrapper to another call. See the code here: https://github.com/dlang/druntime/blob/master/src/object.d#L3873 The function that does the real work is __switchSearch, which is only templated on the char type. It's going to be very very infrequent that the exact same switch case list is used in multiple places, meaning you are paying a huge cost for essentially memoizing these string lists. I think we need some way to mark a function as following a different mangling, or maybe even just avoid the whole memoization, do everything inline. -SteveIf we think this is a good idea, should we rewrite this particular string switch to use a associative array instead to avoid the overly long symbol name?[...] I believe the original idea behind using a template for string switches was to allow the possibility for the implementation to be smarter about how to implement the switch (IIRC, string switches used to be implemented as a runtime function). Supposedly object.__switch could analyze the list of strings at compile-time and generate a perfect hash or something, to maximize runtime performance.
Jan 25 2018
On Thu, Jan 25, 2018 at 11:42:03AM -0700, Jonathan M Davis via Digitalmars-d wrote:On Thursday, January 25, 2018 19:21:29 Benjamin Thaut via Digitalmars-d wrote:I haven't verified this yet, but I suspect that this may be (one of?) the cause(s) of my recent woes with dmd's memory usage on low-memory systems. If indeed this is the cause, then yes, it *is* causing problems for me and anyone else who wants to use dmd on a low-memory system (this sounds almost like an oxymoron these days!). And since it's deprecated, perhaps it wouldn't hurt to hack it to use an AA instead so that in the meantime Phobos doesn't consume inordinate amounts of memory just to compile.If we think this is a good idea, should we rewrite this particular string switch to use a associative array instead to avoid the overly long symbol name?That particular switch statement is in a function that's deprecated and scheduled to be completely removed in about six months, so I don't see much point in worrying about it unless it's causing serious problems, and while that symbol name is stupidly long, AFAIK, it's not really causing any problems.I never would have thought that a switch statement would even have a symbol associated with it though. Clearly, I have no clue about how they're implemented.[...] IIRC they used to be a runtime function in druntime, but recently got changed into a template, ostensibly for more flexibility in how they're implemented. Apparently the original function was pretty lousy in terms of performance. The new object.__switch is supposedly better, but the expense of ridiculously-long symbols in the binary. Some days you just can't win. :-/ T -- Two wrongs don't make a right; but three rights do make a left...
Jan 25 2018
On 1/25/2018 10:21 AM, Benjamin Thaut wrote:So I was thinking to myself: Is it really a good idea to lower string switches to a template if it results in such symbols? This symbol alone takes 17815 Bytes. If we think this is a good idea, should we rewrite this particular string switch to use a associative array instead to avoid the overly long symbol name?This clearly should be in bugzilla.
Jan 26 2018
On Saturday, 27 January 2018 at 07:40:16 UTC, Walter Bright wrote:This clearly should be in bugzilla.As phobos or dmd bug?
Jan 27 2018
On Saturday, 27 January 2018 at 10:38:46 UTC, Kagamin wrote:dmdsee also this horrendous stacktrace when calling getopt with a bad argument: full stacktrace: https://gist.github.com/timotheecour/d6b623bd3d223f5d958cd86adffd7807 just 1 line of this stacktrace: ``` 28 dscanner 0x000000010d59f428 safe void std.getopt.getoptImpl!(std.getopt.config, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], immutable(char)[]*, immutable(char)[], immutable(char)[]*, immutable(char)[], bool*, immutable(char)[], immutable(char)[][]*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*).getoptImpl(ref immutable(char)[][], ref std.getopt.configuration, ref std.getopt.GetoptResult, ref std.getopt.GetOptException, void[][immutable(char)[]], void[][immutable(char)[]], std.getopt.config, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], immutable(char)[]*, immutable(char)[], immutable(char)[]*, immutable(char)[], bool*, immutable(char)[], immutable(char)[][]*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*) + 460 ``` https://dlang.org/blog/2017/12/20/ds-newfangled-name-mangling/ doesn't seem to help in cases like that
Jan 27 2018
IIRC several years ago somebody created a dub package with DbI getopt. I think it wouldn't suffer from this issue.
Jan 27 2018
but this should be handled at the compiler level, with no change in standard library getopt, eg using a hashing scheme (cf `ldc -hashthres`) On Sat, Jan 27, 2018 at 2:38 PM, Kagamin via Digitalmars-d <digitalmars-d puremagic.com> wrote:IIRC several years ago somebody created a dub package with DbI getopt. I think it wouldn't suffer from this issue.
Jan 27 2018
On Sat, Jan 27, 2018 at 09:22:07PM +0000, timotheecour via Digitalmars-d wrote: [...]``` 28 dscanner 0x000000010d59f428 safe void std.getopt.getoptImpl!(std.getopt.config, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], immutable(char)[]*, immutable(char)[], immutable(char)[]*, immutable(char)[], bool*, immutable(char)[], immutable(char)[][]*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*).getoptImpl(ref immutable(char)[][], ref std.getopt.configuration, ref std.getopt.GetoptResult, ref std.getopt.GetOptException, void[][immutable(char)[]], void[][immutable(char)[]], std.getopt.config, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], immutable(char)[]*, immutable(char)[], immutable(char)[]*, immutable(char)[], bool*, immutable(char)[], immutable(char)[][]*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*) + 460 ``` https://dlang.org/blog/2017/12/20/ds-newfangled-name-mangling/ doesn't seem to help in cases like thatThis has nothing to do with name mangling. The mangling itself may be relatively small (and probably is, judging from the amount of repetition in the signature above), but what you're looking at is the *demangled* identifier. That's going to be big no matter what, unless we fundamentally change the way getopt() is implemented. I proposed a compile-time introspected getopt() replacement before, only to get laughed at by Andrei. So I guess that means, don't expect to see that in Phobos anytime soon. But I might post the code on github sometime for those who would benefit from it. Basically, instead of taking a ridiculously long argument list, you create a struct whose members (together with some UDAs) define what the options are, any associated help text, etc., and just call it with the struct type as argument. It does its thing, and returns the struct populated with the values retrieved from the command-line. There are a few more features, but that's the gist of it. T -- There is no gravity. The earth sucks.
Jan 27 2018
On Saturday, 27 January 2018 at 23:12:01 UTC, H. S. Teoh wrote:I proposed a compile-time introspected getopt() replacement beforehttps://github.com/jasonwhite/darg this?
Jan 28 2018
On Saturday, 27 January 2018 at 23:12:01 UTC, H. S. Teoh wrote:On Sat, Jan 27, 2018 at 09:22:07PM +0000, timotheecour via Digitalmars-d wrote: [...]Do you remember his motivation? FYI: since Nov 2017 Druntime has exactly what you are proposing https://github.com/dlang/druntime/blob/master/src/core/internal/parseoptions.d However, it's not really sophisticated as it's intended only to be used for druntime, but then again, no one is stopping you from using it: ``` struct Config { int a; string b; void help() nogc nothrow {} } void main() { import core.internal.parseoptions, std.stdio; string args = "a=42 b=foo"; Config conf; conf.parseOptions(args); conf.writeln; } ``` https://run.dlang.io/is/GVclu2``` 28 dscanner 0x000000010d59f428 safe void ...I proposed a compile-time introspected getopt() replacement before, only to get laughed at by Andrei.
Jan 28 2018
* This has nothing to do with name mangling. Yes and no, these things are coupled. We can improve the situation by forcing the size of mangled and demangled symbols to be < threshold, eg `ldc -hash-threshold` would be 1 option. example: current mangled: _D8analysis3run__T9shouldRunVAyaa20_666c6f61745f6f70657261746f725f636865636bZQChFQCaKxSQDh6config20StaticAnalysisConfigZ__T9__lambda4TQEbZQpFNaNbNiNfQEqZQEu current demangled: pure nothrow nogc safe immutable(char)[] analysis.run.shouldRun!("float_operator_check").shouldRun(immutable(char)[], ref const(analysis.config.StaticAnalysisConfig)).__lambda4!(immutable(char)[]).__lambda4(immutable(char)[]) with a small threshold: mangled: _D8analysis3run__T9shouldRunℂ0abf2284dd3 demangled: pure nothrow nogc safe immutable(char)[] analysis.run.shouldRun.ℂ0abf2284dd3 The `ℂ` symbol indicating hashing was applied because symbol size exceed threshold. The demangled version also would have that. A separate file (dmd -mangle_map=file) could be produced in the rare case a user wants to see the full 17KB mangled and demangled symbols mapped by ℂ0abf2284dd3 On Sat, Jan 27, 2018 at 3:12 PM, H. S. Teoh via Digitalmars-d <digitalmars-d puremagic.com> wrote:On Sat, Jan 27, 2018 at 09:22:07PM +0000, timotheecour via Digitalmars-d wrote: [...]``` 28 dscanner 0x000000010d59f428 safe void std.getopt.getoptImpl!(std.getopt.config, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], immutable(char)[]*, immutable(char)[], immutable(char)[]*, immutable(char)[], bool*, immutable(char)[], immutable(char)[][]*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*).getoptImpl(ref immutable(char)[][], ref std.getopt.configuration, ref std.getopt.GetoptResult, ref std.getopt.GetOptException, void[][immutable(char)[]], void[][immutable(char)[]], std.getopt.config, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], immutable(char)[]*, immutable(char)[], immutable(char)[]*, immutable(char)[], bool*, immutable(char)[], immutable(char)[][]*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], bool*) + 460 ``` https://dlang.org/blog/2017/12/20/ds-newfangled-name-mangling/ doesn't seem to help in cases like thatThis has nothing to do with name mangling. The mangling itself may be relatively small (and probably is, judging from the amount of repetition in the signature above), but what you're looking at is the *demangled* identifier. That's going to be big no matter what, unless we fundamentally change the way getopt() is implemented. I proposed a compile-time introspected getopt() replacement before, only to get laughed at by Andrei. So I guess that means, don't expect to see that in Phobos anytime soon. But I might post the code on github sometime for those who would benefit from it. Basically, instead of taking a ridiculously long argument list, you create a struct whose members (together with some UDAs) define what the options are, any associated help text, etc., and just call it with the struct type as argument. It does its thing, and returns the struct populated with the values retrieved from the command-line. There are a few more features, but that's the gist of it. T -- There is no gravity. The earth sucks.
Jan 27 2018
On Sat, Jan 27, 2018 at 03:48:19PM -0800, Timothee Cour wrote: [...]eg `ldc -hash-threshold` would be 1 option.[...]with a small threshold: mangled: _D8analysis3run__T9shouldRunℂ0abf2284dd3 demangled: pure nothrow nogc safe immutable(char)[] analysis.run.shouldRun.ℂ0abf2284dd3 The `ℂ` symbol indicating hashing was applied because symbol size exceed threshold. The demangled version also would have that. A separate file (dmd -mangle_map=file) could be produced in the rare case a user wants to see the full 17KB mangled and demangled symbols mapped by ℂ0abf2284dd3[...] This gives me an idea. A lot of the recent complaints about symbol size appears to be coming from templates with string template arguments, and encoding strings inside a symbol tend to quickly make its length explode. What if we changed the mangling scheme such that if a string template argument exceeds a certain length, or if the number of string arguments (or their accumulated length) exceeds a certain size, we hash the string arguments instead, and use the hash in the symbol instead of encoding the raw strings themselves? Regardless, *some* form of symbol compression is necessary in D, especially now that druntime is also moving in the direction of more templated code. Rainer's backref patch helped in one common use case (chained range functions), but the string argument case remains a source of major symbol bloat. I was also talking with Stefan Koch on github that we need to take up a project to improve the way dmd handles templates. There's much room for improvement, and with D's focus on heavy-duty compile-time features, this is a major area where we can reap large benefits for the effort invested. T -- Freedom of speech: the whole world has no right *not* to hear my spouting off!
Jan 27 2018
Am 27.01.2018 um 08:40 schrieb Walter Bright:This clearly should be in bugzilla.https://issues.dlang.org/show_bug.cgi?id=18324 -- Kind Regards Benjamin Thaut
Jan 28 2018